summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.clang-format1
-rwxr-xr-x.github/workflows/ubuntu-build-check.sh2
-rw-r--r--.mkosi/mkosi.arch2
-rw-r--r--.mkosi/mkosi.debian2
-rw-r--r--.mkosi/mkosi.fedora6
-rw-r--r--.mkosi/mkosi.opensuse2
-rw-r--r--.mkosi/mkosi.ubuntu2
-rw-r--r--NEWS160
-rw-r--r--TODO23
-rw-r--r--catalog/meson.build2
-rw-r--r--catalog/systemd.be.catalog.in2
-rw-r--r--catalog/systemd.be@latin.catalog.in2
-rw-r--r--catalog/systemd.bg.catalog.in2
-rw-r--r--catalog/systemd.catalog.in2
-rw-r--r--catalog/systemd.da.catalog.in2
-rw-r--r--catalog/systemd.de.catalog.in2
-rw-r--r--catalog/systemd.fr.catalog.in2
-rw-r--r--catalog/systemd.hr.catalog.in2
-rw-r--r--catalog/systemd.hu.catalog.in2
-rw-r--r--catalog/systemd.it.catalog.in2
-rw-r--r--catalog/systemd.ko.catalog.in2
-rw-r--r--catalog/systemd.pl.catalog.in2
-rw-r--r--catalog/systemd.pt_BR.catalog.in2
-rw-r--r--catalog/systemd.ru.catalog.in2
-rw-r--r--catalog/systemd.sr.catalog.in2
-rw-r--r--catalog/systemd.zh_CN.catalog.in2
-rw-r--r--catalog/systemd.zh_TW.catalog.in2
-rw-r--r--coccinelle/errno.cocci9
-rw-r--r--coccinelle/synthetic-errno.cocci4
-rw-r--r--docs/CONTAINER_INTERFACE.md4
-rw-r--r--docs/DISCOVERABLE_PARTITIONS.md8
-rw-r--r--docs/ENVIRONMENT.md11
-rw-r--r--docs/JOURNAL_FILE_FORMAT.md14
-rw-r--r--docs/RELEASE.md6
-rw-r--r--docs/RESOLVED-VPNS.md267
-rw-r--r--docs/TRANSIENT-SETTINGS.md1
-rw-r--r--docs/sysvinit/meson.build2
-rw-r--r--docs/var-log/meson.build2
-rw-r--r--hwdb.d/20-OUI.hwdb1050
-rw-r--r--hwdb.d/20-acpi-vendor.hwdb3
-rw-r--r--hwdb.d/20-acpi-vendor.hwdb.patch14
-rw-r--r--hwdb.d/20-pci-classes.hwdb6
-rw-r--r--hwdb.d/20-pci-vendor-model.hwdb434
-rw-r--r--hwdb.d/60-autosuspend.hwdb20
-rw-r--r--hwdb.d/60-evdev.hwdb67
-rw-r--r--hwdb.d/60-input-id.hwdb13
-rw-r--r--hwdb.d/60-keyboard.hwdb367
-rw-r--r--hwdb.d/60-sensor.hwdb46
-rw-r--r--hwdb.d/70-joystick.hwdb6
-rw-r--r--hwdb.d/70-mouse.hwdb4
-rw-r--r--hwdb.d/70-pointingstick.hwdb6
-rw-r--r--hwdb.d/70-touchpad.hwdb6
-rw-r--r--hwdb.d/ma-large.txt9256
-rw-r--r--hwdb.d/ma-medium.txt298
-rw-r--r--hwdb.d/ma-small.txt1853
-rw-r--r--hwdb.d/meson.build14
-rwxr-xr-xhwdb.d/parse_hwdb.py5
-rw-r--r--hwdb.d/pci.ids171
-rw-r--r--hwdb.d/pnp_id_registry.html1
-rw-r--r--man/binfmt.d.xml2
-rw-r--r--man/bootctl.xml3
-rw-r--r--man/bootup.xml2
-rw-r--r--man/busctl.xml2
-rw-r--r--man/coredump.conf.xml2
-rw-r--r--man/coredumpctl.xml2
-rw-r--r--man/crypttab.xml2
-rw-r--r--man/custom-html.xsl2
-rw-r--r--man/custom-man.xsl2
-rw-r--r--man/daemon.xml2
-rw-r--r--man/directives-template.xml2
-rw-r--r--man/dnssec-trust-anchors.d.xml2
-rw-r--r--man/environment.d.xml2
-rw-r--r--man/file-hierarchy.xml2
-rw-r--r--man/halt.xml2
-rw-r--r--man/homectl.xml4
-rw-r--r--man/homed.conf.xml2
-rw-r--r--man/hostname.xml2
-rw-r--r--man/hostnamectl.xml2
-rw-r--r--man/hwdb.xml2
-rw-r--r--man/journal-remote.conf.xml2
-rw-r--r--man/journal-upload.conf.xml2
-rw-r--r--man/journalctl.xml2
-rw-r--r--man/journald.conf.xml4
-rw-r--r--man/kernel-command-line.xml2
-rw-r--r--man/kernel-install.xml2
-rw-r--r--man/less-variables.xml2
-rw-r--r--man/libsystemd-pkgconfig.xml2
-rw-r--r--man/libudev.xml2
-rw-r--r--man/loader.conf.xml2
-rw-r--r--man/locale.conf.xml2
-rw-r--r--man/localectl.xml2
-rw-r--r--man/localtime.xml2
-rw-r--r--man/loginctl.xml2
-rw-r--r--man/logind.conf.xml2
-rw-r--r--man/machine-id.xml2
-rw-r--r--man/machine-info.xml2
-rw-r--r--man/machinectl.xml2
-rw-r--r--man/meson.build2
-rw-r--r--man/modules-load.d.xml2
-rw-r--r--man/networkctl.xml6
-rw-r--r--man/networkd.conf.xml2
-rw-r--r--man/nss-myhostname.xml2
-rw-r--r--man/nss-mymachines.xml2
-rw-r--r--man/nss-resolve.xml2
-rw-r--r--man/nss-systemd.xml2
-rw-r--r--man/oomctl.xml2
-rw-r--r--man/oomd.conf.xml2
-rw-r--r--man/org.freedesktop.LogControl1.xml2
-rw-r--r--man/org.freedesktop.home1.xml2
-rw-r--r--man/org.freedesktop.hostname1.xml2
-rw-r--r--man/org.freedesktop.import1.xml2
-rw-r--r--man/org.freedesktop.locale1.xml2
-rw-r--r--man/org.freedesktop.login1.xml2
-rw-r--r--man/org.freedesktop.machine1.xml2
-rw-r--r--man/org.freedesktop.oom1.xml2
-rw-r--r--man/org.freedesktop.resolve1.xml2
-rw-r--r--man/org.freedesktop.systemd1.xml8
-rw-r--r--man/org.freedesktop.timedate1.xml2
-rw-r--r--man/os-release.xml2
-rw-r--r--man/pam_systemd.xml4
-rw-r--r--man/pam_systemd_home.xml2
-rw-r--r--man/portablectl.xml2
-rw-r--r--man/pstore.conf.xml2
-rw-r--r--man/repart.d.xml42
-rw-r--r--man/resolvectl.xml2
-rw-r--r--man/resolved.conf.xml26
-rw-r--r--man/rules/meson.build4
-rw-r--r--man/runlevel.xml2
-rw-r--r--man/sd-bus-errors.xml2
-rw-r--r--man/sd-bus.xml2
-rw-r--r--man/sd-daemon.xml2
-rw-r--r--man/sd-event.xml2
-rw-r--r--man/sd-hwdb.xml2
-rw-r--r--man/sd-id128.xml18
-rw-r--r--man/sd-journal.xml2
-rw-r--r--man/sd-login.xml2
-rw-r--r--man/sd_booted.xml2
-rw-r--r--man/sd_bus_add_match.xml2
-rw-r--r--man/sd_bus_add_node_enumerator.xml2
-rw-r--r--man/sd_bus_add_object.xml20
-rw-r--r--man/sd_bus_add_object_manager.xml2
-rw-r--r--man/sd_bus_attach_event.xml2
-rw-r--r--man/sd_bus_call.xml17
-rw-r--r--man/sd_bus_call_method.xml2
-rw-r--r--man/sd_bus_can_send.xml4
-rw-r--r--man/sd_bus_close.xml4
-rw-r--r--man/sd_bus_creds_get_pid.xml8
-rw-r--r--man/sd_bus_creds_new_from_pid.xml2
-rw-r--r--man/sd_bus_default.xml2
-rw-r--r--man/sd_bus_emit_signal.xml2
-rw-r--r--man/sd_bus_enqueue_for_read.xml2
-rw-r--r--man/sd_bus_error.xml16
-rw-r--r--man/sd_bus_error_add_map.xml2
-rw-r--r--man/sd_bus_get_current_handler.xml2
-rw-r--r--man/sd_bus_get_fd.xml2
-rw-r--r--man/sd_bus_get_n_queued_read.xml2
-rw-r--r--man/sd_bus_get_name_creds.xml2
-rw-r--r--man/sd_bus_get_name_machine_id.xml2
-rw-r--r--man/sd_bus_interface_name_is_valid.xml4
-rw-r--r--man/sd_bus_is_open.xml2
-rw-r--r--man/sd_bus_list_names.xml2
-rw-r--r--man/sd_bus_message_append.xml2
-rw-r--r--man/sd_bus_message_append_array.xml3
-rw-r--r--man/sd_bus_message_append_basic.xml2
-rw-r--r--man/sd_bus_message_append_string_memfd.xml14
-rw-r--r--man/sd_bus_message_append_strv.xml4
-rw-r--r--man/sd_bus_message_at_end.xml2
-rw-r--r--man/sd_bus_message_copy.xml2
-rw-r--r--man/sd_bus_message_dump.xml2
-rw-r--r--man/sd_bus_message_get_cookie.xml2
-rw-r--r--man/sd_bus_message_get_monotonic_usec.xml2
-rw-r--r--man/sd_bus_message_get_signature.xml2
-rw-r--r--man/sd_bus_message_get_type.xml2
-rw-r--r--man/sd_bus_message_new.xml2
-rw-r--r--man/sd_bus_message_new_method_call.xml2
-rw-r--r--man/sd_bus_message_new_method_error.xml6
-rw-r--r--man/sd_bus_message_new_signal.xml2
-rw-r--r--man/sd_bus_message_open_container.xml2
-rw-r--r--man/sd_bus_message_read.xml3
-rw-r--r--man/sd_bus_message_read_array.xml2
-rw-r--r--man/sd_bus_message_read_basic.xml8
-rw-r--r--man/sd_bus_message_read_strv.xml2
-rw-r--r--man/sd_bus_message_rewind.xml2
-rw-r--r--man/sd_bus_message_seal.xml2
-rw-r--r--man/sd_bus_message_sensitive.xml2
-rw-r--r--man/sd_bus_message_set_destination.xml2
-rw-r--r--man/sd_bus_message_set_expect_reply.xml2
-rw-r--r--man/sd_bus_message_skip.xml2
-rw-r--r--man/sd_bus_message_verify_type.xml2
-rw-r--r--man/sd_bus_negotiate_fds.xml2
-rw-r--r--man/sd_bus_new.xml2
-rw-r--r--man/sd_bus_path_encode.xml6
-rw-r--r--man/sd_bus_process.xml6
-rw-r--r--man/sd_bus_query_sender_creds.xml2
-rw-r--r--man/sd_bus_reply_method_error.xml6
-rw-r--r--man/sd_bus_reply_method_return.xml2
-rw-r--r--man/sd_bus_request_name.xml2
-rw-r--r--man/sd_bus_send.xml2
-rw-r--r--man/sd_bus_set_address.xml4
-rw-r--r--man/sd_bus_set_close_on_exit.xml2
-rw-r--r--man/sd_bus_set_connected_signal.xml2
-rw-r--r--man/sd_bus_set_description.xml2
-rw-r--r--man/sd_bus_set_exit_on_disconnect.xml2
-rw-r--r--man/sd_bus_set_method_call_timeout.xml2
-rw-r--r--man/sd_bus_set_property.xml4
-rw-r--r--man/sd_bus_set_sender.xml2
-rw-r--r--man/sd_bus_set_server.xml2
-rw-r--r--man/sd_bus_set_watch_bind.xml2
-rw-r--r--man/sd_bus_slot_get_bus.xml2
-rw-r--r--man/sd_bus_slot_ref.xml2
-rw-r--r--man/sd_bus_slot_set_description.xml2
-rw-r--r--man/sd_bus_slot_set_destroy_callback.xml2
-rw-r--r--man/sd_bus_slot_set_floating.xml2
-rw-r--r--man/sd_bus_slot_set_userdata.xml2
-rw-r--r--man/sd_bus_start.xml2
-rw-r--r--man/sd_bus_track_add_name.xml2
-rw-r--r--man/sd_bus_track_new.xml12
-rw-r--r--man/sd_bus_wait.xml2
-rw-r--r--man/sd_event_add_child.xml2
-rw-r--r--man/sd_event_add_defer.xml2
-rw-r--r--man/sd_event_add_inotify.xml2
-rw-r--r--man/sd_event_add_io.xml2
-rw-r--r--man/sd_event_add_signal.xml2
-rw-r--r--man/sd_event_add_time.xml4
-rw-r--r--man/sd_event_exit.xml2
-rw-r--r--man/sd_event_get_fd.xml2
-rw-r--r--man/sd_event_new.xml2
-rw-r--r--man/sd_event_now.xml2
-rw-r--r--man/sd_event_run.xml2
-rw-r--r--man/sd_event_set_watchdog.xml2
-rw-r--r--man/sd_event_source_get_event.xml4
-rw-r--r--man/sd_event_source_get_pending.xml2
-rw-r--r--man/sd_event_source_set_description.xml2
-rw-r--r--man/sd_event_source_set_destroy_callback.xml2
-rw-r--r--man/sd_event_source_set_enabled.xml2
-rw-r--r--man/sd_event_source_set_exit_on_failure.xml2
-rw-r--r--man/sd_event_source_set_floating.xml2
-rw-r--r--man/sd_event_source_set_prepare.xml4
-rw-r--r--man/sd_event_source_set_priority.xml2
-rw-r--r--man/sd_event_source_set_userdata.xml4
-rw-r--r--man/sd_event_source_unref.xml2
-rw-r--r--man/sd_event_wait.xml2
-rw-r--r--man/sd_get_seats.xml4
-rw-r--r--man/sd_hwdb_get.xml4
-rw-r--r--man/sd_hwdb_new.xml2
-rw-r--r--man/sd_id128_get_machine.xml2
-rw-r--r--man/sd_id128_randomize.xml2
-rw-r--r--man/sd_id128_to_string.xml14
-rw-r--r--man/sd_is_fifo.xml2
-rw-r--r--man/sd_journal_add_match.xml2
-rw-r--r--man/sd_journal_enumerate_fields.xml4
-rw-r--r--man/sd_journal_get_catalog.xml2
-rw-r--r--man/sd_journal_get_cursor.xml2
-rw-r--r--man/sd_journal_get_cutoff_realtime_usec.xml2
-rw-r--r--man/sd_journal_get_data.xml4
-rw-r--r--man/sd_journal_get_fd.xml2
-rw-r--r--man/sd_journal_get_realtime_usec.xml2
-rw-r--r--man/sd_journal_get_usage.xml2
-rw-r--r--man/sd_journal_has_runtime_files.xml4
-rw-r--r--man/sd_journal_next.xml8
-rw-r--r--man/sd_journal_open.xml2
-rw-r--r--man/sd_journal_print.xml18
-rw-r--r--man/sd_journal_query_unique.xml4
-rw-r--r--man/sd_journal_seek_head.xml2
-rw-r--r--man/sd_journal_stream_fd.xml2
-rw-r--r--man/sd_listen_fds.xml8
-rw-r--r--man/sd_login_monitor_new.xml2
-rw-r--r--man/sd_machine_get_class.xml2
-rw-r--r--man/sd_notify.xml2
-rw-r--r--man/sd_path_lookup.xml2
-rw-r--r--man/sd_pid_get_owner_uid.xml2
-rw-r--r--man/sd_seat_get_active.xml4
-rw-r--r--man/sd_session_is_active.xml2
-rw-r--r--man/sd_uid_get_state.xml9
-rw-r--r--man/sd_watchdog_enabled.xml4
-rw-r--r--man/shutdown.xml2
-rw-r--r--man/standard-conf.xml2
-rw-r--r--man/standard-options.xml2
-rw-r--r--man/standard-specifiers.xml2
-rw-r--r--man/supported-controllers.xml2
-rw-r--r--man/sysctl.d.xml2
-rw-r--r--man/system-only.xml2
-rw-r--r--man/systemctl.xml2
-rw-r--r--man/systemd-analyze.xml2
-rw-r--r--man/systemd-ask-password-console.service.xml2
-rw-r--r--man/systemd-ask-password.xml4
-rw-r--r--man/systemd-backlight@.service.xml2
-rw-r--r--man/systemd-binfmt.service.xml2
-rw-r--r--man/systemd-bless-boot-generator.xml2
-rw-r--r--man/systemd-bless-boot.service.xml2
-rw-r--r--man/systemd-boot-check-no-failures.service.xml2
-rw-r--r--man/systemd-boot-system-token.service.xml2
-rw-r--r--man/systemd-boot.xml2
-rw-r--r--man/systemd-cat.xml2
-rw-r--r--man/systemd-cgls.xml2
-rw-r--r--man/systemd-cgtop.xml2
-rw-r--r--man/systemd-coredump.xml10
-rw-r--r--man/systemd-cryptsetup-generator.xml2
-rw-r--r--man/systemd-cryptsetup@.service.xml2
-rw-r--r--man/systemd-debug-generator.xml2
-rw-r--r--man/systemd-delta.xml2
-rw-r--r--man/systemd-detect-virt.xml2
-rw-r--r--man/systemd-dissect.xml2
-rw-r--r--man/systemd-environment-d-generator.xml2
-rw-r--r--man/systemd-escape.xml2
-rw-r--r--man/systemd-firstboot.xml2
-rw-r--r--man/systemd-fsck@.service.xml2
-rw-r--r--man/systemd-fstab-generator.xml2
-rw-r--r--man/systemd-getty-generator.xml2
-rw-r--r--man/systemd-gpt-auto-generator.xml14
-rw-r--r--man/systemd-halt.service.xml2
-rw-r--r--man/systemd-hibernate-resume-generator.xml2
-rw-r--r--man/systemd-hibernate-resume@.service.xml2
-rw-r--r--man/systemd-homed.service.xml2
-rw-r--r--man/systemd-hostnamed.service.xml2
-rw-r--r--man/systemd-hwdb.xml2
-rw-r--r--man/systemd-id128.xml2
-rw-r--r--man/systemd-importd.service.xml2
-rw-r--r--man/systemd-inhibit.xml2
-rw-r--r--man/systemd-initctl.service.xml2
-rw-r--r--man/systemd-journal-gatewayd.service.xml2
-rw-r--r--man/systemd-journal-remote.service.xml2
-rw-r--r--man/systemd-journal-upload.service.xml2
-rw-r--r--man/systemd-journald.service.xml2
-rw-r--r--man/systemd-localed.service.xml2
-rw-r--r--man/systemd-logind.service.xml2
-rw-r--r--man/systemd-machine-id-commit.service.xml2
-rw-r--r--man/systemd-machine-id-setup.xml2
-rw-r--r--man/systemd-machined.service.xml2
-rw-r--r--man/systemd-makefs@.service.xml2
-rw-r--r--man/systemd-modules-load.service.xml2
-rw-r--r--man/systemd-mount.xml2
-rw-r--r--man/systemd-network-generator.service.xml2
-rw-r--r--man/systemd-networkd-wait-online.service.xml2
-rw-r--r--man/systemd-networkd.service.xml2
-rw-r--r--man/systemd-notify.xml2
-rw-r--r--man/systemd-nspawn.xml2
-rw-r--r--man/systemd-oomd.service.xml2
-rw-r--r--man/systemd-path.xml2
-rw-r--r--man/systemd-portabled.service.xml2
-rw-r--r--man/systemd-pstore.service.xml2
-rw-r--r--man/systemd-quotacheck.service.xml2
-rw-r--r--man/systemd-random-seed.service.xml2
-rw-r--r--man/systemd-rc-local-generator.xml2
-rw-r--r--man/systemd-remount-fs.service.xml2
-rw-r--r--man/systemd-repart.xml2
-rw-r--r--man/systemd-resolved.service.xml2
-rw-r--r--man/systemd-rfkill.service.xml2
-rw-r--r--man/systemd-run-generator.xml2
-rw-r--r--man/systemd-run.xml2
-rw-r--r--man/systemd-sleep.conf.xml2
-rw-r--r--man/systemd-socket-activate.xml2
-rw-r--r--man/systemd-socket-proxyd.xml2
-rw-r--r--man/systemd-suspend.service.xml2
-rw-r--r--man/systemd-sysctl.service.xml2
-rw-r--r--man/systemd-system-update-generator.xml2
-rw-r--r--man/systemd-system.conf.xml8
-rw-r--r--man/systemd-sysusers.xml2
-rw-r--r--man/systemd-sysv-generator.xml2
-rw-r--r--man/systemd-time-wait-sync.service.xml2
-rw-r--r--man/systemd-timedated.service.xml2
-rw-r--r--man/systemd-timesyncd.service.xml2
-rw-r--r--man/systemd-tmpfiles.xml2
-rw-r--r--man/systemd-tty-ask-password-agent.xml2
-rw-r--r--man/systemd-udev-settle.service.xml2
-rw-r--r--man/systemd-udevd.service.xml2
-rw-r--r--man/systemd-update-done.service.xml2
-rw-r--r--man/systemd-update-utmp.service.xml2
-rw-r--r--man/systemd-user-sessions.service.xml2
-rw-r--r--man/systemd-userdbd.service.xml2
-rw-r--r--man/systemd-vconsole-setup.service.xml2
-rw-r--r--man/systemd-veritysetup-generator.xml2
-rw-r--r--man/systemd-veritysetup@.service.xml2
-rw-r--r--man/systemd-volatile-root.service.xml2
-rw-r--r--man/systemd-xdg-autostart-generator.xml2
-rw-r--r--man/systemd.automount.xml2
-rw-r--r--man/systemd.device.xml2
-rw-r--r--man/systemd.dnssd.xml2
-rw-r--r--man/systemd.environment-generator.xml2
-rw-r--r--man/systemd.exec.xml54
-rw-r--r--man/systemd.generator.xml2
-rw-r--r--man/systemd.journal-fields.xml4
-rw-r--r--man/systemd.kill.xml2
-rw-r--r--man/systemd.link.xml13
-rw-r--r--man/systemd.mount.xml2
-rw-r--r--man/systemd.net-naming-scheme.xml2
-rw-r--r--man/systemd.netdev.xml30
-rw-r--r--man/systemd.network.xml25
-rw-r--r--man/systemd.nspawn.xml2
-rw-r--r--man/systemd.offline-updates.xml2
-rw-r--r--man/systemd.path.xml2
-rw-r--r--man/systemd.preset.xml2
-rw-r--r--man/systemd.resource-control.xml2
-rw-r--r--man/systemd.scope.xml2
-rw-r--r--man/systemd.service.xml2
-rw-r--r--man/systemd.slice.xml2
-rw-r--r--man/systemd.socket.xml2
-rw-r--r--man/systemd.special.xml56
-rw-r--r--man/systemd.swap.xml2
-rw-r--r--man/systemd.syntax.xml2
-rw-r--r--man/systemd.target.xml2
-rw-r--r--man/systemd.time.xml2
-rw-r--r--man/systemd.timer.xml71
-rw-r--r--man/systemd.unit.xml49
-rw-r--r--man/systemd.xml2
-rw-r--r--man/sysusers.d.xml2
-rw-r--r--man/tc.xml2
-rw-r--r--man/telinit.xml2
-rw-r--r--man/threads-aware.xml2
-rw-r--r--man/timedatectl.xml2
-rw-r--r--man/timesyncd.conf.xml2
-rw-r--r--man/tmpfiles.d.xml22
-rw-r--r--man/udev.conf.xml2
-rw-r--r--man/udev.xml1470
-rw-r--r--man/udev_device_get_syspath.xml4
-rw-r--r--man/udev_device_has_tag.xml6
-rw-r--r--man/udev_device_new_from_syspath.xml28
-rw-r--r--man/udev_enumerate_add_match_subsystem.xml20
-rw-r--r--man/udev_enumerate_new.xml2
-rw-r--r--man/udev_enumerate_scan_devices.xml2
-rw-r--r--man/udev_list_entry.xml2
-rw-r--r--man/udev_monitor_filter_update.xml2
-rw-r--r--man/udev_monitor_new_from_netlink.xml2
-rw-r--r--man/udev_monitor_receive_device.xml2
-rw-r--r--man/udev_new.xml2
-rw-r--r--man/udevadm.xml2
-rw-r--r--man/user-system-options.xml2
-rw-r--r--man/user@.service.xml2
-rw-r--r--man/userdbctl.xml2
-rw-r--r--man/vconsole.conf.xml2
-rw-r--r--meson.build40
-rw-r--r--meson_options.txt4
-rw-r--r--modprobe.d/systemd.conf2
-rw-r--r--network/80-container-host0.network2
-rw-r--r--network/80-container-ve.network2
-rw-r--r--network/80-container-vz.network2
-rw-r--r--network/80-vm-vt.network2
-rw-r--r--network/99-default.link2
-rw-r--r--network/meson.build8
-rw-r--r--po/be.po2
-rw-r--r--po/be@latin.po2
-rw-r--r--po/bg.po2
-rw-r--r--po/ca.po2
-rw-r--r--po/cs.po2
-rw-r--r--po/da.po2
-rw-r--r--po/de.po2
-rw-r--r--po/el.po2
-rw-r--r--po/es.po2
-rw-r--r--po/fr.po2
-rw-r--r--po/gl.po2
-rw-r--r--po/hr.po2
-rw-r--r--po/hu.po2
-rw-r--r--po/id.po2
-rw-r--r--po/it.po2
-rw-r--r--po/ja.po2
-rw-r--r--po/ko.po2
-rw-r--r--po/meson.build2
-rw-r--r--po/pl.po2
-rw-r--r--po/pt_BR.po2
-rw-r--r--po/ro.po2
-rw-r--r--po/ru.po2
-rw-r--r--po/sk.po2
-rw-r--r--po/sr.po2
-rw-r--r--po/sv.po2
-rw-r--r--po/tr.po221
-rw-r--r--po/uk.po2
-rw-r--r--po/zh_CN.po128
-rw-r--r--po/zh_TW.po2
-rw-r--r--presets/90-systemd.preset2
-rw-r--r--presets/meson.build2
-rw-r--r--presets/user/90-systemd.preset2
-rw-r--r--rules.d/99-systemd.rules.in2
-rw-r--r--rules.d/meson.build2
-rwxr-xr-xsemaphoreci/semaphore-runner.sh4
-rw-r--r--shell-completion/bash/bootctl2
-rw-r--r--shell-completion/bash/busctl2
-rw-r--r--shell-completion/bash/coredumpctl2
-rw-r--r--shell-completion/bash/homectl2
-rw-r--r--shell-completion/bash/hostnamectl2
-rw-r--r--shell-completion/bash/journalctl2
-rw-r--r--shell-completion/bash/kernel-install2
-rw-r--r--shell-completion/bash/localectl2
-rw-r--r--shell-completion/bash/loginctl2
-rw-r--r--shell-completion/bash/machinectl2
-rw-r--r--shell-completion/bash/meson.build2
-rw-r--r--shell-completion/bash/networkctl2
-rw-r--r--shell-completion/bash/portablectl2
-rw-r--r--shell-completion/bash/resolvectl2
-rw-r--r--shell-completion/bash/systemctl.in2
-rw-r--r--shell-completion/bash/systemd-analyze2
-rw-r--r--shell-completion/bash/systemd-cat2
-rw-r--r--shell-completion/bash/systemd-cgls2
-rw-r--r--shell-completion/bash/systemd-cgtop2
-rw-r--r--shell-completion/bash/systemd-delta2
-rw-r--r--shell-completion/bash/systemd-detect-virt2
-rw-r--r--shell-completion/bash/systemd-id1282
-rw-r--r--shell-completion/bash/systemd-nspawn2
-rw-r--r--shell-completion/bash/systemd-path2
-rw-r--r--shell-completion/bash/systemd-resolve2
-rw-r--r--shell-completion/bash/systemd-run2
-rw-r--r--shell-completion/bash/timedatectl2
-rw-r--r--shell-completion/bash/udevadm2
-rw-r--r--shell-completion/zsh/_bootctl2
-rw-r--r--shell-completion/zsh/_busctl2
-rw-r--r--shell-completion/zsh/_coredumpctl2
-rw-r--r--shell-completion/zsh/_hostnamectl2
-rw-r--r--shell-completion/zsh/_journalctl2
-rw-r--r--shell-completion/zsh/_kernel-install2
-rw-r--r--shell-completion/zsh/_localectl2
-rw-r--r--shell-completion/zsh/_loginctl2
-rw-r--r--shell-completion/zsh/_machinectl2
-rw-r--r--shell-completion/zsh/_networkctl2
-rw-r--r--shell-completion/zsh/_resolvectl2
-rw-r--r--shell-completion/zsh/_sd_hosts_or_user_at_host2
-rw-r--r--shell-completion/zsh/_sd_machines2
-rw-r--r--shell-completion/zsh/_sd_outputmodes2
-rw-r--r--shell-completion/zsh/_sd_unit_files2
-rw-r--r--shell-completion/zsh/_systemctl.in2
-rw-r--r--shell-completion/zsh/_systemd2
-rw-r--r--shell-completion/zsh/_systemd-analyze2
-rw-r--r--shell-completion/zsh/_systemd-delta2
-rw-r--r--shell-completion/zsh/_systemd-inhibit2
-rw-r--r--shell-completion/zsh/_systemd-nspawn2
-rw-r--r--shell-completion/zsh/_systemd-run2
-rw-r--r--shell-completion/zsh/_systemd-tmpfiles2
-rw-r--r--shell-completion/zsh/_timedatectl2
-rw-r--r--shell-completion/zsh/_udevadm2
-rw-r--r--shell-completion/zsh/meson.build2
-rw-r--r--src/ac-power/ac-power.c2
-rw-r--r--src/activate/activate.c2
-rw-r--r--src/analyze/analyze-condition.c2
-rw-r--r--src/analyze/analyze-condition.h2
-rw-r--r--src/analyze/analyze-security.c2
-rw-r--r--src/analyze/analyze-security.h2
-rw-r--r--src/analyze/analyze-verify.c2
-rw-r--r--src/analyze/analyze-verify.h2
-rw-r--r--src/analyze/analyze.c2
-rw-r--r--src/analyze/meson.build2
-rw-r--r--src/analyze/test-verify.c2
-rw-r--r--src/ask-password/ask-password.c2
-rw-r--r--src/backlight/backlight.c10
-rw-r--r--src/basic/MurmurHash2.c1
-rw-r--r--src/basic/MurmurHash2.h1
-rw-r--r--src/basic/af-list.c2
-rw-r--r--src/basic/af-list.h2
-rw-r--r--src/basic/alloc-util.c2
-rw-r--r--src/basic/alloc-util.h2
-rw-r--r--src/basic/architecture.c2
-rw-r--r--src/basic/architecture.h2
-rw-r--r--src/basic/arphrd-list.c2
-rw-r--r--src/basic/arphrd-list.h2
-rw-r--r--src/basic/async.c2
-rw-r--r--src/basic/async.h2
-rw-r--r--src/basic/audit-util.c2
-rw-r--r--src/basic/audit-util.h2
-rw-r--r--src/basic/blockdev-util.c2
-rw-r--r--src/basic/blockdev-util.h2
-rw-r--r--src/basic/btrfs-util.c2
-rw-r--r--src/basic/btrfs-util.h2
-rw-r--r--src/basic/build.h2
-rw-r--r--src/basic/bus-label.c2
-rw-r--r--src/basic/bus-label.h2
-rw-r--r--src/basic/cap-list.c5
-rw-r--r--src/basic/cap-list.h2
-rw-r--r--src/basic/capability-util.c2
-rw-r--r--src/basic/capability-util.h2
-rw-r--r--src/basic/cgroup-util.c7
-rw-r--r--src/basic/cgroup-util.h2
-rw-r--r--src/basic/chattr-util.c2
-rw-r--r--src/basic/chattr-util.h2
-rw-r--r--src/basic/conf-files.c2
-rw-r--r--src/basic/conf-files.h2
-rw-r--r--src/basic/copy.c4
-rw-r--r--src/basic/copy.h2
-rw-r--r--src/basic/def.h2
-rw-r--r--src/basic/device-nodes.c2
-rw-r--r--src/basic/device-nodes.h2
-rw-r--r--src/basic/dirent-util.c2
-rw-r--r--src/basic/dirent-util.h2
-rw-r--r--src/basic/dlfcn-util.c2
-rw-r--r--src/basic/dlfcn-util.h2
-rw-r--r--src/basic/efivars.c2
-rw-r--r--src/basic/efivars.h2
-rw-r--r--src/basic/env-file.c2
-rw-r--r--src/basic/env-file.h2
-rw-r--r--src/basic/env-util.c14
-rw-r--r--src/basic/env-util.h5
-rw-r--r--src/basic/errno-list.c2
-rw-r--r--src/basic/errno-list.h2
-rw-r--r--src/basic/errno-util.h10
-rw-r--r--src/basic/escape.c2
-rw-r--r--src/basic/escape.h4
-rw-r--r--src/basic/ether-addr-util.c17
-rw-r--r--src/basic/ether-addr-util.h26
-rw-r--r--src/basic/extract-word.c2
-rw-r--r--src/basic/extract-word.h2
-rw-r--r--src/basic/fd-util.c2
-rw-r--r--src/basic/fd-util.h2
-rw-r--r--src/basic/fileio.c32
-rw-r--r--src/basic/fileio.h10
-rw-r--r--src/basic/format-util.c2
-rw-r--r--src/basic/format-util.h2
-rw-r--r--src/basic/fs-util.c4
-rw-r--r--src/basic/fs-util.h2
-rw-r--r--src/basic/gcrypt-util.c2
-rw-r--r--src/basic/gcrypt-util.h2
-rw-r--r--src/basic/glob-util.c2
-rw-r--r--src/basic/glob-util.h2
-rw-r--r--src/basic/gunicode.c1
-rw-r--r--src/basic/gunicode.h4
-rw-r--r--src/basic/hash-funcs.c2
-rw-r--r--src/basic/hash-funcs.h2
-rw-r--r--src/basic/hashmap.c2
-rw-r--r--src/basic/hashmap.h2
-rw-r--r--src/basic/hexdecoct.c2
-rw-r--r--src/basic/hexdecoct.h2
-rw-r--r--src/basic/hostname-util.c2
-rw-r--r--src/basic/hostname-util.h2
-rw-r--r--src/basic/in-addr-util.c2
-rw-r--r--src/basic/in-addr-util.h2
-rw-r--r--src/basic/io-util.c6
-rw-r--r--src/basic/io-util.h2
-rw-r--r--src/basic/kbd-util.c2
-rw-r--r--src/basic/kbd-util.h2
-rw-r--r--src/basic/khash.c6
-rw-r--r--src/basic/khash.h2
-rw-r--r--src/basic/label.c2
-rw-r--r--src/basic/label.h2
-rw-r--r--src/basic/limits-util.c2
-rw-r--r--src/basic/limits-util.h2
-rw-r--r--src/basic/list.h2
-rw-r--r--src/basic/locale-util.c2
-rw-r--r--src/basic/locale-util.h2
-rw-r--r--src/basic/log.c2
-rw-r--r--src/basic/log.h2
-rw-r--r--src/basic/login-util.c2
-rw-r--r--src/basic/login-util.h2
-rw-r--r--src/basic/macro.h2
-rw-r--r--src/basic/memfd-util.c2
-rw-r--r--src/basic/memfd-util.h2
-rw-r--r--src/basic/memory-util.c2
-rw-r--r--src/basic/memory-util.h2
-rw-r--r--src/basic/mempool.c2
-rw-r--r--src/basic/mempool.h2
-rw-r--r--src/basic/meson.build2
-rw-r--r--src/basic/missing_audit.h2
-rw-r--r--src/basic/missing_capability.h2
-rw-r--r--src/basic/missing_drm.h2
-rw-r--r--src/basic/missing_fcntl.h2
-rw-r--r--src/basic/missing_fs.h2
-rw-r--r--src/basic/missing_input.h2
-rw-r--r--src/basic/missing_keyctl.h2
-rw-r--r--src/basic/missing_loop.h2
-rw-r--r--src/basic/missing_magic.h2
-rw-r--r--src/basic/missing_mman.h2
-rw-r--r--src/basic/missing_network.h2
-rw-r--r--src/basic/missing_prctl.h2
-rw-r--r--src/basic/missing_random.h2
-rw-r--r--src/basic/missing_resource.h2
-rw-r--r--src/basic/missing_sched.h2
-rw-r--r--src/basic/missing_socket.h2
-rw-r--r--src/basic/missing_stat.h2
-rw-r--r--src/basic/missing_stdlib.h2
-rw-r--r--src/basic/missing_syscall.h146
-rw-r--r--src/basic/missing_timerfd.h2
-rw-r--r--src/basic/missing_type.h2
-rw-r--r--src/basic/missing_xfs.h2
-rw-r--r--src/basic/mkdir-label.c2
-rw-r--r--src/basic/mkdir.c2
-rw-r--r--src/basic/mkdir.h2
-rw-r--r--src/basic/mountpoint-util.c2
-rw-r--r--src/basic/mountpoint-util.h2
-rw-r--r--src/basic/namespace-util.c2
-rw-r--r--src/basic/namespace-util.h2
-rw-r--r--src/basic/nss-util.h2
-rw-r--r--src/basic/nulstr-util.c2
-rw-r--r--src/basic/nulstr-util.h2
-rw-r--r--src/basic/ordered-set.c2
-rw-r--r--src/basic/ordered-set.h2
-rw-r--r--src/basic/parse-util.c2
-rw-r--r--src/basic/parse-util.h2
-rw-r--r--src/basic/path-lookup.c2
-rw-r--r--src/basic/path-lookup.h2
-rw-r--r--src/basic/path-util.c2
-rw-r--r--src/basic/path-util.h2
-rw-r--r--src/basic/prioq.c2
-rw-r--r--src/basic/prioq.h2
-rw-r--r--src/basic/proc-cmdline.c2
-rw-r--r--src/basic/proc-cmdline.h2
-rw-r--r--src/basic/process-util.c2
-rw-r--r--src/basic/process-util.h2
-rw-r--r--src/basic/procfs-util.c2
-rw-r--r--src/basic/procfs-util.h2
-rw-r--r--src/basic/pthread-util.h2
-rw-r--r--src/basic/quota-util.c2
-rw-r--r--src/basic/quota-util.h2
-rw-r--r--src/basic/random-util.c2
-rw-r--r--src/basic/random-util.h2
-rw-r--r--src/basic/ratelimit.c4
-rw-r--r--src/basic/ratelimit.h2
-rw-r--r--src/basic/raw-clone.h2
-rw-r--r--src/basic/raw-reboot.h2
-rw-r--r--src/basic/replace-var.c2
-rw-r--r--src/basic/replace-var.h2
-rw-r--r--src/basic/rlimit-util.c2
-rw-r--r--src/basic/rlimit-util.h2
-rw-r--r--src/basic/rm-rf.c2
-rw-r--r--src/basic/rm-rf.h2
-rw-r--r--src/basic/selinux-util.c26
-rw-r--r--src/basic/selinux-util.h2
-rw-r--r--src/basic/set.h2
-rw-r--r--src/basic/sigbus.c2
-rw-r--r--src/basic/sigbus.h2
-rw-r--r--src/basic/signal-util.c13
-rw-r--r--src/basic/signal-util.h2
-rw-r--r--src/basic/siphash24.c4
-rw-r--r--src/basic/siphash24.h2
-rw-r--r--src/basic/smack-util.c2
-rw-r--r--src/basic/smack-util.h2
-rw-r--r--src/basic/socket-label.c2
-rw-r--r--src/basic/socket-util.c2
-rw-r--r--src/basic/socket-util.h2
-rw-r--r--src/basic/sort-util.c2
-rw-r--r--src/basic/sort-util.h2
-rw-r--r--src/basic/special.h7
-rw-r--r--src/basic/stat-util.c5
-rw-r--r--src/basic/stat-util.h2
-rw-r--r--src/basic/static-destruct.h2
-rw-r--r--src/basic/stdio-util.h2
-rw-r--r--src/basic/strbuf.c2
-rw-r--r--src/basic/strbuf.h2
-rw-r--r--src/basic/string-table.c2
-rw-r--r--src/basic/string-table.h2
-rw-r--r--src/basic/string-util.c57
-rw-r--r--src/basic/string-util.h2
-rw-r--r--src/basic/strv.c44
-rw-r--r--src/basic/strv.h2
-rw-r--r--src/basic/strxcpyx.c2
-rw-r--r--src/basic/strxcpyx.h2
-rw-r--r--src/basic/syslog-util.c2
-rw-r--r--src/basic/syslog-util.h2
-rw-r--r--src/basic/terminal-util.c2
-rw-r--r--src/basic/terminal-util.h2
-rw-r--r--src/basic/time-util.c2
-rw-r--r--src/basic/time-util.h2
-rw-r--r--src/basic/tmpfile-util.c2
-rw-r--r--src/basic/tmpfile-util.h2
-rw-r--r--src/basic/umask-util.h2
-rw-r--r--src/basic/unaligned.h2
-rw-r--r--src/basic/unit-def.c2
-rw-r--r--src/basic/unit-def.h2
-rw-r--r--src/basic/unit-name.c2
-rw-r--r--src/basic/unit-name.h2
-rw-r--r--src/basic/user-util.c2
-rw-r--r--src/basic/user-util.h2
-rw-r--r--src/basic/utf8.c2
-rw-r--r--src/basic/utf8.h2
-rw-r--r--src/basic/util.c2
-rw-r--r--src/basic/util.h2
-rw-r--r--src/basic/virt.c2
-rw-r--r--src/basic/virt.h2
-rw-r--r--src/basic/xattr-util.c2
-rw-r--r--src/basic/xattr-util.h2
-rw-r--r--src/binfmt/binfmt.c2
-rw-r--r--src/boot/bless-boot-generator.c2
-rw-r--r--src/boot/bless-boot.c2
-rw-r--r--src/boot/boot-check-no-failures.c2
-rw-r--r--src/boot/bootctl.c2
-rw-r--r--src/boot/efi/boot.c2
-rw-r--r--src/boot/efi/console.c2
-rw-r--r--src/boot/efi/console.h2
-rw-r--r--src/boot/efi/crc32.c1
-rw-r--r--src/boot/efi/crc32.h2
-rw-r--r--src/boot/efi/disk.c2
-rw-r--r--src/boot/efi/disk.h2
-rw-r--r--src/boot/efi/graphics.c2
-rw-r--r--src/boot/efi/graphics.h2
-rw-r--r--src/boot/efi/linux.c2
-rw-r--r--src/boot/efi/linux.h2
-rw-r--r--src/boot/efi/loader-features.h2
-rw-r--r--src/boot/efi/measure.c2
-rw-r--r--src/boot/efi/measure.h2
-rw-r--r--src/boot/efi/meson.build2
-rw-r--r--src/boot/efi/missing_efi.h2
-rw-r--r--src/boot/efi/pe.c2
-rw-r--r--src/boot/efi/pe.h2
-rw-r--r--src/boot/efi/random-seed.c2
-rw-r--r--src/boot/efi/random-seed.h2
-rw-r--r--src/boot/efi/sha256.c2
-rw-r--r--src/boot/efi/sha256.h2
-rw-r--r--src/boot/efi/shim.c2
-rw-r--r--src/boot/efi/shim.h2
-rw-r--r--src/boot/efi/splash.c2
-rw-r--r--src/boot/efi/splash.h2
-rw-r--r--src/boot/efi/stub.c2
-rw-r--r--src/boot/efi/util.c2
-rw-r--r--src/boot/efi/util.h2
-rw-r--r--src/busctl/busctl-introspect.c2
-rw-r--r--src/busctl/busctl-introspect.h2
-rw-r--r--src/busctl/busctl.c2
-rw-r--r--src/cgls/cgls.c2
-rw-r--r--src/cgroups-agent/cgroups-agent.c2
-rw-r--r--src/cgtop/cgtop.c2
-rw-r--r--src/core/all-units.h2
-rw-r--r--src/core/apparmor-setup.c2
-rw-r--r--src/core/apparmor-setup.h2
-rw-r--r--src/core/audit-fd.c2
-rw-r--r--src/core/audit-fd.h2
-rw-r--r--src/core/automount.c9
-rw-r--r--src/core/automount.h3
-rw-r--r--src/core/bpf-devices.c2
-rw-r--r--src/core/bpf-devices.h2
-rw-r--r--src/core/bpf-firewall.c2
-rw-r--r--src/core/bpf-firewall.h2
-rw-r--r--src/core/cgroup.c2
-rw-r--r--src/core/cgroup.h2
-rw-r--r--src/core/core-varlink.c2
-rw-r--r--src/core/core-varlink.h2
-rw-r--r--src/core/dbus-automount.c2
-rw-r--r--src/core/dbus-automount.h2
-rw-r--r--src/core/dbus-cgroup.c2
-rw-r--r--src/core/dbus-cgroup.h2
-rw-r--r--src/core/dbus-device.c2
-rw-r--r--src/core/dbus-device.h2
-rw-r--r--src/core/dbus-execute.c2
-rw-r--r--src/core/dbus-execute.h2
-rw-r--r--src/core/dbus-job.c2
-rw-r--r--src/core/dbus-job.h2
-rw-r--r--src/core/dbus-kill.c2
-rw-r--r--src/core/dbus-kill.h2
-rw-r--r--src/core/dbus-manager.c2
-rw-r--r--src/core/dbus-manager.h2
-rw-r--r--src/core/dbus-mount.c2
-rw-r--r--src/core/dbus-mount.h2
-rw-r--r--src/core/dbus-path.c2
-rw-r--r--src/core/dbus-path.h2
-rw-r--r--src/core/dbus-scope.c2
-rw-r--r--src/core/dbus-scope.h2
-rw-r--r--src/core/dbus-service.c2
-rw-r--r--src/core/dbus-service.h2
-rw-r--r--src/core/dbus-slice.c2
-rw-r--r--src/core/dbus-slice.h2
-rw-r--r--src/core/dbus-socket.c2
-rw-r--r--src/core/dbus-socket.h2
-rw-r--r--src/core/dbus-swap.c2
-rw-r--r--src/core/dbus-swap.h2
-rw-r--r--src/core/dbus-target.c2
-rw-r--r--src/core/dbus-target.h2
-rw-r--r--src/core/dbus-timer.c6
-rw-r--r--src/core/dbus-timer.h2
-rw-r--r--src/core/dbus-unit.c2
-rw-r--r--src/core/dbus-unit.h2
-rw-r--r--src/core/dbus-util.c2
-rw-r--r--src/core/dbus-util.h2
-rw-r--r--src/core/dbus.c2
-rw-r--r--src/core/dbus.h2
-rw-r--r--src/core/device.c2
-rw-r--r--src/core/device.h2
-rw-r--r--src/core/dynamic-user.c2
-rw-r--r--src/core/dynamic-user.h2
-rw-r--r--src/core/efi-random.c2
-rw-r--r--src/core/efi-random.h2
-rw-r--r--src/core/emergency-action.c2
-rw-r--r--src/core/emergency-action.h2
-rw-r--r--src/core/execute.c20
-rw-r--r--src/core/execute.h2
-rw-r--r--src/core/generator-setup.c2
-rw-r--r--src/core/generator-setup.h2
-rw-r--r--src/core/hostname-setup.c2
-rw-r--r--src/core/hostname-setup.h2
-rw-r--r--src/core/ima-setup.c2
-rw-r--r--src/core/ima-setup.h2
-rw-r--r--src/core/ip-address-access.c2
-rw-r--r--src/core/ip-address-access.h2
-rw-r--r--src/core/job.c2
-rw-r--r--src/core/job.h2
-rw-r--r--src/core/kill.c2
-rw-r--r--src/core/kill.h2
-rw-r--r--src/core/killall.c2
-rw-r--r--src/core/killall.h2
-rw-r--r--src/core/kmod-setup.c2
-rw-r--r--src/core/kmod-setup.h2
-rw-r--r--src/core/load-dropin.c2
-rw-r--r--src/core/load-dropin.h2
-rw-r--r--src/core/load-fragment-gperf.gperf.m41
-rw-r--r--src/core/load-fragment.c12
-rw-r--r--src/core/load-fragment.h2
-rw-r--r--src/core/locale-setup.c2
-rw-r--r--src/core/locale-setup.h2
-rw-r--r--src/core/loopback-setup.c2
-rw-r--r--src/core/loopback-setup.h2
-rw-r--r--src/core/machine-id-setup.c2
-rw-r--r--src/core/machine-id-setup.h2
-rw-r--r--src/core/macros.systemd.in2
-rw-r--r--src/core/main.c7
-rw-r--r--src/core/manager.c4
-rw-r--r--src/core/manager.h2
-rw-r--r--src/core/meson.build22
-rw-r--r--src/core/mount-setup.c2
-rw-r--r--src/core/mount-setup.h2
-rw-r--r--src/core/mount.c26
-rw-r--r--src/core/mount.h2
-rw-r--r--src/core/namespace.c2
-rw-r--r--src/core/namespace.h2
-rw-r--r--src/core/org.freedesktop.systemd1.conf2
-rw-r--r--src/core/org.freedesktop.systemd1.policy.in2
-rw-r--r--src/core/org.freedesktop.systemd1.service2
-rw-r--r--src/core/path.c2
-rw-r--r--src/core/path.h2
-rw-r--r--src/core/scope.c39
-rw-r--r--src/core/scope.h2
-rw-r--r--src/core/selinux-access.c2
-rw-r--r--src/core/selinux-access.h2
-rw-r--r--src/core/selinux-setup.c2
-rw-r--r--src/core/selinux-setup.h2
-rw-r--r--src/core/service.c2
-rw-r--r--src/core/service.h2
-rw-r--r--src/core/show-status.c2
-rw-r--r--src/core/show-status.h2
-rw-r--r--src/core/slice.c2
-rw-r--r--src/core/slice.h2
-rw-r--r--src/core/smack-setup.c2
-rw-r--r--src/core/smack-setup.h2
-rw-r--r--src/core/socket.c4
-rw-r--r--src/core/socket.h2
-rw-r--r--src/core/swap.c61
-rw-r--r--src/core/swap.h2
-rw-r--r--src/core/systemd.pc.in2
-rw-r--r--src/core/target.c2
-rw-r--r--src/core/target.h2
-rw-r--r--src/core/timer.c36
-rw-r--r--src/core/timer.h3
-rw-r--r--src/core/transaction.c2
-rw-r--r--src/core/transaction.h2
-rw-r--r--src/core/triggers.systemd.in2
-rw-r--r--src/core/unit-printf.c84
-rw-r--r--src/core/unit-printf.h2
-rw-r--r--src/core/unit.c23
-rw-r--r--src/core/unit.h10
-rw-r--r--src/coredump/coredump-vacuum.c2
-rw-r--r--src/coredump/coredump-vacuum.h2
-rw-r--r--src/coredump/coredump.c2
-rw-r--r--src/coredump/coredumpctl.c2
-rw-r--r--src/coredump/meson.build4
-rw-r--r--src/coredump/stacktrace.c2
-rw-r--r--src/coredump/stacktrace.h2
-rw-r--r--src/coredump/test-coredump-vacuum.c2
-rw-r--r--src/cryptsetup/cryptsetup-generator.c2
-rw-r--r--src/cryptsetup/cryptsetup-keyfile.c2
-rw-r--r--src/cryptsetup/cryptsetup-keyfile.h2
-rw-r--r--src/cryptsetup/cryptsetup-pkcs11.c2
-rw-r--r--src/cryptsetup/cryptsetup-pkcs11.h2
-rw-r--r--src/cryptsetup/cryptsetup.c12
-rw-r--r--src/debug-generator/debug-generator.c2
-rw-r--r--src/delta/delta.c2
-rw-r--r--src/detect-virt/detect-virt.c2
-rw-r--r--src/dissect/dissect.c2
-rw-r--r--src/environment-d-generator/environment-d-generator.c2
-rw-r--r--src/escape/escape.c2
-rw-r--r--src/firstboot/firstboot.c2
-rw-r--r--src/fsck/fsck.c2
-rw-r--r--src/fstab-generator/fstab-generator.c2
-rw-r--r--src/fuzz/fuzz-bus-label.c2
-rw-r--r--src/fuzz/fuzz-bus-message.c2
-rw-r--r--src/fuzz/fuzz-calendarspec.c2
-rw-r--r--src/fuzz/fuzz-catalog.c2
-rw-r--r--src/fuzz/fuzz-compress.c2
-rw-r--r--src/fuzz/fuzz-dhcp-server.c2
-rw-r--r--src/fuzz/fuzz-dhcp6-client.c2
-rw-r--r--src/fuzz/fuzz-dns-packet.c2
-rw-r--r--src/fuzz/fuzz-env-file.c2
-rw-r--r--src/fuzz/fuzz-hostname-util.c2
-rw-r--r--src/fuzz/fuzz-journal-remote.c2
-rw-r--r--src/fuzz/fuzz-journald-audit.c2
-rw-r--r--src/fuzz/fuzz-journald-kmsg.c2
-rw-r--r--src/fuzz/fuzz-journald-native-fd.c2
-rw-r--r--src/fuzz/fuzz-journald-native.c2
-rw-r--r--src/fuzz/fuzz-journald-stream.c2
-rw-r--r--src/fuzz/fuzz-journald-syslog.c2
-rw-r--r--src/fuzz/fuzz-journald.c2
-rw-r--r--src/fuzz/fuzz-journald.h2
-rw-r--r--src/fuzz/fuzz-json.c2
-rw-r--r--src/fuzz/fuzz-lldp.c2
-rw-r--r--src/fuzz/fuzz-main.c2
-rw-r--r--src/fuzz/fuzz-ndisc-rs.c2
-rw-r--r--src/fuzz/fuzz-nspawn-oci.c2
-rw-r--r--src/fuzz/fuzz-nspawn-settings.c2
-rw-r--r--src/fuzz/fuzz-time-util.c2
-rw-r--r--src/fuzz/fuzz-udev-database.c2
-rw-r--r--src/fuzz/fuzz-udev-rule-parse-value.c31
-rw-r--r--src/fuzz/fuzz-udev-rules.c2
-rw-r--r--src/fuzz/fuzz-unit-file.c2
-rw-r--r--src/fuzz/fuzz-varlink.c2
-rw-r--r--src/fuzz/fuzz-xdg-desktop.c2
-rw-r--r--src/fuzz/fuzz.h2
-rw-r--r--src/fuzz/meson.build6
-rw-r--r--src/getty-generator/getty-generator.c2
-rw-r--r--src/gpt-auto-generator/gpt-auto-generator.c2
-rw-r--r--src/hibernate-resume/hibernate-resume-generator.c2
-rw-r--r--src/hibernate-resume/hibernate-resume.c2
-rw-r--r--src/home/home-util.c2
-rw-r--r--src/home/home-util.h2
-rw-r--r--src/home/homectl-fido2.c2
-rw-r--r--src/home/homectl-fido2.h2
-rw-r--r--src/home/homectl-pkcs11.c2
-rw-r--r--src/home/homectl-pkcs11.h2
-rw-r--r--src/home/homectl-recovery-key.c2
-rw-r--r--src/home/homectl-recovery-key.h2
-rw-r--r--src/home/homectl.c14
-rw-r--r--src/home/homed-bus.c2
-rw-r--r--src/home/homed-bus.h2
-rw-r--r--src/home/homed-conf.c2
-rw-r--r--src/home/homed-conf.h2
-rw-r--r--src/home/homed-home-bus.c2
-rw-r--r--src/home/homed-home-bus.h2
-rw-r--r--src/home/homed-home.c2
-rw-r--r--src/home/homed-home.h2
-rw-r--r--src/home/homed-manager-bus.c2
-rw-r--r--src/home/homed-manager-bus.h2
-rw-r--r--src/home/homed-manager.c4
-rw-r--r--src/home/homed-manager.h2
-rw-r--r--src/home/homed-operation.c2
-rw-r--r--src/home/homed-operation.h2
-rw-r--r--src/home/homed-varlink.c2
-rw-r--r--src/home/homed-varlink.h2
-rw-r--r--src/home/homed.c2
-rw-r--r--src/home/homework-cifs.c2
-rw-r--r--src/home/homework-cifs.h2
-rw-r--r--src/home/homework-directory.c2
-rw-r--r--src/home/homework-directory.h2
-rw-r--r--src/home/homework-fido2.c2
-rw-r--r--src/home/homework-fido2.h2
-rw-r--r--src/home/homework-fscrypt.c2
-rw-r--r--src/home/homework-fscrypt.h2
-rw-r--r--src/home/homework-luks.c2
-rw-r--r--src/home/homework-luks.h2
-rw-r--r--src/home/homework-mount.c2
-rw-r--r--src/home/homework-mount.h2
-rw-r--r--src/home/homework-pkcs11.c2
-rw-r--r--src/home/homework-pkcs11.h2
-rw-r--r--src/home/homework-quota.c2
-rw-r--r--src/home/homework-quota.h2
-rw-r--r--src/home/homework.c2
-rw-r--r--src/home/homework.h2
-rw-r--r--src/home/meson.build8
-rw-r--r--src/home/modhex.c2
-rw-r--r--src/home/modhex.h2
-rw-r--r--src/home/org.freedesktop.home1.conf2
-rw-r--r--src/home/org.freedesktop.home1.policy2
-rw-r--r--src/home/org.freedesktop.home1.service2
-rw-r--r--src/home/pam_systemd_home.c11
-rw-r--r--src/home/pam_systemd_home.sym2
-rw-r--r--src/home/test-modhex.c2
-rw-r--r--src/home/user-record-pwquality.c2
-rw-r--r--src/home/user-record-pwquality.h2
-rw-r--r--src/home/user-record-sign.c2
-rw-r--r--src/home/user-record-sign.h2
-rw-r--r--src/home/user-record-util.c2
-rw-r--r--src/home/user-record-util.h2
-rw-r--r--src/hostname/hostnamectl.c2
-rw-r--r--src/hostname/hostnamed.c2
-rw-r--r--src/hostname/meson.build2
-rw-r--r--src/hostname/org.freedesktop.hostname1.conf2
-rw-r--r--src/hostname/org.freedesktop.hostname1.policy2
-rw-r--r--src/hostname/org.freedesktop.hostname1.service2
-rw-r--r--src/hwdb/hwdb.c2
-rw-r--r--src/id128/id128.c2
-rw-r--r--src/import/curl-util.c6
-rw-r--r--src/import/curl-util.h4
-rw-r--r--src/import/export-raw.c2
-rw-r--r--src/import/export-raw.h2
-rw-r--r--src/import/export-tar.c2
-rw-r--r--src/import/export-tar.h2
-rw-r--r--src/import/export.c2
-rw-r--r--src/import/import-common.c2
-rw-r--r--src/import/import-common.h2
-rw-r--r--src/import/import-compress.c2
-rw-r--r--src/import/import-compress.h2
-rw-r--r--src/import/import-fs.c2
-rw-r--r--src/import/import-raw.c2
-rw-r--r--src/import/import-raw.h2
-rw-r--r--src/import/import-tar.c2
-rw-r--r--src/import/import-tar.h2
-rw-r--r--src/import/import.c2
-rw-r--r--src/import/importd.c2
-rw-r--r--src/import/meson.build2
-rw-r--r--src/import/org.freedesktop.import1.conf2
-rw-r--r--src/import/org.freedesktop.import1.policy2
-rw-r--r--src/import/org.freedesktop.import1.service2
-rw-r--r--src/import/pull-common.c2
-rw-r--r--src/import/pull-common.h2
-rw-r--r--src/import/pull-job.c2
-rw-r--r--src/import/pull-job.h2
-rw-r--r--src/import/pull-raw.c2
-rw-r--r--src/import/pull-raw.h2
-rw-r--r--src/import/pull-tar.c2
-rw-r--r--src/import/pull-tar.h2
-rw-r--r--src/import/pull.c2
-rw-r--r--src/import/qcow2-util.c2
-rw-r--r--src/import/qcow2-util.h2
-rw-r--r--src/import/test-qcow2.c2
-rw-r--r--src/initctl/initctl.c2
-rw-r--r--src/journal-remote/journal-gatewayd.c8
-rw-r--r--src/journal-remote/journal-remote-main.c8
-rw-r--r--src/journal-remote/journal-remote-parse.c2
-rw-r--r--src/journal-remote/journal-remote-parse.h2
-rw-r--r--src/journal-remote/journal-remote-write.c2
-rw-r--r--src/journal-remote/journal-remote-write.h2
-rw-r--r--src/journal-remote/journal-remote.c2
-rw-r--r--src/journal-remote/journal-remote.h2
-rw-r--r--src/journal-remote/journal-upload-journal.c2
-rw-r--r--src/journal-remote/journal-upload.c2
-rw-r--r--src/journal-remote/journal-upload.h2
-rw-r--r--src/journal-remote/meson.build14
-rw-r--r--src/journal-remote/microhttpd-util.c2
-rw-r--r--src/journal-remote/microhttpd-util.h2
-rw-r--r--src/journal/audit-type.c2
-rw-r--r--src/journal/audit-type.h2
-rw-r--r--src/journal/cat.c2
-rw-r--r--src/journal/catalog.c2
-rw-r--r--src/journal/catalog.h2
-rw-r--r--src/journal/compress.c2
-rw-r--r--src/journal/compress.h2
-rw-r--r--src/journal/fsprg.c2
-rw-r--r--src/journal/fsprg.h2
-rw-r--r--src/journal/journal-authenticate.c2
-rw-r--r--src/journal/journal-authenticate.h2
-rw-r--r--src/journal/journal-def.h2
-rw-r--r--src/journal/journal-file.c2
-rw-r--r--src/journal/journal-file.h2
-rw-r--r--src/journal/journal-internal.h2
-rw-r--r--src/journal/journal-send.c2
-rw-r--r--src/journal/journal-vacuum.c2
-rw-r--r--src/journal/journal-vacuum.h2
-rw-r--r--src/journal/journal-verify.c2
-rw-r--r--src/journal/journal-verify.h2
-rw-r--r--src/journal/journalctl.c23
-rw-r--r--src/journal/journald-audit.c2
-rw-r--r--src/journal/journald-audit.h2
-rw-r--r--src/journal/journald-console.c2
-rw-r--r--src/journal/journald-console.h2
-rw-r--r--src/journal/journald-context.c2
-rw-r--r--src/journal/journald-context.h2
-rw-r--r--src/journal/journald-kmsg.c2
-rw-r--r--src/journal/journald-kmsg.h2
-rw-r--r--src/journal/journald-native.c2
-rw-r--r--src/journal/journald-native.h2
-rw-r--r--src/journal/journald-rate-limit.c2
-rw-r--r--src/journal/journald-rate-limit.h2
-rw-r--r--src/journal/journald-server.c2
-rw-r--r--src/journal/journald-server.h2
-rw-r--r--src/journal/journald-stream.c2
-rw-r--r--src/journal/journald-stream.h2
-rw-r--r--src/journal/journald-syslog.c2
-rw-r--r--src/journal/journald-syslog.h2
-rw-r--r--src/journal/journald-wall.c2
-rw-r--r--src/journal/journald-wall.h2
-rw-r--r--src/journal/journald.c2
-rw-r--r--src/journal/lookup3.c1
-rw-r--r--src/journal/lookup3.h1
-rw-r--r--src/journal/meson.build8
-rw-r--r--src/journal/mmap-cache.c2
-rw-r--r--src/journal/mmap-cache.h2
-rw-r--r--src/journal/pcre2-dlopen.c2
-rw-r--r--src/journal/pcre2-dlopen.h2
-rw-r--r--src/journal/sd-journal.c3
-rw-r--r--src/journal/test-audit-type.c2
-rw-r--r--src/journal/test-catalog.c2
-rw-r--r--src/journal/test-compress-benchmark.c2
-rw-r--r--src/journal/test-compress.c2
-rw-r--r--src/journal/test-journal-config.c2
-rw-r--r--src/journal/test-journal-enum.c2
-rw-r--r--src/journal/test-journal-flush.c2
-rw-r--r--src/journal/test-journal-init.c2
-rw-r--r--src/journal/test-journal-interleaving.c2
-rw-r--r--src/journal/test-journal-match.c2
-rw-r--r--src/journal/test-journal-send.c2
-rw-r--r--src/journal/test-journal-stream.c2
-rw-r--r--src/journal/test-journal-syslog.c2
-rw-r--r--src/journal/test-journal-verify.c2
-rw-r--r--src/journal/test-journal.c2
-rw-r--r--src/journal/test-mmap-cache.c2
-rw-r--r--src/kernel-install/90-loaderentry.install2
-rwxr-xr-xsrc/kernel-install/kernel-install2
-rw-r--r--src/kernel-install/meson.build25
-rw-r--r--src/libsystemd-network/arp-util.c2
-rw-r--r--src/libsystemd-network/arp-util.h2
-rw-r--r--src/libsystemd-network/dhcp-client-internal.h2
-rw-r--r--src/libsystemd-network/dhcp-identifier.c2
-rw-r--r--src/libsystemd-network/dhcp-identifier.h2
-rw-r--r--src/libsystemd-network/dhcp-internal.h10
-rw-r--r--src/libsystemd-network/dhcp-lease-internal.h2
-rw-r--r--src/libsystemd-network/dhcp-network.c42
-rw-r--r--src/libsystemd-network/dhcp-option.c2
-rw-r--r--src/libsystemd-network/dhcp-packet.c2
-rw-r--r--src/libsystemd-network/dhcp-protocol.h2
-rw-r--r--src/libsystemd-network/dhcp-server-internal.h2
-rw-r--r--src/libsystemd-network/dhcp6-internal.h2
-rw-r--r--src/libsystemd-network/dhcp6-lease-internal.h2
-rw-r--r--src/libsystemd-network/dhcp6-network.c2
-rw-r--r--src/libsystemd-network/dhcp6-option.c2
-rw-r--r--src/libsystemd-network/dhcp6-protocol.h2
-rw-r--r--src/libsystemd-network/icmp6-util.c2
-rw-r--r--src/libsystemd-network/icmp6-util.h2
-rw-r--r--src/libsystemd-network/lldp-internal.h2
-rw-r--r--src/libsystemd-network/lldp-neighbor.c2
-rw-r--r--src/libsystemd-network/lldp-neighbor.h2
-rw-r--r--src/libsystemd-network/lldp-network.c2
-rw-r--r--src/libsystemd-network/lldp-network.h2
-rw-r--r--src/libsystemd-network/meson.build2
-rw-r--r--src/libsystemd-network/ndisc-internal.h2
-rw-r--r--src/libsystemd-network/ndisc-router.c2
-rw-r--r--src/libsystemd-network/ndisc-router.h2
-rw-r--r--src/libsystemd-network/network-internal.c2
-rw-r--r--src/libsystemd-network/network-internal.h2
-rw-r--r--src/libsystemd-network/radv-internal.h2
-rw-r--r--src/libsystemd-network/sd-dhcp-client.c30
-rw-r--r--src/libsystemd-network/sd-dhcp-lease.c2
-rw-r--r--src/libsystemd-network/sd-dhcp-server.c2
-rw-r--r--src/libsystemd-network/sd-dhcp6-client.c15
-rw-r--r--src/libsystemd-network/sd-dhcp6-lease.c2
-rw-r--r--src/libsystemd-network/sd-ipv4acd.c2
-rw-r--r--src/libsystemd-network/sd-ipv4ll.c2
-rw-r--r--src/libsystemd-network/sd-lldp.c2
-rw-r--r--src/libsystemd-network/sd-ndisc.c2
-rw-r--r--src/libsystemd-network/sd-radv.c17
-rw-r--r--src/libsystemd-network/test-acd.c2
-rw-r--r--src/libsystemd-network/test-dhcp-client.c8
-rw-r--r--src/libsystemd-network/test-dhcp-option.c2
-rw-r--r--src/libsystemd-network/test-dhcp-server.c2
-rw-r--r--src/libsystemd-network/test-dhcp6-client.c2
-rw-r--r--src/libsystemd-network/test-ipv4ll-manual.c2
-rw-r--r--src/libsystemd-network/test-ipv4ll.c2
-rw-r--r--src/libsystemd-network/test-lldp.c2
-rw-r--r--src/libsystemd-network/test-ndisc-ra.c2
-rw-r--r--src/libsystemd-network/test-ndisc-rs.c2
-rw-r--r--src/libsystemd-network/test-sd-dhcp-lease.c2
-rw-r--r--src/libsystemd/disable-mempool.c2
-rw-r--r--src/libsystemd/libsystemd.pc.in2
-rw-r--r--src/libsystemd/libsystemd.sym2
-rw-r--r--src/libsystemd/meson.build2
-rw-r--r--src/libsystemd/sd-bus/bus-common-errors.c2
-rw-r--r--src/libsystemd/sd-bus/bus-common-errors.h2
-rw-r--r--src/libsystemd/sd-bus/bus-container.c2
-rw-r--r--src/libsystemd/sd-bus/bus-container.h2
-rw-r--r--src/libsystemd/sd-bus/bus-control.c2
-rw-r--r--src/libsystemd/sd-bus/bus-control.h2
-rw-r--r--src/libsystemd/sd-bus/bus-convenience.c2
-rw-r--r--src/libsystemd/sd-bus/bus-creds.c2
-rw-r--r--src/libsystemd/sd-bus/bus-creds.h2
-rw-r--r--src/libsystemd/sd-bus/bus-dump.c2
-rw-r--r--src/libsystemd/sd-bus/bus-dump.h2
-rw-r--r--src/libsystemd/sd-bus/bus-error.c4
-rw-r--r--src/libsystemd/sd-bus/bus-error.h2
-rw-r--r--src/libsystemd/sd-bus/bus-gvariant.c2
-rw-r--r--src/libsystemd/sd-bus/bus-gvariant.h2
-rw-r--r--src/libsystemd/sd-bus/bus-internal.c2
-rw-r--r--src/libsystemd/sd-bus/bus-internal.h2
-rw-r--r--src/libsystemd/sd-bus/bus-introspect.c2
-rw-r--r--src/libsystemd/sd-bus/bus-introspect.h2
-rw-r--r--src/libsystemd/sd-bus/bus-kernel.c2
-rw-r--r--src/libsystemd/sd-bus/bus-kernel.h2
-rw-r--r--src/libsystemd/sd-bus/bus-match.c2
-rw-r--r--src/libsystemd/sd-bus/bus-match.h2
-rw-r--r--src/libsystemd/sd-bus/bus-message.c4
-rw-r--r--src/libsystemd/sd-bus/bus-message.h2
-rw-r--r--src/libsystemd/sd-bus/bus-objects.c2
-rw-r--r--src/libsystemd/sd-bus/bus-objects.h2
-rw-r--r--src/libsystemd/sd-bus/bus-protocol.h2
-rw-r--r--src/libsystemd/sd-bus/bus-signature.c2
-rw-r--r--src/libsystemd/sd-bus/bus-signature.h2
-rw-r--r--src/libsystemd/sd-bus/bus-slot.c2
-rw-r--r--src/libsystemd/sd-bus/bus-slot.h2
-rw-r--r--src/libsystemd/sd-bus/bus-socket.c2
-rw-r--r--src/libsystemd/sd-bus/bus-socket.h2
-rw-r--r--src/libsystemd/sd-bus/bus-track.c2
-rw-r--r--src/libsystemd/sd-bus/bus-track.h2
-rw-r--r--src/libsystemd/sd-bus/bus-type.c2
-rw-r--r--src/libsystemd/sd-bus/bus-type.h2
-rw-r--r--src/libsystemd/sd-bus/sd-bus.c2
-rw-r--r--src/libsystemd/sd-bus/test-bus-address.c2
-rw-r--r--src/libsystemd/sd-bus/test-bus-benchmark.c2
-rw-r--r--src/libsystemd/sd-bus/test-bus-chat.c2
-rw-r--r--src/libsystemd/sd-bus/test-bus-cleanup.c2
-rw-r--r--src/libsystemd/sd-bus/test-bus-creds.c2
-rw-r--r--src/libsystemd/sd-bus/test-bus-error.c2
-rw-r--r--src/libsystemd/sd-bus/test-bus-gvariant.c2
-rw-r--r--src/libsystemd/sd-bus/test-bus-introspect.c2
-rw-r--r--src/libsystemd/sd-bus/test-bus-marshal.c2
-rw-r--r--src/libsystemd/sd-bus/test-bus-match.c2
-rw-r--r--src/libsystemd/sd-bus/test-bus-objects.c2
-rw-r--r--src/libsystemd/sd-bus/test-bus-queue-ref-cycle.c2
-rw-r--r--src/libsystemd/sd-bus/test-bus-server.c2
-rw-r--r--src/libsystemd/sd-bus/test-bus-signature.c2
-rw-r--r--src/libsystemd/sd-bus/test-bus-track.c2
-rw-r--r--src/libsystemd/sd-bus/test-bus-vtable.c2
-rw-r--r--src/libsystemd/sd-bus/test-bus-watch-bind.c2
-rw-r--r--src/libsystemd/sd-bus/test-vtable-data.h2
-rw-r--r--src/libsystemd/sd-daemon/sd-daemon.c15
-rw-r--r--src/libsystemd/sd-device/device-enumerator-private.h2
-rw-r--r--src/libsystemd/sd-device/device-enumerator.c35
-rw-r--r--src/libsystemd/sd-device/device-internal.h16
-rw-r--r--src/libsystemd/sd-device/device-monitor-private.h2
-rw-r--r--src/libsystemd/sd-device/device-monitor.c2
-rw-r--r--src/libsystemd/sd-device/device-private.c10
-rw-r--r--src/libsystemd/sd-device/device-private.h2
-rw-r--r--src/libsystemd/sd-device/device-util.h2
-rw-r--r--src/libsystemd/sd-device/sd-device.c33
-rw-r--r--src/libsystemd/sd-device/test-sd-device-monitor.c2
-rw-r--r--src/libsystemd/sd-device/test-sd-device-thread.c2
-rw-r--r--src/libsystemd/sd-device/test-sd-device.c2
-rw-r--r--src/libsystemd/sd-device/test-udev-device-thread.c2
-rw-r--r--src/libsystemd/sd-event/event-source.h2
-rw-r--r--src/libsystemd/sd-event/event-util.c2
-rw-r--r--src/libsystemd/sd-event/event-util.h2
-rw-r--r--src/libsystemd/sd-event/sd-event.c110
-rw-r--r--src/libsystemd/sd-event/test-event.c2
-rw-r--r--src/libsystemd/sd-hwdb/hwdb-internal.h2
-rw-r--r--src/libsystemd/sd-hwdb/hwdb-util.c2
-rw-r--r--src/libsystemd/sd-hwdb/hwdb-util.h2
-rw-r--r--src/libsystemd/sd-hwdb/sd-hwdb.c2
-rw-r--r--src/libsystemd/sd-id128/id128-util.c2
-rw-r--r--src/libsystemd/sd-id128/id128-util.h2
-rw-r--r--src/libsystemd/sd-id128/sd-id128.c2
-rw-r--r--src/libsystemd/sd-login/sd-login.c4
-rw-r--r--src/libsystemd/sd-login/test-login.c2
-rw-r--r--src/libsystemd/sd-netlink/generic-netlink.c2
-rw-r--r--src/libsystemd/sd-netlink/generic-netlink.h2
-rw-r--r--src/libsystemd/sd-netlink/netlink-internal.h2
-rw-r--r--src/libsystemd/sd-netlink/netlink-message.c45
-rw-r--r--src/libsystemd/sd-netlink/netlink-slot.c2
-rw-r--r--src/libsystemd/sd-netlink/netlink-slot.h2
-rw-r--r--src/libsystemd/sd-netlink/netlink-socket.c2
-rw-r--r--src/libsystemd/sd-netlink/netlink-types.c2
-rw-r--r--src/libsystemd/sd-netlink/netlink-types.h2
-rw-r--r--src/libsystemd/sd-netlink/netlink-util.c2
-rw-r--r--src/libsystemd/sd-netlink/netlink-util.h5
-rw-r--r--src/libsystemd/sd-netlink/rtnl-message.c2
-rw-r--r--src/libsystemd/sd-netlink/sd-netlink.c2
-rw-r--r--src/libsystemd/sd-netlink/test-netlink.c2
-rw-r--r--src/libsystemd/sd-network/network-util.c2
-rw-r--r--src/libsystemd/sd-network/network-util.h2
-rw-r--r--src/libsystemd/sd-network/sd-network.c2
-rw-r--r--src/libsystemd/sd-path/sd-path.c2
-rw-r--r--src/libsystemd/sd-resolve/resolve-private.h2
-rw-r--r--src/libsystemd/sd-resolve/sd-resolve.c2
-rw-r--r--src/libsystemd/sd-resolve/test-resolve.c2
-rw-r--r--src/libsystemd/sd-utf8/sd-utf8.c2
-rw-r--r--src/libudev/libudev-device-internal.h2
-rw-r--r--src/libudev/libudev-device.c2
-rw-r--r--src/libudev/libudev-enumerate.c2
-rw-r--r--src/libudev/libudev-hwdb.c2
-rw-r--r--src/libudev/libudev-list-internal.h2
-rw-r--r--src/libudev/libudev-list.c2
-rw-r--r--src/libudev/libudev-monitor.c2
-rw-r--r--src/libudev/libudev-queue.c2
-rw-r--r--src/libudev/libudev-util.c2
-rw-r--r--src/libudev/libudev-util.h2
-rw-r--r--src/libudev/libudev.c2
-rw-r--r--src/libudev/libudev.h2
-rw-r--r--src/libudev/libudev.pc.in2
-rw-r--r--src/libudev/libudev.sym2
-rw-r--r--src/libudev/meson.build2
-rw-r--r--src/locale/keymap-util.c2
-rw-r--r--src/locale/keymap-util.h2
-rw-r--r--src/locale/localectl.c2
-rw-r--r--src/locale/localed.c2
-rw-r--r--src/locale/meson.build2
-rw-r--r--src/locale/org.freedesktop.locale1.conf2
-rw-r--r--src/locale/org.freedesktop.locale1.policy2
-rw-r--r--src/locale/org.freedesktop.locale1.service2
-rw-r--r--src/locale/test-keymap-util.c2
-rw-r--r--src/login/70-power-switch.rules2
-rw-r--r--src/login/70-uaccess.rules.m42
-rw-r--r--src/login/71-seat.rules.in2
-rw-r--r--src/login/73-seat-late.rules.m42
-rw-r--r--src/login/inhibit.c2
-rw-r--r--src/login/loginctl.c2
-rw-r--r--src/login/logind-acl.c2
-rw-r--r--src/login/logind-acl.h2
-rw-r--r--src/login/logind-action.c2
-rw-r--r--src/login/logind-action.h2
-rw-r--r--src/login/logind-brightness.c2
-rw-r--r--src/login/logind-brightness.h2
-rw-r--r--src/login/logind-button.c2
-rw-r--r--src/login/logind-button.h2
-rw-r--r--src/login/logind-core.c2
-rw-r--r--src/login/logind-dbus.c2
-rw-r--r--src/login/logind-dbus.h2
-rw-r--r--src/login/logind-device.c2
-rw-r--r--src/login/logind-device.h2
-rw-r--r--src/login/logind-inhibit.c2
-rw-r--r--src/login/logind-inhibit.h2
-rw-r--r--src/login/logind-seat-dbus.c2
-rw-r--r--src/login/logind-seat-dbus.h2
-rw-r--r--src/login/logind-seat.c2
-rw-r--r--src/login/logind-seat.h2
-rw-r--r--src/login/logind-session-dbus.c2
-rw-r--r--src/login/logind-session-dbus.h2
-rw-r--r--src/login/logind-session-device.c2
-rw-r--r--src/login/logind-session-device.h2
-rw-r--r--src/login/logind-session.c2
-rw-r--r--src/login/logind-session.h2
-rw-r--r--src/login/logind-user-dbus.c2
-rw-r--r--src/login/logind-user-dbus.h2
-rw-r--r--src/login/logind-user.c2
-rw-r--r--src/login/logind-user.h2
-rw-r--r--src/login/logind-utmp.c2
-rw-r--r--src/login/logind.c2
-rw-r--r--src/login/logind.h2
-rw-r--r--src/login/meson.build8
-rw-r--r--src/login/org.freedesktop.login1.conf2
-rw-r--r--src/login/org.freedesktop.login1.policy2
-rw-r--r--src/login/org.freedesktop.login1.service2
-rw-r--r--src/login/pam_systemd.c2
-rw-r--r--src/login/pam_systemd.sym2
-rw-r--r--src/login/sysfs-show.c2
-rw-r--r--src/login/sysfs-show.h2
-rw-r--r--src/login/test-inhibit.c2
-rw-r--r--src/login/test-login-shared.c2
-rw-r--r--src/login/test-login-tables.c2
-rw-r--r--src/login/user-runtime-dir.c2
-rw-r--r--src/machine-id-setup/machine-id-setup-main.c2
-rw-r--r--src/machine/image-dbus.c2
-rw-r--r--src/machine/image-dbus.h2
-rw-r--r--src/machine/machine-dbus.c2
-rw-r--r--src/machine/machine-dbus.h2
-rw-r--r--src/machine/machine.c2
-rw-r--r--src/machine/machine.h2
-rw-r--r--src/machine/machinectl.c2
-rw-r--r--src/machine/machined-core.c2
-rw-r--r--src/machine/machined-dbus.c2
-rw-r--r--src/machine/machined-varlink.c2
-rw-r--r--src/machine/machined-varlink.h2
-rw-r--r--src/machine/machined.c2
-rw-r--r--src/machine/machined.h2
-rw-r--r--src/machine/meson.build2
-rw-r--r--src/machine/operation.c2
-rw-r--r--src/machine/operation.h2
-rw-r--r--src/machine/org.freedesktop.machine1.policy2
-rw-r--r--src/machine/org.freedesktop.machine1.service2
-rw-r--r--src/machine/test-machine-tables.c2
-rw-r--r--src/modules-load/modules-load.c2
-rw-r--r--src/mount/mount-tool.c2
-rw-r--r--src/network/fuzz-netdev-parser.c2
-rw-r--r--src/network/fuzz-network-parser.c2
-rw-r--r--src/network/generator/main.c2
-rw-r--r--src/network/generator/network-generator.c2
-rw-r--r--src/network/generator/network-generator.h2
-rw-r--r--src/network/generator/test-network-generator.c2
-rw-r--r--src/network/meson.build8
-rw-r--r--src/network/netdev/bareudp.c2
-rw-r--r--src/network/netdev/bareudp.h2
-rw-r--r--src/network/netdev/bond.c4
-rw-r--r--src/network/netdev/bond.h2
-rw-r--r--src/network/netdev/bridge.c2
-rw-r--r--src/network/netdev/bridge.h2
-rw-r--r--src/network/netdev/dummy.c2
-rw-r--r--src/network/netdev/dummy.h2
-rw-r--r--src/network/netdev/fou-tunnel.c2
-rw-r--r--src/network/netdev/fou-tunnel.h2
-rw-r--r--src/network/netdev/geneve.c2
-rw-r--r--src/network/netdev/geneve.h2
-rw-r--r--src/network/netdev/ifb.c2
-rw-r--r--src/network/netdev/ifb.h2
-rw-r--r--src/network/netdev/ipvlan.c2
-rw-r--r--src/network/netdev/ipvlan.h2
-rw-r--r--src/network/netdev/l2tp-tunnel.c2
-rw-r--r--src/network/netdev/l2tp-tunnel.h2
-rw-r--r--src/network/netdev/macsec.c4
-rw-r--r--src/network/netdev/macsec.h2
-rw-r--r--src/network/netdev/macvlan.c2
-rw-r--r--src/network/netdev/macvlan.h2
-rw-r--r--src/network/netdev/netdev.c4
-rw-r--r--src/network/netdev/netdev.h2
-rw-r--r--src/network/netdev/netdevsim.c2
-rw-r--r--src/network/netdev/netdevsim.h2
-rw-r--r--src/network/netdev/nlmon.c2
-rw-r--r--src/network/netdev/nlmon.h2
-rw-r--r--src/network/netdev/tunnel.c2
-rw-r--r--src/network/netdev/tunnel.h2
-rw-r--r--src/network/netdev/tuntap.c2
-rw-r--r--src/network/netdev/tuntap.h2
-rw-r--r--src/network/netdev/vcan.c2
-rw-r--r--src/network/netdev/vcan.h2
-rw-r--r--src/network/netdev/veth.c2
-rw-r--r--src/network/netdev/veth.h2
-rw-r--r--src/network/netdev/vlan.c2
-rw-r--r--src/network/netdev/vlan.h2
-rw-r--r--src/network/netdev/vrf.c2
-rw-r--r--src/network/netdev/vrf.h2
-rw-r--r--src/network/netdev/vxcan.c2
-rw-r--r--src/network/netdev/vxcan.h2
-rw-r--r--src/network/netdev/vxlan.c2
-rw-r--r--src/network/netdev/vxlan.h2
-rw-r--r--src/network/netdev/wireguard.c4
-rw-r--r--src/network/netdev/wireguard.h2
-rw-r--r--src/network/netdev/xfrm.c2
-rw-r--r--src/network/netdev/xfrm.h2
-rw-r--r--src/network/networkctl.c17
-rw-r--r--src/network/networkd-address-label.c2
-rw-r--r--src/network/networkd-address-label.h2
-rw-r--r--src/network/networkd-address-pool.c2
-rw-r--r--src/network/networkd-address-pool.h2
-rw-r--r--src/network/networkd-address.c27
-rw-r--r--src/network/networkd-address.h2
-rw-r--r--src/network/networkd-brvlan.c2
-rw-r--r--src/network/networkd-brvlan.h2
-rw-r--r--src/network/networkd-can.c2
-rw-r--r--src/network/networkd-can.h2
-rw-r--r--src/network/networkd-conf.c2
-rw-r--r--src/network/networkd-conf.h2
-rw-r--r--src/network/networkd-dhcp-common.c9
-rw-r--r--src/network/networkd-dhcp-common.h2
-rw-r--r--src/network/networkd-dhcp-server-bus.c2
-rw-r--r--src/network/networkd-dhcp-server-bus.h2
-rw-r--r--src/network/networkd-dhcp-server.c2
-rw-r--r--src/network/networkd-dhcp-server.h2
-rw-r--r--src/network/networkd-dhcp4.c33
-rw-r--r--src/network/networkd-dhcp4.h2
-rw-r--r--src/network/networkd-dhcp6.c4
-rw-r--r--src/network/networkd-dhcp6.h2
-rw-r--r--src/network/networkd-fdb.c2
-rw-r--r--src/network/networkd-fdb.h2
-rw-r--r--src/network/networkd-ipv4ll.c6
-rw-r--r--src/network/networkd-ipv4ll.h2
-rw-r--r--src/network/networkd-ipv6-proxy-ndp.c2
-rw-r--r--src/network/networkd-ipv6-proxy-ndp.h2
-rw-r--r--src/network/networkd-link-bus.c2
-rw-r--r--src/network/networkd-link-bus.h2
-rw-r--r--src/network/networkd-link.c34
-rw-r--r--src/network/networkd-link.h6
-rw-r--r--src/network/networkd-lldp-rx.c4
-rw-r--r--src/network/networkd-lldp-rx.h2
-rw-r--r--src/network/networkd-lldp-tx.c4
-rw-r--r--src/network/networkd-lldp-tx.h2
-rw-r--r--src/network/networkd-manager-bus.c2
-rw-r--r--src/network/networkd-manager-bus.h2
-rw-r--r--src/network/networkd-manager.c5
-rw-r--r--src/network/networkd-manager.h2
-rw-r--r--src/network/networkd-mdb.c2
-rw-r--r--src/network/networkd-mdb.h2
-rw-r--r--src/network/networkd-ndisc.c23
-rw-r--r--src/network/networkd-ndisc.h2
-rw-r--r--src/network/networkd-neighbor.c2
-rw-r--r--src/network/networkd-neighbor.h2
-rw-r--r--src/network/networkd-network-bus.c2
-rw-r--r--src/network/networkd-network-bus.h2
-rw-r--r--src/network/networkd-network.c5
-rw-r--r--src/network/networkd-network.h2
-rw-r--r--src/network/networkd-nexthop.c2
-rw-r--r--src/network/networkd-nexthop.h2
-rw-r--r--src/network/networkd-radv.c25
-rw-r--r--src/network/networkd-radv.h2
-rw-r--r--src/network/networkd-route.c2
-rw-r--r--src/network/networkd-route.h2
-rw-r--r--src/network/networkd-routing-policy-rule.c2
-rw-r--r--src/network/networkd-routing-policy-rule.h2
-rw-r--r--src/network/networkd-speed-meter.c2
-rw-r--r--src/network/networkd-speed-meter.h2
-rw-r--r--src/network/networkd-sriov.c2
-rw-r--r--src/network/networkd-sriov.h2
-rw-r--r--src/network/networkd-sysctl.c2
-rw-r--r--src/network/networkd-sysctl.h2
-rw-r--r--src/network/networkd-util.c2
-rw-r--r--src/network/networkd-util.h2
-rw-r--r--src/network/networkd-wifi.c2
-rw-r--r--src/network/networkd-wifi.h2
-rw-r--r--src/network/networkd.c2
-rw-r--r--src/network/org.freedesktop.network1.policy2
-rw-r--r--src/network/org.freedesktop.network1.service2
-rw-r--r--src/network/tc/cake.c2
-rw-r--r--src/network/tc/cake.h2
-rw-r--r--src/network/tc/codel.c2
-rw-r--r--src/network/tc/codel.h2
-rw-r--r--src/network/tc/drr.c2
-rw-r--r--src/network/tc/drr.h2
-rw-r--r--src/network/tc/ets.c2
-rw-r--r--src/network/tc/ets.h2
-rw-r--r--src/network/tc/fifo.c2
-rw-r--r--src/network/tc/fifo.h2
-rw-r--r--src/network/tc/fq-codel.c2
-rw-r--r--src/network/tc/fq-codel.h2
-rw-r--r--src/network/tc/fq-pie.c2
-rw-r--r--src/network/tc/fq-pie.h2
-rw-r--r--src/network/tc/fq.c2
-rw-r--r--src/network/tc/fq.h2
-rw-r--r--src/network/tc/gred.c2
-rw-r--r--src/network/tc/gred.h2
-rw-r--r--src/network/tc/hhf.c2
-rw-r--r--src/network/tc/hhf.h2
-rw-r--r--src/network/tc/htb.c2
-rw-r--r--src/network/tc/htb.h2
-rw-r--r--src/network/tc/netem.c2
-rw-r--r--src/network/tc/netem.h2
-rw-r--r--src/network/tc/pie.c2
-rw-r--r--src/network/tc/pie.h2
-rw-r--r--src/network/tc/qdisc.c2
-rw-r--r--src/network/tc/qdisc.h2
-rw-r--r--src/network/tc/qfq.c2
-rw-r--r--src/network/tc/qfq.h2
-rw-r--r--src/network/tc/sfb.c2
-rw-r--r--src/network/tc/sfb.h2
-rw-r--r--src/network/tc/sfq.c2
-rw-r--r--src/network/tc/sfq.h2
-rw-r--r--src/network/tc/tbf.c2
-rw-r--r--src/network/tc/tbf.h2
-rw-r--r--src/network/tc/tc-util.c2
-rw-r--r--src/network/tc/tc-util.h2
-rw-r--r--src/network/tc/tc.c2
-rw-r--r--src/network/tc/tc.h2
-rw-r--r--src/network/tc/tclass.c2
-rw-r--r--src/network/tc/tclass.h2
-rw-r--r--src/network/tc/teql.c2
-rw-r--r--src/network/tc/teql.h2
-rw-r--r--src/network/test-network-tables.c2
-rw-r--r--src/network/test-network.c2
-rw-r--r--src/network/test-networkd-conf.c2
-rw-r--r--src/network/test-routing-policy-rule.c2
-rw-r--r--src/network/wait-online/link.c2
-rw-r--r--src/network/wait-online/link.h2
-rw-r--r--src/network/wait-online/manager.c2
-rw-r--r--src/network/wait-online/manager.h2
-rw-r--r--src/network/wait-online/wait-online.c2
-rw-r--r--src/notify/notify.c2
-rw-r--r--src/nspawn/meson.build2
-rw-r--r--src/nspawn/nspawn-cgroup.c2
-rw-r--r--src/nspawn/nspawn-cgroup.h2
-rw-r--r--src/nspawn/nspawn-creds.c2
-rw-r--r--src/nspawn/nspawn-creds.h2
-rw-r--r--src/nspawn/nspawn-def.h2
-rw-r--r--src/nspawn/nspawn-expose-ports.c2
-rw-r--r--src/nspawn/nspawn-expose-ports.h2
-rw-r--r--src/nspawn/nspawn-mount.c2
-rw-r--r--src/nspawn/nspawn-mount.h2
-rw-r--r--src/nspawn/nspawn-network.c2
-rw-r--r--src/nspawn/nspawn-network.h2
-rw-r--r--src/nspawn/nspawn-oci.c2
-rw-r--r--src/nspawn/nspawn-oci.h2
-rw-r--r--src/nspawn/nspawn-patch-uid.c2
-rw-r--r--src/nspawn/nspawn-patch-uid.h2
-rw-r--r--src/nspawn/nspawn-register.c2
-rw-r--r--src/nspawn/nspawn-register.h2
-rw-r--r--src/nspawn/nspawn-seccomp.c4
-rw-r--r--src/nspawn/nspawn-seccomp.h2
-rw-r--r--src/nspawn/nspawn-settings.c2
-rw-r--r--src/nspawn/nspawn-settings.h2
-rw-r--r--src/nspawn/nspawn-setuid.c2
-rw-r--r--src/nspawn/nspawn-setuid.h2
-rw-r--r--src/nspawn/nspawn-stub-pid1.c2
-rw-r--r--src/nspawn/nspawn-stub-pid1.h2
-rw-r--r--src/nspawn/nspawn.c4
-rw-r--r--src/nspawn/test-nspawn-tables.c2
-rw-r--r--src/nspawn/test-patch-uid.c2
-rw-r--r--src/nss-myhostname/nss-myhostname.c2
-rw-r--r--src/nss-myhostname/nss-myhostname.sym2
-rw-r--r--src/nss-mymachines/nss-mymachines.c2
-rw-r--r--src/nss-mymachines/nss-mymachines.sym2
-rw-r--r--src/nss-resolve/nss-resolve.c2
-rw-r--r--src/nss-resolve/nss-resolve.sym2
-rw-r--r--src/nss-systemd/nss-systemd.c2
-rw-r--r--src/nss-systemd/nss-systemd.h2
-rw-r--r--src/nss-systemd/nss-systemd.sym2
-rw-r--r--src/nss-systemd/userdb-glue.c2
-rw-r--r--src/nss-systemd/userdb-glue.h2
-rw-r--r--src/oom/meson.build8
-rw-r--r--src/oom/oomctl.c2
-rw-r--r--src/oom/oomd-manager-bus.c2
-rw-r--r--src/oom/oomd-manager-bus.h2
-rw-r--r--src/oom/oomd-manager.c2
-rw-r--r--src/oom/oomd-manager.h2
-rw-r--r--src/oom/oomd-util.c2
-rw-r--r--src/oom/oomd-util.h2
-rw-r--r--src/oom/oomd.c2
-rw-r--r--src/oom/org.freedesktop.oom1.conf2
-rw-r--r--src/oom/org.freedesktop.oom1.service2
-rw-r--r--src/oom/test-oomd-util.c6
-rw-r--r--src/partition/growfs.c2
-rw-r--r--src/partition/makefs.c2
-rw-r--r--src/partition/meson.build2
-rw-r--r--src/partition/repart.c15
-rw-r--r--src/path/path.c2
-rw-r--r--src/portable/meson.build2
-rw-r--r--src/portable/org.freedesktop.portable1.conf2
-rw-r--r--src/portable/org.freedesktop.portable1.policy2
-rw-r--r--src/portable/org.freedesktop.portable1.service2
-rw-r--r--src/portable/portable.c2
-rw-r--r--src/portable/portable.h2
-rw-r--r--src/portable/portablectl.c2
-rw-r--r--src/portable/portabled-bus.c2
-rw-r--r--src/portable/portabled-bus.h2
-rw-r--r--src/portable/portabled-image-bus.c2
-rw-r--r--src/portable/portabled-image-bus.h2
-rw-r--r--src/portable/portabled-image.c2
-rw-r--r--src/portable/portabled-image.h2
-rw-r--r--src/portable/portabled-operation.c2
-rw-r--r--src/portable/portabled-operation.h2
-rw-r--r--src/portable/portabled.c2
-rw-r--r--src/portable/portabled.h2
-rw-r--r--src/pstore/meson.build4
-rw-r--r--src/pstore/pstore.c4
-rw-r--r--src/quotacheck/quotacheck.c2
-rw-r--r--src/random-seed/random-seed.c2
-rw-r--r--src/rc-local-generator/rc-local-generator.c2
-rw-r--r--src/remount-fs/remount-fs.c2
-rw-r--r--src/reply-password/reply-password.c2
-rw-r--r--src/resolve/dns-type.c2
-rw-r--r--src/resolve/dns-type.h2
-rw-r--r--src/resolve/meson.build8
-rw-r--r--src/resolve/org.freedesktop.resolve1.policy2
-rw-r--r--src/resolve/org.freedesktop.resolve1.service2
-rw-r--r--src/resolve/resolvconf-compat.c2
-rw-r--r--src/resolve/resolvconf-compat.h2
-rw-r--r--src/resolve/resolvectl.c15
-rw-r--r--src/resolve/resolvectl.h2
-rw-r--r--src/resolve/resolved-bus.c11
-rw-r--r--src/resolve/resolved-bus.h2
-rw-r--r--src/resolve/resolved-conf.c32
-rw-r--r--src/resolve/resolved-conf.h2
-rw-r--r--src/resolve/resolved-def.h42
-rw-r--r--src/resolve/resolved-dns-answer.c22
-rw-r--r--src/resolve/resolved-dns-answer.h2
-rw-r--r--src/resolve/resolved-dns-cache.c47
-rw-r--r--src/resolve/resolved-dns-cache.h2
-rw-r--r--src/resolve/resolved-dns-dnssec.c6
-rw-r--r--src/resolve/resolved-dns-dnssec.h2
-rw-r--r--src/resolve/resolved-dns-packet.c18
-rw-r--r--src/resolve/resolved-dns-packet.h10
-rw-r--r--src/resolve/resolved-dns-query.c31
-rw-r--r--src/resolve/resolved-dns-query.h2
-rw-r--r--src/resolve/resolved-dns-question.c5
-rw-r--r--src/resolve/resolved-dns-question.h2
-rw-r--r--src/resolve/resolved-dns-rr.c29
-rw-r--r--src/resolve/resolved-dns-rr.h2
-rw-r--r--src/resolve/resolved-dns-scope.c11
-rw-r--r--src/resolve/resolved-dns-scope.h2
-rw-r--r--src/resolve/resolved-dns-search-domain.c14
-rw-r--r--src/resolve/resolved-dns-search-domain.h2
-rw-r--r--src/resolve/resolved-dns-server.c2
-rw-r--r--src/resolve/resolved-dns-server.h2
-rw-r--r--src/resolve/resolved-dns-stream.c2
-rw-r--r--src/resolve/resolved-dns-stream.h2
-rw-r--r--src/resolve/resolved-dns-stub.c23
-rw-r--r--src/resolve/resolved-dns-stub.h2
-rw-r--r--src/resolve/resolved-dns-synthesize.c2
-rw-r--r--src/resolve/resolved-dns-synthesize.h2
-rw-r--r--src/resolve/resolved-dns-transaction.c119
-rw-r--r--src/resolve/resolved-dns-transaction.h3
-rw-r--r--src/resolve/resolved-dns-trust-anchor.c2
-rw-r--r--src/resolve/resolved-dns-trust-anchor.h2
-rw-r--r--src/resolve/resolved-dns-zone.c12
-rw-r--r--src/resolve/resolved-dns-zone.h2
-rw-r--r--src/resolve/resolved-dnssd-bus.c2
-rw-r--r--src/resolve/resolved-dnssd-bus.h2
-rw-r--r--src/resolve/resolved-dnssd.c28
-rw-r--r--src/resolve/resolved-dnssd.h4
-rw-r--r--src/resolve/resolved-dnstls-gnutls.c2
-rw-r--r--src/resolve/resolved-dnstls-gnutls.h2
-rw-r--r--src/resolve/resolved-dnstls-openssl.c2
-rw-r--r--src/resolve/resolved-dnstls-openssl.h2
-rw-r--r--src/resolve/resolved-dnstls.h2
-rw-r--r--src/resolve/resolved-etc-hosts.c8
-rw-r--r--src/resolve/resolved-etc-hosts.h2
-rw-r--r--src/resolve/resolved-gperf.gperf1
-rw-r--r--src/resolve/resolved-link-bus.c2
-rw-r--r--src/resolve/resolved-link-bus.h2
-rw-r--r--src/resolve/resolved-link.c12
-rw-r--r--src/resolve/resolved-link.h2
-rw-r--r--src/resolve/resolved-llmnr.c2
-rw-r--r--src/resolve/resolved-llmnr.h2
-rw-r--r--src/resolve/resolved-manager.c21
-rw-r--r--src/resolve/resolved-manager.h5
-rw-r--r--src/resolve/resolved-mdns.c2
-rw-r--r--src/resolve/resolved-mdns.h2
-rw-r--r--src/resolve/resolved-resolv-conf.c4
-rw-r--r--src/resolve/resolved-resolv-conf.h2
-rw-r--r--src/resolve/resolved-varlink.c2
-rw-r--r--src/resolve/resolved-varlink.h2
-rw-r--r--src/resolve/resolved.c2
-rw-r--r--src/resolve/resolved.conf.in1
-rw-r--r--src/resolve/test-dns-packet.c2
-rw-r--r--src/resolve/test-dnssec-complex.c2
-rw-r--r--src/resolve/test-dnssec.c2
-rw-r--r--src/resolve/test-resolve-tables.c2
-rw-r--r--src/resolve/test-resolved-etc-hosts.c2
-rw-r--r--src/resolve/test-resolved-packet.c2
-rw-r--r--src/rfkill/rfkill.c2
-rw-r--r--src/run-generator/run-generator.c2
-rw-r--r--src/run/run.c2
-rw-r--r--src/shared/acl-util.c2
-rw-r--r--src/shared/acl-util.h2
-rw-r--r--src/shared/acpi-fpdt.c2
-rw-r--r--src/shared/acpi-fpdt.h2
-rw-r--r--src/shared/apparmor-util.c2
-rw-r--r--src/shared/apparmor-util.h2
-rw-r--r--src/shared/ask-password-api.c5
-rw-r--r--src/shared/ask-password-api.h2
-rw-r--r--src/shared/barrier.c2
-rw-r--r--src/shared/barrier.h2
-rw-r--r--src/shared/base-filesystem.c2
-rw-r--r--src/shared/base-filesystem.h2
-rw-r--r--src/shared/binfmt-util.c2
-rw-r--r--src/shared/binfmt-util.h2
-rw-r--r--src/shared/bitmap.c2
-rw-r--r--src/shared/bitmap.h2
-rw-r--r--src/shared/blkid-util.h2
-rw-r--r--src/shared/bond-util.c2
-rw-r--r--src/shared/bond-util.h2
-rw-r--r--src/shared/boot-timestamps.c2
-rw-r--r--src/shared/boot-timestamps.h2
-rw-r--r--src/shared/bootspec.c2
-rw-r--r--src/shared/bootspec.h2
-rw-r--r--src/shared/bpf-program.c5
-rw-r--r--src/shared/bpf-program.h2
-rw-r--r--src/shared/bridge-util.c2
-rw-r--r--src/shared/bridge-util.h2
-rw-r--r--src/shared/bus-get-properties.c2
-rw-r--r--src/shared/bus-get-properties.h2
-rw-r--r--src/shared/bus-locator.c2
-rw-r--r--src/shared/bus-locator.h2
-rw-r--r--src/shared/bus-log-control-api.c2
-rw-r--r--src/shared/bus-log-control-api.h2
-rw-r--r--src/shared/bus-map-properties.c2
-rw-r--r--src/shared/bus-map-properties.h2
-rw-r--r--src/shared/bus-message-util.c2
-rw-r--r--src/shared/bus-message-util.h2
-rw-r--r--src/shared/bus-object.c2
-rw-r--r--src/shared/bus-object.h2
-rw-r--r--src/shared/bus-polkit.c2
-rw-r--r--src/shared/bus-polkit.h2
-rw-r--r--src/shared/bus-print-properties.c2
-rw-r--r--src/shared/bus-print-properties.h2
-rw-r--r--src/shared/bus-unit-procs.c2
-rw-r--r--src/shared/bus-unit-procs.h2
-rw-r--r--src/shared/bus-unit-util.c5
-rw-r--r--src/shared/bus-unit-util.h2
-rw-r--r--src/shared/bus-util.c2
-rw-r--r--src/shared/bus-util.h2
-rw-r--r--src/shared/bus-wait-for-jobs.c2
-rw-r--r--src/shared/bus-wait-for-jobs.h2
-rw-r--r--src/shared/bus-wait-for-units.c2
-rw-r--r--src/shared/bus-wait-for-units.h2
-rw-r--r--src/shared/calendarspec.c2
-rw-r--r--src/shared/calendarspec.h2
-rw-r--r--src/shared/cgroup-setup.c2
-rw-r--r--src/shared/cgroup-setup.h2
-rw-r--r--src/shared/cgroup-show.c2
-rw-r--r--src/shared/cgroup-show.h2
-rw-r--r--src/shared/chown-recursive.c2
-rw-r--r--src/shared/chown-recursive.h2
-rw-r--r--src/shared/clean-ipc.c2
-rw-r--r--src/shared/clean-ipc.h2
-rw-r--r--src/shared/clock-util.c2
-rw-r--r--src/shared/clock-util.h2
-rw-r--r--src/shared/condition.c2
-rw-r--r--src/shared/condition.h2
-rw-r--r--src/shared/conf-parser.c2
-rw-r--r--src/shared/conf-parser.h4
-rw-r--r--src/shared/coredump-util.c2
-rw-r--r--src/shared/coredump-util.h2
-rw-r--r--src/shared/cpu-set-util.c2
-rw-r--r--src/shared/cpu-set-util.h2
-rw-r--r--src/shared/cryptsetup-util.c2
-rw-r--r--src/shared/cryptsetup-util.h2
-rw-r--r--src/shared/daemon-util.h2
-rw-r--r--src/shared/dev-setup.c2
-rw-r--r--src/shared/dev-setup.h2
-rw-r--r--src/shared/dissect-image.c8
-rw-r--r--src/shared/dissect-image.h2
-rw-r--r--src/shared/dm-util.c2
-rw-r--r--src/shared/dm-util.h2
-rw-r--r--src/shared/dns-domain.c2
-rw-r--r--src/shared/dns-domain.h2
-rw-r--r--src/shared/dropin.c2
-rw-r--r--src/shared/dropin.h2
-rw-r--r--src/shared/efi-loader.c2
-rw-r--r--src/shared/efi-loader.h2
-rw-r--r--src/shared/enable-mempool.c2
-rw-r--r--src/shared/env-file-label.c2
-rw-r--r--src/shared/env-file-label.h2
-rw-r--r--src/shared/ethtool-util.c105
-rw-r--r--src/shared/ethtool-util.h2
-rw-r--r--src/shared/exec-util.c2
-rw-r--r--src/shared/exec-util.h2
-rw-r--r--src/shared/exit-status.c2
-rw-r--r--src/shared/exit-status.h2
-rw-r--r--src/shared/fdset.c2
-rw-r--r--src/shared/fdset.h2
-rw-r--r--src/shared/fileio-label.c2
-rw-r--r--src/shared/fileio-label.h2
-rw-r--r--src/shared/firewall-util.c2
-rw-r--r--src/shared/firewall-util.h2
-rw-r--r--src/shared/format-table.c2
-rw-r--r--src/shared/format-table.h2
-rw-r--r--src/shared/fsck-util.h2
-rw-r--r--src/shared/fstab-util.c2
-rw-r--r--src/shared/fstab-util.h2
-rw-r--r--src/shared/generator.c2
-rw-r--r--src/shared/generator.h2
-rw-r--r--src/shared/geneve-util.c2
-rw-r--r--src/shared/geneve-util.h2
-rw-r--r--src/shared/gpt.c10
-rw-r--r--src/shared/gpt.h24
-rw-r--r--src/shared/group-record.c2
-rw-r--r--src/shared/group-record.h2
-rw-r--r--src/shared/id128-print.c2
-rw-r--r--src/shared/id128-print.h2
-rw-r--r--src/shared/idn-util.c2
-rw-r--r--src/shared/idn-util.h2
-rw-r--r--src/shared/ima-util.c2
-rw-r--r--src/shared/ima-util.h2
-rw-r--r--src/shared/import-util.c2
-rw-r--r--src/shared/import-util.h2
-rw-r--r--src/shared/initreq.h1
-rw-r--r--src/shared/install-printf.c39
-rw-r--r--src/shared/install-printf.h2
-rw-r--r--src/shared/install.c2
-rw-r--r--src/shared/install.h2
-rw-r--r--src/shared/ip-protocol-list.c2
-rw-r--r--src/shared/ip-protocol-list.h2
-rw-r--r--src/shared/ipvlan-util.c2
-rw-r--r--src/shared/ipvlan-util.h2
-rw-r--r--src/shared/journal-importer.c2
-rw-r--r--src/shared/journal-importer.h2
-rw-r--r--src/shared/journal-util.c2
-rw-r--r--src/shared/journal-util.h2
-rw-r--r--src/shared/json-internal.h2
-rw-r--r--src/shared/json.c4
-rw-r--r--src/shared/json.h2
-rw-r--r--src/shared/libcrypt-util.c2
-rw-r--r--src/shared/libcrypt-util.h2
-rw-r--r--src/shared/libmount-util.h2
-rw-r--r--src/shared/linux/nl80211.h2
-rw-r--r--src/shared/local-addresses.c2
-rw-r--r--src/shared/local-addresses.h2
-rw-r--r--src/shared/lockfile-util.c2
-rw-r--r--src/shared/lockfile-util.h2
-rw-r--r--src/shared/log-link.h2
-rw-r--r--src/shared/logs-show.c24
-rw-r--r--src/shared/logs-show.h2
-rw-r--r--src/shared/loop-util.c4
-rw-r--r--src/shared/loop-util.h2
-rw-r--r--src/shared/machine-image.c2
-rw-r--r--src/shared/machine-image.h2
-rw-r--r--src/shared/machine-pool.c2
-rw-r--r--src/shared/machine-pool.h2
-rw-r--r--src/shared/macvlan-util.c2
-rw-r--r--src/shared/macvlan-util.h2
-rw-r--r--src/shared/main-func.h2
-rw-r--r--src/shared/meson.build2
-rw-r--r--src/shared/mkfs-util.c2
-rw-r--r--src/shared/mkfs-util.h2
-rw-r--r--src/shared/module-util.c2
-rw-r--r--src/shared/module-util.h2
-rw-r--r--src/shared/mount-util.c2
-rw-r--r--src/shared/mount-util.h2
-rw-r--r--src/shared/netif-naming-scheme.c2
-rw-r--r--src/shared/netif-naming-scheme.h2
-rw-r--r--src/shared/nscd-flush.c2
-rw-r--r--src/shared/nscd-flush.h2
-rw-r--r--src/shared/nsflags.c2
-rw-r--r--src/shared/nsflags.h2
-rw-r--r--src/shared/numa-util.c2
-rw-r--r--src/shared/numa-util.h2
-rw-r--r--src/shared/offline-passwd.c2
-rw-r--r--src/shared/offline-passwd.h2
-rw-r--r--src/shared/openssl-util.h2
-rw-r--r--src/shared/os-util.c2
-rw-r--r--src/shared/os-util.h2
-rw-r--r--src/shared/output-mode.c2
-rw-r--r--src/shared/output-mode.h2
-rw-r--r--src/shared/pager.c9
-rw-r--r--src/shared/pager.h2
-rw-r--r--src/shared/pam-util.c2
-rw-r--r--src/shared/pam-util.h2
-rw-r--r--src/shared/pe-header.h2
-rw-r--r--src/shared/pkcs11-util.c2
-rw-r--r--src/shared/pkcs11-util.h2
-rw-r--r--src/shared/pretty-print.c2
-rw-r--r--src/shared/pretty-print.h2
-rw-r--r--src/shared/psi-util.c2
-rw-r--r--src/shared/psi-util.h2
-rw-r--r--src/shared/ptyfwd.c2
-rw-r--r--src/shared/ptyfwd.h2
-rw-r--r--src/shared/pwquality-util.c2
-rw-r--r--src/shared/pwquality-util.h2
-rw-r--r--src/shared/qrcode-util.c2
-rw-r--r--src/shared/qrcode-util.h2
-rw-r--r--src/shared/reboot-util.c2
-rw-r--r--src/shared/reboot-util.h2
-rw-r--r--src/shared/resize-fs.c2
-rw-r--r--src/shared/resize-fs.h2
-rw-r--r--src/shared/resolve-util.c2
-rw-r--r--src/shared/resolve-util.h2
-rw-r--r--src/shared/seccomp-util.c36
-rw-r--r--src/shared/seccomp-util.h2
-rw-r--r--src/shared/securebits-util.c2
-rw-r--r--src/shared/securebits-util.h2
-rw-r--r--src/shared/serialize.c2
-rw-r--r--src/shared/serialize.h2
-rw-r--r--src/shared/service-util.c2
-rw-r--r--src/shared/service-util.h2
-rw-r--r--src/shared/sleep-config.c2
-rw-r--r--src/shared/sleep-config.h2
-rw-r--r--src/shared/socket-netlink.c2
-rw-r--r--src/shared/socket-netlink.h2
-rw-r--r--src/shared/spawn-ask-password-agent.c2
-rw-r--r--src/shared/spawn-ask-password-agent.h2
-rw-r--r--src/shared/spawn-polkit-agent.c2
-rw-r--r--src/shared/spawn-polkit-agent.h2
-rw-r--r--src/shared/specifier.c2
-rw-r--r--src/shared/specifier.h50
-rw-r--r--src/shared/switch-root.c2
-rw-r--r--src/shared/switch-root.h2
-rw-r--r--src/shared/sysctl-util.c2
-rw-r--r--src/shared/sysctl-util.h2
-rw-r--r--src/shared/test-tables.h2
-rw-r--r--src/shared/tests.c2
-rw-r--r--src/shared/tests.h2
-rw-r--r--src/shared/tmpfile-util-label.c2
-rw-r--r--src/shared/tmpfile-util-label.h2
-rw-r--r--src/shared/tomoyo-util.c2
-rw-r--r--src/shared/tomoyo-util.h2
-rw-r--r--src/shared/udev-util.c51
-rw-r--r--src/shared/udev-util.h4
-rw-r--r--src/shared/uid-range.c2
-rw-r--r--src/shared/uid-range.h2
-rw-r--r--src/shared/unit-file.c2
-rw-r--r--src/shared/unit-file.h2
-rw-r--r--src/shared/user-record-nss.c2
-rw-r--r--src/shared/user-record-nss.h2
-rw-r--r--src/shared/user-record-show.c2
-rw-r--r--src/shared/user-record-show.h2
-rw-r--r--src/shared/user-record.c4
-rw-r--r--src/shared/user-record.h2
-rw-r--r--src/shared/userdb.c2
-rw-r--r--src/shared/userdb.h2
-rw-r--r--src/shared/utmp-wtmp.c2
-rw-r--r--src/shared/utmp-wtmp.h2
-rw-r--r--src/shared/varlink.c2
-rw-r--r--src/shared/varlink.h2
-rw-r--r--src/shared/verbs.c2
-rw-r--r--src/shared/verbs.h2
-rw-r--r--src/shared/vlan-util.c2
-rw-r--r--src/shared/vlan-util.h2
-rw-r--r--src/shared/volatile-util.c2
-rw-r--r--src/shared/volatile-util.h2
-rw-r--r--src/shared/watchdog.c64
-rw-r--r--src/shared/watchdog.h2
-rw-r--r--src/shared/web-util.c2
-rw-r--r--src/shared/web-util.h2
-rw-r--r--src/shared/wifi-util.c2
-rw-r--r--src/shared/wifi-util.h2
-rw-r--r--src/shared/xml.c2
-rw-r--r--src/shared/xml.h2
-rw-r--r--src/shutdown/shutdown.c6
-rw-r--r--src/shutdown/umount.c14
-rw-r--r--src/shutdown/umount.h2
-rw-r--r--src/sleep/sleep.c2
-rw-r--r--src/socket-proxy/socket-proxyd.c2
-rw-r--r--src/stdio-bridge/stdio-bridge.c2
-rw-r--r--src/sulogin-shell/sulogin-shell.c2
-rw-r--r--src/sysctl/sysctl.c2
-rw-r--r--src/system-update-generator/system-update-generator.c2
-rw-r--r--src/systemctl/systemctl-add-dependency.c2
-rw-r--r--src/systemctl/systemctl-add-dependency.h2
-rw-r--r--src/systemctl/systemctl-cancel-job.c2
-rw-r--r--src/systemctl/systemctl-cancel-job.h2
-rw-r--r--src/systemctl/systemctl-clean-or-freeze.c2
-rw-r--r--src/systemctl/systemctl-clean-or-freeze.h2
-rw-r--r--src/systemctl/systemctl-compat-halt.c2
-rw-r--r--src/systemctl/systemctl-compat-halt.h2
-rw-r--r--src/systemctl/systemctl-compat-runlevel.c2
-rw-r--r--src/systemctl/systemctl-compat-runlevel.h2
-rw-r--r--src/systemctl/systemctl-compat-shutdown.c2
-rw-r--r--src/systemctl/systemctl-compat-shutdown.h2
-rw-r--r--src/systemctl/systemctl-compat-telinit.c2
-rw-r--r--src/systemctl/systemctl-compat-telinit.h2
-rw-r--r--src/systemctl/systemctl-daemon-reload.c2
-rw-r--r--src/systemctl/systemctl-daemon-reload.h2
-rw-r--r--src/systemctl/systemctl-edit.c2
-rw-r--r--src/systemctl/systemctl-edit.h2
-rw-r--r--src/systemctl/systemctl-enable.c2
-rw-r--r--src/systemctl/systemctl-enable.h2
-rw-r--r--src/systemctl/systemctl-is-active.c2
-rw-r--r--src/systemctl/systemctl-is-active.h2
-rw-r--r--src/systemctl/systemctl-is-enabled.c2
-rw-r--r--src/systemctl/systemctl-is-enabled.h2
-rw-r--r--src/systemctl/systemctl-is-system-running.c2
-rw-r--r--src/systemctl/systemctl-is-system-running.h2
-rw-r--r--src/systemctl/systemctl-kill.c2
-rw-r--r--src/systemctl/systemctl-kill.h2
-rw-r--r--src/systemctl/systemctl-list-dependencies.c2
-rw-r--r--src/systemctl/systemctl-list-dependencies.h2
-rw-r--r--src/systemctl/systemctl-list-jobs.c2
-rw-r--r--src/systemctl/systemctl-list-jobs.h2
-rw-r--r--src/systemctl/systemctl-list-machines.c2
-rw-r--r--src/systemctl/systemctl-list-machines.h2
-rw-r--r--src/systemctl/systemctl-list-unit-files.c2
-rw-r--r--src/systemctl/systemctl-list-unit-files.h2
-rw-r--r--src/systemctl/systemctl-list-units.c11
-rw-r--r--src/systemctl/systemctl-list-units.h2
-rw-r--r--src/systemctl/systemctl-log-setting.c2
-rw-r--r--src/systemctl/systemctl-log-setting.h2
-rw-r--r--src/systemctl/systemctl-logind.c2
-rw-r--r--src/systemctl/systemctl-logind.h2
-rw-r--r--src/systemctl/systemctl-preset-all.c2
-rw-r--r--src/systemctl/systemctl-preset-all.h2
-rw-r--r--src/systemctl/systemctl-reset-failed.c2
-rw-r--r--src/systemctl/systemctl-reset-failed.h2
-rw-r--r--src/systemctl/systemctl-service-watchdogs.c2
-rw-r--r--src/systemctl/systemctl-service-watchdogs.h2
-rw-r--r--src/systemctl/systemctl-set-default.c2
-rw-r--r--src/systemctl/systemctl-set-default.h2
-rw-r--r--src/systemctl/systemctl-set-environment.c2
-rw-r--r--src/systemctl/systemctl-set-environment.h2
-rw-r--r--src/systemctl/systemctl-set-property.c2
-rw-r--r--src/systemctl/systemctl-set-property.h2
-rw-r--r--src/systemctl/systemctl-show.c2
-rw-r--r--src/systemctl/systemctl-show.h2
-rw-r--r--src/systemctl/systemctl-start-special.c2
-rw-r--r--src/systemctl/systemctl-start-special.h2
-rw-r--r--src/systemctl/systemctl-start-unit.c2
-rw-r--r--src/systemctl/systemctl-start-unit.h2
-rw-r--r--src/systemctl/systemctl-switch-root.c2
-rw-r--r--src/systemctl/systemctl-switch-root.h2
-rw-r--r--src/systemctl/systemctl-sysv-compat.c2
-rw-r--r--src/systemctl/systemctl-sysv-compat.h2
-rw-r--r--src/systemctl/systemctl-trivial-method.c2
-rw-r--r--src/systemctl/systemctl-trivial-method.h2
-rw-r--r--src/systemctl/systemctl-util.c2
-rw-r--r--src/systemctl/systemctl-util.h2
-rw-r--r--src/systemctl/systemctl.c2
-rw-r--r--src/systemctl/systemctl.h2
-rw-r--r--src/systemd/_sd-common.h2
-rw-r--r--src/systemd/meson.build14
-rw-r--r--src/systemd/sd-bus-protocol.h2
-rw-r--r--src/systemd/sd-bus-vtable.h2
-rw-r--r--src/systemd/sd-bus.h2
-rw-r--r--src/systemd/sd-daemon.h2
-rw-r--r--src/systemd/sd-device.h2
-rw-r--r--src/systemd/sd-dhcp-client.h3
-rw-r--r--src/systemd/sd-dhcp-lease.h2
-rw-r--r--src/systemd/sd-dhcp-option.h2
-rw-r--r--src/systemd/sd-dhcp-server.h2
-rw-r--r--src/systemd/sd-dhcp6-client.h2
-rw-r--r--src/systemd/sd-dhcp6-lease.h2
-rw-r--r--src/systemd/sd-dhcp6-option.h2
-rw-r--r--src/systemd/sd-event.h2
-rw-r--r--src/systemd/sd-hwdb.h2
-rw-r--r--src/systemd/sd-id128.h2
-rw-r--r--src/systemd/sd-ipv4acd.h2
-rw-r--r--src/systemd/sd-ipv4ll.h2
-rw-r--r--src/systemd/sd-journal.h2
-rw-r--r--src/systemd/sd-lldp.h2
-rw-r--r--src/systemd/sd-login.h2
-rw-r--r--src/systemd/sd-messages.h2
-rw-r--r--src/systemd/sd-ndisc.h2
-rw-r--r--src/systemd/sd-netlink.h2
-rw-r--r--src/systemd/sd-network.h2
-rw-r--r--src/systemd/sd-path.h2
-rw-r--r--src/systemd/sd-radv.h4
-rw-r--r--src/systemd/sd-resolve.h2
-rw-r--r--src/systemd/sd-utf8.h2
-rw-r--r--src/sysusers/sysusers.c16
-rw-r--r--src/sysv-generator/sysv-generator.c2
-rw-r--r--src/test/meson.build9
-rw-r--r--src/test/test-acl-util.c2
-rw-r--r--src/test/test-af-list.c2
-rw-r--r--src/test/test-alloc-util.c2
-rw-r--r--src/test/test-architecture.c2
-rw-r--r--src/test/test-arphrd-list.c2
-rw-r--r--src/test/test-ask-password-api.c2
-rw-r--r--src/test/test-async.c2
-rw-r--r--src/test/test-barrier.c2
-rw-r--r--src/test/test-bitmap.c2
-rw-r--r--src/test/test-boot-timestamps.c2
-rw-r--r--src/test/test-bpf-devices.c2
-rw-r--r--src/test/test-bpf-firewall.c2
-rw-r--r--src/test/test-btrfs.c2
-rw-r--r--src/test/test-bus-util.c2
-rw-r--r--src/test/test-calendarspec.c2
-rw-r--r--src/test/test-cap-list.c64
-rw-r--r--src/test/test-capability.c2
-rw-r--r--src/test/test-cgroup-cpu.c2
-rw-r--r--src/test/test-cgroup-mask.c2
-rw-r--r--src/test/test-cgroup-setup.c2
-rw-r--r--src/test/test-cgroup-unit-default.c2
-rw-r--r--src/test/test-cgroup-util.c2
-rw-r--r--src/test/test-cgroup.c2
-rw-r--r--src/test/test-chase-symlinks.c2
-rw-r--r--src/test/test-chown-rec.c2
-rw-r--r--src/test/test-clock.c2
-rw-r--r--src/test/test-condition.c2
-rw-r--r--src/test/test-conf-files.c2
-rw-r--r--src/test/test-conf-parser.c2
-rw-r--r--src/test/test-copy.c2
-rw-r--r--src/test/test-coredump-util.c2
-rw-r--r--src/test/test-cpu-set-util.c2
-rw-r--r--src/test/test-daemon.c2
-rw-r--r--src/test/test-date.c2
-rw-r--r--src/test/test-dev-setup.c2
-rw-r--r--src/test/test-device-nodes.c2
-rw-r--r--src/test/test-dlopen.c2
-rw-r--r--src/test/test-dns-domain.c2
-rw-r--r--src/test/test-ellipsize.c2
-rw-r--r--src/test/test-emergency-action.c2
-rw-r--r--src/test/test-engine.c2
-rw-r--r--src/test/test-env-file.c2
-rw-r--r--src/test/test-env-util.c2
-rw-r--r--src/test/test-escape.c2
-rw-r--r--src/test/test-exec-util.c7
-rw-r--r--src/test/test-execute.c12
-rw-r--r--src/test/test-exit-status.c2
-rw-r--r--src/test/test-extract-word.c2
-rw-r--r--src/test/test-fd-util.c2
-rw-r--r--src/test/test-fdset.c2
-rw-r--r--src/test/test-fileio.c21
-rw-r--r--src/test/test-firewall-util.c2
-rw-r--r--src/test/test-format-table.c2
-rw-r--r--src/test/test-format-util.c2
-rw-r--r--src/test/test-fs-util.c2
-rw-r--r--src/test/test-fstab-util.c2
-rw-r--r--src/test/test-gcrypt-util.c2
-rw-r--r--src/test/test-glob-util.c2
-rw-r--r--src/test/test-hash.c2
-rw-r--r--src/test/test-hashmap-plain.c2
-rw-r--r--src/test/test-hashmap.c2
-rw-r--r--src/test/test-hexdecoct.c2
-rw-r--r--src/test/test-hostname-util.c2
-rw-r--r--src/test/test-hostname.c2
-rw-r--r--src/test/test-id128.c2
-rw-r--r--src/test/test-in-addr-util.c2
-rw-r--r--src/test/test-install-root.c2
-rw-r--r--src/test/test-install.c2
-rw-r--r--src/test/test-io-util.c2
-rw-r--r--src/test/test-ip-protocol-list.c2
-rw-r--r--src/test/test-ipcrm.c2
-rw-r--r--src/test/test-job-type.c2
-rw-r--r--src/test/test-journal-importer.c2
-rw-r--r--src/test/test-json.c2
-rw-r--r--src/test/test-libcrypt-util.c2
-rw-r--r--src/test/test-libmount.c2
-rw-r--r--src/test/test-libudev.c2
-rw-r--r--src/test/test-list.c2
-rw-r--r--src/test/test-load-fragment.c2
-rw-r--r--src/test/test-local-addresses.c2
-rw-r--r--src/test/test-locale-util.c2
-rw-r--r--src/test/test-log.c2
-rw-r--r--src/test/test-loop-block.c2
-rw-r--r--src/test/test-loopback.c2
-rw-r--r--src/test/test-mount-util.c2
-rw-r--r--src/test/test-mountpoint-util.c2
-rw-r--r--src/test/test-namespace.c2
-rw-r--r--src/test/test-netlink-manual.c2
-rw-r--r--src/test/test-ns.c2
-rw-r--r--src/test/test-nscd-flush.c2
-rw-r--r--src/test/test-nss.c2
-rw-r--r--src/test/test-offline-passwd.c2
-rw-r--r--src/test/test-ordered-set.c2
-rw-r--r--src/test/test-os-util.c2
-rw-r--r--src/test/test-parse-util.c2
-rw-r--r--src/test/test-path-lookup.c2
-rw-r--r--src/test/test-path-util.c6
-rw-r--r--src/test/test-path.c2
-rw-r--r--src/test/test-pretty-print.c2
-rw-r--r--src/test/test-prioq.c2
-rw-r--r--src/test/test-proc-cmdline.c2
-rw-r--r--src/test/test-process-util.c2
-rw-r--r--src/test/test-procfs-util.c2
-rw-r--r--src/test/test-psi-util.c2
-rw-r--r--src/test/test-qrcode-util.c2
-rw-r--r--src/test/test-random-util.c2
-rw-r--r--src/test/test-ratelimit.c2
-rw-r--r--src/test/test-replace-var.c2
-rw-r--r--src/test/test-rlimit-util.c2
-rw-r--r--src/test/test-rm-rf.c2
-rw-r--r--src/test/test-sched-prio.c2
-rw-r--r--src/test/test-sd-hwdb.c2
-rw-r--r--src/test/test-sd-path.c2
-rw-r--r--src/test/test-seccomp.c49
-rw-r--r--src/test/test-selinux.c2
-rw-r--r--src/test/test-serialize.c2
-rw-r--r--src/test/test-set-disable-mempool.c2
-rw-r--r--src/test/test-set.c2
-rw-r--r--src/test/test-sigbus.c2
-rw-r--r--src/test/test-signal-util.c2
-rw-r--r--src/test/test-siphash24.c2
-rw-r--r--src/test/test-sizeof.c2
-rw-r--r--src/test/test-sleep.c2
-rw-r--r--src/test/test-socket-netlink.c2
-rw-r--r--src/test/test-socket-util.c2
-rw-r--r--src/test/test-specifier.c23
-rw-r--r--src/test/test-stat-util.c2
-rw-r--r--src/test/test-static-destruct.c2
-rw-r--r--src/test/test-strbuf.c2
-rw-r--r--src/test/test-string-util.c2
-rw-r--r--src/test/test-strip-tab-ansi.c2
-rw-r--r--src/test/test-strv.c12
-rw-r--r--src/test/test-strxcpyx.c2
-rw-r--r--src/test/test-sysctl-util.c2
-rwxr-xr-xsrc/test/test-systemd-tmpfiles.py2
-rw-r--r--src/test/test-tables.c2
-rw-r--r--src/test/test-terminal-util.c2
-rw-r--r--src/test/test-time-util.c4
-rw-r--r--src/test/test-tmpfiles.c2
-rw-r--r--src/test/test-udev-util.c202
-rw-r--r--src/test/test-udev.c2
-rw-r--r--src/test/test-uid-range.c2
-rw-r--r--src/test/test-umask-util.c2
-rw-r--r--src/test/test-umount.c2
-rw-r--r--src/test/test-unaligned.c2
-rw-r--r--src/test/test-unit-file.c2
-rw-r--r--src/test/test-unit-name.c2
-rw-r--r--src/test/test-user-record.c2
-rw-r--r--src/test/test-user-util.c2
-rw-r--r--src/test/test-utf8.c2
-rw-r--r--src/test/test-util.c2
-rw-r--r--src/test/test-varlink.c2
-rw-r--r--src/test/test-verbs.c2
-rw-r--r--src/test/test-watch-pid.c2
-rw-r--r--src/test/test-watchdog.c2
-rw-r--r--src/test/test-web-util.c2
-rw-r--r--src/test/test-xattr-util.c2
-rw-r--r--src/test/test-xdg-autostart.c2
-rw-r--r--src/test/test-xml.c2
-rw-r--r--src/time-wait-sync/time-wait-sync.c10
-rw-r--r--src/timedate/meson.build2
-rw-r--r--src/timedate/org.freedesktop.timedate1.conf2
-rw-r--r--src/timedate/org.freedesktop.timedate1.policy2
-rw-r--r--src/timedate/org.freedesktop.timedate1.service2
-rw-r--r--src/timedate/timedatectl.c10
-rw-r--r--src/timedate/timedated.c22
-rw-r--r--src/timesync/meson.build8
-rw-r--r--src/timesync/org.freedesktop.timesync1.service2
-rw-r--r--src/timesync/test-timesync.c2
-rw-r--r--src/timesync/timesyncd-bus.c2
-rw-r--r--src/timesync/timesyncd-bus.h2
-rw-r--r--src/timesync/timesyncd-conf.c2
-rw-r--r--src/timesync/timesyncd-conf.h2
-rw-r--r--src/timesync/timesyncd-manager.c2
-rw-r--r--src/timesync/timesyncd-manager.h2
-rw-r--r--src/timesync/timesyncd-ntp-message.h2
-rw-r--r--src/timesync/timesyncd-server.c2
-rw-r--r--src/timesync/timesyncd-server.h2
-rw-r--r--src/timesync/timesyncd.c2
-rw-r--r--src/tmpfiles/meson.build2
-rw-r--r--src/tmpfiles/tmpfiles.c24
-rw-r--r--src/tty-ask-password-agent/tty-ask-password-agent.c2
-rw-r--r--src/udev/ata_id/ata_id.c2
-rw-r--r--src/udev/cdrom_id/cdrom_id.c2
-rw-r--r--src/udev/fido_id/fido_id.c2
-rw-r--r--src/udev/fido_id/fido_id_desc.c2
-rw-r--r--src/udev/fido_id/fido_id_desc.h2
-rw-r--r--src/udev/fido_id/fuzz-fido-id-desc.c2
-rw-r--r--src/udev/fido_id/test-fido-id-desc.c2
-rw-r--r--src/udev/meson.build14
-rw-r--r--src/udev/mtd_probe/mtd_probe.c2
-rw-r--r--src/udev/mtd_probe/mtd_probe.h2
-rw-r--r--src/udev/mtd_probe/probe_smartmedia.c2
-rw-r--r--src/udev/net/fuzz-link-parser.c2
-rw-r--r--src/udev/net/link-config.c17
-rw-r--r--src/udev/net/link-config.h2
-rw-r--r--src/udev/scsi_id/scsi.h2
-rw-r--r--src/udev/scsi_id/scsi_id.c2
-rw-r--r--src/udev/scsi_id/scsi_id.h2
-rw-r--r--src/udev/scsi_id/scsi_serial.c2
-rw-r--r--src/udev/udev-builtin-blkid.c2
-rw-r--r--src/udev/udev-builtin-btrfs.c2
-rw-r--r--src/udev/udev-builtin-hwdb.c2
-rw-r--r--src/udev/udev-builtin-input_id.c2
-rw-r--r--src/udev/udev-builtin-keyboard.c2
-rw-r--r--src/udev/udev-builtin-kmod.c2
-rw-r--r--src/udev/udev-builtin-net_id.c2
-rw-r--r--src/udev/udev-builtin-net_setup_link.c7
-rw-r--r--src/udev/udev-builtin-path_id.c2
-rw-r--r--src/udev/udev-builtin-uaccess.c2
-rw-r--r--src/udev/udev-builtin-usb_id.c2
-rw-r--r--src/udev/udev-builtin.c2
-rw-r--r--src/udev/udev-builtin.h2
-rw-r--r--src/udev/udev-ctrl.c2
-rw-r--r--src/udev/udev-ctrl.h2
-rw-r--r--src/udev/udev-event.c11
-rw-r--r--src/udev/udev-event.h2
-rw-r--r--src/udev/udev-node.c77
-rw-r--r--src/udev/udev-node.h2
-rw-r--r--src/udev/udev-rules.c29
-rw-r--r--src/udev/udev-rules.h2
-rw-r--r--src/udev/udev-watch.c2
-rw-r--r--src/udev/udev-watch.h2
-rw-r--r--src/udev/udevadm-control.c2
-rw-r--r--src/udev/udevadm-hwdb.c2
-rw-r--r--src/udev/udevadm-info.c2
-rw-r--r--src/udev/udevadm-monitor.c2
-rw-r--r--src/udev/udevadm-settle.c2
-rw-r--r--src/udev/udevadm-test-builtin.c2
-rw-r--r--src/udev/udevadm-test.c2
-rw-r--r--src/udev/udevadm-trigger.c2
-rw-r--r--src/udev/udevadm-util.c2
-rw-r--r--src/udev/udevadm-util.h2
-rw-r--r--src/udev/udevadm.c2
-rw-r--r--src/udev/udevadm.h2
-rw-r--r--src/udev/udevd.c4
-rw-r--r--src/udev/udevd.h2
-rw-r--r--src/udev/v4l_id/v4l_id.c2
-rw-r--r--src/update-done/update-done.c2
-rw-r--r--src/update-utmp/update-utmp.c14
-rw-r--r--src/user-sessions/user-sessions.c2
-rw-r--r--src/userdb/meson.build2
-rw-r--r--src/userdb/userdbctl.c8
-rw-r--r--src/userdb/userdbd-manager.c2
-rw-r--r--src/userdb/userdbd-manager.h2
-rw-r--r--src/userdb/userdbd.c2
-rw-r--r--src/userdb/userwork.c2
-rw-r--r--src/vconsole/90-vconsole.rules.in2
-rw-r--r--src/vconsole/meson.build2
-rw-r--r--src/vconsole/vconsole-setup.c2
-rw-r--r--src/veritysetup/veritysetup-generator.c2
-rw-r--r--src/veritysetup/veritysetup.c4
-rw-r--r--src/volatile-root/volatile-root.c2
-rw-r--r--src/xdg-autostart-generator/xdg-autostart-condition.c2
-rw-r--r--src/xdg-autostart-generator/xdg-autostart-generator.c2
-rw-r--r--src/xdg-autostart-generator/xdg-autostart-service.c2
-rw-r--r--src/xdg-autostart-generator/xdg-autostart-service.h2
-rw-r--r--sysctl.d/meson.build8
-rw-r--r--sysusers.d/meson.build2
-rwxr-xr-xtest/create-sys-script.py4
-rw-r--r--test/fuzz/fuzz-catalog/systemd.pl.catalog2
-rw-r--r--test/fuzz/fuzz-link-parser/99-default.link2
-rw-r--r--test/fuzz/fuzz-udev-rules/99-systemd.rules2
-rw-r--r--test/fuzz/fuzz-unit-file/directives.service2
-rw-r--r--test/fuzz/fuzz-unit-file/machine.slice2
-rw-r--r--test/fuzz/fuzz-unit-file/proc-sys-fs-binfmt_misc.automount2
-rw-r--r--test/fuzz/fuzz-unit-file/syslog.socket2
-rw-r--r--test/fuzz/fuzz-unit-file/systemd-ask-password-console.path2
-rw-r--r--test/fuzz/fuzz-unit-file/systemd-machined.service2
-rw-r--r--test/fuzz/fuzz-unit-file/systemd-resolved.service2
-rw-r--r--test/fuzz/fuzz-unit-file/systemd-tmpfiles-clean.timer3
-rw-r--r--test/fuzz/fuzz-unit-file/timers.target2
-rw-r--r--test/fuzz/fuzz-unit-file/var-lib-machines.mount2
-rw-r--r--test/fuzz/meson.build4
-rwxr-xr-xtest/hwdb-test.sh2
-rw-r--r--test/meson.build2
-rw-r--r--test/mkosi.default.networkd-test4
-rwxr-xr-xtest/networkd-test.py2
-rwxr-xr-xtest/rule-syntax-check.py2
-rw-r--r--test/sd-script.py342
-rwxr-xr-xtest/sys-script.py9
-rwxr-xr-xtest/sysv-generator-test.py2
-rwxr-xr-xtest/test-exec-deserialization.py2
-rw-r--r--test/test-functions7
-rwxr-xr-xtest/test-network/systemd-networkd-tests.py2
-rw-r--r--test/test-path/basic.target2
-rw-r--r--test/test-path/paths.target2
-rw-r--r--test/test-path/sysinit.target2
-rwxr-xr-xtest/udev-test.pl1886
-rw-r--r--test/units/basic.target2
-rw-r--r--test/units/shutdown.target2
-rw-r--r--test/units/sockets.target2
-rw-r--r--test/units/sysinit.target2
-rw-r--r--test/units/timers.target2
-rw-r--r--tmpfiles.d/meson.build4
-rw-r--r--tmpfiles.d/portables.conf2
-rw-r--r--tmpfiles.d/systemd-pstore.conf2
-rw-r--r--tools/chromiumos/gen_autosuspend_rules.py2
-rwxr-xr-xtools/find-double-newline.sh2
-rwxr-xr-xtools/find-tabs.sh2
-rw-r--r--tools/gdb-sd_dump_hashmaps.py2
-rwxr-xr-xtools/generate-gperfs.py2
-rwxr-xr-xtools/git-contrib.sh2
-rwxr-xr-xtools/make-autosuspend-rules.py10
-rwxr-xr-xtools/make-directive-index.py2
-rwxr-xr-xtools/make-man-index.py2
-rwxr-xr-xtools/oss-fuzz.sh2
-rwxr-xr-xtools/update-dbus-docs.py5
-rwxr-xr-xtools/update-man-rules.py2
-rwxr-xr-xtools/xml_helper.py2
-rwxr-xr-xtravis-ci/managers/debian.sh2
-rwxr-xr-xtravis-ci/managers/fedora.sh4
-rw-r--r--units/basic.target2
-rw-r--r--units/blockdev@.target2
-rw-r--r--units/bluetooth.target2
-rw-r--r--units/boot-complete.target2
-rw-r--r--units/console-getty.service.m42
-rw-r--r--units/container-getty@.service.m42
-rw-r--r--units/cryptsetup-pre.target2
-rw-r--r--units/cryptsetup.target2
-rw-r--r--units/debug-shell.service.in2
-rw-r--r--units/dev-hugepages.mount2
-rw-r--r--units/dev-mqueue.mount2
-rw-r--r--units/emergency.service.in2
-rw-r--r--units/emergency.target2
-rw-r--r--units/exit.target2
-rw-r--r--units/final.target2
-rw-r--r--units/first-boot-complete.target2
-rw-r--r--units/getty-pre.target2
-rw-r--r--units/getty.target2
-rw-r--r--units/getty@.service.m42
-rw-r--r--units/graphical.target2
-rw-r--r--units/halt.target2
-rw-r--r--units/hibernate.target2
-rw-r--r--units/hybrid-sleep.target2
-rw-r--r--units/initrd-cleanup.service2
-rw-r--r--units/initrd-fs.target2
-rw-r--r--units/initrd-parse-etc.service2
-rw-r--r--units/initrd-root-device.target2
-rw-r--r--units/initrd-root-fs.target2
-rw-r--r--units/initrd-switch-root.service2
-rw-r--r--units/initrd-switch-root.target2
-rw-r--r--units/initrd-udevadm-cleanup-db.service2
-rw-r--r--units/initrd.target2
-rw-r--r--units/kexec.target2
-rw-r--r--units/kmod-static-nodes.service.in2
-rw-r--r--units/ldconfig.service2
-rw-r--r--units/local-fs-pre.target2
-rw-r--r--units/local-fs.target2
-rw-r--r--units/machine.slice2
-rw-r--r--units/machines.target2
-rw-r--r--units/meson.build10
-rw-r--r--units/modprobe@.service3
-rw-r--r--units/multi-user.target2
-rw-r--r--units/network-online.target2
-rw-r--r--units/network-pre.target2
-rw-r--r--units/network.target2
-rw-r--r--units/nss-lookup.target2
-rw-r--r--units/nss-user-lookup.target2
-rw-r--r--units/paths.target2
-rw-r--r--units/poweroff.target2
-rw-r--r--units/printer.target2
-rw-r--r--units/proc-sys-fs-binfmt_misc.automount2
-rw-r--r--units/proc-sys-fs-binfmt_misc.mount2
-rw-r--r--units/quotaon.service.in2
-rw-r--r--units/rc-local.service.in2
-rw-r--r--units/reboot.target2
-rw-r--r--units/remote-cryptsetup.target2
-rw-r--r--units/remote-fs-pre.target2
-rw-r--r--units/remote-fs.target2
-rw-r--r--units/rescue.service.in2
-rw-r--r--units/rescue.target2
-rw-r--r--units/rpcbind.target2
-rw-r--r--units/serial-getty@.service.m42
-rw-r--r--units/shutdown.target2
-rw-r--r--units/sigpwr.target2
-rw-r--r--units/sleep.target2
-rw-r--r--units/slices.target2
-rw-r--r--units/smartcard.target2
-rw-r--r--units/sockets.target2
-rw-r--r--units/sound.target2
-rw-r--r--units/suspend-then-hibernate.target2
-rw-r--r--units/suspend.target2
-rw-r--r--units/swap.target2
-rw-r--r--units/sys-fs-fuse-connections.mount11
-rw-r--r--units/sys-kernel-config.mount11
-rw-r--r--units/sys-kernel-debug.mount2
-rw-r--r--units/sys-kernel-tracing.mount2
-rw-r--r--units/sysinit.target2
-rw-r--r--units/syslog.socket2
-rw-r--r--units/system-systemd\x2dcryptsetup.slice2
-rw-r--r--units/system-update-cleanup.service2
-rw-r--r--units/system-update-pre.target2
-rw-r--r--units/system-update.target2
-rw-r--r--units/systemd-ask-password-console.path2
-rw-r--r--units/systemd-ask-password-console.service2
-rw-r--r--units/systemd-ask-password-wall.path2
-rw-r--r--units/systemd-ask-password-wall.service2
-rw-r--r--units/systemd-backlight@.service.in2
-rw-r--r--units/systemd-binfmt.service.in2
-rw-r--r--units/systemd-bless-boot.service.in2
-rw-r--r--units/systemd-boot-check-no-failures.service.in2
-rw-r--r--units/systemd-boot-system-token.service2
-rw-r--r--units/systemd-coredump.socket2
-rw-r--r--units/systemd-coredump@.service.in2
-rw-r--r--units/systemd-exit.service2
-rw-r--r--units/systemd-firstboot.service2
-rw-r--r--units/systemd-fsck-root.service.in2
-rw-r--r--units/systemd-fsck@.service.in2
-rw-r--r--units/systemd-halt.service2
-rw-r--r--units/systemd-hibernate-resume@.service.in2
-rw-r--r--units/systemd-hibernate.service.in2
-rw-r--r--units/systemd-homed-activate.service2
-rw-r--r--units/systemd-homed.service.in2
-rw-r--r--units/systemd-hostnamed.service.in2
-rw-r--r--units/systemd-hwdb-update.service.in2
-rw-r--r--units/systemd-hybrid-sleep.service.in2
-rw-r--r--units/systemd-importd.service.in2
-rw-r--r--units/systemd-initctl.service.in2
-rw-r--r--units/systemd-initctl.socket2
-rw-r--r--units/systemd-journal-catalog-update.service2
-rw-r--r--units/systemd-journal-flush.service2
-rw-r--r--units/systemd-journal-gatewayd.service.in2
-rw-r--r--units/systemd-journal-gatewayd.socket2
-rw-r--r--units/systemd-journal-remote.service.in2
-rw-r--r--units/systemd-journal-remote.socket2
-rw-r--r--units/systemd-journal-upload.service.in2
-rw-r--r--units/systemd-journald-audit.socket2
-rw-r--r--units/systemd-journald-dev-log.socket2
-rw-r--r--units/systemd-journald-varlink@.socket2
-rw-r--r--units/systemd-journald.service.in8
-rw-r--r--units/systemd-journald.socket2
-rw-r--r--units/systemd-journald@.service.in2
-rw-r--r--units/systemd-journald@.socket2
-rw-r--r--units/systemd-kexec.service2
-rw-r--r--units/systemd-localed.service.in2
-rw-r--r--units/systemd-logind.service.in2
-rw-r--r--units/systemd-machine-id-commit.service2
-rw-r--r--units/systemd-machined.service.in2
-rw-r--r--units/systemd-modules-load.service.in2
-rw-r--r--units/systemd-network-generator.service.in2
-rw-r--r--units/systemd-networkd-wait-online.service.in2
-rw-r--r--units/systemd-networkd.service.in2
-rw-r--r--units/systemd-networkd.socket2
-rw-r--r--units/systemd-nspawn@.service.in2
-rw-r--r--units/systemd-oomd.service.in2
-rw-r--r--units/systemd-portabled.service.in2
-rw-r--r--units/systemd-poweroff.service2
-rw-r--r--units/systemd-pstore.service.in2
-rw-r--r--units/systemd-quotacheck.service.in2
-rw-r--r--units/systemd-random-seed.service.in2
-rw-r--r--units/systemd-reboot.service2
-rw-r--r--units/systemd-remount-fs.service.in2
-rw-r--r--units/systemd-repart.service.in2
-rw-r--r--units/systemd-resolved.service.in2
-rw-r--r--units/systemd-rfkill.service.in2
-rw-r--r--units/systemd-rfkill.socket2
-rw-r--r--units/systemd-suspend-then-hibernate.service.in2
-rw-r--r--units/systemd-suspend.service.in2
-rw-r--r--units/systemd-sysctl.service.in2
-rw-r--r--units/systemd-sysusers.service2
-rw-r--r--units/systemd-time-wait-sync.service.in2
-rw-r--r--units/systemd-timedated.service.in2
-rw-r--r--units/systemd-timesyncd.service.in2
-rw-r--r--units/systemd-tmpfiles-clean.service2
-rw-r--r--units/systemd-tmpfiles-clean.timer2
-rw-r--r--units/systemd-tmpfiles-setup-dev.service2
-rw-r--r--units/systemd-tmpfiles-setup.service2
-rw-r--r--units/systemd-udev-settle.service2
-rw-r--r--units/systemd-udev-trigger.service2
-rw-r--r--units/systemd-udevd-control.socket2
-rw-r--r--units/systemd-udevd-kernel.socket2
-rw-r--r--units/systemd-udevd.service.in4
-rw-r--r--units/systemd-update-done.service.in2
-rw-r--r--units/systemd-update-utmp-runlevel.service.in2
-rw-r--r--units/systemd-update-utmp.service.in2
-rw-r--r--units/systemd-user-sessions.service.in2
-rw-r--r--units/systemd-userdbd.service.in2
-rw-r--r--units/systemd-userdbd.socket2
-rw-r--r--units/systemd-vconsole-setup.service.in2
-rw-r--r--units/systemd-volatile-root.service.in2
-rw-r--r--units/time-set.target2
-rw-r--r--units/time-sync.target2
-rw-r--r--units/timers.target2
-rw-r--r--units/tmp.mount2
-rw-r--r--units/umount.target2
-rw-r--r--units/usb-gadget.target2
-rw-r--r--units/user-.slice.d/10-defaults.conf2
-rw-r--r--units/user-runtime-dir@.service.in2
-rw-r--r--units/user.slice2
-rw-r--r--units/user/app.slice12
-rw-r--r--units/user/background.slice12
-rw-r--r--units/user/basic.target2
-rw-r--r--units/user/bluetooth.target2
-rw-r--r--units/user/default.target2
-rw-r--r--units/user/exit.target2
-rw-r--r--units/user/graphical-session-pre.target2
-rw-r--r--units/user/graphical-session.target2
-rw-r--r--units/user/meson.build5
-rw-r--r--units/user/paths.target2
-rw-r--r--units/user/printer.target2
-rw-r--r--units/user/session.slice12
-rw-r--r--units/user/shutdown.target2
-rw-r--r--units/user/smartcard.target2
-rw-r--r--units/user/sockets.target2
-rw-r--r--units/user/sound.target2
-rw-r--r--units/user/systemd-exit.service6
-rw-r--r--units/user/systemd-tmpfiles-clean.service3
-rw-r--r--units/user/systemd-tmpfiles-clean.timer2
-rw-r--r--units/user/systemd-tmpfiles-setup.service2
-rw-r--r--units/user/timers.target2
-rw-r--r--units/user/xdg-desktop-autostart.target2
-rw-r--r--units/user@.service.in2
-rw-r--r--units/var-lib-machines.mount2
2681 files changed, 16920 insertions, 10460 deletions
diff --git a/.clang-format b/.clang-format
index 8e5cfca535..651249c701 100644
--- a/.clang-format
+++ b/.clang-format
@@ -118,6 +118,7 @@ PenaltyBreakString: 0
PenaltyExcessCharacter: 10
PenaltyReturnTypeOnItsOwnLine: 100
SpaceAfterCStyleCast: true
+SpaceBeforeParens: ControlStatementsExceptForEachMacros
SpacesInAngles: true
TabWidth: 8
UseCRLF: false
diff --git a/.github/workflows/ubuntu-build-check.sh b/.github/workflows/ubuntu-build-check.sh
index 0892e08dd1..d4f1106538 100755
--- a/.github/workflows/ubuntu-build-check.sh
+++ b/.github/workflows/ubuntu-build-check.sh
@@ -103,7 +103,7 @@ for args in "${ARGS[@]}"; do
SECONDS=0
info "Checking build with $args"
- if ! AR="$AR" CC="$CC" CXX="$CXX" CFLAGS="-Werror" CXXFLAGS="-Werror" meson -Dtests=unsafe -Dslow-tests=true --werror $args build; then
+ if ! AR="$AR" CC="$CC" CXX="$CXX" CFLAGS="-Werror" CXXFLAGS="-Werror" meson -Dtests=unsafe -Dslow-tests=true -Dfuzz-tests=true --werror $args build; then
fatal "meson failed with $args"
fi
diff --git a/.mkosi/mkosi.arch b/.mkosi/mkosi.arch
index 3ac3d55e4a..c50ee4923c 100644
--- a/.mkosi/mkosi.arch
+++ b/.mkosi/mkosi.arch
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# Copyright © 2016 Zeal Jagannatha
diff --git a/.mkosi/mkosi.debian b/.mkosi/mkosi.debian
index cf2e3dfa0d..b5ed5768cb 100644
--- a/.mkosi/mkosi.debian
+++ b/.mkosi/mkosi.debian
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
# 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.
diff --git a/.mkosi/mkosi.fedora b/.mkosi/mkosi.fedora
index e7edb6dbbc..568e63651a 100644
--- a/.mkosi/mkosi.fedora
+++ b/.mkosi/mkosi.fedora
@@ -1,11 +1,11 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
# 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.
[Distribution]
Distribution=fedora
-Release=32
+Release=33
[Output]
Format=gpt_ext4
@@ -58,6 +58,8 @@ BuildPackages=
p11-kit-devel
pam-devel
pcre2-devel
+ perl(IPC::SysV)
+ perl(Time::HiRes)
pkgconfig
python3-devel
python3-lxml
diff --git a/.mkosi/mkosi.opensuse b/.mkosi/mkosi.opensuse
index 53837b6be8..9f3abbc74b 100644
--- a/.mkosi/mkosi.opensuse
+++ b/.mkosi/mkosi.opensuse
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
# 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.
diff --git a/.mkosi/mkosi.ubuntu b/.mkosi/mkosi.ubuntu
index 3e97beebaf..baf4daec4b 100644
--- a/.mkosi/mkosi.ubuntu
+++ b/.mkosi/mkosi.ubuntu
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
# 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.
diff --git a/NEWS b/NEWS
index dbb3de841f..33048e3f19 100644
--- a/NEWS
+++ b/NEWS
@@ -1,8 +1,8 @@
systemd System and Service Manager
-CHANGES WITH 247 in spe:
+CHANGES WITH 247:
- * KERNEL API INCOMPATIBILITY: Linux 4.12 introduced two new uevents
+ * KERNEL API INCOMPATIBILITY: Linux 4.14 introduced two new uevents
"bind" and "unbind" to the Linux device model. When this kernel
change was made, systemd-udevd was only minimally updated to handle
and propagate these new event types. The introduction of these new
@@ -86,6 +86,33 @@ CHANGES WITH 247 in spe:
this is not caused by systemd/udev changes, but result of a kernel
behaviour change.
+ * UPCOMING INCOMPATIBILITY: So far most downstream distribution
+ packages have not retriggered devices once the udev package (or any
+ auxiliary package installing additional udev rules) is updated. We
+ intend to work with major distributions to change this, so that
+ "udevadm trigger -a change" is issued on such upgrades, ensuring that
+ the updated ruleset is applied to the devices already discovered, so
+ that (asynchronously) after the upgrade completed the udev database
+ is consistent with the updated rule set. This means udev rules must
+ be ready to be retriggered with a "change" action any time, and
+ result in correct and complete udev database entries. While the
+ majority of udev rule files known to us currently get this right,
+ some don't. Specifically, there are udev rules files included in
+ various packages that only set udev properties on the "add" action,
+ but do not handle the "change" action. If a device matching those
+ rules is retriggered with the "change" action (as is intended here)
+ it would suddenly lose the relevant properties. This always has been
+ problematic, but as soon as all udev devices are triggered on relevant
+ package upgrades this will become particularly so. It is strongly
+ recommended to fix offending rules so that they can handle a "change"
+ action at any time, and acquire all necessary udev properties even
+ then. Or in other words: the header guard mentioned above
+ (ACTION=="remove",GOTO="xyz_end") is the correct approach to handle
+ this, as it makes sure rules are rerun on "change" correctly, and
+ accumulate the correct and complete set of udev properties. udev rule
+ definitions that cannot handle "change" events being triggered at
+ arbitrary times should be considered buggy.
+
* The MountAPIVFS= service file setting now defaults to on if
RootImage= and RootDirectory= are used, which means that with those
two settings /proc/, /sys/ and /dev/ are automatically properly set
@@ -158,6 +185,15 @@ CHANGES WITH 247 in spe:
mounting additional disk images into the file system tree accessible
to the service.
+ * Timer units gained a new FixedRandomDelay= boolean setting. If
+ enabled, the random delay configured with RandomizedDelaySec= is
+ selected in a way that is stable on a given system (though still
+ different for different units).
+
+ * Socket units gained a new setting Timestamping= that takes "us", "ns"
+ or "off". This controls the SO_TIMESTAMP/SO_TIMESTAMPNS socket
+ options.
+
* systemd-repart now generates JSON output when requested with the new
--json= switch.
@@ -299,6 +335,10 @@ CHANGES WITH 247 in spe:
invoked by container payloads that are prohibited by the container's
system call filter policy.
+ * If the $SYSTEMD_SECCOMP=0 environment variable is set for
+ systemd-nspawn (and other programs that use seccomp) all seccomp
+ filtering is turned off.
+
* Two new unit file settings ProtectProc= and ProcSubset= have been
added that expose the hidepid= and subset= mount options of procfs.
All processes of the unit will only see processes in /proc that are
@@ -444,20 +484,32 @@ CHANGES WITH 247 in spe:
discipline in the [FlowQueuePIE] sections.
* systemd-networkd's .netdev files may now be used to create "BareUDP"
- tunnels, configured in the new [BareUDP] setting. VXLAN tunnels may
- now be marked to be independent of any underlying network interface
- via the new Independent= boolean setting.
+ tunnels, configured in the new [BareUDP] setting.
* systemd-networkd's Gateway= setting in .network files now accepts the
- special values _dhcp4 and _ipv6ra to configure additional, locally
- defined, explicit routes to the gateway acquired via DHCP or IPv6
- Router Advertisements.
+ special values "_dhcp4" and "_ipv6ra" to configure additional,
+ locally defined, explicit routes to the gateway acquired via DHCP or
+ IPv6 Router Advertisements. The old setting "_dhcp" is deprecated,
+ but still accepted for backwards compatibility.
* systemd-networkd's [IPv6PrefixDelegation] section and
IPv6PrefixDelegation= options have been renamed as [IPv6SendRA] and
IPv6SendRA= (the old names are still accepted for backwards
compatibility).
+ * systemd-networkd's .network files gained the DHCPv6PrefixDelegation=
+ boolean setting in [Network] section. If enabled, the delegated prefix
+ gained by another link will be configured, and an address within the
+ prefix will be assigned.
+
+ * systemd-networkd's .network files gained the Announce= boolean setting
+ in [DHCPv6PrefixDelegation] section. When enabled, the delegated
+ prefix will be announced through IPv6 router advertisement (IPv6 RA).
+ The setting is enabled by default.
+
+ * VXLAN tunnels may now be marked as independent of any underlying
+ network interface via the new Independent= boolean setting.
+
* systemctl gained support for two new verbs: "service-log-level" and
"service-log-target" may be used on services that implement the
generic org.freedesktop.LogControl1 D-Bus interface to dynamically
@@ -468,8 +520,8 @@ CHANGES WITH 247 in spe:
* The SystemCallErrorNumber= unit file setting now accepts the new
"kill" and "log" actions, in addition to arbitrary error number
- specifications as before. If "kill" the the processes are killed on
- the event, if "log" the offending system call is audit logged.
+ specifications as before. If "kill" the processes are killed on the
+ event, if "log" the offending system call is audit logged.
* A new SystemCallLog= unit file setting has been added that accepts a
list of system calls that shall be logged about (audit).
@@ -517,13 +569,15 @@ CHANGES WITH 247 in spe:
contention for selected parts of the unit hierarchy using the PSI
information reported by the kernel, and kills processes when memory
or swap pressure is above configured limits. This service is only
- enabled in developer mode (see below) and should be considered a
- preview in this release. Behaviour details and option names are
- subject to change without the usual backwards-compatibility promises.
+ enabled by default in developer mode (see below) and should be
+ considered a preview in this release. Behaviour details and option
+ names are subject to change without the usual backwards-compatibility
+ promises.
* A new helper oomctl has been added to introspect systemd-oomd state.
- If also is only available in developer mode and should be considered
- a preview without the usual backwards-compatibility promises.
+ It is only enabled by default in developer mode and should be
+ considered a preview without the usual backwards-compatibility
+ promises.
* New meson option -Dcompat-mutable-uid-boundaries= has been added. If
enabled, systemd reads the system UID boundaries from /etc/login.defs
@@ -582,46 +636,56 @@ CHANGES WITH 247 in spe:
a command "bootctl set-default @current" may be used to make the
currently boot menu item the new default for all subsequent boots.
- * A new generic target unit "initrd-cryptsetup.target" has been added
- that is supposed to pull in all encrypted volumes that shall be set
- up during the initrd phase. It takes the place of "cryptsetup.target"
- and "remote-cryptsetup.target" that exist during the host boot
- phase. In other words, the new "initrd-cryptsetup.target" is supposed
- to take the role for "initrd-fs.target", but for encrypted volumes.
-
* "systemctl edit" has been updated to show the original effective unit
contents in commented form in the text editor.
+ * Units in user mode are now segregated into three new slices:
+ session.slice (units that form the core of graphical session),
+ app.slice ("normal" user applications), and background.slice
+ (low-priority tasks). Unless otherwise configured, user units are
+ placed in app.slice. The plan is to add resource limits and
+ protections for the different slices in the future.
+
+ * New GPT partition types for RISCV32/64 for the root and /usr
+ partitions, and their associated Verity partitions have been defined,
+ and are now understood by systemd-gpt-auto-generator, and the OS
+ image dissection logic.
+
Contributions from: Adolfo Jayme Barrientos, afg, Alec Moskvin, Alyssa
- Ross, Amitanand.Chikorde, Andrew Hangsleben, Anita Zhang, Ansgar
+ Ross, Amitanand Chikorde, Andrew Hangsleben, Anita Zhang, Ansgar
Burchardt, Arian van Putten, Aurelien Jarno, Axel Rasmussen, bauen1,
Beniamino Galvani, Benjamin Berg, Bjørn Mork, brainrom, Chandradeep
- Dey, Charles Lee, Chris Down, Christian Göttsche, Clemens Gruber, Daan
- De Meyer, Daniele Medri, Daniel Mack, Dan Streetman, David Tardon,
- Dimitri John Ledkov, Dmitry Borodaenko, Elias Probst, Elisei Roca,
- ErrantSpore, Etienne Doms, Fabrice Fontaine, fangxiuning, Felix
- Riemann, Florian Klink, Franck Bui, Frantisek Sumsal, George Rawlinson,
- germanztz, Gibeom Gwon, Glen Whitney, Gogo Gogsi, Göran Uddeborg, Grant
- Mathews, Hans de Goede, Hans Ulrich Niedermann, Haochen Tong, Harald
- Seiler, huangyong, Hubert Kario, Ikey Doherty, Jan Chren, Jan Schlüter,
- Jérémy Nouhaud, Joerg Behrmann, Jonathan Lebon, Juergen Hoetzel, Julien
- Humbert, Kai-Chuan Hsieh, Kairui Song, Kamil Dudka, Kir Kolyshkin, Kyle
- Huey, Kyle Russell, Lennart Poettering, lichangze, Luca Boccassi, Lucas
- Werkmeister, Marc Kleine-Budde, Marco Wang, Marti Raudsepp,
- masmullin2000, Máté Pozsgay, Matt Fenwick, Michael Biebl, Michael
- Scherer, Michal Koutný, Michal Sekletár, Michal Suchanek, Mikael
- Szreder, Milo Casagrande, mirabilos, Mitsuha_QuQ, mog422, Nazar
+ Dey, Charles Lee, Chris Down, Christian Göttsche, Christof Efkemann,
+ Christoph Ruegge, Clemens Gruber, Daan De Meyer, Daniele Medri, Daniel
+ Mack, Daniel Rusek, Dan Streetman, David Tardon, Dimitri John Ledkov,
+ Dmitry Borodaenko, Elias Probst, Elisei Roca, ErrantSpore, Etienne
+ Doms, Fabrice Fontaine, fangxiuning, Felix Riemann, Florian Klink,
+ Franck Bui, Frantisek Sumsal, fwSmit, George Rawlinson, germanztz,
+ Gibeom Gwon, Glen Whitney, Gogo Gogsi, Göran Uddeborg, Grant Mathews,
+ Hans de Goede, Hans Ulrich Niedermann, Haochen Tong, Harald Seiler,
+ huangyong, Hubert Kario, igo95862, Ikey Doherty, Insun Pyo, Jan Chren,
+ Jan Schlüter, Jérémy Nouhaud, Jian-Hong Pan, Joerg Behrmann, Jonathan
+ Lebon, Jörg Thalheim, Josh Brobst, Juergen Hoetzel, Julien Humbert,
+ Kai-Chuan Hsieh, Kairui Song, Kamil Dudka, Kir Kolyshkin, Kristijan
+ Gjoshev, Kyle Huey, Kyle Russell, Lee Whalen, Lennart Poettering,
+ lichangze, Luca Boccassi, Lucas Werkmeister, Luca Weiss, Marc
+ Kleine-Budde, Marco Wang, Martin Wilck, Marti Raudsepp, masmullin2000,
+ Máté Pozsgay, Matt Fenwick, Michael Biebl, Michael Scherer, Michal
+ Koutný, Michal Sekletár, Michal Suchanek, Mikael Szreder, Milo
+ Casagrande, mirabilos, Mitsuha_QuQ, mog422, Muhammet Kara, Nazar
Vinnichuk, Nicholas Narsing, Nicolas Fella, Njibhu, nl6720, Oğuz Ersen,
- Olivier Le Moal, Ondrej Kozina, Pass Automated Testing Suite, Pat
- Coulthard, Pedro Ruiz, Peter Hutterer, Phaedrus Leeds, PhoenixDiscord,
- Piotr Drąg, Plan C, Renaud Métrich, Robert Marko, Ronan Pigott, Roy
- Chen (陳彥廷), RussianNeuroMancer, Samanta Navarro, Samuel BF,
- scootergrisen, Steve Dodd, Susant Sahani, Tobias Hunger, Tobias
- Kaufmann, Topi Miettinen, Vito Caputo, Weblate, Wen Yang, williamvds,
- Yuri Chornoivan, Yu Watanabe, Zbigniew Jędrzejewski-Szmek, Zmicer
- Turok, Дамјан Георгиевски
-
- – Warsaw, 2020-10-26
+ Olivier Le Moal, Ondrej Kozina, onlybugreports, Pass Automated Testing
+ Suite, Pat Coulthard, Pavel Sapezhko, Pedro Ruiz, perry_yuan, Peter
+ Hutterer, Phaedrus Leeds, PhoenixDiscord, Piotr Drąg, Plan C,
+ Purushottam choudhary, Rasmus Villemoes, Renaud Métrich, Robert Marko,
+ Roman Beranek, Ronan Pigott, Roy Chen (陳彥廷), RussianNeuroMancer,
+ Samanta Navarro, Samuel BF, scootergrisen, Sorin Ionescu, Steve Dodd,
+ Susant Sahani, Timo Rothenpieler, Tobias Hunger, Tobias Kaufmann, Topi
+ Miettinen, vanou, Vito Caputo, Weblate, Wen Yang, Whired Planck,
+ williamvds, Yu, Li-Yu, Yuri Chornoivan, Yu Watanabe, Zbigniew
+ Jędrzejewski-Szmek, Zmicer Turok, Дамјан Георгиевски
+
+ – Warsaw, 2020-11-26
CHANGES WITH 246:
diff --git a/TODO b/TODO
index fb29a975f7..89f7455e5b 100644
--- a/TODO
+++ b/TODO
@@ -20,6 +20,27 @@ Janitorial Clean-ups:
Features:
+* cryptsetup: optionally, when run during boot-up and password is never
+ entered, and we are on AC power (or so), power off machine again
+
+* when configuring loopback netif, and it fails due to EPERM, eat up error if
+ it happens to be set up alright already.
+
+* at boot: check if battery above some threshold, if not power off again after explanation
+
+* userdb: add field for ambient caps, so that a user can have CAP_WAKE_ALARM
+ for example. And add code that resets ambient caps for all services by
+ default.
+
+* homed: try to unmount in regular intervals when home dir was busy when we
+ tried because idle.
+
+* sd-bus: when connecting to some dbus server socker, set originating AF_UNIX
+ socket name in abstract namespace to include "description" string, and pick
+ it up from there in sd_bus_creds logic. i.e. we can use the socket peer
+ address as conduit for some minimal connection metainfo, and use it to
+ restore the "description" logic that kdbus used to have.
+
* teach LoadCredential= the ability to load all files from a specified dir as
individual creds
@@ -625,7 +646,7 @@ Features:
parameters
* maybe hook of xfs/ext4 quotactl() with services? i.e. automatically manage
- the quota of a the user indicated in User= via unit file settings, like the
+ the quota of the user indicated in User= via unit file settings, like the
other resource management concepts. Would mix nicely with DynamicUser=1. Or
alternatively, do this with projids, so that we can also cover services
running as root. Quota should probably cover all the special dirs such as
diff --git a/catalog/meson.build b/catalog/meson.build
index 3db8e390f2..d61fc2cbf6 100644
--- a/catalog/meson.build
+++ b/catalog/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
in_files = '''
systemd.bg.catalog
diff --git a/catalog/systemd.be.catalog.in b/catalog/systemd.be.catalog.in
index f8816c7601..89c82c2e9c 100644
--- a/catalog/systemd.be.catalog.in
+++ b/catalog/systemd.be.catalog.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# Message catalog for systemd's own messages
# Belarusian translation
diff --git a/catalog/systemd.be@latin.catalog.in b/catalog/systemd.be@latin.catalog.in
index ef9682c9b5..9b6d346b0d 100644
--- a/catalog/systemd.be@latin.catalog.in
+++ b/catalog/systemd.be@latin.catalog.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# Message catalog for systemd's own messages
# Belarusian Latin translation
diff --git a/catalog/systemd.bg.catalog.in b/catalog/systemd.bg.catalog.in
index fcb245c154..65e0833970 100644
--- a/catalog/systemd.bg.catalog.in
+++ b/catalog/systemd.bg.catalog.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# Copyright © 2016 Alexander Shopov <ash@kambanaria.org>
diff --git a/catalog/systemd.catalog.in b/catalog/systemd.catalog.in
index 3ad20e04ce..3e08f564a6 100644
--- a/catalog/systemd.catalog.in
+++ b/catalog/systemd.catalog.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
# Message catalog for systemd's own messages
diff --git a/catalog/systemd.da.catalog.in b/catalog/systemd.da.catalog.in
index eed98fa18d..656fb0509b 100644
--- a/catalog/systemd.da.catalog.in
+++ b/catalog/systemd.da.catalog.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
# Message catalog for systemd's own messages
# Danish translation
diff --git a/catalog/systemd.de.catalog.in b/catalog/systemd.de.catalog.in
index 5f63a2d6b5..97b16d0767 100644
--- a/catalog/systemd.de.catalog.in
+++ b/catalog/systemd.de.catalog.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
-- fc2e22bc6ee647b6b90729ab34a250b1
Subject: Speicherabbild für Prozess @COREDUMP_PID@ (@COREDUMP_COMM@) generiert
diff --git a/catalog/systemd.fr.catalog.in b/catalog/systemd.fr.catalog.in
index c2319b8228..32156bf8a1 100644
--- a/catalog/systemd.fr.catalog.in
+++ b/catalog/systemd.fr.catalog.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# Copyright © 2013-2016 Sylvain Plantefève
diff --git a/catalog/systemd.hr.catalog.in b/catalog/systemd.hr.catalog.in
index 43d69623cd..20a71a38cb 100644
--- a/catalog/systemd.hr.catalog.in
+++ b/catalog/systemd.hr.catalog.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
# Message catalog for systemd's own messages
# Croatian translation
diff --git a/catalog/systemd.hu.catalog.in b/catalog/systemd.hu.catalog.in
index ea60af20b2..d60200b6c4 100644
--- a/catalog/systemd.hu.catalog.in
+++ b/catalog/systemd.hu.catalog.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# Copyright © 2016 Gabor Kelemen
diff --git a/catalog/systemd.it.catalog.in b/catalog/systemd.it.catalog.in
index c7ef447e5a..88e118fced 100644
--- a/catalog/systemd.it.catalog.in
+++ b/catalog/systemd.it.catalog.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# Copyright © 2013-2019 Daniele Medri
diff --git a/catalog/systemd.ko.catalog.in b/catalog/systemd.ko.catalog.in
index 73d414d92d..5f8fda002f 100644
--- a/catalog/systemd.ko.catalog.in
+++ b/catalog/systemd.ko.catalog.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
# Message catalog for systemd's own messages
# Korean translation
diff --git a/catalog/systemd.pl.catalog.in b/catalog/systemd.pl.catalog.in
index 9881a6c6d1..58706f55d2 100644
--- a/catalog/systemd.pl.catalog.in
+++ b/catalog/systemd.pl.catalog.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
# Message catalog for systemd's own messages
# Polish translation
diff --git a/catalog/systemd.pt_BR.catalog.in b/catalog/systemd.pt_BR.catalog.in
index c07171674d..d44c6884db 100644
--- a/catalog/systemd.pt_BR.catalog.in
+++ b/catalog/systemd.pt_BR.catalog.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# Copyright © 2015 Rafael Ferreira (translation)
diff --git a/catalog/systemd.ru.catalog.in b/catalog/systemd.ru.catalog.in
index 9f100551dc..728a5435cb 100644
--- a/catalog/systemd.ru.catalog.in
+++ b/catalog/systemd.ru.catalog.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# Copyright © 2013-2017 Sergey Ptashnick
diff --git a/catalog/systemd.sr.catalog.in b/catalog/systemd.sr.catalog.in
index 26c44b2a2b..cbceab8d0d 100644
--- a/catalog/systemd.sr.catalog.in
+++ b/catalog/systemd.sr.catalog.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
# Message catalog for systemd's own messages
# Serbian translation
diff --git a/catalog/systemd.zh_CN.catalog.in b/catalog/systemd.zh_CN.catalog.in
index 5bae69911a..cc6a519710 100644
--- a/catalog/systemd.zh_CN.catalog.in
+++ b/catalog/systemd.zh_CN.catalog.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# Copyright © 2015 Boyuan Yang
diff --git a/catalog/systemd.zh_TW.catalog.in b/catalog/systemd.zh_TW.catalog.in
index a6ddf2c133..4720878218 100644
--- a/catalog/systemd.zh_TW.catalog.in
+++ b/catalog/systemd.zh_TW.catalog.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# Copyright © 2015 Jeff Huang
diff --git a/coccinelle/errno.cocci b/coccinelle/errno.cocci
index ed74c0a98a..c928266481 100644
--- a/coccinelle/errno.cocci
+++ b/coccinelle/errno.cocci
@@ -30,3 +30,12 @@ expression e;
+ return
log_LEVEL_errno(e, ...);
- return -e;
+@@
+identifier log_LEVEL_errno =~ "^log_(debug|info|notice|warning|error|emergency)_errno$";
+expression list args;
+expression e;
+local idexpression r;
+@@
+- log_LEVEL_errno(e, args);
+- r = e;
++ r = log_LEVEL_errno(e, args);
diff --git a/coccinelle/synthetic-errno.cocci b/coccinelle/synthetic-errno.cocci
index 3ddb69cb4c..650c37e08b 100644
--- a/coccinelle/synthetic-errno.cocci
+++ b/coccinelle/synthetic-errno.cocci
@@ -44,5 +44,5 @@ identifier log_LEVEL_errno =~ "^log_(debug|info|notice|warning|error|emergency)_
identifier ERRNO =~ "^E[A-Z]+$";
expression list args;
@@
-- return log_LEVEL_errno(ERRNO, args);
-+ return log_LEVEL_errno(SYNTHETIC_ERRNO(ERRNO), args);
+- log_LEVEL_errno(ERRNO, args);
++ log_LEVEL_errno(SYNTHETIC_ERRNO(ERRNO), args);
diff --git a/docs/CONTAINER_INTERFACE.md b/docs/CONTAINER_INTERFACE.md
index 40b1533595..980fce3968 100644
--- a/docs/CONTAINER_INTERFACE.md
+++ b/docs/CONTAINER_INTERFACE.md
@@ -77,7 +77,7 @@ manager, please consider supporting the following interfaces.
container instance) or creating one scope unit for each container instance
via systemd's transient unit API (in case you have one container manager
that manages all instances. Either way, make sure to set `Delegate=yes` in
- it. This ensures that that the unit you created will be part of all cgroup
+ it. This ensures that the unit you created will be part of all cgroup
controllers (or at least the ones systemd understands). The latter may also
be done via `systemd-machined`'s `CreateMachine()` API. Make sure to use the
cgroup path systemd put your process in for all operations of the container.
@@ -364,7 +364,7 @@ If you write software that wants to detect whether it is run in a container,
please check `/proc/1/environ` and look for the `container=` environment
variable. Do not assume the environment variable is inherited down the process
tree. It generally is not. Hence check the environment block of PID 1, not your
-own. Note though that that file is only accessible to root. systemd hence early
+own. Note though that this file is only accessible to root. systemd hence early
on also copies the value into `/run/systemd/container`, which is readable for
everybody. However, that's a systemd-specific interface and other init systems
are unlikely to do the same.
diff --git a/docs/DISCOVERABLE_PARTITIONS.md b/docs/DISCOVERABLE_PARTITIONS.md
index 0e021e064c..fd8e927818 100644
--- a/docs/DISCOVERABLE_PARTITIONS.md
+++ b/docs/DISCOVERABLE_PARTITIONS.md
@@ -46,21 +46,29 @@ Interface](https://systemd.io/BOOT_LOADER_INTERFACE).
| `69dad710-2ce4-4e3c-b16c-21a1d49abed3` | _Root Partition (32-bit ARM)_ | ditto | ditto |
| `b921b045-1df0-41c3-af44-4c6f280d3fae` | _Root Partition (64-bit ARM/AArch64)_ | ditto | ditto |
| `993d8d3d-f80e-4225-855a-9daf8ed7ea97` | _Root Partition (Itanium/IA-64)_ | ditto | ditto |
+| `60d5a7fe-8e7d-435c-b714-3dd8162144e1` | _Root Partition (RISC-V 32-bit)_ | ditto | ditto |
+| `72ec70a6-cf74-40e6-bd49-4bda08e8f224` | _Root Partition (RISC-V 64-bit)_ | ditto | ditto |
| `d13c5d3b-b5d1-422a-b29f-9454fdc89d76` | _Root Verity Partition (x86)_ | A dm-verity superblock followed by hash data | On systems with matching architecture, contains dm-verity integrity hash data for the matching root partition. If this feature is used the partition UUID of the root partition should be the first 128bit of the root hash of the dm-verity hash data, and the partition UUID of this dm-verity partition should be the final 128bit of it, so that the root partition and its verity partition can be discovered easily, simply by specifying the root hash. |
| `2c7357ed-ebd2-46d9-aec1-23d437ec2bf5` | _Root Verity Partition (x86-64)_ | ditto | ditto |
| `7386cdf2-203c-47a9-a498-f2ecce45a2d6` | _Root Verity Partition (32-bit ARM)_ | ditto | ditto |
| `df3300ce-d69f-4c92-978c-9bfb0f38d820` | _Root Verity Partition (64-bit ARM/AArch64)_ | ditto | ditto |
| `86ed10d5-b607-45bb-8957-d350f23d0571` | _Root Verity Partition (Itanium/IA-64)_ | ditto | ditto |
+| `ae0253be-1167-4007-ac68-43926c14c5de` | _Root Verity Partition (RISC-V 32-bit)_ | ditto | ditto |
+| `b6ed5582-440b-4209-b8da-5ff7c419ea3d` | _Root Verity Partition (RISC-V 64-bit)_ | ditto | ditto |
| `75250d76-8cc6-458e-bd66-bd47cc81a812` | _`/usr/` Partition (x86)_ | Any native, optionally in LUKS | Similar semantics to root partition, but just the `/usr/` partition. |
| `8484680c-9521-48c6-9c11-b0720656f69e` | _`/usr/` Partition (x86-64)_ | ditto | ditto |
| `7d0359a3-02b3-4f0a-865c-654403e70625` | _`/usr/` Partition (32-bit ARM)_ | ditto | ditto |
| `b0e01050-ee5f-4390-949a-9101b17104e9` | _`/usr/` Partition (64-bit ARM/AArch64)_ | ditto | ditto |
| `4301d2a6-4e3b-4b2a-bb94-9e0b2c4225ea` | _`/usr/` Partition (Itanium/IA-64)_ | ditto | ditto |
+| `b933fb22-5c3f-4f91-af90-e2bb0fa50702` | _`/usr/` Partition (RISC-V 32-bit)_ | ditto | ditto |
+| `beaec34b-8442-439b-a40b-984381ed097d` | _`/usr/` Partition (RISC-V 64-bit)_ | ditto | ditto |
| `8f461b0d-14ee-4e81-9aa9-049b6fb97abd` | _`/usr/` Verity Partition (x86)_ | Any native, optionally in LUKS | Similar semantics to root Verity partition, but just for the `/usr/` partition. |
| `77ff5f63-e7b6-4633-acf4-1565b864c0e6` | _`/usr/` Verity Partition (x86-64)_ | ditto | ditto |
| `c215d751-7bcd-4649-be90-6627490a4c05` | _`/usr/` Verity Partition (32-bit ARM)_ | ditto | ditto |
| `6e11a4e7-fbca-4ded-b9e9-e1a512bb664e` | _`/usr/` Verity Partition (64-bit ARM/AArch64)_ | ditto | ditto |
| `6a491e03-3be7-4545-8e38-83320e0ea880` | _`/usr/` Verity Partition (Itanium/IA-64)_ | ditto | ditto |
+| `cb1ee4e3-8cd0-4136-a0a4-aa61a32e8730` | _`/usr/` Verity Partition (RISC-V 32-bit)_ | ditto | ditto |
+| `8f1056be-9b05-47c4-81d6-be53128e5b54` | _`/usr/` Verity Partition (RISC-V 64-bit)_ | ditto | ditto |
| `933ac7e1-2eb4-4f13-b844-0e14e2aef915` | _Home Partition_ | Any native, optionally in LUKS | The first partition with this type UUID on the disk containing the root partition is automatically mounted to `/home/`. If the partition is encrypted with LUKS, the device mapper file will be named `/dev/mapper/home`. |
| `3b8f8425-20e0-4f3b-907f-1a25a76f98e8` | _Server Data Partition_ | Any native, optionally in LUKS | The first partition with this type UUID on the disk containing the root partition is automatically mounted to `/srv/`. If the partition is encrypted with LUKS, the device mapper file will be named `/dev/mapper/srv`. |
| `4d21b016-b534-45c2-a9fb-5c16e091fd2d` | _Variable Data Partition_ | Any native, optionally in LUKS | The first partition with this type UUID on the disk containing the root partition is automatically mounted to `/var/` — under the condition that its partition UUID matches the first 128 bit of `HMAC-SHA256(machine-id, 0x4d21b016b53445c2a9fb5c16e091fd2d)` (i.e. the SHA256 HMAC hash of the binary type UUID keyed by the machine ID as read from [`/etc/machine-id`](https://www.freedesktop.org/software/systemd/man/machine-id.html). This special requirement is made because `/var/` (unlike the other partition types listed here) is inherently private to a specific installation and cannot possibly be shared between multiple OS installations on the same disk, and thus should be bound to a specific instance of the OS, identified by its machine ID. If the partition is encrypted with LUKS, the device mapper file will be named `/dev/mapper/var`. |
diff --git a/docs/ENVIRONMENT.md b/docs/ENVIRONMENT.md
index 38752c9169..74a71bba93 100644
--- a/docs/ENVIRONMENT.md
+++ b/docs/ENVIRONMENT.md
@@ -83,6 +83,13 @@ All tools:
* `$SYSTEMD_RDRAND=0` — if set, the RDRAND instruction will never be used,
even if the CPU supports it.
+* `$SYSTEMD_SECCOMP=0` – if set, seccomp filters will not be enforced, even if
+ support for it is compiled in and available in the kernel.
+
+* `$SYSTEMD_LOG_SECCOMP=1` — if set, system calls blocked by seccomp filtering,
+ for example in systemd-nspawn, will be logged to the audit log, if the current
+ kernel version supports this.
+
systemctl:
* `$SYSTEMCTL_FORCE_BUS=1` — if set, do not connect to PID1's private D-Bus
@@ -93,10 +100,6 @@ systemctl:
* `$SYSTEMCTL_SKIP_SYSV=1` — if set, do not call out to SysV compatibility hooks.
-* `$SYSTEMD_LOG_SECCOMP=1` — if set, system calls blocked by seccomp filtering,
- for example in systemd-nspawn, will be logged to the audit log, if the current
- kernel version supports this.
-
systemd-nspawn:
* `$SYSTEMD_NSPAWN_UNIFIED_HIERARCHY=1` — if set, force nspawn into unified
diff --git a/docs/JOURNAL_FILE_FORMAT.md b/docs/JOURNAL_FILE_FORMAT.md
index e87a758026..3910669899 100644
--- a/docs/JOURNAL_FILE_FORMAT.md
+++ b/docs/JOURNAL_FILE_FORMAT.md
@@ -517,7 +517,7 @@ _packed_ struct HashTableObject {
```
The structure of both DATA_HASH_TABLE and FIELD_HASH_TABLE objects are
-identical. They implement a simple hash table, which each cell containing
+identical. They implement a simple hash table, with each cell containing
offsets to the head and tail of the singly linked list of the DATA and FIELD
objects, respectively. DATA's and FIELD's next_hash_offset field are used to
chain up the objects. Empty cells have both offsets set to 0.
@@ -651,15 +651,15 @@ look up the FIELD object and follow the chain of links to all DATA it includes.
### Writing
-When an entry is appended to the journal for each of its data fields the data
-hash table should be checked. If the data field does not yet exist in the file
-it should be appended and added to the data hash table. When a field data
-object is added the field hash table should be checked for the field name of
+When an entry is appended to the journal, for each of its data fields the data
+hash table should be checked. If the data field does not yet exist in the file,
+it should be appended and added to the data hash table. When a data field's data
+object is added, the field hash table should be checked for the field name of
the data field, and a field object be added if necessary. After all data fields
(and recursively all field names) of the new entry are appended and linked up
-in the hashtables the entry object should be appended and linked up too.
+in the hashtables, the entry object should be appended and linked up too.
-In regular intervals a tag object should be written if sealing is enabled (see
+At regular intervals a tag object should be written if sealing is enabled (see
above). Before the file is closed a tag should be written too, to seal it off.
Before writing an object, time and disk space limits should be checked and
diff --git a/docs/RELEASE.md b/docs/RELEASE.md
index b9bf196ccb..a93c0c6418 100644
--- a/docs/RELEASE.md
+++ b/docs/RELEASE.md
@@ -9,14 +9,14 @@ layout: default
1. Add all items to NEWS
2. Update the contributors list in NEWS (`ninja -C build git-contrib`)
3. Update the time and place in NEWS
-4. Update version and library numbers in `meson.build`
+4. [RC1] Update version and library numbers in `meson.build`
5. Check dbus docs with `ninja -C build man/update-dbus-docs`
6. Tag the release: `version=vXXX-rcY && git tag -s "${version}" -m "systemd ${version}"`
7. Do `ninja -C build`
8. Make sure that the version string and package string match: `build/systemctl --version`
9. Upload the documentation: `ninja -C build doc-sync`
-10. [After final release] Close the github milestone and open a new one (https://github.com/systemd/systemd/milestones)
+10. [FINAL] Close the github milestone and open a new one (https://github.com/systemd/systemd/milestones)
11. "Draft" a new release on github (https://github.com/systemd/systemd/releases/new), mark "This is a pre-release" if appropriate.
12. Check that announcement to systemd-devel, with a copy&paste from NEWS, was sent. This should happen automatically.
13. Update IRC topic (`/msg chanserv TOPIC #systemd Version NNN released`)
-14. [After final release] Also push commits to stable, create an empty -stable branch: `git push systemd-stable origin/master:master origin/master:refs/heads/${version}-stable`, and change the default branch to latest release (https://github.com/systemd/systemd-stable/settings/branches).
+14. [FINAL] Push commits to stable, create an empty -stable branch: `git push systemd-stable origin/master:master origin/master:refs/heads/${version}-stable`, and change the default branch to latest release (https://github.com/systemd/systemd-stable/settings/branches).
diff --git a/docs/RESOLVED-VPNS.md b/docs/RESOLVED-VPNS.md
new file mode 100644
index 0000000000..1010bed4b2
--- /dev/null
+++ b/docs/RESOLVED-VPNS.md
@@ -0,0 +1,267 @@
+---
+title: systemd-resolved and VPNs
+category: Networking
+layout: default
+---
+
+# `systemd-resolved.service` and VPNs
+
+`systemd-resolved.service` supports routing lookups for specific domains to specific
+interfaces. This is useful for hooking up VPN software with systemd-resolved
+and making sure the exact right lookups end up on the VPN and on the other
+interfaces.
+
+For a verbose explanation of `systemd-resolved.service`'s domain routing logic,
+see its [man
+page](https://www.freedesktop.org/software/systemd/man/systemd-resolved.service.html). This
+document is supposed to provide examples to use the concepts for the specific
+purpose of managing VPN DNS configuration.
+
+Let's first define two distinct VPN use-cases:
+
+1. *Corporate* VPNs, i.e. VPNs that open access to a specific set of additional
+ hosts. Only specific domains should be resolved via the VPN's DNS servers,
+ and everything that is not related to the company's domain names should go
+ to regular, non-VPN DNS instead.
+
+2. *Privacy* VPNs, i.e. VPNs that should be used for basically all DNS traffic,
+ once they are up. If this type of VPN is used, any regular, non-VPN DNS
+ servers should not get any traffic anymore.
+
+Then, let's briefly introduce three DNS routing concepts that software managing
+a network interface may configure.
+
+1. Search domains: these are traditional DNS configuration parameters and are
+ used to suffix non-qualified domain names (i.e. single-label ones), to turn
+ them into fully qualified domain names. Traditionally (before
+ `systemd-resolved.service`), search domain names are attached to a system's
+ IP configuration as a whole, in `systemd-resolved.service` they are
+ associated to individual interfaces instead, since they are typically
+ acquired through some network associated concept, such as a DHCP, IPv6RA or
+ PPP lease. Most importantly though: in `systemd-resolved.service` they are
+ not just used to suffix single-label domain names, but also for routing
+ domain name lookups: if a network interface has a search domain `foo.com`
+ configured on it, then any lookups for names ending in `.foo.com` (or for
+ `foo.com` itself) are preferably routed to the DNS servers configured on the
+ same network interface.
+
+2. Routing domains: these are very similar to search domains, but are purely
+ about DNS domain name lookup routing — they are not used for qualifying
+ single-label domain names. When it comes to routing assigning a routing
+ domain to a network interface is identical to assigning a search domain to
+ it.
+
+ Why the need to have both concepts, i.e. search *and* routing domains?
+ Mostly because in many cases the qualifying of single-label names is not
+ desirable (since security-sensitive), but needs to be supported for specific
+ use-cases. Routing domains are a concept `systemd-resolved.service`
+ introduced, while search domains are traditionally available and are part of
+ DHCP/IPv6RA/PPP leases and thus universally supported. In many cases routing
+ domains are probably the more appropriate concept, but not easily available,
+ since not part of DHCP/IPv6RA/PPP.
+
+ Routing domains for `systemd-resolved.service` are usually presented along
+ with search domains in mostly the same way, but prefixed with `~` to
+ differentiate them. i.e. `~foo.com` is a configured routing domain, while
+ `foo.com` would be a configured search domain.
+
+ One routing domain is particular interesting: `~.` — the catch-all routing
+ domain. (The *dot* domain `.` is how DNS denotes the "root" domain, i.e. the
+ parent domain of all domains, but itself.) When used on an interface any DNS
+ traffic is preferably routed to its DNS servers. (A search domain – i.e. `.`
+ instead of `~.` — would have the same effect, but given that it's mostly
+ pointless to suffix an unqualified domain with `.`, we generally declare it
+ as a routing domain, not a search domain).
+
+ Routing domains also have particular relevance when it comes to the reverse
+ lookup DNS domains `.in-addr.arpa` and `.ip6.arpa`. An interface that has
+ these (or sub-domains thereof) defined as routing domains, will be preferably
+ used for doing reverse IP to domain name lookups. e.g. declaring
+ `~168.192.in-addr.arpa` on an interface means that all lookups to find the
+ domain names for IPv4 addresses 192.168.x.y are preferable routed to it.
+
+3. The `default-route` boolean. This is a simple boolean value that may be set
+ on an interface. If true (the default), any DNS lookups for which no
+ matching routing or search domains are defined are routed to interfaces
+ marked like this. If false then the DNS servers on this interface are not
+ considered for routing lookups to except for the ones listed in the
+ search/routing domain list. An interface that has no search/routing domain
+ associated and also has this boolean off is not considered for *any*
+ lookups.
+
+One more thing to mention: in `systemd-resolved.service` if lookups match the
+search/routing domains of multiple interfaces at once, then they are sent to
+all of them in parallel, and the first positive reply used. If all lookups fail
+the last negative reply is used. This means the DNS zones on the relevant
+interfaces are "merged": domains existing on one but not the other will "just
+work" and vice versa.
+
+And one more note: the domain routing logic implemented is a tiny bit more
+complex that what described above: if there two interfaces have search domains
+that are suffix of each other, and a name is looked up that matches both, the
+interface with the longer match will win and get the lookup routed to is DNS
+servers. Only if the match has the same length, then both will be used in
+parallel. Example: one interface has `~foo.example.com` as routing domain, and
+another one `example.com` has search domain. A lookup for
+`waldo.foo.example.com` is the exclusively routed to the first interface's DNS
+server, since it matches by three suffix labels instead of just two. The fact
+that the matching length is taken into consideration for the routing decision
+is particularly relevant if you have one interface with the `~.` routing domain
+and another one with `~corp.company.example` — both suffixes match a lookup for
+`foo.corp.company.example`, but the latter interface wins, since the match is
+for four labels, while the other is for zero labels.
+
+# Putting it Together
+
+Let's discuss how the three DNS routing concepts above are best used for a
+reasonably complex scenario consisting of:
+
+1. One VPN interface of the *corporate* kind, maybe called `company0`. It makes
+ available a bunch of servers, all in the domain `corp.company.example`.
+
+2. One VPN interface of the *privacy* kind, maybe called `privacy0`. When it is
+ up all DNS traffic shall preferably routed to its DNS servers.
+
+3. One regular WiFi interface, maybe called `wifi0`. It has a regular DNS
+ server on it.
+
+Here's how to best configure this for `systemd-resolved.service`:
+
+1. `company0` should get a routing domain `~corp.company.example`
+ configured. (A search domain `corp.company.example` would work too, if
+ qualifying of single-label names is desired or the VPN lease information
+ does not provide for the concept of routing domains, but does support search
+ domains.) This interface should also set `default-route` to false, to ensure
+ that really only the DNS lookups for the company's servers are routed there
+ and nothing else. Finally, it might make sense to also configure a routing
+ domain `~2.0.192.in-addr.arpa` on the interface, ensuring that all IPv4
+ addresses from the 192.0.2.x range are preferably resolved via the DNS
+ server on this interface (assuming that that's the IPv4 address range the
+ company uses internally).
+
+2. `privacy0` should get a routing domain `~.` configured. The setting of
+ `default-route` for this interface is then irrelevant. This means: once the
+ interface is up, all DNS traffic is preferably routed there.
+
+3. `wifi0` should not get any special settings, except possibly whatever the
+ local WiFi router considers suitable as search domain, for example
+ `fritz.box`. The default `true` setting for `default-route` is good too.
+
+With this configuration if only `wifi0` is up, all DNS traffic goes to its DNS
+server, since there are no other interfaces with better matching DNS
+configuration. If `privacy0` is then upped, all DNS traffic will exclusively go
+to this interface now — with the exception of names below the `fritz.box`
+domain, which will continue to go directly to `wifi0`, as the search domain
+there says so. Now, if `company0` is also upped, it will receive DNS traffic
+for the company's internal domain and internal IP subnet range, but nothing
+else. If `privacy0` is then downed again, `wifi0` will get the regular DNS
+traffic again, and `company0` will still get the company's internal domain and
+IP subnet traffic and nothing else. Everything hence works as intended.
+
+# How to Implement this in Your VPN Software
+
+Most likely you want to expose a boolean in some way that declares whether a
+specific VPN is of the *corporate* or the *privacy* kind:
+
+1. If managing a *corporate* VPN, you configure any search domains the user or
+ the VPN contact point provided. And you set `default-route` to false. If you
+ have IP subnet information for the VPN, it might make sense to insert
+ `~….in-addr.arpa` and `~….ip6.arpa` reverse lookup routing domains for it.
+
+2. If managing a *privacy* VPN, you include `~.` in the routing domains, the
+ value for `default-route` is actually irrelevant, but I'd set it to true. No
+ need to configure any reverse lookup routing domains for it.
+
+(If you also manage regular WiFi/Ethernet devices, just configure them as
+traditional, i.e. with any search domains as acquired, do not set `~.` though,
+and do not disable `default-route`.)
+
+# The APIs
+
+Now we determined how we want to configure things, but how do you actually get
+the configuration to `systemd-resolved.service`? There are three relevant
+interfaces:
+
+1. Ideally, you use D-Bus and talk to [`systemd-resolved.service`'s D-Bus
+ API](https://www.freedesktop.org/software/systemd/man/org.freedesktop.resolve1.html)
+ directly. Use `SetLinkDomains()` to set the per-interface search and routing
+ domains on the interfaces you manage, and `SetLinkDefaultRoute()` to manage
+ the `default-route` boolean, all on the `org.freedesktop.resolve1.Manager`
+ interface of the `/org/freedesktop/resolve1` object.
+
+2. If that's not in the cards, you may shell out to
+ [`resolvectl`](https://www.freedesktop.org/software/systemd/man/resolvectl.html),
+ which is a thin wrapper around the D-Bus interface mentioned above. Use
+ `resolvectl domain <iface> …` to set the search/routing domains and
+ `resolvectl default-route <iface> …` to set the `default-route` boolean.
+
+ Example use from a shell callout of your VPN software for a *corporate* VPN:
+
+ resolvectl domain corporate0 '~corp-company.example' '~2.0.192.in-addr.arpa'
+ resolvectl default-route corporate0 false
+ resolvectl dns corporate0 192.0.2.1
+
+ Example use from a shell callout of your VPN software for a *privacy* VPN:
+
+ resolvectl domain privacy0 '~.'
+ resolvectl default-route privacy0 true
+ resolvectl dns privacy0 8.8.8.8
+
+3. If you don't want to use any `systemd-resolved` commands, you may use the
+ `resolvconf` wrapper we provide. `resolvectl` is actually a multi-call
+ binary and may be symlinked to `resolvconf`, and when invoked like that
+ behaves in a way that is largely compatible with FreeBSD's and
+ Ubuntu's/Debian's
+ [`resolvconf(8)`](https://manpages.ubuntu.com/manpages/trusty/man8/resolvconf.8.html)
+ tool. When the `-x` switch is specified, the `~.` routing domain is
+ automatically appended to the domain list configured, as appropriate for a
+ *privacy* VPN. Note that the `resolvconf` interface only covers *privacy*
+ VPNs and regular network interfaces (such as WiFi or Ethernet) well. The
+ *corporate* kind of VPN is not well covered, since the interface cannot
+ propagate the `default-route` boolean, nor can be used to configure the
+ `~….in-addr.arpa` or `~.ip6.arpa` routing domains.
+
+# Ordering
+
+When configuring per-interface DNS configuration settings it is wise to
+configure everything *before* actually upping the interface. Once the interface
+is up `systemd-resolved.service` might start using it, and hence it's important
+to have everything configured properly (this is particularly relevant when
+LLMNR or MulticastDNS is enabled, since that works without any explicitly
+configured DNS configuration). It is also wise to configure search/routing
+domains and the `default-route` boolean *before* configuring the DNS servers,
+as the former without the latter has no effect, but the latter without the
+former will result in DNS traffic possibly being generated, in a non-desirable
+way given that the routing information is not set yet.
+
+# Downgrading Search Domains to Routing Domains
+
+Many VPN implementations provide a way how VPN servers can inform VPN clients
+about search domains to use. In some cases it might make sense to install those
+as routing domains instead of search domains. Unqualified domain names usually
+imply a context of locality: the same unqualified name typically is expected to
+resolve to one system in one local network, and to another one in a different
+network. Search domains thus generally come with security implications: they
+might cause that unqualified domains are resolved in a different (possibly
+remote) context, contradicting user expectations. Thus it might be wise to
+downgrade *search domains* provided by VPN servers to *routing domains*, so
+that local unqualified name resolution remains untouched and strictly maintains
+its local focus — in particular in the aforementioned less trusted *corporate*
+VPN scenario.
+
+To illustrate this further, here's an example for an attack scenario using
+search domains: a user assumes the printer system they daily contact under the
+unqualified name "printer" is the network printer in their basement (with the
+fully qualified domain name "printer.home"). Sometimes the user joins the
+corporate VPN of their employer, which comes with a search domain
+"foocorp.example", so that the user's confidential documents (maybe a job
+application to a competing company) might end up being printed on
+"printer.foocorp.example" instead of "printer.home". If the local VPN software
+had downgraded the VPN's search domain to a routing domain "~foocorp.example",
+this mismapping would not have happened.
+
+When connecting to untrusted WiFi networks it might be wise to go one step
+further even: suppress installation of search/routing domains by the network
+entirely, to ensure that the local DNS information is only used for name
+resolution of qualified names and only when no better DNS configuration is
+available.
diff --git a/docs/TRANSIENT-SETTINGS.md b/docs/TRANSIENT-SETTINGS.md
index f0dc2ee20f..50b9a42fa1 100644
--- a/docs/TRANSIENT-SETTINGS.md
+++ b/docs/TRANSIENT-SETTINGS.md
@@ -374,6 +374,7 @@ Most timer unit settings are available to transient units.
✓ RemainAfterElapse=
✓ AccuracySec=
✓ RandomizedDelaySec=
+✓ FixedRandomDelay=
Unit=
```
diff --git a/docs/sysvinit/meson.build b/docs/sysvinit/meson.build
index fbac59ae49..261bd68ca3 100644
--- a/docs/sysvinit/meson.build
+++ b/docs/sysvinit/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
file = configure_file(
input : 'README.in',
diff --git a/docs/var-log/meson.build b/docs/var-log/meson.build
index 81b7865438..ba7957711d 100644
--- a/docs/var-log/meson.build
+++ b/docs/var-log/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
if conf.get('HAVE_SYSV_COMPAT') == 1 and get_option('create-log-dirs')
install_data('README',
diff --git a/hwdb.d/20-OUI.hwdb b/hwdb.d/20-OUI.hwdb
index 04f15d42db..dba1cc6f89 100644
--- a/hwdb.d/20-OUI.hwdb
+++ b/hwdb.d/20-OUI.hwdb
@@ -6597,7 +6597,7 @@ OUI:0008AF*
ID_OUI_FROM_DATABASE=Novatec Corporation
OUI:0008B0*
- ID_OUI_FROM_DATABASE=BKtel communications GmbH
+ ID_OUI_FROM_DATABASE=HUBER+SUHNER BKtel GmbH
OUI:0008B1*
ID_OUI_FROM_DATABASE=ProQuent Systems
@@ -14187,7 +14187,7 @@ OUI:001292*
ID_OUI_FROM_DATABASE=Griffin Technology
OUI:001293*
- ID_OUI_FROM_DATABASE=GE Energy
+ ID_OUI_FROM_DATABASE=ABB Power Protection (CH)
OUI:001294*
ID_OUI_FROM_DATABASE=SUMITOMO ELECTRIC DEVICE INNOVATIONS, INC
@@ -21390,7 +21390,7 @@ OUI:001BC502F*
ID_OUI_FROM_DATABASE=Fibrain Co. Ltd.
OUI:001BC5030*
- ID_OUI_FROM_DATABASE=OctoGate it Security Systems GmbH
+ ID_OUI_FROM_DATABASE=OctoGate IT Security Systems GmbH
OUI:001BC5031*
ID_OUI_FROM_DATABASE=ADIXEIN LIMITED
@@ -31412,6 +31412,9 @@ OUI:0035FF*
OUI:003676*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+OUI:0036BE*
+ ID_OUI_FROM_DATABASE=Northwest Towers
+
OUI:0036F8*
ID_OUI_FROM_DATABASE=Conti Temic microelectronic GmbH
@@ -31460,6 +31463,9 @@ OUI:003CC5*
OUI:003D41*
ID_OUI_FROM_DATABASE=Hatteland Computer AS
+OUI:003DE1*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:003DE8*
ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
@@ -33128,6 +33134,9 @@ OUI:005D73*
OUI:005E0C*
ID_OUI_FROM_DATABASE=HMD Global Oy
+OUI:005F67*
+ ID_OUI_FROM_DATABASE=TP-Link Corporation Limited
+
OUI:005F86*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
@@ -34068,7 +34077,7 @@ OUI:00778D*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
OUI:0077E4*
- ID_OUI_FROM_DATABASE=Nokia
+ ID_OUI_FROM_DATABASE=Nokia Solutions and Networks GmbH & Co. KG
OUI:007888*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
@@ -36504,7 +36513,7 @@ OUI:00A0FA*
ID_OUI_FROM_DATABASE=Marconi Communication GmbH
OUI:00A0FB*
- ID_OUI_FROM_DATABASE=TORAY ENGINEERING CO., LTD.
+ ID_OUI_FROM_DATABASE=Toray Engineering D Solutions Co., Ltd.
OUI:00A0FC*
ID_OUI_FROM_DATABASE=IMAGE SCIENCES, INC.
@@ -38471,6 +38480,9 @@ OUI:00DB70*
OUI:00DBDF*
ID_OUI_FROM_DATABASE=Intel Corporate
+OUI:00DCB2*
+ ID_OUI_FROM_DATABASE=Extreme Networks, Inc.
+
OUI:00DD00*
ID_OUI_FROM_DATABASE=UNGERMANN-BASS INC.
@@ -39362,6 +39374,9 @@ OUI:00F22C*
OUI:00F28B*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+OUI:00F361*
+ ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
+
OUI:00F3DB*
ID_OUI_FROM_DATABASE=WOO Sports
@@ -39641,6 +39656,9 @@ OUI:0446CF*
OUI:04489A*
ID_OUI_FROM_DATABASE=Apple, Inc.
+OUI:04495D*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:044A50*
ID_OUI_FROM_DATABASE=Ramaxel Technology (Shenzhen) limited company
@@ -39848,9 +39866,15 @@ OUI:047863*
OUI:047970*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+OUI:047975*
+ ID_OUI_FROM_DATABASE=Honor Device Co., Ltd.
+
OUI:0479B7*
ID_OUI_FROM_DATABASE=Texas Instruments
+OUI:047A0B*
+ ID_OUI_FROM_DATABASE=Beijing Xiaomi Electronics Co., Ltd.
+
OUI:047D50*
ID_OUI_FROM_DATABASE=Shenzhen Kang Ying Technology Co.Ltd.
@@ -40304,6 +40328,9 @@ OUI:04EE91*
OUI:04F021*
ID_OUI_FROM_DATABASE=Compex Systems Pte Ltd
+OUI:04F03E*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:04F128*
ID_OUI_FROM_DATABASE=HMD Global Oy
@@ -40337,6 +40364,9 @@ OUI:04F8F8*
OUI:04F938*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+OUI:04F993*
+ ID_OUI_FROM_DATABASE=Infinix mobility limited
+
OUI:04F9D9*
ID_OUI_FROM_DATABASE=Speaker Electronic(Jiashan) Co.,Ltd
@@ -41138,6 +41168,9 @@ OUI:0876FF*
OUI:087808*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:08798C*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:087999*
ID_OUI_FROM_DATABASE=AIM GmbH
@@ -41225,11 +41258,14 @@ OUI:089758*
OUI:089798*
ID_OUI_FROM_DATABASE=COMPAL INFORMATION (KUNSHAN) CO., LTD.
+OUI:089AC7*
+ ID_OUI_FROM_DATABASE=zte corporation
+
OUI:089B4B*
ID_OUI_FROM_DATABASE=iKuai Networks
OUI:089BB9*
- ID_OUI_FROM_DATABASE=Nokia
+ ID_OUI_FROM_DATABASE=Nokia Solutions and Networks GmbH & Co. KG
OUI:089C86*
ID_OUI_FROM_DATABASE=Nokia Shanghai Bell Co., Ltd.
@@ -41288,6 +41324,9 @@ OUI:08B2A3*
OUI:08B3AF*
ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd.
+OUI:08B4B1*
+ ID_OUI_FROM_DATABASE=Google, Inc.
+
OUI:08B4CF*
ID_OUI_FROM_DATABASE=Abicom International
@@ -41540,6 +41579,9 @@ OUI:08FC88*
OUI:08FD0E*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:08FF24*
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
+
OUI:0C01DB*
ID_OUI_FROM_DATABASE=Infinix mobility limited
@@ -41588,6 +41630,9 @@ OUI:0C17F1*
OUI:0C191F*
ID_OUI_FROM_DATABASE=Inform Electronik
+OUI:0C19F8*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:0C1A10*
ID_OUI_FROM_DATABASE=Acoustic Stream
@@ -41738,6 +41783,9 @@ OUI:0C4F5A*
OUI:0C5101*
ID_OUI_FROM_DATABASE=Apple, Inc.
+OUI:0C51D0*
+ ID_OUI_FROM_DATABASE=Altice Labs S.A.
+
OUI:0C51F7*
ID_OUI_FROM_DATABASE=CHAUVIN ARNOUX
@@ -41828,6 +41876,9 @@ OUI:0C722C*
OUI:0C72D9*
ID_OUI_FROM_DATABASE=zte corporation
+OUI:0C7329*
+ ID_OUI_FROM_DATABASE=Sercomm Corporation.
+
OUI:0C73BE*
ID_OUI_FROM_DATABASE=Dongguan Haimai Electronie Technology Co.,Ltd
@@ -41898,7 +41949,7 @@ OUI:0C7A15*
ID_OUI_FROM_DATABASE=Intel Corporate
OUI:0C7C28*
- ID_OUI_FROM_DATABASE=Nokia
+ ID_OUI_FROM_DATABASE=Nokia Solutions and Networks GmbH & Co. KG
OUI:0C7D7C*
ID_OUI_FROM_DATABASE=Kexiang Information Technology Co, Ltd.
@@ -41990,6 +42041,9 @@ OUI:0C924E*
OUI:0C9301*
ID_OUI_FROM_DATABASE=PT. Prasimax Inovasi Teknologi
+OUI:0C938F*
+ ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+
OUI:0C93FB*
ID_OUI_FROM_DATABASE=BNS Solutions
@@ -41999,6 +42053,9 @@ OUI:0C9541*
OUI:0C96BF*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+OUI:0C96CD*
+ ID_OUI_FROM_DATABASE=MERCURY CORPORATION
+
OUI:0C96E6*
ID_OUI_FROM_DATABASE=Cloud Network Technology (Samoa) Limited
@@ -42890,6 +42947,9 @@ OUI:108EBA*
OUI:108EE0*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:108FFE*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:109266*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
@@ -43085,6 +43145,9 @@ OUI:10CE45*
OUI:10CEA9*
ID_OUI_FROM_DATABASE=Texas Instruments
+OUI:10CEE9*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:10D07A*
ID_OUI_FROM_DATABASE=AMPAK Technology, Inc.
@@ -43202,6 +43265,9 @@ OUI:10E953*
OUI:10EA59*
ID_OUI_FROM_DATABASE=Cisco SPVTG
+OUI:10EC81*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
OUI:10EED9*
ID_OUI_FROM_DATABASE=Canoga Perkins Corporation
@@ -43340,6 +43406,9 @@ OUI:14169E*
OUI:141877*
ID_OUI_FROM_DATABASE=Dell Inc.
+OUI:1418C3*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
OUI:141A51*
ID_OUI_FROM_DATABASE=Treetech Sistemas Digitais
@@ -43415,6 +43484,9 @@ OUI:142233*
OUI:1422DB*
ID_OUI_FROM_DATABASE=eero inc.
+OUI:14230A*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:1423D7*
ID_OUI_FROM_DATABASE=EUTRONIX CO., LTD.
@@ -43505,6 +43577,9 @@ OUI:143EBF*
OUI:143F27*
ID_OUI_FROM_DATABASE=Noccela Oy
+OUI:143FA6*
+ ID_OUI_FROM_DATABASE=Sony Home Entertainment&Sound Products Inc
+
OUI:143FC3*
ID_OUI_FROM_DATABASE=SnapAV
@@ -43523,6 +43598,9 @@ OUI:144319*
OUI:14444A*
ID_OUI_FROM_DATABASE=Apollo Seiko Ltd.
+OUI:144658*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:1446E4*
ID_OUI_FROM_DATABASE=AVISTEL
@@ -43649,6 +43727,9 @@ OUI:145BE1*
OUI:145E45*
ID_OUI_FROM_DATABASE=Bamboo Systems Group
+OUI:145E69*
+ ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+
OUI:145F94*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
@@ -43769,6 +43850,9 @@ OUI:1495CE*
OUI:1496E5*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:149877*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:14987D*
ID_OUI_FROM_DATABASE=Technicolor CH USA Inc.
@@ -43814,6 +43898,9 @@ OUI:14A32F*
OUI:14A364*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:14A3B4*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:14A51A*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
@@ -43997,6 +44084,9 @@ OUI:14D11F*
OUI:14D169*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+OUI:14D19E*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:14D4FE*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
@@ -44033,6 +44123,9 @@ OUI:14E7C8*
OUI:14E9B2*
ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD
+OUI:14EB08*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:14EB33*
ID_OUI_FROM_DATABASE=BSMediasoft Co., Ltd.
@@ -44162,6 +44255,9 @@ OUI:181714*
OUI:181725*
ID_OUI_FROM_DATABASE=Cameo Communications, Inc.
+OUI:18188B*
+ ID_OUI_FROM_DATABASE=FUJITSU CONNECTED TECHNOLOGIES LIMITED
+
OUI:18193F*
ID_OUI_FROM_DATABASE=Tamtron Oy
@@ -44472,7 +44568,7 @@ OUI:1868CB*
ID_OUI_FROM_DATABASE=Hangzhou Hikvision Digital Technology Co.,Ltd.
OUI:1869D8*
- ID_OUI_FROM_DATABASE=HANGZHOU AIXIANGJI TECHNOLOGY CO., LTD
+ ID_OUI_FROM_DATABASE=Tuya Smart Inc.
OUI:1869DA*
ID_OUI_FROM_DATABASE=China Mobile Group Device Co.,Ltd.
@@ -44813,6 +44909,9 @@ OUI:18CC23*
OUI:18CC88*
ID_OUI_FROM_DATABASE=Hitachi Johnson Controls Air
+OUI:18CE94*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
OUI:18CF24*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
@@ -46587,7 +46686,7 @@ OUI:20780B*
ID_OUI_FROM_DATABASE=Delta Faucet Company
OUI:207852*
- ID_OUI_FROM_DATABASE=Nokia
+ ID_OUI_FROM_DATABASE=Nokia Solutions and Networks GmbH & Co. KG
OUI:2078F0*
ID_OUI_FROM_DATABASE=Apple, Inc.
@@ -46928,6 +47027,9 @@ OUI:20EE28*
OUI:20EEC6*
ID_OUI_FROM_DATABASE=Elefirst Science & Tech Co ., ltd
+OUI:20EFBD*
+ ID_OUI_FROM_DATABASE=Roku, Inc
+
OUI:20F002*
ID_OUI_FROM_DATABASE=MTData Developments Pty. Ltd.
@@ -47030,6 +47132,9 @@ OUI:240B0A*
OUI:240B2A*
ID_OUI_FROM_DATABASE=Viettel Group
+OUI:240B88*
+ ID_OUI_FROM_DATABASE=Taicang T&W Electronics
+
OUI:240BB1*
ID_OUI_FROM_DATABASE=KOSTAL Industrie Elektrik GmbH
@@ -47309,6 +47414,9 @@ OUI:245A4C*
OUI:245AB5*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:245B83*
+ ID_OUI_FROM_DATABASE=Renesas Electronics (Penang) Sdn. Bhd.
+
OUI:245BA7*
ID_OUI_FROM_DATABASE=Apple, Inc.
@@ -47717,6 +47825,9 @@ OUI:24E5AA*
OUI:24E6BA*
ID_OUI_FROM_DATABASE=JSC Zavod im. Kozitsky
+OUI:24E927*
+ ID_OUI_FROM_DATABASE=TomTom International BV
+
OUI:24E9B3*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
@@ -47738,6 +47849,9 @@ OUI:24EC99*
OUI:24ECD6*
ID_OUI_FROM_DATABASE=CSG Science & Technology Co.,Ltd.Hefei
+OUI:24EDFD*
+ ID_OUI_FROM_DATABASE=Siemens Canada Limited
+
OUI:24EE3A*
ID_OUI_FROM_DATABASE=Chengdu Yingji Electronic Hi-tech Co Ltd
@@ -47801,6 +47915,9 @@ OUI:2802D8*
OUI:2804E0*
ID_OUI_FROM_DATABASE=FERMAX ELECTRONICA S.A.U.
+OUI:28052E*
+ ID_OUI_FROM_DATABASE=Dematic Corp
+
OUI:28061E*
ID_OUI_FROM_DATABASE=NINGBO GLOBAL USEFUL ELECTRIC CO.,LTD
@@ -47864,6 +47981,9 @@ OUI:281878*
OUI:2818FD*
ID_OUI_FROM_DATABASE=Aditya Infotech Ltd.
+OUI:281B04*
+ ID_OUI_FROM_DATABASE=Zalliant LLC
+
OUI:282246*
ID_OUI_FROM_DATABASE=Beijing Sinoix Communication Co., LTD
@@ -49364,6 +49484,9 @@ OUI:2C768A*
OUI:2C780E*
ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+OUI:2C793D*
+ ID_OUI_FROM_DATABASE=Boditech Med
+
OUI:2C79D7*
ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS
@@ -49643,6 +49766,9 @@ OUI:2CD141F*
OUI:2CD1DA*
ID_OUI_FROM_DATABASE=Sanjole, Inc.
+OUI:2CD26B*
+ ID_OUI_FROM_DATABASE=FN-LINK TECHNOLOGY LIMITED
+
OUI:2CD2E3*
ID_OUI_FROM_DATABASE=Guangzhou Aoshi Electronic Co.,Ltd
@@ -50108,6 +50234,9 @@ OUI:304B07*
OUI:304C7E*
ID_OUI_FROM_DATABASE=Panasonic Electric Works Automation Controls Techno Co.,Ltd.
+OUI:304E1B*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:304EC3*
ID_OUI_FROM_DATABASE=Tianjin Techua Technology Co., Ltd.
@@ -50885,6 +51014,9 @@ OUI:342FBD*
OUI:343111*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:34318F*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:3431C4*
ID_OUI_FROM_DATABASE=AVM GmbH
@@ -50993,6 +51125,9 @@ OUI:345760*
OUI:345840*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+OUI:34587C*
+ ID_OUI_FROM_DATABASE=MIRAE INFORMATION TECHNOLOGY CO., LTD.
+
OUI:345A06*
ID_OUI_FROM_DATABASE=SHARP Corporation
@@ -51152,6 +51287,9 @@ OUI:34873D*
OUI:34885D*
ID_OUI_FROM_DATABASE=Logitech Far East
+OUI:348A12*
+ ID_OUI_FROM_DATABASE=Aruba, a Hewlett Packard Enterprise Company
+
OUI:348A7B*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
@@ -51323,6 +51461,9 @@ OUI:34C059*
OUI:34C0F9*
ID_OUI_FROM_DATABASE=Rockwell Automation
+OUI:34C103*
+ ID_OUI_FROM_DATABASE=Hangzhou Huamu Technology Co.,Ltd.
+
OUI:34C3AC*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
@@ -51504,7 +51645,7 @@ OUI:34E1D18*
ID_OUI_FROM_DATABASE=Hubitat Inc.
OUI:34E1D19*
- ID_OUI_FROM_DATABASE=Apart Audio NV
+ ID_OUI_FROM_DATABASE=Biamp
OUI:34E1D1A*
ID_OUI_FROM_DATABASE=OrCam Technologies
@@ -51596,6 +51737,9 @@ OUI:34F64B*
OUI:34F6D2*
ID_OUI_FROM_DATABASE=Panasonic Taiwan Co.,Ltd.
+OUI:34F716*
+ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
+
OUI:34F8E7*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
@@ -51692,6 +51836,9 @@ OUI:380FE4*
OUI:3810D5*
ID_OUI_FROM_DATABASE=AVM Audiovisuelles Marketing und Computersysteme GmbH
+OUI:3810F0*
+ ID_OUI_FROM_DATABASE=Aruba, a Hewlett Packard Enterprise Company
+
OUI:38144E*
ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD
@@ -51854,6 +52001,9 @@ OUI:383BC8*
OUI:383C9C*
ID_OUI_FROM_DATABASE=Fujian Newland Payment Technology Co.,Ltd.
+OUI:383D5B*
+ ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD
+
OUI:383F10*
ID_OUI_FROM_DATABASE=DBL Technology Ltd.
@@ -52259,6 +52409,9 @@ OUI:38B54D*
OUI:38B5BD*
ID_OUI_FROM_DATABASE=E.G.O. Elektro-Ger
+OUI:38B5D3*
+ ID_OUI_FROM_DATABASE=SecuWorks
+
OUI:38B725*
ID_OUI_FROM_DATABASE=Wistron Infocomm (Zhongshan) Corporation
@@ -52640,6 +52793,9 @@ OUI:3C0518*
OUI:3C05AB*
ID_OUI_FROM_DATABASE=Product Creation Studio
+OUI:3C06A7*
+ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
+
OUI:3C0754*
ID_OUI_FROM_DATABASE=Apple, Inc.
@@ -53273,6 +53429,9 @@ OUI:3C99F7*
OUI:3C9A77*
ID_OUI_FROM_DATABASE=Technicolor CH USA Inc.
+OUI:3C9BC6*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:3C9BD6*
ID_OUI_FROM_DATABASE=Vizio, Inc
@@ -54116,6 +54275,9 @@ OUI:408B07*
OUI:408BF6*
ID_OUI_FROM_DATABASE=Shenzhen TCL New Technology Co., Ltd
+OUI:408C1F*
+ ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+
OUI:408C4C*
ID_OUI_FROM_DATABASE=Shenzhen MiaoMing Intelligent Technology Co.,Ltd
@@ -54347,6 +54509,9 @@ OUI:40C4D6*
OUI:40C62A*
ID_OUI_FROM_DATABASE=Shanghai Jing Ren Electronic Technology Co., Ltd.
+OUI:40C711*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:40C729*
ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS
@@ -54413,6 +54578,9 @@ OUI:40DCA5*
OUI:40DDD1*
ID_OUI_FROM_DATABASE=Beautiful Card Corporation
+OUI:40DE17*
+ ID_OUI_FROM_DATABASE=Shenzhen Lanfeng Times Industrial Co.,Ltd.
+
OUI:40DEAD*
ID_OUI_FROM_DATABASE=Juniper Networks
@@ -54485,6 +54653,9 @@ OUI:40ED98D*
OUI:40ED98E*
ID_OUI_FROM_DATABASE=BORDA TECHNOLOGY
+OUI:40EE15*
+ ID_OUI_FROM_DATABASE=Zioncom Electronics (Shenzhen) Ltd.
+
OUI:40EEDD*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
@@ -54974,6 +55145,30 @@ OUI:446D6C*
OUI:446EE5*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+OUI:446FD80*
+ ID_OUI_FROM_DATABASE=Sichuan subao network technology ltd.co.
+
+OUI:446FD81*
+ ID_OUI_FROM_DATABASE=Shenzhen Furuilian Electronic Co.,Ltd.
+
+OUI:446FD84*
+ ID_OUI_FROM_DATABASE=lb Lautsprecher gmbH
+
+OUI:446FD85*
+ ID_OUI_FROM_DATABASE=ZHEJIANG SHIP ELECTRONICS & TECHNOLOGY CO., LTD.
+
+OUI:446FD87*
+ ID_OUI_FROM_DATABASE=ITC
+
+OUI:446FD88*
+ ID_OUI_FROM_DATABASE=Global Telecom Engineering, Inc
+
+OUI:446FD8B*
+ ID_OUI_FROM_DATABASE=Beijing gpthink technology co.,LTD.
+
+OUI:446FD8D*
+ ID_OUI_FROM_DATABASE=SCAIME
+
OUI:44700B*
ID_OUI_FROM_DATABASE=IFFU
@@ -55178,6 +55373,9 @@ OUI:44B433*
OUI:44B462*
ID_OUI_FROM_DATABASE=Flextronics Tech.(Ind) Pvt Ltd
+OUI:44B6BE*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
OUI:44B994*
ID_OUI_FROM_DATABASE=Douglas Lighting Controls
@@ -55259,6 +55457,9 @@ OUI:44D3CA*
OUI:44D437*
ID_OUI_FROM_DATABASE=Inteno Broadband Technology AB
+OUI:44D453*
+ ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS
+
OUI:44D4E0*
ID_OUI_FROM_DATABASE=Sony Mobile Communications Inc
@@ -55655,6 +55856,9 @@ OUI:484BAA*
OUI:484BD4*
ID_OUI_FROM_DATABASE=Technicolor CH USA Inc.
+OUI:484C29*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:484C86*
ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
@@ -55673,6 +55877,9 @@ OUI:485169*
OUI:4851B7*
ID_OUI_FROM_DATABASE=Intel Corporate
+OUI:4851C5*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
OUI:485261*
ID_OUI_FROM_DATABASE=SOREEL
@@ -55880,6 +56087,9 @@ OUI:488AD2*
OUI:488B0A*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+OUI:488C63*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:488D36*
ID_OUI_FROM_DATABASE=Arcadyan Corporation
@@ -56160,7 +56370,7 @@ OUI:48EB62*
ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd.
OUI:48EC5B*
- ID_OUI_FROM_DATABASE=Nokia
+ ID_OUI_FROM_DATABASE=Nokia Solutions and Networks GmbH & Co. KG
OUI:48ED80*
ID_OUI_FROM_DATABASE=daesung eltec
@@ -56276,6 +56486,9 @@ OUI:4C0F6E*
OUI:4C0FC7*
ID_OUI_FROM_DATABASE=Earda Technologies co Ltd
+OUI:4C1154*
+ ID_OUI_FROM_DATABASE=Mobiwire Mobiles (NingBo) Co., LTD
+
OUI:4C1159*
ID_OUI_FROM_DATABASE=Vision Information & Communications
@@ -56645,6 +56858,9 @@ OUI:4C7487*
OUI:4C74BF*
ID_OUI_FROM_DATABASE=Apple, Inc.
+OUI:4C7525*
+ ID_OUI_FROM_DATABASE=Espressif Inc.
+
OUI:4C7625*
ID_OUI_FROM_DATABASE=Dell Inc.
@@ -56781,7 +56997,7 @@ OUI:4C93A63*
ID_OUI_FROM_DATABASE=Commsignia, Ltd.
OUI:4C93A64*
- ID_OUI_FROM_DATABASE=4D Sistem Ticaret A.S.
+ ID_OUI_FROM_DATABASE=4TheWall - 4D Sistem A.S
OUI:4C93A65*
ID_OUI_FROM_DATABASE=Private
@@ -57344,6 +57560,9 @@ OUI:501D93*
OUI:501E2D*
ID_OUI_FROM_DATABASE=StreamUnlimited Engineering GmbH
+OUI:501FC6*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:50206B*
ID_OUI_FROM_DATABASE=Emerson Climate Technologies Transportation Solutions
@@ -57398,6 +57617,9 @@ OUI:502DBB*
OUI:502DF4*
ID_OUI_FROM_DATABASE=Phytec Messtechnik GmbH
+OUI:502DFB*
+ ID_OUI_FROM_DATABASE=IGShare Co., Ltd.
+
OUI:502E5C*
ID_OUI_FROM_DATABASE=HTC Corporation
@@ -57446,6 +57668,9 @@ OUI:503CEA*
OUI:503DA1*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:503DC6*
+ ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
+
OUI:503DE5*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
@@ -57515,12 +57740,18 @@ OUI:5050CE*
OUI:5051A9*
ID_OUI_FROM_DATABASE=Texas Instruments
+OUI:50523B*
+ ID_OUI_FROM_DATABASE=Nokia
+
OUI:5052D2*
ID_OUI_FROM_DATABASE=Hangzhou Telin Technologies Co., Limited
OUI:505527*
ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
+OUI:50558D*
+ ID_OUI_FROM_DATABASE=China Mobile IOT Company Limited
+
OUI:505663*
ID_OUI_FROM_DATABASE=Texas Instruments
@@ -57932,6 +58163,9 @@ OUI:50C006*
OUI:50C271*
ID_OUI_FROM_DATABASE=SECURETECH INC
+OUI:50C3A2*
+ ID_OUI_FROM_DATABASE=nFore Technology Co.,Ltd.
+
OUI:50C4DD*
ID_OUI_FROM_DATABASE=BUFFALO.INC
@@ -58100,6 +58334,9 @@ OUI:50EB71*
OUI:50EC50*
ID_OUI_FROM_DATABASE=Beijing Xiaomi Mobile Software Co., Ltd
+OUI:50ED3C*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:50ED78*
ID_OUI_FROM_DATABASE=Changzhou Yongse Infotech Co.,Ltd
@@ -58235,6 +58472,12 @@ OUI:5405DB*
OUI:54068B*
ID_OUI_FROM_DATABASE=Ningbo Deli Kebei Technology Co.LTD
+OUI:540764*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
+OUI:540910*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:540955*
ID_OUI_FROM_DATABASE=zte corporation
@@ -58292,6 +58535,9 @@ OUI:541FD5*
OUI:542018*
ID_OUI_FROM_DATABASE=Tely Labs
+OUI:54211D*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:542160*
ID_OUI_FROM_DATABASE=Alula
@@ -58370,6 +58616,9 @@ OUI:543968*
OUI:5439DF*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+OUI:543AD6*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
OUI:543B30*
ID_OUI_FROM_DATABASE=duagon AG
@@ -58388,6 +58637,9 @@ OUI:544249*
OUI:544408*
ID_OUI_FROM_DATABASE=Nokia Corporation
+OUI:544617*
+ ID_OUI_FROM_DATABASE=zte corporation
+
OUI:54466B*
ID_OUI_FROM_DATABASE=Shenzhen CZTIC Electronic Technology Co., Ltd
@@ -58745,6 +58997,9 @@ OUI:54A619*
OUI:54A65C*
ID_OUI_FROM_DATABASE=Technicolor CH USA Inc.
+OUI:54A6DB*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:54A703*
ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
@@ -58853,6 +59108,9 @@ OUI:54D9C6*
OUI:54D9E4*
ID_OUI_FROM_DATABASE=BRILLIANTTS CO., LTD
+OUI:54DBA2*
+ ID_OUI_FROM_DATABASE=Fibrain
+
OUI:54DC1D*
ID_OUI_FROM_DATABASE=Yulong Computer Telecommunication Scientific (Shenzhen) Co.,Ltd
@@ -58946,6 +59204,9 @@ OUI:54F294*
OUI:54F5B6*
ID_OUI_FROM_DATABASE=ORIENTAL PACIFIC INTERNATIONAL LIMITED
+OUI:54F607*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:54F666*
ID_OUI_FROM_DATABASE=Berthold Technologies GmbH and Co.KG
@@ -58959,7 +59220,7 @@ OUI:54FA3E*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
OUI:54FA96*
- ID_OUI_FROM_DATABASE=Nokia
+ ID_OUI_FROM_DATABASE=Nokia Solutions and Networks GmbH & Co. KG
OUI:54FB58*
ID_OUI_FROM_DATABASE=WISEWARE, Lda
@@ -59156,6 +59417,9 @@ OUI:583F54*
OUI:58404E*
ID_OUI_FROM_DATABASE=Apple, Inc.
+OUI:584120*
+ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
+
OUI:5842E4*
ID_OUI_FROM_DATABASE=Baxter International Inc
@@ -59465,6 +59729,9 @@ OUI:58A2B5*
OUI:58A48E*
ID_OUI_FROM_DATABASE=PixArt Imaging Inc.
+OUI:58A639*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
OUI:58A76F*
ID_OUI_FROM_DATABASE=iD corporation
@@ -59477,6 +59744,12 @@ OUI:58A87B*
OUI:58AC78*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+OUI:58AE2B*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
+OUI:58AEA8*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:58B035*
ID_OUI_FROM_DATABASE=Apple, Inc.
@@ -59525,6 +59798,9 @@ OUI:58BDA3*
OUI:58BDF9*
ID_OUI_FROM_DATABASE=Sigrand
+OUI:58BE72*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:58BFEA*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
@@ -59996,6 +60272,9 @@ OUI:5C546D*
OUI:5C5578*
ID_OUI_FROM_DATABASE=iryx corp
+OUI:5C56A4*
+ ID_OUI_FROM_DATABASE=Wanan Hongsheng Electronic Co.Ltd
+
OUI:5C56ED*
ID_OUI_FROM_DATABASE=3pleplay Electronics Private Limited
@@ -60077,6 +60356,9 @@ OUI:5C6F4F*
OUI:5C6F69*
ID_OUI_FROM_DATABASE=Broadcom Limited
+OUI:5C7017*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:5C70A3*
ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
@@ -60161,6 +60443,9 @@ OUI:5C857ED*
OUI:5C857EE*
ID_OUI_FROM_DATABASE=Guoyi Liangzi (Hefei) Technology Co., Ltd(CIQTEK)
+OUI:5C85F8*
+ ID_OUI_FROM_DATABASE=SHENZHEN KAIFA TECHNOLOGY CO.,LTD.
+
OUI:5C8613*
ID_OUI_FROM_DATABASE=Beijing Zhoenet Technology Co., Ltd
@@ -60236,6 +60521,9 @@ OUI:5C97F3*
OUI:5C9960*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:5C9AA1*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:5C9AD8*
ID_OUI_FROM_DATABASE=FUJITSU LIMITED
@@ -60257,6 +60545,9 @@ OUI:5CA3EB*
OUI:5CA48A*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+OUI:5CA4A4*
+ ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD
+
OUI:5CA5BC*
ID_OUI_FROM_DATABASE=eero inc.
@@ -60332,6 +60623,9 @@ OUI:5CBA37*
OUI:5CBAEF*
ID_OUI_FROM_DATABASE=CHONGQING FUGUI ELECTRONICS CO.,LTD.
+OUI:5CBD9A*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:5CBD9E*
ID_OUI_FROM_DATABASE=HONGKONG MIRACLE EAGLE TECHNOLOGY(GROUP) LIMITED
@@ -60347,6 +60641,9 @@ OUI:5CC213*
OUI:5CC307*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+OUI:5CC336*
+ ID_OUI_FROM_DATABASE=ittim
+
OUI:5CC5D4*
ID_OUI_FROM_DATABASE=Intel Corporate
@@ -60434,6 +60731,9 @@ OUI:5CDC96*
OUI:5CDD70*
ID_OUI_FROM_DATABASE=Hangzhou H3C Technologies Co., Limited
+OUI:5CDE34*
+ ID_OUI_FROM_DATABASE=SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.
+
OUI:5CE0C5*
ID_OUI_FROM_DATABASE=Intel Corporate
@@ -60467,6 +60767,9 @@ OUI:5CE3B6*
OUI:5CE50C*
ID_OUI_FROM_DATABASE=Beijing Xiaomi Mobile Software Co., Ltd
+OUI:5CE747*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:5CE7A0*
ID_OUI_FROM_DATABASE=Nokia
@@ -60854,6 +61157,9 @@ OUI:605317*
OUI:605464*
ID_OUI_FROM_DATABASE=Eyedro Green Solutions Inc.
+OUI:6055F9*
+ ID_OUI_FROM_DATABASE=Espressif Inc.
+
OUI:605661*
ID_OUI_FROM_DATABASE=IXECLOUD Tech
@@ -60908,6 +61214,9 @@ OUI:606BBD*
OUI:606BFF*
ID_OUI_FROM_DATABASE=Nintendo Co.,Ltd
+OUI:606C63*
+ ID_OUI_FROM_DATABASE=Hitron Technologies. Inc
+
OUI:606C66*
ID_OUI_FROM_DATABASE=Intel Corporate
@@ -61134,7 +61443,7 @@ OUI:60A730*
ID_OUI_FROM_DATABASE=Shenzhen Yipinfang Internet Technology Co.,Ltd
OUI:60A8FE*
- ID_OUI_FROM_DATABASE=Nokia
+ ID_OUI_FROM_DATABASE=Nokia Solutions and Networks GmbH & Co. KG
OUI:60A9B0*
ID_OUI_FROM_DATABASE=Merchandising Technologies, Inc
@@ -61529,6 +61838,9 @@ OUI:641331*
OUI:64136C*
ID_OUI_FROM_DATABASE=zte corporation
+OUI:6413AB*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:641666*
ID_OUI_FROM_DATABASE=Nest Labs Inc.
@@ -61580,6 +61892,9 @@ OUI:642400*
OUI:64255E*
ID_OUI_FROM_DATABASE=Observint Technologies, Inc.
+OUI:642656*
+ ID_OUI_FROM_DATABASE=Shenzhen Fanweitai Technology Service Co.,Ltd
+
OUI:642737*
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
@@ -61994,6 +62309,9 @@ OUI:649FF7*
OUI:64A0E7*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+OUI:64A198*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:64A200*
ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
@@ -62156,6 +62474,9 @@ OUI:64D4BD*
OUI:64D4DA*
ID_OUI_FROM_DATABASE=Intel Corporate
+OUI:64D7C0*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:64D814*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
@@ -62201,6 +62522,9 @@ OUI:64DF10*
OUI:64DFE9*
ID_OUI_FROM_DATABASE=ATEME
+OUI:64E003*
+ ID_OUI_FROM_DATABASE=Hui Zhou Gaoshengda Technology Co.,LTD
+
OUI:64E161*
ID_OUI_FROM_DATABASE=DEP Corp.
@@ -62456,6 +62780,9 @@ OUI:682C7B*
OUI:682DDC*
ID_OUI_FROM_DATABASE=Wuhan Changjiang Electro-Communication Equipment CO.,LTD
+OUI:682F67*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:6831FE*
ID_OUI_FROM_DATABASE=Teladin Co.,Ltd.
@@ -62571,7 +62898,7 @@ OUI:6854FD*
ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
OUI:68572D*
- ID_OUI_FROM_DATABASE=HANGZHOU AIXIANGJI TECHNOLOGY CO., LTD
+ ID_OUI_FROM_DATABASE=Tuya Smart Inc.
OUI:6858C5*
ID_OUI_FROM_DATABASE=ZF TRW Automotive
@@ -62640,7 +62967,7 @@ OUI:68764F*
ID_OUI_FROM_DATABASE=Sony Mobile Communications Inc
OUI:687848*
- ID_OUI_FROM_DATABASE=Westunitis Co., Ltd.
+ ID_OUI_FROM_DATABASE=WESTUNITIS CO., LTD.
OUI:68784C*
ID_OUI_FROM_DATABASE=Nortel Networks
@@ -62909,6 +63236,9 @@ OUI:68AB1E*
OUI:68AB8A*
ID_OUI_FROM_DATABASE=RF IDeas
+OUI:68ABBC*
+ ID_OUI_FROM_DATABASE=Beijing Xiaomi Mobile Software Co., Ltd
+
OUI:68AE20*
ID_OUI_FROM_DATABASE=Apple, Inc.
@@ -63113,6 +63443,12 @@ OUI:6C006B*
OUI:6C0273*
ID_OUI_FROM_DATABASE=Shenzhen Jin Yun Video Equipment Co., Ltd.
+OUI:6C02E0*
+ ID_OUI_FROM_DATABASE=HP Inc.
+
+OUI:6C0309*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
OUI:6C0460*
ID_OUI_FROM_DATABASE=RBH Access Technologies Inc.
@@ -63140,6 +63476,9 @@ OUI:6C0D34*
OUI:6C0DC4*
ID_OUI_FROM_DATABASE=Beijing Xiaomi Electronics Co., Ltd.
+OUI:6C0DE1*
+ ID_OUI_FROM_DATABASE=Dongguan Cannice Precision Manufacturing Co., Ltd.
+
OUI:6C0E0D*
ID_OUI_FROM_DATABASE=Sony Mobile Communications Inc
@@ -63149,6 +63488,9 @@ OUI:6C0EE6*
OUI:6C0F6A*
ID_OUI_FROM_DATABASE=JDC Tech Co., Ltd.
+OUI:6C13D5*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
OUI:6C1414*
ID_OUI_FROM_DATABASE=BUJEON ELECTRONICS Co,.Ltd
@@ -63326,6 +63668,9 @@ OUI:6C49C1*
OUI:6C4A39*
ID_OUI_FROM_DATABASE=BITA
+OUI:6C4A74*
+ ID_OUI_FROM_DATABASE=AERODISK LLC
+
OUI:6C4A85*
ID_OUI_FROM_DATABASE=Apple, Inc.
@@ -63731,6 +64076,9 @@ OUI:6CC7EC*
OUI:6CCA08*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+OUI:6CCDD6*
+ ID_OUI_FROM_DATABASE=NETGEAR
+
OUI:6CCE44*
ID_OUI_FROM_DATABASE=1MORE
@@ -63749,6 +64097,9 @@ OUI:6CD2BA*
OUI:6CD68A*
ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
+OUI:6CD704*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:6CD71F*
ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
@@ -63885,7 +64236,7 @@ OUI:6CF5E8*
ID_OUI_FROM_DATABASE=Mooredoll Inc.
OUI:6CF712*
- ID_OUI_FROM_DATABASE=Nokia
+ ID_OUI_FROM_DATABASE=Nokia Solutions and Networks GmbH & Co. KG
OUI:6CF97C*
ID_OUI_FROM_DATABASE=Nanoptix Inc.
@@ -64265,6 +64616,9 @@ OUI:706173*
OUI:70617B*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+OUI:7061BE*
+ ID_OUI_FROM_DATABASE=Wistron Neweb Corporation
+
OUI:7061EE*
ID_OUI_FROM_DATABASE=Sunwoda Electronic Co.,Ltd
@@ -64493,6 +64847,9 @@ OUI:70886BB*
OUI:70886BC*
ID_OUI_FROM_DATABASE=MAX4G, Inc.
+OUI:708976*
+ ID_OUI_FROM_DATABASE=Tuya (HK) Limietd
+
OUI:7089CC*
ID_OUI_FROM_DATABASE=China Mobile Group Device Co.,Ltd.
@@ -64844,6 +65201,9 @@ OUI:70B3D504D*
OUI:70B3D504E*
ID_OUI_FROM_DATABASE=HUGEL GmbH
+OUI:70B3D504F*
+ ID_OUI_FROM_DATABASE=EVPU Defence a.s.
+
OUI:70B3D5050*
ID_OUI_FROM_DATABASE=Compusign Systems Pty Ltd
@@ -64907,6 +65267,9 @@ OUI:70B3D5063*
OUI:70B3D5064*
ID_OUI_FROM_DATABASE=AB PRECISION (POOLE) LTD
+OUI:70B3D5065*
+ ID_OUI_FROM_DATABASE=EXATEL
+
OUI:70B3D5066*
ID_OUI_FROM_DATABASE=North Pole Engineering, Inc.
@@ -65538,7 +65901,7 @@ OUI:70B3D513E*
ID_OUI_FROM_DATABASE=Stara S/A Indústria de Implementos Agrícolas
OUI:70B3D513F*
- ID_OUI_FROM_DATABASE=Farmobile
+ ID_OUI_FROM_DATABASE=Farmobile, LLC
OUI:70B3D5140*
ID_OUI_FROM_DATABASE=Virta Laboratories, Inc.
@@ -65876,6 +66239,9 @@ OUI:70B3D51B5*
OUI:70B3D51B6*
ID_OUI_FROM_DATABASE=DACOM West GmbH
+OUI:70B3D51B7*
+ ID_OUI_FROM_DATABASE=ULSee Inc
+
OUI:70B3D51B8*
ID_OUI_FROM_DATABASE=OES Inc.
@@ -65915,6 +66281,9 @@ OUI:70B3D51C4*
OUI:70B3D51C5*
ID_OUI_FROM_DATABASE=ELSAG
+OUI:70B3D51C6*
+ ID_OUI_FROM_DATABASE=Bita-International Co., Ltd.
+
OUI:70B3D51C7*
ID_OUI_FROM_DATABASE=Hoshin Electronics Co., Ltd.
@@ -66059,6 +66428,9 @@ OUI:70B3D51F8*
OUI:70B3D51F9*
ID_OUI_FROM_DATABASE=Automata GmbH & Co. KG
+OUI:70B3D51FA*
+ ID_OUI_FROM_DATABASE=EBZ SysTec GmbH
+
OUI:70B3D51FC*
ID_OUI_FROM_DATABASE=Guan Show Technologe Co., Ltd.
@@ -66317,6 +66689,9 @@ OUI:70B3D5254*
OUI:70B3D5255*
ID_OUI_FROM_DATABASE=Asystems Corporation
+OUI:70B3D5256*
+ ID_OUI_FROM_DATABASE=Telco Antennas Pty Ltd
+
OUI:70B3D5257*
ID_OUI_FROM_DATABASE=LG Electronics
@@ -66521,6 +66896,9 @@ OUI:70B3D529C*
OUI:70B3D529D*
ID_OUI_FROM_DATABASE=XTech2 SIA
+OUI:70B3D529E*
+ ID_OUI_FROM_DATABASE=B2cloud lda
+
OUI:70B3D529F*
ID_OUI_FROM_DATABASE=Code Hardware SA
@@ -66848,15 +67226,24 @@ OUI:70B3D530F*
OUI:70B3D5310*
ID_OUI_FROM_DATABASE=Conserv Solutions
+OUI:70B3D5311*
+ ID_OUI_FROM_DATABASE=Günther Spelsberg GmbH + Co. KG
+
OUI:70B3D5313*
ID_OUI_FROM_DATABASE=DIEHL Controls
+OUI:70B3D5316*
+ ID_OUI_FROM_DATABASE=Austco Marketing & Service (USA) ltd.
+
OUI:70B3D5317*
ID_OUI_FROM_DATABASE=Iotopia Solutions
OUI:70B3D5319*
ID_OUI_FROM_DATABASE=ISO/TC 22/SC 31
+OUI:70B3D531A*
+ ID_OUI_FROM_DATABASE=Terratel Technology s.r.o.
+
OUI:70B3D531B*
ID_OUI_FROM_DATABASE=SilTerra Malaysia Sdn. Bhd.
@@ -67217,6 +67604,9 @@ OUI:70B3D5397*
OUI:70B3D5398*
ID_OUI_FROM_DATABASE=SIPRO s.r.l.
+OUI:70B3D5399*
+ ID_OUI_FROM_DATABASE=SPE Smartico, LLC
+
OUI:70B3D539A*
ID_OUI_FROM_DATABASE=Videotrend srl
@@ -67232,6 +67622,9 @@ OUI:70B3D539D*
OUI:70B3D539E*
ID_OUI_FROM_DATABASE=Lanmark Controls Inc.
+OUI:70B3D539F*
+ ID_OUI_FROM_DATABASE=CT Company
+
OUI:70B3D53A0*
ID_OUI_FROM_DATABASE=chiconypower
@@ -67676,6 +68069,9 @@ OUI:70B3D5437*
OUI:70B3D5439*
ID_OUI_FROM_DATABASE=TriLED
+OUI:70B3D543A*
+ ID_OUI_FROM_DATABASE=ARKS Enterprises, Inc.
+
OUI:70B3D543B*
ID_OUI_FROM_DATABASE=Kalycito Infotech Private Limited
@@ -67829,6 +68225,9 @@ OUI:70B3D5472*
OUI:70B3D5473*
ID_OUI_FROM_DATABASE=KeyProd
+OUI:70B3D5474*
+ ID_OUI_FROM_DATABASE=DAYOUPLUS
+
OUI:70B3D5475*
ID_OUI_FROM_DATABASE=EWATTCH
@@ -67913,6 +68312,9 @@ OUI:70B3D548F*
OUI:70B3D5490*
ID_OUI_FROM_DATABASE=Xiamen Beogold Technology Co. Ltd.
+OUI:70B3D5491*
+ ID_OUI_FROM_DATABASE=VONSCH
+
OUI:70B3D5492*
ID_OUI_FROM_DATABASE=Jiangsu Jinheng Information Technology Co.,Ltd.
@@ -68120,6 +68522,9 @@ OUI:70B3D54D7*
OUI:70B3D54D8*
ID_OUI_FROM_DATABASE=Versilis Inc.
+OUI:70B3D54DA*
+ ID_OUI_FROM_DATABASE=Private
+
OUI:70B3D54DB*
ID_OUI_FROM_DATABASE=Temperature@lert
@@ -68309,6 +68714,9 @@ OUI:70B3D551D*
OUI:70B3D551E*
ID_OUI_FROM_DATABASE=Fundación Cardiovascular de Colombia
+OUI:70B3D551F*
+ ID_OUI_FROM_DATABASE=VALEO CDA
+
OUI:70B3D5521*
ID_OUI_FROM_DATABASE=Selex ES Inc.
@@ -68327,6 +68735,9 @@ OUI:70B3D5525*
OUI:70B3D5526*
ID_OUI_FROM_DATABASE=FlowNet LLC
+OUI:70B3D5527*
+ ID_OUI_FROM_DATABASE=Procon Electronics Pty Ltd
+
OUI:70B3D5528*
ID_OUI_FROM_DATABASE=Aplex Technology Inc.
@@ -68495,6 +68906,9 @@ OUI:70B3D555E*
OUI:70B3D555F*
ID_OUI_FROM_DATABASE=Deep BV
+OUI:70B3D5560*
+ ID_OUI_FROM_DATABASE=DaiShin Information & Communications Co., Ltd
+
OUI:70B3D5561*
ID_OUI_FROM_DATABASE=Liberator Pty Ltd
@@ -68672,6 +69086,9 @@ OUI:70B3D559C*
OUI:70B3D559D*
ID_OUI_FROM_DATABASE=servicios de consultoria independiente S.L.
+OUI:70B3D559E*
+ ID_OUI_FROM_DATABASE=i2-electronics
+
OUI:70B3D55A0*
ID_OUI_FROM_DATABASE=Ascon Tecnologic S.r.l.
@@ -68684,6 +69101,9 @@ OUI:70B3D55A2*
OUI:70B3D55A3*
ID_OUI_FROM_DATABASE=CT Company
+OUI:70B3D55A4*
+ ID_OUI_FROM_DATABASE=MB connect line GmbH Fernwartungssysteme
+
OUI:70B3D55A5*
ID_OUI_FROM_DATABASE=Rehwork GmbH
@@ -68694,7 +69114,7 @@ OUI:70B3D55A7*
ID_OUI_FROM_DATABASE=ABB S.p.A.
OUI:70B3D55A8*
- ID_OUI_FROM_DATABASE=Farmobile
+ ID_OUI_FROM_DATABASE=Farmobile, LLC
OUI:70B3D55A9*
ID_OUI_FROM_DATABASE=Bunka Shutter Co., Ltd.
@@ -68747,6 +69167,9 @@ OUI:70B3D55BB*
OUI:70B3D55BC*
ID_OUI_FROM_DATABASE=LAMTEC Meß- und Regeltechnik für Feuerungen GmbH & Co. KG
+OUI:70B3D55BD*
+ ID_OUI_FROM_DATABASE=nexgenwave
+
OUI:70B3D55BE*
ID_OUI_FROM_DATABASE=CASWA
@@ -69521,6 +69944,9 @@ OUI:70B3D56CA*
OUI:70B3D56CB*
ID_OUI_FROM_DATABASE=NAJIN automation
+OUI:70B3D56CC*
+ ID_OUI_FROM_DATABASE=ARINAX
+
OUI:70B3D56CD*
ID_OUI_FROM_DATABASE=NORTHBOUND NETWORKS PTY. LTD.
@@ -70082,6 +70508,9 @@ OUI:70B3D5790*
OUI:70B3D5791*
ID_OUI_FROM_DATABASE=Romteck Australia
+OUI:70B3D5792*
+ ID_OUI_FROM_DATABASE=IMMOLAS
+
OUI:70B3D5793*
ID_OUI_FROM_DATABASE=Gastech Australia Pty Ltd
@@ -70436,6 +70865,9 @@ OUI:70B3D580C*
OUI:70B3D580D*
ID_OUI_FROM_DATABASE=Data Physics Corporation
+OUI:70B3D580E*
+ ID_OUI_FROM_DATABASE=Utopi Ltd
+
OUI:70B3D580F*
ID_OUI_FROM_DATABASE=Quickware Eng & Des LLC
@@ -70472,6 +70904,9 @@ OUI:70B3D581A*
OUI:70B3D581B*
ID_OUI_FROM_DATABASE=bobz GmbH
+OUI:70B3D581C*
+ ID_OUI_FROM_DATABASE=QIT Co., Ltd.
+
OUI:70B3D581D*
ID_OUI_FROM_DATABASE=DEUTA-WERKE GmbH
@@ -70520,6 +70955,9 @@ OUI:70B3D582D*
OUI:70B3D582E*
ID_OUI_FROM_DATABASE=PlayAlive A/S
+OUI:70B3D582F*
+ ID_OUI_FROM_DATABASE=SIANA Systems
+
OUI:70B3D5830*
ID_OUI_FROM_DATABASE=Nordson Corporation
@@ -70781,6 +71219,9 @@ OUI:70B3D5885*
OUI:70B3D5886*
ID_OUI_FROM_DATABASE=MB connect line GmbH Fernwartungssysteme
+OUI:70B3D5887*
+ ID_OUI_FROM_DATABASE=Entec Solar S.L.
+
OUI:70B3D5888*
ID_OUI_FROM_DATABASE=Zetechtics Ltd
@@ -70997,6 +71438,9 @@ OUI:70B3D58D0*
OUI:70B3D58D1*
ID_OUI_FROM_DATABASE=Field Design Inc.
+OUI:70B3D58D2*
+ ID_OUI_FROM_DATABASE=WIZAPPLY CO.,LTD
+
OUI:70B3D58D3*
ID_OUI_FROM_DATABASE=PERFORMANCE CONTROLS, INC.
@@ -71054,6 +71498,9 @@ OUI:70B3D58E6*
OUI:70B3D58E7*
ID_OUI_FROM_DATABASE=REO AG
+OUI:70B3D58E8*
+ ID_OUI_FROM_DATABASE=PREO INDUSTRIES FAR EAST LTD
+
OUI:70B3D58EA*
ID_OUI_FROM_DATABASE=JLCooper Electronics
@@ -71183,6 +71630,9 @@ OUI:70B3D5917*
OUI:70B3D5918*
ID_OUI_FROM_DATABASE=Glova Rail A/S
+OUI:70B3D5919*
+ ID_OUI_FROM_DATABASE=Thesycon Software Solutions GmbH & Co. KG
+
OUI:70B3D591A*
ID_OUI_FROM_DATABASE=Fujian Landfone Information Technology Co.,Ltd
@@ -71516,6 +71966,9 @@ OUI:70B3D598B*
OUI:70B3D598C*
ID_OUI_FROM_DATABASE=University of Wisconsin Madison - Department of High Energy Physics
+OUI:70B3D598D*
+ ID_OUI_FROM_DATABASE=Motohaus Powersports Limited
+
OUI:70B3D598E*
ID_OUI_FROM_DATABASE=Autocom Diagnostic Partner AB
@@ -71546,6 +71999,9 @@ OUI:70B3D5996*
OUI:70B3D5997*
ID_OUI_FROM_DATABASE=ProTom International
+OUI:70B3D5998*
+ ID_OUI_FROM_DATABASE=Kita Kirmizi Takim Bilgi Guvenligi Danismanlik ve Egitim A.S.
+
OUI:70B3D5999*
ID_OUI_FROM_DATABASE=LOGICUBE INC
@@ -71891,6 +72347,9 @@ OUI:70B3D5A0F*
OUI:70B3D5A10*
ID_OUI_FROM_DATABASE=w-tec AG
+OUI:70B3D5A11*
+ ID_OUI_FROM_DATABASE=TRIOPTICS
+
OUI:70B3D5A12*
ID_OUI_FROM_DATABASE=QUERCUS TECHNOLOGIES, S.L.
@@ -71900,6 +72359,9 @@ OUI:70B3D5A13*
OUI:70B3D5A15*
ID_OUI_FROM_DATABASE=Intercore GmbH
+OUI:70B3D5A16*
+ ID_OUI_FROM_DATABASE=devAIs s.r.l.
+
OUI:70B3D5A17*
ID_OUI_FROM_DATABASE=Tunstall A/S
@@ -72128,6 +72590,9 @@ OUI:70B3D5A62*
OUI:70B3D5A64*
ID_OUI_FROM_DATABASE=Newshine
+OUI:70B3D5A65*
+ ID_OUI_FROM_DATABASE=CREATIVE
+
OUI:70B3D5A66*
ID_OUI_FROM_DATABASE=Trapeze Software Group Inc
@@ -72185,6 +72650,9 @@ OUI:70B3D5A77*
OUI:70B3D5A78*
ID_OUI_FROM_DATABASE=Bionics co.,ltd.
+OUI:70B3D5A79*
+ ID_OUI_FROM_DATABASE=NOREYA Technology e.U.
+
OUI:70B3D5A7A*
ID_OUI_FROM_DATABASE=Fluid Management Technology
@@ -72452,6 +72920,9 @@ OUI:70B3D5AD5*
OUI:70B3D5AD6*
ID_OUI_FROM_DATABASE=Lemonade Lab Inc
+OUI:70B3D5AD7*
+ ID_OUI_FROM_DATABASE=Octopus IoT srl
+
OUI:70B3D5AD8*
ID_OUI_FROM_DATABASE=Euklis by GSG International
@@ -72560,6 +73031,9 @@ OUI:70B3D5AFA*
OUI:70B3D5AFB*
ID_OUI_FROM_DATABASE=Shanghai Tianhe Automation Instrumentation Co., Ltd.
+OUI:70B3D5AFC*
+ ID_OUI_FROM_DATABASE=BAE Systems
+
OUI:70B3D5AFE*
ID_OUI_FROM_DATABASE=MESOTECHNIC
@@ -72599,6 +73073,9 @@ OUI:70B3D5B0B*
OUI:70B3D5B0C*
ID_OUI_FROM_DATABASE=Vigilate srl
+OUI:70B3D5B0D*
+ ID_OUI_FROM_DATABASE=ALFI
+
OUI:70B3D5B0E*
ID_OUI_FROM_DATABASE=Servotronix Motion Control
@@ -72671,6 +73148,9 @@ OUI:70B3D5B25*
OUI:70B3D5B26*
ID_OUI_FROM_DATABASE=INTEC International GmbH
+OUI:70B3D5B27*
+ ID_OUI_FROM_DATABASE=Naval Group
+
OUI:70B3D5B28*
ID_OUI_FROM_DATABASE=HUSTY M.Styczen J.Hupert sp.j.
@@ -72683,6 +73163,9 @@ OUI:70B3D5B2A*
OUI:70B3D5B2B*
ID_OUI_FROM_DATABASE=Vtron Pty Ltd
+OUI:70B3D5B2C*
+ ID_OUI_FROM_DATABASE=Elman srl
+
OUI:70B3D5B2D*
ID_OUI_FROM_DATABASE=Plexus
@@ -72743,6 +73226,9 @@ OUI:70B3D5B40*
OUI:70B3D5B41*
ID_OUI_FROM_DATABASE=T&M Media Pty Ltd
+OUI:70B3D5B42*
+ ID_OUI_FROM_DATABASE=Samwell International Inc
+
OUI:70B3D5B43*
ID_OUI_FROM_DATABASE=ZAO ZEO
@@ -72767,6 +73253,9 @@ OUI:70B3D5B49*
OUI:70B3D5B4A*
ID_OUI_FROM_DATABASE=MEDEX
+OUI:70B3D5B4B*
+ ID_OUI_FROM_DATABASE=Network Customizing Technologies Inc
+
OUI:70B3D5B4D*
ID_OUI_FROM_DATABASE=Avidbots Corporation
@@ -72965,6 +73454,9 @@ OUI:70B3D5B90*
OUI:70B3D5B91*
ID_OUI_FROM_DATABASE=Dynetics, Inc.
+OUI:70B3D5B92*
+ ID_OUI_FROM_DATABASE=N A Communications LLC
+
OUI:70B3D5B93*
ID_OUI_FROM_DATABASE=INTERNET PROTOCOLO LOGICA SL
@@ -73169,6 +73661,9 @@ OUI:70B3D5BD9*
OUI:70B3D5BDA*
ID_OUI_FROM_DATABASE=5-D Systems, Inc.
+OUI:70B3D5BDB*
+ ID_OUI_FROM_DATABASE=Power Electronics Espana, S.L.
+
OUI:70B3D5BDC*
ID_OUI_FROM_DATABASE=EDF Lab
@@ -73229,6 +73724,9 @@ OUI:70B3D5BEE*
OUI:70B3D5BEF*
ID_OUI_FROM_DATABASE=Sensortech Systems Inc.
+OUI:70B3D5BF0*
+ ID_OUI_FROM_DATABASE=Alfa Elettronica srl
+
OUI:70B3D5BF1*
ID_OUI_FROM_DATABASE=Flashnet SRL
@@ -73328,6 +73826,9 @@ OUI:70B3D5C11*
OUI:70B3D5C12*
ID_OUI_FROM_DATABASE=Beijing Wisetone Information Technology Co.,Ltd.
+OUI:70B3D5C13*
+ ID_OUI_FROM_DATABASE=Guangzhou Xianhe Technology Engineering Co., Ltd
+
OUI:70B3D5C14*
ID_OUI_FROM_DATABASE=Grupo Epelsa S.L.
@@ -73409,6 +73910,9 @@ OUI:70B3D5C2E*
OUI:70B3D5C2F*
ID_OUI_FROM_DATABASE=ATBiS Co.,Ltd
+OUI:70B3D5C30*
+ ID_OUI_FROM_DATABASE=Polskie Sady Nowe Podole Sp. z o.o.
+
OUI:70B3D5C31*
ID_OUI_FROM_DATABASE=German Power GmbH
@@ -73889,6 +74393,9 @@ OUI:70B3D5CD6*
OUI:70B3D5CD7*
ID_OUI_FROM_DATABASE=AutomationX GmbH
+OUI:70B3D5CD8*
+ ID_OUI_FROM_DATABASE=Nexus Electric S.A.
+
OUI:70B3D5CD9*
ID_OUI_FROM_DATABASE=Peter Huber Kaeltemaschinenbau GmbH
@@ -74156,6 +74663,9 @@ OUI:70B3D5D3C*
OUI:70B3D5D3D*
ID_OUI_FROM_DATABASE=Netzikon GmbH
+OUI:70B3D5D3E*
+ ID_OUI_FROM_DATABASE=enders GmbH
+
OUI:70B3D5D3F*
ID_OUI_FROM_DATABASE=GLOBALCOM ENGINEERING SPA
@@ -74315,6 +74825,9 @@ OUI:70B3D5D76*
OUI:70B3D5D77*
ID_OUI_FROM_DATABASE=Portrait Displays, Inc.
+OUI:70B3D5D78*
+ ID_OUI_FROM_DATABASE=Nxvi Microelectronics Technology (Jinan) Co., Ltd.
+
OUI:70B3D5D79*
ID_OUI_FROM_DATABASE=GOMA ELETTRONICA SpA
@@ -74501,6 +75014,9 @@ OUI:70B3D5DB7*
OUI:70B3D5DB8*
ID_OUI_FROM_DATABASE=SISTEM SA
+OUI:70B3D5DB9*
+ ID_OUI_FROM_DATABASE=PULOON Tech
+
OUI:70B3D5DBA*
ID_OUI_FROM_DATABASE=KODENSHI CORP.
@@ -74747,6 +75263,9 @@ OUI:70B3D5E11*
OUI:70B3D5E12*
ID_OUI_FROM_DATABASE=SNK, Inc.
+OUI:70B3D5E13*
+ ID_OUI_FROM_DATABASE=Suzhou ZhiCai Co.,Ltd.
+
OUI:70B3D5E14*
ID_OUI_FROM_DATABASE=Automata Spa
@@ -74966,6 +75485,9 @@ OUI:70B3D5E5E*
OUI:70B3D5E61*
ID_OUI_FROM_DATABASE=Adeli
+OUI:70B3D5E62*
+ ID_OUI_FROM_DATABASE=Eon
+
OUI:70B3D5E63*
ID_OUI_FROM_DATABASE=Potomac Electric Corporation
@@ -74975,6 +75497,9 @@ OUI:70B3D5E64*
OUI:70B3D5E65*
ID_OUI_FROM_DATABASE=BIRTECH TECHNOLOGY
+OUI:70B3D5E66*
+ ID_OUI_FROM_DATABASE=Eneon sp. z o.o.
+
OUI:70B3D5E67*
ID_OUI_FROM_DATABASE=APPLIED PROCESSING
@@ -74987,6 +75512,9 @@ OUI:70B3D5E69*
OUI:70B3D5E6A*
ID_OUI_FROM_DATABASE=MAC Solutions (UK) Ltd
+OUI:70B3D5E6B*
+ ID_OUI_FROM_DATABASE=Shenzhen Shi Fang Communication Technology Co., Ltd
+
OUI:70B3D5E6C*
ID_OUI_FROM_DATABASE=Fusar Technologies inc
@@ -75239,6 +75767,9 @@ OUI:70B3D5EBF*
OUI:70B3D5EC1*
ID_OUI_FROM_DATABASE=Xafax Nederland bv
+OUI:70B3D5EC2*
+ ID_OUI_FROM_DATABASE=Lightside Instruments AS
+
OUI:70B3D5EC3*
ID_OUI_FROM_DATABASE=Virtual Control Systems Ltd
@@ -75255,7 +75786,7 @@ OUI:70B3D5EC7*
ID_OUI_FROM_DATABASE=Neoptix Inc.
OUI:70B3D5EC8*
- ID_OUI_FROM_DATABASE=Viko Elektrik-Elektronik A.Ş.
+ ID_OUI_FROM_DATABASE=PANASONIC LIFE SOLUTIONS ELEKTRİK SANAYİ VE TİCARE
OUI:70B3D5EC9*
ID_OUI_FROM_DATABASE=Qlinx Technologies
@@ -75302,6 +75833,9 @@ OUI:70B3D5ED7*
OUI:70B3D5ED8*
ID_OUI_FROM_DATABASE=Wartsila Voyage Limited
+OUI:70B3D5ED9*
+ ID_OUI_FROM_DATABASE=AADONA Communication Pvt Ltd
+
OUI:70B3D5EDA*
ID_OUI_FROM_DATABASE=Breas Medical AB
@@ -75614,6 +76148,9 @@ OUI:70B3D5F47*
OUI:70B3D5F48*
ID_OUI_FROM_DATABASE=HEITEC AG
+OUI:70B3D5F49*
+ ID_OUI_FROM_DATABASE=ZMBIZI APP LLC
+
OUI:70B3D5F4A*
ID_OUI_FROM_DATABASE=LACS SRL
@@ -75860,6 +76397,9 @@ OUI:70B3D5F9B*
OUI:70B3D5F9C*
ID_OUI_FROM_DATABASE=SureFlap Ltd
+OUI:70B3D5F9D*
+ ID_OUI_FROM_DATABASE=Teledyne API
+
OUI:70B3D5F9E*
ID_OUI_FROM_DATABASE=International Center for Elementary Particle Physics, The University of Tokyo
@@ -76205,6 +76745,9 @@ OUI:70CD91*
OUI:70CE8C*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:70CF49*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
OUI:70D081*
ID_OUI_FROM_DATABASE=Beijing Netpower Technologies Inc.
@@ -76247,6 +76790,9 @@ OUI:70DDA1*
OUI:70DDA8*
ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+OUI:70DDEF*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:70DEE2*
ID_OUI_FROM_DATABASE=Apple, Inc.
@@ -76412,6 +76958,9 @@ OUI:7403BD*
OUI:74042B*
ID_OUI_FROM_DATABASE=Lenovo Mobile Communication (Wuhan) Company Limited
+OUI:7404F0*
+ ID_OUI_FROM_DATABASE=Mobiwire Mobiles (NingBo) Co., LTD
+
OUI:7405A5*
ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
@@ -76667,12 +77216,18 @@ OUI:744AA4*
OUI:744BE9*
ID_OUI_FROM_DATABASE=EXPLORER HYPERTECH CO.,LTD
+OUI:744CA1*
+ ID_OUI_FROM_DATABASE=Liteon Technology Corporation
+
OUI:744D28*
ID_OUI_FROM_DATABASE=Routerboard.com
OUI:744D79*
ID_OUI_FROM_DATABASE=Arrive Systems Inc.
+OUI:74504E*
+ ID_OUI_FROM_DATABASE=New H3C Technologies Co., Ltd
+
OUI:7451BA*
ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
@@ -76910,6 +77465,9 @@ OUI:748A28*
OUI:748A69*
ID_OUI_FROM_DATABASE=Korea Image Technology Co., Ltd
+OUI:748B29*
+ ID_OUI_FROM_DATABASE=Micobiomed
+
OUI:748B34*
ID_OUI_FROM_DATABASE=Shanghai Smart System Technology Co., Ltd
@@ -76961,6 +77519,9 @@ OUI:749781*
OUI:749975*
ID_OUI_FROM_DATABASE=IBM Corporation
+OUI:749AC0*
+ ID_OUI_FROM_DATABASE=Cachengo, Inc.
+
OUI:749BE8*
ID_OUI_FROM_DATABASE=Hitron Technologies. Inc
@@ -77576,6 +78137,9 @@ OUI:783690*
OUI:7836CC*
ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+OUI:783716*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
OUI:783A6C*
ID_OUI_FROM_DATABASE=TECNO MOBILE LIMITED
@@ -78188,6 +78752,51 @@ OUI:78D34F*
OUI:78D38D*
ID_OUI_FROM_DATABASE=HONGKONG YUNLINK TECHNOLOGY LIMITED
+OUI:78D4F10*
+ ID_OUI_FROM_DATABASE=Burisch Elektronik Bauteile GmbH
+
+OUI:78D4F11*
+ ID_OUI_FROM_DATABASE=Cartender
+
+OUI:78D4F12*
+ ID_OUI_FROM_DATABASE=Lyngsoe Systems
+
+OUI:78D4F13*
+ ID_OUI_FROM_DATABASE=Ekoenergetyka - Polska S.A.
+
+OUI:78D4F14*
+ ID_OUI_FROM_DATABASE=BYD Auto lndustry Co.,Ltd
+
+OUI:78D4F15*
+ ID_OUI_FROM_DATABASE=Huaqin Telecom Technology Co.,Ltd.
+
+OUI:78D4F16*
+ ID_OUI_FROM_DATABASE=Guangzhou Kingray information technology Co.,Ltd.
+
+OUI:78D4F17*
+ ID_OUI_FROM_DATABASE=Famar Fueguina S.A.
+
+OUI:78D4F18*
+ ID_OUI_FROM_DATABASE=Xiamen Cheerzing IOT Technology Co.,Ltd.
+
+OUI:78D4F19*
+ ID_OUI_FROM_DATABASE=shanghai baudcom communication device co.,ltd
+
+OUI:78D4F1A*
+ ID_OUI_FROM_DATABASE=BONENG TRANSMISSION(SUZHOU)CO.,LTD
+
+OUI:78D4F1B*
+ ID_OUI_FROM_DATABASE=Jiangsu byzoro intelligent technology Co.,Ltd
+
+OUI:78D4F1C*
+ ID_OUI_FROM_DATABASE=TNB
+
+OUI:78D4F1D*
+ ID_OUI_FROM_DATABASE=Quidel Corporation
+
+OUI:78D4F1E*
+ ID_OUI_FROM_DATABASE=Blue Sparq, Inc.
+
OUI:78D5B5*
ID_OUI_FROM_DATABASE=NAVIELEKTRO KY
@@ -78290,6 +78899,9 @@ OUI:78DEE4*
OUI:78E103*
ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
+OUI:78E22C*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:78E2BD*
ID_OUI_FROM_DATABASE=Vodafone Automotive S.p.A.
@@ -78357,7 +78969,7 @@ OUI:78F944*
ID_OUI_FROM_DATABASE=Private
OUI:78F9B4*
- ID_OUI_FROM_DATABASE=Nokia
+ ID_OUI_FROM_DATABASE=Nokia Solutions and Networks GmbH & Co. KG
OUI:78FC14*
ID_OUI_FROM_DATABASE=Family Zone Cyber Safety Ltd
@@ -78671,6 +79283,9 @@ OUI:7C4FB5*
OUI:7C5049*
ID_OUI_FROM_DATABASE=Apple, Inc.
+OUI:7C5079*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
OUI:7C50DA*
ID_OUI_FROM_DATABASE=Private
@@ -79133,6 +79748,9 @@ OUI:7CBFB1*
OUI:7CC294*
ID_OUI_FROM_DATABASE=Beijing Xiaomi Mobile Software Co., Ltd
+OUI:7CC2C6*
+ ID_OUI_FROM_DATABASE=TP-Link Corporation Limited
+
OUI:7CC385*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
@@ -79526,6 +80144,9 @@ OUI:8020FD*
OUI:802275*
ID_OUI_FROM_DATABASE=Beijing Beny Wave Technology Co Ltd
+OUI:802278*
+ ID_OUI_FROM_DATABASE=China Mobile IOT Company Limited
+
OUI:8022A7*
ID_OUI_FROM_DATABASE=NEC Platforms, Ltd.
@@ -79586,6 +80207,9 @@ OUI:803896*
OUI:8038BC*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+OUI:8038FB*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
OUI:8038FD*
ID_OUI_FROM_DATABASE=LeapFrog Enterprises, Inc.
@@ -80030,6 +80654,9 @@ OUI:80BE05*
OUI:80C16E*
ID_OUI_FROM_DATABASE=Hewlett Packard
+OUI:80C501*
+ ID_OUI_FROM_DATABASE=OctoGate IT Security Systems GmbH
+
OUI:80C548*
ID_OUI_FROM_DATABASE=Shenzhen Zowee Technology Co.,Ltd
@@ -80537,6 +81164,9 @@ OUI:844167*
OUI:844464*
ID_OUI_FROM_DATABASE=ServerU Inc
+OUI:8444AF*
+ ID_OUI_FROM_DATABASE=Zhejiang Tmall Technology Co., Ltd.
+
OUI:8446FE*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
@@ -80588,6 +81218,9 @@ OUI:845B12*
OUI:845C93*
ID_OUI_FROM_DATABASE=Chabrier Services
+OUI:845CF3*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
OUI:845DD7*
ID_OUI_FROM_DATABASE=Shenzhen Netcom Electronics Co.,Ltd
@@ -80606,6 +81239,9 @@ OUI:8462A6*
OUI:8463D6*
ID_OUI_FROM_DATABASE=Microsoft Corporation
+OUI:846569*
+ ID_OUI_FROM_DATABASE=New H3C Technologies Co., Ltd
+
OUI:84683E*
ID_OUI_FROM_DATABASE=Intel Corporate
@@ -80636,6 +81272,9 @@ OUI:846FCE*
OUI:847127*
ID_OUI_FROM_DATABASE=Silicon Laboratories
+OUI:84716A*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:847207*
ID_OUI_FROM_DATABASE=I&C Technology
@@ -81038,6 +81677,9 @@ OUI:84D15A*
OUI:84D32A*
ID_OUI_FROM_DATABASE=IEEE 1905.1
+OUI:84D343*
+ ID_OUI_FROM_DATABASE=Calix Inc.
+
OUI:84D412*
ID_OUI_FROM_DATABASE=Palo Alto Networks
@@ -81066,7 +81708,7 @@ OUI:84DB2F*
ID_OUI_FROM_DATABASE=Sierra Wireless
OUI:84DB9E*
- ID_OUI_FROM_DATABASE=Aifloo AB
+ ID_OUI_FROM_DATABASE=Pink Nectarine Health AB
OUI:84DBAC*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
@@ -81144,7 +81786,7 @@ OUI:84E327*
ID_OUI_FROM_DATABASE=TAILYN TECHNOLOGIES INC
OUI:84E342*
- ID_OUI_FROM_DATABASE=Tuya?HK?Limietd
+ ID_OUI_FROM_DATABASE=Tuya (HK) Limietd
OUI:84E4D9*
ID_OUI_FROM_DATABASE=Shenzhen NEED technology Ltd.
@@ -81593,6 +82235,9 @@ OUI:886440*
OUI:886639*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+OUI:88665A*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:8866A5*
ID_OUI_FROM_DATABASE=Apple, Inc.
@@ -82166,6 +82811,9 @@ OUI:8C0F83*
OUI:8C0FA0*
ID_OUI_FROM_DATABASE=di-soric GmbH & Co. KG
+OUI:8C0FC9*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:8C0FFA*
ID_OUI_FROM_DATABASE=Hutec co.,ltd
@@ -82625,6 +83273,9 @@ OUI:8C640B*
OUI:8C6422*
ID_OUI_FROM_DATABASE=Sony Mobile Communications Inc
+OUI:8C64D4*
+ ID_OUI_FROM_DATABASE=Hyeco Smart Tech Co.,Ltd
+
OUI:8C683A*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
@@ -82754,6 +83405,9 @@ OUI:8C8ABB*
OUI:8C8B83*
ID_OUI_FROM_DATABASE=Texas Instruments
+OUI:8C8CAA*
+ ID_OUI_FROM_DATABASE=LCFC(HeFei) Electronics Technology co., ltd
+
OUI:8C8D28*
ID_OUI_FROM_DATABASE=Intel Corporate
@@ -83045,6 +83699,12 @@ OUI:8CDE52*
OUI:8CDE99*
ID_OUI_FROM_DATABASE=Comlab Inc.
+OUI:8CDEE6*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:8CDEF9*
+ ID_OUI_FROM_DATABASE=Beijing Xiaomi Mobile Software Co., Ltd
+
OUI:8CDF9D*
ID_OUI_FROM_DATABASE=NEC Corporation
@@ -83081,12 +83741,18 @@ OUI:8CE7B3*
OUI:8CEA1B*
ID_OUI_FROM_DATABASE=Edgecore Networks Corporation
+OUI:8CEA48*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
OUI:8CEBC6*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
OUI:8CEC4B*
ID_OUI_FROM_DATABASE=Dell Inc.
+OUI:8CEC7B*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:8CEEC6*
ID_OUI_FROM_DATABASE=Precepscion Pty. Ltd.
@@ -83156,6 +83822,9 @@ OUI:90013B*
OUI:900218*
ID_OUI_FROM_DATABASE=BSkyB Ltd
+OUI:90027A*
+ ID_OUI_FROM_DATABASE=Shenzhen Sworix Techonlogy Co., Ltd
+
OUI:90028A*
ID_OUI_FROM_DATABASE=Shenzhen Shidean Legrand Electronic Products Co.,Ltd
@@ -83210,6 +83879,9 @@ OUI:900E83*
OUI:900EB3*
ID_OUI_FROM_DATABASE=Shenzhen Amediatech Technology Co., Ltd.
+OUI:900F0C*
+ ID_OUI_FROM_DATABASE=CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.
+
OUI:901234*
ID_OUI_FROM_DATABASE=Shenzhen YOUHUA Technology Co., Ltd
@@ -83342,6 +84014,9 @@ OUI:903C92*
OUI:903CAE*
ID_OUI_FROM_DATABASE=Yunnan KSEC Digital Technology Co.,Ltd.
+OUI:903CB3*
+ ID_OUI_FROM_DATABASE=Edgecore Networks Corporation
+
OUI:903D5A*
ID_OUI_FROM_DATABASE=Shenzhen Wision Technology Holding Limited
@@ -84374,6 +85049,9 @@ OUI:945B7E*
OUI:945F34*
ID_OUI_FROM_DATABASE=Renesas Electronics (Penang) Sdn. Bhd.
+OUI:946010*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:94611E*
ID_OUI_FROM_DATABASE=Wata Electronics Co.,Ltd.
@@ -85439,6 +86117,9 @@ OUI:9876B6*
OUI:987770*
ID_OUI_FROM_DATABASE=Pep Digital Technology (Guangzhou) Co., Ltd
+OUI:9877E7*
+ ID_OUI_FROM_DATABASE=Kaonmedia CO., LTD.
+
OUI:987A10*
ID_OUI_FROM_DATABASE=Ericsson AB
@@ -85643,6 +86324,9 @@ OUI:98BC99*
OUI:98BE94*
ID_OUI_FROM_DATABASE=IBM
+OUI:98BEDC*
+ ID_OUI_FROM_DATABASE=Honor Device Co., Ltd.
+
OUI:98C0EB*
ID_OUI_FROM_DATABASE=Global Regency Ltd
@@ -86273,6 +86957,9 @@ OUI:9C6650*
OUI:9C685B*
ID_OUI_FROM_DATABASE=Octonion SA
+OUI:9C6865*
+ ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD
+
OUI:9C6937*
ID_OUI_FROM_DATABASE=Qorvo International Pte. Ltd.
@@ -86348,6 +87035,9 @@ OUI:9C7370*
OUI:9C741A*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+OUI:9C746F*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:9C7514*
ID_OUI_FROM_DATABASE=Wildix srl
@@ -86378,6 +87068,9 @@ OUI:9C807D*
OUI:9C80DF*
ID_OUI_FROM_DATABASE=Arcadyan Technology Corporation
+OUI:9C823F*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:9C8275*
ID_OUI_FROM_DATABASE=Yichip Microelectronics (Hangzhou) Co.,Ltd
@@ -86465,6 +87158,9 @@ OUI:9C9AC0*
OUI:9C9C1D*
ID_OUI_FROM_DATABASE=Starkey Labs Inc.
+OUI:9C9C1F*
+ ID_OUI_FROM_DATABASE=Espressif Inc.
+
OUI:9C9C40*
ID_OUI_FROM_DATABASE=SICHUAN TIANYI COMHEART TELECOMCO., LTD
@@ -86492,6 +87188,9 @@ OUI:9CA513*
OUI:9CA525*
ID_OUI_FROM_DATABASE=Shandong USR IOT Technology Limited
+OUI:9CA570*
+ ID_OUI_FROM_DATABASE=eero inc.
+
OUI:9CA577*
ID_OUI_FROM_DATABASE=Osorno Enterprises Inc.
@@ -86555,6 +87254,9 @@ OUI:9CB793*
OUI:9CBB98*
ID_OUI_FROM_DATABASE=Shen Zhen RND Electronic Co.,LTD
+OUI:9CBCF0*
+ ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
+
OUI:9CBD6E*
ID_OUI_FROM_DATABASE=DERA Co., Ltd
@@ -86690,6 +87392,9 @@ OUI:9CE91C*
OUI:9CE951*
ID_OUI_FROM_DATABASE=Shenzhen Sang Fei Consumer Communications Ltd., Co.
+OUI:9CEA97*
+ ID_OUI_FROM_DATABASE=Honor Device Co., Ltd.
+
OUI:9CEBE8*
ID_OUI_FROM_DATABASE=BizLink (Kunshan) Co.,Ltd
@@ -86777,6 +87482,9 @@ OUI:9CFBF1*
OUI:9CFC01*
ID_OUI_FROM_DATABASE=Apple, Inc.
+OUI:9CFC28*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:9CFCD1*
ID_OUI_FROM_DATABASE=Aetheris Technology (Shanghai) Co., Ltd.
@@ -86792,6 +87500,48 @@ OUI:9CFFBE*
OUI:9CFFC2*
ID_OUI_FROM_DATABASE=AVI Systems GmbH
+OUI:A0024A0*
+ ID_OUI_FROM_DATABASE=Zhejiang Hechuan Technology Co.,Ltd
+
+OUI:A0024A1*
+ ID_OUI_FROM_DATABASE=Vitec Imaging Solutions Spa
+
+OUI:A0024A2*
+ ID_OUI_FROM_DATABASE=Danriver Technologies Corp.
+
+OUI:A0024A3*
+ ID_OUI_FROM_DATABASE=SomaDetect Inc
+
+OUI:A0024A4*
+ ID_OUI_FROM_DATABASE=Argos Solutions AS
+
+OUI:A0024A5*
+ ID_OUI_FROM_DATABASE=Donguan Amsamotion Automation Technology Co., Ltd
+
+OUI:A0024A6*
+ ID_OUI_FROM_DATABASE=Xiaojie Technology (Shenzhen) Co., Ltd
+
+OUI:A0024A8*
+ ID_OUI_FROM_DATABASE=Beijing Lyratone Technology Co., Ltd
+
+OUI:A0024A9*
+ ID_OUI_FROM_DATABASE=Kontakt Micro-Location Sp z o.o.
+
+OUI:A0024AA*
+ ID_OUI_FROM_DATABASE=Guangdong Jinpeng Technology Co. LTD
+
+OUI:A0024AB*
+ ID_OUI_FROM_DATABASE=Xi'an Yingsheng Electric Technology Co.,Ltd.
+
+OUI:A0024AC*
+ ID_OUI_FROM_DATABASE=Encroute AB
+
+OUI:A0024AD*
+ ID_OUI_FROM_DATABASE=bitbee Inc
+
+OUI:A0024AE*
+ ID_OUI_FROM_DATABASE=IoTecha Corp
+
OUI:A002DC*
ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
@@ -87074,6 +87824,9 @@ OUI:A039F7*
OUI:A03A75*
ID_OUI_FROM_DATABASE=PSS Belgium N.V.
+OUI:A03B01*
+ ID_OUI_FROM_DATABASE=Kyung In Electronics
+
OUI:A03B1B*
ID_OUI_FROM_DATABASE=Inspire Tech
@@ -87146,6 +87899,9 @@ OUI:A04041*
OUI:A040A0*
ID_OUI_FROM_DATABASE=NETGEAR
+OUI:A0412D*
+ ID_OUI_FROM_DATABASE=Lansen Systems AB
+
OUI:A04147*
ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
@@ -87239,6 +87995,9 @@ OUI:A06090*
OUI:A06260*
ID_OUI_FROM_DATABASE=Private
+OUI:A062FB*
+ ID_OUI_FROM_DATABASE=HISENSE VISUAL TECHNOLOGY CO.,LTD
+
OUI:A06391*
ID_OUI_FROM_DATABASE=NETGEAR
@@ -87452,6 +88211,9 @@ OUI:A0A3B8*
OUI:A0A3E2*
ID_OUI_FROM_DATABASE=Actiontec Electronics, Inc
+OUI:A0A3F0*
+ ID_OUI_FROM_DATABASE=D-Link International
+
OUI:A0A4C5*
ID_OUI_FROM_DATABASE=Intel Corporate
@@ -88103,6 +88865,9 @@ OUI:A43EA0*
OUI:A44027*
ID_OUI_FROM_DATABASE=zte corporation
+OUI:A4423B*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
OUI:A444D1*
ID_OUI_FROM_DATABASE=Wingtech Group (HongKong)Limited
@@ -88215,7 +88980,7 @@ OUI:A45385*
ID_OUI_FROM_DATABASE=WEIFANG GOERTEK ELECTRONICS CO.,LTD
OUI:A453EE0*
- ID_OUI_FROM_DATABASE=MASBER ELECTRIC SL
+ ID_OUI_FROM_DATABASE=MAHLE ELECTRONICS, SLU
OUI:A453EE1*
ID_OUI_FROM_DATABASE=Stellamore
@@ -88223,12 +88988,30 @@ OUI:A453EE1*
OUI:A453EE2*
ID_OUI_FROM_DATABASE=Ubisafe Smart Devices
+OUI:A453EE3*
+ ID_OUI_FROM_DATABASE=Larva.io OÜ
+
OUI:A453EE4*
ID_OUI_FROM_DATABASE=Williamson Corporation
+OUI:A453EE5*
+ ID_OUI_FROM_DATABASE=Foshan Yisihang Electrical Technology Co., Ltd.
+
+OUI:A453EE6*
+ ID_OUI_FROM_DATABASE=Aura Home, Inc.
+
+OUI:A453EE7*
+ ID_OUI_FROM_DATABASE=Beijing Lanke Science and Technology Co.,LTd.
+
+OUI:A453EE8*
+ ID_OUI_FROM_DATABASE=T-Touching Co., Ltd.
+
OUI:A453EE9*
ID_OUI_FROM_DATABASE=Dongguan HuaFuu industrial co., LTD
+OUI:A453EEB*
+ ID_OUI_FROM_DATABASE=Viper Design, LLC
+
OUI:A453EEC*
ID_OUI_FROM_DATABASE=SOS LAB Co., Ltd.
@@ -88304,6 +89087,9 @@ OUI:A45D36*
OUI:A45DA1*
ID_OUI_FROM_DATABASE=ADB Broadband Italia
+OUI:A45E5A*
+ ID_OUI_FROM_DATABASE=ACTIVIO Inc.
+
OUI:A45E60*
ID_OUI_FROM_DATABASE=Apple, Inc.
@@ -88787,6 +89573,9 @@ OUI:A4E391*
OUI:A4E4B8*
ID_OUI_FROM_DATABASE=BlackBerry RTS
+OUI:A4E57C*
+ ID_OUI_FROM_DATABASE=Espressif Inc.
+
OUI:A4E597*
ID_OUI_FROM_DATABASE=Gessler GmbH
@@ -89111,6 +89900,9 @@ OUI:A8407D*
OUI:A84122*
ID_OUI_FROM_DATABASE=China Mobile (Hangzhou) Information Technology Co.,Ltd.
+OUI:A842A7*
+ ID_OUI_FROM_DATABASE=Jiangsu Huitong Group Co.,Ltd.
+
OUI:A84481*
ID_OUI_FROM_DATABASE=Nokia Corporation
@@ -89609,6 +90401,9 @@ OUI:A8FB70*
OUI:A8FCB7*
ID_OUI_FROM_DATABASE=Consolidated Resource Imaging
+OUI:A8FFBA*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:AA0000*
ID_OUI_FROM_DATABASE=DIGITAL EQUIPMENT CORPORATION
@@ -90095,6 +90890,9 @@ OUI:AC751D*
OUI:AC7713*
ID_OUI_FROM_DATABASE=Honeywell Safety Products (Shanghai) Co.,Ltd
+OUI:AC78D1*
+ ID_OUI_FROM_DATABASE=Juniper Networks
+
OUI:AC7A42*
ID_OUI_FROM_DATABASE=iConnectivity
@@ -90122,6 +90920,9 @@ OUI:AC8112*
OUI:AC81F3*
ID_OUI_FROM_DATABASE=Nokia Corporation
+OUI:AC8247*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
OUI:AC8317*
ID_OUI_FROM_DATABASE=Shenzhen Furtunetel Communication Co., Ltd
@@ -90548,6 +91349,9 @@ OUI:B01266*
OUI:B01408*
ID_OUI_FROM_DATABASE=LIGHTSPEED INTERNATIONAL CO.
+OUI:B01656*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:B01743*
ID_OUI_FROM_DATABASE=EDISON GLOBAL CIRCUITS LLC
@@ -90776,6 +91580,9 @@ OUI:B05CDA*
OUI:B05CE5*
ID_OUI_FROM_DATABASE=Nokia Corporation
+OUI:B06088*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
OUI:B061C7*
ID_OUI_FROM_DATABASE=Ericsson-LG Enterprise
@@ -91103,6 +91910,9 @@ OUI:B0BB8B*
OUI:B0BBE5*
ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS
+OUI:B0BD1B*
+ ID_OUI_FROM_DATABASE=Dongguan Liesheng Electronic Co., Ltd.
+
OUI:B0BD6D*
ID_OUI_FROM_DATABASE=Echostreams Innovative Solutions
@@ -91280,6 +92090,9 @@ OUI:B0E50E*
OUI:B0E5ED*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+OUI:B0E5F9*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:B0E71D*
ID_OUI_FROM_DATABASE=Shanghai Maigantech Co.,Ltd
@@ -91850,6 +92663,9 @@ OUI:B482FE*
OUI:B48547*
ID_OUI_FROM_DATABASE=Amptown System Company GmbH
+OUI:B485E1*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:B48655*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
@@ -92018,6 +92834,9 @@ OUI:B4B15A*
OUI:B4B265*
ID_OUI_FROM_DATABASE=DAEHO I&T
+OUI:B4B291*
+ ID_OUI_FROM_DATABASE=LG Electronics
+
OUI:B4B362*
ID_OUI_FROM_DATABASE=zte corporation
@@ -92033,6 +92852,9 @@ OUI:B4B542*
OUI:B4B5AF*
ID_OUI_FROM_DATABASE=Minsung Electronics
+OUI:B4B5B6*
+ ID_OUI_FROM_DATABASE=CHONGQING FUGUI ELECTRONICS CO.,LTD.
+
OUI:B4B676*
ID_OUI_FROM_DATABASE=Intel Corporate
@@ -92636,6 +93458,9 @@ OUI:B88AEC*
OUI:B88D12*
ID_OUI_FROM_DATABASE=Apple, Inc.
+OUI:B88DF1*
+ ID_OUI_FROM_DATABASE=Nanjing BigFish Semiconductor Co., Ltd.
+
OUI:B88E3A*
ID_OUI_FROM_DATABASE=Infinite Technologies JLT
@@ -93299,6 +94124,9 @@ OUI:BC3E07*
OUI:BC3E13*
ID_OUI_FROM_DATABASE=Accordance Systems Inc.
+OUI:BC3ECB*
+ ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd.
+
OUI:BC3F4E*
ID_OUI_FROM_DATABASE=Teleepoch Ltd
@@ -93497,6 +94325,9 @@ OUI:BC6B4D*
OUI:BC6C21*
ID_OUI_FROM_DATABASE=Apple, Inc.
+OUI:BC6D05*
+ ID_OUI_FROM_DATABASE=Dusun Electron Co.,Ltd.
+
OUI:BC6E64*
ID_OUI_FROM_DATABASE=Sony Mobile Communications Inc
@@ -93680,6 +94511,9 @@ OUI:BC9930*
OUI:BC99BC*
ID_OUI_FROM_DATABASE=FonSee Technology Inc.
+OUI:BC9A53*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:BC9B68*
ID_OUI_FROM_DATABASE=Technicolor CH USA Inc.
@@ -93689,6 +94523,9 @@ OUI:BC9C31*
OUI:BC9CC5*
ID_OUI_FROM_DATABASE=Beijing Huafei Technology Co., Ltd.
+OUI:BC9D42*
+ ID_OUI_FROM_DATABASE=SHENZHEN RF-LINK TECHNOLOGY CO.,LTD.
+
OUI:BC9DA5*
ID_OUI_FROM_DATABASE=DASCOM Europe GmbH
@@ -93776,6 +94613,9 @@ OUI:BCBBC9*
OUI:BCBC46*
ID_OUI_FROM_DATABASE=SKS Welding Systems GmbH
+OUI:BCBD9E*
+ ID_OUI_FROM_DATABASE=ITEL MOBILE LIMITED
+
OUI:BCC00F*
ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD
@@ -93827,6 +94667,9 @@ OUI:BCD177*
OUI:BCD1D3*
ID_OUI_FROM_DATABASE=Shenzhen TINNO Mobile Technology Corp.
+OUI:BCD295*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
OUI:BCD5B6*
ID_OUI_FROM_DATABASE=d2d technologies
@@ -93836,6 +94679,9 @@ OUI:BCD713*
OUI:BCD767*
ID_OUI_FROM_DATABASE=Private
+OUI:BCD7CE*
+ ID_OUI_FROM_DATABASE=China Mobile (Hangzhou) Information Technology Co., Ltd.
+
OUI:BCD940*
ID_OUI_FROM_DATABASE=ASR Co,.Ltd.
@@ -93902,6 +94748,9 @@ OUI:BCF2AF*
OUI:BCF310*
ID_OUI_FROM_DATABASE=Extreme Networks, Inc.
+OUI:BCF45F*
+ ID_OUI_FROM_DATABASE=zte corporation
+
OUI:BCF5AC*
ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
@@ -94022,6 +94871,9 @@ OUI:C025E9*
OUI:C027B9*
ID_OUI_FROM_DATABASE=Beijing National Railway Research & Design Institute of Signal & Communication Co., Ltd.
+OUI:C0280B*
+ ID_OUI_FROM_DATABASE=Honor Device Co., Ltd.
+
OUI:C0288D*
ID_OUI_FROM_DATABASE=Logitech, Inc
@@ -94119,7 +94971,7 @@ OUI:C04004*
ID_OUI_FROM_DATABASE=Medicaroid Corporation
OUI:C04121*
- ID_OUI_FROM_DATABASE=Nokia
+ ID_OUI_FROM_DATABASE=Nokia Solutions and Networks GmbH & Co. KG
OUI:C041F6*
ID_OUI_FROM_DATABASE=LG ELECTRONICS INC
@@ -94631,6 +95483,9 @@ OUI:C0CFA3*
OUI:C0D012*
ID_OUI_FROM_DATABASE=Apple, Inc.
+OUI:C0D026*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:C0D044*
ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS
@@ -94718,6 +95573,9 @@ OUI:C0DCDA*
OUI:C0DF77*
ID_OUI_FROM_DATABASE=Conrad Electronic SE
+OUI:C0E018*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:C0E3A0*
ID_OUI_FROM_DATABASE=Renesas Electronics (Penang) Sdn. Bhd.
@@ -94871,6 +95729,9 @@ OUI:C412F5*
OUI:C413E2*
ID_OUI_FROM_DATABASE=Extreme Networks, Inc.
+OUI:C41411*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:C4143C*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
@@ -94955,6 +95816,9 @@ OUI:C42F90*
OUI:C43018*
ID_OUI_FROM_DATABASE=MCS Logic Inc.
+OUI:C430CA*
+ ID_OUI_FROM_DATABASE=SD Biosensor
+
OUI:C432D1*
ID_OUI_FROM_DATABASE=Farlink Technology Limited
@@ -94982,6 +95846,9 @@ OUI:C438D3*
OUI:C4393A*
ID_OUI_FROM_DATABASE=SMC Networks Inc
+OUI:C43960*
+ ID_OUI_FROM_DATABASE=GD Midea Air-Conditioning Equipment Co.,Ltd.
+
OUI:C43A35*
ID_OUI_FROM_DATABASE=FN-LINK TECHNOLOGY LIMITED
@@ -95102,6 +95969,9 @@ OUI:C45A86*
OUI:C45BF7*
ID_OUI_FROM_DATABASE=ants
+OUI:C45D83*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
OUI:C45DD8*
ID_OUI_FROM_DATABASE=HDMI Forum
@@ -95477,6 +96347,9 @@ OUI:C4BE84*
OUI:C4BED4*
ID_OUI_FROM_DATABASE=Avaya Inc
+OUI:C4BF60*
+ ID_OUI_FROM_DATABASE=TECNO MOBILE LIMITED
+
OUI:C4C0AE*
ID_OUI_FROM_DATABASE=MIDORI ELECTRONIC CO., LTD.
@@ -95519,6 +96392,9 @@ OUI:C4CD82*
OUI:C4D197*
ID_OUI_FROM_DATABASE=Ventia Utility Services
+OUI:C4D438*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:C4D489*
ID_OUI_FROM_DATABASE=JiangSu Joyque Information Industry Co.,Ltd
@@ -95558,6 +96434,9 @@ OUI:C4E17C*
OUI:C4E1A1*
ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+OUI:C4E287*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:C4E39F*
ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
@@ -96059,6 +96938,9 @@ OUI:C869CD*
OUI:C86C1E*
ID_OUI_FROM_DATABASE=Display Systems Ltd
+OUI:C86C3D*
+ ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
+
OUI:C86C87*
ID_OUI_FROM_DATABASE=Zyxel Communications Corporation
@@ -96989,6 +97871,9 @@ OUI:CC66B2*
OUI:CC69B0*
ID_OUI_FROM_DATABASE=Global Traffic Technologies, LLC
+OUI:CC69FA*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:CC6A10*
ID_OUI_FROM_DATABASE=The Chamberlain Group, Inc
@@ -97304,6 +98189,9 @@ OUI:CCC8D7*
OUI:CCC92C*
ID_OUI_FROM_DATABASE=Schindler - PORT Technology
+OUI:CCC95D*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:CCCC4E*
ID_OUI_FROM_DATABASE=Sun Fountainhead USA. Corp
@@ -97796,6 +98684,9 @@ OUI:D039B3*
OUI:D039EA*
ID_OUI_FROM_DATABASE=NetApp
+OUI:D03C1F*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
OUI:D03D52*
ID_OUI_FROM_DATABASE=Ava Security Limited
@@ -97808,6 +98699,9 @@ OUI:D03E5C*
OUI:D03FAA*
ID_OUI_FROM_DATABASE=Apple, Inc.
+OUI:D040EF*
+ ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd.
+
OUI:D041C9*
ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD
@@ -97859,6 +98753,9 @@ OUI:D05509*
OUI:D055B2*
ID_OUI_FROM_DATABASE=Integrated Device Technology (Malaysia) Sdn. Bhd.
+OUI:D056BF*
+ ID_OUI_FROM_DATABASE=AMOSENSE
+
OUI:D0574C*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
@@ -97907,6 +98804,9 @@ OUI:D05A0F*
OUI:D05AF1*
ID_OUI_FROM_DATABASE=Shenzhen Pulier Tech CO.,Ltd
+OUI:D05AFD*
+ ID_OUI_FROM_DATABASE=Realme Chongqing Mobile Telecommunications Corp.,Ltd.
+
OUI:D05BA8*
ID_OUI_FROM_DATABASE=zte corporation
@@ -99144,7 +100044,7 @@ OUI:D4A499*
ID_OUI_FROM_DATABASE=InView Technology Corporation
OUI:D4A651*
- ID_OUI_FROM_DATABASE=HANGZHOU AIXIANGJI TECHNOLOGY CO., LTD
+ ID_OUI_FROM_DATABASE=Tuya Smart Inc.
OUI:D4A928*
ID_OUI_FROM_DATABASE=GreenWave Reality Inc
@@ -99341,6 +100241,9 @@ OUI:D4EC0C*
OUI:D4EC86*
ID_OUI_FROM_DATABASE=LinkedHope Intelligent Technologies Co., Ltd
+OUI:D4ECAB*
+ ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd.
+
OUI:D4EE07*
ID_OUI_FROM_DATABASE=HIWIFI Co., Ltd.
@@ -99422,6 +100325,9 @@ OUI:D808F5*
OUI:D809C3*
ID_OUI_FROM_DATABASE=Cercacor Labs
+OUI:D809D6*
+ ID_OUI_FROM_DATABASE=ZEXELON CO., LTD.
+
OUI:D80B9A*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
@@ -99455,6 +100361,9 @@ OUI:D81399*
OUI:D814D6*
ID_OUI_FROM_DATABASE=SURE SYSTEM Co Ltd
+OUI:D814DF*
+ ID_OUI_FROM_DATABASE=TCL King Electrical Appliances (Huizhou) Co., Ltd
+
OUI:D8150D*
ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
@@ -99617,6 +100526,9 @@ OUI:D84710*
OUI:D84732*
ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
+OUI:D847BB*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:D848EE*
ID_OUI_FROM_DATABASE=Hangzhou Xueji Technology Co., Ltd.
@@ -100176,7 +101088,7 @@ OUI:D8EF42*
ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
OUI:D8EFCD*
- ID_OUI_FROM_DATABASE=Nokia
+ ID_OUI_FROM_DATABASE=Nokia Solutions and Networks GmbH & Co. KG
OUI:D8F0F2*
ID_OUI_FROM_DATABASE=Zeebo Inc
@@ -100322,6 +101234,9 @@ OUI:DC21B9*
OUI:DC21E2*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+OUI:DC2727*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:DC2834*
ID_OUI_FROM_DATABASE=HAKKO Corporation
@@ -100694,6 +101609,9 @@ OUI:DC8C1B*
OUI:DC8C37*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+OUI:DC9020*
+ ID_OUI_FROM_DATABASE=RURU TEK PRIVATE LIMITED
+
OUI:DC9088*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
@@ -100733,6 +101651,9 @@ OUI:DC9FA4*
OUI:DC9FDB*
ID_OUI_FROM_DATABASE=Ubiquiti Networks Inc.
+OUI:DCA120*
+ ID_OUI_FROM_DATABASE=Nokia
+
OUI:DCA266*
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
@@ -100853,6 +101774,9 @@ OUI:DCCC8D*
OUI:DCCD2F*
ID_OUI_FROM_DATABASE=Seiko Epson Corporation
+OUI:DCCD74*
+ ID_OUI_FROM_DATABASE=Japan E.M.Solutions Co., Ltd.
+
OUI:DCCE41*
ID_OUI_FROM_DATABASE=FE GLOBAL HONG KONG LIMITED
@@ -100889,6 +101813,9 @@ OUI:DCD444*
OUI:DCD52A*
ID_OUI_FROM_DATABASE=Sunny Heart Limited
+OUI:DCD7A0*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:DCD87C*
ID_OUI_FROM_DATABASE=Beijing Jingdong Century Trading Co., LTD.
@@ -101222,6 +102149,9 @@ OUI:E02CB2*
OUI:E02CF3*
ID_OUI_FROM_DATABASE=MRS Electronic GmbH
+OUI:E02E3F*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:E02F6D*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
@@ -101438,6 +102368,9 @@ OUI:E0693A*
OUI:E06995*
ID_OUI_FROM_DATABASE=PEGATRON CORPORATION
+OUI:E06C4E*
+ ID_OUI_FROM_DATABASE=Shenzhen TINNO Mobile Technology Corp.
+
OUI:E06CA6*
ID_OUI_FROM_DATABASE=Creotech Instruments S.A.
@@ -102254,6 +103187,9 @@ OUI:E45D52*
OUI:E45D75*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:E45E1B*
+ ID_OUI_FROM_DATABASE=Google, Inc.
+
OUI:E45E37*
ID_OUI_FROM_DATABASE=Intel Corporate
@@ -102554,6 +103490,9 @@ OUI:E4BD4B*
OUI:E4BEED*
ID_OUI_FROM_DATABASE=Netcore Technology Inc.
+OUI:E4BFFA*
+ ID_OUI_FROM_DATABASE=Technicolor CH USA Inc.
+
OUI:E4C0CC*
ID_OUI_FROM_DATABASE=China Mobile Group Device Co.,Ltd.
@@ -103103,6 +104042,9 @@ OUI:E86D6E*
OUI:E86DCB*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:E86DE9*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:E86F38*
ID_OUI_FROM_DATABASE=CHONGQING FUGUI ELECTRONICS CO.,LTD.
@@ -103232,6 +104174,9 @@ OUI:E89F80*
OUI:E89FEC*
ID_OUI_FROM_DATABASE=CHENGDU KT ELECTRONIC HI-TECH CO.,LTD
+OUI:E8A0CD*
+ ID_OUI_FROM_DATABASE=Nintendo Co.,Ltd
+
OUI:E8A1F8*
ID_OUI_FROM_DATABASE=zte corporation
@@ -103403,12 +104348,18 @@ OUI:E8D0FC*
OUI:E8D11B*
ID_OUI_FROM_DATABASE=ASKEY COMPUTER CORP
+OUI:E8D2FF*
+ ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS
+
OUI:E8D483*
ID_OUI_FROM_DATABASE=ULTIMATE Europe Transportation Equipment GmbH
OUI:E8D4E0*
ID_OUI_FROM_DATABASE=Beijing BenyWave Technology Co., Ltd.
+OUI:E8D765*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:E8D819*
ID_OUI_FROM_DATABASE=AzureWave Technology Inc.
@@ -103841,6 +104792,9 @@ OUI:EC74BA*
OUI:EC753E*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+OUI:EC75ED*
+ ID_OUI_FROM_DATABASE=Citrix Systems, Inc.
+
OUI:EC7949*
ID_OUI_FROM_DATABASE=FUJITSU LIMITED
@@ -103850,6 +104804,9 @@ OUI:EC79F2*
OUI:EC7C74*
ID_OUI_FROM_DATABASE=Justone Technologies Co., Ltd.
+OUI:EC7CB6*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
OUI:EC7D11*
ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd.
@@ -104075,6 +105032,9 @@ OUI:ECBD09*
OUI:ECBD1D*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+OUI:ECBE5F*
+ ID_OUI_FROM_DATABASE=Vestel Elektronik San ve Tic. A.Ş.
+
OUI:ECBEDD*
ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS
@@ -104294,6 +105254,9 @@ OUI:F015A0*
OUI:F015B9*
ID_OUI_FROM_DATABASE=PlayFusion Limited
+OUI:F01628*
+ ID_OUI_FROM_DATABASE=Technicolor (China) Technology Co., Ltd.
+
OUI:F0182B*
ID_OUI_FROM_DATABASE=LG Chem
@@ -104390,6 +105353,9 @@ OUI:F02475*
OUI:F02572*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+OUI:F0258E*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:F025B7*
ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO-MECHANICS(THAILAND)
@@ -104441,6 +105407,9 @@ OUI:F03404*
OUI:F037A1*
ID_OUI_FROM_DATABASE=Huike Electronics (SHENZHEN) CO., LTD.
+OUI:F03965*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
OUI:F03A4B*
ID_OUI_FROM_DATABASE=Bloombase, Inc.
@@ -104519,6 +105488,9 @@ OUI:F041C8E*
OUI:F0421C*
ID_OUI_FROM_DATABASE=Intel Corporate
+OUI:F042F5*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:F04335*
ID_OUI_FROM_DATABASE=DVN(Shanghai)Ltd.
@@ -104633,6 +105605,9 @@ OUI:F06E0B*
OUI:F06E32*
ID_OUI_FROM_DATABASE=MICROTEL INNOVATION S.R.L.
+OUI:F06F46*
+ ID_OUI_FROM_DATABASE=Ubiik
+
OUI:F0728C*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
@@ -105125,6 +106100,9 @@ OUI:F0F260*
OUI:F0F336*
ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
+OUI:F0F564*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
OUI:F0F5AE*
ID_OUI_FROM_DATABASE=Adaptrum Inc.
@@ -105170,6 +106148,9 @@ OUI:F0FDA0*
OUI:F0FE6B*
ID_OUI_FROM_DATABASE=Shanghai High-Flying Electronics Technology Co., Ltd
+OUI:F0FEE7*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:F40270*
ID_OUI_FROM_DATABASE=Dell Inc.
@@ -105335,6 +106316,9 @@ OUI:F42896*
OUI:F42981*
ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd.
+OUI:F42A7D*
+ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
+
OUI:F42B48*
ID_OUI_FROM_DATABASE=Ubiqam
@@ -105776,6 +106760,9 @@ OUI:F4AFE7*
OUI:F4B164*
ID_OUI_FROM_DATABASE=Lightning Telecommunications Technology Co. Ltd
+OUI:F4B301*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
OUI:F4B381*
ID_OUI_FROM_DATABASE=WindowMaster A/S
@@ -105899,6 +106886,9 @@ OUI:F4D108*
OUI:F4D261*
ID_OUI_FROM_DATABASE=SEMOCON Co., Ltd
+OUI:F4D488*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:F4D620*
ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
@@ -106649,6 +107639,9 @@ OUI:F88DEF*
OUI:F88E85*
ID_OUI_FROM_DATABASE=Comtrend Corporation
+OUI:F88F07*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
OUI:F88FCA*
ID_OUI_FROM_DATABASE=Google, Inc.
@@ -107087,6 +108080,9 @@ OUI:FC01CD*
OUI:FC039F*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:FC041C*
+ ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+
OUI:FC0647*
ID_OUI_FROM_DATABASE=Cortland Research, LLC
diff --git a/hwdb.d/20-acpi-vendor.hwdb b/hwdb.d/20-acpi-vendor.hwdb
index f06de58509..ac8710870e 100644
--- a/hwdb.d/20-acpi-vendor.hwdb
+++ b/hwdb.d/20-acpi-vendor.hwdb
@@ -7191,6 +7191,9 @@ acpi:USI*:
acpi:USR*:
ID_VENDOR_FROM_DATABASE=U.S. Robotics Inc
+acpi:UTC*:
+ ID_VENDOR_FROM_DATABASE=Unicompute Technology Co., Ltd.
+
acpi:UTD*:
ID_VENDOR_FROM_DATABASE=Up to Date Tech
diff --git a/hwdb.d/20-acpi-vendor.hwdb.patch b/hwdb.d/20-acpi-vendor.hwdb.patch
index 87be18ef02..cdfe663c26 100644
--- a/hwdb.d/20-acpi-vendor.hwdb.patch
+++ b/hwdb.d/20-acpi-vendor.hwdb.patch
@@ -1,5 +1,5 @@
---- 20-acpi-vendor.hwdb.base 2020-10-23 13:40:57.007717408 +0200
-+++ 20-acpi-vendor.hwdb 2020-10-23 13:40:57.014717445 +0200
+--- 20-acpi-vendor.hwdb.base 2020-11-26 13:49:35.243482590 +0100
++++ 20-acpi-vendor.hwdb 2020-11-26 13:49:35.260482675 +0100
@@ -3,6 +3,8 @@
# Data imported from:
# https://uefi.org/uefi-pnp-export
@@ -451,7 +451,7 @@
acpi:USD*:
ID_VENDOR_FROM_DATABASE=U.S. Digital Corporation
-@@ -7354,9 +7422,6 @@
+@@ -7357,9 +7425,6 @@
acpi:WAL*:
ID_VENDOR_FROM_DATABASE=Wave Access
@@ -461,7 +461,7 @@
acpi:WAV*:
ID_VENDOR_FROM_DATABASE=Wavephore
-@@ -7481,7 +7546,7 @@
+@@ -7484,7 +7549,7 @@
ID_VENDOR_FROM_DATABASE=WyreStorm Technologies LLC
acpi:WYS*:
@@ -470,7 +470,7 @@
acpi:WYT*:
ID_VENDOR_FROM_DATABASE=Wooyoung Image & Information Co.,Ltd.
-@@ -7495,9 +7560,6 @@
+@@ -7498,9 +7563,6 @@
acpi:XDM*:
ID_VENDOR_FROM_DATABASE=XDM Ltd.
@@ -480,7 +480,7 @@
acpi:XES*:
ID_VENDOR_FROM_DATABASE=Extreme Engineering Solutions, Inc.
-@@ -7528,9 +7590,6 @@
+@@ -7531,9 +7593,6 @@
acpi:XNT*:
ID_VENDOR_FROM_DATABASE=XN Technologies, Inc.
@@ -490,7 +490,7 @@
acpi:XQU*:
ID_VENDOR_FROM_DATABASE=SHANGHAI SVA-DAV ELECTRONICS CO., LTD
-@@ -7597,6 +7656,9 @@
+@@ -7600,6 +7659,9 @@
acpi:ZBX*:
ID_VENDOR_FROM_DATABASE=Zebax Technologies
diff --git a/hwdb.d/20-pci-classes.hwdb b/hwdb.d/20-pci-classes.hwdb
index a98a50e95c..2af181c52b 100644
--- a/hwdb.d/20-pci-classes.hwdb
+++ b/hwdb.d/20-pci-classes.hwdb
@@ -380,6 +380,12 @@ pci:v*d*sv*sd*bc08sc06*
pci:v*d*sv*sd*bc08sc80*
ID_PCI_SUBCLASS_FROM_DATABASE=System peripheral
+pci:v*d*sv*sd*bc08sc99*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Timing Card
+
+pci:v*d*sv*sd*bc08sc99i01*
+ ID_PCI_INTERFACE_FROM_DATABASE=TAP Timing Card
+
pci:v*d*sv*sd*bc09*
ID_PCI_CLASS_FROM_DATABASE=Input device controller
diff --git a/hwdb.d/20-pci-vendor-model.hwdb b/hwdb.d/20-pci-vendor-model.hwdb
index a19490ed56..21defccc8b 100644
--- a/hwdb.d/20-pci-vendor-model.hwdb
+++ b/hwdb.d/20-pci-vendor-model.hwdb
@@ -122,6 +122,9 @@ pci:v0000018Ad00000106*
pci:v000001DE*
ID_VENDOR_FROM_DATABASE=Oxide Computer Company
+pci:v00000200*
+ ID_VENDOR_FROM_DATABASE=Dell (wrong ID)
+
pci:v0000021B*
ID_VENDOR_FROM_DATABASE=Compaq Computer Corporation
@@ -1994,6 +1997,9 @@ pci:v00001000d000000AFsv00001D49sd00000202*
pci:v00001000d000000AFsv00001D49sd00000204*
ID_MODEL_FROM_DATABASE=SAS3408 Fusion-MPT Tri-Mode I/O Controller Chip (IOC) (ThinkSystem 430-8i SAS/SATA 12Gb Dense HBA)
+pci:v00001000d000000B2*
+ ID_MODEL_FROM_DATABASE=PEX880xx PCIe Gen 4 Switch SES management endpoint
+
pci:v00001000d000000BE*
ID_MODEL_FROM_DATABASE=SAS3504 Fusion-MPT Tri-Mode RAID On Chip (ROC)
@@ -7742,6 +7748,9 @@ pci:v00001002d000067EB*
pci:v00001002d000067EF*
ID_MODEL_FROM_DATABASE=Baffin [Radeon RX 460/560D / Pro 450/455/460/555/555X/560/560X]
+pci:v00001002d000067EFsv00001025sd00001367*
+ ID_MODEL_FROM_DATABASE=Baffin [Radeon RX 460/560D / Pro 450/455/460/555/555X/560/560X] (RX560X 4GB)
+
pci:v00001002d000067EFsv00001028sd00001703*
ID_MODEL_FROM_DATABASE=Baffin [Radeon RX 460/560D / Pro 450/455/460/555/555X/560/560X] (RX 560D OEM OC 2 GB)
@@ -7973,6 +7982,9 @@ pci:v00001002d00006820sv000017AAsd00003801*
pci:v00001002d00006820sv000017AAsd00003824*
ID_MODEL_FROM_DATABASE=Venus XTX [Radeon HD 8890M / R9 M275X/M375X] (Radeon R9 M375)
+pci:v00001002d00006820sv00001DA2sd0000E26A*
+ ID_MODEL_FROM_DATABASE=Venus XTX [Radeon HD 8890M / R9 M275X/M375X] (Radeon R7 250)
+
pci:v00001002d00006821*
ID_MODEL_FROM_DATABASE=Venus XT [Radeon HD 8870M / R9 M270X/M370X]
@@ -10019,6 +10031,9 @@ pci:v00001002d00006939sv0000148Csd00009380*
pci:v00001002d00006939sv0000174Bsd0000E308*
ID_MODEL_FROM_DATABASE=Tonga PRO [Radeon R9 285/380] (Radeon R9 380 Nitro 4G D5)
+pci:v00001002d00006939sv0000174Bsd0000E315*
+ ID_MODEL_FROM_DATABASE=Tonga PRO [Radeon R9 285/380] (Radeon R9 285)
+
pci:v00001002d0000693B*
ID_MODEL_FROM_DATABASE=Tonga PRO GL [FirePro W7100 / Barco MXRT-7600]
@@ -10538,6 +10553,18 @@ pci:v00001002d0000734F*
pci:v00001002d00007360*
ID_MODEL_FROM_DATABASE=Navi 12 [Radeon Pro 5600M]
+pci:v00001002d000073BF*
+ ID_MODEL_FROM_DATABASE=Navi 21 [Radeon RX 6800/6800 XT / 6900 XT]
+
+pci:v00001002d000073C3*
+ ID_MODEL_FROM_DATABASE=Navi 22
+
+pci:v00001002d000073DF*
+ ID_MODEL_FROM_DATABASE=Navi 22
+
+pci:v00001002d000073FF*
+ ID_MODEL_FROM_DATABASE=Navi 23
+
pci:v00001002d00007833*
ID_MODEL_FROM_DATABASE=RS350 Host Bridge
@@ -28008,7 +28035,7 @@ pci:v000010DEd000000F4*
ID_MODEL_FROM_DATABASE=NV43 [GeForce 6600 LE]
pci:v000010DEd000000F5*
- ID_MODEL_FROM_DATABASE=G71 [GeForce 7800 GS AGP]
+ ID_MODEL_FROM_DATABASE=G70/G71 [GeForce 7800 GS AGP]
pci:v000010DEd000000F6*
ID_MODEL_FROM_DATABASE=NV43 [GeForce 6800 GS/XT]
@@ -34667,6 +34694,9 @@ pci:v000010DEd0000128B*
pci:v000010DEd0000128Bsv00001043sd000085F7*
ID_MODEL_FROM_DATABASE=GK208B [GeForce GT 710] (GT710-SL-1GD5)
+pci:v000010DEd0000128Bsv00001043sd00008770*
+ ID_MODEL_FROM_DATABASE=GK208B [GeForce GT 710] (GT710-4H-SL-2GD5)
+
pci:v000010DEd0000128C*
ID_MODEL_FROM_DATABASE=GK208B
@@ -35018,6 +35048,9 @@ pci:v000010DEd00001401*
pci:v000010DEd00001402*
ID_MODEL_FROM_DATABASE=GM206 [GeForce GTX 950]
+pci:v000010DEd00001404*
+ ID_MODEL_FROM_DATABASE=GM206 [GeForce GTX 960 FAKE]
+
pci:v000010DEd00001406*
ID_MODEL_FROM_DATABASE=GM206 [GeForce GTX 960 OEM]
@@ -35333,6 +35366,9 @@ pci:v000010DEd00001C31*
pci:v000010DEd00001C35*
ID_MODEL_FROM_DATABASE=GP106
+pci:v000010DEd00001C36*
+ ID_MODEL_FROM_DATABASE=GP106
+
pci:v000010DEd00001C60*
ID_MODEL_FROM_DATABASE=GP106BM [GeForce GTX 1060 Mobile 6GB]
@@ -35789,6 +35825,9 @@ pci:v000010DEd00001FF9*
pci:v000010DEd000020B0*
ID_MODEL_FROM_DATABASE=GA100 [A100 SXM4 40GB]
+pci:v000010DEd000020B1*
+ ID_MODEL_FROM_DATABASE=GA100 [A100 PCIe 40GB]
+
pci:v000010DEd000020BE*
ID_MODEL_FROM_DATABASE=GA100 [GRID A100A]
@@ -35835,13 +35874,13 @@ pci:v000010DEd00002204*
ID_MODEL_FROM_DATABASE=GA102 [GeForce RTX 3090]
pci:v000010DEd00002206*
- ID_MODEL_FROM_DATABASE=GA102 [GeForce RTX 3080 10GB / 20GB]
+ ID_MODEL_FROM_DATABASE=GA102 [GeForce RTX 3080]
pci:v000010DEd00002206sv000010DEsd0000146D*
- ID_MODEL_FROM_DATABASE=GA102 [GeForce RTX 3080 10GB / 20GB] (GA102 [GeForce RTX 3080 20GB])
+ ID_MODEL_FROM_DATABASE=GA102 [GeForce RTX 3080] (GA102 [GeForce RTX 3080 20GB])
pci:v000010DEd00002206sv00001462sd00003892*
- ID_MODEL_FROM_DATABASE=GA102 [GeForce RTX 3080 10GB / 20GB] (RTX 3080 10GB GAMING X TRIO)
+ ID_MODEL_FROM_DATABASE=GA102 [GeForce RTX 3080] (RTX 3080 10GB GAMING X TRIO)
pci:v000010DEd0000222B*
ID_MODEL_FROM_DATABASE=GA102 [GeForce RTX 3090 Engineering Sample]
@@ -35861,24 +35900,45 @@ pci:v000010DEd00002482*
pci:v000010DEd00002484*
ID_MODEL_FROM_DATABASE=GA104 [GeForce RTX 3070]
+pci:v000010DEd00002484sv000010DEsd0000146B*
+ ID_MODEL_FROM_DATABASE=GA104 [GeForce RTX 3070]
+
+pci:v000010DEd00002484sv000010DEsd000014AE*
+ ID_MODEL_FROM_DATABASE=GA104 [GeForce RTX 3070] (GA104 [GeForce RTX 3070 16GB])
+
pci:v000010DEd00002486*
ID_MODEL_FROM_DATABASE=GA104 [GeForce RTX 3060 Ti]
pci:v000010DEd0000249C*
- ID_MODEL_FROM_DATABASE=GA104M [GeForce RTX 3070 Mobile]
+ ID_MODEL_FROM_DATABASE=GA104M [GeForce RTX 3070 Mobile / Max-Q 8GB/16GB]
pci:v000010DEd0000249D*
ID_MODEL_FROM_DATABASE=GA104M [GeForce RTX 3070 Mobile / Max-Q]
+pci:v000010DEd000024AC*
+ ID_MODEL_FROM_DATABASE=GA104 [GeForce RTX 30x0 Engineering Sample]
+
+pci:v000010DEd000024AD*
+ ID_MODEL_FROM_DATABASE=GA104 [GeForce RTX 3060 Engineering Sample]
+
pci:v000010DEd000024AF*
ID_MODEL_FROM_DATABASE=GA104 [GeForce RTX 3070 Engineering Sample]
pci:v000010DEd000024BF*
ID_MODEL_FROM_DATABASE=GA104 [GeForce RTX 3070 Engineering Sample]
+pci:v000010DEd000024DC*
+ ID_MODEL_FROM_DATABASE=GA104M [GeForce RTX 3070 Mobile 16GB]
+
+pci:v000010DEd000024DD*
+ ID_MODEL_FROM_DATABASE=GA104M [GeForce RTX 3070 Mobile / Max-Q]
+
pci:v000010DEd0000252F*
ID_MODEL_FROM_DATABASE=GA106 [GeForce RTX 3060 Engineering Sample]
+pci:v000010DEd000025AF*
+ ID_MODEL_FROM_DATABASE=GA107 [GeForce RTX 3050 Engineering Sample]
+
pci:v000010DF*
ID_VENDOR_FROM_DATABASE=Emulex Corporation
@@ -36566,6 +36626,9 @@ pci:v000010ECd00005289*
pci:v000010ECd00005289sv00001043sd00001457*
ID_MODEL_FROM_DATABASE=RTL8411 PCI Express Card Reader (K55A Laptop)
+pci:v000010ECd00005762*
+ ID_MODEL_FROM_DATABASE=RTS5763DL NVMe SSD Controller
+
pci:v000010ECd00008029*
ID_MODEL_FROM_DATABASE=RTL-8029(AS)
@@ -41543,6 +41606,12 @@ pci:v00001137d00000042sv00001137sd0000012E*
pci:v00001137d00000042sv00001137sd0000014D*
ID_MODEL_FROM_DATABASE=VIC Management Controller (VIC 1385 PCIe Management Controller)
+pci:v00001137d00000042sv00001137sd00000217*
+ ID_MODEL_FROM_DATABASE=VIC Management Controller (VIC 1455 PCIe Management Controller)
+
+pci:v00001137d00000042sv00001137sd00000218*
+ ID_MODEL_FROM_DATABASE=VIC Management Controller (VIC 1457 PCIe Management Controller)
+
pci:v00001137d00000043*
ID_MODEL_FROM_DATABASE=VIC Ethernet NIC
@@ -46757,6 +46826,21 @@ pci:v0000125Bd00001400*
pci:v0000125Bd00001400sv00001186sd00001100*
ID_MODEL_FROM_DATABASE=AX88141 Fast Ethernet Controller (AX8814X Based PCI Fast Ethernet Adapter)
+pci:v0000125Bd00009100*
+ ID_MODEL_FROM_DATABASE=AX99100 PCIe to Multi I/O Controller
+
+pci:v0000125Bd00009100sv0000A000sd00001000*
+ ID_MODEL_FROM_DATABASE=AX99100 PCIe to Multi I/O Controller (Serial Port)
+
+pci:v0000125Bd00009100sv0000A000sd00002000*
+ ID_MODEL_FROM_DATABASE=AX99100 PCIe to Multi I/O Controller (Parallel Port)
+
+pci:v0000125Bd00009100sv0000A000sd00006000*
+ ID_MODEL_FROM_DATABASE=AX99100 PCIe to Multi I/O Controller (SPI)
+
+pci:v0000125Bd00009100sv0000A000sd00007000*
+ ID_MODEL_FROM_DATABASE=AX99100 PCIe to Multi I/O Controller (Local Bus)
+
pci:v0000125C*
ID_VENDOR_FROM_DATABASE=Aurora Technologies, Inc.
@@ -57854,6 +57938,9 @@ pci:v000014F1d00008800sv00000070sd00007801*
pci:v000014F1d00008800sv00000070sd00009001*
ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (Nova-T DVB-T)
+pci:v000014F1d00008800sv00000070sd00009002*
+ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (Nova-T DVB-T Model 909)
+
pci:v000014F1d00008800sv00000070sd00009200*
ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (Nova-SE2 DVB-S)
@@ -59943,10 +60030,28 @@ pci:v000015B7d00005001*
ID_MODEL_FROM_DATABASE=WD Black NVMe SSD
pci:v000015B7d00005002*
- ID_MODEL_FROM_DATABASE=WD Black 2018/PC SN720 NVMe SSD
+ ID_MODEL_FROM_DATABASE=WD Black 2018 / PC SN720 NVMe SSD
pci:v000015B7d00005003*
- ID_MODEL_FROM_DATABASE=WD Black 2018/PC SN520 NVMe SSD
+ ID_MODEL_FROM_DATABASE=WD Black 2018 / PC SN520 NVMe SSD
+
+pci:v000015B7d00005004*
+ ID_MODEL_FROM_DATABASE=PC SN520 NVMe SSD
+
+pci:v000015B7d00005005*
+ ID_MODEL_FROM_DATABASE=PC SN520 NVMe SSD
+
+pci:v000015B7d00005006*
+ ID_MODEL_FROM_DATABASE=WD Black 2019/PC SN750 NVMe SSD
+
+pci:v000015B7d00005009*
+ ID_MODEL_FROM_DATABASE=WD Blue SN550 NVMe SSD
+
+pci:v000015B7d00005009sv000015B7sd00005009*
+ ID_MODEL_FROM_DATABASE=WD Blue SN550 NVMe SSD
+
+pci:v000015B7d0000500D*
+ ID_MODEL_FROM_DATABASE=WD Ultrastar DC SN340 NVMe SSD
pci:v000015B8*
ID_VENDOR_FROM_DATABASE=ADDI-DATA GmbH
@@ -64256,6 +64361,12 @@ pci:v000018F4d000001A5*
pci:v000018F4d000001C5*
ID_MODEL_FROM_DATABASE=NT200A02 Network Adapter
+pci:v000018F4d000001D5*
+ ID_MODEL_FROM_DATABASE=NT50B01 Network Adapter
+
+pci:v000018F4d000001E5*
+ ID_MODEL_FROM_DATABASE=NT100A01 Network Adapter
+
pci:v000018F6*
ID_VENDOR_FROM_DATABASE=NextIO
@@ -65363,6 +65474,12 @@ pci:v00001974d00000009*
pci:v00001974d00000011*
ID_MODEL_FROM_DATABASE=FlexCard PMC-II Ethernet
+pci:v00001974d00000018*
+ ID_MODEL_FROM_DATABASE=FlexCard PXIe3
+
+pci:v00001974d00000019*
+ ID_MODEL_FROM_DATABASE=FlexCard PCIe3
+
pci:v00001976*
ID_VENDOR_FROM_DATABASE=TRENDnet
@@ -65381,6 +65498,9 @@ pci:v0000197Bd00000260*
pci:v0000197Bd00000368*
ID_MODEL_FROM_DATABASE=JMB368 IDE controller
+pci:v0000197Bd00000585*
+ ID_MODEL_FROM_DATABASE=JMB58x AHCI SATA controller
+
pci:v0000197Bd00002360*
ID_MODEL_FROM_DATABASE=JMB360 AHCI Controller
@@ -65799,7 +65919,7 @@ pci:v000019E5d00001710*
ID_MODEL_FROM_DATABASE=iBMA Virtual Network Adapter
pci:v000019E5d00001711*
- ID_MODEL_FROM_DATABASE=Hi1710 [iBMC Intelligent Management system chip w/VGA support]
+ ID_MODEL_FROM_DATABASE=Hi171x Series [iBMC Intelligent Management system chip w/VGA support]
pci:v000019E5d00001822*
ID_MODEL_FROM_DATABASE=Hi1822 Family (4*25GE)
@@ -66098,8 +66218,8 @@ pci:v00001A4Ad00001000*
pci:v00001A4Ad00001010*
ID_MODEL_FROM_DATABASE=AMC EVR - Stockholm Timing Board
-pci:v00001A4Ad00001020*
- ID_MODEL_FROM_DATABASE=Cluster On Board (COB) Ethernet Switch
+pci:v00001A4Ad00001030*
+ ID_MODEL_FROM_DATABASE=PGPCard - Gen3 GIGe Interface
pci:v00001A4Ad00002000*
ID_MODEL_FROM_DATABASE=PGPCard - 4 Lane
@@ -66110,12 +66230,24 @@ pci:v00001A4Ad00002001*
pci:v00001A4Ad00002010*
ID_MODEL_FROM_DATABASE=PCI-Express EVR
+pci:v00001A4Ad00002011*
+ ID_MODEL_FROM_DATABASE=PCI-Express EVR - TPR Version
+
pci:v00001A4Ad00002020*
- ID_MODEL_FROM_DATABASE=PGP-GEN3 PCIe
+ ID_MODEL_FROM_DATABASE=PGP-GEN3 PCIe - 8 Lane Plus EVR
pci:v00001A4Ad00002030*
ID_MODEL_FROM_DATABASE=AXI Stream DAQ PCIe card
+pci:v00001A4Ad00002040*
+ ID_MODEL_FROM_DATABASE=EXO PCIe TEM
+
+pci:v00001A4Ad00003000*
+ ID_MODEL_FROM_DATABASE=COB DTM V1
+
+pci:v00001A4Ad00003001*
+ ID_MODEL_FROM_DATABASE=COB DTM V2
+
pci:v00001A51*
ID_VENDOR_FROM_DATABASE=Hectronic AB
@@ -66614,6 +66746,9 @@ pci:v00001B1A*
pci:v00001B1Ad00000E70*
ID_MODEL_FROM_DATABASE=GRAPE
+pci:v00001B1C*
+ ID_VENDOR_FROM_DATABASE=Corsair
+
pci:v00001B21*
ID_VENDOR_FROM_DATABASE=ASMedia Technology Inc.
@@ -66626,6 +66761,9 @@ pci:v00001B21d00000612*
pci:v00001B21d00000612sv00001849sd00000612*
ID_MODEL_FROM_DATABASE=ASM1062 Serial ATA Controller (Motherboard)
+pci:v00001B21d00001040*
+ ID_MODEL_FROM_DATABASE=ASM1040 XHCI Controller
+
pci:v00001B21d00001042*
ID_MODEL_FROM_DATABASE=ASM1042 SuperSpeed USB Host Controller
@@ -66857,6 +66995,12 @@ pci:v00001B4Bd00000640*
pci:v00001B4Bd00002241*
ID_MODEL_FROM_DATABASE=88NR2241 Non-Volatile memory controller
+pci:v00001B4Bd00002241sv00001028sd00002112*
+ ID_MODEL_FROM_DATABASE=88NR2241 Non-Volatile memory controller (BOSS-N1 Monolithic)
+
+pci:v00001B4Bd00002241sv00001028sd00002113*
+ ID_MODEL_FROM_DATABASE=88NR2241 Non-Volatile memory controller (BOSS-N1 Modular)
+
pci:v00001B4Bd00002241sv00001D49sd00000306*
ID_MODEL_FROM_DATABASE=88NR2241 Non-Volatile memory controller (ThinkSystem M.2 NVMe 2-Bay RAID Enablement Kit)
@@ -67061,6 +67205,36 @@ pci:v00001B94d0000E400*
pci:v00001B96*
ID_VENDOR_FROM_DATABASE=Western Digital
+pci:v00001B96d00002200*
+ ID_MODEL_FROM_DATABASE=Ultrastar DC SN630 NVMe SSD
+
+pci:v00001B96d00002201*
+ ID_MODEL_FROM_DATABASE=Ultrastar DC SN630 NVMe SSD
+
+pci:v00001B96d00002300*
+ ID_MODEL_FROM_DATABASE=Ultrastar DC SN840 NVMe SSD
+
+pci:v00001B96d00002400*
+ ID_MODEL_FROM_DATABASE=Ultrastar DC SN640 NVMe SSD
+
+pci:v00001B96d00002401*
+ ID_MODEL_FROM_DATABASE=Ultrastar DC SN640 NVMe SSD
+
+pci:v00001B96d00002402*
+ ID_MODEL_FROM_DATABASE=Ultrastar DC SN640 NVMe SSD
+
+pci:v00001B96d00002404*
+ ID_MODEL_FROM_DATABASE=Ultrastar DC SN640 NVMe SSD
+
+pci:v00001B96d00002500*
+ ID_MODEL_FROM_DATABASE=Ultrastar DC SN840 NVMe SSD
+
+pci:v00001B96d00003714*
+ ID_MODEL_FROM_DATABASE=PC SN730 NVMe SSD
+
+pci:v00001B96d00003734*
+ ID_MODEL_FROM_DATABASE=PC SN730 NVMe SSD
+
pci:v00001B9A*
ID_VENDOR_FROM_DATABASE=XAVi Technologies Corp.
@@ -67514,10 +67688,16 @@ pci:v00001C5Cd00001327*
pci:v00001C5Cd00001504*
ID_MODEL_FROM_DATABASE=SC300 512GB M.2 2280 SATA Solid State Drive
+pci:v00001C5Cd0000243B*
+ ID_MODEL_FROM_DATABASE=PE6110 NVMe Solid State Drive
+
+pci:v00001C5Cd0000243Bsv00001C5Csd00000100*
+ ID_MODEL_FROM_DATABASE=PE6110 NVMe Solid State Drive
+
pci:v00001C5Cd00002839*
ID_MODEL_FROM_DATABASE=PE8000 Series NVMe Solid State Drive
-pci:v00001C5Cd00002839sv00000100sd00001C5C*
+pci:v00001C5Cd00002839sv00001C5Csd00000100*
ID_MODEL_FROM_DATABASE=PE8000 Series NVMe Solid State Drive
pci:v00001C5F*
@@ -67676,6 +67856,9 @@ pci:v00001CD2d00000305*
pci:v00001CD2d00000306*
ID_MODEL_FROM_DATABASE=Simulyzer-RT CompactPCI Serial CAN-2 card (CAN-FD)
+pci:v00001CD2d00000307*
+ ID_MODEL_FROM_DATABASE=Simulyzer-RT CompactPCI Serial DIO-2 card [Xilinx Zynq UltraScale+]
+
pci:v00001CD7*
ID_VENDOR_FROM_DATABASE=Nanjing Magewell Electronics Co., Ltd.
@@ -68195,6 +68378,9 @@ pci:v00001D78d00001512sv00001D78sd00003107*
pci:v00001D7C*
ID_VENDOR_FROM_DATABASE=Aerotech, Inc.
+pci:v00001D7Cd00000001*
+ ID_MODEL_FROM_DATABASE=HyperWire Adapter
+
pci:v00001D82*
ID_VENDOR_FROM_DATABASE=NETINT Technologies Inc.
@@ -68339,6 +68525,9 @@ pci:v00001DA1*
pci:v00001DA2*
ID_VENDOR_FROM_DATABASE=Sapphire Technology Limited
+pci:v00001DA2d0000E26A*
+ ID_MODEL_FROM_DATABASE=Radeon R7 250
+
pci:v00001DA3*
ID_VENDOR_FROM_DATABASE=Habana Labs Ltd.
@@ -68747,6 +68936,12 @@ pci:v00001E0Fd00000007sv00001028sd00002110*
pci:v00001E0Fd00000007sv00001E0Fsd00000001*
ID_MODEL_FROM_DATABASE=NVMe SSD Controller Cx6 (Generic NVMe CM6 RI 3.84TB)
+pci:v00001E0Fd00000009*
+ ID_MODEL_FROM_DATABASE=NVMe SSD
+
+pci:v00001E0Fd00000009sv00001E0Fsd00000001*
+ ID_MODEL_FROM_DATABASE=NVMe SSD (Toshiba RC500 NVMe SSD 500GB)
+
pci:v00001E17*
ID_VENDOR_FROM_DATABASE=Arnold & Richter Cine Technik GmbH & Co. Betriebs KG
@@ -68783,12 +68978,99 @@ pci:v00001E36*
pci:v00001E36d00000001*
ID_MODEL_FROM_DATABASE=T10 [CloudBlazer]
+pci:v00001E36d00000002*
+ ID_MODEL_FROM_DATABASE=T11 [CloudBlazer]
+
+pci:v00001E36d00000003*
+ ID_MODEL_FROM_DATABASE=T10s [CloudBlazer]
+
+pci:v00001E36d00008011*
+ ID_MODEL_FROM_DATABASE=I10 [CloudBlazer]
+
pci:v00001E38*
ID_VENDOR_FROM_DATABASE=Blaize, Inc
pci:v00001E38d00000102*
ID_MODEL_FROM_DATABASE=Xplorer X1600
+pci:v00001E3B*
+ ID_VENDOR_FROM_DATABASE=Shenzhen DAPU Microelectronics Co., Ltd
+
+pci:v00001E3Bd00001098*
+ ID_MODEL_FROM_DATABASE=Haishen NVMe SSD
+
+pci:v00001E3Bd00001098sv00001E3Bsd00000001*
+ ID_MODEL_FROM_DATABASE=Haishen 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))
+
+pci:v00001E3Bd00001098sv00001E3Bsd00000004*
+ ID_MODEL_FROM_DATABASE=Haishen 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))
+
+pci:v00001E3Bd00001098sv00001E3Bsd00000009*
+ ID_MODEL_FROM_DATABASE=Haishen 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))
+
+pci:v00001E3Bd00001098sv00001E3Bsd0000000C*
+ ID_MODEL_FROM_DATABASE=Haishen 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))
+
+pci:v00001E3Bd00001098sv00001E3Bsd00000014*
+ ID_MODEL_FROM_DATABASE=Haishen 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))
+
+pci:v00001E3Bd00001098sv00001E3Bsd00000021*
+ ID_MODEL_FROM_DATABASE=Haishen 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))
+
+pci:v00001E3Bd00001098sv00001E3Bsd00000061*
+ ID_MODEL_FROM_DATABASE=Haishen 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))
+
+pci:v00001E3Bd00001098sv00001E3Bsd00000064*
+ ID_MODEL_FROM_DATABASE=Haishen 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))
+
+pci:v00001E3Bd00001098sv00001E3Bsd0000006C*
+ ID_MODEL_FROM_DATABASE=Haishen 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))
+
+pci:v00001E3Bd00001098sv00001E3Bsd0000006F*
+ ID_MODEL_FROM_DATABASE=Haishen 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))
+
+pci:v00001E3Bd00001098sv00001E3Bsd0000007C*
+ ID_MODEL_FROM_DATABASE=Haishen 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))
+
+pci:v00001E3Bd00001098sv00001E3Bsd0000007F*
+ ID_MODEL_FROM_DATABASE=Haishen 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))
+
pci:v00001E3D*
ID_VENDOR_FROM_DATABASE=Burlywood, Inc
@@ -68820,10 +69102,10 @@ pci:v00001E4C*
ID_VENDOR_FROM_DATABASE=GSI Technology
pci:v00001E4Cd00000010*
- ID_MODEL_FROM_DATABASE=Gemini [ Lida ]
+ ID_MODEL_FROM_DATABASE=APU [Leda-G]
pci:v00001E4Cd00000010sv00001E4Csd00000120*
- ID_MODEL_FROM_DATABASE=Gemini [ Lida ] (SE120)
+ ID_MODEL_FROM_DATABASE=APU [Leda-G] (SE120)
pci:v00001E57*
ID_VENDOR_FROM_DATABASE=Beijing Panyi Technology Co., Ltd
@@ -68837,6 +69119,9 @@ pci:v00001E57d00000100sv00000000sd00000100*
pci:v00001E6B*
ID_VENDOR_FROM_DATABASE=Axiado Corp.
+pci:v00001E7B*
+ ID_VENDOR_FROM_DATABASE=Dataland
+
pci:v00001E7C*
ID_VENDOR_FROM_DATABASE=Brainchip Inc
@@ -68861,6 +69146,12 @@ pci:v00001E94*
pci:v00001E95*
ID_VENDOR_FROM_DATABASE=Solid State Storage Technology Corporation
+pci:v00001EAB*
+ ID_VENDOR_FROM_DATABASE=Hefei DATANG Storage Technology Co.,LTD.
+
+pci:v00001EAE*
+ ID_VENDOR_FROM_DATABASE=XFX Limited
+
pci:v00001EB1*
ID_VENDOR_FROM_DATABASE=VeriSilicon Inc
@@ -69105,7 +69396,7 @@ pci:v00002646*
ID_VENDOR_FROM_DATABASE=Kingston Technology Company, Inc.
pci:v00002646d00002263*
- ID_MODEL_FROM_DATABASE=A2000, M.2, 500GB
+ ID_MODEL_FROM_DATABASE=A2000 NVMe SSD
pci:v0000270B*
ID_VENDOR_FROM_DATABASE=Xantel Corporation
@@ -72926,6 +73217,12 @@ pci:v00008086d00000A55sv00001028sd00001FE8*
pci:v00008086d00000A55sv00001028sd00001FE9*
ID_MODEL_FROM_DATABASE=NVMe DC SSD [3DNAND, Beta Rock Controller] (Express Flash NVMe 4.0TB HHHL AIC (P4600))
+pci:v00008086d00000B26*
+ ID_MODEL_FROM_DATABASE=Thunderbolt 4 Bridge [Goshen Ridge 2020]
+
+pci:v00008086d00000B27*
+ ID_MODEL_FROM_DATABASE=Thunderbolt 4 USB Controller [Goshen Ridge 2020]
+
pci:v00008086d00000B60*
ID_MODEL_FROM_DATABASE=NVMe DC SSD [3DNAND, Beta Rock Controller]
@@ -76037,6 +76334,18 @@ pci:v00008086d00001240*
pci:v00008086d0000124B*
ID_MODEL_FROM_DATABASE=82380FB (MPCI2) Mobile Docking Controller
+pci:v00008086d0000124C*
+ ID_MODEL_FROM_DATABASE=Ethernet Connection E823-L for backplane
+
+pci:v00008086d0000124D*
+ ID_MODEL_FROM_DATABASE=Ethernet Connection E823-L for SFP
+
+pci:v00008086d0000124E*
+ ID_MODEL_FROM_DATABASE=Ethernet Connection E823-L/X557-AT 10GBASE-T
+
+pci:v00008086d0000124F*
+ ID_MODEL_FROM_DATABASE=Ethernet Connection E823-L 1GbE
+
pci:v00008086d00001250*
ID_MODEL_FROM_DATABASE=430HX - 82439HX TXC [Triton II]
@@ -76190,6 +76499,9 @@ pci:v00008086d0000151C*
pci:v00008086d0000151Csv0000108Esd00007B13*
ID_MODEL_FROM_DATABASE=82599 10 Gigabit TN Network Connection (Dual 10GBASE-T LP)
+pci:v00008086d0000151D*
+ ID_MODEL_FROM_DATABASE=Ethernet Connection E823-L for QSFP
+
pci:v00008086d00001520*
ID_MODEL_FROM_DATABASE=I350 Ethernet Controller Virtual Function
@@ -77492,6 +77804,9 @@ pci:v00008086d000015F2sv00008086sd00000002*
pci:v00008086d000015F3*
ID_MODEL_FROM_DATABASE=Ethernet Controller I225-V
+pci:v00008086d000015F3sv00008086sd00000003*
+ ID_MODEL_FROM_DATABASE=Ethernet Controller I225-V (Intel(R) Ethernet Controller (3) I225-V)
+
pci:v00008086d000015F4*
ID_MODEL_FROM_DATABASE=Ethernet Connection (15) I219-LM
@@ -77684,6 +77999,33 @@ pci:v00008086d0000163E*
pci:v00008086d00001889*
ID_MODEL_FROM_DATABASE=Ethernet Adaptive Virtual Function
+pci:v00008086d00001890*
+ ID_MODEL_FROM_DATABASE=Ethernet Connection E822-C for backplane
+
+pci:v00008086d00001891*
+ ID_MODEL_FROM_DATABASE=Ethernet Connection E822-C for QSFP
+
+pci:v00008086d00001892*
+ ID_MODEL_FROM_DATABASE=Ethernet Connection E822-C for SFP
+
+pci:v00008086d00001893*
+ ID_MODEL_FROM_DATABASE=Ethernet Connection E822-C/X557-AT 10GBASE-T
+
+pci:v00008086d00001894*
+ ID_MODEL_FROM_DATABASE=Ethernet Connection E822-C 1GbE
+
+pci:v00008086d00001897*
+ ID_MODEL_FROM_DATABASE=Ethernet Connection E822-L for backplane
+
+pci:v00008086d00001898*
+ ID_MODEL_FROM_DATABASE=Ethernet Connection E822-L for SFP
+
+pci:v00008086d00001899*
+ ID_MODEL_FROM_DATABASE=Ethernet Connection E822-L/X557-AT 10GBASE-T
+
+pci:v00008086d0000189A*
+ ID_MODEL_FROM_DATABASE=Ethernet Connection E822-L 1GbE
+
pci:v00008086d000018A0*
ID_MODEL_FROM_DATABASE=C4xxx Series QAT
@@ -79346,6 +79688,9 @@ pci:v00008086d00001F27*
pci:v00008086d00001F2C*
ID_MODEL_FROM_DATABASE=Atom processor C2000 USB Enhanced Host Controller
+pci:v00008086d00001F2Csv00000200sd00001028*
+ ID_MODEL_FROM_DATABASE=Atom processor C2000 USB Enhanced Host Controller (Atom C2338 on Dell 0K8Y0N motherboard)
+
pci:v00008086d00001F2E*
ID_MODEL_FROM_DATABASE=Atom processor C2000 RAID SATA2 Controller
@@ -81857,6 +82202,15 @@ pci:v00008086d00002520*
pci:v00008086d00002521*
ID_MODEL_FROM_DATABASE=82804AA MRH-S Memory Repeater Hub for SDRAM
+pci:v00008086d00002522*
+ ID_MODEL_FROM_DATABASE=NVMe Optane Memory Series
+
+pci:v00008086d00002522sv00008086sd00003806*
+ ID_MODEL_FROM_DATABASE=NVMe Optane Memory Series (Optane Memory 16GB)
+
+pci:v00008086d00002522sv00008086sd00003810*
+ ID_MODEL_FROM_DATABASE=NVMe Optane Memory Series (Optane Memory M10 16GB)
+
pci:v00008086d00002526*
ID_MODEL_FROM_DATABASE=Wireless-AC 9260
@@ -89942,6 +90296,9 @@ pci:v00008086d00003E33*
pci:v00008086d00003E34*
ID_MODEL_FROM_DATABASE=Coffee Lake HOST and DRAM Controller
+pci:v00008086d00003E35*
+ ID_MODEL_FROM_DATABASE=Coffee Lake Host Bridge/DRAM Registers
+
pci:v00008086d00003E81*
ID_MODEL_FROM_DATABASE=8th Gen Core Processor PCIe Controller (x16)
@@ -92540,12 +92897,21 @@ pci:v00008086d00009A13*
pci:v00008086d00009A14*
ID_MODEL_FROM_DATABASE=11th Gen Core Processor Host Bridge/DRAM Registers
+pci:v00008086d00009A17*
+ ID_MODEL_FROM_DATABASE=Tiger Lake-H Thunderbolt USB Controller
+
pci:v00008086d00009A1B*
ID_MODEL_FROM_DATABASE=Tiger Lake-LP Thunderbolt NHI #0
pci:v00008086d00009A1D*
ID_MODEL_FROM_DATABASE=Tiger Lake-LP Thunderbolt NHI #1
+pci:v00008086d00009A1F*
+ ID_MODEL_FROM_DATABASE=Tiger Lake-H Thunderbolt NHI #0
+
+pci:v00008086d00009A21*
+ ID_MODEL_FROM_DATABASE=Tiger Lake-H Thunderbolt NHI #1
+
pci:v00008086d00009A23*
ID_MODEL_FROM_DATABASE=Tiger Lake-LP Thunderbolt PCI Express Root Port #0
@@ -92558,11 +92924,23 @@ pci:v00008086d00009A27*
pci:v00008086d00009A29*
ID_MODEL_FROM_DATABASE=Tiger Lake-LP Thunderbolt PCI Express Root Port #3
+pci:v00008086d00009A2B*
+ ID_MODEL_FROM_DATABASE=Tiger Lake-H Thunderbolt PCI Express Root Port #0
+
+pci:v00008086d00009A2D*
+ ID_MODEL_FROM_DATABASE=Tiger Lake-H Thunderbolt PCI Express Root Port #1
+
+pci:v00008086d00009A2F*
+ ID_MODEL_FROM_DATABASE=Tiger Lake-H Thunderbolt PCI Express Root Port #2
+
+pci:v00008086d00009A31*
+ ID_MODEL_FROM_DATABASE=Tiger Lake-H Thunderbolt PCI Express Root Port #3
+
pci:v00008086d00009A33*
ID_MODEL_FROM_DATABASE=Tiger Lake Trace Hub
pci:v00008086d00009A49*
- ID_MODEL_FROM_DATABASE=UHD Graphics
+ ID_MODEL_FROM_DATABASE=Iris Xe Graphics
pci:v00008086d00009B41*
ID_MODEL_FROM_DATABASE=UHD Graphics
@@ -95570,6 +95948,18 @@ pci:v00009005d0000028Fsv0000152Dsd00008A36*
pci:v00009005d0000028Fsv0000152Dsd00008A37*
ID_MODEL_FROM_DATABASE=Smart Storage PQI SAS (QS-8242-24i)
+pci:v00009005d0000028Fsv0000193Dsd00001104*
+ ID_MODEL_FROM_DATABASE=Smart Storage PQI SAS (RAID P2404-Mf-4i-2GB)
+
+pci:v00009005d0000028Fsv0000193Dsd00001105*
+ ID_MODEL_FROM_DATABASE=Smart Storage PQI SAS (RAID P4408-Mf-8i-2GB)
+
+pci:v00009005d0000028Fsv0000193Dsd00001106*
+ ID_MODEL_FROM_DATABASE=Smart Storage PQI SAS (RAID P2404-Mf-4i-1GB)
+
+pci:v00009005d0000028Fsv0000193Dsd00001107*
+ ID_MODEL_FROM_DATABASE=Smart Storage PQI SAS (RAID P4408-Mf-8i-4GB)
+
pci:v00009005d0000028Fsv0000193Dsd00008460*
ID_MODEL_FROM_DATABASE=Smart Storage PQI SAS (HBA H460-M1)
@@ -95657,6 +96047,12 @@ pci:v00009005d0000028Fsv00009005sd00000806*
pci:v00009005d0000028Fsv00009005sd00000807*
ID_MODEL_FROM_DATABASE=Smart Storage PQI SAS (SmartRAID 3162-8i)
+pci:v00009005d0000028Fsv00009005sd00000808*
+ ID_MODEL_FROM_DATABASE=Smart Storage PQI SAS (SmartRAID 3101E-4i)
+
+pci:v00009005d0000028Fsv00009005sd00000809*
+ ID_MODEL_FROM_DATABASE=Smart Storage PQI SAS (SmartRAID 3102E-8i)
+
pci:v00009005d0000028Fsv00009005sd00000900*
ID_MODEL_FROM_DATABASE=Smart Storage PQI SAS (SmartHBA 2100-8i)
@@ -95702,6 +96098,9 @@ pci:v00009005d0000028Fsv00009005sd00001280*
pci:v00009005d0000028Fsv00009005sd00001281*
ID_MODEL_FROM_DATABASE=Smart Storage PQI SAS (HBA 1100-16e)
+pci:v00009005d0000028Fsv00009005sd00001282*
+ ID_MODEL_FROM_DATABASE=Smart Storage PQI SAS (SmartHBA 2100-16i)
+
pci:v00009005d0000028Fsv00009005sd00001300*
ID_MODEL_FROM_DATABASE=Smart Storage PQI SAS (HBA 1100-8i8e)
@@ -96059,6 +96458,9 @@ pci:v00009D32d00001203*
pci:v00009D32d00001204*
ID_MODEL_FROM_DATABASE=STAR1200E NVMe SSD
+pci:v0000A000*
+ ID_VENDOR_FROM_DATABASE=Asix Electronics Corporation (Wrong ID)
+
pci:v0000A0A0*
ID_VENDOR_FROM_DATABASE=AOPEN Inc.
diff --git a/hwdb.d/60-autosuspend.hwdb b/hwdb.d/60-autosuspend.hwdb
index 3b42f5a2e7..55d3fcc3b0 100644
--- a/hwdb.d/60-autosuspend.hwdb
+++ b/hwdb.d/60-autosuspend.hwdb
@@ -5,8 +5,8 @@
# Match string formats:
# <subsystem>:<modalias>
#
-# pci:v<vendor>d<device>:
-# usb:v<vendor>p<product>:
+# pci:v<vendor>d<device>
+# usb:v<vendor>p<product>
#
# To add local entries, create a new file
# /etc/udev/hwdb.d/61-autosuspend-local.hwdb
@@ -24,8 +24,6 @@
#
# Allowed properties are:
# ID_AUTOSUSPEND=1
-#
-# All matches should end in ':*' to allow future expansions of the match key.
# Sort by brand, model
@@ -34,7 +32,7 @@
#########################################
# AU9540 Smartcard Reader
-usb:v058Fp9540:*
+usb:v058Fp9540*
ID_AUTOSUSPEND=1
#########################################
@@ -42,9 +40,9 @@ usb:v058Fp9540:*
#########################################
# X1C8 Touchscreen
-usb:v04F3p2B7C:*
+usb:v04F3p2B7C*
# T14 Gen 1 Touchscreen
-usb:v04F3p2ACC:*
+usb:v04F3p2ACC*
ID_AUTOSUSPEND=1
#########################################
@@ -52,14 +50,14 @@ usb:v04F3p2ACC:*
#########################################
# Emulated USB HID devices
-usb:v0627p0001:*QEMU USB Keyboard*:*
-usb:v0627p0001:*QEMU USB Mouse*:*
-usb:v0627p0001:*QEMU USB Tablet*:*
+usb:v0627p0001:*QEMU USB Keyboard*
+usb:v0627p0001:*QEMU USB Mouse*
+usb:v0627p0001:*QEMU USB Tablet*
ID_AUTOSUSPEND=1
#########################################
# Wacom
#########################################
-usb:v056Ap51A0:*
+usb:v056Ap51A0*
ID_AUTOSUSPEND=1
diff --git a/hwdb.d/60-evdev.hwdb b/hwdb.d/60-evdev.hwdb
index 31475ed71c..ce068280cf 100644
--- a/hwdb.d/60-evdev.hwdb
+++ b/hwdb.d/60-evdev.hwdb
@@ -35,8 +35,6 @@
# the struct input_absinfo as listed in linux/input.h. If a field is missing
# the field will be left as-is. Not all fields need to be present. e.g. ::45
# sets the resolution to 45 units/mm.
-#
-# All matches should end in ':*' to allow future expansions of the match key.
# Sort by brand, model
@@ -45,9 +43,9 @@
#########################################
# Hyperpen 12000U
-evdev:input:b0003v08CAp0010:*
+evdev:input:b0003v08CAp0010*
# Hyperpen 6000U
-evdev:input:b0003v08CAp0020:*
+evdev:input:b0003v08CAp0020*
EVDEV_ABS_00=::20
EVDEV_ABS_01=::20
@@ -56,48 +54,48 @@ evdev:input:b0003v08CAp0020:*
#########################################
# Macbook2,1 (late 2006), single-button touchpad
-evdev:input:b0003v05ACp021B:*
+evdev:input:b0003v05ACp021B*
# Macbook4,1
-evdev:input:b0003v05ACp0229:*
-evdev:input:b0003v05ACp022A:*
+evdev:input:b0003v05ACp0229*
+evdev:input:b0003v05ACp022A*
EVDEV_ABS_00=256:1471:12
EVDEV_ABS_01=256:831:12
# Macbook5,1 (unibody), aka wellspring3
-evdev:input:b0003v05ACp0236:*
-evdev:input:b0003v05ACp0237:*
-evdev:input:b0003v05ACp0238:*
+evdev:input:b0003v05ACp0236*
+evdev:input:b0003v05ACp0237*
+evdev:input:b0003v05ACp0238*
EVDEV_ABS_00=::92
EVDEV_ABS_01=::90
EVDEV_ABS_35=::92
EVDEV_ABS_36=::90
# Macbook8 (unibody, March 2011)
-evdev:input:b0003v05ACp0245:*
-evdev:input:b0003v05ACp0246:*
-evdev:input:b0003v05ACp0247:*
+evdev:input:b0003v05ACp0245*
+evdev:input:b0003v05ACp0246*
+evdev:input:b0003v05ACp0247*
EVDEV_ABS_00=::92
EVDEV_ABS_01=::91
EVDEV_ABS_35=::92
EVDEV_ABS_36=::91
# Macbook8,2 (unibody)
-evdev:input:b0003v05ACp0252:*
-evdev:input:b0003v05ACp0253:*
-evdev:input:b0003v05ACp0254:*
+evdev:input:b0003v05ACp0252*
+evdev:input:b0003v05ACp0253*
+evdev:input:b0003v05ACp0254*
EVDEV_ABS_00=::94
EVDEV_ABS_01=::92
EVDEV_ABS_35=::94
EVDEV_ABS_36=::92
# MacbookPro10,1 (unibody, June 2012)
-evdev:input:b0003v05ACp0262:*
-evdev:input:b0003v05ACp0263:*
-evdev:input:b0003v05ACp0264:*
+evdev:input:b0003v05ACp0262*
+evdev:input:b0003v05ACp0263*
+evdev:input:b0003v05ACp0264*
# MacbookPro10,2 (unibody, October 2012)
-evdev:input:b0003v05ACp0259:*
-evdev:input:b0003v05ACp025A:*
-evdev:input:b0003v05ACp025B:*
+evdev:input:b0003v05ACp0259*
+evdev:input:b0003v05ACp025A*
+evdev:input:b0003v05ACp025B*
EVDEV_ABS_00=::94
EVDEV_ABS_01=::92
EVDEV_ABS_35=::94
@@ -294,7 +292,7 @@ evdev:name:AlpsPS/2 ALPS GlidePoint:dmi:bvn*:bvr*:bd*:svnDellInc.:pnXPSM1530:*
#####
# Fujitsu Component - USB Touch Panel
-evdev:input:b0003v0430p0530:*
+evdev:input:b0003v0430p0530*
EVDEV_ABS_00=0:4096:16
EVDEV_ABS_01=0:4096:16
@@ -405,10 +403,10 @@ evdev:name:SynPS/2 Synaptics TouchPad:dmi:*svnLENOVO*:pvrThinkPad??40?:*
# Lenovo X240 series
evdev:name:SynPS/2 Synaptics TouchPad:dmi:*svnLENOVO*:pvrThinkPadX240:*
evdev:name:SynPS/2 Synaptics TouchPad:dmi:*svnLENOVO*:pvrThinkPadX240?:*
- EVDEV_ABS_00=1232:5711:51
- EVDEV_ABS_01=1159:4700:53
- EVDEV_ABS_35=1232:5711:51
- EVDEV_ABS_36=1159:4700:53
+ EVDEV_ABS_00=1232:5711:51:13
+ EVDEV_ABS_01=1159:4700:53:13
+ EVDEV_ABS_35=1232:5711:51:13
+ EVDEV_ABS_36=1159:4700:53:13
# Lenovo ThinkPad X140e
evdev:name:SynPS/2 Synaptics TouchPad:dmi:*svnLENOVO*:pvrThinkPadX140e:*
@@ -424,6 +422,13 @@ evdev:name:SynPS/2 Synaptics TouchPad:dmi:*svnLENOVO*:pvrThinkPadT430:*
EVDEV_ABS_35=1250:5631:58
EVDEV_ABS_36=1309:4826:78
+# Lenovo Thinkpad X1 Carbon Extreme 3rd gen.
+evdev:name:SynPS/2 Synaptics TouchPad:dmi:*svnLENOVO*pvrThinkPadX1ExtremeGen3*
+ EVDEV_ABS_00=1354:5678:43
+ EVDEV_ABS_01=1169:4695:51
+ EVDEV_ABS_35=1354:5678:43
+ EVDEV_ABS_36=1169:4695:51
+
# Lenovo Thinkpad Carbon X1 4th gen. and X1 Yoga 1st gen.
evdev:name:SynPS/2 Synaptics TouchPad:dmi:*svnLENOVO*:pvrThinkPadX1Carbon4th:*
EVDEV_ABS_00=1262:5679:44
@@ -446,7 +451,7 @@ evdev:name:Synaptics TM3289-002:dmi:*svnLENOVO*:pvrThinkPadX1Carbon5th:*
EVDEV_ABS_36=::19
# Lenovo Thinkpad X1 Tablet Gen3
-evdev:input:b0003v17EFp60B5:*
+evdev:input:b0003v17EFp60B5*
EVDEV_ABS_00=::12
EVDEV_ABS_01=::11
EVDEV_ABS_35=::12
@@ -639,7 +644,7 @@ evdev:name:SynPS/2 Synaptics TouchPad:dmi:*svnTOSHIBA:pnSATELLITER830:*
#########################################
# Trust Flex Graphics Tablet
-evdev:input:b0003v2179p0004:*
+evdev:input:b0003v2179p0004*
EVDEV_ABS_00=::234
EVDEV_ABS_01=::328
@@ -648,11 +653,11 @@ evdev:input:b0003v2179p0004:*
#########################################
# WALTOP International Corp. Slim Tablet
-evdev:input:b0003v172Fp0031:*
+evdev:input:b0003v172Fp0031*
EVDEV_ABS_00=0:10000:400
EVDEV_ABS_01=0:6250:400
#WALTOP International Corp. Graphics Tablet
-evdev:input:b0003v172Fp0047:*
+evdev:input:b0003v172Fp0047*
EVDEV_ABS_00=0:20000:80
EVDEV_ABS_01=0:12500:80
diff --git a/hwdb.d/60-input-id.hwdb b/hwdb.d/60-input-id.hwdb
index 3fe850847b..1eec776885 100644
--- a/hwdb.d/60-input-id.hwdb
+++ b/hwdb.d/60-input-id.hwdb
@@ -9,7 +9,7 @@
# ABI.
#
# Match string formats:
-# id-input:modalias:<modalias pattern>
+# id-input:modalias:<modalias>
#
# To add local entries, create a new file
# /etc/udev/hwdb.d/61-input-id-local.hwdb
@@ -48,28 +48,27 @@
# NOT allowed in this file are:
# ID_INPUT_WIDTH_MM, ID_INPUT_HEIGHT_MM, ID_INPUT_TOUCHPAD_INTEGRATION
#
-# All matches should end in ':*' to allow future expansions of the match key.
# Example:
-# id-input:modalias:input:b0003v1234pABCD:*
+# id-input:modalias:input:b0003v1234pABCD*
# ID_INPUT_TOUCHPAD=1
# ID_INPUT=1
# Sort by brand, model
# UC-Logic TABLET 1060N Pad
-id-input:modalias:input:b0003v5543p0081:*
+id-input:modalias:input:b0003v5543p0081*
ID_INPUT_TABLET=1
ID_INPUT_TABLET_PAD=1
# XP-PEN STAR 06
-id-input:modalias:input:b0003v28bdp0078:*
+id-input:modalias:input:b0003v28bdp0078*
ID_INPUT_TABLET=1
# Lite-On Tech IBM USB Travel Keyboard with Ultra Nav Mouse
-id-input:modalias:input:b0003v04B3p301Ee0100-e0,1,2,4*:*
+id-input:modalias:input:b0003v04B3p301Ee0100-e0,1,2,4*
ID_INPUT_POINTINGSTICK=1
# Logitech Ultrathin Touch Mouse
-id-input:modalias:input:b0005v046DpB00De0700:*
+id-input:modalias:input:b0005v046DpB00De0700*
ID_INPUT_MOUSE=1
diff --git a/hwdb.d/60-keyboard.hwdb b/hwdb.d/60-keyboard.hwdb
index 97800f4364..52115faf60 100644
--- a/hwdb.d/60-keyboard.hwdb
+++ b/hwdb.d/60-keyboard.hwdb
@@ -47,8 +47,6 @@
# /sys/class/input/input?/capabilities/ev" and <vendor> is the
# firmware-provided string exported by the kernel DMI modalias,
# see /sys/class/dmi/id/modalias
-#
-# All matches should end in ':*' to allow future expansions of the match key.
# ######################### KEY MAPPING ######################################
#
@@ -230,7 +228,7 @@ evdev:name:Asus Laptop extra buttons:dmi:bvn*:bvr*:bd*:svnASUS*:pn*:*
KEYBOARD_KEY_6b=f21 # Touchpad Toggle
# USB keyboard in Asus FX503VD
-evdev:input:b0003v0B05p1869:*
+evdev:input:b0003v0B05p1869*
KEYBOARD_KEY_ff31007c=f20 # Remap micmute to f20
###########################################################
@@ -268,7 +266,7 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnCompaq*:pn*Evo*N*:*
KEYBOARD_KEY_9e=email
KEYBOARD_KEY_9f=homepage
-evdev:input:b0003v049Fp0051:*
+evdev:input:b0003v049Fp0051*
KEYBOARD_KEY_0c0011=presentation
KEYBOARD_KEY_0c0012=addressbook
KEYBOARD_KEY_0c0013=info
@@ -375,7 +373,11 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnDell*:pnXPS12-9Q33*:*
evdev:name:Dell WMI hotkeys:dmi:bvn*:bvr*:bd*:svnDell*:pnLatitude*:*
# Dell Precision microphone mute
evdev:name:Dell WMI hotkeys:dmi:bvn*:bvr*:bd*:svnDell*:pnPrecision*:*
- KEYBOARD_KEY_100150=f20 # Mic mute toggle, should be micmute
+ KEYBOARD_KEY_100150=f20 # Mic mute toggle, should be micmute
+
+# Dell Latitude privacy microphone mute
+evdev:name:Dell Privacy Driver:dmi:bvn*:bvr*:bd*:svnDell*:pnLatitude*:sku0A3E:*
+ KEYBOARD_KEY_12001=f20 # Mic mute toggle, should be micmute
###########################################################
# Everex
@@ -465,7 +467,7 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnGeminiDevices:pnNC14V1006:*
###########################################################
# Slimstar 320
-evdev:input:b0003v0458p0708:*
+evdev:input:b0003v0458p0708*
KEYBOARD_KEY_0900f0=scrollup
KEYBOARD_KEY_0900f1=scrolldown
KEYBOARD_KEY_0900f3=back
@@ -486,7 +488,7 @@ evdev:input:b0003v0458p0708:*
###########################################################
evdev:name:Intel HID events:dmi:bvn*:bvr*:bd*:svnHP*:pn*:*
- KEYBOARD_KEY_8=unknown # Use hp-wireless instead
+ KEYBOARD_KEY_8=unknown # Use hp-wireless instead
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pn*:*
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP*:pn*:*
@@ -622,6 +624,13 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pnHPZBook*:*
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP*:pnHPZBook*:*
KEYBOARD_KEY_81=f20 # Fn+F8; Microphone mute button, should be micmute
+# HP ZBook Studio G5
+evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP*:pnHPZBookStudioG5*:*
+ KEYBOARD_KEY_64=calendar # Calendar icon (Fn + F12)
+ KEYBOARD_KEY_6d=displaytoggle # Display icon
+ KEYBOARD_KEY_66=connect # Pickup phone button → connect → XF86Go
+ KEYBOARD_KEY_65=cancel # Hangup phone button → cancel → Cancel
+
# HP ZBook 15 G2
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pnHPZBook15G2:*
KEYBOARD_KEY_f8=wlan # Wireless HW switch button
@@ -715,7 +724,7 @@ evdev:name:ThinkPad Extra Buttons:dmi:bvn*:bvr*:bd*:svnIBM*:pn*:*
KEYBOARD_KEY_17=prog1 # ThinkPad/ThinkVantage button (high keycode: "vendor")
# IBM Thinkpad USB Keyboard Trackpoint
-evdev:input:b0003v04B3p301[89]:*
+evdev:input:b0003v04B3p301[89]*
KEYBOARD_KEY_900f0=screenlock
KEYBOARD_KEY_900f1=wlan
KEYBOARD_KEY_900f2=switchvideomode
@@ -759,7 +768,7 @@ evdev:name:ThinkPad Extra Buttons:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*:*
KEYBOARD_KEY_45=bookmarks
# ThinkPad Keyboard with TrackPoint
-evdev:input:b0003v17EFp6009:*
+evdev:input:b0003v17EFp6009*
KEYBOARD_KEY_090012=screenlock # Fn+F2
KEYBOARD_KEY_090013=battery # Fn+F3
KEYBOARD_KEY_090014=wlan # Fn+F5
@@ -854,7 +863,7 @@ evdev:atkbd:dmi:bvn*:bvr*:svnLENOVO:pn81Q7*:pvrLenovoYogaS940:*
# Lenovo Y50-70
evdev:atkbd:dmi:bvn*:bvr*:svnLENOVO*:pn*20378*:*
- KEYBOARD_KEY_f3=f21 # Fn+F6 (toggle touchpad)
+ KEYBOARD_KEY_f3=f21 # Fn+F6 (toggle touchpad)
# V480
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*Lenovo*V480*:*
@@ -866,7 +875,7 @@ evdev:name:Microphone Mute Button:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*:*
KEYBOARD_KEY_00=f20
# enhanced USB keyboard
-evdev:input:b0003v04B3p301B:*
+evdev:input:b0003v04B3p301B*
KEYBOARD_KEY_90001=prog1 # ThinkVantage
KEYBOARD_KEY_90002=screenlock
KEYBOARD_KEY_90003=file
@@ -884,57 +893,58 @@ evdev:input:b0003v04B3p301B:*
# 27MHz wireless keyboards, these all have a PID of 00?? and all send c10xx
# logitech custom consumer usage-page codes. The mappings below are the most
# common, but some mapping may differ, especially the Fn F1-F12 mappings
-evdev:input:b0003v046Dp00??:*
- KEYBOARD_KEY_c0183=media # HUT:config, kbd:Media/Music player button
- KEYBOARD_KEY_c1001=chat # Messenger button
- KEYBOARD_KEY_c1002=camera # Webcam button
- KEYBOARD_KEY_c1003=audio # Music Browser button
- KEYBOARD_KEY_c1004=video # Video Browser button
- KEYBOARD_KEY_c1005=images # Image Browser button
- KEYBOARD_KEY_c100a=documents # Document Browser button
- KEYBOARD_KEY_c100b=rewind # Rewind button
- KEYBOARD_KEY_c100c=fastforward # Fast Forward button
- KEYBOARD_KEY_c100f=f14 # Track 1 button → f14 → XF86Launch5
- KEYBOARD_KEY_c1010=f15 # Track 2 button → f15 → XF86Launch6
- KEYBOARD_KEY_c1011=channeldown # Playlist back button
- KEYBOARD_KEY_c1012=channelup # Playlist advance button
- KEYBOARD_KEY_c1013=camera # Webcam button
- KEYBOARD_KEY_c1014=coffee # Status button
- KEYBOARD_KEY_c1015=record # Record symbol button
- KEYBOARD_KEY_c1016=sound # Flame/CD burning → sound → XF86AudioPreset
- KEYBOARD_KEY_c1017=ejectcd # Eject button
- KEYBOARD_KEY_c1018=config # Remote-control ico
- KEYBOARD_KEY_c1019=f14 # Preset 1 → f14 → XF86Launch5
- KEYBOARD_KEY_c101a=f15 # Preset 2 → f15 → XF86Launch6
- KEYBOARD_KEY_c101b=f16 # Preset 3 → f16 → XF86Launch7
- KEYBOARD_KEY_c101c=cyclewindows # 2 overlapping windows icon
- KEYBOARD_KEY_c101f=zoomout # zoom - button / - side of zoomrocker
- KEYBOARD_KEY_c1020=zoomin # zoom + button / + side off zoom rocker
- KEYBOARD_KEY_c1021=zoomreset # 100% symbol on kbd left side
- KEYBOARD_KEY_c1023=close # [x] symbol on kbd left side
- KEYBOARD_KEY_c1027=menu # Hamburger menu icon
- KEYBOARD_KEY_c1028=angle # Rotate button
- KEYBOARD_KEY_c1029=shuffle # Shuffle button
- KEYBOARD_KEY_c102a=back # Back button
- KEYBOARD_KEY_c102b=cyclewindows # Empty window icon
- KEYBOARD_KEY_c102d=www # www text + magnifierglass icon
- KEYBOARD_KEY_c1031=connect # Pickup phone button → connect → XF86Go
- KEYBOARD_KEY_c1032=cancel # Hangup phone button → cancel → Cancel
- KEYBOARD_KEY_c1041=help # Help text or icon (Fn + F1)
- KEYBOARD_KEY_c1042=wordprocessor # Word icon (Fn + F2)
- KEYBOARD_KEY_c1043=spreadsheet # Excel icon (Fn + F3)
- KEYBOARD_KEY_c1044=presentation # Presentation icon (Fn + F4)
- KEYBOARD_KEY_c1045=undo # Undo Icon (Fn + F5)
- KEYBOARD_KEY_c1046=redo # Redo Icon (Fn + F6)
- KEYBOARD_KEY_c1047=print # Printer Icon (Fn + F7)
- KEYBOARD_KEY_c1048=save # Floppy Icon (Fn + F8)
- KEYBOARD_KEY_c1049=prog1 # Smartkey A (Fn + F9) → XF86Launch1
- KEYBOARD_KEY_c104a=prog2 # Smartkey B (Fn + F10) → XF86Launch2
- KEYBOARD_KEY_c104b=prog3 # Smartkey C (Fn + F11) → XF86Launch3
- KEYBOARD_KEY_c104c=prog4 # Smartkey D (Fn + F12) → XF86Launch4
+evdev:input:b0003v046Dp00*
+ KEYBOARD_KEY_c0183=media # HUT:config, kbd:Media/Music player button
+ KEYBOARD_KEY_c1001=chat # Messenger button
+ KEYBOARD_KEY_c1002=camera # Webcam button
+ KEYBOARD_KEY_c1003=audio # Music Browser button
+ KEYBOARD_KEY_c1004=video # Video Browser button
+ KEYBOARD_KEY_c1005=images # Image Browser button
+ KEYBOARD_KEY_c100a=documents # Document Browser button
+ KEYBOARD_KEY_c100b=rewind # Rewind button
+ KEYBOARD_KEY_c100c=fastforward # Fast Forward button
+ KEYBOARD_KEY_c100f=f14 # Track 1 button → f14 → XF86Launch5
+ KEYBOARD_KEY_c1010=f15 # Track 2 button → f15 → XF86Launch6
+ KEYBOARD_KEY_c1011=channeldown # Playlist back button
+ KEYBOARD_KEY_c1012=channelup # Playlist advance button
+ KEYBOARD_KEY_c1013=camera # Webcam button
+ KEYBOARD_KEY_c1014=coffee # Status button
+ KEYBOARD_KEY_c1015=record # Record symbol button
+ KEYBOARD_KEY_c1016=sound # Flame/CD burning → sound → XF86AudioPreset
+ KEYBOARD_KEY_c1017=ejectcd # Eject button
+ KEYBOARD_KEY_c1018=config # Remote-control ico
+ KEYBOARD_KEY_c1019=f14 # Preset 1 → f14 → XF86Launch5
+ KEYBOARD_KEY_c101a=f15 # Preset 2 → f15 → XF86Launch6
+ KEYBOARD_KEY_c101b=f16 # Preset 3 → f16 → XF86Launch7
+ KEYBOARD_KEY_c101c=cyclewindows # 2 overlapping windows icon
+ KEYBOARD_KEY_c101f=zoomout # zoom - button / - side of zoomrocker
+ KEYBOARD_KEY_c1020=zoomin # zoom + button / + side off zoom rocker
+ KEYBOARD_KEY_c1021=zoomreset # 100% symbol on kbd left side
+ KEYBOARD_KEY_c1023=close # [x] symbol on kbd left side
+ KEYBOARD_KEY_c1027=menu # Hamburger menu icon
+ KEYBOARD_KEY_c1028=angle # Rotate button
+ KEYBOARD_KEY_c1029=shuffle # Shuffle button
+ KEYBOARD_KEY_c102a=back # Back button
+ KEYBOARD_KEY_c102b=cyclewindows # Empty window icon
+ KEYBOARD_KEY_c102c=fn # Fn key
+ KEYBOARD_KEY_c102d=www # www text + magnifierglass icon
+ KEYBOARD_KEY_c1031=connect # Pickup phone button → connect → XF86Go
+ KEYBOARD_KEY_c1032=cancel # Hangup phone button → cancel → Cancel
+ KEYBOARD_KEY_c1041=help # Help text or icon (Fn + F1)
+ KEYBOARD_KEY_c1042=wordprocessor # Word icon (Fn + F2)
+ KEYBOARD_KEY_c1043=spreadsheet # Excel icon (Fn + F3)
+ KEYBOARD_KEY_c1044=presentation # Presentation icon (Fn + F4)
+ KEYBOARD_KEY_c1045=undo # Undo Icon (Fn + F5)
+ KEYBOARD_KEY_c1046=redo # Redo Icon (Fn + F6)
+ KEYBOARD_KEY_c1047=print # Printer Icon (Fn + F7)
+ KEYBOARD_KEY_c1048=save # Floppy Icon (Fn + F8)
+ KEYBOARD_KEY_c1049=prog1 # Smartkey A (Fn + F9) → XF86Launch1
+ KEYBOARD_KEY_c104a=prog2 # Smartkey B (Fn + F10) → XF86Launch2
+ KEYBOARD_KEY_c104b=prog3 # Smartkey C (Fn + F11) → XF86Launch3
+ KEYBOARD_KEY_c104c=prog4 # Smartkey D (Fn + F12) → XF86Launch4
# Cordless Access Keyboard (27 MHz, modelnumber Y-RH35)
-evdev:input:b0003v046Dp0042:*
+evdev:input:b0003v046Dp0042*
KEYBOARD_KEY_c1041=new
KEYBOARD_KEY_c1042=reply
KEYBOARD_KEY_c1043=forward
@@ -949,7 +959,7 @@ evdev:input:b0003v046Dp0042:*
KEYBOARD_KEY_c104c=audio
# "Cordless Rechargeable Desktop" keyboard (27 MHz, modelnumber Y-RK49)
-evdev:input:b0003v046Dp0045:*
+evdev:input:b0003v046Dp0045*
KEYBOARD_KEY_c1041=new
KEYBOARD_KEY_c1042=reply
KEYBOARD_KEY_c1043=forward
@@ -960,8 +970,8 @@ evdev:input:b0003v046Dp0045:*
KEYBOARD_KEY_c104c=audio
# S510 keyboard (27 MHz, modelnumber Y-RAK73)
-evdev:input:b0003v046Dp0056:*
- KEYBOARD_KEY_c1041=battery # Battery icon (Fn + F1)
+evdev:input:b0003v046Dp0056*
+ KEYBOARD_KEY_c1041=battery # Battery icon (Fn + F1)
# MX3000 keyboard (27 MHz, modelnumber Y-RAM74)
# We ignore the scroll up / down keypress events since these buttons also
@@ -969,8 +979,8 @@ evdev:input:b0003v046Dp0056:*
# Note if the "Special Button Function" in the HID++ features register gets
# cleared then the scroll-wheel events for these buttons go away and then
# tilting the scrollwheel left/right starts sending c1022 / c1024 events
-evdev:input:b0003v046Dp0057:*
- KEYBOARD_KEY_c1041=battery # Battery icon (Fn + F1)
+evdev:input:b0003v046Dp0057*
+ KEYBOARD_KEY_c1041=battery # Battery icon (Fn + F1)
#KEYBOARD_KEY_c101d=scrolldown # Button below scrollwheel (see note above)
#KEYBOARD_KEY_c101e=scrollup # Button above scrollwheel (see note above)
@@ -978,78 +988,91 @@ evdev:input:b0003v046Dp0057:*
#KEYBOARD_KEY_c1024=scrollright # Right click on scroll-wheel (see note above)
# MX3200 keyboard (27 MHz, modelnumber Y-RAV80)
-evdev:input:b0003v046Dp005C:*
- KEYBOARD_KEY_c1001=phone # VOIP button
- KEYBOARD_KEY_c1016=record # Record button
- KEYBOARD_KEY_c1041=wordprocessor # Word icon (Fn + F1)
- KEYBOARD_KEY_c1042=spreadsheet # Excel icon (Fn + F2)
- KEYBOARD_KEY_c1043=calendar # Calendar icon (Fn + F3)
- KEYBOARD_KEY_c1044=documents # My Documents icon (Fn + F4)
- KEYBOARD_KEY_c1045=prog1 # Smartkey A (Fn + F5) → XF86Launch1
- KEYBOARD_KEY_c1046=prog2 # Smartkey B (Fn + F6) → XF86Launch2
- KEYBOARD_KEY_c1047=prog3 # Smartkey C (Fn + F7) → XF86Launch3
- KEYBOARD_KEY_c1048=prog4 # Smartkey D (Fn + F8) → XF86Launch4
+evdev:input:b0003v046Dp005C*
+ KEYBOARD_KEY_c1001=phone # VOIP button
+ KEYBOARD_KEY_c1016=record # Record button
+ KEYBOARD_KEY_c1041=wordprocessor # Word icon (Fn + F1)
+ KEYBOARD_KEY_c1042=spreadsheet # Excel icon (Fn + F2)
+ KEYBOARD_KEY_c1043=calendar # Calendar icon (Fn + F3)
+ KEYBOARD_KEY_c1044=documents # My Documents icon (Fn + F4)
+ KEYBOARD_KEY_c1045=prog1 # Smartkey A (Fn + F5) → XF86Launch1
+ KEYBOARD_KEY_c1046=prog2 # Smartkey B (Fn + F6) → XF86Launch2
+ KEYBOARD_KEY_c1047=prog3 # Smartkey C (Fn + F7) → XF86Launch3
+ KEYBOARD_KEY_c1048=prog4 # Smartkey D (Fn + F8) → XF86Launch4
# EX100 keyboard (27 MHz, modelnumber Y-RBH94)
-evdev:input:b0003v046Dp0065:*
- KEYBOARD_KEY_c104b=battery # Battery icon (Fn + F11)
- KEYBOARD_KEY_c104c=ejectcd # Eject icon (Fn + F12)
+evdev:input:b0003v046Dp0065*
+ KEYBOARD_KEY_c104b=battery # Battery icon (Fn + F11)
+ KEYBOARD_KEY_c104c=ejectcd # Eject icon (Fn + F12)
# S520 keyboard (27 MHz, modelnumber Y-RBA97)
# Note this one uses non-standard codes for FN + F9 - Fn + F12?
-evdev:input:b0003v046Dp0066:*
- KEYBOARD_KEY_c100e=prog4 # Smartkey D (Fn + F12) → XF86Launch4
- KEYBOARD_KEY_c1019=prog1 # Smartkey A (Fn + F9) → XF86Launch1
- KEYBOARD_KEY_c101a=prog2 # Smartkey B (Fn + F10) → XF86Launch2
- KEYBOARD_KEY_c101b=prog3 # Smartkey C (Fn + F11) → XF86Launch3
- KEYBOARD_KEY_c1041=wordprocessor # Word icon (Fn + F1)
- KEYBOARD_KEY_c1042=spreadsheet # Excel icon (Fn + F2)
- KEYBOARD_KEY_c1043=presentation # Presentation icon (Fn + F3)
- KEYBOARD_KEY_c1044=calendar # Calendar icon (Fn + F4)
- KEYBOARD_KEY_c1045=homepage # Home icon (Fn + F5)
- KEYBOARD_KEY_c1046=email # Letter icon (Fn + F6)
- KEYBOARD_KEY_c1047=search # Magnifying glass icon (Fn + F7)
- KEYBOARD_KEY_c1048=config # Window with gear icon (Fn + F8)
- KEYBOARD_KEY_c106f=battery # Battery icon
+evdev:input:b0003v046Dp0066*
+ KEYBOARD_KEY_c100e=prog4 # Smartkey D (Fn + F12) → XF86Launch4
+ KEYBOARD_KEY_c1019=prog1 # Smartkey A (Fn + F9) → XF86Launch1
+ KEYBOARD_KEY_c101a=prog2 # Smartkey B (Fn + F10) → XF86Launch2
+ KEYBOARD_KEY_c101b=prog3 # Smartkey C (Fn + F11) → XF86Launch3
+ KEYBOARD_KEY_c1041=wordprocessor # Word icon (Fn + F1)
+ KEYBOARD_KEY_c1042=spreadsheet # Excel icon (Fn + F2)
+ KEYBOARD_KEY_c1043=presentation # Presentation icon (Fn + F3)
+ KEYBOARD_KEY_c1044=calendar # Calendar icon (Fn + F4)
+ KEYBOARD_KEY_c1045=homepage # Home icon (Fn + F5)
+ KEYBOARD_KEY_c1046=email # Letter icon (Fn + F6)
+ KEYBOARD_KEY_c1047=search # Magnifying glass icon (Fn + F7)
+ KEYBOARD_KEY_c1048=config # Window with gear icon (Fn + F8)
+ KEYBOARD_KEY_c106f=battery # Battery icon
# S510 remote control (27 MHz)
-evdev:input:b0003v046Dp00FE:*
- KEYBOARD_KEY_c1018=media # Media button
+evdev:input:b0003v046Dp00FE*
+ KEYBOARD_KEY_c1018=media # Media button
# MX5000 keyboard (HID proxy mode and bluetooth matches)
-evdev:input:b0003v046DpB305:*
-evdev:input:b0005v046DpB305:*
- KEYBOARD_KEY_c0230=zoomreset # HUT says fullscreen, kbd says 100%
- KEYBOARD_KEY_c1004=send # Send and receive / sync button
- KEYBOARD_KEY_c1006=coffee # Status (online/away) button
- KEYBOARD_KEY_c1007=camera # Webcam button
- KEYBOARD_KEY_c100c=kbd_lcd_menu1 # 1st button below the builtin LCD
- KEYBOARD_KEY_c100d=kbd_lcd_menu4 # 4th button below the builtin LCD
- KEYBOARD_KEY_c100e=kbd_lcd_menu2 # 2nd button below the builtin LCD
- KEYBOARD_KEY_c100f=kbd_lcd_menu3 # 3th button below the builtin LCD
- KEYBOARD_KEY_c1038=prog1 # Smartkey A → XF86Launch1
- KEYBOARD_KEY_c1039=prog2 # Smartkey B → XF86Launch2
- KEYBOARD_KEY_c103a=prog3 # Smartkey C → XF86Launch3
- KEYBOARD_KEY_c103b=prog4 # Smartkey D → XF86Launch4
+evdev:input:b0003v046DpB305*
+evdev:input:b0005v046DpB305*
+ KEYBOARD_KEY_c0183=media # HUT says config, kbd says Media
+ KEYBOARD_KEY_c0230=zoomreset # HUT says fullscreen, kbd says 100%
+ KEYBOARD_KEY_c1004=send # Send and receive / sync button
+ KEYBOARD_KEY_c1006=coffee # Status (online/away) button
+ KEYBOARD_KEY_c1007=camera # Webcam button
+ KEYBOARD_KEY_c100c=kbd_lcd_menu1 # 1st button below the builtin LCD
+ KEYBOARD_KEY_c100d=kbd_lcd_menu4 # 4th button below the builtin LCD
+ KEYBOARD_KEY_c100e=kbd_lcd_menu2 # 2nd button below the builtin LCD
+ KEYBOARD_KEY_c100f=kbd_lcd_menu3 # 3th button below the builtin LCD
+ KEYBOARD_KEY_c1038=prog1 # Smartkey A → XF86Launch1
+ KEYBOARD_KEY_c1039=prog2 # Smartkey B → XF86Launch2
+ KEYBOARD_KEY_c103a=prog3 # Smartkey C → XF86Launch3
+ KEYBOARD_KEY_c103b=prog4 # Smartkey D → XF86Launch4
+ KEYBOARD_KEY_c1040=fn_esc # Fn mode on/off toggle
+
+# Dinovo Edge (HID proxy mode and bluetooth matches)
+evdev:input:b0003v046DpB309*
+evdev:input:b0005v046DpB309*
+ KEYBOARD_KEY_c102c=fn # Fn key
+ KEYBOARD_KEY_c1038=prog1 # Fn + F9 Smartkey A → XF86Launch1
+ KEYBOARD_KEY_c1039=prog2 # Fn + F10 Smartkey B → XF86Launch2
+ KEYBOARD_KEY_c103a=prog3 # Fn + F11 Smartkey C → XF86Launch3
+ KEYBOARD_KEY_c103b=prog4 # Fn + F12 Smartkey D → XF86Launch4
+ KEYBOARD_KEY_c1050=phone # Fn + F1 Phone button
# MX5500 keyboard (HID proxy mode and bluetooth matches)
-evdev:input:b0003v046DpB30B:*
-evdev:input:b0005v046DpB30B:*
- KEYBOARD_KEY_c0183=media # HUT says consumer control configuration, kbd says Media Center
- KEYBOARD_KEY_c100e=images # Camera icon, "Photo Gallery"
- KEYBOARD_KEY_c100f=config # Window with gear icon
- KEYBOARD_KEY_c1038=prog1 # Smartkey A → XF86Launch1
- KEYBOARD_KEY_c1039=prog2 # Smartkey B → XF86Launch2
- KEYBOARD_KEY_c103a=prog3 # Smartkey C → XF86Launch3
- KEYBOARD_KEY_c103b=prog4 # Smartkey D → XF86Launch4
+evdev:input:b0003v046DpB30B*
+evdev:input:b0005v046DpB30B*
+ KEYBOARD_KEY_c0183=media # HUT says consumer control configuration, kbd says Media Center
+ KEYBOARD_KEY_c100e=images # Camera icon, "Photo Gallery"
+ KEYBOARD_KEY_c100f=config # Window with gear icon
+ KEYBOARD_KEY_c102c=fn # Fn key
+ KEYBOARD_KEY_c1038=prog1 # Smartkey A → XF86Launch1
+ KEYBOARD_KEY_c1039=prog2 # Smartkey B → XF86Launch2
+ KEYBOARD_KEY_c103a=prog3 # Smartkey C → XF86Launch3
+ KEYBOARD_KEY_c103b=prog4 # Smartkey D → XF86Launch4
# Logitech K811
-evdev:input:b0005v046DpB317:*
+evdev:input:b0005v046DpB317*
KEYBOARD_KEY_70047=brightnessdown
KEYBOARD_KEY_70048=brightnessup
# iTouch
-evdev:input:b0003v046DpC308:*
+evdev:input:b0003v046DpC308*
KEYBOARD_KEY_90001=shop # Shopping
KEYBOARD_KEY_90002=config # iTouch
KEYBOARD_KEY_90003=finance # Finance
@@ -1058,12 +1081,12 @@ evdev:input:b0003v046DpC308:*
KEYBOARD_KEY_c0183=media # Media
# Cordless Desktop S510
-evdev:input:b0003v046DpC50C:*
+evdev:input:b0003v046DpC50C*
KEYBOARD_KEY_d4=up # zoomin
KEYBOARD_KEY_cc=down # zoomout
# Wave cordless
-evdev:input:b0003v046DpC317:*
+evdev:input:b0003v046DpC317*
KEYBOARD_KEY_9001c=scale # expo
KEYBOARD_KEY_9001f=down # zoomout
KEYBOARD_KEY_90020=up # zoomin
@@ -1082,7 +1105,7 @@ evdev:input:b0003v046DpC317:*
KEYBOARD_KEY_9004c=ejectclosecd
# Wave cordless
-evdev:input:b0003v046DpC517:*
+evdev:input:b0003v046DpC517*
KEYBOARD_KEY_c101f=down # zoomout
KEYBOARD_KEY_c1020=up # zoomin
KEYBOARD_KEY_c1005=camera
@@ -1098,7 +1121,7 @@ evdev:input:b0003v046DpC517:*
KEYBOARD_KEY_c104c=ejectclosecd
# Cordless Wave Pro
-evdev:input:b0003v046DpC529:*
+evdev:input:b0003v046DpC529*
KEYBOARD_KEY_0c01b6=camera
KEYBOARD_KEY_0c0183=media
KEYBOARD_KEY_0c0184=wordprocessor
@@ -1113,29 +1136,29 @@ evdev:input:b0003v046DpC529:*
KEYBOARD_KEY_0c022e=down # zoomout
# Logitech Presenter R400
-evdev:input:b0003v046DpC52D:*
+evdev:input:b0003v046DpC52D*
KEYBOARD_KEY_070029=presentation
KEYBOARD_KEY_07003e=presentation
KEYBOARD_KEY_070037=displaytoggle
# Internet Navigator
-evdev:input:b0003v046DpC309:*
- KEYBOARD_KEY_90001=chat # Messenger/SMS
- KEYBOARD_KEY_90002=camera # webcam
- KEYBOARD_KEY_90003=prog1 # iTouch
- KEYBOARD_KEY_90004=shop # Shopping
- KEYBOARD_KEY_c0201=new # New (F1)
- KEYBOARD_KEY_c0289=reply # Reply mail (F2)
- KEYBOARD_KEY_c028b=forwardmail # Forward mail (F3)
- KEYBOARD_KEY_c028c=send # Send (F4)
- KEYBOARD_KEY_c021a=undo # Undo (F5)
- KEYBOARD_KEY_c0279=redo # Redo (F6)
- KEYBOARD_KEY_c0208=print # Print (F7)
- KEYBOARD_KEY_c0207=save # Save (F8)
- KEYBOARD_KEY_c0194=file # My Computer (F9)
- KEYBOARD_KEY_c01a7=documents # My Documents (F10)
- KEYBOARD_KEY_c01b6=images # My Pictures (F11)
- KEYBOARD_KEY_c01b7=audio # My Music (F12)
+evdev:input:b0003v046DpC309*
+ KEYBOARD_KEY_90001=chat # Messenger/SMS
+ KEYBOARD_KEY_90002=camera # webcam
+ KEYBOARD_KEY_90003=prog1 # iTouch
+ KEYBOARD_KEY_90004=shop # Shopping
+ KEYBOARD_KEY_c0201=new # New (F1)
+ KEYBOARD_KEY_c0289=reply # Reply mail (F2)
+ KEYBOARD_KEY_c028b=forwardmail # Forward mail (F3)
+ KEYBOARD_KEY_c028c=send # Send (F4)
+ KEYBOARD_KEY_c021a=undo # Undo (F5)
+ KEYBOARD_KEY_c0279=redo # Redo (F6)
+ KEYBOARD_KEY_c0208=print # Print (F7)
+ KEYBOARD_KEY_c0207=save # Save (F8)
+ KEYBOARD_KEY_c0194=file # My Computer (F9)
+ KEYBOARD_KEY_c01a7=documents # My Documents (F10)
+ KEYBOARD_KEY_c01b6=images # My Pictures (F11)
+ KEYBOARD_KEY_c01b7=audio # My Music (F12)
###########################################################
@@ -1191,12 +1214,12 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnMedion*:pnErazer*:*
###########################################################
# Microsoft Natural Ergonomic Keyboard 4000
-evdev:input:b0003v045Ep00DB:*
+evdev:input:b0003v045Ep00DB*
KEYBOARD_KEY_c022d=up # zoomin
KEYBOARD_KEY_c022e=down # zoomout
# Microsoft (Razer produced) Reclusa keyboard
-evdev:input:b0003v1532p0200:*
+evdev:input:b0003v1532p0200*
KEYBOARD_KEY_c01c9=shuffle
KEYBOARD_KEY_c01ca=up # zoomin
KEYBOARD_KEY_c01cb=down # zoomout
@@ -1259,7 +1282,7 @@ evdev:name:MSI Laptop hotkeys:dmi:bvn*:bvr*:bd*:svn*:pnM[iI][cC][rR][oO]-S[tT][a
###########################################################
# Teres-I
-evdev:input:b0003v15BAp003C:*
+evdev:input:b0003v15BAp003C*
KEYBOARD_KEY_70066=sleep # Fn+F1
KEYBOARD_KEY_700f6=wlan # Fn+F2
KEYBOARD_KEY_700c7=f21 # Fn+F3 touchpad toggle
@@ -1371,39 +1394,49 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnOQO*Inc.*:pnOQO*Model*2*:*
# The key code identifiers used below exactly match the text
# labels on the keys/buttons (or standard icons on the buttons
# that have no text labels), except as noted.
-evdev:input:b0003v05A4p9735:*
+evdev:input:b0003v05A4p9735*
KEYBOARD_KEY_c0015=back
KEYBOARD_KEY_c0012=forward
KEYBOARD_KEY_c000c=stop
KEYBOARD_KEY_c0018=refresh
KEYBOARD_KEY_c00b9=search
- KEYBOARD_KEY_c0006=bookmarks # Button labeled "Favorites"
- KEYBOARD_KEY_c00a8=homepage # Button labeled "Web/Home"
+ KEYBOARD_KEY_c0006=bookmarks # Button labeled "Favorites"
+ KEYBOARD_KEY_c00a8=homepage # Button labeled "Web/Home"
KEYBOARD_KEY_c0010=mute
KEYBOARD_KEY_c0011=volumedown
KEYBOARD_KEY_c0014=volumeup
KEYBOARD_KEY_c000e=close
KEYBOARD_KEY_c00a7=print
- KEYBOARD_KEY_c0013=documents # Button labeled "Stickies"
- KEYBOARD_KEY_c000d=find # Button labeled "Sherlock2"
+ KEYBOARD_KEY_c0013=documents # Button labeled "Stickies"
+ KEYBOARD_KEY_c000d=find # Button labeled "Sherlock2"
KEYBOARD_KEY_c000f=mail
KEYBOARD_KEY_c000a=calc
KEYBOARD_KEY_c000b=sleep
- KEYBOARD_KEY_c0007=previoussong # Button with standard |<< icon
- KEYBOARD_KEY_c0008=playpause # Button with standad >/|| icon
- KEYBOARD_KEY_c0009=nextsong # Button with standard >>| icon
- KEYBOARD_KEY_c00b2=stopcd # Button with standard square box icon
- KEYBOARD_KEY_c0016=prog1 # Key labeled "pf1"
- KEYBOARD_KEY_c00bb=prog2 # Key labeled "pf2"
- KEYBOARD_KEY_c00b8=prog3 # Key labeled "pf3"
+ KEYBOARD_KEY_c0007=previoussong # Button with standard |<< icon
+ KEYBOARD_KEY_c0008=playpause # Button with standad >/|| icon
+ KEYBOARD_KEY_c0009=nextsong # Button with standard >>| icon
+ KEYBOARD_KEY_c00b2=stopcd # Button with standard square box icon
+ KEYBOARD_KEY_c0016=prog1 # Key labeled "pf1"
+ KEYBOARD_KEY_c00bb=prog2 # Key labeled "pf2"
+ KEYBOARD_KEY_c00b8=prog3 # Key labeled "pf3"
+
+###########################################################
+# Pine64
+###########################################################
+
+# Pinebook Pro
+evdev:input:b0003v258Ap001E*
+ KEYBOARD_KEY_700a5=brightnessdown
+ KEYBOARD_KEY_700a6=brightnessup
+ KEYBOARD_KEY_70066=sleep
###########################################################
# Plantronics
###########################################################
# Plantronics .Audio 626 DSP
-evdev:input:b0003v047FpC006:*
- KEYBOARD_KEY_b002f=f20 # Microphone mute button; should be micmute
+evdev:input:b0003v047FpC006*
+ KEYBOARD_KEY_b002f=f20 # Microphone mute button; should be micmute
###########################################################
# Purism
@@ -1699,7 +1732,7 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnZepto:pnZnote*6615WD:*
##########################################
# Ideazon Zboard Merc
-evdev:input:b0003v1038p0210:*
+evdev:input:b0003v1038p0210*
KEYBOARD_KEY_c0227=q
KEYBOARD_KEY_c0223=w
KEYBOARD_KEY_c0221=e
@@ -1737,7 +1770,7 @@ evdev:input:b0003v1038p0210:*
KEYBOARD_KEY_70079=f6
# Ideazon Zboard Fang
-evdev:input:b0003v1038p0310:*
+evdev:input:b0003v1038p0310*
KEYBOARD_KEY_70059=1
KEYBOARD_KEY_7005b=3
KEYBOARD_KEY_70040=equal
@@ -1789,13 +1822,13 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnDIXONSP:pnDIXON*:*
# with an accompanying variant (defined with XKB_FIXED_VARIANT) if necessary.
# Yubico Yubico Yubikey II"
-evdev:input:b0003v1050p0010:*
+evdev:input:b0003v1050p0010*
# Yubico Yubikey NEO OTP+CCID
-evdev:input:b0003v1050p0111:*
+evdev:input:b0003v1050p0111*
# Yubico Yubikey NEO OTP+U2F+CCID
-evdev:input:b0003v1050p0116:*
+evdev:input:b0003v1050p0116*
# OKE Electron Company USB barcode reader
-evdev:input:b0003v05FEp1010:*
+evdev:input:b0003v05FEp1010*
XKB_FIXED_LAYOUT=us
XKB_FIXED_VARIANT=
@@ -1808,12 +1841,12 @@ evdev:input:b0003v05FEp1010:*
# Presence of a LED is implicit when the property is absent.
# Logitech K750
-evdev:input:b0003v046Dp4002:*
+evdev:input:b0003v046Dp4002*
KEYBOARD_LED_NUMLOCK=0
KEYBOARD_LED_CAPSLOCK=0
# PFU Limited HHKB Professional JP
-evdev:input:b0003v04FEp000D:*
+evdev:input:b0003v04FEp000D*
KEYBOARD_LED_NUMLOCK=0
KEYBOARD_LED_CAPSLOCK=0
diff --git a/hwdb.d/60-sensor.hwdb b/hwdb.d/60-sensor.hwdb
index 7079736a8f..0f75fd11a8 100644
--- a/hwdb.d/60-sensor.hwdb
+++ b/hwdb.d/60-sensor.hwdb
@@ -67,13 +67,24 @@
# or 'display'. The default, when unset, is equivalent to:
# ACCEL_LOCATION=display
#
-# All matches should end in ':*' to allow future expansions of the match key.
-
+# A note about setting ACCEL_MOUNT_MATRIX for ACCEL_LOCATION=base sensors,
+# on 360 degree hinges style 2-in-1s with 2 sensors (one in the display and
+# 1 in the base). Userspace will use both sensors to calculate the angle between
+# the 2 halves and the angle is defined as being 0 when the device is folded
+# as a regular clamshell laptop with its lid closed. This means that the
+# base-accelerometer's mount-matrix must be such, that after applying
+# the mount-matrices to both sensors, the base-accelerometer's readings must
+# be identical to the display-accelerometer's readings (when the lid is
+# closed).
+#
# Sort by brand, model
#########################################
# Acer
#########################################
+sensor:modalias:acpi:KIOX0009*:dmi:*:svnAcer:pnAspireSW3-016:*
+ ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, -1
+
sensor:modalias:acpi:INVN6500*:dmi:*svn*Acer*:*pn*AspireSW5-011:*
ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
@@ -460,7 +471,10 @@ sensor:modalias:acpi:NCPE0388*:dmi:*:rnLenovoYOGA510-14IKB:*
ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, -1, 0; 0, 0, 1
sensor:modalias:acpi:BOSC0200*:dmi:*ThinkPadYoga11e3rdGen:*
- ACCEL_MOUNT_MATRIX=0, 1, 0; -1, 0, 0; 0, 0, 1
+ ACCEL_MOUNT_MATRIX=0, 1, 0; -1, 0, 0; 0, 0, -1
+
+sensor:modalias:acpi:BOSC0200*:dmi:*:svnLENOVO:*pvrThinkPadYoga11e4thGen:*
+ ACCEL_MOUNT_MATRIX=0, 1, 0; -1, 0, 0; 0, 0, -1
# Miix3-1030
sensor:modalias:acpi:BMA250E*:dmi:bvnLENOVO:*:pvrLenovoMIIX3-1030:*
@@ -532,10 +546,12 @@ sensor:modalias:acpi:KIOX010A*:dmi:*:svnMEDION:pnE*:*
# Medion Akoya E3222 MD62450
sensor:modalias:acpi:KIOX010A*:dmi:*:svnMEDION:pnMEDION*:*
ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
+ ACCEL_LOCATION=display
-# Medion Akoya E2221T MD60691
-sensor:modalias:acpi:KIOX020A*:dmi:*:pnE2221TMD60691*:*
- ACCEL_MOUNT_MATRIX=1, 0, 0; 0, 1, 0; 0, 0, 1
+# Same as above, but for base sensor
+sensor:modalias:acpi:KIOX020A*:dmi:*:svnMEDION:pnE*:*
+sensor:modalias:acpi:KIOX020A*:dmi:*:svnMEDION:pnMEDION*:*
+ ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, -1
ACCEL_LOCATION=base
#########################################
@@ -651,6 +667,14 @@ sensor:modalias:i2c:bmc150_accel:dmi:bvnINSYDECorp.:*:svnInsyde:pnBayTrail:*:rvn
ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1
#########################################
+# Predia
+#########################################
+
+# Predia Basic tablet, most DMI strings are generic, match on BIOS version
+sensor:modalias:acpi:BOSC0200*:dmi:bvnINSYDECorp.:bvrMx.WT107.KUBNGEA*svnInsyde:pnCherryTrail:*
+ ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
+
+#########################################
# Prowise
#########################################
sensor:modalias:acpi:SMO8500*:dmi:*:svnProwise:pnPT301:*
@@ -755,6 +779,16 @@ sensor:modalias:acpi:SMO8500*:dmi:*:svnUMAX:pnVisionBook10WiPlus:*
ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
#########################################
+# Voyo
+#########################################
+# Voyo Winpad A15
+# The Winpad A15 does not have its product name filled, so we
+# match the entire dmi-alias, assuming that the use of a SMO8500 +
+# bios-version + bios-date combo is unique
+sensor:modalias:acpi:SMO8500*:dmi:bvnAmericanMegatrendsInc.:bvr5.6.5:bd11/20/2014:br5.6:svnTobefilledbyO.E.M.:pnTobefilledbyO.E.M.:pvrTobefilledbyO.E.M.:rvnAMICorporation:rnAptioCRB:rvrTobefilledbyO.E.M.:cvnToBeFilledByO.E.M.:ct3:cvrToBeFilledByO.E.M.:*
+ ACCEL_MOUNT_MATRIX=0, -1, 0; 1, 0, 0; 0, 0, -1
+
+#########################################
# Wortmann
#########################################
sensor:modalias:acpi:KIOX000A*:dmi:*:svnWortmann_AG:pnTERRA_PAD_1061:*
diff --git a/hwdb.d/70-joystick.hwdb b/hwdb.d/70-joystick.hwdb
index f72a69dd27..9d5c4fc069 100644
--- a/hwdb.d/70-joystick.hwdb
+++ b/hwdb.d/70-joystick.hwdb
@@ -36,8 +36,6 @@
#
# If the property is missing, user-space can assume:
# ID_INPUT_JOYSTICK_INTEGRATION=external
-#
-# All matches should end in ':*' to allow future expansions of the match key.
joystick:bluetooth:*
ID_INPUT_JOYSTICK_INTEGRATION=external
@@ -47,6 +45,6 @@ joystick:bluetooth:*
###########################################################
# GPD Win, Classic and XBox 360 compat modes
-joystick:usb:v11c5p5507:*
-joystick:usb:v045ep028e:*
+joystick:usb:v11c5p5507*
+joystick:usb:v045ep028e*
ID_INPUT_JOYSTICK_INTEGRATION=internal
diff --git a/hwdb.d/70-mouse.hwdb b/hwdb.d/70-mouse.hwdb
index 0bdac6cdb4..98b79dc0d2 100644
--- a/hwdb.d/70-mouse.hwdb
+++ b/hwdb.d/70-mouse.hwdb
@@ -343,6 +343,10 @@ mouse:usb:v046dpc24c:name:Logitech G400s Optical Gaming Mouse:*
mouse:usb:v046dpc07e:name:Logitech Gaming Mouse G402:*
MOUSE_DPI=400@1000 *800@1000 1600@1000 3200@1000
+# Logitech G403 Prodigy (Wired)
+mouse:usb:v046dpc083:name:Logitech G403 Prodigy Gaming Mouse:*
+ MOUSE_DPI=400@1000 *800@1000 1600@1000 3200@1000
+
# Logitech G500 Mouse
mouse:usb:v046dpc068:name:Logitech G500:*
MOUSE_DPI=*1600@500 2600@500 3600@500
diff --git a/hwdb.d/70-pointingstick.hwdb b/hwdb.d/70-pointingstick.hwdb
index bcc993644e..b427f21ea5 100644
--- a/hwdb.d/70-pointingstick.hwdb
+++ b/hwdb.d/70-pointingstick.hwdb
@@ -13,7 +13,7 @@
#
# Supported hardware matches are:
# - Generic input devices match:
-# evdev:input:bZZZZvYYYYpXXXXeWWWW-VVVV:*
+# evdev:input:bZZZZvYYYYpXXXXeWWWW-VVVV
# This matches on the kernel modalias of the input-device, mainly:
# ZZZZ is the bus-id (see /usr/include/linux/input.h BUS_*), YYYY, XXXX and
# WWW are the 4-digit hex uppercase vendor, product and version ID and VVVV
@@ -27,8 +27,6 @@
# <vendor> is the firmware-provided string from the kernel DMI modalias,
# see /sys/class/dmi/id/modalias
#
-# All matches should end in ':*' to allow future expansions of the match key.
-#
# To add local entries, create a new file
# /etc/udev/hwdb.d/71-pointingstick-local.hwdb
# and add your rules there. To load the new rules execute (as root):
@@ -157,6 +155,6 @@ evdev:name:TPPS/2 IBM TrackPoint:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPadX20?
POINTINGSTICK_CONST_ACCEL=1.25
# Lenovo UltraNav SK-8845 (USB keyboard)
-evdev:input:b0003v06CBp0009:*
+evdev:input:b0003v06CBp0009*
POINTINGSTICK_CONST_ACCEL=2.5
POINTINGSTICK_SENSITIVITY=200
diff --git a/hwdb.d/70-touchpad.hwdb b/hwdb.d/70-touchpad.hwdb
index 797ed3925f..8194d98358 100644
--- a/hwdb.d/70-touchpad.hwdb
+++ b/hwdb.d/70-touchpad.hwdb
@@ -15,8 +15,6 @@
#
# vid/pid as 4-digit hex lowercase vendor/product
#
-# All matches should end in ':*' to allow future expansions of the match key.
-#
# To add local entries, create a new file
# /etc/udev/hwdb.d/71-touchpad-local.hwdb
# and add your rules there. To load the new rules execute (as root):
@@ -61,11 +59,11 @@ touchpad:usb:v044ep1221:*
###########################################################
# Logitech
###########################################################
-touchpad:usb:v046dp????:*
+touchpad:usb:v046d*
ID_INPUT_TOUCHPAD_INTEGRATION=external
###########################################################
# Wacom
###########################################################
-touchpad:usb:v056ap????:*
+touchpad:usb:v056a*
ID_INPUT_TOUCHPAD_INTEGRATION=external
diff --git a/hwdb.d/ma-large.txt b/hwdb.d/ma-large.txt
index da7ef4e59f..7c6f323384 100644
--- a/hwdb.d/ma-large.txt
+++ b/hwdb.d/ma-large.txt
@@ -5243,12 +5243,6 @@ F4B7B3 (base 16) vivo Mobile Communication Co., Ltd.
Wusha,Chang'An DongGuan City,Guangdong, 523860
CN
-CC-03-D9 (hex) Cisco Meraki
-CC03D9 (base 16) Cisco Meraki
- 500 Terry A. Francois Blvd
- San Francisco null 94158
- US
-
FC-A6-67 (hex) Amazon Technologies Inc.
FCA667 (base 16) Amazon Technologies Inc.
P.O Box 8102
@@ -6197,12 +6191,6 @@ B47447 (base 16) CoreOS
Dongguan 523808
CN
-0C-8D-DB (hex) Cisco Meraki
-0C8DDB (base 16) Cisco Meraki
- 500 Terry A. Francois Blvd
- San Francisco null 94158
- US
-
AC-58-7B (hex) JCT Healthcare
AC587B (base 16) JCT Healthcare
1/25 London Road
@@ -13412,12 +13400,6 @@ E817FC (base 16) Fujitsu Cloud Technologies Limited
Shenzhen Guangdong 518172
CN
-68-78-48 (hex) Westunitis Co., Ltd.
-687848 (base 16) Westunitis Co., Ltd.
- North Building 7F, 3-1 Ofuka-cho, Kita-ku
- Osaka-city Osaka-pref 5300011
- JP
-
48-D0-CF (hex) Universal Electronics, Inc.
48D0CF (base 16) Universal Electronics, Inc.
201 E. Sandpointe Ave
@@ -23201,12 +23183,6 @@ D4C766 (base 16) Acentic GmbH
Irving Texas 75063
US
-00-12-93 (hex) GE Energy
-001293 (base 16) GE Energy
- 1501 Roanoke Blvd.
- Salem VA 24153
- US
-
00-12-94 (hex) SUMITOMO ELECTRIC DEVICE INNOVATIONS, INC
001294 (base 16) SUMITOMO ELECTRIC DEVICE INNOVATIONS, INC
1000 Kamisukiawara,Showa-cho
@@ -32642,17 +32618,29 @@ D807B6 (base 16) TP-LINK TECHNOLOGIES CO.,LTD.
Poznan Wielkopolska 60-681
PL
+6C-16-32 (hex) HUAWEI TECHNOLOGIES CO.,LTD
+6C1632 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
+ CN
+
+2C-1A-01 (hex) HUAWEI TECHNOLOGIES CO.,LTD
+2C1A01 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
+ CN
+
34-78-39 (hex) zte corporation
347839 (base 16) zte corporation
12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China
shenzhen guangdong 518057
CN
-6C-16-32 (hex) HUAWEI TECHNOLOGIES CO.,LTD
-6C1632 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
- Dongguan 523808
- CN
+24-16-9D (hex) Cisco Systems, Inc
+24169D (base 16) Cisco Systems, Inc
+ 80 West Tasman Drive
+ San Jose CA 94568
+ US
F4-19-E2 (hex) Volterra
F419E2 (base 16) Volterra
@@ -32666,18 +32654,6 @@ F419E2 (base 16) Volterra
Chatillon 92320
FR
-2C-1A-01 (hex) HUAWEI TECHNOLOGIES CO.,LTD
-2C1A01 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
- Dongguan 523808
- CN
-
-24-16-9D (hex) Cisco Systems, Inc
-24169D (base 16) Cisco Systems, Inc
- 80 West Tasman Drive
- San Jose CA 94568
- US
-
64-F2-FB (hex) Hangzhou Ezviz Software Co.,Ltd.
64F2FB (base 16) Hangzhou Ezviz Software Co.,Ltd.
Room 302, Unit B, Building 2, 399 Danfeng Road,Binjiang District
@@ -32720,18 +32696,18 @@ B440A4 (base 16) Apple, Inc.
Cupertino CA 95014
US
-F0-7C-C7 (hex) Juniper Networks
-F07CC7 (base 16) Juniper Networks
- 1133 Innovation Way
- Sunnyvale CA 94089
- US
-
F4-DB-E3 (hex) Apple, Inc.
F4DBE3 (base 16) Apple, Inc.
1 Infinite Loop
Cupertino CA 95014
US
+F0-7C-C7 (hex) Juniper Networks
+F07CC7 (base 16) Juniper Networks
+ 1133 Innovation Way
+ Sunnyvale CA 94089
+ US
+
D4-5E-EC (hex) Beijing Xiaomi Electronics Co., Ltd.
D45EEC (base 16) Beijing Xiaomi Electronics Co., Ltd.
Building C, QingHe ShunShiJiaYe Technology Park, #66 ZhuFang Rd, HaiDian District
@@ -32786,12 +32762,6 @@ F0F6C1 (base 16) Sonos, Inc.
Santa Barbara CA 93101
US
-54-03-84 (hex) Hongkong Nano IC Technologies Co., Ltd
-540384 (base 16) Hongkong Nano IC Technologies Co., Ltd
- Rm. 19C, Lockhart Ctr., 301-307 Lockhart Rd., Wan Chai, Hong Kong
- Hong Kong Hong Kong 999077
- CN
-
60-68-4E (hex) Samsung Electronics Co.,Ltd
60684E (base 16) Samsung Electronics Co.,Ltd
#94-1, Imsoo-Dong
@@ -32810,11 +32780,11 @@ B4CE40 (base 16) Samsung Electronics Co.,Ltd
Gumi Gyeongbuk 730-350
KR
-30-50-75 (hex) GN Audio A/S
-305075 (base 16) GN Audio A/S
- Lautrupbjerg 7
- Ballerup DK-2750
- DK
+54-03-84 (hex) Hongkong Nano IC Technologies Co., Ltd
+540384 (base 16) Hongkong Nano IC Technologies Co., Ltd
+ Rm. 19C, Lockhart Ctr., 301-307 Lockhart Rd., Wan Chai, Hong Kong
+ Hong Kong Hong Kong 999077
+ CN
04-BD-BF (hex) Samsung Electronics Co.,Ltd
04BDBF (base 16) Samsung Electronics Co.,Ltd
@@ -32828,22 +32798,10 @@ BC7ABF (base 16) Samsung Electronics Co.,Ltd
Gumi Gyeongbuk 730-350
KR
-2C-C5-46 (hex) Huawei Device Co., Ltd.
-2CC546 (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
- CN
-
-0C-83-9A (hex) Huawei Device Co., Ltd.
-0C839A (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
- CN
-
-E0-E0-FC (hex) Huawei Device Co., Ltd.
-E0E0FC (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
+B4-09-31 (hex) HUAWEI TECHNOLOGIES CO.,LTD
+B40931 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
CN
94-E7-EA (hex) HUAWEI TECHNOLOGIES CO.,LTD
@@ -32864,6 +32822,30 @@ E0E0FC (base 16) Huawei Device Co., Ltd.
Dongguan Guangdong 523808
CN
+2C-C5-46 (hex) Huawei Device Co., Ltd.
+2CC546 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+0C-83-9A (hex) Huawei Device Co., Ltd.
+0C839A (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+E0-E0-FC (hex) Huawei Device Co., Ltd.
+E0E0FC (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+30-50-75 (hex) GN Audio A/S
+305075 (base 16) GN Audio A/S
+ Lautrupbjerg 7
+ Ballerup DK-2750
+ DK
+
F4-B7-8D (hex) HUAWEI TECHNOLOGIES CO.,LTD
F4B78D (base 16) HUAWEI TECHNOLOGIES CO.,LTD
No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
@@ -32876,24 +32858,12 @@ A416E7 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
Dongguan 523808
CN
-B4-09-31 (hex) HUAWEI TECHNOLOGIES CO.,LTD
-B40931 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
- Dongguan 523808
- CN
-
30-B9-B0 (hex) Intracom Asia Co., Ltd
30B9B0 (base 16) Intracom Asia Co., Ltd
4F., No77, Sec. 1, Xintai 5th Rd., Xizhi Dist.
New Taipei City Taiwan 221
TW
-D4-DA-CD (hex) BSkyB Ltd
-D4DACD (base 16) BSkyB Ltd
- 130 Kings Road
- Brentwood Essex 08854
- GB
-
0C-35-FE (hex) Fiberhome Telecommunication Technologies Co.,LTD
0C35FE (base 16) Fiberhome Telecommunication Technologies Co.,LTD
No.5 DongXin Road
@@ -32912,18 +32882,18 @@ AC4B1E (base 16) Integri-Sys.Com LLC
Miami FL 33156
US
-4C-B9-11 (hex) Raisecom Technology CO.,LTD
-4CB911 (base 16) Raisecom Technology CO.,LTD
- No. 11, East Area, No. 10 Block, East Xibeiwang Road
- Beijing 100094
- CN
-
B0-E4-D5 (hex) Google, Inc.
B0E4D5 (base 16) Google, Inc.
1600 Amphitheatre Parkway
Mountain View CA 94043
US
+D4-DA-CD (hex) BSkyB Ltd
+D4DACD (base 16) BSkyB Ltd
+ 130 Kings Road
+ Brentwood Essex 08854
+ GB
+
68-69-CA (hex) Hitachi, Ltd.
6869CA (base 16) Hitachi, Ltd.
27-18, Minami Oi 6-chome, Shinagawa-ku
@@ -32978,6 +32948,12 @@ B0B5C3 (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
Santa Clara CA 95054
US
+4C-B9-11 (hex) Raisecom Technology CO.,LTD
+4CB911 (base 16) Raisecom Technology CO.,LTD
+ No. 11, East Area, No. 10 Block, East Xibeiwang Road
+ Beijing 100094
+ CN
+
40-47-6A (hex) Astro Gaming
40476A (base 16) Astro Gaming
340 Bryant St., Suite 101
@@ -32990,77 +32966,65 @@ B0B5C3 (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
Farmington Hills MI 48335
US
-B8-7C-F2 (hex) Extreme Networks, Inc.
-B87CF2 (base 16) Extreme Networks, Inc.
- 1011 McCarthy Blvd
- Milpitas CA 95035
- US
-
30-B2-37 (hex) GD Midea Air-Conditioning Equipment Co.,Ltd.
30B237 (base 16) GD Midea Air-Conditioning Equipment Co.,Ltd.
Midea Global Innovation Center,Beijiao Town,Shunde
Foshan Guangdong 528311
CN
-24-62-CE (hex) Aruba, a Hewlett Packard Enterprise Company
-2462CE (base 16) Aruba, a Hewlett Packard Enterprise Company
- 3333 Scott Blvd
- Santa Clara CA 95054
- US
-
BC-5A-56 (hex) Cisco Systems, Inc
BC5A56 (base 16) Cisco Systems, Inc
80 West Tasman Drive
San Jose CA 94568
US
-C0-9B-F4 (hex) IEEE Registration Authority
-C09BF4 (base 16) IEEE Registration Authority
- 445 Hoes Lane
- Piscataway NJ 08554
+B8-7C-F2 (hex) Extreme Networks, Inc.
+B87CF2 (base 16) Extreme Networks, Inc.
+ 1011 McCarthy Blvd
+ Milpitas CA 95035
US
+88-2B-94 (hex) MADOKA SYSTEM Co.,Ltd.
+882B94 (base 16) MADOKA SYSTEM Co.,Ltd.
+ 2-105 Hanasakidai Moriyama-ku
+ Nagoya 463-0808
+ JP
+
7C-EF-61 (hex) STR Elektronik Josef Schlechtinger GmbH
7CEF61 (base 16) STR Elektronik Josef Schlechtinger GmbH
Auf dem Ohl 9
Wenden 57482
DE
-40-05-89 (hex) T-Mobile, USA
-400589 (base 16) T-Mobile, USA
- 3625 132nd Ave SE
- BELLEVUE WA 98006
- US
-
-70-03-9F (hex) Espressif Inc.
-70039F (base 16) Espressif Inc.
- Room 204, Building 2, 690 Bibo Rd, Pudong New Area
- Shanghai Shanghai 201203
- CN
-
64-A9-65 (hex) Linkflow Co., Ltd.
64A965 (base 16) Linkflow Co., Ltd.
54, Nonhyeon-ro 2-gil, Gangnam-gu
Seoul 06313
KR
+24-62-CE (hex) Aruba, a Hewlett Packard Enterprise Company
+2462CE (base 16) Aruba, a Hewlett Packard Enterprise Company
+ 3333 Scott Blvd
+ Santa Clara CA 95054
+ US
+
68-E2-09 (hex) HUAWEI TECHNOLOGIES CO.,LTD
68E209 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
Dongguan 523808
CN
-04-5F-B9 (hex) Cisco Systems, Inc
-045FB9 (base 16) Cisco Systems, Inc
- 80 West Tasman Drive
- San Jose CA 94568
+40-05-89 (hex) T-Mobile, USA
+400589 (base 16) T-Mobile, USA
+ 3625 132nd Ave SE
+ BELLEVUE WA 98006
US
-88-2B-94 (hex) MADOKA SYSTEM Co.,Ltd.
-882B94 (base 16) MADOKA SYSTEM Co.,Ltd.
- 2-105 Hanasakidai Moriyama-ku
- Nagoya 463-0808
- JP
+C0-9B-F4 (hex) IEEE Registration Authority
+C09BF4 (base 16) IEEE Registration Authority
+ 445 Hoes Lane
+ Piscataway NJ 08554
+ US
F4-30-8B (hex) Xiaomi Communications Co Ltd
F4308B (base 16) Xiaomi Communications Co Ltd
@@ -33074,11 +33038,11 @@ DC6B12 (base 16) worldcns inc.
Jeju-si Jeju-do 63335
KR
-74-58-F3 (hex) Amazon Technologies Inc.
-7458F3 (base 16) Amazon Technologies Inc.
- P.O Box 8102
- Reno NV 89507
- US
+70-03-9F (hex) Espressif Inc.
+70039F (base 16) Espressif Inc.
+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area
+ Shanghai Shanghai 201203
+ CN
A0-DE-0F (hex) Huawei Device Co., Ltd.
A0DE0F (base 16) Huawei Device Co., Ltd.
@@ -33092,18 +33056,6 @@ F487C5 (base 16) Huawei Device Co., Ltd.
Dongguan Guangdong 523808
CN
-98-DF-82 (hex) Hangzhou Hikvision Digital Technology Co.,Ltd.
-98DF82 (base 16) Hangzhou Hikvision Digital Technology Co.,Ltd.
- No.555 Qianmo Road
- Hangzhou Zhejiang 310052
- CN
-
-3C-F6-52 (hex) zte corporation
-3CF652 (base 16) zte corporation
- 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China
- shenzhen guangdong 518057
- CN
-
08-00-88 (hex) Brocade Communications Systems LLC
080088 (base 16) Brocade Communications Systems LLC
1320 Ridder Park Dr
@@ -33122,6 +33074,12 @@ F487C5 (base 16) Huawei Device Co., Ltd.
NEW TAIPEI TAIWAN 23585
TW
+04-5F-B9 (hex) Cisco Systems, Inc
+045FB9 (base 16) Cisco Systems, Inc
+ 80 West Tasman Drive
+ San Jose CA 94568
+ US
+
CC-4E-24 (hex) Brocade Communications Systems LLC
CC4E24 (base 16) Brocade Communications Systems LLC
1320 Ridder Park Dr
@@ -33134,11 +33092,17 @@ CC4E24 (base 16) Brocade Communications Systems LLC
San Jose CA 95131
US
-08-AA-55 (hex) Motorola Mobility LLC, a Lenovo Company
-08AA55 (base 16) Motorola Mobility LLC, a Lenovo Company
- 222 West Merchandise Mart Plaza
- Chicago IL 60654
- US
+98-DF-82 (hex) Hangzhou Hikvision Digital Technology Co.,Ltd.
+98DF82 (base 16) Hangzhou Hikvision Digital Technology Co.,Ltd.
+ No.555 Qianmo Road
+ Hangzhou Zhejiang 310052
+ CN
+
+3C-F6-52 (hex) zte corporation
+3CF652 (base 16) zte corporation
+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China
+ shenzhen guangdong 518057
+ CN
5C-0F-FB (hex) Amino Communications Ltd
5C0FFB (base 16) Amino Communications Ltd
@@ -33146,24 +33110,12 @@ CC4E24 (base 16) Brocade Communications Systems LLC
Cambourne Cambs CB23 6DP
GB
-54-21-9D (hex) Samsung Electronics Co.,Ltd
-54219D (base 16) Samsung Electronics Co.,Ltd
- #94-1, Imsoo-Dong
- Gumi Gyeongbuk 730-350
- KR
-
-C8-8B-E8 (hex) Masimo Corporation
-C88BE8 (base 16) Masimo Corporation
- 40 Parker
- Irvine CA 92618
+74-58-F3 (hex) Amazon Technologies Inc.
+7458F3 (base 16) Amazon Technologies Inc.
+ P.O Box 8102
+ Reno NV 89507
US
-40-40-28 (hex) ZIV
-404028 (base 16) ZIV
- Polígono Parque Tecnológico, 210
- ZAMUDIO VIZCAYA 48170
- ES
-
00-06-31 (hex) Calix Inc.
000631 (base 16) Calix Inc.
2777 Orchard Pkwy
@@ -33176,17 +33128,47 @@ A80577 (base 16) Netlist, Inc.
Irvine CA 92618
US
+E4-3A-65 (hex) MofiNetwork Inc
+E43A65 (base 16) MofiNetwork Inc
+ 11 Boynton Cir
+ Markham Ontario L6C 1A8
+ CA
+
+08-AA-55 (hex) Motorola Mobility LLC, a Lenovo Company
+08AA55 (base 16) Motorola Mobility LLC, a Lenovo Company
+ 222 West Merchandise Mart Plaza
+ Chicago IL 60654
+ US
+
+54-21-9D (hex) Samsung Electronics Co.,Ltd
+54219D (base 16) Samsung Electronics Co.,Ltd
+ #94-1, Imsoo-Dong
+ Gumi Gyeongbuk 730-350
+ KR
+
+C8-8B-E8 (hex) Masimo Corporation
+C88BE8 (base 16) Masimo Corporation
+ 40 Parker
+ Irvine CA 92618
+ US
+
F0-41-C6 (hex) Heat Tech Company, Ltd.
F041C6 (base 16) Heat Tech Company, Ltd.
221A, Tikhookeanskaya st.
Khabarovsk 680033
RU
-E4-3A-65 (hex) MofiNetwork Inc
-E43A65 (base 16) MofiNetwork Inc
- 11 Boynton Cir
- Markham Ontario L6C 1A8
- CA
+40-40-28 (hex) ZIV
+404028 (base 16) ZIV
+ Polígono Parque Tecnológico, 210
+ ZAMUDIO VIZCAYA 48170
+ ES
+
+F8-6C-03 (hex) Shenzhen Teleone Technology Co., Ltd
+F86C03 (base 16) Shenzhen Teleone Technology Co., Ltd
+ TOWER B 5/F, SHANSHUI BUILDING, NANSHAN YUNGU INNOVATION INDUSTRY PARK, 1183 LIUXIAN AVENUE, NANSHAN, SHENZHEN, CHINA
+ Shenzhen 518000
+ CN
D8-71-4D (hex) Texas Instruments
D8714D (base 16) Texas Instruments
@@ -33200,6 +33182,24 @@ D8714D (base 16) Texas Instruments
Dallas TX 75243
US
+10-5D-DC (hex) Huawei Device Co., Ltd.
+105DDC (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+DC-73-85 (hex) Huawei Device Co., Ltd.
+DC7385 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+54-55-D5 (hex) Huawei Device Co., Ltd.
+5455D5 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
00-15-D2 (hex) Xantech Corporation
0015D2 (base 16) Xantech Corporation
5919 Sea Otter Place
@@ -33212,10 +33212,10 @@ D8714D (base 16) Texas Instruments
Carlsbad CA 92010
US
-F8-6C-03 (hex) Shenzhen Teleone Technology Co., Ltd
-F86C03 (base 16) Shenzhen Teleone Technology Co., Ltd
- TOWER B 5/F, SHANSHUI BUILDING, NANSHAN YUNGU INNOVATION INDUSTRY PARK, 1183 LIUXIAN AVENUE, NANSHAN, SHENZHEN, CHINA
- Shenzhen 518000
+18-45-93 (hex) Taicang T&W Electronics
+184593 (base 16) Taicang T&W Electronics
+ 89# Jiang Nan RD
+ Suzhou Jiangsu 215412
CN
CC-9E-CA (hex) HMD Global Oy
@@ -33230,6 +33230,18 @@ CC9ECA (base 16) HMD Global Oy
Dongguan 523808
CN
+34-EA-E7 (hex) Shanghai High-Flying Electronics Technology Co., Ltd
+34EAE7 (base 16) Shanghai High-Flying Electronics Technology Co., Ltd
+ Room 1002,#1Building,No.3000 Longdong Avenue,Pudong
+ Shanghai Shanghai 201202
+ CN
+
+D4-AB-CD (hex) Hui Zhou Gaoshengda Technology Co.,LTD
+D4ABCD (base 16) Hui Zhou Gaoshengda Technology Co.,LTD
+ No.75,Zhongkai High-Tech Development District,Huizhou
+ Hui Zhou Guangdong 516006
+ CN
+
80-E1-BF (hex) HUAWEI TECHNOLOGIES CO.,LTD
80E1BF (base 16) HUAWEI TECHNOLOGIES CO.,LTD
No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
@@ -33242,53 +33254,65 @@ CC9ECA (base 16) HMD Global Oy
Dongguan 523808
CN
-DC-73-85 (hex) Huawei Device Co., Ltd.
-DC7385 (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
- CN
+00-19-32 (hex) Gude Systems GmbH
+001932 (base 16) Gude Systems GmbH
+ Von-der-Wettern-Str. 23
+ Cologne NRW 51149
+ DE
-54-55-D5 (hex) Huawei Device Co., Ltd.
-5455D5 (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
+A0-CA-A5 (hex) INTELLIGENCE TECHNOLOGY OF CEC CO., LTD
+A0CAA5 (base 16) INTELLIGENCE TECHNOLOGY OF CEC CO., LTD
+ Tower A, NO.2 Lutuan Road, The sountern Of Future Science and Tech Zone, Changping District
+ Beijing Beijing 102209
CN
-18-45-93 (hex) Taicang T&W Electronics
-184593 (base 16) Taicang T&W Electronics
- 89# Jiang Nan RD
- Suzhou Jiangsu 215412
- CN
+5C-5F-67 (hex) Intel Corporate
+5C5F67 (base 16) Intel Corporate
+ Lot 8, Jalan Hi-Tech 2/3
+ Kulim Kedah 09000
+ MY
-10-5D-DC (hex) Huawei Device Co., Ltd.
-105DDC (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
- CN
+0C-54-15 (hex) Intel Corporate
+0C5415 (base 16) Intel Corporate
+ Lot 8, Jalan Hi-Tech 2/3
+ Kulim Kedah 09000
+ MY
-34-EA-E7 (hex) Shanghai High-Flying Electronics Technology Co., Ltd
-34EAE7 (base 16) Shanghai High-Flying Electronics Technology Co., Ltd
- Room 1002,#1Building,No.3000 Longdong Avenue,Pudong
- Shanghai Shanghai 201202
- CN
+30-24-32 (hex) Intel Corporate
+302432 (base 16) Intel Corporate
+ Lot 8, Jalan Hi-Tech 2/3
+ Kulim Kedah 09000
+ MY
-D4-AB-CD (hex) Hui Zhou Gaoshengda Technology Co.,LTD
-D4ABCD (base 16) Hui Zhou Gaoshengda Technology Co.,LTD
- No.75,Zhongkai High-Tech Development District,Huizhou
- Hui Zhou Guangdong 516006
- CN
+DC-8B-28 (hex) Intel Corporate
+DC8B28 (base 16) Intel Corporate
+ Lot 8, Jalan Hi-Tech 2/3
+ Kulim Kedah 09000
+ MY
-A0-CA-A5 (hex) INTELLIGENCE TECHNOLOGY OF CEC CO., LTD
-A0CAA5 (base 16) INTELLIGENCE TECHNOLOGY OF CEC CO., LTD
- Tower A, NO.2 Lutuan Road, The sountern Of Future Science and Tech Zone, Changping District
- Beijing Beijing 102209
- CN
+1C-1B-B5 (hex) Intel Corporate
+1C1BB5 (base 16) Intel Corporate
+ Lot 8, Jalan Hi-Tech 2/3
+ Kulim Kedah 09000
+ MY
-58-FD-B1 (hex) LG Electronics
-58FDB1 (base 16) LG Electronics
- 222 LG-ro, JINWI-MYEON
- Pyeongtaek-si Gyeonggi-do 451-713
- KR
+F8-34-41 (hex) Intel Corporate
+F83441 (base 16) Intel Corporate
+ Lot 8, Jalan Hi-Tech 2/3
+ Kulim Kedah 09000
+ MY
+
+E4-70-B8 (hex) Intel Corporate
+E470B8 (base 16) Intel Corporate
+ Lot 8, Jalan Hi-Tech 2/3
+ Kulim Kedah 09000
+ MY
+
+E0-0E-E4 (hex) DWnet Technologies(Suzhou) Corporation
+E00EE4 (base 16) DWnet Technologies(Suzhou) Corporation
+ No.8,Tangzhuang Road, Suzhou Industrial Park, Jiangsu, China
+ Suzhou 21500
+ CN
E8-85-4B (hex) Apple, Inc.
E8854B (base 16) Apple, Inc.
@@ -33296,23 +33320,47 @@ E8854B (base 16) Apple, Inc.
Cupertino CA 95014
US
-E0-2B-96 (hex) Apple, Inc.
-E02B96 (base 16) Apple, Inc.
+28-EC-95 (hex) Apple, Inc.
+28EC95 (base 16) Apple, Inc.
1 Infinite Loop
Cupertino CA 95014
US
-28-EC-95 (hex) Apple, Inc.
-28EC95 (base 16) Apple, Inc.
+58-FD-B1 (hex) LG Electronics
+58FDB1 (base 16) LG Electronics
+ 222 LG-ro, JINWI-MYEON
+ Pyeongtaek-si Gyeonggi-do 451-713
+ KR
+
+E0-2B-96 (hex) Apple, Inc.
+E02B96 (base 16) Apple, Inc.
1 Infinite Loop
Cupertino CA 95014
US
-00-19-32 (hex) Gude Systems GmbH
-001932 (base 16) Gude Systems GmbH
- Von-der-Wettern-Str. 23
- Cologne NRW 51149
- DE
+A8-46-9D (hex) Cisco Meraki
+A8469D (base 16) Cisco Meraki
+ 500 Terry A. Francois Blvd
+ San Francisco 94158
+ US
+
+6C-DE-A9 (hex) Cisco Meraki
+6CDEA9 (base 16) Cisco Meraki
+ 500 Terry A. Francois Blvd
+ San Francisco 94158
+ US
+
+8C-CE-FD (hex) Shenzhen zhouhai technology co.,LTD
+8CCEFD (base 16) Shenzhen zhouhai technology co.,LTD
+ 401-403,415-416, Area A, Block B, West Silicon Valley, 5010 Baoan Avenue, Baoan District, Shenzhen, China
+ Shenzhen Guangdong 518110
+ CN
+
+50-FB-19 (hex) CHIPSEA TECHNOLOGIES (SHENZHEN) CORP.
+50FB19 (base 16) CHIPSEA TECHNOLOGIES (SHENZHEN) CORP.
+ 9F,BLOCK A,GARDEN CITY DIGITAL BUILDING,NO.1079 NANHAI ROAD,NANSHAN DISTRICT
+ SHEN ZHEN GUANG DONG 518000
+ CN
D0-AB-D5 (hex) Intel Corporate
D0ABD5 (base 16) Intel Corporate
@@ -33344,11 +33392,17 @@ DC7196 (base 16) Intel Corporate
Kulim Kedah 09000
MY
-1C-1B-B5 (hex) Intel Corporate
-1C1BB5 (base 16) Intel Corporate
- Lot 8, Jalan Hi-Tech 2/3
- Kulim Kedah 09000
- MY
+94-08-C7 (hex) Huawei Device Co., Ltd.
+9408C7 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+C8-CA-63 (hex) Huawei Device Co., Ltd.
+C8CA63 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
98-3B-8F (hex) Intel Corporate
983B8F (base 16) Intel Corporate
@@ -33374,26 +33428,8 @@ D43B04 (base 16) Intel Corporate
Kulim Kedah 09000
MY
-5C-5F-67 (hex) Intel Corporate
-5C5F67 (base 16) Intel Corporate
- Lot 8, Jalan Hi-Tech 2/3
- Kulim Kedah 09000
- MY
-
-0C-54-15 (hex) Intel Corporate
-0C5415 (base 16) Intel Corporate
- Lot 8, Jalan Hi-Tech 2/3
- Kulim Kedah 09000
- MY
-
-30-24-32 (hex) Intel Corporate
-302432 (base 16) Intel Corporate
- Lot 8, Jalan Hi-Tech 2/3
- Kulim Kedah 09000
- MY
-
-DC-8B-28 (hex) Intel Corporate
-DC8B28 (base 16) Intel Corporate
+38-68-93 (hex) Intel Corporate
+386893 (base 16) Intel Corporate
Lot 8, Jalan Hi-Tech 2/3
Kulim Kedah 09000
MY
@@ -33416,18 +33452,6 @@ E0D4E8 (base 16) Intel Corporate
Kulim Kedah 09000
MY
-F8-34-41 (hex) Intel Corporate
-F83441 (base 16) Intel Corporate
- Lot 8, Jalan Hi-Tech 2/3
- Kulim Kedah 09000
- MY
-
-E4-70-B8 (hex) Intel Corporate
-E470B8 (base 16) Intel Corporate
- Lot 8, Jalan Hi-Tech 2/3
- Kulim Kedah 09000
- MY
-
94-E6-F7 (hex) Intel Corporate
94E6F7 (base 16) Intel Corporate
Lot 8, Jalan Hi-Tech 2/3
@@ -33440,44 +33464,14 @@ E470B8 (base 16) Intel Corporate
Kulim Kedah 09000
MY
-E0-0E-E4 (hex) DWnet Technologies(Suzhou) Corporation
-E00EE4 (base 16) DWnet Technologies(Suzhou) Corporation
- No.8,Tangzhuang Road, Suzhou Industrial Park, Jiangsu, China
- Suzhou 21500
- CN
-
-A8-46-9D (hex) Cisco Meraki
-A8469D (base 16) Cisco Meraki
- 500 Terry A. Francois Blvd
- San Francisco 94158
- US
-
-6C-DE-A9 (hex) Cisco Meraki
-6CDEA9 (base 16) Cisco Meraki
- 500 Terry A. Francois Blvd
- San Francisco 94158
- US
-
70-3A-A6 (hex) New H3C Technologies Co., Ltd
703AA6 (base 16) New H3C Technologies Co., Ltd
466 Changhe Road, Binjiang District
Hangzhou Zhejiang 310052
CN
-8C-CE-FD (hex) Shenzhen zhouhai technology co.,LTD
-8CCEFD (base 16) Shenzhen zhouhai technology co.,LTD
- 401-403,415-416, Area A, Block B, West Silicon Valley, 5010 Baoan Avenue, Baoan District, Shenzhen, China
- Shenzhen Guangdong 518110
- CN
-
-50-FB-19 (hex) CHIPSEA TECHNOLOGIES (SHENZHEN) CORP.
-50FB19 (base 16) CHIPSEA TECHNOLOGIES (SHENZHEN) CORP.
- 9F,BLOCK A,GARDEN CITY DIGITAL BUILDING,NO.1079 NANHAI ROAD,NANSHAN DISTRICT
- SHEN ZHEN GUANG DONG 518000
- CN
-
-94-08-C7 (hex) Huawei Device Co., Ltd.
-9408C7 (base 16) Huawei Device Co., Ltd.
+94-37-F7 (hex) Huawei Device Co., Ltd.
+9437F7 (base 16) Huawei Device Co., Ltd.
No.2 of Xincheng Road, Songshan Lake Zone
Dongguan Guangdong 523808
CN
@@ -33488,12 +33482,6 @@ A8469D (base 16) Cisco Meraki
Kulim Kedah 09000
MY
-38-68-93 (hex) Intel Corporate
-386893 (base 16) Intel Corporate
- Lot 8, Jalan Hi-Tech 2/3
- Kulim Kedah 09000
- MY
-
90-3F-EA (hex) HUAWEI TECHNOLOGIES CO.,LTD
903FEA (base 16) HUAWEI TECHNOLOGIES CO.,LTD
No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
@@ -33512,17 +33500,11 @@ CCD73C (base 16) HUAWEI TECHNOLOGIES CO.,LTD
Dongguan 523808
CN
-C8-CA-63 (hex) Huawei Device Co., Ltd.
-C8CA63 (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
- CN
-
-94-37-F7 (hex) Huawei Device Co., Ltd.
-9437F7 (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
- CN
+D4-40-D0 (hex) OCOSMOS Co., LTD
+D440D0 (base 16) OCOSMOS Co., LTD
+ (Tamnip-Dong) #1, 263-1 Techno 2-Ro Yuseong-Gu
+ Daejeon Daejeon 34026
+ KR
94-E7-0B (hex) Intel Corporate
94E70B (base 16) Intel Corporate
@@ -33536,6 +33518,12 @@ C8CA63 (base 16) Huawei Device Co., Ltd.
Torino TO I-10154
IT
+DC-D9-AE (hex) Nokia Shanghai Bell Co., Ltd.
+DCD9AE (base 16) Nokia Shanghai Bell Co., Ltd.
+ No.388 Ning Qiao Road,Jin Qiao Pudong Shanghai
+ Shanghai 201206
+ CN
+
98-B8-BC (hex) Samsung Electronics Co.,Ltd
98B8BC (base 16) Samsung Electronics Co.,Ltd
#94-1, Imsoo-Dong
@@ -33566,29 +33554,23 @@ BCA993 (base 16) Cambium Networks Limited
Ashburton Devon TQ13 7UP
GB
-D4-40-D0 (hex) OCOSMOS Co., LTD
-D440D0 (base 16) OCOSMOS Co., LTD
- (Tamnip-Dong) #1, 263-1 Techno 2-Ro Yuseong-Gu
- Daejeon Daejeon 34026
- KR
-
10-74-6F (hex) MOTOROLA SOLUTIONS MALAYSIA SDN. BHD.
10746F (base 16) MOTOROLA SOLUTIONS MALAYSIA SDN. BHD.
INNOPLEX, NO. 2A, MEDAN BAYAN LEPAS, BAYAN LEPAS TECHNOPLEX
BAYAN LEPAS PENANG 11900
MY
-DC-D9-AE (hex) Nokia Shanghai Bell Co., Ltd.
-DCD9AE (base 16) Nokia Shanghai Bell Co., Ltd.
- No.388 Ning Qiao Road,Jin Qiao Pudong Shanghai
- Shanghai 201206
+00-92-7D (hex) Ficosa Internationa(Taicang) C0.,Ltd.
+00927D (base 16) Ficosa Internationa(Taicang) C0.,Ltd.
+ No.518, Middle Suzhou Rd., Taicang Economy Developing Area, Taicang,
+ Suzhou Jiangsu 215400
CN
-1C-08-C1 (hex) LG Innotek
-1C08C1 (base 16) LG Innotek
- 978-1 Jangduk dong, Gwangsangu
- Gwangju Gwangju 506-731
- KR
+44-16-22 (hex) Microsoft Corporation
+441622 (base 16) Microsoft Corporation
+ One Microsoft Way
+ REDMOND WA 98052
+ US
44-E6-B0 (hex) China Mobile IOT Company Limited
44E6B0 (base 16) China Mobile IOT Company Limited
@@ -33620,23 +33602,11 @@ DCD9AE (base 16) Nokia Shanghai Bell Co., Ltd.
San Jose CA 94568
US
-00-92-7D (hex) Ficosa Internationa(Taicang) C0.,Ltd.
-00927D (base 16) Ficosa Internationa(Taicang) C0.,Ltd.
- No.518, Middle Suzhou Rd., Taicang Economy Developing Area, Taicang,
- Suzhou Jiangsu 215400
- CN
-
-44-16-22 (hex) Microsoft Corporation
-441622 (base 16) Microsoft Corporation
- One Microsoft Way
- REDMOND WA 98052
- US
-
-FC-73-FB (hex) HUAWEI TECHNOLOGIES CO.,LTD
-FC73FB (base 16) HUAWEI TECHNOLOGIES CO.,LTD
- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
- Dongguan 523808
- CN
+1C-08-C1 (hex) LG Innotek
+1C08C1 (base 16) LG Innotek
+ 978-1 Jangduk dong, Gwangsangu
+ Gwangju Gwangju 506-731
+ KR
34-87-3D (hex) Quectel Wireless Solutions Co., Ltd.
34873D (base 16) Quectel Wireless Solutions Co., Ltd.
@@ -33650,12 +33620,6 @@ FC73FB (base 16) HUAWEI TECHNOLOGIES CO.,LTD
DH Weert 6003
NL
-04-45-62 (hex) ANDRA Sp. z o. o.
-044562 (base 16) ANDRA Sp. z o. o.
- Pryzmaty 6/8
- Warszawa 02-226
- PL
-
58-B6-23 (hex) Beijing Xiaomi Mobile Software Co., Ltd
58B623 (base 16) Beijing Xiaomi Mobile Software Co., Ltd
Xiaomi Campus, No. 33 Xi erqi Middle Road, Haidian District
@@ -33668,12 +33632,18 @@ A022DE (base 16) vivo Mobile Communication Co., Ltd.
Wusha,Chang'An DongGuan City,Guangdong, 523860
CN
-74-F7-F6 (hex) Shanghai Sunmi Technology Co.,Ltd.
-74F7F6 (base 16) Shanghai Sunmi Technology Co.,Ltd.
- Room 505, KIC Plaza, No.388 Song Hu Road, Yang Pu District, Shanghai, China
- Shanghai Yang Pu District 200433
+FC-73-FB (hex) HUAWEI TECHNOLOGIES CO.,LTD
+FC73FB (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
CN
+04-45-62 (hex) ANDRA Sp. z o. o.
+044562 (base 16) ANDRA Sp. z o. o.
+ Pryzmaty 6/8
+ Warszawa 02-226
+ PL
+
00-26-9E (hex) Quanta Computer Inc.
00269E (base 16) Quanta Computer Inc.
NO. 211, WEN HWA 2RD., KUEI SHAN HSIANG, TAIPEI, SHIEN
@@ -33710,18 +33680,24 @@ C80AA9 (base 16) Quanta Computer Inc.
Tao Yuan 33377
TW
-C0-CC-42 (hex) Sichuan Tianyi Comheart Telecom Co., Ltd.
-C0CC42 (base 16) Sichuan Tianyi Comheart Telecom Co., Ltd.
- No.198,First Section,Snow Mountain Avenue, Jinyuan Town, Dayi County
- Chengdu Sichuan 611330
- CN
-
C0-8F-20 (hex) Shenzhen Skyworth Digital Technology CO., Ltd
C08F20 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd
4F,Block A, Skyworth?Building,
Shenzhen Guangdong 518057
CN
+74-F7-F6 (hex) Shanghai Sunmi Technology Co.,Ltd.
+74F7F6 (base 16) Shanghai Sunmi Technology Co.,Ltd.
+ Room 505, KIC Plaza, No.388 Song Hu Road, Yang Pu District, Shanghai, China
+ Shanghai Yang Pu District 200433
+ CN
+
+C0-CC-42 (hex) Sichuan Tianyi Comheart Telecom Co., Ltd.
+C0CC42 (base 16) Sichuan Tianyi Comheart Telecom Co., Ltd.
+ No.198,First Section,Snow Mountain Avenue, Jinyuan Town, Dayi County
+ Chengdu Sichuan 611330
+ CN
+
24-1A-E6 (hex) Huawei Device Co., Ltd.
241AE6 (base 16) Huawei Device Co., Ltd.
No.2 of Xincheng Road, Songshan Lake Zone
@@ -33734,12 +33710,6 @@ C08F20 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd
Mountain View CA 94043
US
-1C-5D-80 (hex) Mitubishi Hitachi Power Systems Industries Co., Ltd.
-1C5D80 (base 16) Mitubishi Hitachi Power Systems Industries Co., Ltd.
- Nakaku Aioimachi
- Yokohama 2310012
- JP
-
B4-23-30 (hex) Itron Inc
B42330 (base 16) Itron Inc
2111 N Molter Rd
@@ -33752,35 +33722,29 @@ B42330 (base 16) Itron Inc
Osaka 554-0024
JP
-3C-9C-0F (hex) Intel Corporate
-3C9C0F (base 16) Intel Corporate
- Lot 8, Jalan Hi-Tech 2/3
- Kulim Kedah 09000
- MY
-
-08-FB-EA (hex) AMPAK Technology,Inc.
-08FBEA (base 16) AMPAK Technology,Inc.
- 3F, No.15-1 Zhonghua Road, Hsinchu Industrail Park, Hukou,
- Hsinchu Hsinchu,Taiwan R.O.C. 30352
- TW
-
A8-02-DB (hex) zte corporation
A802DB (base 16) zte corporation
12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China
shenzhen guangdong 518057
CN
+1C-5D-80 (hex) Mitubishi Hitachi Power Systems Industries Co., Ltd.
+1C5D80 (base 16) Mitubishi Hitachi Power Systems Industries Co., Ltd.
+ Nakaku Aioimachi
+ Yokohama 2310012
+ JP
+
80-16-05 (hex) Vodafone Italia S.p.A.
801605 (base 16) Vodafone Italia S.p.A.
Via Lorenteggio nr. 240
Milan Italy 20147
IT
-58-65-E6 (hex) infomark
-5865E6 (base 16) infomark
- #801, KINS TOWER, JEONGJA-DONG
- SEONGNAM GYOUNGGI 463-847
- KR
+3C-9C-0F (hex) Intel Corporate
+3C9C0F (base 16) Intel Corporate
+ Lot 8, Jalan Hi-Tech 2/3
+ Kulim Kedah 09000
+ MY
5C-44-3E (hex) Skullcandy
5C443E (base 16) Skullcandy
@@ -33794,11 +33758,11 @@ F88200 (base 16) CaptionCall
Salt Lake City UT 84123
US
-60-EB-5A (hex) Asterfusion Data Technologies Co.,Ltd
-60EB5A (base 16) Asterfusion Data Technologies Co.,Ltd
- B401, Building 2, Creative Industry Park, No.328 Xinghu Street, SIP, Suzhou
- suzhou 215123
- CN
+08-FB-EA (hex) AMPAK Technology,Inc.
+08FBEA (base 16) AMPAK Technology,Inc.
+ 3F, No.15-1 Zhonghua Road, Hsinchu Industrail Park, Hukou,
+ Hsinchu Hsinchu,Taiwan R.O.C. 30352
+ TW
34-0F-66 (hex) Web Sensing LLC
340F66 (base 16) Web Sensing LLC
@@ -33806,6 +33770,12 @@ F88200 (base 16) CaptionCall
Hanover NH 03755
US
+58-65-E6 (hex) infomark
+5865E6 (base 16) infomark
+ #801, KINS TOWER, JEONGJA-DONG
+ SEONGNAM GYOUNGGI 463-847
+ KR
+
00-50-F1 (hex) Maxlinear, Inc
0050F1 (base 16) Maxlinear, Inc
94 Em-Hamoshavot Way.
@@ -33818,30 +33788,18 @@ F4E578 (base 16) LLC Proizvodstvennaya Kompania TransService
Moscow Moscow 117545
RU
-90-12-A1 (hex) We Corporation Inc.
-9012A1 (base 16) We Corporation Inc.
- 201, 33, Deokcheon-ro, Manan-gu
- Anyang-si Gyeonggi-do 14088
- KR
-
-64-B6-23 (hex) CCS Care Communication Solutions GmbH
-64B623 (base 16) CCS Care Communication Solutions GmbH
- Computerstrasse 6
- Vienna 1100
- AT
-
-B8-80-35 (hex) Shenzhen Qihu Intelligent Technology Company Limited
-B88035 (base 16) Shenzhen Qihu Intelligent Technology Company Limited
- Room 201, Block A, No.1, Qianwan Road 1,Qianhai Shenzhen HongKong Modern Service Industry Cooperation Zone
- Shenzhen Guangdong 518057
- CN
-
08-54-BB (hex) SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD
0854BB (base 16) SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD
Unit East Block22-24/F,Skyworth semiconductor design Bldg., Gaoxin Ave.4.S.,Nanshan District,Shenzhen,China
SHENZHEN GUANGDONG 518057
CN
+60-EB-5A (hex) Asterfusion Data Technologies Co.,Ltd
+60EB5A (base 16) Asterfusion Data Technologies Co.,Ltd
+ B401, Building 2, Creative Industry Park, No.328 Xinghu Street, SIP, Suzhou
+ suzhou 215123
+ CN
+
E4-D3-73 (hex) HUAWEI TECHNOLOGIES CO.,LTD
E4D373 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
@@ -33860,6 +33818,12 @@ C0BC9A (base 16) HUAWEI TECHNOLOGIES CO.,LTD
KYOTO KYOTO 601-8501
JP
+E8-1B-69 (hex) Sercomm Corporation.
+E81B69 (base 16) Sercomm Corporation.
+ 3F,No.81,Yu-Yih Rd.,Chu-Nan Chen
+ Miao-Lih Hsuan 115
+ TW
+
68-52-D6 (hex) UGame Technology Co.,Ltd
6852D6 (base 16) UGame Technology Co.,Ltd
3F, Bld.7, F518 Idea Land, No. 1065 Baoyuan Road, Xixiang Street, Baoan District
@@ -33872,30 +33836,42 @@ FC1999 (base 16) Xiaomi Communications Co Ltd
NO.68, Qinghe Middle Street Haidian District, Beijing 100085
CN
+90-12-A1 (hex) We Corporation Inc.
+9012A1 (base 16) We Corporation Inc.
+ 201, 33, Deokcheon-ro, Manan-gu
+ Anyang-si Gyeonggi-do 14088
+ KR
+
+B8-80-35 (hex) Shenzhen Qihu Intelligent Technology Company Limited
+B88035 (base 16) Shenzhen Qihu Intelligent Technology Company Limited
+ Room 201, Block A, No.1, Qianwan Road 1,Qianhai Shenzhen HongKong Modern Service Industry Cooperation Zone
+ Shenzhen Guangdong 518057
+ CN
+
+00-17-11 (hex) Cytiva Sweden AB
+001711 (base 16) Cytiva Sweden AB
+ Björkgatan 30
+ Uppsala SE 75184
+ SE
+
B4-C2-6A (hex) Garmin International
B4C26A (base 16) Garmin International
1200 E. 151st St
Olathe KS 66062
US
+64-B6-23 (hex) CCS Care Communication Solutions GmbH
+64B623 (base 16) CCS Care Communication Solutions GmbH
+ Computerstrasse 6
+ Vienna 1100
+ AT
+
E8-9F-80 (hex) Belkin International Inc.
E89F80 (base 16) Belkin International Inc.
12045 East Waterfront Drive
Playa Vista 90094
US
-E8-1B-69 (hex) Sercomm Corporation.
-E81B69 (base 16) Sercomm Corporation.
- 3F,No.81,Yu-Yih Rd.,Chu-Nan Chen
- Miao-Lih Hsuan 115
- TW
-
-00-17-11 (hex) Cytiva Sweden AB
-001711 (base 16) Cytiva Sweden AB
- Björkgatan 30
- Uppsala SE 75184
- SE
-
BC-5C-4C (hex) ELECOM CO.,LTD.
BC5C4C (base 16) ELECOM CO.,LTD.
2F Kudan First Place Bldg. 4-1-28
@@ -33908,12 +33884,6 @@ BC5C4C (base 16) ELECOM CO.,LTD.
Chiyoda-ku Kudan Kita 102-0073
JP
-A4-51-29 (hex) XAG
-A45129 (base 16) XAG
- Block C, 115 Gaopu Road
- Guangzhou 510663
- CN
-
6C-E5-F7 (hex) New H3C Technologies Co., Ltd
6CE5F7 (base 16) New H3C Technologies Co., Ltd
466 Changhe Road, Binjiang District
@@ -33938,6 +33908,12 @@ B8DD71 (base 16) zte corporation
kouka shiga 528-0061
JP
+A4-51-29 (hex) XAG
+A45129 (base 16) XAG
+ Block C, 115 Gaopu Road
+ Guangzhou 510663
+ CN
+
5C-02-72 (hex) Silicon Laboratories
5C0272 (base 16) Silicon Laboratories
400 West Cesar Chavez Street
@@ -33980,6 +33956,12 @@ B436D1 (base 16) Renesas Electronics (Penang) Sdn. Bhd.
Dongguan 523808
CN
+BC-76-C5 (hex) HUAWEI TECHNOLOGIES CO.,LTD
+BC76C5 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
+ CN
+
DC-77-4C (hex) Cisco Systems, Inc
DC774C (base 16) Cisco Systems, Inc
80 West Tasman Drive
@@ -33992,11 +33974,11 @@ DC774C (base 16) Cisco Systems, Inc
Gunpo-si Gyeonggi-do 15880
KR
-BC-76-C5 (hex) HUAWEI TECHNOLOGIES CO.,LTD
-BC76C5 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
- Dongguan 523808
- CN
+B8-5F-98 (hex) Amazon Technologies Inc.
+B85F98 (base 16) Amazon Technologies Inc.
+ P.O Box 8102
+ Reno NV 89507
+ US
A0-85-FC (hex) Microsoft Corporation
A085FC (base 16) Microsoft Corporation
@@ -34010,12 +33992,6 @@ C49886 (base 16) Qorvo International Pte. Ltd.
#04-01 486058
SG
-B8-5F-98 (hex) Amazon Technologies Inc.
-B85F98 (base 16) Amazon Technologies Inc.
- P.O Box 8102
- Reno NV 89507
- US
-
94-FF-61 (hex) China Mobile Group Device Co.,Ltd.
94FF61 (base 16) China Mobile Group Device Co.,Ltd.
32 Xuanwumen West Street,Xicheng District
@@ -34058,12 +34034,6 @@ B85F98 (base 16) Amazon Technologies Inc.
Beijing 100095
CN
-F8-10-93 (hex) Apple, Inc.
-F81093 (base 16) Apple, Inc.
- 1 Infinite Loop
- Cupertino CA 95014
- US
-
FC-66-CF (hex) Apple, Inc.
FC66CF (base 16) Apple, Inc.
1 Infinite Loop
@@ -34082,6 +34052,12 @@ AC1D06 (base 16) Apple, Inc.
Cupertino CA 95014
US
+F8-10-93 (hex) Apple, Inc.
+F81093 (base 16) Apple, Inc.
+ 1 Infinite Loop
+ Cupertino CA 95014
+ US
+
5C-D8-9E (hex) Huawei Device Co., Ltd.
5CD89E (base 16) Huawei Device Co., Ltd.
No.2 of Xincheng Road, Songshan Lake Zone
@@ -34118,6 +34094,12 @@ DCE994 (base 16) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.
Wuhan Hubei 430074
CN
+8C-CE-4E (hex) Espressif Inc.
+8CCE4E (base 16) Espressif Inc.
+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area
+ Shanghai Shanghai 201203
+ CN
+
B8-2D-28 (hex) AMPAK Technology,Inc.
B82D28 (base 16) AMPAK Technology,Inc.
3F, No.15-1 Zhonghua Road, Hsinchu Industrail Park, Hukou,
@@ -34130,17 +34112,17 @@ C44137 (base 16) Quectel Wireless Solutions Co., Ltd.
Shanghai 200233
CN
-8C-CE-4E (hex) Espressif Inc.
-8CCE4E (base 16) Espressif Inc.
- Room 204, Building 2, 690 Bibo Rd, Pudong New Area
- Shanghai Shanghai 201203
+EC-C8-9C (hex) Hangzhou Hikvision Digital Technology Co.,Ltd.
+ECC89C (base 16) Hangzhou Hikvision Digital Technology Co.,Ltd.
+ No.555 Qianmo Road
+ Hangzhou Zhejiang 310052
CN
-88-DA-1A (hex) Redpine Signals, Inc.
-88DA1A (base 16) Redpine Signals, Inc.
- Plot 87, Sagar Society
- Hyderabad AP 500034
- IN
+F0-13-C1 (hex) Hannto Technology Co., Ltd
+F013C1 (base 16) Hannto Technology Co., Ltd
+ Rm 704,No.1,Lane 88,Shengrong Road, Free Trade Pilot Area,
+ Shanghai Shanghai 200120
+ CN
F8-0D-AC (hex) HP Inc.
F80DAC (base 16) HP Inc.
@@ -34148,11 +34130,17 @@ F80DAC (base 16) HP Inc.
Spring TX 77389
US
-00-60-65 (hex) B&R Industrial Automation GmbH
-006065 (base 16) B&R Industrial Automation GmbH
- B&R Straße 1
- Eggelsberg 5142
- AT
+88-DA-1A (hex) Redpine Signals, Inc.
+88DA1A (base 16) Redpine Signals, Inc.
+ Plot 87, Sagar Society
+ Hyderabad AP 500034
+ IN
+
+40-B5-C1 (hex) Cisco Systems, Inc
+40B5C1 (base 16) Cisco Systems, Inc
+ 80 West Tasman Drive
+ San Jose CA 94568
+ US
E4-47-91 (hex) Iris ID Systems, Inc.
E44791 (base 16) Iris ID Systems, Inc.
@@ -34160,46 +34148,58 @@ E44791 (base 16) Iris ID Systems, Inc.
Cranbury 08512
US
-F0-13-C1 (hex) Hannto Technology Co., Ltd
-F013C1 (base 16) Hannto Technology Co., Ltd
- Rm 704,No.1,Lane 88,Shengrong Road, Free Trade Pilot Area,
- Shanghai Shanghai 200120
+00-60-65 (hex) B&R Industrial Automation GmbH
+006065 (base 16) B&R Industrial Automation GmbH
+ B&R Straße 1
+ Eggelsberg 5142
+ AT
+
+84-9D-C2 (hex) Shanghai MXCHIP Information Technology Co., Ltd.
+849DC2 (base 16) Shanghai MXCHIP Information Technology Co., Ltd.
+ 9th Floor, No. 5 Building, 2145 Jinshajiang Rd., Putuo District
+ Shanghai 200333
CN
+18-45-16 (hex) Texas Instruments
+184516 (base 16) Texas Instruments
+ 12500 TI Blvd
+ Dallas TX 75243
+ US
+
D0-2E-AB (hex) Texas Instruments
D02EAB (base 16) Texas Instruments
12500 TI Blvd
Dallas TX 75243
US
-EC-C8-9C (hex) Hangzhou Hikvision Digital Technology Co.,Ltd.
-ECC89C (base 16) Hangzhou Hikvision Digital Technology Co.,Ltd.
- No.555 Qianmo Road
- Hangzhou Zhejiang 310052
- CN
-
84-54-DF (hex) Huawei Device Co., Ltd.
8454DF (base 16) Huawei Device Co., Ltd.
No.2 of Xincheng Road, Songshan Lake Zone
Dongguan Guangdong 523808
CN
-40-B5-C1 (hex) Cisco Systems, Inc
-40B5C1 (base 16) Cisco Systems, Inc
- 80 West Tasman Drive
- San Jose CA 94568
- US
+F0-F7-E7 (hex) HUAWEI TECHNOLOGIES CO.,LTD
+F0F7E7 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
+ CN
-18-45-16 (hex) Texas Instruments
-184516 (base 16) Texas Instruments
- 12500 TI Blvd
- Dallas TX 75243
- US
+8C-55-BB (hex) Songwoo Information & Technology Co., Ltd
+8C55BB (base 16) Songwoo Information & Technology Co., Ltd
+ 24-9, Jinju-daero 404beon-gil, Jinju-si, Gyeongsangnam-do, Korea
+ Jinju Gyeongsangnam-do 52826
+ KR
-84-9D-C2 (hex) Shanghai MXCHIP Information Technology Co., Ltd.
-849DC2 (base 16) Shanghai MXCHIP Information Technology Co., Ltd.
- 9th Floor, No. 5 Building, 2145 Jinshajiang Rd., Putuo District
- Shanghai 200333
+7C-8F-DE (hex) DWnet Technologies(Suzhou) Corporation
+7C8FDE (base 16) DWnet Technologies(Suzhou) Corporation
+ No.8,Tangzhuang Road, Suzhou Industrial Park, Jiangsu, China
+ Suzhou 21500
+ CN
+
+98-F1-81 (hex) New H3C Technologies Co., Ltd
+98F181 (base 16) New H3C Technologies Co., Ltd
+ 466 Changhe Road, Binjiang District
+ Hangzhou Zhejiang 310052
CN
90-80-8F (hex) Huawei Device Co., Ltd.
@@ -34208,12 +34208,6 @@ ECC89C (base 16) Hangzhou Hikvision Digital Technology Co.,Ltd.
Dongguan Guangdong 523808
CN
-F0-F7-E7 (hex) HUAWEI TECHNOLOGIES CO.,LTD
-F0F7E7 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
- Dongguan 523808
- CN
-
40-A9-CF (hex) Amazon Technologies Inc.
40A9CF (base 16) Amazon Technologies Inc.
P.O Box 8102
@@ -34238,23 +34232,23 @@ E8C2DD (base 16) Infinix mobility limited
HongKong HongKong 999077
HK
-8C-55-BB (hex) Songwoo Information & Technology Co., Ltd
-8C55BB (base 16) Songwoo Information & Technology Co., Ltd
- 24-9, Jinju-daero 404beon-gil, Jinju-si, Gyeongsangnam-do, Korea
- Jinju Gyeongsangnam-do 52826
- KR
-
-7C-8F-DE (hex) DWnet Technologies(Suzhou) Corporation
-7C8FDE (base 16) DWnet Technologies(Suzhou) Corporation
- No.8,Tangzhuang Road, Suzhou Industrial Park, Jiangsu, China
- Suzhou 21500
+48-D8-90 (hex) FN-LINK TECHNOLOGY LIMITED
+48D890 (base 16) FN-LINK TECHNOLOGY LIMITED
+ A Building,HuiXin industial park,No 31, YongHe road, Fuyong town, Bao'an District
+ SHENZHEN GUANGDONG 518100
CN
-98-F1-81 (hex) New H3C Technologies Co., Ltd
-98F181 (base 16) New H3C Technologies Co., Ltd
- 466 Changhe Road, Binjiang District
- Hangzhou Zhejiang 310052
- CN
+78-1F-11 (hex) RAB Lighting
+781F11 (base 16) RAB Lighting
+ Northvale (NJ) 141 Legrand Ave. Northvale, NJ 07647
+ Northvale NJ 07647
+ US
+
+F8-B9-5A (hex) LG Innotek
+F8B95A (base 16) LG Innotek
+ 26, Hanamsandan 5beon-ro
+ Gwangju Gwangsan-gu 506-731
+ KR
C4-1C-9C (hex) JiQiDao
C41C9C (base 16) JiQiDao
@@ -34280,42 +34274,6 @@ B4FF98 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
Austin TX 78701
US
-48-D8-90 (hex) FN-LINK TECHNOLOGY LIMITED
-48D890 (base 16) FN-LINK TECHNOLOGY LIMITED
- A Building,HuiXin industial park,No 31, YongHe road, Fuyong town, Bao'an District
- SHENZHEN GUANGDONG 518100
- CN
-
-78-1F-11 (hex) RAB Lighting
-781F11 (base 16) RAB Lighting
- Northvale (NJ) 141 Legrand Ave. Northvale, NJ 07647
- Northvale NJ 07647
- US
-
-C4-18-E9 (hex) Samsung Electronics Co.,Ltd
-C418E9 (base 16) Samsung Electronics Co.,Ltd
- #94-1, Imsoo-Dong
- Gumi Gyeongbuk 730-350
- KR
-
-10-71-00 (hex) Huawei Device Co., Ltd.
-107100 (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
- CN
-
-8C-FD-DE (hex) Sagemcom Broadband SAS
-8CFDDE (base 16) Sagemcom Broadband SAS
- 250, route de l'Empereur
- Rueil Malmaison Cedex hauts de seine 92848
- FR
-
-F8-B9-5A (hex) LG Innotek
-F8B95A (base 16) LG Innotek
- 26, Hanamsandan 5beon-ro
- Gwangju Gwangsan-gu 506-731
- KR
-
00-26-4E (hex) r2p GmbH
00264E (base 16) r2p GmbH
Norderhofenden 12-13
@@ -34331,29 +34289,11 @@ B0BBE5 (base 16) Sagemcom Broadband SAS
90-B4-DD (hex) Private
90B4DD (base 16) Private
-1C-9F-4E (hex) COOSEA GROUP (HK) COMPANY LIMITED
-1C9F4E (base 16) COOSEA GROUP (HK) COMPANY LIMITED
- UNIT 5-6 16/F MULTIFIELD PLAZA 3-7A PRAT AVENUE TSIMSHATSUI
- KL 999077
- HK
-
-BC-5B-D5 (hex) ARRIS Group, Inc.
-BC5BD5 (base 16) ARRIS Group, Inc.
- 6450 Sequence Drive
- San Diego CA 92121
- US
-
-24-11-45 (hex) Xiaomi Communications Co Ltd
-241145 (base 16) Xiaomi Communications Co Ltd
- The Rainbow City of China Resources
- NO.68, Qinghe Middle Street Haidian District, Beijing 100085
- CN
-
-78-95-EB (hex) ITEL MOBILE LIMITED
-7895EB (base 16) ITEL MOBILE LIMITED
- RM B3 & B4 BLOCK B, KO FAI INDUSTRIAL BUILDING NO.7 KO FAI ROAD, YAU TONG, KLN, H.K
- Hong Kong KOWLOON 999077
- HK
+C4-18-E9 (hex) Samsung Electronics Co.,Ltd
+C418E9 (base 16) Samsung Electronics Co.,Ltd
+ #94-1, Imsoo-Dong
+ Gumi Gyeongbuk 730-350
+ KR
1C-E5-7F (hex) Samsung Electronics Co.,Ltd
1CE57F (base 16) Samsung Electronics Co.,Ltd
@@ -34373,11 +34313,17 @@ ECCE13 (base 16) Cisco Systems, Inc
San Jose CA 94568
US
-08-55-31 (hex) Routerboard.com
-085531 (base 16) Routerboard.com
- Mikrotikls SIA
- Riga Riga LV1009
- LV
+10-71-00 (hex) Huawei Device Co., Ltd.
+107100 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+8C-FD-DE (hex) Sagemcom Broadband SAS
+8CFDDE (base 16) Sagemcom Broadband SAS
+ 250, route de l'Empereur
+ Rueil Malmaison Cedex hauts de seine 92848
+ FR
A4-68-BC (hex) Oakley Inc.
A468BC (base 16) Oakley Inc.
@@ -34385,29 +34331,29 @@ A468BC (base 16) Oakley Inc.
Foothill Ranch CA 92610
US
-3C-61-05 (hex) Espressif Inc.
-3C6105 (base 16) Espressif Inc.
- Room 204, Building 2, 690 Bibo Rd, Pudong New Area
- Shanghai Shanghai 201203
- CN
-
60-7E-A4 (hex) Shanghai Imilab Technology Co.Ltd
607EA4 (base 16) Shanghai Imilab Technology Co.Ltd
29F, A Tower, New Caohejing International Business Center, Guiping Road, Xuhui District
Shanghai Shanghai 200000
CN
-24-06-AA (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
-2406AA (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
- NO.18 HAIBIN ROAD,
- DONG GUAN GUANG DONG 523860
+24-11-45 (hex) Xiaomi Communications Co Ltd
+241145 (base 16) Xiaomi Communications Co Ltd
+ The Rainbow City of China Resources
+ NO.68, Qinghe Middle Street Haidian District, Beijing 100085
CN
-08-65-F0 (hex) JM Zengge Co., Ltd
-0865F0 (base 16) JM Zengge Co., Ltd
- 5/F Torch building, Jinou Road#288, Jianghai District
- Jiangmen Guangdong 529080
- CN
+78-95-EB (hex) ITEL MOBILE LIMITED
+7895EB (base 16) ITEL MOBILE LIMITED
+ RM B3 & B4 BLOCK B, KO FAI INDUSTRIAL BUILDING NO.7 KO FAI ROAD, YAU TONG, KLN, H.K
+ Hong Kong KOWLOON 999077
+ HK
+
+1C-9F-4E (hex) COOSEA GROUP (HK) COMPANY LIMITED
+1C9F4E (base 16) COOSEA GROUP (HK) COMPANY LIMITED
+ UNIT 5-6 16/F MULTIFIELD PLAZA 3-7A PRAT AVENUE TSIMSHATSUI
+ KL 999077
+ HK
14-AB-02 (hex) HUAWEI TECHNOLOGIES CO.,LTD
14AB02 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
@@ -34415,22 +34361,40 @@ A468BC (base 16) Oakley Inc.
Dongguan 523808
CN
+BC-5B-D5 (hex) ARRIS Group, Inc.
+BC5BD5 (base 16) ARRIS Group, Inc.
+ 6450 Sequence Drive
+ San Diego CA 92121
+ US
+
+08-55-31 (hex) Routerboard.com
+085531 (base 16) Routerboard.com
+ Mikrotikls SIA
+ Riga Riga LV1009
+ LV
+
+3C-61-05 (hex) Espressif Inc.
+3C6105 (base 16) Espressif Inc.
+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area
+ Shanghai Shanghai 201203
+ CN
+
+24-06-AA (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+2406AA (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+ NO.18 HAIBIN ROAD,
+ DONG GUAN GUANG DONG 523860
+ CN
+
84-30-95 (hex) Hon Hai Precision IND.CO.,LTD
843095 (base 16) Hon Hai Precision IND.CO.,LTD
No. 66 Chung Shan Road TU-Cheng Industrial district TAIPEI TAIWAN
TAIPEI TAIWAN 33859
CN
-00-8A-55 (hex) Huawei Device Co., Ltd.
-008A55 (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
- CN
-
-64-A2-8A (hex) Huawei Device Co., Ltd.
-64A28A (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
+08-65-F0 (hex) JM Zengge Co., Ltd
+0865F0 (base 16) JM Zengge Co., Ltd
+ 5/F Torch building, Jinou Road#288, Jianghai District
+ Jiangmen Guangdong 529080
CN
AC-47-1B (hex) Huawei Device Co., Ltd.
@@ -34439,12 +34403,6 @@ AC471B (base 16) Huawei Device Co., Ltd.
Dongguan Guangdong 523808
CN
-4C-20-B8 (hex) Apple, Inc.
-4C20B8 (base 16) Apple, Inc.
- 1 Infinite Loop
- Cupertino CA 95014
- US
-
00-31-92 (hex) TP-Link Corporation Limited
003192 (base 16) TP-Link Corporation Limited
Room 901,9/F.New East Ocean Centre, 9 Science Museum Road
@@ -34475,10 +34433,34 @@ A4CCB9 (base 16) Realme Chongqing Mobile Telecommunications Corp.,Ltd.
shenzhen guangdong 518057
CN
-EC-0D-E4 (hex) Amazon Technologies Inc.
-EC0DE4 (base 16) Amazon Technologies Inc.
- P.O Box 8102
- Reno NV 89507
+00-8A-55 (hex) Huawei Device Co., Ltd.
+008A55 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+64-A2-8A (hex) Huawei Device Co., Ltd.
+64A28A (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+B4-56-E3 (hex) Apple, Inc.
+B456E3 (base 16) Apple, Inc.
+ 1 Infinite Loop
+ Cupertino CA 95014
+ US
+
+4C-20-B8 (hex) Apple, Inc.
+4C20B8 (base 16) Apple, Inc.
+ 1 Infinite Loop
+ Cupertino CA 95014
+ US
+
+14-88-E6 (hex) Apple, Inc.
+1488E6 (base 16) Apple, Inc.
+ 1 Infinite Loop
+ Cupertino CA 95014
US
BC-0F-9A (hex) D-Link International
@@ -34505,18 +34487,6 @@ B04530 (base 16) BSkyB Ltd
Fort Lauderdale FL 33301
US
-B4-56-E3 (hex) Apple, Inc.
-B456E3 (base 16) Apple, Inc.
- 1 Infinite Loop
- Cupertino CA 95014
- US
-
-14-88-E6 (hex) Apple, Inc.
-1488E6 (base 16) Apple, Inc.
- 1 Infinite Loop
- Cupertino CA 95014
- US
-
24-64-9F (hex) Huawei Device Co., Ltd.
24649F (base 16) Huawei Device Co., Ltd.
No.2 of Xincheng Road, Songshan Lake Zone
@@ -34583,11 +34553,11 @@ E81E92 (base 16) Huawei Device Co., Ltd.
Osaki Miyagi-pref 989-6181
JP
-BC-42-8C (hex) ALPSALPINE CO,.LTD
-BC428C (base 16) ALPSALPINE CO,.LTD
- nishida 6-1
- Kakuda-City Miyagi-Pref 981-1595
- JP
+88-23-8C (hex) Fiberhome Telecommunication Technologies Co.,LTD
+88238C (base 16) Fiberhome Telecommunication Technologies Co.,LTD
+ No.5 DongXin Road
+ Wuhan Hubei 430074
+ CN
20-FF-36 (hex) IFLYTEK CO.,LTD.
20FF36 (base 16) IFLYTEK CO.,LTD.
@@ -34595,12 +34565,24 @@ BC428C (base 16) ALPSALPINE CO,.LTD
Hefei An hui 230088
CN
+BC-42-8C (hex) ALPSALPINE CO,.LTD
+BC428C (base 16) ALPSALPINE CO,.LTD
+ nishida 6-1
+ Kakuda-City Miyagi-Pref 981-1595
+ JP
+
74-95-EC (hex) ALPSALPINE CO,.LTD
7495EC (base 16) ALPSALPINE CO,.LTD
6-1
Kakuda Miyagi-Pref 981-1595
JP
+98-ED-7E (hex) eero inc.
+98ED7E (base 16) eero inc.
+ 660 3rd Street
+ San Francisco CA 94107
+ US
+
8C-AE-49 (hex) IEEE Registration Authority
8CAE49 (base 16) IEEE Registration Authority
445 Hoes Lane
@@ -34613,10 +34595,16 @@ BC428C (base 16) ALPSALPINE CO,.LTD
Soma-city, Fukushima-pref., 976-8501
JP
-88-23-8C (hex) Fiberhome Telecommunication Technologies Co.,LTD
-88238C (base 16) Fiberhome Telecommunication Technologies Co.,LTD
- No.5 DongXin Road
- Wuhan Hubei 430074
+78-CF-2F (hex) HUAWEI TECHNOLOGIES CO.,LTD
+78CF2F (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
+ CN
+
+A8-3B-5C (hex) HUAWEI TECHNOLOGIES CO.,LTD
+A83B5C (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
CN
B0-EE-7B (hex) Roku, Inc
@@ -34637,23 +34625,17 @@ D83134 (base 16) Roku, Inc
kakuda-City Miyagi-Pref 981-1595
JP
-98-ED-7E (hex) eero inc.
-98ED7E (base 16) eero inc.
- 660 3rd Street
- San Francisco CA 94107
- US
-
10-59-32 (hex) Roku, Inc
105932 (base 16) Roku, Inc
1155 Coleman Ave
San Jose CA 95110
US
-E8-F4-08 (hex) Intel Corporate
-E8F408 (base 16) Intel Corporate
- Lot 8, Jalan Hi-Tech 2/3
- Kulim Kedah 09000
- MY
+A8-CC-6F (hex) HMD Global Oy
+A8CC6F (base 16) HMD Global Oy
+ Bertel Jungin aukio 9
+ Espoo 02600
+ FI
5C-6F-69 (hex) Broadcom Limited
5C6F69 (base 16) Broadcom Limited
@@ -34685,34 +34667,382 @@ E884A5 (base 16) Intel Corporate
Kulim Kedah 09000
MY
-78-CF-2F (hex) HUAWEI TECHNOLOGIES CO.,LTD
-78CF2F (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+E8-F4-08 (hex) Intel Corporate
+E8F408 (base 16) Intel Corporate
+ Lot 8, Jalan Hi-Tech 2/3
+ Kulim Kedah 09000
+ MY
+
+74-8B-29 (hex) Micobiomed
+748B29 (base 16) Micobiomed
+ 54 Changeop-ro
+ 54 Changeop-ro Gyeonggi-do 13449
+ KR
+
+00-25-50 (hex) Riverbed Technology, Inc.
+002550 (base 16) Riverbed Technology, Inc.
+ 680 Folsom St
+ San Francisco CA 94107
+ US
+
+58-B0-FE (hex) Team EPS GmbH
+58B0FE (base 16) Team EPS GmbH
+ Am Herdicksbach 2 - Halle 9
+ Waltrop 45731
+ DE
+
+14-3F-A6 (hex) Sony Home Entertainment&Sound Products Inc
+143FA6 (base 16) Sony Home Entertainment&Sound Products Inc
+ Sony City Osaki 2-10-1 Osaki Shinagawa-ku
+ Tokyo Japan 141-8610
+ JP
+
+F0-FE-E7 (hex) Huawei Device Co., Ltd.
+F0FEE7 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+54-21-1D (hex) Huawei Device Co., Ltd.
+54211D (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+04-49-5D (hex) Huawei Device Co., Ltd.
+04495D (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+44-D4-53 (hex) Sagemcom Broadband SAS
+44D453 (base 16) Sagemcom Broadband SAS
+ 250, route de l'Empereur
+ Rueil Malmaison Cedex hauts de seine 92848
+ FR
+
+DC-A1-20 (hex) Nokia
+DCA120 (base 16) Nokia
+ 600 March Road
+ Kanata Ontario K2K 2E6
+ CA
+
+50-52-3B (hex) Nokia
+50523B (base 16) Nokia
+ 600 March Road
+ Kanata Ontario K2K 2E6
+ CA
+
+DC-CD-74 (hex) Japan E.M.Solutions Co., Ltd.
+DCCD74 (base 16) Japan E.M.Solutions Co., Ltd.
+ 35 Saho
+ Kato 673-1447
+ JP
+
+00-12-93 (hex) ABB Power Protection (CH)
+001293 (base 16) ABB Power Protection (CH)
+ 1501 Roanoke Blvd.
+ Salem VA 24153
+ US
+
+A0-3B-01 (hex) Kyung In Electronics
+A03B01 (base 16) Kyung In Electronics
+ #1411, Byucksan Digital Valley 2, 184, Gasan Digital2-ro, Geumcheon-gu
+ Seoul 08501
+ KR
+
+18-18-8B (hex) FUJITSU CONNECTED TECHNOLOGIES LIMITED
+18188B (base 16) FUJITSU CONNECTED TECHNOLOGIES LIMITED
+ Sanki Yamato Building, 7-10-1 Chuorinkan
+ Yamato Kanagawa 242-8588
+ JP
+
+14-5E-69 (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+145E69 (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+ NO.18 HAIBIN ROAD,
+ DONG GUAN GUANG DONG 523860
+ CN
+
+48-4C-29 (hex) HUAWEI TECHNOLOGIES CO.,LTD
+484C29 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
Dongguan 523808
CN
-A8-3B-5C (hex) HUAWEI TECHNOLOGIES CO.,LTD
-A83B5C (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+C4-D4-38 (hex) HUAWEI TECHNOLOGIES CO.,LTD
+C4D438 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
Dongguan 523808
CN
-58-B0-FE (hex) Team EPS GmbH
-58B0FE (base 16) Team EPS GmbH
- Am Herdicksbach 2 - Halle 9
- Waltrop 45731
- DE
+C0-28-0B (hex) Honor Device Co., Ltd.
+C0280B (base 16) Honor Device Co., Ltd.
+ A1701, Block AB, Building 1, Tianan Yungu Phase I, Gangtou Community, Bantian Street
+ Shenzhen Guangdong 518129
+ CN
-A8-CC-6F (hex) HMD Global Oy
-A8CC6F (base 16) HMD Global Oy
- Bertel Jungin aukio 9
- Espoo 02600
- FI
+9C-EA-97 (hex) Honor Device Co., Ltd.
+9CEA97 (base 16) Honor Device Co., Ltd.
+ A1701, Block AB, Building 1, Tianan Yungu Phase I, Gangtou Community, Bantian Street
+ Shenzhen Guangdong 518129
+ CN
-00-25-50 (hex) Riverbed Technology, Inc.
-002550 (base 16) Riverbed Technology, Inc.
- 680 Folsom St
- San Francisco CA 94107
+EC-0D-E4 (hex) Amazon Technologies Inc.
+EC0DE4 (base 16) Amazon Technologies Inc.
+ P.O Box 8102
+ Reno NV 89507
+ US
+
+0C-96-CD (hex) MERCURY CORPORATION
+0C96CD (base 16) MERCURY CORPORATION
+ 90, Gajaeul-ro, Seo-gu
+ INCHEON 22830
+ KR
+
+E8-D2-FF (hex) Sagemcom Broadband SAS
+E8D2FF (base 16) Sagemcom Broadband SAS
+ 250, route de l'Empereur
+ Rueil Malmaison Cedex hauts de seine 92848
+ FR
+
+C4-E2-87 (hex) HUAWEI TECHNOLOGIES CO.,LTD
+C4E287 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
+ CN
+
+F4-B3-01 (hex) Intel Corporate
+F4B301 (base 16) Intel Corporate
+ Lot 8, Jalan Hi-Tech 2/3
+ Kulim Kedah 09000
+ MY
+
+5C-DE-34 (hex) SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.
+5CDE34 (base 16) SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.
+ 3/F, Building R1-B, High-Tech Industrial Park, Nanshan District
+ Shenzhen Guangdong 518057
+ CN
+
+E8-A0-CD (hex) Nintendo Co.,Ltd
+E8A0CD (base 16) Nintendo Co.,Ltd
+ 11-1 HOKOTATE-CHO KAMITOBA,MINAMI-KU
+ KYOTO KYOTO 601-8501
+ JP
+
+A0-A3-F0 (hex) D-Link International
+A0A3F0 (base 16) D-Link International
+ 1 Internal Business Park, #03-12,The Synergy
+ Singapore Singapore 609917
+ SG
+
+84-65-69 (hex) New H3C Technologies Co., Ltd
+846569 (base 16) New H3C Technologies Co., Ltd
+ 466 Changhe Road, Binjiang District
+ Hangzhou Zhejiang 310052
+ CN
+
+34-F7-16 (hex) TP-LINK TECHNOLOGIES CO.,LTD.
+34F716 (base 16) TP-LINK TECHNOLOGIES CO.,LTD.
+ Building 24(floors 1,3,4,5)and 28(floors 1-4)Central Science and Technology Park,Shennan Road,Nanshan
+ Shenzhen Guangdong 518057
+ CN
+
+9C-82-3F (hex) Huawei Device Co., Ltd.
+9C823F (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+54-F6-07 (hex) Huawei Device Co., Ltd.
+54F607 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+68-78-48 (hex) WESTUNITIS CO., LTD.
+687848 (base 16) WESTUNITIS CO., LTD.
+ 29F Grand Front Osaka Tower-A, 4-20, Ofukacho,
+ Osaka Kita-ku 530-0011
+ JP
+
+08-FF-24 (hex) Shenzhen Skyworth Digital Technology CO., Ltd
+08FF24 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd
+ 4F,Block A, Skyworth?Building,
+ Shenzhen Guangdong 518057
+ CN
+
+50-55-8D (hex) China Mobile IOT Company Limited
+50558D (base 16) China Mobile IOT Company Limited
+ NO.8 Yu Ma Road, NanAn Area
+ Chongqing Chongqing 401336
+ CN
+
+64-26-56 (hex) Shenzhen Fanweitai Technology Service Co.,Ltd
+642656 (base 16) Shenzhen Fanweitai Technology Service Co.,Ltd
+ Room 408, 4 / F, Jinqi Zhigu Building, 1 Tangling Road, Nanshan District, Shenzhen
+ Shenzhen 518000
+ CN
+
+E0-6C-4E (hex) Shenzhen TINNO Mobile Technology Corp.
+E06C4E (base 16) Shenzhen TINNO Mobile Technology Corp.
+ 4/F, H-3 Building, Qiao Cheng Eastern Industrial Park, Overseas Chinese Town, Shenzhen
+ Shenzhen guangdong 518053
+ CN
+
+F0-25-8E (hex) HUAWEI TECHNOLOGIES CO.,LTD
+F0258E (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
+ CN
+
+9C-74-6F (hex) HUAWEI TECHNOLOGIES CO.,LTD
+9C746F (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
+ CN
+
+64-E0-03 (hex) Hui Zhou Gaoshengda Technology Co.,LTD
+64E003 (base 16) Hui Zhou Gaoshengda Technology Co.,LTD
+ No.75,Zhongkai High-Tech Development District,Huizhou
+ Hui Zhou Guangdong 516006
+ CN
+
+18-CE-94 (hex) Samsung Electronics Co.,Ltd
+18CE94 (base 16) Samsung Electronics Co.,Ltd
+ #94-1, Imsoo-Dong
+ Gumi Gyeongbuk 730-350
+ KR
+
+78-37-16 (hex) Samsung Electronics Co.,Ltd
+783716 (base 16) Samsung Electronics Co.,Ltd
+ #94-1, Imsoo-Dong
+ Gumi Gyeongbuk 730-350
+ KR
+
+28-1B-04 (hex) Zalliant LLC
+281B04 (base 16) Zalliant LLC
+ 425 Truax Road
+ Amsterdam NY 12010
+ US
+
+7C-50-79 (hex) Intel Corporate
+7C5079 (base 16) Intel Corporate
+ Lot 8, Jalan Hi-Tech 2/3
+ Kulim Kedah 09000
+ MY
+
+80-38-FB (hex) Intel Corporate
+8038FB (base 16) Intel Corporate
+ Lot 8, Jalan Hi-Tech 2/3
+ Kulim Kedah 09000
+ MY
+
+08-B4-B1 (hex) Google, Inc.
+08B4B1 (base 16) Google, Inc.
+ 1600 Amphitheatre Parkway
+ Mountain View CA 94043
+ US
+
+34-58-7C (hex) MIRAE INFORMATION TECHNOLOGY CO., LTD.
+34587C (base 16) MIRAE INFORMATION TECHNOLOGY CO., LTD.
+ GYEONGGI-DO
+ SEONGNAM-SI JUNGWON-GU 13376
+ KR
+
+AC-82-47 (hex) Intel Corporate
+AC8247 (base 16) Intel Corporate
+ Lot 8, Jalan Hi-Tech 2/3
+ Kulim Kedah 09000
+ MY
+
+74-9A-C0 (hex) Cachengo, Inc.
+749AC0 (base 16) Cachengo, Inc.
+ 9575 Hwy 22
+ Huntingdon TN 38344
+ US
+
+0C-51-D0 (hex) Altice Labs S.A.
+0C51D0 (base 16) Altice Labs S.A.
+ NIF 504705610, Rua Eng. José Ferreira Pinto Basto
+ Aveiro 3810-106
+ PT
+
+A4-5E-5A (hex) ACTIVIO Inc.
+A45E5A (base 16) ACTIVIO Inc.
+ Takeuchi Lorie Bldg. Room 503, 1-34-12, Takadanobaba
+ Shinjuku-ku Tokyo 1690075
+ JP
+
+5C-56-A4 (hex) Wanan Hongsheng Electronic Co.Ltd
+5C56A4 (base 16) Wanan Hongsheng Electronic Co.Ltd
+ 1st section of industrial pack,Wan'An County,Ji'An City,jiangxi province
+ Wanan China/jiangxi 343800
+ CN
+
+B4-85-E1 (hex) Apple, Inc.
+B485E1 (base 16) Apple, Inc.
+ 1 Infinite Loop
+ Cupertino CA 95014
+ US
+
+0C-19-F8 (hex) Apple, Inc.
+0C19F8 (base 16) Apple, Inc.
+ 1 Infinite Loop
+ Cupertino CA 95014
+ US
+
+50-1F-C6 (hex) Apple, Inc.
+501FC6 (base 16) Apple, Inc.
+ 1 Infinite Loop
+ Cupertino CA 95014
+ US
+
+3C-9B-C6 (hex) Huawei Device Co., Ltd.
+3C9BC6 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+54-09-10 (hex) Apple, Inc.
+540910 (base 16) Apple, Inc.
+ 1 Infinite Loop
+ Cupertino CA 95014
+ US
+
+9C-FC-28 (hex) Apple, Inc.
+9CFC28 (base 16) Apple, Inc.
+ 1 Infinite Loop
+ Cupertino CA 95014
+ US
+
+CC-69-FA (hex) Apple, Inc.
+CC69FA (base 16) Apple, Inc.
+ 1 Infinite Loop
+ Cupertino CA 95014
+ US
+
+10-CE-E9 (hex) Apple, Inc.
+10CEE9 (base 16) Apple, Inc.
+ 1 Infinite Loop
+ Cupertino CA 95014
+ US
+
+0C-8D-DB (hex) Cisco Meraki
+0C8DDB (base 16) Cisco Meraki
+ 500 Terry A. Francois Blvd
+ San Francisco 94158
+ US
+
+CC-03-D9 (hex) Cisco Meraki
+CC03D9 (base 16) Cisco Meraki
+ 500 Terry A. Francois Blvd
+ San Francisco 94158
+ US
+
+00-36-BE (hex) Northwest Towers
+0036BE (base 16) Northwest Towers
+ 12119 NE 99th St, Suite 2000
+ Vancouver WA 98682
US
9C-FF-C2 (hex) AVI Systems GmbH
@@ -35786,12 +36116,6 @@ AC2DA9 (base 16) TECNO MOBILE LIMITED
Hong Kong Hong Kong 999077
HK
-FC-B6-62 (hex) IC Holdings LLC
-FCB662 (base 16) IC Holdings LLC
- 9066 S 300 W
- Sandy UT 84070
- US
-
48-04-9F (hex) ELECOM CO., LTD
48049F (base 16) ELECOM CO., LTD
9FLand Axis Tower.1-1 fushimi machi,4-chome chuoku
@@ -35810,12 +36134,6 @@ C85261 (base 16) ARRIS Group, Inc.
San Diego CA 92121
US
-C0-41-21 (hex) Nokia
-C04121 (base 16) Nokia
- Karaportti 3
- Espoo Finland 02610
- FI
-
74-88-BB (hex) Cisco Systems, Inc
7488BB (base 16) Cisco Systems, Inc
80 West Tasman Drive
@@ -35876,12 +36194,6 @@ F46F4E (base 16) Echowell
New Taipei City 24872
TW
-2C-3F-0B (hex) Cisco Meraki
-2C3F0B (base 16) Cisco Meraki
- 500 Terry A. Francois Blvd
- San Francisco null 94158
- US
-
5C-88-16 (hex) Rockwell Automation
5C8816 (base 16) Rockwell Automation
1 Allen-Bradley Dr.
@@ -36785,12 +37097,6 @@ A4ED43 (base 16) IEEE Registration Authority
San Jose CA 94568
US
-0C-7C-28 (hex) Nokia
-0C7C28 (base 16) Nokia
- Karaportti 3
- Espoo Finland 02610
- FI
-
68-43-D7 (hex) Agilecom Photonics Solutions Guangdong Limited
6843D7 (base 16) Agilecom Photonics Solutions Guangdong Limited
No.1-6, Shenwan Industrial Park, Shenwan Town
@@ -38327,12 +38633,6 @@ D896E0 (base 16) Alibaba Cloud Computing Ltd.
Dallas TX 75243
US
-20-78-52 (hex) Nokia
-207852 (base 16) Nokia
- Karaportti 3
- Espoo Finland 02610
- FI
-
C8-DE-C9 (hex) Coriant
C8DEC9 (base 16) Coriant
1415 W. Diehl Rd
@@ -39935,12 +40235,6 @@ E4E4AB (base 16) Apple, Inc.
Logrono La Rioja 26001
ES
-54-FA-96 (hex) Nokia
-54FA96 (base 16) Nokia
- Karaportti 3
- Espoo Finland 02610
- FI
-
60-33-4B (hex) Apple, Inc.
60334B (base 16) Apple, Inc.
1 Infinite Loop
@@ -53747,12 +54041,6 @@ D4AAFF (base 16) MICRO WORLD
Daejeon 305-510
KR
-00-1F-F5 (hex) Kongsberg Defence & Aerospace
-001FF5 (base 16) Kongsberg Defence & Aerospace
- Olav Brunborgs vei 6
- Billingstad 1396
- NO
-
00-1F-F2 (hex) VIA Technologies, Inc.
001FF2 (base 16) VIA Technologies, Inc.
1F, 531, Chung-Cheng Road
@@ -57761,12 +58049,6 @@ D4AAFF (base 16) MICRO WORLD
Dresden Sachsen 01097
DE
-00-0F-A0 (hex) CANON KOREA BUSINESS SOLUTIONS INC.
-000FA0 (base 16) CANON KOREA BUSINESS SOLUTIONS INC.
- 736 Wonsi-Dong
- Ansan-si Kyunggi-do 425-090
- KR
-
00-0F-9A (hex) Synchrony, Inc.
000F9A (base 16) Synchrony, Inc.
6410 Commonwealth Drive
@@ -66422,24 +66704,24 @@ B0B353 (base 16) IEEE Registration Authority
Mill Valley CA 94941
US
+7C-DF-A1 (hex) Espressif Inc.
+7CDFA1 (base 16) Espressif Inc.
+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area
+ Shanghai Shanghai 201203
+ CN
+
+98-00-6A (hex) zte corporation
+98006A (base 16) zte corporation
+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China
+ shenzhen guangdong 518057
+ CN
+
00-26-74 (hex) Hunter Douglas
002674 (base 16) Hunter Douglas
One Duette Way
Broomfield CO 80020
US
-FC-E1-4F (hex) BRK Brands, Inc.
-FCE14F (base 16) BRK Brands, Inc.
- 3901 Liberty Street
- Aurora IL 60504
- US
-
-88-96-55 (hex) Zitte corporation
-889655 (base 16) Zitte corporation
- 4F Yokohama Kusunoki-cho Building,4-7 Kusunoki-cho,Nishi-ku
- Yokohama Kanagawa 2200003
- JP
-
1C-97-C5 (hex) Ynomia Pty Ltd
1C97C5 (base 16) Ynomia Pty Ltd
153 Tooronga Rd
@@ -66458,17 +66740,11 @@ FCE14F (base 16) BRK Brands, Inc.
shenzhen guangdong 518000
CN
-98-00-6A (hex) zte corporation
-98006A (base 16) zte corporation
- 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China
- shenzhen guangdong 518057
- CN
-
-7C-DF-A1 (hex) Espressif Inc.
-7CDFA1 (base 16) Espressif Inc.
- Room 204, Building 2, 690 Bibo Rd, Pudong New Area
- Shanghai Shanghai 201203
- CN
+88-96-55 (hex) Zitte corporation
+889655 (base 16) Zitte corporation
+ 4F Yokohama Kusunoki-cho Building,4-7 Kusunoki-cho,Nishi-ku
+ Yokohama Kanagawa 2200003
+ JP
F4-A4-D6 (hex) HUAWEI TECHNOLOGIES CO.,LTD
F4A4D6 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
@@ -66476,30 +66752,18 @@ F4A4D6 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
Dongguan 523808
CN
+FC-E1-4F (hex) BRK Brands, Inc.
+FCE14F (base 16) BRK Brands, Inc.
+ 3901 Liberty Street
+ Aurora IL 60504
+ US
+
74-B6-B6 (hex) eero inc.
74B6B6 (base 16) eero inc.
660 3rd Street
San Francisco CA 94107
US
-84-2E-14 (hex) Silicon Laboratories
-842E14 (base 16) Silicon Laboratories
- 7000 W. William Cannon Dr.
- Austin TX 78735
- US
-
-44-10-FE (hex) Huizhou Foryou General Electronics Co., Ltd.
-4410FE (base 16) Huizhou Foryou General Electronics Co., Ltd.
- North Shangxia Road, Dongjiang Hi-tech Industry Park
- Huizhou Guangdong 516000
- CN
-
-EC-31-6D (hex) Hansgrohe
-EC316D (base 16) Hansgrohe
- Auestraße 5-9
- Schiltach 77761
- DE
-
EC-97-B2 (hex) SUMEC Machinery & Electric Co.,Ltd.
EC97B2 (base 16) SUMEC Machinery & Electric Co.,Ltd.
198# ChangJiang Road, XuanWu District, 17F, SUMEC Building
@@ -66512,6 +66776,18 @@ EC97B2 (base 16) SUMEC Machinery & Electric Co.,Ltd.
Shenzhen GuangDong 518000
CN
+84-2E-14 (hex) Silicon Laboratories
+842E14 (base 16) Silicon Laboratories
+ 7000 W. William Cannon Dr.
+ Austin TX 78735
+ US
+
+10-05-E1 (hex) Nokia
+1005E1 (base 16) Nokia
+ 600 March Road
+ Kanata Ontario K2K 2E6
+ CA
+
08-F4-58 (hex) Huawei Device Co., Ltd.
08F458 (base 16) Huawei Device Co., Ltd.
No.2 of Xincheng Road, Songshan Lake Zone
@@ -66530,23 +66806,23 @@ EC97B2 (base 16) SUMEC Machinery & Electric Co.,Ltd.
Odawara Kanagawa 250-0011
JP
-10-05-E1 (hex) Nokia
-1005E1 (base 16) Nokia
- 600 March Road
- Kanata Ontario K2K 2E6
- CA
-
6C-D9-4C (hex) vivo Mobile Communication Co., Ltd.
6CD94C (base 16) vivo Mobile Communication Co., Ltd.
#283,BBK Road
Wusha,Chang'An DongGuan City,Guangdong, 523860
CN
-AC-1E-D0 (hex) Temic Automotive Philippines Inc.
-AC1ED0 (base 16) Temic Automotive Philippines Inc.
- Bagsakan Road, FTI estate
- Taguig 1630
- PH
+EC-31-6D (hex) Hansgrohe
+EC316D (base 16) Hansgrohe
+ Auestraße 5-9
+ Schiltach 77761
+ DE
+
+44-10-FE (hex) Huizhou Foryou General Electronics Co., Ltd.
+4410FE (base 16) Huizhou Foryou General Electronics Co., Ltd.
+ North Shangxia Road, Dongjiang Hi-tech Industry Park
+ Huizhou Guangdong 516000
+ CN
7C-AB-60 (hex) Apple, Inc.
7CAB60 (base 16) Apple, Inc.
@@ -66596,42 +66872,18 @@ D03FAA (base 16) Apple, Inc.
North Point Hong Kong 180
HK
-DC-35-F1 (hex) Positivo Tecnologia S.A.
-DC35F1 (base 16) Positivo Tecnologia S.A.
- João Bettega, 5200
- Curitiba Paraná 81350-000
- BR
-
D4-DC-09 (hex) Mist Systems, Inc.
D4DC09 (base 16) Mist Systems, Inc.
1601 South De Anza Blvd, Suite 248
Cupertino CA 95014
US
-E8-E9-8E (hex) SOLAR controls s.r.o.
-E8E98E (base 16) SOLAR controls s.r.o.
- Brojova 25
- Plzen 32600
- CZ
-
00-88-BA (hex) NC&C
0088BA (base 16) NC&C
Gurogu
Seoul 08390
KR
-40-2B-69 (hex) Kumho Electric Inc.
-402B69 (base 16) Kumho Electric Inc.
- 309, Bongmu-ro, Namsa-myeon, Cheoin-gu
- Yongin-si Gyeonggi-do 17118
- KR
-
-64-F6-BB (hex) Fibocom Wireless Inc.
-64F6BB (base 16) Fibocom Wireless Inc.
- 5/F,TowerA,Technology Building 2,1057 Nanhai Blvd, Nanshan
- Shenzhen 518000 Guangdong
- CN
-
F4-73-35 (hex) Logitech Far East
F47335 (base 16) Logitech Far East
#2 Creation Rd. 4,
@@ -66644,17 +66896,29 @@ F47335 (base 16) Logitech Far East
Seoul Seoul 05510
KR
-A4-CF-D2 (hex) Ubee Interactive Co., Limited
-A4CFD2 (base 16) Ubee Interactive Co., Limited
- Flat/RM 1202, 12/F, AT Tower, 180 Electric Road
- North Point 00000
- HK
+5C-A6-2D (hex) Cisco Systems, Inc
+5CA62D (base 16) Cisco Systems, Inc
+ 80 West Tasman Drive
+ San Jose CA 94568
+ US
-A8-A0-97 (hex) ScioTeq bvba
-A8A097 (base 16) ScioTeq bvba
- President Kennedypark 35A
- Kortrijk 8500
- BE
+40-2B-69 (hex) Kumho Electric Inc.
+402B69 (base 16) Kumho Electric Inc.
+ 309, Bongmu-ro, Namsa-myeon, Cheoin-gu
+ Yongin-si Gyeonggi-do 17118
+ KR
+
+E8-E9-8E (hex) SOLAR controls s.r.o.
+E8E98E (base 16) SOLAR controls s.r.o.
+ Brojova 25
+ Plzen 32600
+ CZ
+
+64-F6-BB (hex) Fibocom Wireless Inc.
+64F6BB (base 16) Fibocom Wireless Inc.
+ 5/F,TowerA,Technology Building 2,1057 Nanhai Blvd, Nanshan
+ Shenzhen 518000 Guangdong
+ CN
BC-16-95 (hex) zte corporation
BC1695 (base 16) zte corporation
@@ -66662,16 +66926,28 @@ BC1695 (base 16) zte corporation
shenzhen guangdong 518057
CN
+DC-35-F1 (hex) Positivo Tecnologia S.A.
+DC35F1 (base 16) Positivo Tecnologia S.A.
+ João Bettega, 5200
+ Curitiba Paraná 81350-000
+ BR
+
A4-08-01 (hex) Amazon Technologies Inc.
A40801 (base 16) Amazon Technologies Inc.
P.O Box 8102
Reno NV 89507
US
-5C-A6-2D (hex) Cisco Systems, Inc
-5CA62D (base 16) Cisco Systems, Inc
- 80 West Tasman Drive
- San Jose CA 94568
+AC-1E-D0 (hex) Temic Automotive Philippines Inc.
+AC1ED0 (base 16) Temic Automotive Philippines Inc.
+ Bagsakan Road, FTI estate
+ Taguig 1630
+ PH
+
+2C-EA-7F (hex) Dell Inc.
+2CEA7F (base 16) Dell Inc.
+ One Dell Way
+ Round Rock TX 78682
US
34-51-80 (hex) TCL King Electrical Appliances (Huizhou) Co., Ltd
@@ -66680,35 +66956,17 @@ A40801 (base 16) Amazon Technologies Inc.
Shenzhen Guangdong 518052
CN
-B8-E3-B1 (hex) HUAWEI TECHNOLOGIES CO.,LTD
-B8E3B1 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
- Dongguan 523808
- CN
-
-98-0D-51 (hex) Huawei Device Co., Ltd.
-980D51 (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
- CN
-
-00-AD-D5 (hex) Huawei Device Co., Ltd.
-00ADD5 (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
- CN
-
-3C-B5-3D (hex) HUNAN GOKE MICROELECTRONICS CO.,LTD
-3CB53D (base 16) HUNAN GOKE MICROELECTRONICS CO.,LTD
- No.9, East 10th Road(South), Xingsha, Changsha
- Changsha HUNAN 410131
- CN
+A4-CF-D2 (hex) Ubee Interactive Co., Limited
+A4CFD2 (base 16) Ubee Interactive Co., Limited
+ Flat/RM 1202, 12/F, AT Tower, 180 Electric Road
+ North Point 00000
+ HK
-2C-EA-7F (hex) Dell Inc.
-2CEA7F (base 16) Dell Inc.
- One Dell Way
- Round Rock TX 78682
- US
+A8-A0-97 (hex) ScioTeq bvba
+A8A097 (base 16) ScioTeq bvba
+ President Kennedypark 35A
+ Kortrijk 8500
+ BE
08-6B-D1 (hex) Shenzhen SuperElectron Technology Co.,Ltd.
086BD1 (base 16) Shenzhen SuperElectron Technology Co.,Ltd.
@@ -66722,6 +66980,24 @@ AC3A67 (base 16) Cisco Systems, Inc
San Jose CA 94568
US
+3C-B5-3D (hex) HUNAN GOKE MICROELECTRONICS CO.,LTD
+3CB53D (base 16) HUNAN GOKE MICROELECTRONICS CO.,LTD
+ No.9, East 10th Road(South), Xingsha, Changsha
+ Changsha HUNAN 410131
+ CN
+
+98-0D-51 (hex) Huawei Device Co., Ltd.
+980D51 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+00-AD-D5 (hex) Huawei Device Co., Ltd.
+00ADD5 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
90-5D-7C (hex) New H3C Technologies Co., Ltd
905D7C (base 16) New H3C Technologies Co., Ltd
466 Changhe Road, Binjiang District
@@ -66740,11 +67016,11 @@ AC3A67 (base 16) Cisco Systems, Inc
Tsim Sha Tsui Kowloon 999077
HK
-EC-79-49 (hex) FUJITSU LIMITED
-EC7949 (base 16) FUJITSU LIMITED
- 403, Kosugi-cho 1-chome, Nakahara-ku
- Kawasaki Kanagawa 211-0063
- JP
+B8-E3-B1 (hex) HUAWEI TECHNOLOGIES CO.,LTD
+B8E3B1 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
+ CN
00-B7-A8 (hex) Heinzinger electronic GmbH
00B7A8 (base 16) Heinzinger electronic GmbH
@@ -66752,6 +67028,12 @@ EC7949 (base 16) FUJITSU LIMITED
Rosenheim BY 83026
DE
+EC-79-49 (hex) FUJITSU LIMITED
+EC7949 (base 16) FUJITSU LIMITED
+ 403, Kosugi-cho 1-chome, Nakahara-ku
+ Kawasaki Kanagawa 211-0063
+ JP
+
D4-D2-D6 (hex) FN-LINK TECHNOLOGY LIMITED
D4D2D6 (base 16) FN-LINK TECHNOLOGY LIMITED
A Building,HuiXin industial park,No 31, YongHe road, Fuyong town, Bao'an District
@@ -66764,24 +67046,6 @@ D4D2D6 (base 16) FN-LINK TECHNOLOGY LIMITED
Miao-Lih Hsuan 115
TW
-28-54-71 (hex) Huawei Device Co., Ltd.
-285471 (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
- CN
-
-B8-8E-82 (hex) Huawei Device Co., Ltd.
-B88E82 (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
- CN
-
-DC-33-3D (hex) Huawei Device Co., Ltd.
-DC333D (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
- CN
-
90-0A-84 (hex) Mellanox Technologies, Inc.
900A84 (base 16) Mellanox Technologies, Inc.
350 Oakmead Parkway, Suite 100
@@ -66806,18 +67070,6 @@ AC4A67 (base 16) Cisco Systems, Inc
Charlottesville VA 22911
US
-D8-78-7F (hex) Ubee Interactive Co., Limited
-D8787F (base 16) Ubee Interactive Co., Limited
- Flat/RM 1202, 12/F, AT Tower, 180 Electric Road
- North Point 00000
- HK
-
-BC-F3-10 (hex) Extreme Networks, Inc.
-BCF310 (base 16) Extreme Networks, Inc.
- 1011 McCarthy Blvd
- Milpitas CA 95035
- US
-
C8-66-5D (hex) Extreme Networks, Inc.
C8665D (base 16) Extreme Networks, Inc.
1011 McCarthy Blvd
@@ -66836,14 +67088,44 @@ D854A2 (base 16) Extreme Networks, Inc.
Milpitas CA 95035
US
-D4-1D-71 (hex) Palo Alto Networks
-D41D71 (base 16) Palo Alto Networks
+08-66-1F (hex) Palo Alto Networks
+08661F (base 16) Palo Alto Networks
3000 Tannery Way
Santa Clara CA 95054
US
-08-66-1F (hex) Palo Alto Networks
-08661F (base 16) Palo Alto Networks
+BC-F3-10 (hex) Extreme Networks, Inc.
+BCF310 (base 16) Extreme Networks, Inc.
+ 1011 McCarthy Blvd
+ Milpitas CA 95035
+ US
+
+28-54-71 (hex) Huawei Device Co., Ltd.
+285471 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+B8-8E-82 (hex) Huawei Device Co., Ltd.
+B88E82 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+DC-33-3D (hex) Huawei Device Co., Ltd.
+DC333D (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+D8-78-7F (hex) Ubee Interactive Co., Limited
+D8787F (base 16) Ubee Interactive Co., Limited
+ Flat/RM 1202, 12/F, AT Tower, 180 Electric Road
+ North Point 00000
+ HK
+
+D4-1D-71 (hex) Palo Alto Networks
+D41D71 (base 16) Palo Alto Networks
3000 Tannery Way
Santa Clara CA 95054
US
@@ -66902,30 +67184,6 @@ C4A402 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
San Diego CA 92121
US
-9C-BD-6E (hex) DERA Co., Ltd
-9CBD6E (base 16) DERA Co., Ltd
- Zhichun road NO7 Building B Room1203 Haidian District
- Beijing 100191
- CN
-
-4C-33-29 (hex) Sweroam
-4C3329 (base 16) Sweroam
- Stortorget 16
- Orebro N/A 70211
- SE
-
-48-8F-5A (hex) Routerboard.com
-488F5A (base 16) Routerboard.com
- Mikrotikls SIA
- Riga Riga LV1009
- LV
-
-10-06-45 (hex) Sagemcom Broadband SAS
-100645 (base 16) Sagemcom Broadband SAS
- 250, route de l'Empereur
- Rueil Malmaison Cedex hauts de seine 92848
- FR
-
68-33-2C (hex) KENSTEL NETWORKS LIMITED
68332C (base 16) KENSTEL NETWORKS LIMITED
34D SECTOR 57 HSIIDC INDUSTRIAL AREA PHASE 4
@@ -66938,12 +67196,6 @@ C4A402 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
Cambridge CAMBRIDGESHIRE CB3 0AX
GB
-AC-67-B2 (hex) Espressif Inc.
-AC67B2 (base 16) Espressif Inc.
- Room 204, Building 2, 690 Bibo Rd, Pudong New Area
- Shanghai Shanghai 201203
- CN
-
70-61-7B (hex) Cisco Systems, Inc
70617B (base 16) Cisco Systems, Inc
80 West Tasman Drive
@@ -66956,17 +67208,23 @@ AC67B2 (base 16) Espressif Inc.
Milano MI 20132
IT
-C4-89-ED (hex) Solid Optics EU N.V.
-C489ED (base 16) Solid Optics EU N.V.
- De Huchtstraat 35
- Almere Flevoland 1327 EC
- NL
+AC-67-B2 (hex) Espressif Inc.
+AC67B2 (base 16) Espressif Inc.
+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area
+ Shanghai Shanghai 201203
+ CN
-58-A8-7B (hex) Fitbit, Inc.
-58A87B (base 16) Fitbit, Inc.
- 199 Fremont Street, 14th Fl
- San Francisco CA 94105
- US
+9C-BD-6E (hex) DERA Co., Ltd
+9CBD6E (base 16) DERA Co., Ltd
+ Zhichun road NO7 Building B Room1203 Haidian District
+ Beijing 100191
+ CN
+
+4C-33-29 (hex) Sweroam
+4C3329 (base 16) Sweroam
+ Stortorget 16
+ Orebro N/A 70211
+ SE
64-E1-72 (hex) Shenzhen Qihoo Intelligent Technology Co.,Ltd
64E172 (base 16) Shenzhen Qihoo Intelligent Technology Co.,Ltd
@@ -66974,6 +67232,24 @@ C489ED (base 16) Solid Optics EU N.V.
Shenzhen Guangdong 5181000
CN
+48-8F-5A (hex) Routerboard.com
+488F5A (base 16) Routerboard.com
+ Mikrotikls SIA
+ Riga Riga LV1009
+ LV
+
+10-06-45 (hex) Sagemcom Broadband SAS
+100645 (base 16) Sagemcom Broadband SAS
+ 250, route de l'Empereur
+ Rueil Malmaison Cedex hauts de seine 92848
+ FR
+
+00-14-C9 (hex) Brocade Communications Systems LLC
+0014C9 (base 16) Brocade Communications Systems LLC
+ 1320 Ridder Park Dr
+ San Jose CA 95131
+ US
+
00-24-38 (hex) Brocade Communications Systems LLC
002438 (base 16) Brocade Communications Systems LLC
1320 Ridder Park Dr
@@ -67010,23 +67286,17 @@ F84DFC (base 16) Hangzhou Hikvision Digital Technology Co.,Ltd.
Hangzhou Zhejiang 310052
CN
-64-E8-81 (hex) Aruba, a Hewlett Packard Enterprise Company
-64E881 (base 16) Aruba, a Hewlett Packard Enterprise Company
- 3333 Scott Blvd
- Santa Clara CA 95054
- US
-
D8-1F-CC (hex) Brocade Communications Systems LLC
D81FCC (base 16) Brocade Communications Systems LLC
1320 Ridder Park Dr
San Jose CA 95131
US
-98-9D-5D (hex) Technicolor CH USA Inc.
-989D5D (base 16) Technicolor CH USA Inc.
- 5030 Sugarloaf Parkway Bldg 6
- Lawrenceville GA 30044
- US
+C4-89-ED (hex) Solid Optics EU N.V.
+C489ED (base 16) Solid Optics EU N.V.
+ De Huchtstraat 35
+ Almere Flevoland 1327 EC
+ NL
60-F4-3A (hex) Edifier International
60F43A (base 16) Edifier International
@@ -67034,10 +67304,10 @@ D81FCC (base 16) Brocade Communications Systems LLC
Hong Kong 070
CN
-00-14-C9 (hex) Brocade Communications Systems LLC
-0014C9 (base 16) Brocade Communications Systems LLC
- 1320 Ridder Park Dr
- San Jose CA 95131
+58-A8-7B (hex) Fitbit, Inc.
+58A87B (base 16) Fitbit, Inc.
+ 199 Fremont Street, 14th Fl
+ San Francisco CA 94105
US
5C-6B-D7 (hex) Foshan VIOMI Electric Appliance Technology Co. Ltd.
@@ -67052,30 +67322,6 @@ D81FCC (base 16) Brocade Communications Systems LLC
Nagaokakyo-shi Kyoto 617-8555
JP
-80-22-A7 (hex) NEC Platforms, Ltd.
-8022A7 (base 16) NEC Platforms, Ltd.
- 2-3 Kandatsukasamachi
- Chiyodaku Tokyo 101-8532
- JP
-
-5C-23-16 (hex) Squirrels Research Labs LLC
-5C2316 (base 16) Squirrels Research Labs LLC
- 8050 Freedom Ave NW Suite B
- North Canton OH 44720
- US
-
-04-21-44 (hex) Sunitec Enterprise Co.,Ltd
-042144 (base 16) Sunitec Enterprise Co.,Ltd
- 3F.,No.98-1,Mincyuan Rd.Sindian City
- Taipei County 231 231141
- CN
-
-98-80-EE (hex) Samsung Electronics Co.,Ltd
-9880EE (base 16) Samsung Electronics Co.,Ltd
- #94-1, Imsoo-Dong
- Gumi Gyeongbuk 730-350
- KR
-
90-EE-C7 (hex) Samsung Electronics Co.,Ltd
90EEC7 (base 16) Samsung Electronics Co.,Ltd
#94-1, Imsoo-Dong
@@ -67094,6 +67340,36 @@ D81FCC (base 16) Brocade Communications Systems LLC
Gumi Gyeongbuk 730-350
KR
+80-22-A7 (hex) NEC Platforms, Ltd.
+8022A7 (base 16) NEC Platforms, Ltd.
+ 2-3 Kandatsukasamachi
+ Chiyodaku Tokyo 101-8532
+ JP
+
+64-E8-81 (hex) Aruba, a Hewlett Packard Enterprise Company
+64E881 (base 16) Aruba, a Hewlett Packard Enterprise Company
+ 3333 Scott Blvd
+ Santa Clara CA 95054
+ US
+
+98-9D-5D (hex) Technicolor CH USA Inc.
+989D5D (base 16) Technicolor CH USA Inc.
+ 5030 Sugarloaf Parkway Bldg 6
+ Lawrenceville GA 30044
+ US
+
+5C-23-16 (hex) Squirrels Research Labs LLC
+5C2316 (base 16) Squirrels Research Labs LLC
+ 8050 Freedom Ave NW Suite B
+ North Canton OH 44720
+ US
+
+04-21-44 (hex) Sunitec Enterprise Co.,Ltd
+042144 (base 16) Sunitec Enterprise Co.,Ltd
+ 3F.,No.98-1,Mincyuan Rd.Sindian City
+ Taipei County 231 231141
+ CN
+
A0-27-B6 (hex) Samsung Electronics Co.,Ltd
A027B6 (base 16) Samsung Electronics Co.,Ltd
#94-1, Imsoo-Dong
@@ -67106,18 +67382,18 @@ A027B6 (base 16) Samsung Electronics Co.,Ltd
Gumi Gyeongbuk 730-350
KR
+98-80-EE (hex) Samsung Electronics Co.,Ltd
+9880EE (base 16) Samsung Electronics Co.,Ltd
+ #94-1, Imsoo-Dong
+ Gumi Gyeongbuk 730-350
+ KR
+
CC-0D-F2 (hex) Motorola Mobility LLC, a Lenovo Company
CC0DF2 (base 16) Motorola Mobility LLC, a Lenovo Company
222 West Merchandise Mart Plaza
Chicago IL 60654
US
-A8-40-25 (hex) Oxide Computer Company
-A84025 (base 16) Oxide Computer Company
- 1251 Park Avenue
- Emeryville CA 94608
- US
-
94-BF-94 (hex) Juniper Networks
94BF94 (base 16) Juniper Networks
1133 Innovation Way
@@ -67130,22 +67406,10 @@ A84025 (base 16) Oxide Computer Company
Hanover MD 21076
US
-B8-80-4F (hex) Texas Instruments
-B8804F (base 16) Texas Instruments
- 12500 TI Blvd
- Dallas TX 75243
- US
-
-00-12-E3 (hex) Agat Soft LLC
-0012E3 (base 16) Agat Soft LLC
- building 14, stroenie 15, room 7
- Moscow Serebryakova proezd 129343
- RU
-
-00-13-51 (hex) Niles Audio Corporation
-001351 (base 16) Niles Audio Corporation
- 5919 Sea Otter Place
- Carlsbad CA 92010
+A8-40-25 (hex) Oxide Computer Company
+A84025 (base 16) Oxide Computer Company
+ 1251 Park Avenue
+ Emeryville CA 94608
US
10-65-A3 (hex) Panamax LLC
@@ -67154,12 +67418,6 @@ B8804F (base 16) Texas Instruments
Carlsbad CA 92010
US
-FC-A5-D0 (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
-FCA5D0 (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
- NO.18 HAIBIN ROAD,
- DONG GUAN GUANG DONG 523860
- CN
-
C8-5B-A0 (hex) Shenzhen Qihu Intelligent Technology Company Limited
C85BA0 (base 16) Shenzhen Qihu Intelligent Technology Company Limited
Room 201, Block A, No.1, Qianwan Road 1,Qianhai Shenzhen HongKong Modern Service Industry Cooperation Zone
@@ -67184,36 +67442,54 @@ E0BE03 (base 16) Lite-On Network Communication (Dongguan) Limited
Piscataway NJ 08554
US
-18-3C-B7 (hex) Huawei Device Co., Ltd.
-183CB7 (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
- CN
-
98-CB-A4 (hex) Benchmark Electronics
98CBA4 (base 16) Benchmark Electronics
Free Industrial Zone, Phase 1,
Bayan Lepas Penang 11900
MY
+00-12-E3 (hex) Agat Soft LLC
+0012E3 (base 16) Agat Soft LLC
+ building 14, stroenie 15, room 7
+ Moscow Serebryakova proezd 129343
+ RU
+
+00-13-51 (hex) Niles Audio Corporation
+001351 (base 16) Niles Audio Corporation
+ 5919 Sea Otter Place
+ Carlsbad CA 92010
+ US
+
+18-3C-B7 (hex) Huawei Device Co., Ltd.
+183CB7 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
A4-88-73 (hex) Cisco Systems, Inc
A48873 (base 16) Cisco Systems, Inc
80 West Tasman Drive
San Jose CA 94568
US
+B8-80-4F (hex) Texas Instruments
+B8804F (base 16) Texas Instruments
+ 12500 TI Blvd
+ Dallas TX 75243
+ US
+
+FC-A5-D0 (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+FCA5D0 (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+ NO.18 HAIBIN ROAD,
+ DONG GUAN GUANG DONG 523860
+ CN
+
04-CB-88 (hex) Shenzhen Jingxun Software Telecommunication Technology Co.,Ltd
04CB88 (base 16) Shenzhen Jingxun Software Telecommunication Technology Co.,Ltd
3/F,A5 Building Zhiyuan Community No.1001,Xueyuan Road Nanshan District
Shenzhen Guangdong 518055
CN
-24-14-07 (hex) Xiamen Sigmastar Technology Ltd.
-241407 (base 16) Xiamen Sigmastar Technology Ltd.
- 15th Floor ,Unit A,Chuangxin Building, Software Park, Xiamen Torch Hi-Tech Industrial Development Zone, Xiamen,China
- Xiamen Fujian 361005
- CN
-
A0-62-60 (hex) Private
A06260 (base 16) Private
@@ -67247,6 +67523,12 @@ B47947 (base 16) Nutanix
Hsinchu 30077
TW
+38-F0-C8 (hex) Mevo Inc.
+38F0C8 (base 16) Mevo Inc.
+ 19 Morris Avenue
+ Brooklyn NY 11205
+ US
+
5C-FE-9E (hex) Wiwynn Corporation Tainan Branch
5CFE9E (base 16) Wiwynn Corporation Tainan Branch
4F, NO. 8, Beiyuan 3rd Rd., Anding Dist.,
@@ -67265,6 +67547,12 @@ F46942 (base 16) ASKEY COMPUTER CORP
NEW TAIPEI TAIWAN 23585
TW
+24-14-07 (hex) Xiamen Sigmastar Technology Ltd.
+241407 (base 16) Xiamen Sigmastar Technology Ltd.
+ 15th Floor ,Unit A,Chuangxin Building, Software Park, Xiamen Torch Hi-Tech Industrial Development Zone, Xiamen,China
+ Xiamen Fujian 361005
+ CN
+
08-E9-F6 (hex) AMPAK Technology,Inc.
08E9F6 (base 16) AMPAK Technology,Inc.
3F, No.15-1 Zhonghua Road, Hsinchu Industrail Park, Hukou,
@@ -67283,18 +67571,6 @@ CCC261 (base 16) IEEE Registration Authority
Piscataway NJ 08554
US
-38-F0-C8 (hex) Mevo Inc.
-38F0C8 (base 16) Mevo Inc.
- 19 Morris Avenue
- Brooklyn NY 11205
- US
-
-7C-76-35 (hex) Intel Corporate
-7C7635 (base 16) Intel Corporate
- Lot 8, Jalan Hi-Tech 2/3
- Kulim Kedah 09000
- MY
-
74-70-FD (hex) Intel Corporate
7470FD (base 16) Intel Corporate
Lot 8, Jalan Hi-Tech 2/3
@@ -67325,48 +67601,66 @@ C0B6F9 (base 16) Intel Corporate
Kulim Kedah 09000
MY
+48-A4-72 (hex) Intel Corporate
+48A472 (base 16) Intel Corporate
+ Lot 8, Jalan Hi-Tech 2/3
+ Kulim Kedah 09000
+ MY
+
+D8-F2-CA (hex) Intel Corporate
+D8F2CA (base 16) Intel Corporate
+ Lot 8, Jalan Hi-Tech 2/3
+ Kulim Kedah 09000
+ MY
+
+48-F1-7F (hex) Intel Corporate
+48F17F (base 16) Intel Corporate
+ Lot 8, Jalan Hi-Tech 2/3
+ Kulim Kedah 09000
+ MY
+
44-56-E2 (hex) Sichuan Tianyi Comheart Telecom Co., Ltd.
4456E2 (base 16) Sichuan Tianyi Comheart Telecom Co., Ltd.
No.198,First Section,Snow Mountain Avenue, Jinyuan Town, Dayi County
Chengdu Sichuan 611330
CN
-4C-C9-5E (hex) Samsung Electronics Co.,Ltd
-4CC95E (base 16) Samsung Electronics Co.,Ltd
- 129, Samsung-ro, Youngtongl-Gu
- Suwon Gyeonggi-Do 16677
- KR
-
68-EC-C5 (hex) Intel Corporate
68ECC5 (base 16) Intel Corporate
Lot 8, Jalan Hi-Tech 2/3
Kulim Kedah 09000
MY
-A8-91-3D (hex) Apple, Inc.
-A8913D (base 16) Apple, Inc.
+7C-76-35 (hex) Intel Corporate
+7C7635 (base 16) Intel Corporate
+ Lot 8, Jalan Hi-Tech 2/3
+ Kulim Kedah 09000
+ MY
+
+64-0B-D7 (hex) Apple, Inc.
+640BD7 (base 16) Apple, Inc.
1 Infinite Loop
Cupertino CA 95014
US
-64-0B-D7 (hex) Apple, Inc.
-640BD7 (base 16) Apple, Inc.
+A8-91-3D (hex) Apple, Inc.
+A8913D (base 16) Apple, Inc.
1 Infinite Loop
Cupertino CA 95014
US
+4C-C9-5E (hex) Samsung Electronics Co.,Ltd
+4CC95E (base 16) Samsung Electronics Co.,Ltd
+ 129, Samsung-ro, Youngtongl-Gu
+ Suwon Gyeonggi-Do 16677
+ KR
+
0C-3B-50 (hex) Apple, Inc.
0C3B50 (base 16) Apple, Inc.
1 Infinite Loop
Cupertino CA 95014
US
-34-CF-F6 (hex) Intel Corporate
-34CFF6 (base 16) Intel Corporate
- Lot 8, Jalan Hi-Tech 2/3
- Kulim Kedah 09000
- MY
-
78-2B-46 (hex) Intel Corporate
782B46 (base 16) Intel Corporate
Lot 8, Jalan Hi-Tech 2/3
@@ -67391,18 +67685,6 @@ CCD9AC (base 16) Intel Corporate
Kulim Kedah 09000
MY
-0C-7A-15 (hex) Intel Corporate
-0C7A15 (base 16) Intel Corporate
- Lot 8, Jalan Hi-Tech 2/3
- Kulim Kedah 09000
- MY
-
-54-8D-5A (hex) Intel Corporate
-548D5A (base 16) Intel Corporate
- Lot 8, Jalan Hi-Tech 2/3
- Kulim Kedah 09000
- MY
-
B8-9A-2A (hex) Intel Corporate
B89A2A (base 16) Intel Corporate
Lot 8, Jalan Hi-Tech 2/3
@@ -67445,6 +67727,12 @@ BC542F (base 16) Intel Corporate
Kulim Kedah 09000
MY
+34-CF-F6 (hex) Intel Corporate
+34CFF6 (base 16) Intel Corporate
+ Lot 8, Jalan Hi-Tech 2/3
+ Kulim Kedah 09000
+ MY
+
C8-7E-A1 (hex) TCL MOKA International Limited
C87EA1 (base 16) TCL MOKA International Limited
7/F, Building 22E 22 Science Park East Avenue
@@ -67505,20 +67793,14 @@ DCFB48 (base 16) Intel Corporate
Kulim Kedah 09000
MY
-48-A4-72 (hex) Intel Corporate
-48A472 (base 16) Intel Corporate
- Lot 8, Jalan Hi-Tech 2/3
- Kulim Kedah 09000
- MY
-
-D8-F2-CA (hex) Intel Corporate
-D8F2CA (base 16) Intel Corporate
+0C-7A-15 (hex) Intel Corporate
+0C7A15 (base 16) Intel Corporate
Lot 8, Jalan Hi-Tech 2/3
Kulim Kedah 09000
MY
-48-F1-7F (hex) Intel Corporate
-48F17F (base 16) Intel Corporate
+54-8D-5A (hex) Intel Corporate
+548D5A (base 16) Intel Corporate
Lot 8, Jalan Hi-Tech 2/3
Kulim Kedah 09000
MY
@@ -67541,28 +67823,34 @@ D8F2CA (base 16) Intel Corporate
Santa Ana CA 92707
US
-5C-D5-B5 (hex) Shenzhen WiSiYiLink Technology Co.,Ltd
-5CD5B5 (base 16) Shenzhen WiSiYiLink Technology Co.,Ltd
- Building a 3, huafengzhigu Yuanshan hi tech Industrial Park, No.62, Yinhe Road, he'ao community, Yuanshan street, Longgang District
- Shenzhen 518100
- CN
-
AC-5F-EA (hex) OnePlus Technology (Shenzhen) Co., Ltd
AC5FEA (base 16) OnePlus Technology (Shenzhen) Co., Ltd
18C02, 18C03, 18C04 ,18C05,TAIRAN BUILDING,
Shenzhen Guangdong 518000
CN
+04-4A-C6 (hex) Aipon Electronics Co., Ltd
+044AC6 (base 16) Aipon Electronics Co., Ltd
+ #78, Qiaojiao Dong road, Qiaolong, Tangxia Town
+ Dongguan City Guangdong Province 523-710
+ CN
+
+5C-D5-B5 (hex) Shenzhen WiSiYiLink Technology Co.,Ltd
+5CD5B5 (base 16) Shenzhen WiSiYiLink Technology Co.,Ltd
+ Building a 3, huafengzhigu Yuanshan hi tech Industrial Park, No.62, Yinhe Road, he'ao community, Yuanshan street, Longgang District
+ Shenzhen 518100
+ CN
+
88-94-8F (hex) Xi'an Zhisensor Technologies Co.,Ltd
88948F (base 16) Xi'an Zhisensor Technologies Co.,Ltd
No.52 Jinye 1st Road Xi'an,Shaanxi,China
Xi an Xi an High-Tech Zone 710077
CN
-04-4A-C6 (hex) Aipon Electronics Co., Ltd
-044AC6 (base 16) Aipon Electronics Co., Ltd
- #78, Qiaojiao Dong road, Qiaolong, Tangxia Town
- Dongguan City Guangdong Province 523-710
+18-95-52 (hex) 1MORE
+189552 (base 16) 1MORE
+ TianliaoBuilding F14, New Materials Industrial Park, Xueyuan Blvd?Nanshan
+ Shenzhen Guangdong 518055
CN
C0-FF-A8 (hex) HUAWEI TECHNOLOGIES CO.,LTD
@@ -67583,23 +67871,23 @@ FC1499 (base 16) Aimore Acoustics Incorporation
Shenzhen Guangdong 518055
CN
-18-95-52 (hex) 1MORE
-189552 (base 16) 1MORE
- TianliaoBuilding F14, New Materials Industrial Park, Xueyuan Blvd?Nanshan
- Shenzhen Guangdong 518055
- CN
-
98-C7-A4 (hex) Shenzhen HS Fiber Communication Equipment CO., LTD
98C7A4 (base 16) Shenzhen HS Fiber Communication Equipment CO., LTD
6F, Bld#A, Dezhong Industrial Park, Yangmei Village, Bantian Town, Longgang District
Shenzhen Guangdong 518129
CN
-00-05-C9 (hex) LG Innotek
-0005C9 (base 16) LG Innotek
- LG Component R&D Center
- Ansan-si Gyeonggi-do 426-791
- KR
+00-BE-D5 (hex) New H3C Technologies Co., Ltd
+00BED5 (base 16) New H3C Technologies Co., Ltd
+ 466 Changhe Road, Binjiang District
+ Hangzhou Zhejiang 310052
+ CN
+
+00-02-C4 (hex) OPT Machine Vision Tech Co., Ltd
+0002C4 (base 16) OPT Machine Vision Tech Co., Ltd
+ no. 8 JInSheng Road, JinXia Zone, Chang'An Town
+ Dongguan Guangdong 523000
+ CN
AC-F1-08 (hex) LG Innotek
ACF108 (base 16) LG Innotek
@@ -67613,12 +67901,6 @@ ACF108 (base 16) LG Innotek
Hong Kong Hong Kong 999077
HK
-00-BE-D5 (hex) New H3C Technologies Co., Ltd
-00BED5 (base 16) New H3C Technologies Co., Ltd
- 466 Changhe Road, Binjiang District
- Hangzhou Zhejiang 310052
- CN
-
E8-6D-CB (hex) Samsung Electronics Co.,Ltd
E86DCB (base 16) Samsung Electronics Co.,Ltd
#94-1, Imsoo-Dong
@@ -67631,6 +67913,12 @@ E86DCB (base 16) Samsung Electronics Co.,Ltd
Piscataway NJ 08554
US
+00-05-C9 (hex) LG Innotek
+0005C9 (base 16) LG Innotek
+ LG Component R&D Center
+ Ansan-si Gyeonggi-do 426-791
+ KR
+
0C-DC-7E (hex) Espressif Inc.
0CDC7E (base 16) Espressif Inc.
Room 204, Building 2, 690 Bibo Rd, Pudong New Area
@@ -67643,18 +67931,6 @@ E86DCB (base 16) Samsung Electronics Co.,Ltd
Shenzhen 518055
CN
-60-32-B1 (hex) TP-LINK TECHNOLOGIES CO.,LTD.
-6032B1 (base 16) TP-LINK TECHNOLOGIES CO.,LTD.
- Building 24(floors 1,3,4,5)and 28(floors 1-4)Central Science and Technology Park,Shennan Road,Nanshan
- Shenzhen Guangdong 518057
- CN
-
-7C-FD-6B (hex) Xiaomi Communications Co Ltd
-7CFD6B (base 16) Xiaomi Communications Co Ltd
- The Rainbow City of China Resources
- NO.68, Qinghe Middle Street Haidian District, Beijing 100085
- CN
-
7C-C7-7E (hex) Fiberhome Telecommunication Technologies Co.,LTD
7CC77E (base 16) Fiberhome Telecommunication Technologies Co.,LTD
No.5 DongXin Road
@@ -67691,10 +67967,22 @@ A0CFF5 (base 16) zte corporation
Dongguan Guangdong 523808
CN
-00-02-C4 (hex) OPT Machine Vision Tech Co., Ltd
-0002C4 (base 16) OPT Machine Vision Tech Co., Ltd
- no. 8 JInSheng Road, JinXia Zone, Chang'An Town
- Dongguan Guangdong 523000
+C0-A3-6E (hex) BSkyB Ltd
+C0A36E (base 16) BSkyB Ltd
+ 130 Kings Road
+ Brentwood Essex 08854
+ GB
+
+60-32-B1 (hex) TP-LINK TECHNOLOGIES CO.,LTD.
+6032B1 (base 16) TP-LINK TECHNOLOGIES CO.,LTD.
+ Building 24(floors 1,3,4,5)and 28(floors 1-4)Central Science and Technology Park,Shennan Road,Nanshan
+ Shenzhen Guangdong 518057
+ CN
+
+7C-FD-6B (hex) Xiaomi Communications Co Ltd
+7CFD6B (base 16) Xiaomi Communications Co Ltd
+ The Rainbow City of China Resources
+ NO.68, Qinghe Middle Street Haidian District, Beijing 100085
CN
E4-1F-7B (hex) Cisco Systems, Inc
@@ -67703,11 +67991,11 @@ E41F7B (base 16) Cisco Systems, Inc
San Jose CA 94568
US
-C0-A3-6E (hex) BSkyB Ltd
-C0A36E (base 16) BSkyB Ltd
- 130 Kings Road
- Brentwood Essex 08854
- GB
+18-26-49 (hex) Intel Corporate
+182649 (base 16) Intel Corporate
+ Lot 8, Jalan Hi-Tech 2/3
+ Kulim Kedah 09000
+ MY
88-03-E9 (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
8803E9 (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
@@ -67745,12 +68033,6 @@ DCEF80 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
Dongguan 523808
CN
-18-26-49 (hex) Intel Corporate
-182649 (base 16) Intel Corporate
- Lot 8, Jalan Hi-Tech 2/3
- Kulim Kedah 09000
- MY
-
B4-6F-2D (hex) Wahoo Fitness
B46F2D (base 16) Wahoo Fitness
90 W Wieuca Rd, Suite 110
@@ -67763,6 +68045,30 @@ B46F2D (base 16) Wahoo Fitness
Piscataway NJ 08554
US
+84-6B-48 (hex) ShenZhen EepuLink Co., Ltd.
+846B48 (base 16) ShenZhen EepuLink Co., Ltd.
+ 4th Floor, Building 3, Nangang 1st industrial zone, Xili street, Nanshan district,
+ ShenZhen Guangdong 518000
+ CN
+
+B4-60-ED (hex) Beijing Xiaomi Mobile Software Co., Ltd
+B460ED (base 16) Beijing Xiaomi Mobile Software Co., Ltd
+ The Rainbow City Office Building, 68 Qinghe Middle Street Haidian District
+ Beijing Beijing 100085
+ CN
+
+30-CC-21 (hex) zte corporation
+30CC21 (base 16) zte corporation
+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China
+ shenzhen guangdong 518057
+ CN
+
+64-6C-80 (hex) CHONGQING FUGUI ELECTRONICS CO.,LTD.
+646C80 (base 16) CHONGQING FUGUI ELECTRONICS CO.,LTD.
+ Building D21,No.1, East Zone 1st Road,Xiyong Town,Shapingba District
+ Chongqing Chongqing 401332
+ CN
+
08-9E-01 (hex) Quanta Computer Inc.
089E01 (base 16) Quanta Computer Inc.
No.211, Wen Hwa 2nd Rd
@@ -67775,24 +68081,12 @@ A81E84 (base 16) Quanta Computer Inc.
Tao Yuan 33377
TW
-64-6C-80 (hex) CHONGQING FUGUI ELECTRONICS CO.,LTD.
-646C80 (base 16) CHONGQING FUGUI ELECTRONICS CO.,LTD.
- Building D21,No.1, East Zone 1st Road,Xiyong Town,Shapingba District
- Chongqing Chongqing 401332
- CN
-
C0-18-50 (hex) Quanta Computer Inc.
C01850 (base 16) Quanta Computer Inc.
No. 211, Wen-Hwa 2nd Rd.,Kuei-Shan Dist.
Taoyuan City Taiwan 33377
TW
-30-CC-21 (hex) zte corporation
-30CC21 (base 16) zte corporation
- 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China
- shenzhen guangdong 518057
- CN
-
44-27-F3 (hex) 70mai Co.,Ltd.
4427F3 (base 16) 70mai Co.,Ltd.
Room 2220, building 2, No. 588, Zixing road
@@ -67811,18 +68105,6 @@ C01850 (base 16) Quanta Computer Inc.
Osaka 554-0024
JP
-84-6B-48 (hex) ShenZhen EepuLink Co., Ltd.
-846B48 (base 16) ShenZhen EepuLink Co., Ltd.
- 4th Floor, Building 3, Nangang 1st industrial zone, Xili street, Nanshan district,
- ShenZhen Guangdong 518000
- CN
-
-B4-60-ED (hex) Beijing Xiaomi Mobile Software Co., Ltd
-B460ED (base 16) Beijing Xiaomi Mobile Software Co., Ltd
- The Rainbow City Office Building, 68 Qinghe Middle Street Haidian District
- Beijing Beijing 100085
- CN
-
D4-F3-37 (hex) Xunison Ltd.
D4F337 (base 16) Xunison Ltd.
25 Kilbarbery Business Park, Upper Nangor Road
@@ -67835,12 +68117,6 @@ D4F337 (base 16) Xunison Ltd.
Chengdu Sichuan 610041
CN
-58-E8-73 (hex) HANGZHOU DANGBEI NETWORK TECH.Co.,Ltd
-58E873 (base 16) HANGZHOU DANGBEI NETWORK TECH.Co.,Ltd
- Build C,Wanfu Center,Binkang Road No.228,Binjiang Area
- China 210051
- CN
-
C0-B8-E6 (hex) Ruijie Networks Co.,LTD
C0B8E6 (base 16) Ruijie Networks Co.,LTD
No. 2, 7th floor, xingwangruijie, haixi hi-tech industrial park, high-tech zone, fuzhou city
@@ -67859,6 +68135,18 @@ C0B8E6 (base 16) Ruijie Networks Co.,LTD
San Jose CA 94568
US
+58-E8-73 (hex) HANGZHOU DANGBEI NETWORK TECH.Co.,Ltd
+58E873 (base 16) HANGZHOU DANGBEI NETWORK TECH.Co.,Ltd
+ Build C,Wanfu Center,Binkang Road No.228,Binjiang Area
+ China 210051
+ CN
+
+B0-30-C8 (hex) Teal Drones, Inc.
+B030C8 (base 16) Teal Drones, Inc.
+ 5200 South Highland Drive
+ Holladay UT 84117
+ US
+
DC-41-A9 (hex) Intel Corporate
DC41A9 (base 16) Intel Corporate
Lot 8, Jalan Hi-Tech 2/3
@@ -67877,40 +68165,34 @@ A83512 (base 16) Huawei Device Co., Ltd.
Dongguan Guangdong 523808
CN
-D4-A6-51 (hex) HANGZHOU AIXIANGJI TECHNOLOGY CO., LTD
-D4A651 (base 16) HANGZHOU AIXIANGJI TECHNOLOGY CO., LTD
- 34/F.,ICBC Tower,3 Garden Road, Central, Hong Kong.
- Hong Kong Central Garden Road 510031
- CN
-
90-F6-44 (hex) Huawei Device Co., Ltd.
90F644 (base 16) Huawei Device Co., Ltd.
No.2 of Xincheng Road, Songshan Lake Zone
Dongguan Guangdong 523808
CN
-B0-30-C8 (hex) Teal Drones, Inc.
-B030C8 (base 16) Teal Drones, Inc.
- 5200 South Highland Drive
- Holladay UT 84117
- US
-
44-AF-28 (hex) Intel Corporate
44AF28 (base 16) Intel Corporate
Lot 8, Jalan Hi-Tech 2/3
Kulim Kedah 09000
MY
-84-22-5E (hex) SHENZHEN TECHNEWCHIP TECHNOLOGY CO.,LTD.
-84225E (base 16) SHENZHEN TECHNEWCHIP TECHNOLOGY CO.,LTD.
- XILI STREET
- SHENZHEN GUANGDONG 5180000
+9C-9D-7E (hex) Beijing Xiaomi Mobile Software Co., Ltd
+9C9D7E (base 16) Beijing Xiaomi Mobile Software Co., Ltd
+ The Rainbow City Office Building, 68 Qinghe Middle Street Haidian District
+ Beijing Beijing 100085
CN
-F8-5C-7D (hex) Shenzhen Honesty Electronics Co.,Ltd.
-F85C7D (base 16) Shenzhen Honesty Electronics Co.,Ltd.
- 5/F,Zone B,Chitat Industrial Park,West Longping Road, Longgang District,Shenzhen City
- Shenzhen Guangdong 518172
+74-12-B3 (hex) CHONGQING FUGUI ELECTRONICS CO.,LTD.
+7412B3 (base 16) CHONGQING FUGUI ELECTRONICS CO.,LTD.
+ Building D21,No.1, East Zone 1st Road,Xiyong Town,Shapingba District
+ Chongqing Chongqing 401332
+ CN
+
+94-47-B0 (hex) BEIJING ESWIN COMPUTING TECHNOLOGY CO., LTD
+9447B0 (base 16) BEIJING ESWIN COMPUTING TECHNOLOGY CO., LTD
+ Room 2179, Floor2,Block D, Building 33, Centralised Office Area, No.99, Kechuangshisi Road, BDA, Beijing
+ BEIJING BEIJING 100176
CN
A0-68-1C (hex) GD Midea Air-Conditioning Equipment Co.,Ltd.
@@ -67919,40 +68201,34 @@ A0681C (base 16) GD Midea Air-Conditioning Equipment Co.,Ltd.
Foshan Guangdong 528311
CN
-A4-7C-C9 (hex) HUAWEI TECHNOLOGIES CO.,LTD
-A47CC9 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+6C-44-2A (hex) HUAWEI TECHNOLOGIES CO.,LTD
+6C442A (base 16) HUAWEI TECHNOLOGIES CO.,LTD
No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
Dongguan 523808
CN
-C4-0D-96 (hex) HUAWEI TECHNOLOGIES CO.,LTD
-C40D96 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+A4-7C-C9 (hex) HUAWEI TECHNOLOGIES CO.,LTD
+A47CC9 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
Dongguan 523808
CN
-6C-44-2A (hex) HUAWEI TECHNOLOGIES CO.,LTD
-6C442A (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+C4-0D-96 (hex) HUAWEI TECHNOLOGIES CO.,LTD
+C40D96 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
Dongguan 523808
CN
-84-2A-FD (hex) HP Inc.
-842AFD (base 16) HP Inc.
- 10300 Energy Dr
- Spring TX 77389
- US
-
-74-12-B3 (hex) CHONGQING FUGUI ELECTRONICS CO.,LTD.
-7412B3 (base 16) CHONGQING FUGUI ELECTRONICS CO.,LTD.
- Building D21,No.1, East Zone 1st Road,Xiyong Town,Shapingba District
- Chongqing Chongqing 401332
+F8-5C-7D (hex) Shenzhen Honesty Electronics Co.,Ltd.
+F85C7D (base 16) Shenzhen Honesty Electronics Co.,Ltd.
+ 5/F,Zone B,Chitat Industrial Park,West Longping Road, Longgang District,Shenzhen City
+ Shenzhen Guangdong 518172
CN
-94-47-B0 (hex) BEIJING ESWIN COMPUTING TECHNOLOGY CO., LTD
-9447B0 (base 16) BEIJING ESWIN COMPUTING TECHNOLOGY CO., LTD
- Room 2179, Floor2,Block D, Building 33, Centralised Office Area, No.99, Kechuangshisi Road, BDA, Beijing
- BEIJING BEIJING 100176
+84-22-5E (hex) SHENZHEN TECHNEWCHIP TECHNOLOGY CO.,LTD.
+84225E (base 16) SHENZHEN TECHNEWCHIP TECHNOLOGY CO.,LTD.
+ XILI STREET
+ SHENZHEN GUANGDONG 5180000
CN
E4-5A-D4 (hex) Eltex Enterprise Ltd.
@@ -67961,34 +68237,28 @@ E45AD4 (base 16) Eltex Enterprise Ltd.
Novosibirsk 630020
RU
-CC-48-3A (hex) Dell Inc.
-CC483A (base 16) Dell Inc.
- One Dell Way
- Round Rock TX 78682
+84-2A-FD (hex) HP Inc.
+842AFD (base 16) HP Inc.
+ 10300 Energy Dr
+ Spring TX 77389
US
-A4-AE-12 (hex) Hon Hai Precision Ind. Co., Ltd.
-A4AE12 (base 16) Hon Hai Precision Ind. Co., Ltd.
- GuangDongShenZhen
- ShenZhen GuangDong 518109
- CN
-
1C-FE-2B (hex) Amazon Technologies Inc.
1CFE2B (base 16) Amazon Technologies Inc.
P.O Box 8102
Reno NV 89507
US
-EC-57-0D (hex) AFE Inc.
-EC570D (base 16) AFE Inc.
- 11210 County Line Rd
- Mount Pleasant WI 53177
+CC-48-3A (hex) Dell Inc.
+CC483A (base 16) Dell Inc.
+ One Dell Way
+ Round Rock TX 78682
US
-9C-9D-7E (hex) Beijing Xiaomi Mobile Software Co., Ltd
-9C9D7E (base 16) Beijing Xiaomi Mobile Software Co., Ltd
- The Rainbow City Office Building, 68 Qinghe Middle Street Haidian District
- Beijing Beijing 100085
+A4-AE-12 (hex) Hon Hai Precision Ind. Co., Ltd.
+A4AE12 (base 16) Hon Hai Precision Ind. Co., Ltd.
+ GuangDongShenZhen
+ ShenZhen GuangDong 518109
CN
DC-A3-A2 (hex) Feng mi(Beijing)technology co., LTD
@@ -68009,24 +68279,30 @@ A8698C (base 16) Oracle Corporation
Redwood Shores CA 94065
US
+EC-57-0D (hex) AFE Inc.
+EC570D (base 16) AFE Inc.
+ 11210 County Line Rd
+ Mount Pleasant WI 53177
+ US
+
A4-AC-0F (hex) Huawei Device Co., Ltd.
A4AC0F (base 16) Huawei Device Co., Ltd.
No.2 of Xincheng Road, Songshan Lake Zone
Dongguan Guangdong 523808
CN
-54-05-DB (hex) LCFC(HeFei) Electronics Technology co., ltd
-5405DB (base 16) LCFC(HeFei) Electronics Technology co., ltd
- YunGu Road 3188-1
- Hefei Anhui 230000
- CN
-
CC-FF-90 (hex) Huawei Device Co., Ltd.
CCFF90 (base 16) Huawei Device Co., Ltd.
No.2 of Xincheng Road, Songshan Lake Zone
Dongguan Guangdong 523808
CN
+54-05-DB (hex) LCFC(HeFei) Electronics Technology co., ltd
+5405DB (base 16) LCFC(HeFei) Electronics Technology co., ltd
+ YunGu Road 3188-1
+ Hefei Anhui 230000
+ CN
+
D4-D5-1B (hex) HUAWEI TECHNOLOGIES CO.,LTD
D4D51B (base 16) HUAWEI TECHNOLOGIES CO.,LTD
No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
@@ -68081,12 +68357,6 @@ C8E600 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
Taipei City 112030
TW
-48-4B-D4 (hex) Technicolor CH USA Inc.
-484BD4 (base 16) Technicolor CH USA Inc.
- 5030 Sugarloaf Parkway Bldg 6
- Lawrenceville GA 30044
- US
-
C8-16-DA (hex) Realme Chongqing Mobile Telecommunications Corp.,Ltd.
C816DA (base 16) Realme Chongqing Mobile Telecommunications Corp.,Ltd.
No.178 Yulong Avenue, Yufengshan, Yubei District, Chongqing.
@@ -68099,24 +68369,24 @@ B04414 (base 16) New H3C Technologies Co., Ltd
Hangzhou Zhejiang 310052
CN
+48-4B-D4 (hex) Technicolor CH USA Inc.
+484BD4 (base 16) Technicolor CH USA Inc.
+ 5030 Sugarloaf Parkway Bldg 6
+ Lawrenceville GA 30044
+ US
+
+30-96-10 (hex) Huawei Device Co., Ltd.
+309610 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
78-45-58 (hex) Ubiquiti Networks Inc.
784558 (base 16) Ubiquiti Networks Inc.
685 Third Avenue, 27th Floor
New York NY 10017
US
-B4-FB-E3 (hex) AltoBeam (China) Inc.
-B4FBE3 (base 16) AltoBeam (China) Inc.
- B808, Tsinghua Tongfang Hi-Tech Plaza, Haidian
- Beijing Beijing 100083
- CN
-
-18-87-40 (hex) Xiaomi Communications Co Ltd
-188740 (base 16) Xiaomi Communications Co Ltd
- The Rainbow City of China Resources
- NO.68, Qinghe Middle Street Haidian District, Beijing 100085
- CN
-
64-F9-47 (hex) Senscomm Semiconductor Co., Ltd.
64F947 (base 16) Senscomm Semiconductor Co., Ltd.
Room 303-309, 3rd Floor International Building, NO.2 Suzhou Avenue West
@@ -68141,6 +68411,30 @@ A0764E (base 16) Espressif Inc.
Shanghai Shanghai 201203
CN
+B4-FB-E3 (hex) AltoBeam (China) Inc.
+B4FBE3 (base 16) AltoBeam (China) Inc.
+ B808, Tsinghua Tongfang Hi-Tech Plaza, Haidian
+ Beijing Beijing 100083
+ CN
+
+18-87-40 (hex) Xiaomi Communications Co Ltd
+188740 (base 16) Xiaomi Communications Co Ltd
+ The Rainbow City of China Resources
+ NO.68, Qinghe Middle Street Haidian District, Beijing 100085
+ CN
+
+34-1C-F0 (hex) Xiaomi Communications Co Ltd
+341CF0 (base 16) Xiaomi Communications Co Ltd
+ The Rainbow City of China Resources
+ NO.68, Qinghe Middle Street Haidian District, Beijing 100085
+ CN
+
+10-D7-B0 (hex) Sagemcom Broadband SAS
+10D7B0 (base 16) Sagemcom Broadband SAS
+ 250, route de l'Empereur
+ Rueil Malmaison Cedex hauts de seine 92848
+ FR
+
44-59-43 (hex) zte corporation
445943 (base 16) zte corporation
12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China
@@ -68153,12 +68447,6 @@ A0764E (base 16) Espressif Inc.
shenzhen guangdong 518057
CN
-30-96-10 (hex) Huawei Device Co., Ltd.
-309610 (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
- CN
-
74-8F-3C (hex) Apple, Inc.
748F3C (base 16) Apple, Inc.
1 Infinite Loop
@@ -68171,35 +68459,29 @@ A0764E (base 16) Espressif Inc.
Cupertino CA 95014
US
-34-1C-F0 (hex) Xiaomi Communications Co Ltd
-341CF0 (base 16) Xiaomi Communications Co Ltd
- The Rainbow City of China Resources
- NO.68, Qinghe Middle Street Haidian District, Beijing 100085
- CN
-
-30-B2-16 (hex) Hitachi ABB Power Grids – Grid Automation
-30B216 (base 16) Hitachi ABB Power Grids – Grid Automation
- Kallstadter Strasse 1
- Mannheim 68309
- DE
-
6C-09-BF (hex) Fiberhome Telecommunication Technologies Co.,LTD
6C09BF (base 16) Fiberhome Telecommunication Technologies Co.,LTD
No.5 DongXin Road
Wuhan Hubei 430074
CN
+30-AF-CE (hex) vivo Mobile Communication Co., Ltd.
+30AFCE (base 16) vivo Mobile Communication Co., Ltd.
+ #283,BBK Road
+ Wusha,Chang'An DongGuan City,Guangdong, 523860
+ CN
+
FC-6D-D1 (hex) APRESIA Systems, Ltd.
FC6DD1 (base 16) APRESIA Systems, Ltd.
Tsukuba Network Technical Center, Kidamari 3550
Tsuchiura-shi Ibaraki-ken 300-0026
JP
-10-D7-B0 (hex) Sagemcom Broadband SAS
-10D7B0 (base 16) Sagemcom Broadband SAS
- 250, route de l'Empereur
- Rueil Malmaison Cedex hauts de seine 92848
- FR
+80-C9-55 (hex) Redpine Signals, Inc.
+80C955 (base 16) Redpine Signals, Inc.
+ Plot 87, Sagar Society
+ Hyderabad AP 500034
+ IN
CC-4F-5C (hex) IEEE Registration Authority
CC4F5C (base 16) IEEE Registration Authority
@@ -68207,6 +68489,12 @@ CC4F5C (base 16) IEEE Registration Authority
Piscataway NJ 08554
US
+30-B2-16 (hex) Hitachi ABB Power Grids – Grid Automation
+30B216 (base 16) Hitachi ABB Power Grids – Grid Automation
+ Kallstadter Strasse 1
+ Mannheim 68309
+ DE
+
4C-6D-58 (hex) Juniper Networks
4C6D58 (base 16) Juniper Networks
1133 Innovation Way
@@ -68219,6 +68507,12 @@ CC4F5C (base 16) IEEE Registration Authority
Roseville CA 95747
US
+30-D0-42 (hex) Dell Inc.
+30D042 (base 16) Dell Inc.
+ One Dell Way
+ Round Rock TX 78682
+ US
+
C0-C9-E3 (hex) TP-LINK TECHNOLOGIES CO.,LTD.
C0C9E3 (base 16) TP-LINK TECHNOLOGIES CO.,LTD.
Building 24(floors 1,3,4,5)and 28(floors 1-4)Central Science and Technology Park,Shennan Road,Nanshan
@@ -68255,22 +68549,10 @@ E48F1D (base 16) Huawei Device Co., Ltd.
Dongguan Guangdong 523808
CN
-30-AF-CE (hex) vivo Mobile Communication Co., Ltd.
-30AFCE (base 16) vivo Mobile Communication Co., Ltd.
- #283,BBK Road
- Wusha,Chang'An DongGuan City,Guangdong, 523860
- CN
-
-80-C9-55 (hex) Redpine Signals, Inc.
-80C955 (base 16) Redpine Signals, Inc.
- Plot 87, Sagar Society
- Hyderabad AP 500034
- IN
-
-30-D0-42 (hex) Dell Inc.
-30D042 (base 16) Dell Inc.
- One Dell Way
- Round Rock TX 78682
+FC-CD-2F (hex) IEEE Registration Authority
+FCCD2F (base 16) IEEE Registration Authority
+ 445 Hoes Lane
+ Piscataway NJ 08554
US
94-B2-71 (hex) HUAWEI TECHNOLOGIES CO.,LTD
@@ -68291,24 +68573,6 @@ C4A72B (base 16) SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD
SHENZHEN GUANGDONG 518057
CN
-FC-CD-2F (hex) IEEE Registration Authority
-FCCD2F (base 16) IEEE Registration Authority
- 445 Hoes Lane
- Piscataway NJ 08554
- US
-
-84-E3-42 (hex) Tuya?HK?Limietd
-84E342 (base 16) Tuya?HK?Limietd
- FLAT/RM 806 BLK ? 8/F CHEUNG SHA WAN PLAZA 833 CHEUNG SHA WAN ROAD KL
- hongkong Hong Kong 999077
- CN
-
-4C-3B-DF (hex) Microsoft Corporation
-4C3BDF (base 16) Microsoft Corporation
- One Microsoft Way
- REDMOND WA 98052
- US
-
CC-F5-5F (hex) E FOCUS INSTRUMENTS INDIA PRIVATE LIMITED
CCF55F (base 16) E FOCUS INSTRUMENTS INDIA PRIVATE LIMITED
PLOT NO 21, 1ST FLOOR, NO 22, SAMAYAPURAM MAIN ROAD PORUR
@@ -68339,6 +68603,12 @@ A4178B (base 16) HUAWEI TECHNOLOGIES CO.,LTD
Qingdao Shandong 266510
CN
+4C-3B-DF (hex) Microsoft Corporation
+4C3BDF (base 16) Microsoft Corporation
+ One Microsoft Way
+ REDMOND WA 98052
+ US
+
08-7C-39 (hex) Amazon Technologies Inc.
087C39 (base 16) Amazon Technologies Inc.
P.O Box 8102
@@ -68357,12 +68627,6 @@ FC1928 (base 16) Actions Microelectronics Co., Ltd
Shenzhen Gangdong 518057
CN
-00-1B-2E (hex) Sinkyo Electron Inc
-001B2E (base 16) Sinkyo Electron Inc
- 1-22-19 Daimachi
- Hachioji-city Tokyo 193-0931
- JP
-
3C-D2-E5 (hex) New H3C Technologies Co., Ltd
3CD2E5 (base 16) New H3C Technologies Co., Ltd
466 Changhe Road, Binjiang District
@@ -68399,10 +68663,28 @@ E0913C (base 16) Kyeungin CNS Co., Ltd.
Moscow 117105
RU
-9C-73-70 (hex) HUAWEI TECHNOLOGIES CO.,LTD
-9C7370 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
- Dongguan 523808
+00-1B-2E (hex) Sinkyo Electron Inc
+001B2E (base 16) Sinkyo Electron Inc
+ 1-22-19 Daimachi
+ Hachioji-city Tokyo 193-0931
+ JP
+
+C4-37-72 (hex) Virtuozzo International GmbH
+C43772 (base 16) Virtuozzo International GmbH
+ Vordergasse 59
+ Schaffhausen 8200
+ CH
+
+CC-3B-27 (hex) TECNO MOBILE LIMITED
+CC3B27 (base 16) TECNO MOBILE LIMITED
+ ROOMS 05-15, 13A/F., SOUTH TOWER, WORLD FINANCE CENTRE, HARBOUR CITY, 17 CANTON ROAD, TSIM SHA TSUI, KOWLOON, HONG KONG
+ Hong Kong Hong Kong 999077
+ HK
+
+08-58-A5 (hex) Beijing Vrv Software Corpoaration Limited.
+0858A5 (base 16) Beijing Vrv Software Corpoaration Limited.
+ Room 1602, block C, Zhongguancun Science and technology development building, 34 Zhongguancun South Street
+ Beijing Beijing 100000
CN
98-3F-60 (hex) HUAWEI TECHNOLOGIES CO.,LTD
@@ -68417,18 +68699,6 @@ C03FDD (base 16) HUAWEI TECHNOLOGIES CO.,LTD
Dongguan 523808
CN
-08-58-A5 (hex) Beijing Vrv Software Corpoaration Limited.
-0858A5 (base 16) Beijing Vrv Software Corpoaration Limited.
- Room 1602, block C, Zhongguancun Science and technology development building, 34 Zhongguancun South Street
- Beijing Beijing 100000
- CN
-
-CC-3B-27 (hex) TECNO MOBILE LIMITED
-CC3B27 (base 16) TECNO MOBILE LIMITED
- ROOMS 05-15, 13A/F., SOUTH TOWER, WORLD FINANCE CENTRE, HARBOUR CITY, 17 CANTON ROAD, TSIM SHA TSUI, KOWLOON, HONG KONG
- Hong Kong Hong Kong 999077
- HK
-
30-32-35 (hex) Qingdao Intelligent&Precise Electronics Co.,Ltd.
303235 (base 16) Qingdao Intelligent&Precise Electronics Co.,Ltd.
No.218 Qianwangang Road
@@ -68441,24 +68711,30 @@ E0E2E6 (base 16) Espressif Inc.
Shanghai Shanghai 201203
CN
+9C-73-70 (hex) HUAWEI TECHNOLOGIES CO.,LTD
+9C7370 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
+ CN
+
58-24-29 (hex) Google, Inc.
582429 (base 16) Google, Inc.
1600 Amphitheatre Parkway
Mountain View CA 94043
US
-C4-37-72 (hex) Virtuozzo International GmbH
-C43772 (base 16) Virtuozzo International GmbH
- Vordergasse 59
- Schaffhausen 8200
- CH
-
E8-0A-EC (hex) Jiangsu Hengtong Optic-Electric Co., LTD
E80AEC (base 16) Jiangsu Hengtong Optic-Electric Co., LTD
88 Hengtong Dadao, Qidu Town, Wujiang District
Suzhou Jiangsu Province 215200
CN
+C4-DE-7B (hex) Huawei Device Co., Ltd.
+C4DE7B (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
7C-C2-94 (hex) Beijing Xiaomi Mobile Software Co., Ltd
7CC294 (base 16) Beijing Xiaomi Mobile Software Co., Ltd
The Rainbow City Office Building, 68 Qinghe Middle Street Haidian District
@@ -68477,18 +68753,6 @@ E80AEC (base 16) Jiangsu Hengtong Optic-Electric Co., LTD
Tel Aviv 6789139
IL
-18-EE-86 (hex) Novatel Wireless Solutions, Inc.
-18EE86 (base 16) Novatel Wireless Solutions, Inc.
- 9710 Scranton Rd., Suite 200
- San Diego CA 92121
- US
-
-C4-DE-7B (hex) Huawei Device Co., Ltd.
-C4DE7B (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
- CN
-
6C-1A-75 (hex) Huawei Device Co., Ltd.
6C1A75 (base 16) Huawei Device Co., Ltd.
No.2 of Xincheng Road, Songshan Lake Zone
@@ -68501,6 +68765,24 @@ C4DE7B (base 16) Huawei Device Co., Ltd.
Dongguan Guangdong 523808
CN
+18-EE-86 (hex) Novatel Wireless Solutions, Inc.
+18EE86 (base 16) Novatel Wireless Solutions, Inc.
+ 9710 Scranton Rd., Suite 200
+ San Diego CA 92121
+ US
+
+A0-9F-10 (hex) SHENZHEN BILIAN ELECTRONIC CO.,LTD
+A09F10 (base 16) SHENZHEN BILIAN ELECTRONIC CO.,LTD
+ NO.268? Fuqian Rd, Jutang community, Guanlan Town, Longhua New district
+ shenzhen guangdong 518000
+ CN
+
+20-1B-88 (hex) Dongguan Liesheng Electronic Co., Ltd.
+201B88 (base 16) Dongguan Liesheng Electronic Co., Ltd.
+ F5, Building B, North Block, Gaosheng Tech Park, No. 84 Zhongli Road, Nancheng District, Dongguan Ci
+ dongguan guangdong 523000
+ CN
+
24-94-93 (hex) FibRSol Global Network Limited
249493 (base 16) FibRSol Global Network Limited
17, Deep vihar, Vikas Nagar,, Near Mayank hospital,, Uttam Nagar,
@@ -68525,48 +68807,6 @@ FC4B57 (base 16) Peerless Instrument Division of Curtiss-Wright
East Farmingdale NY 11735
US
-9C-9A-C0 (hex) LEGO System A/S
-9C9AC0 (base 16) LEGO System A/S
- Aastvej 1
- Billund DK-7190
- DK
-
-A0-9F-10 (hex) SHENZHEN BILIAN ELECTRONIC CO.,LTD
-A09F10 (base 16) SHENZHEN BILIAN ELECTRONIC CO.,LTD
- NO.268? Fuqian Rd, Jutang community, Guanlan Town, Longhua New district
- shenzhen guangdong 518000
- CN
-
-3C-BD-C5 (hex) Arcadyan Corporation
-3CBDC5 (base 16) Arcadyan Corporation
- No.8, Sec.2, Guangfu Rd.
- Hsinchu City Hsinchu 30071
- TW
-
-20-1B-88 (hex) Dongguan Liesheng Electronic Co., Ltd.
-201B88 (base 16) Dongguan Liesheng Electronic Co., Ltd.
- F5, Building B, North Block, Gaosheng Tech Park, No. 84 Zhongli Road, Nancheng District, Dongguan Ci
- dongguan guangdong 523000
- CN
-
-58-60-D8 (hex) ARRIS Group, Inc.
-5860D8 (base 16) ARRIS Group, Inc.
- 6450 Sequence Drive
- San Diego CA 92121
- US
-
-50-A5-DC (hex) ARRIS Group, Inc.
-50A5DC (base 16) ARRIS Group, Inc.
- 6450 Sequence Drive
- San Diego CA 92121
- US
-
-A8-DA-0C (hex) SERVERCOM (INDIA) PRIVATE LIMITED
-A8DA0C (base 16) SERVERCOM (INDIA) PRIVATE LIMITED
- E-43/1 OKHLA INDUSTRIAL AREA PHASE-II NEW DELHI SOUTH DELHI
- NEW DELHI 110001
- IN
-
5C-10-C5 (hex) Samsung Electronics Co.,Ltd
5C10C5 (base 16) Samsung Electronics Co.,Ltd
#94-1, Imsoo-Dong
@@ -68579,11 +68819,23 @@ E8EB34 (base 16) Cisco Systems, Inc
San Jose CA 94568
US
-74-B7-B3 (hex) Shenzhen YOUHUA Technology Co., Ltd
-74B7B3 (base 16) Shenzhen YOUHUA Technology Co., Ltd
- Room 407 Shenzhen University-town Business Park,Lishan Road,Taoyuan Street,Nanshan District
- Shenzhen Guangdong 518055
- CN
+58-60-D8 (hex) ARRIS Group, Inc.
+5860D8 (base 16) ARRIS Group, Inc.
+ 6450 Sequence Drive
+ San Diego CA 92121
+ US
+
+9C-9A-C0 (hex) LEGO System A/S
+9C9AC0 (base 16) LEGO System A/S
+ Aastvej 1
+ Billund DK-7190
+ DK
+
+3C-BD-C5 (hex) Arcadyan Corporation
+3CBDC5 (base 16) Arcadyan Corporation
+ No.8, Sec.2, Guangfu Rd.
+ Hsinchu City Hsinchu 30071
+ TW
DC-8C-1B (hex) vivo Mobile Communication Co., Ltd.
DC8C1B (base 16) vivo Mobile Communication Co., Ltd.
@@ -68591,11 +68843,11 @@ DC8C1B (base 16) vivo Mobile Communication Co., Ltd.
Wusha,Chang'An DongGuan City,Guangdong, 523860
CN
-DC-9B-D6 (hex) TCT mobile ltd
-DC9BD6 (base 16) TCT mobile ltd
- No.86 hechang 7th road, zhongkai, Hi-Tech District
- Hui Zhou Guang Dong 516006
- CN
+A8-DA-0C (hex) SERVERCOM (INDIA) PRIVATE LIMITED
+A8DA0C (base 16) SERVERCOM (INDIA) PRIVATE LIMITED
+ E-43/1 OKHLA INDUSTRIAL AREA PHASE-II NEW DELHI SOUTH DELHI
+ NEW DELHI 110001
+ IN
F8-53-29 (hex) HUAWEI TECHNOLOGIES CO.,LTD
F85329 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
@@ -68603,22 +68855,16 @@ F85329 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
Dongguan 523808
CN
-04-E7-7E (hex) We Corporation Inc.
-04E77E (base 16) We Corporation Inc.
- 201, 33, Deokcheon-ro, Manan-gu
- Anyang-si Gyeonggi-do 14088
- KR
-
-74-EC-B2 (hex) Amazon Technologies Inc.
-74ECB2 (base 16) Amazon Technologies Inc.
- P.O Box 8102
- Reno NV 89507
+50-A5-DC (hex) ARRIS Group, Inc.
+50A5DC (base 16) ARRIS Group, Inc.
+ 6450 Sequence Drive
+ San Diego CA 92121
US
-F8-3B-7E (hex) Huawei Device Co., Ltd.
-F83B7E (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
+74-B7-B3 (hex) Shenzhen YOUHUA Technology Co., Ltd
+74B7B3 (base 16) Shenzhen YOUHUA Technology Co., Ltd
+ Room 407 Shenzhen University-town Business Park,Lishan Road,Taoyuan Street,Nanshan District
+ Shenzhen Guangdong 518055
CN
88-15-C5 (hex) Huawei Device Co., Ltd.
@@ -68627,26 +68873,26 @@ F83B7E (base 16) Huawei Device Co., Ltd.
Dongguan Guangdong 523808
CN
-A0-78-17 (hex) Apple, Inc.
-A07817 (base 16) Apple, Inc.
+B4-1B-B0 (hex) Apple, Inc.
+B41BB0 (base 16) Apple, Inc.
1 Infinite Loop
Cupertino CA 95014
US
-5C-87-30 (hex) Apple, Inc.
-5C8730 (base 16) Apple, Inc.
+58-D3-49 (hex) Apple, Inc.
+58D349 (base 16) Apple, Inc.
1 Infinite Loop
Cupertino CA 95014
US
-B4-1B-B0 (hex) Apple, Inc.
-B41BB0 (base 16) Apple, Inc.
+F4-34-F0 (hex) Apple, Inc.
+F434F0 (base 16) Apple, Inc.
1 Infinite Loop
Cupertino CA 95014
US
-58-D3-49 (hex) Apple, Inc.
-58D349 (base 16) Apple, Inc.
+B0-8C-75 (hex) Apple, Inc.
+B08C75 (base 16) Apple, Inc.
1 Infinite Loop
Cupertino CA 95014
US
@@ -68657,35 +68903,35 @@ A4AAFE (base 16) Huawei Device Co., Ltd.
Dongguan Guangdong 523808
CN
-F4-34-F0 (hex) Apple, Inc.
-F434F0 (base 16) Apple, Inc.
+F8-3B-7E (hex) Huawei Device Co., Ltd.
+F83B7E (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+9C-28-B3 (hex) Apple, Inc.
+9C28B3 (base 16) Apple, Inc.
1 Infinite Loop
Cupertino CA 95014
US
-B0-8C-75 (hex) Apple, Inc.
-B08C75 (base 16) Apple, Inc.
+A0-78-17 (hex) Apple, Inc.
+A07817 (base 16) Apple, Inc.
1 Infinite Loop
Cupertino CA 95014
US
-14-6B-9A (hex) zte corporation
-146B9A (base 16) zte corporation
- 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China
- shenzhen guangdong 518057
- CN
-
-9C-28-B3 (hex) Apple, Inc.
-9C28B3 (base 16) Apple, Inc.
+5C-87-30 (hex) Apple, Inc.
+5C8730 (base 16) Apple, Inc.
1 Infinite Loop
Cupertino CA 95014
US
-4C-52-EC (hex) SOLARWATT GmbH
-4C52EC (base 16) SOLARWATT GmbH
- Maria-Reiche-Str. 2a
- Dresden 01109
- DE
+DC-9B-D6 (hex) TCT mobile ltd
+DC9BD6 (base 16) TCT mobile ltd
+ No.86 hechang 7th road, zhongkai, Hi-Tech District
+ Hui Zhou Guang Dong 516006
+ CN
70-40-FF (hex) Huawei Device Co., Ltd.
7040FF (base 16) Huawei Device Co., Ltd.
@@ -68705,23 +68951,47 @@ E01FED (base 16) Nokia Shanghai Bell Co., Ltd.
Shanghai 201206
CN
+14-6B-9A (hex) zte corporation
+146B9A (base 16) zte corporation
+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China
+ shenzhen guangdong 518057
+ CN
+
78-32-1B (hex) D-Link International
78321B (base 16) D-Link International
1 Internal Business Park, #03-12,The Synergy
Singapore Singapore 609917
SG
+04-E7-7E (hex) We Corporation Inc.
+04E77E (base 16) We Corporation Inc.
+ 201, 33, Deokcheon-ro, Manan-gu
+ Anyang-si Gyeonggi-do 14088
+ KR
+
+4C-52-EC (hex) SOLARWATT GmbH
+4C52EC (base 16) SOLARWATT GmbH
+ Maria-Reiche-Str. 2a
+ Dresden 01109
+ DE
+
30-D9-41 (hex) Raydium Semiconductor Corp.
30D941 (base 16) Raydium Semiconductor Corp.
2F, No. 23, LiHsin Rd., Hsinchu Science Park
Hsinchu, Taiwan, R.O.C. TW 300
TW
-40-8F-9D (hex) Juniper Networks
-408F9D (base 16) Juniper Networks
- 1133 Innovation Way
- Sunnyvale CA 94089
- US
+68-76-27 (hex) Zhuhai Dingzhi Electronic Technology Co., Ltd
+687627 (base 16) Zhuhai Dingzhi Electronic Technology Co., Ltd
+ 6th floor, No.2 Jinliang Road, Hongqi Town, Jinwan District
+ Zhuhai GuangDong 519000
+ CN
+
+20-0B-CF (hex) Nintendo Co.,Ltd
+200BCF (base 16) Nintendo Co.,Ltd
+ 11-1 HOKOTATE-CHO KAMITOBA,MINAMI-KU
+ KYOTO KYOTO 601-8501
+ JP
38-C0-96 (hex) ALPSALPINE CO,.LTD
38C096 (base 16) ALPSALPINE CO,.LTD
@@ -68741,24 +69011,12 @@ AC7A4D (base 16) ALPSALPINE CO,.LTD
Osaki Miyagi-pref 989-6181
JP
-68-76-27 (hex) Zhuhai Dingzhi Electronic Technology Co., Ltd
-687627 (base 16) Zhuhai Dingzhi Electronic Technology Co., Ltd
- 6th floor, No.2 Jinliang Road, Hongqi Town, Jinwan District
- Zhuhai GuangDong 519000
- CN
-
24-E4-C8 (hex) Fiberhome Telecommunication Technologies Co.,LTD
24E4C8 (base 16) Fiberhome Telecommunication Technologies Co.,LTD
No.5 DongXin Road
Wuhan Hubei 430074
CN
-20-0B-CF (hex) Nintendo Co.,Ltd
-200BCF (base 16) Nintendo Co.,Ltd
- 11-1 HOKOTATE-CHO KAMITOBA,MINAMI-KU
- KYOTO KYOTO 601-8501
- JP
-
94-8E-D3 (hex) Arista Networks
948ED3 (base 16) Arista Networks
5453 Great America Parkway
@@ -68771,6 +69029,48 @@ AC7A4D (base 16) ALPSALPINE CO,.LTD
Soma-city, Fukushima-pref., 976-8501
JP
+C0-F6-EC (hex) HUAWEI TECHNOLOGIES CO.,LTD
+C0F6EC (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
+ CN
+
+CC-20-8C (hex) HUAWEI TECHNOLOGIES CO.,LTD
+CC208C (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
+ CN
+
+88-5A-85 (hex) Wistron Neweb Corporation
+885A85 (base 16) Wistron Neweb Corporation
+ No.20,Park Avenue II,Hsinchu Science Park
+ Hsin-Chu R.O.C. 308
+ TW
+
+D8-00-93 (hex) Aurender Inc.
+D80093 (base 16) Aurender Inc.
+ #1612, OBIZTOWER, 126, Beolmal-ro, Dongan-gu
+ Anyang-si Gyeonggi-do 14057
+ KR
+
+38-90-52 (hex) HUAWEI TECHNOLOGIES CO.,LTD
+389052 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
+ CN
+
+40-8F-9D (hex) Juniper Networks
+408F9D (base 16) Juniper Networks
+ 1133 Innovation Way
+ Sunnyvale CA 94089
+ US
+
+00-15-E7 (hex) Quantec Tontechnik
+0015E7 (base 16) Quantec Tontechnik
+ Maenherstr. 35
+ München D-81375
+ DE
+
FC-B3-BC (hex) Intel Corporate
FCB3BC (base 16) Intel Corporate
Lot 8, Jalan Hi-Tech 2/3
@@ -68795,60 +69095,360 @@ C03C59 (base 16) Intel Corporate
Kulim Kedah 09000
MY
-38-90-52 (hex) HUAWEI TECHNOLOGIES CO.,LTD
-389052 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+2C-A5-9C (hex) Hangzhou Hikvision Digital Technology Co.,Ltd.
+2CA59C (base 16) Hangzhou Hikvision Digital Technology Co.,Ltd.
+ No.555 Qianmo Road
+ Hangzhou Zhejiang 310052
+ CN
+
+34-C9-3D (hex) Intel Corporate
+34C93D (base 16) Intel Corporate
+ Lot 8, Jalan Hi-Tech 2/3
+ Kulim Kedah 09000
+ MY
+
+6C-98-EB (hex) Riverbed Technology, Inc.
+6C98EB (base 16) Riverbed Technology, Inc.
+ 680 Folsom St
+ San Francisco CA 94107
+ US
+
+00-1F-F5 (hex) Kongsberg Defence & Aerospace
+001FF5 (base 16) Kongsberg Defence & Aerospace
+ Kirkegaardsveien 45 P.O.Box 1003
+ Kongsberg NO-3601
+ NO
+
+74-EC-B2 (hex) Amazon Technologies Inc.
+74ECB2 (base 16) Amazon Technologies Inc.
+ P.O Box 8102
+ Reno NV 89507
+ US
+
+C8-6C-3D (hex) Amazon Technologies Inc.
+C86C3D (base 16) Amazon Technologies Inc.
+ P.O Box 8102
+ Reno NV 89507
+ US
+
+C0-41-21 (hex) Nokia Solutions and Networks GmbH & Co. KG
+C04121 (base 16) Nokia Solutions and Networks GmbH & Co. KG
+ Werinherstrasse 91
+ München Bavaria D-81541
+ DE
+
+0C-7C-28 (hex) Nokia Solutions and Networks GmbH & Co. KG
+0C7C28 (base 16) Nokia Solutions and Networks GmbH & Co. KG
+ Werinherstrasse 91
+ München Bavaria D-81541
+ DE
+
+20-78-52 (hex) Nokia Solutions and Networks GmbH & Co. KG
+207852 (base 16) Nokia Solutions and Networks GmbH & Co. KG
+ Werinherstrasse 91
+ München Bavaria D-81541
+ DE
+
+54-FA-96 (hex) Nokia Solutions and Networks GmbH & Co. KG
+54FA96 (base 16) Nokia Solutions and Networks GmbH & Co. KG
+ Werinherstrasse 91
+ München Bavaria D-81541
+ DE
+
+7C-C2-C6 (hex) TP-Link Corporation Limited
+7CC2C6 (base 16) TP-Link Corporation Limited
+ Room 901,9/F.New East Ocean Centre, 9 Science Museum Road
+ Tsim Sha Tsui Kowloon 999077
+ HK
+
+08-9A-C7 (hex) zte corporation
+089AC7 (base 16) zte corporation
+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China
+ shenzhen guangdong 518057
+ CN
+
+BC-6D-05 (hex) Dusun Electron Co.,Ltd.
+BC6D05 (base 16) Dusun Electron Co.,Ltd.
+ NO.640 FengQing str.,DeQing, ZheJiang, China
+ huzhou zhejiang 313200
+ CN
+
+74-4C-A1 (hex) Liteon Technology Corporation
+744CA1 (base 16) Liteon Technology Corporation
+ 4F, 90, Chien 1 Road
+ New Taipei City Taiwan 23585
+ TW
+
+B4-B2-91 (hex) LG Electronics
+B4B291 (base 16) LG Electronics
+ 222 LG-ro, JINWI-MYEON
+ Pyeongtaek-si Gyeonggi-do 451-713
+ KR
+
+C0-E0-18 (hex) HUAWEI TECHNOLOGIES CO.,LTD
+C0E018 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
Dongguan 523808
CN
-C0-F6-EC (hex) HUAWEI TECHNOLOGIES CO.,LTD
-C0F6EC (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+5C-E7-47 (hex) HUAWEI TECHNOLOGIES CO.,LTD
+5CE747 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
Dongguan 523808
CN
-CC-20-8C (hex) HUAWEI TECHNOLOGIES CO.,LTD
-CC208C (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+A8-FF-BA (hex) HUAWEI TECHNOLOGIES CO.,LTD
+A8FFBA (base 16) HUAWEI TECHNOLOGIES CO.,LTD
No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
Dongguan 523808
CN
-88-5A-85 (hex) Wistron Neweb Corporation
-885A85 (base 16) Wistron Neweb Corporation
- No.20,Park Avenue II,Hsinchu Science Park
- Hsin-Chu R.O.C. 308
- TW
+AC-78-D1 (hex) Juniper Networks
+AC78D1 (base 16) Juniper Networks
+ 1133 Innovation Way
+ Sunnyvale CA 94089
+ US
-D8-00-93 (hex) Aurender Inc.
-D80093 (base 16) Aurender Inc.
- #1612, OBIZTOWER, 126, Beolmal-ro, Dongan-gu
- Anyang-si Gyeonggi-do 14057
- KR
+EC-BE-5F (hex) Vestel Elektronik San ve Tic. A.Ş.
+ECBE5F (base 16) Vestel Elektronik San ve Tic. A.Ş.
+ Organize san
+ Manisa Turket 45030
+ TR
-34-C9-3D (hex) Intel Corporate
-34C93D (base 16) Intel Corporate
- Lot 8, Jalan Hi-Tech 2/3
+A4-42-3B (hex) Intel Corporate
+A4423B (base 16) Intel Corporate
+ Lot 8, Jalan Hi-Tech 2/3
Kulim Kedah 09000
MY
-00-15-E7 (hex) Quantec Tontechnik
-0015E7 (base 16) Quantec Tontechnik
- Maenherstr. 35
- München D-81375
- DE
+70-CF-49 (hex) Intel Corporate
+70CF49 (base 16) Intel Corporate
+ Lot 8, Jalan Hi-Tech 2/3
+ Kulim Kedah 09000
+ MY
-6C-98-EB (hex) Riverbed Technology, Inc.
-6C98EB (base 16) Riverbed Technology, Inc.
- 680 Folsom St
- San Francisco CA 94107
+48-51-C5 (hex) Intel Corporate
+4851C5 (base 16) Intel Corporate
+ Lot 8, Jalan Hi-Tech 2/3
+ Kulim Kedah 09000
+ MY
+
+20-EF-BD (hex) Roku, Inc
+20EFBD (base 16) Roku, Inc
+ 1155 Coleman Ave
+ San Jose CA 95110
US
-2C-A5-9C (hex) Hangzhou Hikvision Digital Technology Co.,Ltd.
-2CA59C (base 16) Hangzhou Hikvision Digital Technology Co.,Ltd.
- No.555 Qianmo Road
+EC-7C-B6 (hex) Samsung Electronics Co.,Ltd
+EC7CB6 (base 16) Samsung Electronics Co.,Ltd
+ #94-1, Imsoo-Dong
+ Gumi Gyeongbuk 730-350
+ KR
+
+58-A6-39 (hex) Samsung Electronics Co.,Ltd
+58A639 (base 16) Samsung Electronics Co.,Ltd
+ #94-1, Imsoo-Dong
+ Gumi Gyeongbuk 730-350
+ KR
+
+A4-E5-7C (hex) Espressif Inc.
+A4E57C (base 16) Espressif Inc.
+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area
+ Shanghai Shanghai 201203
+ CN
+
+84-E3-42 (hex) Tuya (HK) Limietd
+84E342 (base 16) Tuya (HK) Limietd
+ FLAT/RM 806 BLK ? 8/F CHEUNG SHA WAN PLAZA 833 CHEUNG SHA WAN ROAD KL
+ hongkong Hong Kong 999077
+ CN
+
+04-F9-93 (hex) Infinix mobility limited
+04F993 (base 16) Infinix mobility limited
+ RMS 05-15, 13A/F SOUTH TOWER WORLD FINANCE CTR HARBOUR CITY 17 CANTON RD TST KLN HONG KONG
+ HongKong HongKong 999077
+ HK
+
+BC-BD-9E (hex) ITEL MOBILE LIMITED
+BCBD9E (base 16) ITEL MOBILE LIMITED
+ RM B3 & B4 BLOCK B, KO FAI INDUSTRIAL BUILDING NO.7 KO FAI ROAD, YAU TONG, KLN, H.K
+ Hong Kong KOWLOON 999077
+ HK
+
+F4-2A-7D (hex) TP-LINK TECHNOLOGIES CO.,LTD.
+F42A7D (base 16) TP-LINK TECHNOLOGIES CO.,LTD.
+ Building 24(floors 1,3,4,5)and 28(floors 1-4)Central Science and Technology Park,Shennan Road,Nanshan
+ Shenzhen Guangdong 518057
+ CN
+
+8C-0F-C9 (hex) Huawei Device Co., Ltd.
+8C0FC9 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+30-4E-1B (hex) Huawei Device Co., Ltd.
+304E1B (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+6C-03-09 (hex) Cisco Systems, Inc
+6C0309 (base 16) Cisco Systems, Inc
+ 80 West Tasman Drive
+ San Jose CA 94568
+ US
+
+BC-D2-95 (hex) Cisco Systems, Inc
+BCD295 (base 16) Cisco Systems, Inc
+ 80 West Tasman Drive
+ San Jose CA 94568
+ US
+
+74-50-4E (hex) New H3C Technologies Co., Ltd
+74504E (base 16) New H3C Technologies Co., Ltd
+ 466 Changhe Road, Binjiang District
Hangzhou Zhejiang 310052
CN
+F0-39-65 (hex) Samsung Electronics Co.,Ltd
+F03965 (base 16) Samsung Electronics Co.,Ltd
+ #94-1, Imsoo-Dong
+ Gumi Gyeongbuk 730-350
+ KR
+
+FC-B6-62 (hex) IC Holdings LLC
+FCB662 (base 16) IC Holdings LLC
+ 1277 Windmill Ln.
+ Midway UT 84049
+ US
+
+50-2D-FB (hex) IGShare Co., Ltd.
+502DFB (base 16) IGShare Co., Ltd.
+ 410-ho, 28, Digital-ro 30-gil
+ Guro-gu, SEOUL 08389
+ KR
+
+40-EE-15 (hex) Zioncom Electronics (Shenzhen) Ltd.
+40EE15 (base 16) Zioncom Electronics (Shenzhen) Ltd.
+ A1&A2 Building,Lantian Technology Park, Xinyu Road, Xingqiao Henggang Block, Shajing Street, Baoan District
+ Shenzhen Guangdong 518000
+ CN
+
+00-F3-61 (hex) Amazon Technologies Inc.
+00F361 (base 16) Amazon Technologies Inc.
+ P.O Box 8102
+ Reno NV 89507
+ US
+
+6C-0D-E1 (hex) Dongguan Cannice Precision Manufacturing Co., Ltd.
+6C0DE1 (base 16) Dongguan Cannice Precision Manufacturing Co., Ltd.
+ Dongguan Cannice Precision Manufacturing Co., Ltd.
+ Dongguan Guangdong 523170
+ CN
+
+60-6C-63 (hex) Hitron Technologies. Inc
+606C63 (base 16) Hitron Technologies. Inc
+ No. 1-8, Lising 1st Rd. Hsinchu Science Park, Hsinchu, 300, Taiwan, R.O.C
+ Hsin-chu Taiwan 300
+ TW
+
+E8-D7-65 (hex) HUAWEI TECHNOLOGIES CO.,LTD
+E8D765 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
+ CN
+
+E4-5E-1B (hex) Google, Inc.
+E45E1B (base 16) Google, Inc.
+ 1600 Amphitheatre Parkway
+ Mountain View CA 94043
+ US
+
+C4-30-CA (hex) SD Biosensor
+C430CA (base 16) SD Biosensor
+ C-4th & 5th Floor, Digital Empire Building, 980-3
+ Suwon-si Kyonggi-do ASI|KR|KS002|SUWON
+ KR
+
+D4-A6-51 (hex) Tuya Smart Inc.
+D4A651 (base 16) Tuya Smart Inc.
+ 160 Greentree Drive, Suite 101
+ Dover DE 19904
+ US
+
+28-05-2E (hex) Dematic Corp
+28052E (base 16) Dematic Corp
+ 507 Plymouth Ave NE
+ Grand Rapids MI 49505
+ US
+
+14-D1-9E (hex) Apple, Inc.
+14D19E (base 16) Apple, Inc.
+ 1 Infinite Loop
+ Cupertino CA 95014
+ US
+
+40-C7-11 (hex) Apple, Inc.
+40C711 (base 16) Apple, Inc.
+ 1 Infinite Loop
+ Cupertino CA 95014
+ US
+
+5C-70-17 (hex) Apple, Inc.
+5C7017 (base 16) Apple, Inc.
+ 1 Infinite Loop
+ Cupertino CA 95014
+ US
+
+8C-EC-7B (hex) Apple, Inc.
+8CEC7B (base 16) Apple, Inc.
+ 1 Infinite Loop
+ Cupertino CA 95014
+ US
+
+00-0F-A0 (hex) CANON KOREA BUSINESS SOLUTIONS INC.
+000FA0 (base 16) CANON KOREA BUSINESS SOLUTIONS INC.
+ Canon BS Tower, 607 Teheran-ro
+ Seoul Gangnam-gu 06173
+ KR
+
+40-8C-1F (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+408C1F (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+ NO.18 HAIBIN ROAD,
+ DONG GUAN GUANG DONG 523860
+ CN
+
+04-F0-3E (hex) Huawei Device Co., Ltd.
+04F03E (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+78-E2-2C (hex) Huawei Device Co., Ltd.
+78E22C (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+C0-D0-26 (hex) Huawei Device Co., Ltd.
+C0D026 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+2C-3F-0B (hex) Cisco Meraki
+2C3F0B (base 16) Cisco Meraki
+ 500 Terry A. Francois Blvd
+ San Francisco 94158
+ US
+
+80-C5-01 (hex) OctoGate IT Security Systems GmbH
+80C501 (base 16) OctoGate IT Security Systems GmbH
+ Friedrich List Strasse 42
+ Paderborn NRW 33100
+ DE
+
84-80-94 (hex) Meter, Inc.
848094 (base 16) Meter, Inc.
148 Townsend St
@@ -69278,12 +69878,6 @@ B452A9 (base 16) Texas Instruments
Toufen City, Miaoli County 351
TW
-B8-07-56 (hex) Cisco Meraki
-B80756 (base 16) Cisco Meraki
- 500 Terry A. Francois Blvd
- San Francisco null 94158
- US
-
D0-C8-57 (hex) IEEE Registration Authority
D0C857 (base 16) IEEE Registration Authority
445 Hoes Lane
@@ -71939,12 +72533,6 @@ E0338E (base 16) Apple, Inc.
Qingdao Shandong 266101
CN
-78-F9-B4 (hex) Nokia
-78F9B4 (base 16) Nokia
- Karaportti 3
- Espoo Finland 02610
- FI
-
D0-76-E7 (hex) TP-LINK TECHNOLOGIES CO.,LTD.
D076E7 (base 16) TP-LINK TECHNOLOGIES CO.,LTD.
Building 24(floors 1,3,4,5)and 28(floors 1-4)Central Science and Technology Park,Shennan Road,Nanshan
@@ -73043,12 +73631,6 @@ E084F3 (base 16) High Grade Controls Corporation
Brentwood Essex 08854
GB
-34-56-FE (hex) Cisco Meraki
-3456FE (base 16) Cisco Meraki
- 500 Terry A. Francois Blvd
- San Francisco null 94158
- US
-
70-70-8B (hex) Cisco Systems, Inc
70708B (base 16) Cisco Systems, Inc
80 West Tasman Drive
@@ -77345,12 +77927,6 @@ BCC6DB (base 16) Nokia Corporation
Salo NA 24101
FI
-60-A8-FE (hex) Nokia
-60A8FE (base 16) Nokia
- Karaportti 3
- Espoo 02610
- FI
-
00-11-9F (hex) Nokia Danmark A/S
00119F (base 16) Nokia Danmark A/S
Frederikskaj
@@ -80705,12 +81281,6 @@ ECEED8 (base 16) ZTLX Network Technology Co.,Ltd
HangZhou ZheJiang 311258
CN
-D8-EF-CD (hex) Nokia
-D8EFCD (base 16) Nokia
- Karaportti 3
- Espoo Finland 02610
- FI
-
4C-C6-81 (hex) Shenzhen Aisat Electronic Co., Ltd.
4CC681 (base 16) Shenzhen Aisat Electronic Co., Ltd.
Golden Building 419#, Design Park,
@@ -98648,12 +99218,6 @@ D8D67E (base 16) GSK CNC EQUIPMENT CO.,LTD
PLYMOUTH MN 55441-2625
US
-00-A0-FB (hex) TORAY ENGINEERING CO., LTD.
-00A0FB (base 16) TORAY ENGINEERING CO., LTD.
- 1-45, OE 1-CHOME, OTSU CITY
- 520-21
- JP
-
00-A0-6C (hex) SHINDENGEN ELECTRIC MFG. CO., LTD.
00A06C (base 16) SHINDENGEN ELECTRIC MFG. CO., LTD.
10-13, MINAMI-CHO, HANNOU-CITY
@@ -101126,42 +101690,42 @@ E84943 (base 16) YUGE Information technology Co. Ltd
York YO30 4RY
GB
-28-11-EC (hex) HUAWEI TECHNOLOGIES CO.,LTD
-2811EC (base 16) HUAWEI TECHNOLOGIES CO.,LTD
- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
- Dongguan 523808
- CN
-
B0-B1-94 (hex) zte corporation
B0B194 (base 16) zte corporation
12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China
shenzhen guangdong 518057
CN
-E4-26-86 (hex) DWnet Technologies(Suzhou) Corporation
-E42686 (base 16) DWnet Technologies(Suzhou) Corporation
- No.8,Tangzhuang Road, Suzhou Industrial Park, Jiangsu, China
- Suzhou 21500
- CN
-
-38-EB-47 (hex) HUAWEI TECHNOLOGIES CO.,LTD
-38EB47 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+10-C3-AB (hex) HUAWEI TECHNOLOGIES CO.,LTD
+10C3AB (base 16) HUAWEI TECHNOLOGIES CO.,LTD
No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
Dongguan 523808
CN
-10-C3-AB (hex) HUAWEI TECHNOLOGIES CO.,LTD
-10C3AB (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+28-11-EC (hex) HUAWEI TECHNOLOGIES CO.,LTD
+2811EC (base 16) HUAWEI TECHNOLOGIES CO.,LTD
No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
Dongguan 523808
CN
+E4-26-86 (hex) DWnet Technologies(Suzhou) Corporation
+E42686 (base 16) DWnet Technologies(Suzhou) Corporation
+ No.8,Tangzhuang Road, Suzhou Industrial Park, Jiangsu, China
+ Suzhou 21500
+ CN
+
00-69-2D (hex) Sunnovo International Limited
00692D (base 16) Sunnovo International Limited
1717 Haitai Building
Beijing Beijing 100083
CN
+38-EB-47 (hex) HUAWEI TECHNOLOGIES CO.,LTD
+38EB47 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
+ CN
+
0C-37-96 (hex) BIZLINK TECHNOLOGY, INC.
0C3796 (base 16) BIZLINK TECHNOLOGY, INC.
47211 BAYSIDE PARKWAY
@@ -101198,23 +101762,17 @@ B4157E (base 16) Celona Inc.
Yantai Shandong 264000
CN
-70-38-11 (hex) Siemens Mobility Limited
-703811 (base 16) Siemens Mobility Limited
- 17 Langley Park Way
- Chippenham Wiltshire SN15 1GG
- GB
-
00-E0-EC (hex) CELESTICA INC.
00E0EC (base 16) CELESTICA INC.
1900-5140 Yonge Street PO Box 42
Toronto Ontario M2N 6L7
CA
-B8-90-47 (hex) Apple, Inc.
-B89047 (base 16) Apple, Inc.
- 1 Infinite Loop
- Cupertino CA 95014
- US
+70-38-11 (hex) Siemens Mobility Limited
+703811 (base 16) Siemens Mobility Limited
+ 17 Langley Park Way
+ Chippenham Wiltshire SN15 1GG
+ GB
64-62-66 (hex) IEEE Registration Authority
646266 (base 16) IEEE Registration Authority
@@ -101240,12 +101798,6 @@ B89047 (base 16) Apple, Inc.
Mianyang Sichuan 622650
CN
-20-82-6A (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
-20826A (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
- NO.18 HAIBIN ROAD,
- DONG GUAN GUANG DONG 523860
- CN
-
D8-5F-77 (hex) Telink Semiconductor (Shanghai) Co., Ltd.
D85F77 (base 16) Telink Semiconductor (Shanghai) Co., Ltd.
No. 1500 Zuchongzhi Rd, Building #3
@@ -101258,6 +101810,18 @@ D85F77 (base 16) Telink Semiconductor (Shanghai) Co., Ltd.
minato-ku Tokyo 108-0075
JP
+20-82-6A (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+20826A (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+ NO.18 HAIBIN ROAD,
+ DONG GUAN GUANG DONG 523860
+ CN
+
+B8-90-47 (hex) Apple, Inc.
+B89047 (base 16) Apple, Inc.
+ 1 Infinite Loop
+ Cupertino CA 95014
+ US
+
90-9C-4A (hex) Apple, Inc.
909C4A (base 16) Apple, Inc.
1 Infinite Loop
@@ -101282,30 +101846,6 @@ D85F77 (base 16) Telink Semiconductor (Shanghai) Co., Ltd.
Cupertino CA 95014
US
-F0-10-90 (hex) New H3C Technologies Co., Ltd
-F01090 (base 16) New H3C Technologies Co., Ltd
- 466 Changhe Road, Binjiang District
- Hangzhou Zhejiang 310052
- CN
-
-20-50-E7 (hex) AMPAK Technology,Inc.
-2050E7 (base 16) AMPAK Technology,Inc.
- 3F, No.15-1 Zhonghua Road, Hsinchu Industrail Park, Hukou,
- Hsinchu Hsinchu,Taiwan R.O.C. 30352
- TW
-
-38-22-E2 (hex) HP Inc.
-3822E2 (base 16) HP Inc.
- 10300 Energy Dr
- Spring TX 77389
- US
-
-70-1F-3C (hex) Samsung Electronics Co.,Ltd
-701F3C (base 16) Samsung Electronics Co.,Ltd
- #94-1, Imsoo-Dong
- Gumi Gyeongbuk 730-350
- KR
-
D4-8A-39 (hex) Samsung Electronics Co.,Ltd
D48A39 (base 16) Samsung Electronics Co.,Ltd
#94-1, Imsoo-Dong
@@ -101324,10 +101864,10 @@ E4F3C4 (base 16) Samsung Electronics Co.,Ltd
shenzhen guangdong 518057
CN
-D8-A8-C8 (hex) zte corporation
-D8A8C8 (base 16) zte corporation
- 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China
- shenzhen guangdong 518057
+F0-10-90 (hex) New H3C Technologies Co., Ltd
+F01090 (base 16) New H3C Technologies Co., Ltd
+ 466 Changhe Road, Binjiang District
+ Hangzhou Zhejiang 310052
CN
08-BF-A0 (hex) Samsung Electronics Co.,Ltd
@@ -101336,23 +101876,29 @@ D8A8C8 (base 16) zte corporation
Gumi Gyeongbuk 730-350
KR
-5C-55-78 (hex) iryx corp
-5C5578 (base 16) iryx corp
- 14 Hughes
- Irvine CA 92618
- US
+70-1F-3C (hex) Samsung Electronics Co.,Ltd
+701F3C (base 16) Samsung Electronics Co.,Ltd
+ #94-1, Imsoo-Dong
+ Gumi Gyeongbuk 730-350
+ KR
-B8-C6-AA (hex) Earda Technologies co Ltd
-B8C6AA (base 16) Earda Technologies co Ltd
- Block A,Lianfeng Creative Park, #2 Jisheng Rd., Nansha District
- Guangzhou Guangdong 511455
+20-50-E7 (hex) AMPAK Technology,Inc.
+2050E7 (base 16) AMPAK Technology,Inc.
+ 3F, No.15-1 Zhonghua Road, Hsinchu Industrail Park, Hukou,
+ Hsinchu Hsinchu,Taiwan R.O.C. 30352
+ TW
+
+D8-A8-C8 (hex) zte corporation
+D8A8C8 (base 16) zte corporation
+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China
+ shenzhen guangdong 518057
CN
-54-AE-D0 (hex) DASAN Networks, Inc.
-54AED0 (base 16) DASAN Networks, Inc.
- DASAN Tower, 49, Daewangpangyo-ro, 644 Beon-gil, Bundang-gu
- Seongnam-si Gyeonggi-do 13493
- KR
+38-22-E2 (hex) HP Inc.
+3822E2 (base 16) HP Inc.
+ 10300 Energy Dr
+ Spring TX 77389
+ US
08-C0-EB (hex) Mellanox Technologies, Inc.
08C0EB (base 16) Mellanox Technologies, Inc.
@@ -101408,24 +101954,12 @@ D003EB (base 16) Texas Instruments
Dongguan Guangdong 523808
CN
-40-DE-AD (hex) Juniper Networks
-40DEAD (base 16) Juniper Networks
- 1133 Innovation Way
- Sunnyvale CA 94089
+5C-55-78 (hex) iryx corp
+5C5578 (base 16) iryx corp
+ 14 Hughes
+ Irvine CA 92618
US
-6C-F7-12 (hex) Nokia
-6CF712 (base 16) Nokia
- Karaportti 3
- Espoo Finland 02610
- FI
-
-68-B9-D3 (hex) Shenzhen Trolink Technology CO, LTD
-68B9D3 (base 16) Shenzhen Trolink Technology CO, LTD
- 201 B building 4 shijie, Chashu industry 505 block, Baoan airport Sanwei community, Hangcheng street Baoan area.
- Shenzhen GuangDong 518000
- CN
-
4C-C5-3E (hex) Zyxel Communications Corporation
4CC53E (base 16) Zyxel Communications Corporation
No. 6 Innovation Road II, Science Park
@@ -101438,47 +101972,35 @@ D003EB (base 16) Texas Instruments
Hong Kong Hong Kong 999077
HK
-10-70-FD (hex) Mellanox Technologies, Inc.
-1070FD (base 16) Mellanox Technologies, Inc.
- 350 Oakmead Parkway, Suite 100
- Sunnyvale CA 94085
- US
-
-98-ED-5C (hex) Tesla,Inc.
-98ED5C (base 16) Tesla,Inc.
- 3500 Deer Creek Road
- Palo Alto CA 94304
- US
-
-C4-42-68 (hex) CRESTRON ELECTRONICS, INC.
-C44268 (base 16) CRESTRON ELECTRONICS, INC.
- 15 Volvo Drive
- Rockleigh NJ 07647
- US
-
B8-63-92 (hex) GUANGDONG GENIUS TECHNOLOGY CO., LTD.
B86392 (base 16) GUANGDONG GENIUS TECHNOLOGY CO., LTD.
No.168, Middle Road Of East Gate
Xiaobian Community Chang'an Town 523851
CN
-78-AA-82 (hex) New H3C Technologies Co., Ltd
-78AA82 (base 16) New H3C Technologies Co., Ltd
- 466 Changhe Road, Binjiang District
- Hangzhou Zhejiang 310052
+68-B9-D3 (hex) Shenzhen Trolink Technology CO, LTD
+68B9D3 (base 16) Shenzhen Trolink Technology CO, LTD
+ 201 B building 4 shijie, Chashu industry 505 block, Baoan airport Sanwei community, Hangcheng street Baoan area.
+ Shenzhen GuangDong 518000
CN
-54-71-DD (hex) Huawei Device Co., Ltd.
-5471DD (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
+B8-C6-AA (hex) Earda Technologies co Ltd
+B8C6AA (base 16) Earda Technologies co Ltd
+ Block A,Lianfeng Creative Park, #2 Jisheng Rd., Nansha District
+ Guangzhou Guangdong 511455
CN
-40-F5-20 (hex) Espressif Inc.
-40F520 (base 16) Espressif Inc.
- Room 204, Building 2, 690 Bibo Rd, Pudong New Area
- Shanghai Shanghai 201203
- CN
+54-AE-D0 (hex) DASAN Networks, Inc.
+54AED0 (base 16) DASAN Networks, Inc.
+ DASAN Tower, 49, Daewangpangyo-ro, 644 Beon-gil, Bundang-gu
+ Seongnam-si Gyeonggi-do 13493
+ KR
+
+10-70-FD (hex) Mellanox Technologies, Inc.
+1070FD (base 16) Mellanox Technologies, Inc.
+ 350 Oakmead Parkway, Suite 100
+ Sunnyvale CA 94085
+ US
38-F6-01 (hex) Solid State Storage Technology Corporation
38F601 (base 16) Solid State Storage Technology Corporation
@@ -101486,11 +102008,23 @@ B86392 (base 16) GUANGDONG GENIUS TECHNOLOGY CO., LTD.
Taipei 11492
TW
-60-54-64 (hex) Eyedro Green Solutions Inc.
-605464 (base 16) Eyedro Green Solutions Inc.
- 130 Weber St W, Suite 201
- Kitchener Ontario N2H4A2
- CA
+40-DE-AD (hex) Juniper Networks
+40DEAD (base 16) Juniper Networks
+ 1133 Innovation Way
+ Sunnyvale CA 94089
+ US
+
+40-F5-20 (hex) Espressif Inc.
+40F520 (base 16) Espressif Inc.
+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area
+ Shanghai Shanghai 201203
+ CN
+
+78-AA-82 (hex) New H3C Technologies Co., Ltd
+78AA82 (base 16) New H3C Technologies Co., Ltd
+ 466 Changhe Road, Binjiang District
+ Hangzhou Zhejiang 310052
+ CN
20-6C-8A (hex) Extreme Networks, Inc.
206C8A (base 16) Extreme Networks, Inc.
@@ -101510,6 +102044,30 @@ B86392 (base 16) GUANGDONG GENIUS TECHNOLOGY CO., LTD.
Milpitas CA 95035
US
+88-5B-DD (hex) Extreme Networks, Inc.
+885BDD (base 16) Extreme Networks, Inc.
+ 1011 McCarthy Blvd
+ Milpitas CA 95035
+ US
+
+98-ED-5C (hex) Tesla,Inc.
+98ED5C (base 16) Tesla,Inc.
+ 3500 Deer Creek Road
+ Palo Alto CA 94304
+ US
+
+C4-42-68 (hex) CRESTRON ELECTRONICS, INC.
+C44268 (base 16) CRESTRON ELECTRONICS, INC.
+ 15 Volvo Drive
+ Rockleigh NJ 07647
+ US
+
+54-71-DD (hex) Huawei Device Co., Ltd.
+5471DD (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
E4-A7-49 (hex) Palo Alto Networks
E4A749 (base 16) Palo Alto Networks
3000 Tannery Way
@@ -101522,12 +102080,6 @@ E4A749 (base 16) Palo Alto Networks
Herzelia 46725
IL
-88-5B-DD (hex) Extreme Networks, Inc.
-885BDD (base 16) Extreme Networks, Inc.
- 1011 McCarthy Blvd
- Milpitas CA 95035
- US
-
D8-91-36 (hex) Dover Fueling Solutions
D89136 (base 16) Dover Fueling Solutions
Industrieweg 5
@@ -101540,12 +102092,6 @@ C88314 (base 16) Tempo Communications
Vista CA 92081
US
-FC-95-6A (hex) OCTAGON SYSTEMS CORP.
-FC956A (base 16) OCTAGON SYSTEMS CORP.
- 7403 Church Ranch Blvd
- Westminster CO 80021
- US
-
B8-E3-EE (hex) Universal Electronics, Inc.
B8E3EE (base 16) Universal Electronics, Inc.
201 E. Sandpointe Ave
@@ -101558,28 +102104,16 @@ B8E3EE (base 16) Universal Electronics, Inc.
Coimbatore Tamil Nadu 641015
IN
-88-40-33 (hex) HUAWEI TECHNOLOGIES CO.,LTD
-884033 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
- Dongguan 523808
- CN
-
-AC-7A-56 (hex) Cisco Systems, Inc
-AC7A56 (base 16) Cisco Systems, Inc
- 80 West Tasman Drive
- San Jose CA 94568
- US
-
-C0-A6-6D (hex) Inspur Group Co., Ltd.
-C0A66D (base 16) Inspur Group Co., Ltd.
- No.1036 Langchao Rd.
- Jinan Shandong 250101
- CN
+60-54-64 (hex) Eyedro Green Solutions Inc.
+605464 (base 16) Eyedro Green Solutions Inc.
+ 130 Weber St W, Suite 201
+ Kitchener Ontario N2H4A2
+ CA
-70-F0-96 (hex) Cisco Systems, Inc
-70F096 (base 16) Cisco Systems, Inc
- 80 West Tasman Drive
- San Jose CA 94568
+FC-95-6A (hex) OCTAGON SYSTEMS CORP.
+FC956A (base 16) OCTAGON SYSTEMS CORP.
+ 7403 Church Ranch Blvd
+ Westminster CO 80021
US
40-B3-1E (hex) Universal Electronics, Inc.
@@ -101588,52 +102122,46 @@ C0A66D (base 16) Inspur Group Co., Ltd.
Santa Ana CA 92707
US
+88-40-33 (hex) HUAWEI TECHNOLOGIES CO.,LTD
+884033 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
+ CN
+
E0-F6-B5 (hex) Nintendo Co.,Ltd
E0F6B5 (base 16) Nintendo Co.,Ltd
11-1 HOKOTATE-CHO KAMITOBA,MINAMI-KU
KYOTO KYOTO 601-8501
JP
+AC-7A-56 (hex) Cisco Systems, Inc
+AC7A56 (base 16) Cisco Systems, Inc
+ 80 West Tasman Drive
+ San Jose CA 94568
+ US
+
44-8D-BF (hex) Rhino Mobility LLC
448DBF (base 16) Rhino Mobility LLC
8 The Green, Suite A
Dover DE 19901
US
-00-05-1E (hex) Brocade Communications Systems LLC
-00051E (base 16) Brocade Communications Systems LLC
- 1320 Ridder Park Dr
- San Jose CA 95131
- US
-
94-8A-C6 (hex) Realme Chongqing Mobile Telecommunications Corp.,Ltd.
948AC6 (base 16) Realme Chongqing Mobile Telecommunications Corp.,Ltd.
No.178 Yulong Avenue, Yufengshan, Yubei District, Chongqing.
Chongqing China 401120
CN
-E0-D4-62 (hex) Huawei Device Co., Ltd.
-E0D462 (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
- CN
-
-90-98-38 (hex) Huawei Device Co., Ltd.
-909838 (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
+C0-A6-6D (hex) Inspur Group Co., Ltd.
+C0A66D (base 16) Inspur Group Co., Ltd.
+ No.1036 Langchao Rd.
+ Jinan Shandong 250101
CN
-00-12-F2 (hex) Brocade Communications Systems LLC
-0012F2 (base 16) Brocade Communications Systems LLC
- 1320 Ridder Park Dr
- San Jose CA 95131
- US
-
-C4-F5-7C (hex) Brocade Communications Systems LLC
-C4F57C (base 16) Brocade Communications Systems LLC
- 1320 Ridder Park Dr
- San Jose CA 95131
+70-F0-96 (hex) Cisco Systems, Inc
+70F096 (base 16) Cisco Systems, Inc
+ 80 West Tasman Drive
+ San Jose CA 94568
US
00-20-A6 (hex) Proxim Wireless
@@ -101648,6 +102176,12 @@ C4F57C (base 16) Brocade Communications Systems LLC
Hangzhou Zhejiang 310052
CN
+00-05-1E (hex) Brocade Communications Systems LLC
+00051E (base 16) Brocade Communications Systems LLC
+ 1320 Ridder Park Dr
+ San Jose CA 95131
+ US
+
98-8B-0A (hex) Hangzhou Hikvision Digital Technology Co.,Ltd.
988B0A (base 16) Hangzhou Hikvision Digital Technology Co.,Ltd.
No.555 Qianmo Road
@@ -101666,11 +102200,17 @@ ACCB51 (base 16) Hangzhou Hikvision Digital Technology Co.,Ltd.
Hangzhou Zhejiang 310052
CN
-2C-9F-FB (hex) Wistron Neweb Corporation
-2C9FFB (base 16) Wistron Neweb Corporation
- No.20,Park Avenue II,Hsinchu Science Park
- Hsin-Chu R.O.C. 308
- TW
+E0-D4-62 (hex) Huawei Device Co., Ltd.
+E0D462 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+90-98-38 (hex) Huawei Device Co., Ltd.
+909838 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
84-CC-A8 (hex) Espressif Inc.
84CCA8 (base 16) Espressif Inc.
@@ -101678,29 +102218,41 @@ ACCB51 (base 16) Hangzhou Hikvision Digital Technology Co.,Ltd.
Shanghai Shanghai 201203
CN
-0C-14-D2 (hex) China Mobile Group Device Co.,Ltd.
-0C14D2 (base 16) China Mobile Group Device Co.,Ltd.
- 32 Xuanwumen West Street,Xicheng District
- Beijing 100053
- CN
+C4-F5-7C (hex) Brocade Communications Systems LLC
+C4F57C (base 16) Brocade Communications Systems LLC
+ 1320 Ridder Park Dr
+ San Jose CA 95131
+ US
-70-8C-BB (hex) MIMODISPLAYKOREA
-708CBB (base 16) MIMODISPLAYKOREA
- #812, 19, Ojeongongeop-gil
- Uiwang-si Gyeonggi-do 16072
+00-12-F2 (hex) Brocade Communications Systems LLC
+0012F2 (base 16) Brocade Communications Systems LLC
+ 1320 Ridder Park Dr
+ San Jose CA 95131
+ US
+
+6C-2F-8A (hex) Samsung Electronics Co.,Ltd
+6C2F8A (base 16) Samsung Electronics Co.,Ltd
+ #94-1, Imsoo-Dong
+ Gumi Gyeongbuk 730-350
KR
+F0-B0-22 (hex) TOHO Electronics INC.
+F0B022 (base 16) TOHO Electronics INC.
+ 1-13-21 Tanashioda, Chuo-Ku
+ Sagamihara-City Kanagawa 252-0245
+ JP
+
98-7E-CA (hex) Inventus Power Eletronica do Brasil LTDA
987ECA (base 16) Inventus Power Eletronica do Brasil LTDA
Av Buriti, 4285 Distrito Industrial
Manaus Amazonas 69075000
BR
-F0-B0-22 (hex) TOHO Electronics INC.
-F0B022 (base 16) TOHO Electronics INC.
- 1-13-21 Tanashioda, Chuo-Ku
- Sagamihara-City Kanagawa 252-0245
- JP
+2C-9F-FB (hex) Wistron Neweb Corporation
+2C9FFB (base 16) Wistron Neweb Corporation
+ No.20,Park Avenue II,Hsinchu Science Park
+ Hsin-Chu R.O.C. 308
+ TW
50-38-2F (hex) ASE Group Chung-Li
50382F (base 16) ASE Group Chung-Li
@@ -101708,10 +102260,28 @@ F0B022 (base 16) TOHO Electronics INC.
Chung-Li , Taoyuan Taoyuan 32016
TW
-6C-2F-8A (hex) Samsung Electronics Co.,Ltd
-6C2F8A (base 16) Samsung Electronics Co.,Ltd
- #94-1, Imsoo-Dong
- Gumi Gyeongbuk 730-350
+0C-14-D2 (hex) China Mobile Group Device Co.,Ltd.
+0C14D2 (base 16) China Mobile Group Device Co.,Ltd.
+ 32 Xuanwumen West Street,Xicheng District
+ Beijing 100053
+ CN
+
+D4-F8-29 (hex) Sagemcom Broadband SAS
+D4F829 (base 16) Sagemcom Broadband SAS
+ 250, route de l'Empereur
+ Rueil Malmaison Cedex hauts de seine 92848
+ FR
+
+E0-62-34 (hex) Texas Instruments
+E06234 (base 16) Texas Instruments
+ 12500 TI Blvd
+ Dallas TX 75243
+ US
+
+70-8C-BB (hex) MIMODISPLAYKOREA
+708CBB (base 16) MIMODISPLAYKOREA
+ #812, 19, Ojeongongeop-gil
+ Uiwang-si Gyeonggi-do 16072
KR
B8-48-AA (hex) EM Microelectronic
@@ -101726,30 +102296,6 @@ D834EE (base 16) Stem Audio
Irvine CA 92614
US
-D4-F8-29 (hex) Sagemcom Broadband SAS
-D4F829 (base 16) Sagemcom Broadband SAS
- 250, route de l'Empereur
- Rueil Malmaison Cedex hauts de seine 92848
- FR
-
-24-4B-FE (hex) ASUSTek COMPUTER INC.
-244BFE (base 16) ASUSTek COMPUTER INC.
- 15,Li-Te Rd., Peitou, Taipei 112, Taiwan
- Taipei Taiwan 112
- TW
-
-28-B3-71 (hex) Ruckus Wireless
-28B371 (base 16) Ruckus Wireless
- 350 West Java Drive
- Sunnyvale CA 94089
- US
-
-E0-62-34 (hex) Texas Instruments
-E06234 (base 16) Texas Instruments
- 12500 TI Blvd
- Dallas TX 75243
- US
-
F8-57-2E (hex) Core Brands, LLC
F8572E (base 16) Core Brands, LLC
5919 Sea Otter Place
@@ -101762,35 +102308,23 @@ F8572E (base 16) Core Brands, LLC
Carlsbad CA 92010
US
-08-AC-C4 (hex) FMTech
-08ACC4 (base 16) FMTech
- yuehai
- ShenZhen 518000
- CN
-
-DC-50-3A (hex) Nanjing Ticom Tech Co., Ltd.
-DC503A (base 16) Nanjing Ticom Tech Co., Ltd.
- No.35 Fenghui Road, Yuhuatai District
- Nanjing Jiangsu 210039
- CN
-
-18-47-3D (hex) CHONGQING FUGUI ELECTRONICS CO.,LTD.
-18473D (base 16) CHONGQING FUGUI ELECTRONICS CO.,LTD.
- Building D21,No.1, East Zone 1st Road,Xiyong Town,Shapingba District
- Chongqing Chongqing 401332
- CN
+24-4B-FE (hex) ASUSTek COMPUTER INC.
+244BFE (base 16) ASUSTek COMPUTER INC.
+ 15,Li-Te Rd., Peitou, Taipei 112, Taiwan
+ Taipei Taiwan 112
+ TW
-F8-2F-65 (hex) Huawei Device Co., Ltd.
-F82F65 (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
- CN
+7C-DD-E9 (hex) ATOM tech Inc.
+7CDDE9 (base 16) ATOM tech Inc.
+ Sky Menor Yokohama 422, 2-11-2 Takashima, Nishi-ku
+ Yokohama-shi Kanagawa 220-0011
+ JP
-08-31-A4 (hex) Huawei Device Co., Ltd.
-0831A4 (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
- CN
+F8-6B-D9 (hex) Cisco Systems, Inc
+F86BD9 (base 16) Cisco Systems, Inc
+ 80 West Tasman Drive
+ San Jose CA 94568
+ US
C0-14-FE (hex) Cisco Systems, Inc
C014FE (base 16) Cisco Systems, Inc
@@ -101804,29 +102338,47 @@ C014FE (base 16) Cisco Systems, Inc
San Jose CA 94568
US
+08-31-A4 (hex) Huawei Device Co., Ltd.
+0831A4 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
A8-E9-78 (hex) Huawei Device Co., Ltd.
A8E978 (base 16) Huawei Device Co., Ltd.
No.2 of Xincheng Road, Songshan Lake Zone
Dongguan Guangdong 523808
CN
-7C-DD-E9 (hex) ATOM tech Inc.
-7CDDE9 (base 16) ATOM tech Inc.
- Sky Menor Yokohama 422, 2-11-2 Takashima, Nishi-ku
- Yokohama-shi Kanagawa 220-0011
- JP
+F8-2F-65 (hex) Huawei Device Co., Ltd.
+F82F65 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
-F8-6B-D9 (hex) Cisco Systems, Inc
-F86BD9 (base 16) Cisco Systems, Inc
- 80 West Tasman Drive
- San Jose CA 94568
+28-B3-71 (hex) Ruckus Wireless
+28B371 (base 16) Ruckus Wireless
+ 350 West Java Drive
+ Sunnyvale CA 94089
US
-44-F4-E7 (hex) Cohesity Inc
-44F4E7 (base 16) Cohesity Inc
- 300 park ave
- san jose CA 95110
- US
+08-AC-C4 (hex) FMTech
+08ACC4 (base 16) FMTech
+ yuehai
+ ShenZhen 518000
+ CN
+
+DC-50-3A (hex) Nanjing Ticom Tech Co., Ltd.
+DC503A (base 16) Nanjing Ticom Tech Co., Ltd.
+ No.35 Fenghui Road, Yuhuatai District
+ Nanjing Jiangsu 210039
+ CN
+
+18-47-3D (hex) CHONGQING FUGUI ELECTRONICS CO.,LTD.
+18473D (base 16) CHONGQING FUGUI ELECTRONICS CO.,LTD.
+ Building D21,No.1, East Zone 1st Road,Xiyong Town,Shapingba District
+ Chongqing Chongqing 401332
+ CN
D4-77-B2 (hex) Netix Global B.V.
D477B2 (base 16) Netix Global B.V.
@@ -101858,6 +102410,12 @@ D477B2 (base 16) Netix Global B.V.
Sunnyvale CA 94089
US
+44-F4-E7 (hex) Cohesity Inc
+44F4E7 (base 16) Cohesity Inc
+ 300 park ave
+ san jose CA 95110
+ US
+
70-69-79 (hex) IEEE Registration Authority
706979 (base 16) IEEE Registration Authority
445 Hoes Lane
@@ -101882,12 +102440,6 @@ E8A1F8 (base 16) zte corporation
Guangzhou Guangdong 511458
CN
-10-8B-6A (hex) Antailiye Technology Co.,Ltd
-108B6A (base 16) Antailiye Technology Co.,Ltd
- 7/F,Zhengjiyuan Buiding,2 Road,Qianjing, Xixiang, Baoan District,Shenzhen
- SHEN ZHEN GUANGDONG 518000
- CN
-
30-42-40 (hex) zte corporation
304240 (base 16) zte corporation
12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China
@@ -101906,36 +102458,18 @@ E8A1F8 (base 16) zte corporation
San Jose CA 94568
US
-60-F6-77 (hex) Intel Corporate
-60F677 (base 16) Intel Corporate
- Lot 8, Jalan Hi-Tech 2/3
- Kulim Kedah 09000
- MY
-
-A0-88-69 (hex) Intel Corporate
-A08869 (base 16) Intel Corporate
- Lot 8, Jalan Hi-Tech 2/3
- Kulim Kedah 09000
- MY
-
-74-E5-F9 (hex) Intel Corporate
-74E5F9 (base 16) Intel Corporate
- Lot 8, Jalan Hi-Tech 2/3
- Kulim Kedah 09000
- MY
-
-80-00-0B (hex) Intel Corporate
-80000B (base 16) Intel Corporate
- Lot 8, Jalan Hi-Tech 2/3
- Kulim Kedah 09000
- MY
-
24-F1-50 (hex) Guangzhou Qi'an Technology Co., Ltd.
24F150 (base 16) Guangzhou Qi'an Technology Co., Ltd.
No. 3, Dasonggang, Jiangnan Avenue Middle Road, Haizhu District, Guangzhou (office only)
Guangzhou Guangdong 510220
CN
+10-8B-6A (hex) Antailiye Technology Co.,Ltd
+108B6A (base 16) Antailiye Technology Co.,Ltd
+ 7/F,Zhengjiyuan Buiding,2 Road,Qianjing, Xixiang, Baoan District,Shenzhen
+ SHEN ZHEN GUANGDONG 518000
+ CN
+
14-C8-8B (hex) Apple, Inc.
14C88B (base 16) Apple, Inc.
1 Infinite Loop
@@ -101954,6 +102488,12 @@ EC2651 (base 16) Apple, Inc.
Cupertino CA 95014
US
+60-7E-C9 (hex) Apple, Inc.
+607EC9 (base 16) Apple, Inc.
+ 1 Infinite Loop
+ Cupertino CA 95014
+ US
+
40-88-2F (hex) Extreme Networks, Inc.
40882F (base 16) Extreme Networks, Inc.
6480 Via Del Oro
@@ -101966,30 +102506,6 @@ E43D1A (base 16) Broadcom Limited
Irvine CA 92618
US
-60-7E-C9 (hex) Apple, Inc.
-607EC9 (base 16) Apple, Inc.
- 1 Infinite Loop
- Cupertino CA 95014
- US
-
-08-FA-79 (hex) vivo Mobile Communication Co., Ltd.
-08FA79 (base 16) vivo Mobile Communication Co., Ltd.
- #283,BBK Road
- Wusha,Chang'An DongGuan City,Guangdong, 523860
- CN
-
-8C-5E-BD (hex) Huawei Device Co., Ltd.
-8C5EBD (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
- CN
-
-3C-F0-11 (hex) Intel Corporate
-3CF011 (base 16) Intel Corporate
- Lot 8, Jalan Hi-Tech 2/3
- Kulim Kedah 09000
- MY
-
64-4C-36 (hex) Intel Corporate
644C36 (base 16) Intel Corporate
Lot 8, Jalan Hi-Tech 2/3
@@ -102026,12 +102542,6 @@ E43D1A (base 16) Broadcom Limited
Kulim Kedah 09000
MY
-34-41-5D (hex) Intel Corporate
-34415D (base 16) Intel Corporate
- Lot 8, Jalan Hi-Tech 2/3
- Kulim Kedah 09000
- MY
-
94-B8-6D (hex) Intel Corporate
94B86D (base 16) Intel Corporate
Lot 8, Jalan Hi-Tech 2/3
@@ -102068,11 +102578,35 @@ E43D1A (base 16) Broadcom Limited
Kulim Kedah 09000
MY
-10-12-FB (hex) Hangzhou Hikvision Digital Technology Co.,Ltd.
-1012FB (base 16) Hangzhou Hikvision Digital Technology Co.,Ltd.
- No.555 Qianmo Road
- Hangzhou Zhejiang 310052
- CN
+60-F6-77 (hex) Intel Corporate
+60F677 (base 16) Intel Corporate
+ Lot 8, Jalan Hi-Tech 2/3
+ Kulim Kedah 09000
+ MY
+
+A0-88-69 (hex) Intel Corporate
+A08869 (base 16) Intel Corporate
+ Lot 8, Jalan Hi-Tech 2/3
+ Kulim Kedah 09000
+ MY
+
+74-E5-F9 (hex) Intel Corporate
+74E5F9 (base 16) Intel Corporate
+ Lot 8, Jalan Hi-Tech 2/3
+ Kulim Kedah 09000
+ MY
+
+80-00-0B (hex) Intel Corporate
+80000B (base 16) Intel Corporate
+ Lot 8, Jalan Hi-Tech 2/3
+ Kulim Kedah 09000
+ MY
+
+34-41-5D (hex) Intel Corporate
+34415D (base 16) Intel Corporate
+ Lot 8, Jalan Hi-Tech 2/3
+ Kulim Kedah 09000
+ MY
FC-77-74 (hex) Intel Corporate
FC7774 (base 16) Intel Corporate
@@ -102086,6 +102620,12 @@ FC7774 (base 16) Intel Corporate
Kulim Kedah 09000
MY
+3C-F0-11 (hex) Intel Corporate
+3CF011 (base 16) Intel Corporate
+ Lot 8, Jalan Hi-Tech 2/3
+ Kulim Kedah 09000
+ MY
+
28-7F-CF (hex) Intel Corporate
287FCF (base 16) Intel Corporate
Lot 8, Jalan Hi-Tech 2/3
@@ -102116,23 +102656,29 @@ F8AC65 (base 16) Intel Corporate
Kulim Kedah 09000
MY
-CC-D0-83 (hex) Aruba, a Hewlett Packard Enterprise Company
-CCD083 (base 16) Aruba, a Hewlett Packard Enterprise Company
- 3333 Scott Blvd
- Santa Clara CA 95054
- US
+10-12-FB (hex) Hangzhou Hikvision Digital Technology Co.,Ltd.
+1012FB (base 16) Hangzhou Hikvision Digital Technology Co.,Ltd.
+ No.555 Qianmo Road
+ Hangzhou Zhejiang 310052
+ CN
-C0-1C-30 (hex) Shenzhen WIFI-3L Technology Co.,Ltd
-C01C30 (base 16) Shenzhen WIFI-3L Technology Co.,Ltd
- East 5 Floor,B Building, WeiHao Technology Park,Sunny Indusrtrial zone, Xili Town, Nanshan District
- Shenzhen Guangdong 518055
+08-FA-79 (hex) vivo Mobile Communication Co., Ltd.
+08FA79 (base 16) vivo Mobile Communication Co., Ltd.
+ #283,BBK Road
+ Wusha,Chang'An DongGuan City,Guangdong, 523860
CN
-D8-C6-78 (hex) MitraStar Technology Corp.
-D8C678 (base 16) MitraStar Technology Corp.
- No. 6, Innovation Road II,
- Hsinchu 300
- TW
+F0-9B-B8 (hex) HUAWEI TECHNOLOGIES CO.,LTD
+F09BB8 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
+ CN
+
+BC-17-B8 (hex) Intel Corporate
+BC17B8 (base 16) Intel Corporate
+ Lot 8, Jalan Hi-Tech 2/3
+ Kulim Kedah 09000
+ MY
B8-CB-29 (hex) Dell Inc.
B8CB29 (base 16) Dell Inc.
@@ -102152,41 +102698,53 @@ B8CB29 (base 16) Dell Inc.
Mountain View CA 94043
US
-2C-A0-42 (hex) Huawei Device Co., Ltd.
-2CA042 (base 16) Huawei Device Co., Ltd.
+8C-5E-BD (hex) Huawei Device Co., Ltd.
+8C5EBD (base 16) Huawei Device Co., Ltd.
No.2 of Xincheng Road, Songshan Lake Zone
Dongguan Guangdong 523808
CN
-C0-83-C9 (hex) Huawei Device Co., Ltd.
-C083C9 (base 16) Huawei Device Co., Ltd.
+2C-A0-42 (hex) Huawei Device Co., Ltd.
+2CA042 (base 16) Huawei Device Co., Ltd.
No.2 of Xincheng Road, Songshan Lake Zone
Dongguan Guangdong 523808
CN
-98-44-CE (hex) HUAWEI TECHNOLOGIES CO.,LTD
-9844CE (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+EC-C0-1B (hex) HUAWEI TECHNOLOGIES CO.,LTD
+ECC01B (base 16) HUAWEI TECHNOLOGIES CO.,LTD
No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
Dongguan 523808
CN
-F0-9B-B8 (hex) HUAWEI TECHNOLOGIES CO.,LTD
-F09BB8 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+98-44-CE (hex) HUAWEI TECHNOLOGIES CO.,LTD
+9844CE (base 16) HUAWEI TECHNOLOGIES CO.,LTD
No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
Dongguan 523808
CN
-EC-C0-1B (hex) HUAWEI TECHNOLOGIES CO.,LTD
-ECC01B (base 16) HUAWEI TECHNOLOGIES CO.,LTD
- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
- Dongguan 523808
+CC-D0-83 (hex) Aruba, a Hewlett Packard Enterprise Company
+CCD083 (base 16) Aruba, a Hewlett Packard Enterprise Company
+ 3333 Scott Blvd
+ Santa Clara CA 95054
+ US
+
+C0-83-C9 (hex) Huawei Device Co., Ltd.
+C083C9 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
CN
-BC-17-B8 (hex) Intel Corporate
-BC17B8 (base 16) Intel Corporate
- Lot 8, Jalan Hi-Tech 2/3
- Kulim Kedah 09000
- MY
+C0-1C-30 (hex) Shenzhen WIFI-3L Technology Co.,Ltd
+C01C30 (base 16) Shenzhen WIFI-3L Technology Co.,Ltd
+ East 5 Floor,B Building, WeiHao Technology Park,Sunny Indusrtrial zone, Xili Town, Nanshan District
+ Shenzhen Guangdong 518055
+ CN
+
+D8-C6-78 (hex) MitraStar Technology Corp.
+D8C678 (base 16) MitraStar Technology Corp.
+ No. 6, Innovation Road II,
+ Hsinchu 300
+ TW
44-1C-7F (hex) Motorola Mobility LLC, a Lenovo Company
441C7F (base 16) Motorola Mobility LLC, a Lenovo Company
@@ -102200,6 +102758,12 @@ BC17B8 (base 16) Intel Corporate
Chicago IL 60654
US
+1C-E6-1D (hex) Samsung Electronics Co.,Ltd
+1CE61D (base 16) Samsung Electronics Co.,Ltd
+ #94-1, Imsoo-Dong
+ Gumi Gyeongbuk 730-350
+ KR
+
80-12-DF (hex) Shenzhen SuperElectron Technology Co.,Ltd.
8012DF (base 16) Shenzhen SuperElectron Technology Co.,Ltd.
1213-1214, haosheng business center, dongbin road, nanshan street, nanshan district, shenzhen city
@@ -102212,46 +102776,28 @@ C4A151 (base 16) Sichuan Tianyi Comheart Telecom Co., Ltd.
Chengdu Sichuan 611330
CN
-1C-E6-1D (hex) Samsung Electronics Co.,Ltd
-1CE61D (base 16) Samsung Electronics Co.,Ltd
- #94-1, Imsoo-Dong
- Gumi Gyeongbuk 730-350
- KR
-
10-E7-7A (hex) STMicrolectronics International NV
10E77A (base 16) STMicrolectronics International NV
39, Chemin du Champ-des-Filles
Geneva, Plan-les-Quates 1228
CH
-90-76-9F (hex) SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.
-90769F (base 16) SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.
- 3/F, Building R1-B, High-Tech Industrial Park, Nanshan District
- Shenzhen Guangdong 518057
- CN
-
80-EA-07 (hex) TP-LINK TECHNOLOGIES CO.,LTD.
80EA07 (base 16) TP-LINK TECHNOLOGIES CO.,LTD.
Building 24(floors 1,3,4,5)and 28(floors 1-4)Central Science and Technology Park,Shennan Road,Nanshan
Shenzhen Guangdong 518057
CN
-04-A2-F3 (hex) Fiberhome Telecommunication Technologies Co.,LTD
-04A2F3 (base 16) Fiberhome Telecommunication Technologies Co.,LTD
- No.5 DongXin Road
- Wuhan Hubei 430074
- CN
-
BC-03-A7 (hex) MFP MICHELIN
BC03A7 (base 16) MFP MICHELIN
23 place des Carmes Dechaux
Clermont-Ferrand 63000
FR
-2C-6F-51 (hex) Herospeed Digital Technology Limited
-2C6F51 (base 16) Herospeed Digital Technology Limited
- 728 Kaichuang Avenue,Huangpu Distric
- Guangzhou Guangdong 510530
+90-76-9F (hex) SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.
+90769F (base 16) SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.
+ 3/F, Building R1-B, High-Tech Industrial Park, Nanshan District
+ Shenzhen Guangdong 518057
CN
98-2F-F8 (hex) Huawei Device Co., Ltd.
@@ -102266,6 +102812,18 @@ BC03A7 (base 16) MFP MICHELIN
Dongguan Guangdong 523808
CN
+2C-6F-51 (hex) Herospeed Digital Technology Limited
+2C6F51 (base 16) Herospeed Digital Technology Limited
+ 728 Kaichuang Avenue,Huangpu Distric
+ Guangzhou Guangdong 510530
+ CN
+
+04-A2-F3 (hex) Fiberhome Telecommunication Technologies Co.,LTD
+04A2F3 (base 16) Fiberhome Telecommunication Technologies Co.,LTD
+ No.5 DongXin Road
+ Wuhan Hubei 430074
+ CN
+
CC-DB-93 (hex) Cisco Systems, Inc
CCDB93 (base 16) Cisco Systems, Inc
80 West Tasman Drive
@@ -102344,12 +102902,6 @@ D00DF7 (base 16) Huawei Device Co., Ltd.
Dongguan Guangdong 523808
CN
-10-34-1B (hex) Spacelink
-10341B (base 16) Spacelink
- 8830 Complex dr
- San Diego CA 92123
- US
-
F8-1B-04 (hex) Zhong Shan City Richsound Electronic Industrial Ltd
F81B04 (base 16) Zhong Shan City Richsound Electronic Industrial Ltd
Qunle Industrial Area,East ShaGang Road,GangKou ZhongShan,GuangDong,China
@@ -102362,24 +102914,18 @@ D88C79 (base 16) Google, Inc.
Mountain View CA 94043
US
+10-34-1B (hex) Spacelink
+10341B (base 16) Spacelink
+ 8830 Complex dr
+ San Diego CA 92123
+ US
+
30-A4-52 (hex) Arrival Elements BV
30A452 (base 16) Arrival Elements BV
M. Keynesplein 12-46
Amsterdam 1066 EP
NL
-00-0B-A2 (hex) Sumitomo Electric Industries, Ltd
-000BA2 (base 16) Sumitomo Electric Industries, Ltd
- 1-1-3, Shimaya, Konohana-ku
- Osaka 554-0024
- JP
-
-00-08-F6 (hex) Sumitomo Electric Industries, Ltd
-0008F6 (base 16) Sumitomo Electric Industries, Ltd
- 1-1-3, Shimaya, Konohana-ku
- Osaka 554-0024
- JP
-
00-1E-68 (hex) Quanta Computer Inc.
001E68 (base 16) Quanta Computer Inc.
NO. 211, WEN HWA 2RD., KUEI SHAN HSIANG
@@ -102392,12 +102938,36 @@ D88C79 (base 16) Google, Inc.
TAIPEI TAIWAN 333
TW
+2C-60-0C (hex) Quanta Computer Inc.
+2C600C (base 16) Quanta Computer Inc.
+ No.211, Wen Hwa 2nd Rd
+ Taoyuan Taiwan 33377
+ TW
+
8C-C5-B4 (hex) Sagemcom Broadband SAS
8CC5B4 (base 16) Sagemcom Broadband SAS
250, route de l'Empereur
Rueil Malmaison Cedex hauts de seine 92848
FR
+00-0B-A2 (hex) Sumitomo Electric Industries, Ltd
+000BA2 (base 16) Sumitomo Electric Industries, Ltd
+ 1-1-3, Shimaya, Konohana-ku
+ Osaka 554-0024
+ JP
+
+00-08-F6 (hex) Sumitomo Electric Industries, Ltd
+0008F6 (base 16) Sumitomo Electric Industries, Ltd
+ 1-1-3, Shimaya, Konohana-ku
+ Osaka 554-0024
+ JP
+
+00-00-5F (hex) Sumitomo Electric Industries, Ltd
+00005F (base 16) Sumitomo Electric Industries, Ltd
+ 1-1-3, Shimaya, Konohana-ku
+ Osaka 554-0024
+ JP
+
18-EC-E7 (hex) BUFFALO.INC
18ECE7 (base 16) BUFFALO.INC
AKAMONDORI Bld.,30-20,Ohsu 3-chome,Naka-ku
@@ -102410,18 +102980,6 @@ F469D5 (base 16) IEEE Registration Authority
Piscataway NJ 08554
US
-2C-60-0C (hex) Quanta Computer Inc.
-2C600C (base 16) Quanta Computer Inc.
- No.211, Wen Hwa 2nd Rd
- Taoyuan Taiwan 33377
- TW
-
-00-00-5F (hex) Sumitomo Electric Industries, Ltd
-00005F (base 16) Sumitomo Electric Industries, Ltd
- 1-1-3, Shimaya, Konohana-ku
- Osaka 554-0024
- JP
-
08-3A-F2 (hex) Espressif Inc.
083AF2 (base 16) Espressif Inc.
Room 204, Building 2, 690 Bibo Rd, Pudong New Area
@@ -102506,12 +103064,24 @@ D4AFF7 (base 16) Arista Networks
Dallas TX 75243
US
-68-93-20 (hex) New H3C Technologies Co., Ltd
-689320 (base 16) New H3C Technologies Co., Ltd
- 466 Changhe Road, Binjiang District
- Hangzhou Zhejiang 310052
+04-7E-23 (hex) China Mobile IOT Company Limited
+047E23 (base 16) China Mobile IOT Company Limited
+ NO.8 Yu Ma Road, NanAn Area
+ Chongqing Chongqing 401336
CN
+14-CC-B3 (hex) AO GK NATEKS
+14CCB3 (base 16) AO GK NATEKS
+ Kamenshiki B. str., 4
+ Moscow 115172
+ RU
+
+DC-CD-2F (hex) Seiko Epson Corporation
+DCCD2F (base 16) Seiko Epson Corporation
+ 2070 Kotobuki Koaka
+ Matsumoto-shi Nagano-ken 399-8702
+ JP
+
94-54-CE (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
9454CE (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
NO.18 HAIBIN ROAD,
@@ -102524,10 +103094,10 @@ D4AFF7 (base 16) Arista Networks
DONG GUAN GUANG DONG 523860
CN
-04-7E-23 (hex) China Mobile IOT Company Limited
-047E23 (base 16) China Mobile IOT Company Limited
- NO.8 Yu Ma Road, NanAn Area
- Chongqing Chongqing 401336
+68-93-20 (hex) New H3C Technologies Co., Ltd
+689320 (base 16) New H3C Technologies Co., Ltd
+ 466 Changhe Road, Binjiang District
+ Hangzhou Zhejiang 310052
CN
54-84-DC (hex) zte corporation
@@ -102542,17 +103112,11 @@ D4AFF7 (base 16) Arista Networks
shenzhen guangdong 518057
CN
-DC-CD-2F (hex) Seiko Epson Corporation
-DCCD2F (base 16) Seiko Epson Corporation
- 2070 Kotobuki Koaka
- Matsumoto-shi Nagano-ken 399-8702
- JP
-
-14-CC-B3 (hex) AO GK NATEKS
-14CCB3 (base 16) AO GK NATEKS
- Kamenshiki B. str., 4
- Moscow 115172
- RU
+08-42-96 (hex) Mobile Technology Solutions LLC
+084296 (base 16) Mobile Technology Solutions LLC
+ 20379 Bannister Dr.
+ Macomb MI 48044
+ US
34-3E-A4 (hex) Ring LLC
343EA4 (base 16) Ring LLC
@@ -102578,12 +103142,6 @@ B0FEE5 (base 16) Huawei Device Co., Ltd.
Dongguan Guangdong 523808
CN
-08-42-96 (hex) Mobile Technology Solutions LLC
-084296 (base 16) Mobile Technology Solutions LLC
- 20379 Bannister Dr.
- Macomb MI 48044
- US
-
C8-17-39 (hex) ITEL MOBILE LIMITED
C81739 (base 16) ITEL MOBILE LIMITED
RM B3 & B4 BLOCK B, KO FAI INDUSTRIAL BUILDING NO.7 KO FAI ROAD, YAU TONG, KLN, H.K
@@ -102608,6 +103166,12 @@ E874C7 (base 16) Sentinhealth
LA TRONCHE 38700
FR
+00-1C-7B (hex) Castlenet Technology Inc.
+001C7B (base 16) Castlenet Technology Inc.
+ 5F., No. 10, Daye Rd., Beitou Dist.
+ Taipei City 112030
+ TW
+
E4-84-2B (hex) HANGZHOU SOFTEL OPTIC CO., LTD
E4842B (base 16) HANGZHOU SOFTEL OPTIC CO., LTD
101 BINKANG ROAD, BINJIANG DISTRICT
@@ -102632,18 +103196,6 @@ D46A91 (base 16) SnapAV
Charlotte North Carolina 28273
US
-00-1C-7B (hex) Castlenet Technology Inc.
-001C7B (base 16) Castlenet Technology Inc.
- 5F., No. 10, Daye Rd., Beitou Dist.
- Taipei City 112030
- TW
-
-D0-21-F9 (hex) Ubiquiti Networks Inc.
-D021F9 (base 16) Ubiquiti Networks Inc.
- 685 Third Avenue, 27th Floor
- New York NY 10017
- US
-
80-EE-25 (hex) Shenzhen Skyworth Digital Technology CO., Ltd
80EE25 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd
4F,Block A, Skyworth?Building,
@@ -102656,6 +103208,12 @@ D021F9 (base 16) Ubiquiti Networks Inc.
Huizhou Guangdong 516223
CN
+D0-21-F9 (hex) Ubiquiti Networks Inc.
+D021F9 (base 16) Ubiquiti Networks Inc.
+ 685 Third Avenue, 27th Floor
+ New York NY 10017
+ US
+
D0-3D-52 (hex) Ava Security Limited
D03D52 (base 16) Ava Security Limited
The Charter Building, Charter Place
@@ -102668,20 +103226,44 @@ F490EA (base 16) Deciso B.V.
Midddelharnis Zuid Holland 3241LS
NL
+64-D2-C4 (hex) Apple, Inc.
+64D2C4 (base 16) Apple, Inc.
+ 1 Infinite Loop
+ Cupertino CA 95014
+ US
+
+DC-52-85 (hex) Apple, Inc.
+DC5285 (base 16) Apple, Inc.
+ 1 Infinite Loop
+ Cupertino CA 95014
+ US
+
+E8-81-52 (hex) Apple, Inc.
+E88152 (base 16) Apple, Inc.
+ 1 Infinite Loop
+ Cupertino CA 95014
+ US
+
+90-81-58 (hex) Apple, Inc.
+908158 (base 16) Apple, Inc.
+ 1 Infinite Loop
+ Cupertino CA 95014
+ US
+
B4-AD-A3 (hex) Guangzhou Shiyuan Electronic Technology Company Limited
B4ADA3 (base 16) Guangzhou Shiyuan Electronic Technology Company Limited
No.6, 4th Yunpu Road, Yunpu industry District
Guangzhou Guangdong 510530
CN
-A4-C7-4B (hex) Huawei Device Co., Ltd.
-A4C74B (base 16) Huawei Device Co., Ltd.
+64-23-15 (hex) Huawei Device Co., Ltd.
+642315 (base 16) Huawei Device Co., Ltd.
No.2 of Xincheng Road, Songshan Lake Zone
Dongguan Guangdong 523808
CN
-64-23-15 (hex) Huawei Device Co., Ltd.
-642315 (base 16) Huawei Device Co., Ltd.
+A4-C7-4B (hex) Huawei Device Co., Ltd.
+A4C74B (base 16) Huawei Device Co., Ltd.
No.2 of Xincheng Road, Songshan Lake Zone
Dongguan Guangdong 523808
CN
@@ -102722,30 +103304,6 @@ D8F8AF (base 16) DAONTEC
dongguan city guangdong province 523710
CN
-64-D2-C4 (hex) Apple, Inc.
-64D2C4 (base 16) Apple, Inc.
- 1 Infinite Loop
- Cupertino CA 95014
- US
-
-DC-52-85 (hex) Apple, Inc.
-DC5285 (base 16) Apple, Inc.
- 1 Infinite Loop
- Cupertino CA 95014
- US
-
-E8-81-52 (hex) Apple, Inc.
-E88152 (base 16) Apple, Inc.
- 1 Infinite Loop
- Cupertino CA 95014
- US
-
-90-81-58 (hex) Apple, Inc.
-908158 (base 16) Apple, Inc.
- 1 Infinite Loop
- Cupertino CA 95014
- US
-
6C-AD-AD (hex) CHONGQING FUGUI ELECTRONICS CO.,LTD.
6CADAD (base 16) CHONGQING FUGUI ELECTRONICS CO.,LTD.
Building D21,No.1, East Zone 1st Road,Xiyong Town,Shapingba District
@@ -102758,6 +103316,12 @@ CCE0DA (base 16) Baidu Online Network Technology (Beijing) Co., Ltd
Beijing 100085
CN
+14-1B-30 (hex) Shenzhen Yipingfang Network Technology Co., Ltd.
+141B30 (base 16) Shenzhen Yipingfang Network Technology Co., Ltd.
+ 21 / F, Kangjia R & D building, No.28, Keji South 12th Road, Nanshan District, Shenzhen City, Guangdong Province, China
+ Shenzhen Nanshan District 518000
+ CN
+
F4-6F-ED (hex) Fiberhome Telecommunication Technologies Co.,LTD
F46FED (base 16) Fiberhome Telecommunication Technologies Co.,LTD
No.5 DongXin Road
@@ -102776,18 +103340,6 @@ A8301C (base 16) Qingdao Intelligent&Precise Electronics Co.,Ltd.
Qingdao Shangdong 266510
CN
-7C-78-B2 (hex) Wyze Labs Inc
-7C78B2 (base 16) Wyze Labs Inc
- 4030 Lake Washington Boulevard NE
- Kirkland WA 98033
- US
-
-14-1B-30 (hex) Shenzhen Yipingfang Network Technology Co., Ltd.
-141B30 (base 16) Shenzhen Yipingfang Network Technology Co., Ltd.
- 21 / F, Kangjia R & D building, No.28, Keji South 12th Road, Nanshan District, Shenzhen City, Guangdong Province, China
- Shenzhen Nanshan District 518000
- CN
-
D8-F3-BC (hex) Liteon Technology Corporation
D8F3BC (base 16) Liteon Technology Corporation
4F, 90, Chien 1 Road
@@ -102800,6 +103352,12 @@ B8477A (base 16) Dasan Electron Co., Ltd.
Ansan KyungKi 15588
KR
+7C-78-B2 (hex) Wyze Labs Inc
+7C78B2 (base 16) Wyze Labs Inc
+ 4030 Lake Washington Boulevard NE
+ Kirkland WA 98033
+ US
+
D8-37-3B (hex) Shenzhen Jingxun Software Telecommunication Technology Co.,Ltd
D8373B (base 16) Shenzhen Jingxun Software Telecommunication Technology Co.,Ltd
3/F,A5 Building Zhiyuan Community No.1001,Xueyuan Road Nanshan District
@@ -102836,23 +103394,23 @@ FC698C (base 16) ANDREAS STIHL AG & Co. KG
Hyderabad AP 500034
IN
-E8-4F-4B (hex) Shenzhen Delos Electronic Co., Ltd
-E84F4B (base 16) Shenzhen Delos Electronic Co., Ltd
- Rm 603, Tower B, Galaxy World Building, No.1 Yabao Road,Longgang District,Shenzhen,P.R.China.
- shenzhen guangdong 518000
+44-CE-3A (hex) Jiangsu Huacun Electronic Technology Co., Ltd.
+44CE3A (base 16) Jiangsu Huacun Electronic Technology Co., Ltd.
+ C4, 9th Floor, 266 New Century Avenue, Tongzhou District
+ Nantong City Jiangsu Province 226300
CN
-B0-4A-39 (hex) Beijing Roborock Technology Co., Ltd.
-B04A39 (base 16) Beijing Roborock Technology Co., Ltd.
- Floor 6,Building C,Kangjian Baosheng Plaza,No. 8 Heiquan Road,Haidian District
- Beijing Beijing 100085
- CN
+9C-1E-A4 (hex) Renesas Electronics (Penang) Sdn. Bhd.
+9C1EA4 (base 16) Renesas Electronics (Penang) Sdn. Bhd.
+ Phase 3, Bayan Lepas FIZ
+ Bayan Lepas Penang 11900
+ MY
-A4-F9-E4 (hex) AirVine Scientific, Inc.
-A4F9E4 (base 16) AirVine Scientific, Inc.
- 1500 Wyatt Drive, Suite 9
- Santa Clara CA 95054
- US
+4C-EF-56 (hex) Shenzhen Sundray Technologies Company Limited
+4CEF56 (base 16) Shenzhen Sundray Technologies Company Limited
+ 5th Floor, Block A4, Nanshan ipark,NO.1001 Xue Yuan Road, Nanshan District, Shenzhen 518055, P.R. China
+ Shenzhen Guangdong 518057
+ CN
E4-C3-2A (hex) TP-LINK TECHNOLOGIES CO.,LTD.
E4C32A (base 16) TP-LINK TECHNOLOGIES CO.,LTD.
@@ -102872,11 +103430,17 @@ BC9789 (base 16) Huawei Device Co., Ltd.
Dongguan Guangdong 523808
CN
-68-45-71 (hex) Huawei Device Co., Ltd.
-684571 (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
- CN
+3C-E0-38 (hex) Plumeria Networks, Inc.
+3CE038 (base 16) Plumeria Networks, Inc.
+ 6701 Koll Center Parkway Suite 250
+ Pleasanton CA 94566
+ US
+
+AC-12-2F (hex) Fantasia Trading LLC
+AC122F (base 16) Fantasia Trading LLC
+ 5350 Ontario Mills Pkwy, Suite 100
+ Ontario CA 91764
+ US
FC-45-C3 (hex) Texas Instruments
FC45C3 (base 16) Texas Instruments
@@ -102890,22 +103454,34 @@ AC6AA3 (base 16) Shenzhen Kertong Technology Co.,Ltd
Shenzhen Guangdong 518101
CN
-44-CE-3A (hex) Jiangsu Huacun Electronic Technology Co., Ltd.
-44CE3A (base 16) Jiangsu Huacun Electronic Technology Co., Ltd.
- C4, 9th Floor, 266 New Century Avenue, Tongzhou District
- Nantong City Jiangsu Province 226300
+E8-4F-4B (hex) Shenzhen Delos Electronic Co., Ltd
+E84F4B (base 16) Shenzhen Delos Electronic Co., Ltd
+ Rm 603, Tower B, Galaxy World Building, No.1 Yabao Road,Longgang District,Shenzhen,P.R.China.
+ shenzhen guangdong 518000
CN
-9C-1E-A4 (hex) Renesas Electronics (Penang) Sdn. Bhd.
-9C1EA4 (base 16) Renesas Electronics (Penang) Sdn. Bhd.
- Phase 3, Bayan Lepas FIZ
- Bayan Lepas Penang 11900
- MY
+B0-4A-39 (hex) Beijing Roborock Technology Co., Ltd.
+B04A39 (base 16) Beijing Roborock Technology Co., Ltd.
+ Floor 6,Building C,Kangjian Baosheng Plaza,No. 8 Heiquan Road,Haidian District
+ Beijing Beijing 100085
+ CN
-4C-EF-56 (hex) Shenzhen Sundray Technologies Company Limited
-4CEF56 (base 16) Shenzhen Sundray Technologies Company Limited
- 5th Floor, Block A4, Nanshan ipark,NO.1001 Xue Yuan Road, Nanshan District, Shenzhen 518055, P.R. China
- Shenzhen Guangdong 518057
+A4-F9-E4 (hex) AirVine Scientific, Inc.
+A4F9E4 (base 16) AirVine Scientific, Inc.
+ 1500 Wyatt Drive, Suite 9
+ Santa Clara CA 95054
+ US
+
+F4-4F-D3 (hex) shenzhen hemuwei technology co.,ltd
+F44FD3 (base 16) shenzhen hemuwei technology co.,ltd
+ 220, Building C, IoT Industrial Park, Bantian Street, Longgang District
+ shenzhen guangdong 518000
+ CN
+
+68-45-71 (hex) Huawei Device Co., Ltd.
+684571 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
CN
84-93-A0 (hex) Huawei Device Co., Ltd.
@@ -102920,36 +103496,18 @@ AC6AA3 (base 16) Shenzhen Kertong Technology Co.,Ltd
Dongguan Guangdong 523808
CN
-F4-4F-D3 (hex) shenzhen hemuwei technology co.,ltd
-F44FD3 (base 16) shenzhen hemuwei technology co.,ltd
- 220, Building C, IoT Industrial Park, Bantian Street, Longgang District
- shenzhen guangdong 518000
- CN
-
-3C-E0-38 (hex) Plumeria Networks, Inc.
-3CE038 (base 16) Plumeria Networks, Inc.
- 6701 Koll Center Parkway Suite 250
- Pleasanton CA 94566
- US
-
-FC-8D-3D (hex) Leapfive Tech. Ltd.
-FC8D3D (base 16) Leapfive Tech. Ltd.
- huaruizhididasha 8ceng
- shenzhen guangdong 518057
- CN
-
-AC-12-2F (hex) Fantasia Trading LLC
-AC122F (base 16) Fantasia Trading LLC
- 5350 Ontario Mills Pkwy, Suite 100
- Ontario CA 91764
- US
-
40-14-AD (hex) Huawei Device Co., Ltd.
4014AD (base 16) Huawei Device Co., Ltd.
No.2 of Xincheng Road, Songshan Lake Zone
Dongguan Guangdong 523808
CN
+A8-74-84 (hex) zte corporation
+A87484 (base 16) zte corporation
+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China
+ shenzhen guangdong 518057
+ CN
+
E0-4B-A6 (hex) HUAWEI TECHNOLOGIES CO.,LTD
E04BA6 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
@@ -102962,9 +103520,9 @@ C8B6D3 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
Dongguan 523808
CN
-A8-74-84 (hex) zte corporation
-A87484 (base 16) zte corporation
- 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China
+FC-8D-3D (hex) Leapfive Tech. Ltd.
+FC8D3D (base 16) Leapfive Tech. Ltd.
+ huaruizhididasha 8ceng
shenzhen guangdong 518057
CN
@@ -102980,12 +103538,6 @@ A06974 (base 16) Honor Device Co., Ltd.
Shenzhen Guangdong 518129
CN
-78-C9-5E (hex) Midmark RTLS
-78C95E (base 16) Midmark RTLS
- 2600 Millercreek Rd
- Traverse City MI 49684
- US
-
C0-33-DA (hex) Shenzhen JRUN Technologies CO., LTD
C033DA (base 16) Shenzhen JRUN Technologies CO., LTD
A Zone,9F,Huilongda Industrial Park,Shuitian Private Industrial Park,Shiyan Street,Bao,an District.
@@ -103010,6 +103562,18 @@ ACFAA5 (base 16) digitron
Seongnam GyeongGiDO 13511
KR
+78-C9-5E (hex) Midmark RTLS
+78C95E (base 16) Midmark RTLS
+ 2600 Millercreek Rd
+ Traverse City MI 49684
+ US
+
+20-CD-6E (hex) Realme Chongqing Mobile Telecommunications Corp.,Ltd.
+20CD6E (base 16) Realme Chongqing Mobile Telecommunications Corp.,Ltd.
+ No.178 Yulong Avenue, Yufengshan, Yubei District, Chongqing.
+ Chongqing China 401120
+ CN
+
BC-69-CB (hex) Panasonic Life Solutions Networks Co., Ltd.
BC69CB (base 16) Panasonic Life Solutions Networks Co., Ltd.
2-12-7, Higashi-Shinbashi
@@ -103028,12 +103592,6 @@ BC69CB (base 16) Panasonic Life Solutions Networks Co., Ltd.
Anyang-si,Gyeonggi-do Republic of Korea 430-803
KR
-20-CD-6E (hex) Realme Chongqing Mobile Telecommunications Corp.,Ltd.
-20CD6E (base 16) Realme Chongqing Mobile Telecommunications Corp.,Ltd.
- No.178 Yulong Avenue, Yufengshan, Yubei District, Chongqing.
- Chongqing China 401120
- CN
-
6C-14-6E (hex) HUAWEI TECHNOLOGIES CO.,LTD
6C146E (base 16) HUAWEI TECHNOLOGIES CO.,LTD
No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
@@ -103052,6 +103610,12 @@ DC4A9E (base 16) IEEE Registration Authority
Piscataway NJ 08554
US
+E0-C3-77 (hex) Samsung Electronics Co.,Ltd
+E0C377 (base 16) Samsung Electronics Co.,Ltd
+ #94-1, Imsoo-Dong
+ Gumi Gyeongbuk 730-350
+ KR
+
4C-FB-F4 (hex) Optimal Audio Ltd
4CFBF4 (base 16) Optimal Audio Ltd
Century Point, Halifax Rd
@@ -103061,18 +103625,6 @@ DC4A9E (base 16) IEEE Registration Authority
84-60-82 (hex) Private
846082 (base 16) Private
-64-79-24 (hex) Huawei Device Co., Ltd.
-647924 (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
- CN
-
-D8-CC-98 (hex) Huawei Device Co., Ltd.
-D8CC98 (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
- CN
-
64-03-7F (hex) Samsung Electronics Co.,Ltd
64037F (base 16) Samsung Electronics Co.,Ltd
#94-1, Imsoo-Dong
@@ -103091,35 +103643,23 @@ B49D02 (base 16) Samsung Electronics Co.,Ltd
Gumi Gyeongbuk 730-350
KR
-E0-C3-77 (hex) Samsung Electronics Co.,Ltd
-E0C377 (base 16) Samsung Electronics Co.,Ltd
- #94-1, Imsoo-Dong
- Gumi Gyeongbuk 730-350
- KR
-
-F0-4F-7C (hex) Amazon Technologies Inc.
-F04F7C (base 16) Amazon Technologies Inc.
- PO Box 8102
- Reno NV 89507
- US
-
-F0-A2-25 (hex) Amazon Technologies Inc.
-F0A225 (base 16) Amazon Technologies Inc.
- PO Box 8102
- Reno NV 89507
- US
+64-79-24 (hex) Huawei Device Co., Ltd.
+647924 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
-AC-37-28 (hex) Taicang T&W Electronics
-AC3728 (base 16) Taicang T&W Electronics
- 89# Jiang Nan RD
- Suzhou Jiangsu 215412
+D8-CC-98 (hex) Huawei Device Co., Ltd.
+D8CC98 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
CN
-58-86-94 (hex) EFM Networks
-588694 (base 16) EFM Networks
- 6F, Benposra II 1197-1 Bojeong Giheung Gu
- Yong In Kyunggi do 446913
- KR
+DC-B7-2E (hex) Xiaomi Communications Co Ltd
+DCB72E (base 16) Xiaomi Communications Co Ltd
+ The Rainbow City of China Resources
+ NO.68, Qinghe Middle Street Haidian District, Beijing 100085
+ CN
B8-87-6E (hex) Yandex Services AG
B8876E (base 16) Yandex Services AG
@@ -103133,6 +103673,30 @@ F86D73 (base 16) Zengge Co., Limited
Shenzhen Guangdong 518109
CN
+58-86-94 (hex) EFM Networks
+588694 (base 16) EFM Networks
+ 6F, Benposra II 1197-1 Bojeong Giheung Gu
+ Yong In Kyunggi do 446913
+ KR
+
+AC-37-28 (hex) Taicang T&W Electronics
+AC3728 (base 16) Taicang T&W Electronics
+ 89# Jiang Nan RD
+ Suzhou Jiangsu 215412
+ CN
+
+BC-99-30 (hex) HUAWEI TECHNOLOGIES CO.,LTD
+BC9930 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
+ CN
+
+E8-68-E7 (hex) Espressif Inc.
+E868E7 (base 16) Espressif Inc.
+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area
+ Shanghai Shanghai 201203
+ CN
+
D0-BC-C1 (hex) WEIFANG GOERTEK ELECTRONICS CO.,LTD
D0BCC1 (base 16) WEIFANG GOERTEK ELECTRONICS CO.,LTD
Gaoxin 2 Road, Free Trade Zone,Weifang,Shandong,261205,P.R.China
@@ -103151,46 +103715,22 @@ C469F0 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
Dongguan 523808
CN
-DC-B7-2E (hex) Xiaomi Communications Co Ltd
-DCB72E (base 16) Xiaomi Communications Co Ltd
- The Rainbow City of China Resources
- NO.68, Qinghe Middle Street Haidian District, Beijing 100085
- CN
-
-BC-99-30 (hex) HUAWEI TECHNOLOGIES CO.,LTD
-BC9930 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
- Dongguan 523808
- CN
-
C0-94-35 (hex) ARRIS Group, Inc.
C09435 (base 16) ARRIS Group, Inc.
6450 Sequence Drive
San Diego CA 92121
US
-78-CB-2C (hex) Join Digital, Inc.
-78CB2C (base 16) Join Digital, Inc.
- 75 E Santa Clara St., 6th Floor
- San Jose CA 95113
- US
-
-E8-68-E7 (hex) Espressif Inc.
-E868E7 (base 16) Espressif Inc.
- Room 204, Building 2, 690 Bibo Rd, Pudong New Area
- Shanghai Shanghai 201203
- CN
-
-30-9E-1D (hex) OHSUNG
-309E1D (base 16) OHSUNG
- 335-4,SANHODAERO,GUMI,GYEONG BUK,KOREA
- GUMI GYEONG BUK 730-030
+18-B6-CC (hex) We Corporation Inc.
+18B6CC (base 16) We Corporation Inc.
+ 201, 33, Deokcheon-ro, Manan-gu
+ Anyang-si Gyeonggi-do 14088
KR
-68-79-12 (hex) IEEE Registration Authority
-687912 (base 16) IEEE Registration Authority
- 445 Hoes Lane
- Piscataway NJ 08554
+F8-5E-42 (hex) Technicolor CH USA Inc.
+F85E42 (base 16) Technicolor CH USA Inc.
+ 5030 Sugarloaf Parkway Bldg 6
+ Lawrenceville GA 30044
US
30-A0-23 (hex) ROCK PATH S.R.L
@@ -103205,40 +103745,22 @@ E848B8 (base 16) TP-Link Corporation Limited
Tsim Sha Tsui Kowloon 999077
HK
-18-B6-CC (hex) We Corporation Inc.
-18B6CC (base 16) We Corporation Inc.
- 201, 33, Deokcheon-ro, Manan-gu
- Anyang-si Gyeonggi-do 14088
- KR
-
-F8-66-5A (hex) Apple, Inc.
-F8665A (base 16) Apple, Inc.
- 1 Infinite Loop
- Cupertino CA 95014
- US
-
-60-BE-C4 (hex) Apple, Inc.
-60BEC4 (base 16) Apple, Inc.
- 1 Infinite Loop
- Cupertino CA 95014
- US
-
-F8-B1-DD (hex) Apple, Inc.
-F8B1DD (base 16) Apple, Inc.
- 1 Infinite Loop
- Cupertino CA 95014
+78-CB-2C (hex) Join Digital, Inc.
+78CB2C (base 16) Join Digital, Inc.
+ 75 E Santa Clara St., 6th Floor
+ San Jose CA 95113
US
-F8-5E-42 (hex) Technicolor CH USA Inc.
-F85E42 (base 16) Technicolor CH USA Inc.
- 5030 Sugarloaf Parkway Bldg 6
- Lawrenceville GA 30044
- US
+30-9E-1D (hex) OHSUNG
+309E1D (base 16) OHSUNG
+ 335-4,SANHODAERO,GUMI,GYEONG BUK,KOREA
+ GUMI GYEONG BUK 730-030
+ KR
-A8-81-7E (hex) Apple, Inc.
-A8817E (base 16) Apple, Inc.
- 1 Infinite Loop
- Cupertino CA 95014
+68-79-12 (hex) IEEE Registration Authority
+687912 (base 16) IEEE Registration Authority
+ 445 Hoes Lane
+ Piscataway NJ 08554
US
EC-64-88 (hex) Honor Device Co., Ltd.
@@ -103271,6 +103793,42 @@ EC6488 (base 16) Honor Device Co., Ltd.
Singapore Singapore 609917
SG
+60-BE-C4 (hex) Apple, Inc.
+60BEC4 (base 16) Apple, Inc.
+ 1 Infinite Loop
+ Cupertino CA 95014
+ US
+
+F8-B1-DD (hex) Apple, Inc.
+F8B1DD (base 16) Apple, Inc.
+ 1 Infinite Loop
+ Cupertino CA 95014
+ US
+
+F8-66-5A (hex) Apple, Inc.
+F8665A (base 16) Apple, Inc.
+ 1 Infinite Loop
+ Cupertino CA 95014
+ US
+
+A8-81-7E (hex) Apple, Inc.
+A8817E (base 16) Apple, Inc.
+ 1 Infinite Loop
+ Cupertino CA 95014
+ US
+
+8C-47-6E (hex) IEEE Registration Authority
+8C476E (base 16) IEEE Registration Authority
+ 445 Hoes Lane
+ Piscataway NJ 08554
+ US
+
+48-70-1E (hex) Texas Instruments
+48701E (base 16) Texas Instruments
+ 12500 TI Blvd
+ Dallas TX 75243
+ US
+
E8-C3-20 (hex) Austco Marketing & Service (USA) ltd.
E8C320 (base 16) Austco Marketing & Service (USA) ltd.
9155 Sterling St Unit 100
@@ -103283,36 +103841,12 @@ E8C320 (base 16) Austco Marketing & Service (USA) ltd.
NO.68, Qinghe Middle Street Haidian District, Beijing 100085
CN
-8C-47-6E (hex) IEEE Registration Authority
-8C476E (base 16) IEEE Registration Authority
- 445 Hoes Lane
- Piscataway NJ 08554
- US
-
-D4-76-A0 (hex) Fortinet, Inc.
-D476A0 (base 16) Fortinet, Inc.
- 899 Kifer Road
- Sunnyvale 94086
- US
-
AC-33-28 (hex) Huawei Device Co., Ltd.
AC3328 (base 16) Huawei Device Co., Ltd.
No.2 of Xincheng Road, Songshan Lake Zone
Dongguan Guangdong 523808
CN
-B4-EC-02 (hex) ALPSALPINE CO,.LTD
-B4EC02 (base 16) ALPSALPINE CO,.LTD
- 6-1
- Kakuda Miyagi-Pref 981-1595
- JP
-
-48-70-1E (hex) Texas Instruments
-48701E (base 16) Texas Instruments
- 12500 TI Blvd
- Dallas TX 75243
- US
-
00-23-06 (hex) ALPSALPINE CO,.LTD
002306 (base 16) ALPSALPINE CO,.LTD
1-2-1, Okinouchi,
@@ -103337,12 +103871,24 @@ B4EC02 (base 16) ALPSALPINE CO,.LTD
Soma-city, Fukushima-pref., 976-8501
JP
-E0-AE-5E (hex) ALPSALPINE CO,.LTD
-E0AE5E (base 16) ALPSALPINE CO,.LTD
- 6-3-36 Furukawanakazato,
- Osaki Miyagi-pref 989-6181
+00-19-C1 (hex) ALPSALPINE CO,.LTD
+0019C1 (base 16) ALPSALPINE CO,.LTD
+ 1-2-1, Okinouchi,
+ Soma-city, Fukushima-pref., 976-8501
JP
+D4-76-A0 (hex) Fortinet, Inc.
+D476A0 (base 16) Fortinet, Inc.
+ 899 Kifer Road
+ Sunnyvale 94086
+ US
+
+80-B9-7A (hex) eero inc.
+80B97A (base 16) eero inc.
+ 660 3rd Street
+ San Francisco CA 94107
+ US
+
BC-75-36 (hex) ALPSALPINE CO,.LTD
BC7536 (base 16) ALPSALPINE CO,.LTD
nishida 6-1
@@ -103355,41 +103901,17 @@ BC7536 (base 16) ALPSALPINE CO,.LTD
Kakuda-City Miyagi-Pref 981-1595
JP
-1C-39-29 (hex) OHSUNG
-1C3929 (base 16) OHSUNG
- 335-4,SANHODAERO,GUMI,GYEONG BUK,KOREA
- GUMI GYEONG BUK 730-030
- KR
-
-80-B9-7A (hex) eero inc.
-80B97A (base 16) eero inc.
- 660 3rd Street
- San Francisco CA 94107
- US
-
-00-19-C1 (hex) ALPSALPINE CO,.LTD
-0019C1 (base 16) ALPSALPINE CO,.LTD
- 1-2-1, Okinouchi,
- Soma-city, Fukushima-pref., 976-8501
- JP
-
E0-75-0A (hex) ALPSALPINE CO,.LTD
E0750A (base 16) ALPSALPINE CO,.LTD
6-1
kakuda-City 981-1595
US
-C8-3A-6B (hex) Roku, Inc
-C83A6B (base 16) Roku, Inc
- 1155 Coleman Ave
- San Jose CA 95110
- US
-
-8C-49-62 (hex) Roku, Inc
-8C4962 (base 16) Roku, Inc
- 1155 Coleman Ave
- San Jose CA 95110
- US
+E0-AE-5E (hex) ALPSALPINE CO,.LTD
+E0AE5E (base 16) ALPSALPINE CO,.LTD
+ 6-3-36 Furukawanakazato,
+ Osaki Miyagi-pref 989-6181
+ JP
60-8D-26 (hex) Arcadyan Corporation
608D26 (base 16) Arcadyan Corporation
@@ -103397,6 +103919,12 @@ C83A6B (base 16) Roku, Inc
Hsinchu City Hsinchu 30071
TW
+B4-EC-02 (hex) ALPSALPINE CO,.LTD
+B4EC02 (base 16) ALPSALPINE CO,.LTD
+ 6-1
+ Kakuda Miyagi-Pref 981-1595
+ JP
+
E4-27-61 (hex) Honor Device Co., Ltd.
E42761 (base 16) Honor Device Co., Ltd.
A1701, Block AB, Building 1, Tianan Yungu Phase I, Gangtou Community, Bantian Street
@@ -103409,6 +103937,18 @@ E42761 (base 16) Honor Device Co., Ltd.
Chengdu Sichuan Province 611731
CN
+1C-39-29 (hex) OHSUNG
+1C3929 (base 16) OHSUNG
+ 335-4,SANHODAERO,GUMI,GYEONG BUK,KOREA
+ GUMI GYEONG BUK 730-030
+ KR
+
+E4-D3-AA (hex) FUJITSU CONNECTED TECHNOLOGIES LIMITED
+E4D3AA (base 16) FUJITSU CONNECTED TECHNOLOGIES LIMITED
+ Sanki Yamato Building, 7-10-1 Chuorinkan
+ Yamato Kanagawa 242-8588
+ JP
+
C8-A4-0D (hex) Cooler Master Technology Inc
C8A40D (base 16) Cooler Master Technology Inc
8F., No. 788-1, Zhongzheng Rd., Zhonghe Dist.
@@ -103421,11 +103961,11 @@ C8A40D (base 16) Cooler Master Technology Inc
Santa Barbara CA 93101
US
-E4-D3-AA (hex) FUJITSU CONNECTED TECHNOLOGIES LIMITED
-E4D3AA (base 16) FUJITSU CONNECTED TECHNOLOGIES LIMITED
- Sanki Yamato Building, 7-10-1 Chuorinkan
- Yamato Kanagawa 242-8588
- JP
+C8-3A-6B (hex) Roku, Inc
+C83A6B (base 16) Roku, Inc
+ 1155 Coleman Ave
+ San Jose CA 95110
+ US
A4-53-EE (hex) IEEE Registration Authority
A453EE (base 16) IEEE Registration Authority
@@ -103433,17 +103973,35 @@ A453EE (base 16) IEEE Registration Authority
Piscataway NJ 08554
US
-C8-E2-65 (hex) Intel Corporate
-C8E265 (base 16) Intel Corporate
- Lot 8, Jalan Hi-Tech 2/3
- Kulim Kedah 09000
- MY
+8C-49-62 (hex) Roku, Inc
+8C4962 (base 16) Roku, Inc
+ 1155 Coleman Ave
+ San Jose CA 95110
+ US
-8C-8D-28 (hex) Intel Corporate
-8C8D28 (base 16) Intel Corporate
- Lot 8, Jalan Hi-Tech 2/3
- Kulim Kedah 09000
- MY
+E0-2E-3F (hex) Huawei Device Co., Ltd.
+E02E3F (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+C4-BF-60 (hex) TECNO MOBILE LIMITED
+C4BF60 (base 16) TECNO MOBILE LIMITED
+ ROOMS 05-15, 13A/F., SOUTH TOWER, WORLD FINANCE CENTRE, HARBOUR CITY, 17 CANTON ROAD, TSIM SHA TSUI, KOWLOON, HONG KONG
+ Hong Kong Hong Kong 999077
+ HK
+
+D0-40-EF (hex) Murata Manufacturing Co., Ltd.
+D040EF (base 16) Murata Manufacturing Co., Ltd.
+ 1-10-1, Higashikotari
+ Nagaokakyo-shi Kyoto 617-8555
+ JP
+
+8C-8C-AA (hex) LCFC(HeFei) Electronics Technology co., ltd
+8C8CAA (base 16) LCFC(HeFei) Electronics Technology co., ltd
+ YunGu Road 3188-1
+ Hefei Anhui 230000
+ CN
90-CC-DF (hex) Intel Corporate
90CCDF (base 16) Intel Corporate
@@ -103469,6 +104027,318 @@ E02BE9 (base 16) Intel Corporate
Kulim Kedah 09000
MY
+BC-9A-53 (hex) Huawei Device Co., Ltd.
+BC9A53 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+DC-27-27 (hex) Huawei Device Co., Ltd.
+DC2727 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+F0-42-F5 (hex) Huawei Device Co., Ltd.
+F042F5 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+4C-11-54 (hex) Mobiwire Mobiles (NingBo) Co., LTD
+4C1154 (base 16) Mobiwire Mobiles (NingBo) Co., LTD
+ No.999 Dacheng East Road, Fenghua District, Ningbo City , Zhejiang Province, PRC
+ Ningbo Zhejiang 315500
+ CN
+
+C8-E2-65 (hex) Intel Corporate
+C8E265 (base 16) Intel Corporate
+ Lot 8, Jalan Hi-Tech 2/3
+ Kulim Kedah 09000
+ MY
+
+8C-8D-28 (hex) Intel Corporate
+8C8D28 (base 16) Intel Corporate
+ Lot 8, Jalan Hi-Tech 2/3
+ Kulim Kedah 09000
+ MY
+
+D0-56-BF (hex) AMOSENSE
+D056BF (base 16) AMOSENSE
+ Narutu street 56
+ SEOUL Sucho gu 06527
+ KR
+
+B4-B5-B6 (hex) CHONGQING FUGUI ELECTRONICS CO.,LTD.
+B4B5B6 (base 16) CHONGQING FUGUI ELECTRONICS CO.,LTD.
+ Building D21,No.1, East Zone 1st Road,Xiyong Town,Shapingba District
+ Chongqing Chongqing 401332
+ CN
+
+04-7A-0B (hex) Beijing Xiaomi Electronics Co., Ltd.
+047A0B (base 16) Beijing Xiaomi Electronics Co., Ltd.
+ Building C, QingHe ShunShiJiaYe Technology Park, #66 ZhuFang Rd, HaiDian District
+ Beijing Beijing 10085
+ CN
+
+90-0F-0C (hex) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.
+900F0C (base 16) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.
+ B22 Building,NO.51 Tongle Road, Shajing Town, Jiangnan District, Nanning, Guangxi Province, China
+ Nanning Guangxi 530007
+ CN
+
+F0-A2-25 (hex) Amazon Technologies Inc.
+F0A225 (base 16) Amazon Technologies Inc.
+ P.O Box 8102
+ Reno NV 89507
+ US
+
+F0-4F-7C (hex) Amazon Technologies Inc.
+F04F7C (base 16) Amazon Technologies Inc.
+ P.O Box 8102
+ Reno NV 89507
+ US
+
+BC-9D-42 (hex) SHENZHEN RF-LINK TECHNOLOGY CO.,LTD.
+BC9D42 (base 16) SHENZHEN RF-LINK TECHNOLOGY CO.,LTD.
+ Bldg56A,6/F,Baotian Rd3,Xixiang Town,Baoan District,
+ Shenzhen Guangdong 518000
+ CN
+
+4C-75-25 (hex) Espressif Inc.
+4C7525 (base 16) Espressif Inc.
+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area
+ Shanghai Shanghai 201203
+ CN
+
+74-04-F0 (hex) Mobiwire Mobiles (NingBo) Co., LTD
+7404F0 (base 16) Mobiwire Mobiles (NingBo) Co., LTD
+ No.999 Dacheng East Road, Fenghua District, Ningbo City , Zhejiang Province, PRC
+ Ningbo Zhejiang 315500
+ CN
+
+24-0B-88 (hex) Taicang T&W Electronics
+240B88 (base 16) Taicang T&W Electronics
+ 89# Jiang Nan RD
+ Suzhou Jiangsu 215412
+ CN
+
+0C-93-8F (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+0C938F (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+ NO.18 HAIBIN ROAD,
+ DONG GUAN GUANG DONG 523860
+ CN
+
+78-F9-B4 (hex) Nokia Solutions and Networks GmbH & Co. KG
+78F9B4 (base 16) Nokia Solutions and Networks GmbH & Co. KG
+ Werinherstrasse 91
+ München Bavaria D-81541
+ DE
+
+60-A8-FE (hex) Nokia Solutions and Networks GmbH & Co. KG
+60A8FE (base 16) Nokia Solutions and Networks GmbH & Co. KG
+ Werinherstrasse 91
+ München Bavaria D-81541
+ DE
+
+D8-EF-CD (hex) Nokia Solutions and Networks GmbH & Co. KG
+D8EFCD (base 16) Nokia Solutions and Networks GmbH & Co. KG
+ Werinherstrasse 91
+ München Bavaria D-81541
+ DE
+
+6C-F7-12 (hex) Nokia Solutions and Networks GmbH & Co. KG
+6CF712 (base 16) Nokia Solutions and Networks GmbH & Co. KG
+ Werinherstrasse 91
+ München Bavaria D-81541
+ DE
+
+EC-75-ED (hex) Citrix Systems, Inc.
+EC75ED (base 16) Citrix Systems, Inc.
+ 851 W Cypress Creek Rd
+ Fort Lauderdale FL 33309
+ US
+
+5C-BD-9A (hex) Huawei Device Co., Ltd.
+5CBD9A (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+8C-DE-E6 (hex) Samsung Electronics Co.,Ltd
+8CDEE6 (base 16) Samsung Electronics Co.,Ltd
+ #94-1, Imsoo-Dong
+ Gumi Gyeongbuk 730-350
+ KR
+
+10-EC-81 (hex) Samsung Electronics Co.,Ltd
+10EC81 (base 16) Samsung Electronics Co.,Ltd
+ #94-1, Imsoo-Dong
+ Gumi Gyeongbuk 730-350
+ KR
+
+C4-5D-83 (hex) Samsung Electronics Co.,Ltd
+C45D83 (base 16) Samsung Electronics Co.,Ltd
+ #94-1, Imsoo-Dong
+ Gumi Gyeongbuk 730-350
+ KR
+
+5C-A4-A4 (hex) Fiberhome Telecommunication Technologies Co.,LTD
+5CA4A4 (base 16) Fiberhome Telecommunication Technologies Co.,LTD
+ No.5 DongXin Road
+ Wuhan Hubei 430074
+ CN
+
+14-A3-B4 (hex) Huawei Device Co., Ltd.
+14A3B4 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+9C-9C-1F (hex) Espressif Inc.
+9C9C1F (base 16) Espressif Inc.
+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area
+ Shanghai Shanghai 201203
+ CN
+
+D8-09-D6 (hex) ZEXELON CO., LTD.
+D809D6 (base 16) ZEXELON CO., LTD.
+ 195 Tonohiraga,
+ Matsudo-City Chiba 270-0004
+ JP
+
+E8-6D-E9 (hex) HUAWEI TECHNOLOGIES CO.,LTD
+E86DE9 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
+ CN
+
+14-46-58 (hex) HUAWEI TECHNOLOGIES CO.,LTD
+144658 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
+ CN
+
+58-BE-72 (hex) HUAWEI TECHNOLOGIES CO.,LTD
+58BE72 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
+ CN
+
+10-8F-FE (hex) HUAWEI TECHNOLOGIES CO.,LTD
+108FFE (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
+ CN
+
+BC-D7-CE (hex) China Mobile (Hangzhou) Information Technology Co., Ltd.
+BCD7CE (base 16) China Mobile (Hangzhou) Information Technology Co., Ltd.
+ No. 1600 Yuhangtang Road, Wuchang Street, Yuhang District, Hangzhou, Zhejiang
+ Hangzhou Zhejiang 310000
+ CN
+
+9C-A5-70 (hex) eero inc.
+9CA570 (base 16) eero inc.
+ 660 3rd Street
+ San Francisco CA 94107
+ US
+
+A0-41-2D (hex) Lansen Systems AB
+A0412D (base 16) Lansen Systems AB
+ Skallebackavägen 3
+ Halmstad 30241
+ SE
+
+C4-39-60 (hex) GD Midea Air-Conditioning Equipment Co.,Ltd.
+C43960 (base 16) GD Midea Air-Conditioning Equipment Co.,Ltd.
+ Midea Global Innovation Center,Beijiao Town,Shunde
+ Foshan Guangdong 528311
+ CN
+
+98-BE-DC (hex) Honor Device Co., Ltd.
+98BEDC (base 16) Honor Device Co., Ltd.
+ A1701, Block AB, Building 1, Tianan Yungu Phase I, Gangtou Community, Bantian Street
+ Shenzhen Guangdong 518129
+ CN
+
+44-B6-BE (hex) Cisco Systems, Inc
+44B6BE (base 16) Cisco Systems, Inc
+ 80 West Tasman Drive
+ San Jose CA 94568
+ US
+
+00-A0-FB (hex) Toray Engineering D Solutions Co., Ltd.
+00A0FB (base 16) Toray Engineering D Solutions Co., Ltd.
+ 1-45, OE 1-CHOME
+ OTSU CITY 520-2141
+ JP
+
+70-61-BE (hex) Wistron Neweb Corporation
+7061BE (base 16) Wistron Neweb Corporation
+ No.20,Park Avenue II,Hsinchu Science Park
+ Hsin-Chu R.O.C. 308
+ TW
+
+34-8A-12 (hex) Aruba, a Hewlett Packard Enterprise Company
+348A12 (base 16) Aruba, a Hewlett Packard Enterprise Company
+ 3333 Scott Blvd
+ Santa Clara CA 95054
+ US
+
+84-D3-43 (hex) Calix Inc.
+84D343 (base 16) Calix Inc.
+ 2777 Orchard Pkwy
+ San Jose CA 95131
+ US
+
+D8-47-BB (hex) Huawei Device Co., Ltd.
+D847BB (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+C4-14-11 (hex) Apple, Inc.
+C41411 (base 16) Apple, Inc.
+ 1 Infinite Loop
+ Cupertino CA 95014
+ US
+
+CC-C9-5D (hex) Apple, Inc.
+CCC95D (base 16) Apple, Inc.
+ 1 Infinite Loop
+ Cupertino CA 95014
+ US
+
+38-B5-D3 (hex) SecuWorks
+38B5D3 (base 16) SecuWorks
+ #709, 218 Gajeong-ro
+ Yuseong -gu Daejeon 34129
+ KR
+
+34-31-8F (hex) Apple, Inc.
+34318F (base 16) Apple, Inc.
+ 1 Infinite Loop
+ Cupertino CA 95014
+ US
+
+44-6F-D8 (hex) IEEE Registration Authority
+446FD8 (base 16) IEEE Registration Authority
+ 445 Hoes Lane
+ Piscataway NJ 08554
+ US
+
+34-56-FE (hex) Cisco Meraki
+3456FE (base 16) Cisco Meraki
+ 500 Terry A. Francois Blvd
+ San Francisco 94158
+ US
+
+B8-07-56 (hex) Cisco Meraki
+B80756 (base 16) Cisco Meraki
+ 500 Terry A. Francois Blvd
+ San Francisco 94158
+ US
+
F8-D0-27 (hex) Seiko Epson Corporation
F8D027 (base 16) Seiko Epson Corporation
2070 Kotobuki Koaka
@@ -103946,12 +104816,6 @@ C4411E (base 16) Belkin International Inc.
Playa Vista null 90094
US
-00-77-E4 (hex) Nokia
-0077E4 (base 16) Nokia
- Karaportti 3
- Espoo Finland 02610
- FI
-
00-AD-63 (hex) Dedicated Micros Malta LTD
00AD63 (base 16) Dedicated Micros Malta LTD
Blb017, Qasam Industrijali Bulebel
@@ -106013,12 +106877,6 @@ FCFBFB (base 16) Cisco Systems, Inc
Seoul 153-801
KR
-68-3A-1E (hex) Cisco Meraki
-683A1E (base 16) Cisco Meraki
- 500 Terry A. Francois Blvd
- San Francisco null 94158
- US
-
00-10-17 (hex) Bosch Access Systems GmbH
001017 (base 16) Bosch Access Systems GmbH
Charlottenburger Allee 50
@@ -106661,12 +107519,6 @@ DC729B (base 16) HUAWEI TECHNOLOGIES CO.,LTD
ganzhou jiangxi 341700
CN
-84-DB-9E (hex) Aifloo AB
-84DB9E (base 16) Aifloo AB
- Postbox 2005
- Stockholm 10311
- SE
-
0C-C6-CC (hex) HUAWEI TECHNOLOGIES CO.,LTD
0CC6CC (base 16) HUAWEI TECHNOLOGIES CO.,LTD
No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
@@ -107417,12 +108269,6 @@ C421C8 (base 16) KYOCERA CORPORATION
Yokohama-shi Kanagawa 224-8502
JP
-48-EC-5B (hex) Nokia
-48EC5B (base 16) Nokia
- Karaportti 3
- Espoo Finland 02610
- FI
-
70-58-12 (hex) Panasonic Corporation AVC Networks Company
705812 (base 16) Panasonic Corporation AVC Networks Company
1-15 Matsuo-cho
@@ -107807,12 +108653,6 @@ B8F8BE (base 16) BLUECOM
consolidation consolidation
AU
-E0-CB-BC (hex) Cisco Meraki
-E0CBBC (base 16) Cisco Meraki
- 500 Terry A. Francois Blvd
- San Francisco null 94158
- US
-
64-47-E0 (hex) Feitian Technologies Co., Ltd
6447E0 (base 16) Feitian Technologies Co., Ltd
Floor 17, Tower B, Huizhi Mansion, No.9 Xueqing Rd, Haidian District
@@ -128960,12 +129800,6 @@ A07332 (base 16) Cashmaster International Limited
Seoul 152-721
KR
-00-08-B0 (hex) BKtel communications GmbH
-0008B0 (base 16) BKtel communications GmbH
- Benzstraße 4
- 41836 Hückelhoven-Baal NRW 41836
- DE
-
00-08-CA (hex) TwinHan Technology Co.,Ltd
0008CA (base 16) TwinHan Technology Co.,Ltd
13F-6,No 79,Sec 1,Hsin Tai Wu RD.,Hsi-Ch
@@ -135428,18 +136262,18 @@ ACF8CC (base 16) ARRIS Group, Inc.
REDMOND 98052
US
-C8-53-E1 (hex) Beijing Bytedance Network Technology Co., Ltd
-C853E1 (base 16) Beijing Bytedance Network Technology Co., Ltd
- No.1 Building, Zhonghang Square, West Road of the Northern 3rd Circuit, Haidian Distrct
- Beijing Beijing 100098
- CN
-
CC-D4-2E (hex) Arcadyan Corporation
CCD42E (base 16) Arcadyan Corporation
No.8, Sec.2, Guangfu Rd.
Hsinchu City Hsinchu 30071
TW
+C8-53-E1 (hex) Beijing Bytedance Network Technology Co., Ltd
+C853E1 (base 16) Beijing Bytedance Network Technology Co., Ltd
+ No.1 Building, Zhonghang Square, West Road of the Northern 3rd Circuit, Haidian Distrct
+ Beijing Beijing 100098
+ CN
+
14-16-9D (hex) Cisco Systems, Inc
14169D (base 16) Cisco Systems, Inc
80 West Tasman Drive
@@ -135458,17 +136292,17 @@ CCD42E (base 16) Arcadyan Corporation
Piscataway NJ 08554
US
-04-8C-16 (hex) HUAWEI TECHNOLOGIES CO.,LTD
-048C16 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
- Dongguan 523808
+F0-08-D1 (hex) Espressif Inc.
+F008D1 (base 16) Espressif Inc.
+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area
+ Shanghai Shanghai 201203
CN
-98-DD-5B (hex) TAKUMI JAPAN LTD
-98DD5B (base 16) TAKUMI JAPAN LTD
- 3-9-3 Uchiyama building 7F Nishishinbashi
- Minato-ku Tokyo Tokyo 1050003
- JP
+58-94-B2 (hex) BrainCo
+5894B2 (base 16) BrainCo
+ ????????????????1107?
+ ??? ??? 518000
+ CN
B0-95-75 (hex) TP-LINK TECHNOLOGIES CO.,LTD.
B09575 (base 16) TP-LINK TECHNOLOGIES CO.,LTD.
@@ -135476,36 +136310,42 @@ B09575 (base 16) TP-LINK TECHNOLOGIES CO.,LTD.
Shenzhen Guangdong 518057
CN
-F0-08-D1 (hex) Espressif Inc.
-F008D1 (base 16) Espressif Inc.
- Room 204, Building 2, 690 Bibo Rd, Pudong New Area
- Shanghai Shanghai 201203
- CN
-
B4-B0-55 (hex) HUAWEI TECHNOLOGIES CO.,LTD
B4B055 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
Dongguan 523808
CN
+04-8C-16 (hex) HUAWEI TECHNOLOGIES CO.,LTD
+048C16 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
+ CN
+
+98-DD-5B (hex) TAKUMI JAPAN LTD
+98DD5B (base 16) TAKUMI JAPAN LTD
+ 3-9-3 Uchiyama building 7F Nishishinbashi
+ Minato-ku Tokyo Tokyo 1050003
+ JP
+
+3C-5C-F1 (hex) eero inc.
+3C5CF1 (base 16) eero inc.
+ 660 3rd Street
+ San Francisco CA 94107
+ US
+
14-AE-85 (hex) IEEE Registration Authority
14AE85 (base 16) IEEE Registration Authority
445 Hoes Lane
Piscataway NJ 08554
US
-58-94-B2 (hex) BrainCo
-5894B2 (base 16) BrainCo
- ????????????????1107?
- ??? ??? 518000
+90-74-9D (hex) IRay Technology Co., Ltd.
+90749D (base 16) IRay Technology Co., Ltd.
+ 11th Guiyang St.,
+ Yantai Shandong 264000
CN
-64-5C-F3 (hex) ParanTek Inc.
-645CF3 (base 16) ParanTek Inc.
- 3F, 40-15 Gilju-Ro, 411 Beon-Gil
- Wonmi-Gu, Bucheon City Gyeonggi-Do 14488
- KR
-
8C-3B-32 (hex) Microfan B.V.
8C3B32 (base 16) Microfan B.V.
Industriestraat 23
@@ -135518,16 +136358,16 @@ D0D3E0 (base 16) Aruba, a Hewlett Packard Enterprise Company
Santa Clara CA 95054
US
-FC-39-64 (hex) ITEL MOBILE LIMITED
-FC3964 (base 16) ITEL MOBILE LIMITED
- RM B3 & B4 BLOCK B, KO FAI INDUSTRIAL BUILDING NO.7 KO FAI ROAD, YAU TONG, KLN, H.K
- Hong Kong KOWLOON 999077
- HK
+64-5C-F3 (hex) ParanTek Inc.
+645CF3 (base 16) ParanTek Inc.
+ 3F, 40-15 Gilju-Ro, 411 Beon-Gil
+ Wonmi-Gu, Bucheon City Gyeonggi-Do 14488
+ KR
-90-74-9D (hex) IRay Technology Co., Ltd.
-90749D (base 16) IRay Technology Co., Ltd.
- 11th Guiyang St.,
- Yantai Shandong 264000
+B0-CC-FE (hex) Huawei Device Co., Ltd.
+B0CCFE (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
CN
54-0D-F9 (hex) Huawei Device Co., Ltd.
@@ -135542,17 +136382,17 @@ FC3964 (base 16) ITEL MOBILE LIMITED
Dongguan Guangdong 523808
CN
-B0-CC-FE (hex) Huawei Device Co., Ltd.
-B0CCFE (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
- CN
+FC-39-64 (hex) ITEL MOBILE LIMITED
+FC3964 (base 16) ITEL MOBILE LIMITED
+ RM B3 & B4 BLOCK B, KO FAI INDUSTRIAL BUILDING NO.7 KO FAI ROAD, YAU TONG, KLN, H.K
+ Hong Kong KOWLOON 999077
+ HK
-3C-5C-F1 (hex) eero inc.
-3C5CF1 (base 16) eero inc.
- 660 3rd Street
- San Francisco CA 94107
- US
+14-47-2D (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+14472D (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+ NO.18 HAIBIN ROAD,
+ DONG GUAN GUANG DONG 523860
+ CN
E4-90-FD (hex) Apple, Inc.
E490FD (base 16) Apple, Inc.
@@ -135560,14 +136400,20 @@ E490FD (base 16) Apple, Inc.
Cupertino CA 95014
US
-D0-65-44 (hex) Apple, Inc.
-D06544 (base 16) Apple, Inc.
+84-AB-1A (hex) Apple, Inc.
+84AB1A (base 16) Apple, Inc.
1 Infinite Loop
Cupertino CA 95014
US
-84-AB-1A (hex) Apple, Inc.
-84AB1A (base 16) Apple, Inc.
+20-6D-31 (hex) FIREWALLA INC
+206D31 (base 16) FIREWALLA INC
+ 75 E. Santa Clara St. STE 600
+ San Jose CA 95113
+ US
+
+D0-65-44 (hex) Apple, Inc.
+D06544 (base 16) Apple, Inc.
1 Infinite Loop
Cupertino CA 95014
US
@@ -135590,11 +136436,23 @@ F84FAD (base 16) Hui Zhou Gaoshengda Technology Co.,LTD
Burnaby BC V5H 4H2
CA
-20-6D-31 (hex) FIREWALLA INC
-206D31 (base 16) FIREWALLA INC
- 75 E. Santa Clara St. STE 600
- San Jose CA 95113
- US
+3C-80-6B (hex) Hunan Voc Acoustics Technology Co., Ltd.
+3C806B (base 16) Hunan Voc Acoustics Technology Co., Ltd.
+ State Industrialpark, Jiulong Development Zone, Yanling County
+ Zhuzhou Hunan 412500
+ CN
+
+60-DE-35 (hex) GITSN, Inc.
+60DE35 (base 16) GITSN, Inc.
+ #601~602, Daerung Post Tower 1, 288, Digital-ro
+ Guro-gu Seoul 08390
+ KR
+
+28-31-7E (hex) Hongkong Nano IC Technologies Co., Ltd
+28317E (base 16) Hongkong Nano IC Technologies Co., Ltd
+ Rm. 19C, Lockhart Ctr., 301-307 Lockhart Rd., Wan Chai, Hong Kong.
+ Hongkong 999077
+ CN
A8-41-22 (hex) China Mobile (Hangzhou) Information Technology Co.,Ltd.
A84122 (base 16) China Mobile (Hangzhou) Information Technology Co.,Ltd.
@@ -135602,12 +136460,6 @@ A84122 (base 16) China Mobile (Hangzhou) Information Technology Co.,Ltd.
Hangzhou Zhejiang 310000
CN
-14-47-2D (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
-14472D (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
- NO.18 HAIBIN ROAD,
- DONG GUAN GUANG DONG 523860
- CN
-
6C-DD-BC (hex) Samsung Electronics Co.,Ltd
6CDDBC (base 16) Samsung Electronics Co.,Ltd
#94-1, Imsoo-Dong
@@ -135620,41 +136472,17 @@ CC7F76 (base 16) Cisco Systems, Inc
San Jose CA 94568
US
-3C-80-6B (hex) Hunan Voc Acoustics Technology Co., Ltd.
-3C806B (base 16) Hunan Voc Acoustics Technology Co., Ltd.
- State Industrialpark, Jiulong Development Zone, Yanling County
- Zhuzhou Hunan 412500
- CN
-
-60-DE-35 (hex) GITSN, Inc.
-60DE35 (base 16) GITSN, Inc.
- #601~602, Daerung Post Tower 1, 288, Digital-ro
- Guro-gu Seoul 08390
- KR
-
-28-31-7E (hex) Hongkong Nano IC Technologies Co., Ltd
-28317E (base 16) Hongkong Nano IC Technologies Co., Ltd
- Rm. 19C, Lockhart Ctr., 301-307 Lockhart Rd., Wan Chai, Hong Kong.
- Hongkong 999077
- CN
-
40-BC-68 (hex) Wuhan Funshion Online Technologies Co.,Ltd
40BC68 (base 16) Wuhan Funshion Online Technologies Co.,Ltd
5th Floor,Financial Port Building A9,No.77 Optical Valley Avenue, East Lake High-Tech Development Zone, Wuhan
Wuhan CN/Hubei 430000
CN
-B8-02-A4 (hex) Aeonsemi, Inc.
-B802A4 (base 16) Aeonsemi, Inc.
- Cassia Court, Suite 716, 10 Market Street
- Camana Bay Grand Cayman KY1-9006
- KY
-
-E4-83-26 (hex) HUAWEI TECHNOLOGIES CO.,LTD
-E48326 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
- Dongguan 523808
- CN
+DC-98-40 (hex) Microsoft Corporation
+DC9840 (base 16) Microsoft Corporation
+ One Microsoft Way
+ REDMOND 98052
+ US
44-76-54 (hex) HUAWEI TECHNOLOGIES CO.,LTD
447654 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
@@ -135674,48 +136502,36 @@ F033E5 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
Dongguan 523808
CN
+B4-F1-8C (hex) Huawei Device Co., Ltd.
+B4F18C (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
B8-CE-F6 (hex) Mellanox Technologies, Inc.
B8CEF6 (base 16) Mellanox Technologies, Inc.
350 Oakmead Parkway, Suite 100
Sunnyvale CA 94085
US
+B8-02-A4 (hex) Aeonsemi, Inc.
+B802A4 (base 16) Aeonsemi, Inc.
+ Cassia Court, Suite 716, 10 Market Street
+ Camana Bay Grand Cayman KY1-9006
+ KY
+
+E4-83-26 (hex) HUAWEI TECHNOLOGIES CO.,LTD
+E48326 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
+ CN
+
94-05-BB (hex) IEEE Registration Authority
9405BB (base 16) IEEE Registration Authority
445 Hoes Lane
Piscataway NJ 08554
US
-DC-98-40 (hex) Microsoft Corporation
-DC9840 (base 16) Microsoft Corporation
- One Microsoft Way
- REDMOND 98052
- US
-
-B4-F1-8C (hex) Huawei Device Co., Ltd.
-B4F18C (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
- CN
-
-C4-32-D1 (hex) Farlink Technology Limited
-C432D1 (base 16) Farlink Technology Limited
- Flat A&B,9/F,Wing Cheong Factory Building,121 King Lam Street,Cheung Sha Wan,Hong Kong.
- Hongkong 0000
- HK
-
-C8-D7-78 (hex) BSH Hausgeraete GmbH
-C8D778 (base 16) BSH Hausgeraete GmbH
- Im Gewerbepark B10
- Regensburg 93059
- DE
-
-18-69-D8 (hex) HANGZHOU AIXIANGJI TECHNOLOGY CO., LTD
-1869D8 (base 16) HANGZHOU AIXIANGJI TECHNOLOGY CO., LTD
- 7 Floor, 3 Blvd., More Centre, 87 Gudun Rd., Xihu District
- Hangzhou Zhejiang 310012
- CN
-
8C-5F-AD (hex) Fiberhome Telecommunication Technologies Co.,LTD
8C5FAD (base 16) Fiberhome Telecommunication Technologies Co.,LTD
No.5 DongXin Road
@@ -135734,6 +136550,12 @@ ACC25D (base 16) Fiberhome Telecommunication Technologies Co.,LTD
Kanata Ontario K2K 2E6
CA
+C4-32-D1 (hex) Farlink Technology Limited
+C432D1 (base 16) Farlink Technology Limited
+ Flat A&B,9/F,Wing Cheong Factory Building,121 King Lam Street,Cheung Sha Wan,Hong Kong.
+ Hongkong 0000
+ HK
+
CC-41-8E (hex) MSA Innovation
CC418E (base 16) MSA Innovation
1100 Cranberry Woods Road
@@ -135752,12 +136574,6 @@ CCA7C1 (base 16) Google, Inc.
San Francisco 94158
US
-68-49-B2 (hex) CARLO GAVAZZI LTD
-6849B2 (base 16) CARLO GAVAZZI LTD
- BLB042, Bulebel Industrial Estate
- Zejtun ZTN 3000
- MT
-
7C-9E-BD (hex) Espressif Inc.
7C9EBD (base 16) Espressif Inc.
Room 204, Building 2, 690 Bibo Rd, Pudong New Area
@@ -135770,11 +136586,11 @@ CCA7C1 (base 16) Google, Inc.
DONG GUAN GUANG DONG 523860
CN
-C0-95-DA (hex) NXP India Private Limited
-C095DA (base 16) NXP India Private Limited
- 1st Floor, Muttha Towers, Don Bosco Marg, Off Airport Road, Yerwada
- Pune Maharashtra 411006
- IN
+C8-D7-78 (hex) BSH Hausgeraete GmbH
+C8D778 (base 16) BSH Hausgeraete GmbH
+ Im Gewerbepark B10
+ Regensburg 93059
+ DE
9C-61-1D (hex) Panasonic Corporation of North America
9C611D (base 16) Panasonic Corporation of North America
@@ -135782,18 +136598,36 @@ C095DA (base 16) NXP India Private Limited
Rochester NY 14615
US
+C0-95-DA (hex) NXP India Private Limited
+C095DA (base 16) NXP India Private Limited
+ 1st Floor, Muttha Towers, Don Bosco Marg, Off Airport Road, Yerwada
+ Pune Maharashtra 411006
+ IN
+
B4-22-00 (hex) Brother Industries, LTD.
B42200 (base 16) Brother Industries, LTD.
15-1, Naeshirocho, Mizuho-ku
NAGOYA 4678561
JP
+68-49-B2 (hex) CARLO GAVAZZI LTD
+6849B2 (base 16) CARLO GAVAZZI LTD
+ BLB042, Bulebel Industrial Estate
+ Zejtun ZTN 3000
+ MT
+
48-7A-FF (hex) ESSYS
487AFF (base 16) ESSYS
gaetbeol-ro
Incheon 21999
KR
+40-B6-E7 (hex) Huawei Device Co., Ltd.
+40B6E7 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
D0-B4-5D (hex) Huawei Device Co., Ltd.
D0B45D (base 16) Huawei Device Co., Ltd.
No.2 of Xincheng Road, Songshan Lake Zone
@@ -135806,12 +136640,6 @@ D0B45D (base 16) Huawei Device Co., Ltd.
Dongguan Guangdong 523808
CN
-00-9E-EE (hex) Positivo Tecnologia S.A.
-009EEE (base 16) Positivo Tecnologia S.A.
- João Bettega, 5200
- Curitiba Paraná 81350-000
- BR
-
A4-C5-4E (hex) Huawei Device Co., Ltd.
A4C54E (base 16) Huawei Device Co., Ltd.
No.2 of Xincheng Road, Songshan Lake Zone
@@ -135824,54 +136652,54 @@ D4BBE6 (base 16) Huawei Device Co., Ltd.
Dongguan Guangdong 523808
CN
-40-B6-E7 (hex) Huawei Device Co., Ltd.
-40B6E7 (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
- CN
+00-9E-EE (hex) Positivo Tecnologia S.A.
+009EEE (base 16) Positivo Tecnologia S.A.
+ João Bettega, 5200
+ Curitiba Paraná 81350-000
+ BR
-9C-5D-12 (hex) Extreme Networks, Inc.
-9C5D12 (base 16) Extreme Networks, Inc.
+90-B8-32 (hex) Extreme Networks, Inc.
+90B832 (base 16) Extreme Networks, Inc.
1011 McCarthy Blvd
Milpitas CA 95035
US
-F0-9C-E9 (hex) Extreme Networks, Inc.
-F09CE9 (base 16) Extreme Networks, Inc.
+40-2F-86 (hex) LG Innotek
+402F86 (base 16) LG Innotek
+ 26, Hanamsandan 5beon-ro
+ Gwangju Gwangsan-gu 506-731
+ KR
+
+D4-22-CD (hex) Xsens Technologies B.V.
+D422CD (base 16) Xsens Technologies B.V.
+ Pantheon 6-a
+ Enschede 7521 PR
+ NL
+
+C8-67-5E (hex) Extreme Networks, Inc.
+C8675E (base 16) Extreme Networks, Inc.
1011 McCarthy Blvd
Milpitas CA 95035
US
-C4-13-E2 (hex) Extreme Networks, Inc.
-C413E2 (base 16) Extreme Networks, Inc.
+9C-5D-12 (hex) Extreme Networks, Inc.
+9C5D12 (base 16) Extreme Networks, Inc.
1011 McCarthy Blvd
Milpitas CA 95035
US
-90-B8-32 (hex) Extreme Networks, Inc.
-90B832 (base 16) Extreme Networks, Inc.
+F0-9C-E9 (hex) Extreme Networks, Inc.
+F09CE9 (base 16) Extreme Networks, Inc.
1011 McCarthy Blvd
Milpitas CA 95035
US
-C8-67-5E (hex) Extreme Networks, Inc.
-C8675E (base 16) Extreme Networks, Inc.
+C4-13-E2 (hex) Extreme Networks, Inc.
+C413E2 (base 16) Extreme Networks, Inc.
1011 McCarthy Blvd
Milpitas CA 95035
US
-40-2F-86 (hex) LG Innotek
-402F86 (base 16) LG Innotek
- 26, Hanamsandan 5beon-ro
- Gwangju Gwangsan-gu 506-731
- KR
-
-D4-22-CD (hex) Xsens Technologies B.V.
-D422CD (base 16) Xsens Technologies B.V.
- Pantheon 6-a
- Enschede 7521 PR
- NL
-
F4-EB-9F (hex) Ellu Company 2019 SL
F4EB9F (base 16) Ellu Company 2019 SL
Paseo de la Castellana 144 14B
@@ -135884,12 +136712,6 @@ E898C2 (base 16) ZETLAB Company
Zelenograd Moscow 124482
RU
-64-DD-E9 (hex) Xiaomi Communications Co Ltd
-64DDE9 (base 16) Xiaomi Communications Co Ltd
- The Rainbow City of China Resources
- NO.68, Qinghe Middle Street Haidian District, Beijing 100085
- CN
-
D4-1A-C8 (hex) Nippon Printer Engineering
D41AC8 (base 16) Nippon Printer Engineering
2660 Katsuyama
@@ -135902,12 +136724,6 @@ D41AC8 (base 16) Nippon Printer Engineering
Santa Ana CA 92707
US
-0C-81-7D (hex) EEP Elektro-Elektronik Pranjic GmbH
-0C817D (base 16) EEP Elektro-Elektronik Pranjic GmbH
- Am Luftschacht 21
- Gelsenkirchen 45886
- DE
-
00-0C-32 (hex) Avionic Design GmbH
000C32 (base 16) Avionic Design GmbH
Wragekamp 10
@@ -135920,6 +136736,48 @@ D41AC8 (base 16) Nippon Printer Engineering
Berlin 13509
DE
+F4-54-20 (hex) TELLESCOM INDUSTRIA E COMERCIO EM TELECOMUNICACAO
+F45420 (base 16) TELLESCOM INDUSTRIA E COMERCIO EM TELECOMUNICACAO
+ Av. Buriti, 1900 – Setor B – Distrito Industrial
+ Manaus Amazonas 69075-000
+ BR
+
+4C-40-88 (hex) SANSHIN ELECTRONICS CO.,LTD.
+4C4088 (base 16) SANSHIN ELECTRONICS CO.,LTD.
+ 4-4-12, Shiba, Minato-ku,
+ Tokyo 108-8404
+ JP
+
+64-DD-E9 (hex) Xiaomi Communications Co Ltd
+64DDE9 (base 16) Xiaomi Communications Co Ltd
+ The Rainbow City of China Resources
+ NO.68, Qinghe Middle Street Haidian District, Beijing 100085
+ CN
+
+0C-81-7D (hex) EEP Elektro-Elektronik Pranjic GmbH
+0C817D (base 16) EEP Elektro-Elektronik Pranjic GmbH
+ Am Luftschacht 21
+ Gelsenkirchen 45886
+ DE
+
+04-F5-F4 (hex) Proxim Wireless
+04F5F4 (base 16) Proxim Wireless
+ 2114 Ringwood Ave
+ San Jose CA 95131
+ US
+
+C8-BC-E5 (hex) Sense Things Japan INC.
+C8BCE5 (base 16) Sense Things Japan INC.
+ 3-5-7 Kawaramachi,Chuo-ku
+ Osaka 541-0048
+ JP
+
+E8-B4-70 (hex) IEEE Registration Authority
+E8B470 (base 16) IEEE Registration Authority
+ 445 Hoes Lane
+ Piscataway NJ 08554
+ US
+
00-1B-ED (hex) Brocade Communications Systems LLC
001BED (base 16) Brocade Communications Systems LLC
1320 Ridder Park Dr
@@ -135938,18 +136796,6 @@ D41AC8 (base 16) Nippon Printer Engineering
San Jose CA 95131
US
-B0-45-02 (hex) Huawei Device Co., Ltd.
-B04502 (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
- CN
-
-1C-1F-F1 (hex) Huawei Device Co., Ltd.
-1C1FF1 (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
- CN
-
60-9C-9F (hex) Brocade Communications Systems LLC
609C9F (base 16) Brocade Communications Systems LLC
1320 Ridder Park Dr
@@ -135980,35 +136826,17 @@ B04502 (base 16) Huawei Device Co., Ltd.
San Jose CA 95131
US
-F4-54-20 (hex) TELLESCOM INDUSTRIA E COMERCIO EM TELECOMUNICACAO
-F45420 (base 16) TELLESCOM INDUSTRIA E COMERCIO EM TELECOMUNICACAO
- Av. Buriti, 1900 – Setor B – Distrito Industrial
- Manaus Amazonas 69075-000
- BR
-
-4C-40-88 (hex) SANSHIN ELECTRONICS CO.,LTD.
-4C4088 (base 16) SANSHIN ELECTRONICS CO.,LTD.
- 4-4-12, Shiba, Minato-ku,
- Tokyo 108-8404
- JP
-
-04-F5-F4 (hex) Proxim Wireless
-04F5F4 (base 16) Proxim Wireless
- 2114 Ringwood Ave
- San Jose CA 95131
- US
-
-C8-BC-E5 (hex) Sense Things Japan INC.
-C8BCE5 (base 16) Sense Things Japan INC.
- 3-5-7 Kawaramachi,Chuo-ku
- Osaka 541-0048
- JP
+B0-45-02 (hex) Huawei Device Co., Ltd.
+B04502 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
-E8-B4-70 (hex) IEEE Registration Authority
-E8B470 (base 16) IEEE Registration Authority
- 445 Hoes Lane
- Piscataway NJ 08554
- US
+1C-1F-F1 (hex) Huawei Device Co., Ltd.
+1C1FF1 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
B4-EF-1C (hex) 360 AI Technology Co.Ltd
B4EF1C (base 16) 360 AI Technology Co.Ltd
@@ -136028,12 +136856,6 @@ B8F009 (base 16) Espressif Inc.
Shanghai Shanghai 201203
CN
-24-68-B0 (hex) Samsung Electronics Co.,Ltd
-2468B0 (base 16) Samsung Electronics Co.,Ltd
- #94-1, Imsoo-Dong
- Gumi Gyeongbuk 730-350
- KR
-
FC-71-FA (hex) Trane Technologies
FC71FA (base 16) Trane Technologies
6200 Troup Hwy.
@@ -136052,17 +136874,35 @@ CCBE59 (base 16) Calix Inc.
Merchtem Vlaams brabant 1785
BE
+30-FC-EB (hex) LG Electronics (Mobile Communications)
+30FCEB (base 16) LG Electronics (Mobile Communications)
+ 60-39, Gasan-dong, Geumcheon-gu
+ Seoul 153-801
+ KR
+
+24-68-B0 (hex) Samsung Electronics Co.,Ltd
+2468B0 (base 16) Samsung Electronics Co.,Ltd
+ #94-1, Imsoo-Dong
+ Gumi Gyeongbuk 730-350
+ KR
+
+1C-13-38 (hex) Kimball Electronics Group, LLC
+1C1338 (base 16) Kimball Electronics Group, LLC
+ 1205 Kimball Blvd
+ Jasper IN 47546
+ US
+
9C-ED-FA (hex) EVUlution AG
9CEDFA (base 16) EVUlution AG
Via da Clalt 12
Poschiavo GR 7742
CH
-9C-19-C2 (hex) Dongguan Liesheng Electronic Co., Ltd.
-9C19C2 (base 16) Dongguan Liesheng Electronic Co., Ltd.
- F5, Building B, North Block, Gaosheng Tech Park, No. 84 Zhongli Road, Nancheng District, Dongguan Ci
- dongguan guangdong 523000
- CN
+EC-63-ED (hex) Hyundai Autoever Corp.
+EC63ED (base 16) Hyundai Autoever Corp.
+ 38, Teheran-ro 114-gil
+ Gangnam-gu, Seoul 06176
+ KR
D4-67-61 (hex) XonTel Technology Co.
D46761 (base 16) XonTel Technology Co.
@@ -136070,47 +136910,29 @@ D46761 (base 16) XonTel Technology Co.
Kuwait 0000
KW
-74-CB-F3 (hex) Lava international limited
-74CBF3 (base 16) Lava international limited
- A-154D, Sector-63
- Noida Uttar Pradesh 201301
- IN
-
E4-41-22 (hex) OnePlus Technology (Shenzhen) Co., Ltd
E44122 (base 16) OnePlus Technology (Shenzhen) Co., Ltd
18C02, 18C03, 18C04 ,18C05,TAIRAN BUILDING,
Shenzhen Guangdong 518000
CN
-1C-13-38 (hex) Kimball Electronics Group, LLC
-1C1338 (base 16) Kimball Electronics Group, LLC
- 1205 Kimball Blvd
- Jasper IN 47546
- US
-
-30-FC-EB (hex) LG Electronics (Mobile Communications)
-30FCEB (base 16) LG Electronics (Mobile Communications)
- 60-39, Gasan-dong, Geumcheon-gu
- Seoul 153-801
- KR
-
-EC-63-ED (hex) Hyundai Autoever Corp.
-EC63ED (base 16) Hyundai Autoever Corp.
- 38, Teheran-ro 114-gil
- Gangnam-gu, Seoul 06176
- KR
+9C-19-C2 (hex) Dongguan Liesheng Electronic Co., Ltd.
+9C19C2 (base 16) Dongguan Liesheng Electronic Co., Ltd.
+ F5, Building B, North Block, Gaosheng Tech Park, No. 84 Zhongli Road, Nancheng District, Dongguan Ci
+ dongguan guangdong 523000
+ CN
-18-DF-C1 (hex) Aetheros
-18DFC1 (base 16) Aetheros
- 909 Montgomery Street, Suite 104
- San Francisco 94133
- US
+BC-26-A1 (hex) FACTORY FIVE Corporation
+BC26A1 (base 16) FACTORY FIVE Corporation
+ 3-391-1, Kamikitadai,
+ Higashiyamato Tokyo 207-0023
+ JP
-B0-5C-DA (hex) HP Inc.
-B05CDA (base 16) HP Inc.
- 10300 Energy Dr
- Spring TX 77389
- US
+74-CB-F3 (hex) Lava international limited
+74CBF3 (base 16) Lava international limited
+ A-154D, Sector-63
+ Noida Uttar Pradesh 201301
+ IN
F0-D1-4F (hex) LINEAR LLC
F0D14F (base 16) LINEAR LLC
@@ -136118,58 +136940,52 @@ F0D14F (base 16) LINEAR LLC
Carlsbad CA 92010
US
-24-79-EF (hex) Greenpacket Berhad, Taiwan
-2479EF (base 16) Greenpacket Berhad, Taiwan
- B-23A-3, The Ascent Paradigm, No. 1, Jalan SS7/26A, Kelana Jaya, 47301 Petaling Jaya
- Petaling Jaya Selangor 47301
- MY
-
-60-AA-EF (hex) Huawei Device Co., Ltd.
-60AAEF (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
- CN
-
-BC-26-A1 (hex) FACTORY FIVE Corporation
-BC26A1 (base 16) FACTORY FIVE Corporation
- 3-391-1, Kamikitadai,
- Higashiyamato Tokyo 207-0023
- JP
-
00-11-68 (hex) HomeLogic LLC
001168 (base 16) HomeLogic LLC
5919 Sea Otter Place
Carlsbad CA 92010
US
+18-DF-C1 (hex) Aetheros
+18DFC1 (base 16) Aetheros
+ 909 Montgomery Street, Suite 104
+ San Francisco 94133
+ US
+
+FC-BC-0E (hex) Zhejiang Cainiao Supply Chain Management Co., Ltd
+FCBC0E (base 16) Zhejiang Cainiao Supply Chain Management Co., Ltd
+ Block B1, XIXI center, No.588 West Wenyi Road, Xihu District
+ Hangzhou Zhejiang 310000
+ CN
+
2C-D0-66 (hex) Xiaomi Communications Co Ltd
2CD066 (base 16) Xiaomi Communications Co Ltd
The Rainbow City of China Resources
NO.68, Qinghe Middle Street Haidian District, Beijing 100085
CN
+B0-5C-DA (hex) HP Inc.
+B05CDA (base 16) HP Inc.
+ 10300 Energy Dr
+ Spring TX 77389
+ US
+
DC-BD-7A (hex) Guangzhou Shiyuan Electronic Technology Company Limited
DCBD7A (base 16) Guangzhou Shiyuan Electronic Technology Company Limited
No.6, 4th Yunpu Road, Yunpu industry District
Guangzhou Guangdong 510530
CN
-FC-BC-0E (hex) Zhejiang Cainiao Supply Chain Management Co., Ltd
-FCBC0E (base 16) Zhejiang Cainiao Supply Chain Management Co., Ltd
- Block B1, XIXI center, No.588 West Wenyi Road, Xihu District
- Hangzhou Zhejiang 310000
- CN
-
90-16-BA (hex) HUAWEI TECHNOLOGIES CO.,LTD
9016BA (base 16) HUAWEI TECHNOLOGIES CO.,LTD
No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
Dongguan 523808
CN
-D4-46-49 (hex) HUAWEI TECHNOLOGIES CO.,LTD
-D44649 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
- Dongguan 523808
+60-AA-EF (hex) Huawei Device Co., Ltd.
+60AAEF (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
CN
D0-F3-F5 (hex) Huawei Device Co., Ltd.
@@ -136178,23 +136994,23 @@ D0F3F5 (base 16) Huawei Device Co., Ltd.
Dongguan Guangdong 523808
CN
+D4-46-49 (hex) HUAWEI TECHNOLOGIES CO.,LTD
+D44649 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
+ CN
+
94-00-B0 (hex) HUAWEI TECHNOLOGIES CO.,LTD
9400B0 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
Dongguan 523808
CN
-C8-3D-FC (hex) AlphaTheta Corporation
-C83DFC (base 16) AlphaTheta Corporation
- 6F,Yokohama i-Mark Place, 4-4-5 Minatomirai, Nishi-ku
- Yokohama Kanagawa 220-0012
- JP
-
-E0-19-95 (hex) Nutanix
-E01995 (base 16) Nutanix
- 1740 Technology Drive Ste #150
- San Jose CA 95110
- US
+24-79-EF (hex) Greenpacket Berhad, Taiwan
+2479EF (base 16) Greenpacket Berhad, Taiwan
+ B-23A-3, The Ascent Paradigm, No. 1, Jalan SS7/26A, Kelana Jaya, 47301 Petaling Jaya
+ Petaling Jaya Selangor 47301
+ MY
AC-23-34 (hex) Infinix mobility limited
AC2334 (base 16) Infinix mobility limited
@@ -136214,6 +137030,12 @@ F8BC0E (base 16) eero inc.
San Francisco CA 94107
US
+50-E0-39 (hex) Zyxel Communications Corporation
+50E039 (base 16) Zyxel Communications Corporation
+ No. 6 Innovation Road II, Science Park
+ Hsichu Taiwan 300
+ TW
+
B8-57-76 (hex) lignex1
B85776 (base 16) lignex1
354-25, Sanhodae-ro
@@ -136226,11 +137048,17 @@ B85776 (base 16) lignex1
Hangzhou Zhejiang 311100
CN
-50-E0-39 (hex) Zyxel Communications Corporation
-50E039 (base 16) Zyxel Communications Corporation
- No. 6 Innovation Road II, Science Park
- Hsichu Taiwan 300
- TW
+C8-3D-FC (hex) AlphaTheta Corporation
+C83DFC (base 16) AlphaTheta Corporation
+ 6F,Yokohama i-Mark Place, 4-4-5 Minatomirai, Nishi-ku
+ Yokohama Kanagawa 220-0012
+ JP
+
+E0-19-95 (hex) Nutanix
+E01995 (base 16) Nutanix
+ 1740 Technology Drive Ste #150
+ San Jose CA 95110
+ US
F8-51-28 (hex) SimpliSafe
F85128 (base 16) SimpliSafe
@@ -136238,30 +137066,6 @@ F85128 (base 16) SimpliSafe
Boston MA 02108
US
-D8-DC-40 (hex) Apple, Inc.
-D8DC40 (base 16) Apple, Inc.
- 1 Infinite Loop
- Cupertino CA 95014
- US
-
-80-5F-C5 (hex) Apple, Inc.
-805FC5 (base 16) Apple, Inc.
- 1 Infinite Loop
- Cupertino CA 95014
- US
-
-3C-4D-BE (hex) Apple, Inc.
-3C4DBE (base 16) Apple, Inc.
- 1 Infinite Loop
- Cupertino CA 95014
- US
-
-48-26-2C (hex) Apple, Inc.
-48262C (base 16) Apple, Inc.
- 1 Infinite Loop
- Cupertino CA 95014
- US
-
AC-1F-09 (hex) shenzhen RAKwireless technology Co.,Ltd
AC1F09 (base 16) shenzhen RAKwireless technology Co.,Ltd
Room 506, Bldg B, New Compark, Pingshan First Road, Taoyuan Street,Nanshan District
@@ -136274,12 +137078,6 @@ BC13A8 (base 16) Shenzhen YOUHUA Technology Co., Ltd
Shenzhen Guangdong 518055
CN
-10-F9-20 (hex) Cisco Systems, Inc
-10F920 (base 16) Cisco Systems, Inc
- 80 West Tasman Drive
- San Jose CA 94568
- US
-
90-77-EE (hex) Cisco Systems, Inc
9077EE (base 16) Cisco Systems, Inc
80 West Tasman Drive
@@ -136298,110 +137096,152 @@ BC13A8 (base 16) Shenzhen YOUHUA Technology Co., Ltd
shenzhen guangdong 518057
CN
-14-7D-DA (hex) Apple, Inc.
-147DDA (base 16) Apple, Inc.
+D8-DC-40 (hex) Apple, Inc.
+D8DC40 (base 16) Apple, Inc.
1 Infinite Loop
Cupertino CA 95014
US
-C4-91-0C (hex) Apple, Inc.
-C4910C (base 16) Apple, Inc.
+80-5F-C5 (hex) Apple, Inc.
+805FC5 (base 16) Apple, Inc.
1 Infinite Loop
Cupertino CA 95014
US
+10-F9-20 (hex) Cisco Systems, Inc
+10F920 (base 16) Cisco Systems, Inc
+ 80 West Tasman Drive
+ San Jose CA 94568
+ US
+
20-69-80 (hex) Apple, Inc.
206980 (base 16) Apple, Inc.
1 Infinite Loop
Cupertino CA 95014
US
-64-5D-86 (hex) Intel Corporate
-645D86 (base 16) Intel Corporate
+64-32-A8 (hex) Intel Corporate
+6432A8 (base 16) Intel Corporate
Lot 8, Jalan Hi-Tech 2/3
Kulim Kedah 09000
MY
-18-1D-EA (hex) Intel Corporate
-181DEA (base 16) Intel Corporate
+80-19-34 (hex) Intel Corporate
+801934 (base 16) Intel Corporate
Lot 8, Jalan Hi-Tech 2/3
Kulim Kedah 09000
MY
-18-56-80 (hex) Intel Corporate
-185680 (base 16) Intel Corporate
+40-A3-CC (hex) Intel Corporate
+40A3CC (base 16) Intel Corporate
Lot 8, Jalan Hi-Tech 2/3
Kulim Kedah 09000
MY
-A0-A4-C5 (hex) Intel Corporate
-A0A4C5 (base 16) Intel Corporate
+E4-A7-A0 (hex) Intel Corporate
+E4A7A0 (base 16) Intel Corporate
Lot 8, Jalan Hi-Tech 2/3
Kulim Kedah 09000
MY
-F4-D1-08 (hex) Intel Corporate
-F4D108 (base 16) Intel Corporate
+3C-4D-BE (hex) Apple, Inc.
+3C4DBE (base 16) Apple, Inc.
+ 1 Infinite Loop
+ Cupertino CA 95014
+ US
+
+48-26-2C (hex) Apple, Inc.
+48262C (base 16) Apple, Inc.
+ 1 Infinite Loop
+ Cupertino CA 95014
+ US
+
+14-7D-DA (hex) Apple, Inc.
+147DDA (base 16) Apple, Inc.
+ 1 Infinite Loop
+ Cupertino CA 95014
+ US
+
+C4-91-0C (hex) Apple, Inc.
+C4910C (base 16) Apple, Inc.
+ 1 Infinite Loop
+ Cupertino CA 95014
+ US
+
+6C-99-61 (hex) Sagemcom Broadband SAS
+6C9961 (base 16) Sagemcom Broadband SAS
+ 250, route de l'Empereur
+ Rueil Malmaison Cedex hauts de seine 92848
+ FR
+
+50-C7-09 (hex) Juniper Networks
+50C709 (base 16) Juniper Networks
+ 1133 Innovation Way
+ Sunnyvale CA 94089
+ US
+
+80-6D-97 (hex) Private
+806D97 (base 16) Private
+
+64-5D-86 (hex) Intel Corporate
+645D86 (base 16) Intel Corporate
Lot 8, Jalan Hi-Tech 2/3
Kulim Kedah 09000
MY
-20-79-18 (hex) Intel Corporate
-207918 (base 16) Intel Corporate
+18-1D-EA (hex) Intel Corporate
+181DEA (base 16) Intel Corporate
Lot 8, Jalan Hi-Tech 2/3
Kulim Kedah 09000
MY
-A8-6D-AA (hex) Intel Corporate
-A86DAA (base 16) Intel Corporate
+18-56-80 (hex) Intel Corporate
+185680 (base 16) Intel Corporate
Lot 8, Jalan Hi-Tech 2/3
Kulim Kedah 09000
MY
-6C-99-61 (hex) Sagemcom Broadband SAS
-6C9961 (base 16) Sagemcom Broadband SAS
- 250, route de l'Empereur
- Rueil Malmaison Cedex hauts de seine 92848
- FR
-
-64-32-A8 (hex) Intel Corporate
-6432A8 (base 16) Intel Corporate
+A0-A4-C5 (hex) Intel Corporate
+A0A4C5 (base 16) Intel Corporate
Lot 8, Jalan Hi-Tech 2/3
Kulim Kedah 09000
MY
-80-19-34 (hex) Intel Corporate
-801934 (base 16) Intel Corporate
+F4-D1-08 (hex) Intel Corporate
+F4D108 (base 16) Intel Corporate
Lot 8, Jalan Hi-Tech 2/3
Kulim Kedah 09000
MY
-40-A3-CC (hex) Intel Corporate
-40A3CC (base 16) Intel Corporate
+20-79-18 (hex) Intel Corporate
+207918 (base 16) Intel Corporate
Lot 8, Jalan Hi-Tech 2/3
Kulim Kedah 09000
MY
-E4-A7-A0 (hex) Intel Corporate
-E4A7A0 (base 16) Intel Corporate
+A8-6D-AA (hex) Intel Corporate
+A86DAA (base 16) Intel Corporate
Lot 8, Jalan Hi-Tech 2/3
Kulim Kedah 09000
MY
-04-D3-B0 (hex) Intel Corporate
-04D3B0 (base 16) Intel Corporate
+38-00-25 (hex) Intel Corporate
+380025 (base 16) Intel Corporate
Lot 8, Jalan Hi-Tech 2/3
Kulim Kedah 09000
MY
-50-C7-09 (hex) Juniper Networks
-50C709 (base 16) Juniper Networks
- 1133 Innovation Way
- Sunnyvale CA 94089
- US
+C0-E3-A0 (hex) Renesas Electronics (Penang) Sdn. Bhd.
+C0E3A0 (base 16) Renesas Electronics (Penang) Sdn. Bhd.
+ Phase 3, Bayan Lepas FIZ
+ Bayan Lepas Penang 11900
+ MY
-80-6D-97 (hex) Private
-806D97 (base 16) Private
+F4-C1-14 (hex) Technicolor CH USA Inc.
+F4C114 (base 16) Technicolor CH USA Inc.
+ 5030 Sugarloaf Parkway Bldg 6
+ Lawrenceville GA 30044
+ US
8C-E4-68 (hex) Guangzhou Sageran Technology Co., Ltd.
8CE468 (base 16) Guangzhou Sageran Technology Co., Ltd.
@@ -136409,12 +137249,6 @@ E4A7A0 (base 16) Intel Corporate
Guangzhou Guangdong 510030
CN
-F4-C1-14 (hex) Technicolor CH USA Inc.
-F4C114 (base 16) Technicolor CH USA Inc.
- 5030 Sugarloaf Parkway Bldg 6
- Lawrenceville GA 30044
- US
-
C8-B2-9B (hex) Intel Corporate
C8B29B (base 16) Intel Corporate
Lot 8, Jalan Hi-Tech 2/3
@@ -136463,50 +137297,44 @@ E45E37 (base 16) Intel Corporate
Kulim Kedah 09000
MY
-38-00-25 (hex) Intel Corporate
-380025 (base 16) Intel Corporate
- Lot 8, Jalan Hi-Tech 2/3
- Kulim Kedah 09000
- MY
-
-90-78-41 (hex) Intel Corporate
-907841 (base 16) Intel Corporate
+24-41-8C (hex) Intel Corporate
+24418C (base 16) Intel Corporate
Lot 8, Jalan Hi-Tech 2/3
Kulim Kedah 09000
MY
-58-A0-23 (hex) Intel Corporate
-58A023 (base 16) Intel Corporate
+60-F2-62 (hex) Intel Corporate
+60F262 (base 16) Intel Corporate
Lot 8, Jalan Hi-Tech 2/3
Kulim Kedah 09000
MY
-D4-D2-52 (hex) Intel Corporate
-D4D252 (base 16) Intel Corporate
+C0-B8-83 (hex) Intel Corporate
+C0B883 (base 16) Intel Corporate
Lot 8, Jalan Hi-Tech 2/3
Kulim Kedah 09000
MY
-24-41-8C (hex) Intel Corporate
-24418C (base 16) Intel Corporate
+C8-09-A8 (hex) Intel Corporate
+C809A8 (base 16) Intel Corporate
Lot 8, Jalan Hi-Tech 2/3
Kulim Kedah 09000
MY
-60-F2-62 (hex) Intel Corporate
-60F262 (base 16) Intel Corporate
+90-78-41 (hex) Intel Corporate
+907841 (base 16) Intel Corporate
Lot 8, Jalan Hi-Tech 2/3
Kulim Kedah 09000
MY
-C0-B8-83 (hex) Intel Corporate
-C0B883 (base 16) Intel Corporate
+58-A0-23 (hex) Intel Corporate
+58A023 (base 16) Intel Corporate
Lot 8, Jalan Hi-Tech 2/3
Kulim Kedah 09000
MY
-C8-09-A8 (hex) Intel Corporate
-C809A8 (base 16) Intel Corporate
+D4-D2-52 (hex) Intel Corporate
+D4D252 (base 16) Intel Corporate
Lot 8, Jalan Hi-Tech 2/3
Kulim Kedah 09000
MY
@@ -136517,18 +137345,18 @@ C809A8 (base 16) Intel Corporate
Dongguan Guangdong 523808
CN
-E4-26-8B (hex) Huawei Device Co., Ltd.
-E4268B (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
- CN
-
-C0-E3-A0 (hex) Renesas Electronics (Penang) Sdn. Bhd.
-C0E3A0 (base 16) Renesas Electronics (Penang) Sdn. Bhd.
- Phase 3, Bayan Lepas FIZ
- Bayan Lepas Penang 11900
+04-D3-B0 (hex) Intel Corporate
+04D3B0 (base 16) Intel Corporate
+ Lot 8, Jalan Hi-Tech 2/3
+ Kulim Kedah 09000
MY
+E0-6C-A6 (hex) Creotech Instruments S.A.
+E06CA6 (base 16) Creotech Instruments S.A.
+ ul. Gen. L. Okulickiego 7/9
+ Piaseczno Mazovia 05-500
+ PL
+
44-68-0C (hex) Wacom Co.,Ltd.
44680C (base 16) Wacom Co.,Ltd.
Sumitomo Fudosan Shinjuku Grand Tower 31F,8-17-1
@@ -136547,18 +137375,6 @@ A830BC (base 16) Samsung Electronics Co.,Ltd
Gumi Gyeongbuk 730-350
KR
-1C-98-C1 (hex) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.
-1C98C1 (base 16) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.
- B22 Building,NO.51 Tongle Road, Shajing Town, Jiangnan District, Nanning, Guangxi Province, China
- Nanning Guangxi 530007
- CN
-
-A0-9B-17 (hex) Taicang T&W Electronics
-A09B17 (base 16) Taicang T&W Electronics
- 89# Jiang Nan RD
- Suzhou Jiangsu 215412
- CN
-
00-63-DE (hex) CLOUDWALK TECHNOLOGY CO.,LTD
0063DE (base 16) CLOUDWALK TECHNOLOGY CO.,LTD
Five Floors of Block 106, West Jinkai Avenue, Yubei District
@@ -136601,11 +137417,11 @@ E43EC6 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
Kulim Kedah 09000
MY
-E0-6C-A6 (hex) Creotech Instruments S.A.
-E06CA6 (base 16) Creotech Instruments S.A.
- ul. Gen. L. Okulickiego 7/9
- Piaseczno Mazovia 05-500
- PL
+E4-26-8B (hex) Huawei Device Co., Ltd.
+E4268B (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
68-88-A1 (hex) Universal Electronics, Inc.
6888A1 (base 16) Universal Electronics, Inc.
@@ -136631,30 +137447,48 @@ C086B3 (base 16) Shenzhen Voxtech Co., Ltd.
Rueil Malmaison Cedex hauts de seine 92848
FR
+1C-98-C1 (hex) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.
+1C98C1 (base 16) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.
+ B22 Building,NO.51 Tongle Road, Shajing Town, Jiangnan District, Nanning, Guangxi Province, China
+ Nanning Guangxi 530007
+ CN
+
+A0-9B-17 (hex) Taicang T&W Electronics
+A09B17 (base 16) Taicang T&W Electronics
+ 89# Jiang Nan RD
+ Suzhou Jiangsu 215412
+ CN
+
44-01-BB (hex) SHENZHEN BILIAN ELECTRONIC CO.,LTD
4401BB (base 16) SHENZHEN BILIAN ELECTRONIC CO.,LTD
NO.268? Fuqian Rd, Jutang community, Guanlan Town, Longhua New district
shenzhen guangdong 518000
CN
+A0-D8-3D (hex) Fiberhome Telecommunication Technologies Co.,LTD
+A0D83D (base 16) Fiberhome Telecommunication Technologies Co.,LTD
+ No.5 DongXin Road
+ Wuhan Hubei 430074
+ CN
+
58-F2-FC (hex) Huawei Device Co., Ltd.
58F2FC (base 16) Huawei Device Co., Ltd.
No.2 of Xincheng Road, Songshan Lake Zone
Dongguan Guangdong 523808
CN
+64-3A-EA (hex) Cisco Systems, Inc
+643AEA (base 16) Cisco Systems, Inc
+ 80 West Tasman Drive
+ San Jose CA 94568
+ US
+
50-70-43 (hex) BSkyB Ltd
507043 (base 16) BSkyB Ltd
130 Kings Road
Brentwood Essex 08854
GB
-A0-D8-3D (hex) Fiberhome Telecommunication Technologies Co.,LTD
-A0D83D (base 16) Fiberhome Telecommunication Technologies Co.,LTD
- No.5 DongXin Road
- Wuhan Hubei 430074
- CN
-
D0-14-11 (hex) IEEE Registration Authority
D01411 (base 16) IEEE Registration Authority
445 Hoes Lane
@@ -136673,12 +137507,6 @@ D01411 (base 16) IEEE Registration Authority
Chengdu Sichuan 611330
CN
-64-3A-EA (hex) Cisco Systems, Inc
-643AEA (base 16) Cisco Systems, Inc
- 80 West Tasman Drive
- San Jose CA 94568
- US
-
E8-13-6E (hex) HUAWEI TECHNOLOGIES CO.,LTD
E8136E (base 16) HUAWEI TECHNOLOGIES CO.,LTD
No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
@@ -136697,48 +137525,24 @@ E8136E (base 16) HUAWEI TECHNOLOGIES CO.,LTD
Shenzhen 518055
CN
-E0-B2-60 (hex) TENO NETWORK TECHNOLOGIES COMPANY LIMITED
-E0B260 (base 16) TENO NETWORK TECHNOLOGIES COMPANY LIMITED
- RM 1302, 13/F CHEONG K BLDG 84-86 DES VOEUX RD CENTRAL HONG KONG
- Hong Kong 999077
- HK
-
-48-23-35 (hex) Dialog Semiconductor Hellas SA
-482335 (base 16) Dialog Semiconductor Hellas SA
- Achileos 8 & Katsoni Str
- Kalithea, Athens 17674
- GR
-
-E8-DA-20 (hex) Nintendo Co.,Ltd
-E8DA20 (base 16) Nintendo Co.,Ltd
- 11-1 HOKOTATE-CHO KAMITOBA,MINAMI-KU
- KYOTO KYOTO 601-8501
- JP
-
10-BC-97 (hex) vivo Mobile Communication Co., Ltd.
10BC97 (base 16) vivo Mobile Communication Co., Ltd.
#283,BBK Road
Wusha,Chang'An DongGuan City,Guangdong, 523860
CN
-7C-F9-A0 (hex) Fiberhome Telecommunication Technologies Co.,LTD
-7CF9A0 (base 16) Fiberhome Telecommunication Technologies Co.,LTD
- No.5 DongXin Road
- Wuhan Hubei 430074
- CN
-
-6C-A4-D1 (hex) Fiberhome Telecommunication Technologies Co.,LTD
-6CA4D1 (base 16) Fiberhome Telecommunication Technologies Co.,LTD
- No.5 DongXin Road
- Wuhan Hubei 430074
- CN
-
DC-D4-44 (hex) Huawei Device Co., Ltd.
DCD444 (base 16) Huawei Device Co., Ltd.
No.2 of Xincheng Road, Songshan Lake Zone
Dongguan Guangdong 523808
CN
+E0-B2-60 (hex) TENO NETWORK TECHNOLOGIES COMPANY LIMITED
+E0B260 (base 16) TENO NETWORK TECHNOLOGIES COMPANY LIMITED
+ RM 1302, 13/F CHEONG K BLDG 84-86 DES VOEUX RD CENTRAL HONG KONG
+ Hong Kong 999077
+ HK
+
A4-46-B4 (hex) Huawei Device Co., Ltd.
A446B4 (base 16) Huawei Device Co., Ltd.
No.2 of Xincheng Road, Songshan Lake Zone
@@ -136751,17 +137555,17 @@ A446B4 (base 16) Huawei Device Co., Ltd.
Cambridge MA 02142
US
-EC-6C-9A (hex) Arcadyan Corporation
-EC6C9A (base 16) Arcadyan Corporation
- No.8, Sec.2, Guangfu Rd.
- Hsinchu City Hsinchu 30071
- TW
+E8-DA-20 (hex) Nintendo Co.,Ltd
+E8DA20 (base 16) Nintendo Co.,Ltd
+ 11-1 HOKOTATE-CHO KAMITOBA,MINAMI-KU
+ KYOTO KYOTO 601-8501
+ JP
-34-6D-9C (hex) Carrier Corporation
-346D9C (base 16) Carrier Corporation
- 6304 Thompson Rd
- East Syracuse NY 13057
- US
+48-23-35 (hex) Dialog Semiconductor Hellas SA
+482335 (base 16) Dialog Semiconductor Hellas SA
+ Achileos 8 & Katsoni Str
+ Kalithea, Athens 17674
+ GR
8C-85-C1 (hex) Aruba, a Hewlett Packard Enterprise Company
8C85C1 (base 16) Aruba, a Hewlett Packard Enterprise Company
@@ -136775,16 +137579,16 @@ EC6C9A (base 16) Arcadyan Corporation
Reno NV 89507
US
-78-2B-64 (hex) Bose Corporation
-782B64 (base 16) Bose Corporation
- The Mountain
- Framingham MA 01701-9168
- US
+7C-F9-A0 (hex) Fiberhome Telecommunication Technologies Co.,LTD
+7CF9A0 (base 16) Fiberhome Telecommunication Technologies Co.,LTD
+ No.5 DongXin Road
+ Wuhan Hubei 430074
+ CN
-D4-F7-56 (hex) zte corporation
-D4F756 (base 16) zte corporation
- 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China
- shenzhen guangdong 518057
+6C-A4-D1 (hex) Fiberhome Telecommunication Technologies Co.,LTD
+6CA4D1 (base 16) Fiberhome Telecommunication Technologies Co.,LTD
+ No.5 DongXin Road
+ Wuhan Hubei 430074
CN
54-AB-3A (hex) Quanta Computer Inc.
@@ -136799,12 +137603,42 @@ E89A8F (base 16) Quanta Computer Inc.
TAIPEI 33377
TW
+EC-6C-9A (hex) Arcadyan Corporation
+EC6C9A (base 16) Arcadyan Corporation
+ No.8, Sec.2, Guangfu Rd.
+ Hsinchu City Hsinchu 30071
+ TW
+
+34-6D-9C (hex) Carrier Corporation
+346D9C (base 16) Carrier Corporation
+ 6304 Thompson Rd
+ East Syracuse NY 13057
+ US
+
+D4-F7-56 (hex) zte corporation
+D4F756 (base 16) zte corporation
+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China
+ shenzhen guangdong 518057
+ CN
+
E0-69-3A (hex) Innophase Inc.
E0693A (base 16) Innophase Inc.
6815 Flanders Drive Suite 150
San Diego CA 92121
US
+54-88-DE (hex) Cisco Systems, Inc
+5488DE (base 16) Cisco Systems, Inc
+ 80 West Tasman Drive
+ San Jose CA 94568
+ US
+
+78-2B-64 (hex) Bose Corporation
+782B64 (base 16) Bose Corporation
+ The Mountain
+ Framingham MA 01701-9168
+ US
+
24-FD-0D (hex) Intelbras
24FD0D (base 16) Intelbras
BR 101, KM 210
@@ -136817,6 +137651,18 @@ E0693A (base 16) Innophase Inc.
FUZHOU FUJIAN 350002
CN
+9C-6B-37 (hex) Renesas Electronics (Penang) Sdn. Bhd.
+9C6B37 (base 16) Renesas Electronics (Penang) Sdn. Bhd.
+ Phase 3, Bayan Lepas FIZ
+ Bayan Lepas Penang 11900
+ MY
+
+A8-37-59 (hex) Huawei Device Co., Ltd.
+A83759 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
40-AA-56 (hex) China Dragon Technology Limited
40AA56 (base 16) China Dragon Technology Limited
B4 Bldg.Haoshan 1st Industry Park,
@@ -136841,12 +137687,6 @@ CC47BD (base 16) Rhombus Systems
Sacramento CA 95814
US
-54-88-DE (hex) Cisco Systems, Inc
-5488DE (base 16) Cisco Systems, Inc
- 80 West Tasman Drive
- San Jose CA 94568
- US
-
4C-93-A6 (hex) IEEE Registration Authority
4C93A6 (base 16) IEEE Registration Authority
445 Hoes Lane
@@ -136859,12 +137699,6 @@ CC47BD (base 16) Rhombus Systems
Seoul Seocho-dong,Seocho-gu 137-863
KR
-A8-37-59 (hex) Huawei Device Co., Ltd.
-A83759 (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
- CN
-
50-F7-ED (hex) Huawei Device Co., Ltd.
50F7ED (base 16) Huawei Device Co., Ltd.
No.2 of Xincheng Road, Songshan Lake Zone
@@ -136877,23 +137711,17 @@ A83759 (base 16) Huawei Device Co., Ltd.
Weifang Shandong 261205
CN
-9C-6B-37 (hex) Renesas Electronics (Penang) Sdn. Bhd.
-9C6B37 (base 16) Renesas Electronics (Penang) Sdn. Bhd.
- Phase 3, Bayan Lepas FIZ
- Bayan Lepas Penang 11900
- MY
-
BC-7E-8B (hex) Samsung Electronics Co.,Ltd
BC7E8B (base 16) Samsung Electronics Co.,Ltd
129, Samsung-ro, Youngtongl-Gu
Suwon Gyeonggi-Do 16677
KR
-54-77-8A (hex) Hewlett Packard Enterprise
-54778A (base 16) Hewlett Packard Enterprise
- 8000 Foothills Blvd.
- Roseville CA 95747
- US
+0C-31-DC (hex) HUAWEI TECHNOLOGIES CO.,LTD
+0C31DC (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
+ CN
40-DD-D1 (hex) Beautiful Card Corporation
40DDD1 (base 16) Beautiful Card Corporation
@@ -136907,6 +137735,18 @@ C0E7BF (base 16) Sichuan AI-Link Technology Co., Ltd.
Mianyang Sichuan 622650
CN
+54-77-8A (hex) Hewlett Packard Enterprise
+54778A (base 16) Hewlett Packard Enterprise
+ 8000 Foothills Blvd.
+ Roseville CA 95747
+ US
+
+24-71-52 (hex) Dell Inc.
+247152 (base 16) Dell Inc.
+ One Dell Way
+ Round Rock TX 78682
+ US
+
64-33-DB (hex) Texas Instruments
6433DB (base 16) Texas Instruments
12500 TI Blvd
@@ -136931,30 +137771,30 @@ B0B113 (base 16) Texas Instruments
Guangzhou Guangdong 510555
CN
-0C-31-DC (hex) HUAWEI TECHNOLOGIES CO.,LTD
-0C31DC (base 16) HUAWEI TECHNOLOGIES CO.,LTD
- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
- Dongguan 523808
- CN
-
00-40-AB (hex) ROLAND DG CORPORATION
0040AB (base 16) ROLAND DG CORPORATION
1-1-3 Shinmiyakoda, Kita-ku
Hamamatsu-shi Shizuoka-ken 431-2103
JP
-24-71-52 (hex) Dell Inc.
-247152 (base 16) Dell Inc.
- One Dell Way
- Round Rock TX 78682
- US
-
00-12-B4 (hex) Work Microwave GmbH
0012B4 (base 16) Work Microwave GmbH
Rudolf-Diesel-Ring 2
Holzkirchen 83607
DE
+24-B1-05 (hex) Prama Hikvision India Private Limited
+24B105 (base 16) Prama Hikvision India Private Limited
+ Prama Hikvision India Pvt Ltd, Akurli Cross Road No 1, Kandivali East
+ Mumbai Maharashtra 400101
+ IN
+
+80-60-B7 (hex) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.
+8060B7 (base 16) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.
+ B22 Building,NO.51 Tongle Road, Shajing Town, Jiangnan District, Nanning, Guangxi Province, China
+ Nanning Guangxi 530007
+ CN
+
90-AA-C3 (hex) Hitron Technologies. Inc
90AAC3 (base 16) Hitron Technologies. Inc
No. 1-8, Lising 1st Rd. Hsinchu Science Park, Hsinchu, 300, Taiwan, R.O.C
@@ -136967,12 +137807,6 @@ B0B113 (base 16) Texas Instruments
Espoo Paimio 02600
FI
-80-60-B7 (hex) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.
-8060B7 (base 16) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.
- B22 Building,NO.51 Tongle Road, Shajing Town, Jiangnan District, Nanning, Guangxi Province, China
- Nanning Guangxi 530007
- CN
-
DC-72-23 (hex) Hui Zhou Gaoshengda Technology Co.,LTD
DC7223 (base 16) Hui Zhou Gaoshengda Technology Co.,LTD
No.75,Zhongkai High-Tech Development District,Huizhou
@@ -136985,18 +137819,6 @@ DC7223 (base 16) Hui Zhou Gaoshengda Technology Co.,LTD
Sunnyvale CA 94089
US
-24-B1-05 (hex) Prama Hikvision India Private Limited
-24B105 (base 16) Prama Hikvision India Private Limited
- Prama Hikvision India Pvt Ltd, Akurli Cross Road No 1, Kandivali East
- Mumbai Maharashtra 400101
- IN
-
-8C-47-BE (hex) Dell Inc.
-8C47BE (base 16) Dell Inc.
- One Dell Way
- Round Rock TX 78682
- US
-
24-5F-9F (hex) Huawei Device Co., Ltd.
245F9F (base 16) Huawei Device Co., Ltd.
No.2 of Xincheng Road, Songshan Lake Zone
@@ -137015,6 +137837,24 @@ CCB0A8 (base 16) Huawei Device Co., Ltd.
Dongguan Guangdong 523808
CN
+8C-47-BE (hex) Dell Inc.
+8C47BE (base 16) Dell Inc.
+ One Dell Way
+ Round Rock TX 78682
+ US
+
+14-2C-78 (hex) GooWi Wireless Technology Co., Limited
+142C78 (base 16) GooWi Wireless Technology Co., Limited
+ RM402 Building212, Tairan Technology Park, Futian District
+ Shenzhen Guangdong 518000
+ CN
+
+98-FC-84 (hex) IEEE Registration Authority
+98FC84 (base 16) IEEE Registration Authority
+ 445 Hoes Lane
+ Piscataway NJ 08554
+ US
+
20-F4-4F (hex) Nokia
20F44F (base 16) Nokia
600 March Road
@@ -137039,6 +137879,18 @@ CCB0A8 (base 16) Huawei Device Co., Ltd.
Hanover MD 21076
US
+78-53-F2 (hex) Roxton Systems Ltd.
+7853F2 (base 16) Roxton Systems Ltd.
+ Floor 4, premise 1, room 6, Ostapovsky proezd,15k2
+ Moscow Moscow 109316
+ RU
+
+9C-69-37 (hex) Qorvo International Pte. Ltd.
+9C6937 (base 16) Qorvo International Pte. Ltd.
+ 1 Changi Business Park Avenue 1
+ #04-01 486058
+ SG
+
F8-2E-3F (hex) HUAWEI TECHNOLOGIES CO.,LTD
F82E3F (base 16) HUAWEI TECHNOLOGIES CO.,LTD
No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
@@ -137051,35 +137903,11 @@ F82E3F (base 16) HUAWEI TECHNOLOGIES CO.,LTD
Dongguan 523808
CN
-9C-69-37 (hex) Qorvo International Pte. Ltd.
-9C6937 (base 16) Qorvo International Pte. Ltd.
- 1 Changi Business Park Avenue 1
- #04-01 486058
- SG
-
-78-53-F2 (hex) Roxton Systems Ltd.
-7853F2 (base 16) Roxton Systems Ltd.
- Floor 4, premise 1, room 6, Ostapovsky proezd,15k2
- Moscow Moscow 109316
- RU
-
-98-FC-84 (hex) IEEE Registration Authority
-98FC84 (base 16) IEEE Registration Authority
- 445 Hoes Lane
- Piscataway NJ 08554
- US
-
-14-2C-78 (hex) GooWi Wireless Technology Co., Limited
-142C78 (base 16) GooWi Wireless Technology Co., Limited
- RM402 Building212, Tairan Technology Park, Futian District
- Shenzhen Guangdong 518000
- CN
-
-EC-4D-3E (hex) Beijing Xiaomi Mobile Software Co., Ltd
-EC4D3E (base 16) Beijing Xiaomi Mobile Software Co., Ltd
- The Rainbow City Office Building, 68 Qinghe Middle Street Haidian District
- Beijing Beijing 100085
- CN
+3C-7C-3F (hex) ASUSTek COMPUTER INC.
+3C7C3F (base 16) ASUSTek COMPUTER INC.
+ 15,Li-Te Rd., Peitou, Taipei 112, Taiwan
+ Taipei Taiwan 112
+ TW
34-91-6F (hex) UserGate Ltd.
34916F (base 16) UserGate Ltd.
@@ -137093,17 +137921,11 @@ EC4D3E (base 16) Beijing Xiaomi Mobile Software Co., Ltd
Irvine CA 92618
US
-3C-7C-3F (hex) ASUSTek COMPUTER INC.
-3C7C3F (base 16) ASUSTek COMPUTER INC.
- 15,Li-Te Rd., Peitou, Taipei 112, Taiwan
- Taipei Taiwan 112
- TW
-
-8C-D6-7F (hex) EM Microelectronic
-8CD67F (base 16) EM Microelectronic
- Rue des Sors 3
- Marin-Epagnier Neuchatel 2074
- CH
+EC-4D-3E (hex) Beijing Xiaomi Mobile Software Co., Ltd
+EC4D3E (base 16) Beijing Xiaomi Mobile Software Co., Ltd
+ The Rainbow City Office Building, 68 Qinghe Middle Street Haidian District
+ Beijing Beijing 100085
+ CN
D8-A4-91 (hex) Huawei Device Co., Ltd.
D8A491 (base 16) Huawei Device Co., Ltd.
@@ -137147,11 +137969,11 @@ EC3EB3 (base 16) Zyxel Communications Corporation
Hsichu Taiwan 300
TW
-FC-44-9F (hex) zte corporation
-FC449F (base 16) zte corporation
- 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China
- shenzhen guangdong 518057
- CN
+8C-D6-7F (hex) EM Microelectronic
+8CD67F (base 16) EM Microelectronic
+ Rue des Sors 3
+ Marin-Epagnier Neuchatel 2074
+ CH
5C-91-FD (hex) Jaewoncnc
5C91FD (base 16) Jaewoncnc
@@ -137159,22 +137981,10 @@ FC449F (base 16) zte corporation
Seoul 05836
KR
-44-35-83 (hex) Apple, Inc.
-443583 (base 16) Apple, Inc.
- 1 Infinite Loop
- Cupertino CA 95014
- US
-
-84-EA-97 (hex) Shenzhen iComm Semiconductor CO.,LTD
-84EA97 (base 16) Shenzhen iComm Semiconductor CO.,LTD
- Room 501A,Block B,Digital Building,Garden City,No.1079 Nanhai Road,Nanshan District
- Shenzhen 518067
- CN
-
-A4-7D-9F (hex) Shenzhen iComm Semiconductor CO.,LTD
-A47D9F (base 16) Shenzhen iComm Semiconductor CO.,LTD
- Room 504A,Block B,Digital Building,Gargen City,No.1079,Nanhai Road,Nanshan District,Shenzhen.
- Shenzhen 518067
+FC-44-9F (hex) zte corporation
+FC449F (base 16) zte corporation
+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China
+ shenzhen guangdong 518057
CN
20-4E-F6 (hex) AzureWave Technology Inc.
@@ -137183,6 +137993,18 @@ A47D9F (base 16) Shenzhen iComm Semiconductor CO.,LTD
New Taipei City Taiwan 231
TW
+44-35-83 (hex) Apple, Inc.
+443583 (base 16) Apple, Inc.
+ 1 Infinite Loop
+ Cupertino CA 95014
+ US
+
+38-CA-73 (hex) Shenzhen MiaoMing Intelligent Technology Co.,Ltd
+38CA73 (base 16) Shenzhen MiaoMing Intelligent Technology Co.,Ltd
+ Chudong science and technology park, 111 shaxin road, tangxia town,
+ dongguan city guangdong province 523710
+ CN
+
6C-0D-C4 (hex) Beijing Xiaomi Electronics Co., Ltd.
6C0DC4 (base 16) Beijing Xiaomi Electronics Co., Ltd.
Building C, QingHe ShunShiJiaYe Technology Park, #66 ZhuFang Rd, HaiDian District
@@ -137195,10 +138017,16 @@ C440F6 (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
DONG GUAN GUANG DONG 523860
CN
-38-CA-73 (hex) Shenzhen MiaoMing Intelligent Technology Co.,Ltd
-38CA73 (base 16) Shenzhen MiaoMing Intelligent Technology Co.,Ltd
- Chudong science and technology park, 111 shaxin road, tangxia town,
- dongguan city guangdong province 523710
+A4-7D-9F (hex) Shenzhen iComm Semiconductor CO.,LTD
+A47D9F (base 16) Shenzhen iComm Semiconductor CO.,LTD
+ Room 504A,Block B,Digital Building,Gargen City,No.1079,Nanhai Road,Nanshan District,Shenzhen.
+ Shenzhen 518067
+ CN
+
+84-EA-97 (hex) Shenzhen iComm Semiconductor CO.,LTD
+84EA97 (base 16) Shenzhen iComm Semiconductor CO.,LTD
+ Room 501A,Block B,Digital Building,Garden City,No.1079 Nanhai Road,Nanshan District
+ Shenzhen 518067
CN
00-55-B1 (hex) Shanghai Baud Data Communication Co.,Ltd.
@@ -137207,24 +138035,18 @@ C440F6 (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
PUDONG ZHANGJIANG HIGH-TECH PARK SHANGHAI 201203
CN
+74-90-1F (hex) Ragile Networks Inc.
+74901F (base 16) Ragile Networks Inc.
+ 35649 Embassy common Fremont ca 94536
+ Fremont CA 94536
+ US
+
C0-25-2F (hex) SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.
C0252F (base 16) SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.
3/F, Building R1-B, High-Tech Industrial Park, Nanshan District
Shenzhen Guangdong 518057
CN
-88-89-2F (hex) HUAWEI TECHNOLOGIES CO.,LTD
-88892F (base 16) HUAWEI TECHNOLOGIES CO.,LTD
- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
- Dongguan 523808
- CN
-
-28-E5-B0 (hex) HUAWEI TECHNOLOGIES CO.,LTD
-28E5B0 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
- Dongguan 523808
- CN
-
54-9F-C6 (hex) Cisco Systems, Inc
549FC6 (base 16) Cisco Systems, Inc
80 West Tasman Drive
@@ -137237,30 +138059,12 @@ F01D2D (base 16) Cisco Systems, Inc
San Jose CA 94568
US
-74-90-1F (hex) Ragile Networks Inc.
-74901F (base 16) Ragile Networks Inc.
- 35649 Embassy common Fremont ca 94536
- Fremont CA 94536
- US
-
-1C-A8-52 (hex) SENSAIO PTE LTD
-1CA852 (base 16) SENSAIO PTE LTD
- 160 Robinson Road #14-04
- SINGAPORE SINGAPORE 068914
- SG
-
44-3B-32 (hex) Intelbras
443B32 (base 16) Intelbras
BR 101, km 210, S/N°
São José Santa Catarina 88104800
BR
-4C-02-20 (hex) Xiaomi Communications Co Ltd
-4C0220 (base 16) Xiaomi Communications Co Ltd
- The Rainbow City of China Resources
- NO.68, Qinghe Middle Street Haidian District, Beijing 100085
- CN
-
F8-3B-1D (hex) Technicolor CH USA Inc.
F83B1D (base 16) Technicolor CH USA Inc.
5030 Sugarloaf Parkway Bldg 6
@@ -137279,6 +138083,24 @@ F40B9F (base 16) CIG SHANGHAI CO LTD
SHANGHAI 201114
CN
+78-45-B3 (hex) Huawei Device Co., Ltd.
+7845B3 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+20-DC-FD (hex) Huawei Device Co., Ltd.
+20DCFD (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+FC-65-B3 (hex) Huawei Device Co., Ltd.
+FC65B3 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
10-9D-7A (hex) Huawei Device Co., Ltd.
109D7A (base 16) Huawei Device Co., Ltd.
No.2 of Xincheng Road, Songshan Lake Zone
@@ -137297,28 +138119,40 @@ D47EE4 (base 16) China Mobile IOT Company Limited
Chongqing Chongqing 401336
CN
-C0-94-AD (hex) zte corporation
-C094AD (base 16) zte corporation
- 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China
- shenzhen guangdong 518057
+88-89-2F (hex) HUAWEI TECHNOLOGIES CO.,LTD
+88892F (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
CN
-78-45-B3 (hex) Huawei Device Co., Ltd.
-7845B3 (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
+28-E5-B0 (hex) HUAWEI TECHNOLOGIES CO.,LTD
+28E5B0 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
CN
-20-DC-FD (hex) Huawei Device Co., Ltd.
-20DCFD (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
+4C-02-20 (hex) Xiaomi Communications Co Ltd
+4C0220 (base 16) Xiaomi Communications Co Ltd
+ The Rainbow City of China Resources
+ NO.68, Qinghe Middle Street Haidian District, Beijing 100085
CN
-FC-65-B3 (hex) Huawei Device Co., Ltd.
-FC65B3 (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
+1C-A8-52 (hex) SENSAIO PTE LTD
+1CA852 (base 16) SENSAIO PTE LTD
+ 160 Robinson Road #14-04
+ SINGAPORE SINGAPORE 068914
+ SG
+
+78-7D-F3 (hex) Sterlite Technologies Limited
+787DF3 (base 16) Sterlite Technologies Limited
+ IFFCO Tower, 3rd Floor, Plot No.3, Sector 29,CH Baktawar Singh Rd, Institutional Area,
+ Gurugram Haryana 122002
+ IN
+
+C0-94-AD (hex) zte corporation
+C094AD (base 16) zte corporation
+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China
+ shenzhen guangdong 518057
CN
D0-21-AC (hex) Yo Labs LLC
@@ -137339,23 +138173,17 @@ D021AC (base 16) Yo Labs LLC
Stockholm SE-164 80
SE
-78-7D-F3 (hex) Sterlite Technologies Limited
-787DF3 (base 16) Sterlite Technologies Limited
- IFFCO Tower, 3rd Floor, Plot No.3, Sector 29,CH Baktawar Singh Rd, Institutional Area,
- Gurugram Haryana 122002
- IN
-
00-16-3B (hex) Communications & Power Industries
00163B (base 16) Communications & Power Industries
Suite , 60 Decibel Road
State College PA 16801
US
-00-0B-4E (hex) Communications & Power Industries
-000B4E (base 16) Communications & Power Industries
- 1000 Klein Road
- Plano TX 75074
- US
+9C-B2-E8 (hex) HUAWEI TECHNOLOGIES CO.,LTD
+9CB2E8 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
+ CN
74-73-1D (hex) ifm electronic gmbh
74731D (base 16) ifm electronic gmbh
@@ -137363,6 +138191,18 @@ D021AC (base 16) Yo Labs LLC
Tettnang BW 88069
DE
+00-0B-4E (hex) Communications & Power Industries
+000B4E (base 16) Communications & Power Industries
+ 1000 Klein Road
+ Plano TX 75074
+ US
+
+00-03-34 (hex) Omega Engineering Inc.
+000334 (base 16) Omega Engineering Inc.
+ 800 Connecticut Ave. Suite 5N01,
+ Norwalk CT 06854
+ US
+
5C-61-99 (hex) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.
5C6199 (base 16) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.
B22 Building,NO.51 Tongle Road, Shajing Town, Jiangnan District, Nanning, Guangxi Province, China
@@ -137375,11 +138215,11 @@ E8DB84 (base 16) Espressif Inc.
Shanghai Shanghai 201203
CN
-9C-B2-E8 (hex) HUAWEI TECHNOLOGIES CO.,LTD
-9CB2E8 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
- Dongguan 523808
- CN
+D0-55-09 (hex) Nintendo Co.,Ltd
+D05509 (base 16) Nintendo Co.,Ltd
+ 11-1 HOKOTATE-CHO KAMITOBA,MINAMI-KU
+ KYOTO KYOTO 601-8501
+ JP
A0-77-51 (hex) ASMedia Technology Inc.
A07751 (base 16) ASMedia Technology Inc.
@@ -137393,18 +138233,6 @@ A07751 (base 16) ASMedia Technology Inc.
SHENZHEN GUANGDONG 518000
CN
-D0-55-09 (hex) Nintendo Co.,Ltd
-D05509 (base 16) Nintendo Co.,Ltd
- 11-1 HOKOTATE-CHO KAMITOBA,MINAMI-KU
- KYOTO KYOTO 601-8501
- JP
-
-00-03-34 (hex) Omega Engineering Inc.
-000334 (base 16) Omega Engineering Inc.
- 800 Connecticut Ave. Suite 5N01,
- Norwalk CT 06854
- US
-
14-56-3A (hex) Huawei Device Co., Ltd.
14563A (base 16) Huawei Device Co., Ltd.
No.2 of Xincheng Road, Songshan Lake Zone
@@ -137417,30 +138245,6 @@ D05509 (base 16) Nintendo Co.,Ltd
Dongguan Guangdong 523808
CN
-68-72-C3 (hex) Samsung Electronics Co.,Ltd
-6872C3 (base 16) Samsung Electronics Co.,Ltd
- 129, Samsung-ro, Youngtongl-Gu
- Suwon Gyeonggi-Do 16677
- KR
-
-70-B1-3D (hex) Samsung Electronics Co.,Ltd
-70B13D (base 16) Samsung Electronics Co.,Ltd
- 129, Samsung-ro, Youngtongl-Gu
- Suwon Gyeonggi-Do 16677
- KR
-
-F8-E4-3B (hex) ASIX Electronics Corporation
-F8E43B (base 16) ASIX Electronics Corporation
- 4F, No. 8, Hsin Ann Road, Hsinchu Science Park
- Hsinchu 30078
- TW
-
-60-DB-98 (hex) Calix Inc.
-60DB98 (base 16) Calix Inc.
- 2777 Orchard Pkwy
- San Jose CA 95131
- US
-
24-94-94 (hex) Hong Kong Bouffalo Lab Limited
249494 (base 16) Hong Kong Bouffalo Lab Limited
RM 1903, 19/F Lee Garden One 33 Hysan Avenue, Causeway Bay
@@ -137471,12 +138275,24 @@ F8E43B (base 16) ASIX Electronics Corporation
DONG GUAN GUANG DONG 523860
CN
-00-34-A1 (hex) RF-LAMBDA USA INC.
-0034A1 (base 16) RF-LAMBDA USA INC.
- 9115 Brown Deer Road | San Diego
- CA 92121
+60-DB-98 (hex) Calix Inc.
+60DB98 (base 16) Calix Inc.
+ 2777 Orchard Pkwy
+ San Jose CA 95131
US
+68-72-C3 (hex) Samsung Electronics Co.,Ltd
+6872C3 (base 16) Samsung Electronics Co.,Ltd
+ 129, Samsung-ro, Youngtongl-Gu
+ Suwon Gyeonggi-Do 16677
+ KR
+
+70-B1-3D (hex) Samsung Electronics Co.,Ltd
+70B13D (base 16) Samsung Electronics Co.,Ltd
+ 129, Samsung-ro, Youngtongl-Gu
+ Suwon Gyeonggi-Do 16677
+ KR
+
FC-7F-F1 (hex) Aruba, a Hewlett Packard Enterprise Company
FC7FF1 (base 16) Aruba, a Hewlett Packard Enterprise Company
3333 Scott Blvd
@@ -137489,14 +138305,20 @@ FC7FF1 (base 16) Aruba, a Hewlett Packard Enterprise Company
Dongguan 523808
CN
-78-F0-9B (hex) Huawei Device Co., Ltd.
-78F09B (base 16) Huawei Device Co., Ltd.
+F8-E4-3B (hex) ASIX Electronics Corporation
+F8E43B (base 16) ASIX Electronics Corporation
+ 4F, No. 8, Hsin Ann Road, Hsinchu Science Park
+ Hsinchu 30078
+ TW
+
+48-EF-61 (hex) Huawei Device Co., Ltd.
+48EF61 (base 16) Huawei Device Co., Ltd.
No.2 of Xincheng Road, Songshan Lake Zone
Dongguan Guangdong 523808
CN
-48-EF-61 (hex) Huawei Device Co., Ltd.
-48EF61 (base 16) Huawei Device Co., Ltd.
+78-F0-9B (hex) Huawei Device Co., Ltd.
+78F09B (base 16) Huawei Device Co., Ltd.
No.2 of Xincheng Road, Songshan Lake Zone
Dongguan Guangdong 523808
CN
@@ -137513,11 +138335,11 @@ FC7FF1 (base 16) Aruba, a Hewlett Packard Enterprise Company
Sunnyvale CA 94089
US
-18-11-71 (hex) Guangzhou Doctorpai Education & Technology Co.,Ltd
-181171 (base 16) Guangzhou Doctorpai Education & Technology Co.,Ltd
- Floor 5, Building C1, Greenland Central Plaza
- Huangpu District, Guangzhou Guangdong Province 510700
- CN
+00-34-A1 (hex) RF-LAMBDA USA INC.
+0034A1 (base 16) RF-LAMBDA USA INC.
+ 9115 Brown Deer Road | San Diego
+ CA 92121
+ US
60-35-73 (hex) Earda Technologies co Ltd
603573 (base 16) Earda Technologies co Ltd
@@ -137537,17 +138359,17 @@ A49733 (base 16) ASKEY COMPUTER CORP
Chongqing Chongqing 401332
CN
-F0-2F-74 (hex) ASUSTek COMPUTER INC.
-F02F74 (base 16) ASUSTek COMPUTER INC.
- 15,Li-Te Rd., Peitou, Taipei 112, Taiwan
- Taipei Taiwan 112
- TW
+18-0F-76 (hex) D-Link International
+180F76 (base 16) D-Link International
+ 1 Internal Business Park, #03-12,The Synergy
+ Singapore Singapore 609917
+ SG
-00-6E-02 (hex) Xovis AG
-006E02 (base 16) Xovis AG
- Industriestrasse 1
- Zollikofen Bern 3052
- CH
+00-AD-24 (hex) D-Link International
+00AD24 (base 16) D-Link International
+ 1 Internal Business Park, #03-12,The Synergy
+ Singapore Singapore 609917
+ SG
60-63-4C (hex) D-Link International
60634C (base 16) D-Link International
@@ -137573,11 +138395,17 @@ E01CFC (base 16) D-Link International
Singapore Singapore 609917
SG
-78-98-E8 (hex) D-Link International
-7898E8 (base 16) D-Link International
- 1 Internal Business Park, #03-12,The Synergy
- Singapore Singapore 609917
- SG
+F0-2F-74 (hex) ASUSTek COMPUTER INC.
+F02F74 (base 16) ASUSTek COMPUTER INC.
+ 15,Li-Te Rd., Peitou, Taipei 112, Taiwan
+ Taipei Taiwan 112
+ TW
+
+00-6E-02 (hex) Xovis AG
+006E02 (base 16) Xovis AG
+ Industriestrasse 1
+ Zollikofen Bern 3052
+ CH
AC-F8-5C (hex) Chengdu Higon Integrated Circuit Design Co,. Ltd.
ACF85C (base 16) Chengdu Higon Integrated Circuit Design Co,. Ltd.
@@ -137585,23 +138413,11 @@ ACF85C (base 16) Chengdu Higon Integrated Circuit Design Co,. Ltd.
Chengdu Sichuan 610041
CN
-44-F2-1B (hex) Apple, Inc.
-44F21B (base 16) Apple, Inc.
- 1 Infinite Loop
- Cupertino CA 95014
- US
-
-18-0F-76 (hex) D-Link International
-180F76 (base 16) D-Link International
- 1 Internal Business Park, #03-12,The Synergy
- Singapore Singapore 609917
- SG
-
-00-AD-24 (hex) D-Link International
-00AD24 (base 16) D-Link International
- 1 Internal Business Park, #03-12,The Synergy
- Singapore Singapore 609917
- SG
+18-11-71 (hex) Guangzhou Doctorpai Education & Technology Co.,Ltd
+181171 (base 16) Guangzhou Doctorpai Education & Technology Co.,Ltd
+ Floor 5, Building C1, Greenland Central Plaza
+ Huangpu District, Guangzhou Guangdong Province 510700
+ CN
E0-6D-17 (hex) Apple, Inc.
E06D17 (base 16) Apple, Inc.
@@ -137621,34 +138437,22 @@ F465A6 (base 16) Apple, Inc.
Cupertino CA 95014
US
-74-65-0C (hex) Apple, Inc.
-74650C (base 16) Apple, Inc.
+78-98-E8 (hex) D-Link International
+7898E8 (base 16) D-Link International
+ 1 Internal Business Park, #03-12,The Synergy
+ Singapore Singapore 609917
+ SG
+
+44-F2-1B (hex) Apple, Inc.
+44F21B (base 16) Apple, Inc.
1 Infinite Loop
Cupertino CA 95014
US
-18-4F-5D (hex) JRC Mobility Inc.
-184F5D (base 16) JRC Mobility Inc.
- NAKANO CENTRAL PARK EAST 10-1, Nakano 4-chome
- Nakano-ku Tokyo 164-8570
- JP
-
-10-3F-44 (hex) Xiaomi Communications Co Ltd
-103F44 (base 16) Xiaomi Communications Co Ltd
- The Rainbow City of China Resources
- NO.68, Qinghe Middle Street Haidian District, Beijing 100085
- CN
-
-E0-77-26 (hex) Huawei Device Co., Ltd.
-E07726 (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
- CN
-
-94-A6-7E (hex) NETGEAR
-94A67E (base 16) NETGEAR
- 350 East Plumeria Drive
- San Jose CA 95134
+74-65-0C (hex) Apple, Inc.
+74650C (base 16) Apple, Inc.
+ 1 Infinite Loop
+ Cupertino CA 95014
US
FC-D4-36 (hex) Motorola Mobility LLC, a Lenovo Company
@@ -137663,6 +138467,18 @@ FCD436 (base 16) Motorola Mobility LLC, a Lenovo Company
Chicago IL 60654
US
+18-4F-5D (hex) JRC Mobility Inc.
+184F5D (base 16) JRC Mobility Inc.
+ NAKANO CENTRAL PARK EAST 10-1, Nakano 4-chome
+ Nakano-ku Tokyo 164-8570
+ JP
+
+10-3F-44 (hex) Xiaomi Communications Co Ltd
+103F44 (base 16) Xiaomi Communications Co Ltd
+ The Rainbow City of China Resources
+ NO.68, Qinghe Middle Street Haidian District, Beijing 100085
+ CN
+
08-CB-E5 (hex) R3 - Reliable Realtime Radio Communications GmbH
08CBE5 (base 16) R3 - Reliable Realtime Radio Communications GmbH
Bismarckstrasse 10-12
@@ -137675,6 +138491,18 @@ F023AE (base 16) AMPAK Technology,Inc.
Hsinchu Hsinchu,Taiwan R.O.C. 30352
TW
+E0-77-26 (hex) Huawei Device Co., Ltd.
+E07726 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+94-A6-7E (hex) NETGEAR
+94A67E (base 16) NETGEAR
+ 350 East Plumeria Drive
+ San Jose CA 95134
+ US
+
A8-9A-D7 (hex) Nokia
A89AD7 (base 16) Nokia
600 March Road
@@ -137687,12 +138515,6 @@ A89AD7 (base 16) Nokia
San Jose CA 95002
US
-F8-7A-41 (hex) Cisco Systems, Inc
-F87A41 (base 16) Cisco Systems, Inc
- 80 West Tasman Drive
- San Jose CA 94568
- US
-
84-F1-47 (hex) Cisco Systems, Inc
84F147 (base 16) Cisco Systems, Inc
80 West Tasman Drive
@@ -137711,10 +138533,10 @@ F87A41 (base 16) Cisco Systems, Inc
Dallas TX 75243
US
-AC-AE-19 (hex) Roku, Inc
-ACAE19 (base 16) Roku, Inc
- 1155 Coleman Ave
- San Jose CA 95110
+F8-7A-41 (hex) Cisco Systems, Inc
+F87A41 (base 16) Cisco Systems, Inc
+ 80 West Tasman Drive
+ San Jose CA 94568
US
D4-39-B8 (hex) Ciena Corporation
@@ -137735,11 +138557,11 @@ D439B8 (base 16) Ciena Corporation
Soma-city, Fukushima-pref., 976-8501
JP
-34-FE-C5 (hex) Shenzhen Sunwoda intelligent hardware Co.,Ltd
-34FEC5 (base 16) Shenzhen Sunwoda intelligent hardware Co.,Ltd
- No.6-6,Yan Shan Rd.,Baoan District,Shenzhen City,China
- Shenzhen Guangdong 518105
- CN
+00-25-DF (hex) Taser International Inc.
+0025DF (base 16) Taser International Inc.
+ 17800 N 85th St.
+ Scottsdale AZ 85255
+ US
74-E9-BF (hex) HUAWEI TECHNOLOGIES CO.,LTD
74E9BF (base 16) HUAWEI TECHNOLOGIES CO.,LTD
@@ -137753,22 +138575,16 @@ D8109F (base 16) HUAWEI TECHNOLOGIES CO.,LTD
Dongguan 523808
CN
-3C-54-47 (hex) HUAWEI TECHNOLOGIES CO.,LTD
-3C5447 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
- Dongguan 523808
- CN
-
-00-6B-6F (hex) HUAWEI TECHNOLOGIES CO.,LTD
-006B6F (base 16) HUAWEI TECHNOLOGIES CO.,LTD
- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
- Dongguan 523808
- CN
+AC-AE-19 (hex) Roku, Inc
+ACAE19 (base 16) Roku, Inc
+ 1155 Coleman Ave
+ San Jose CA 95110
+ US
-14-B2-E5 (hex) Shenzhen iComm Semiconductor CO.,LTD
-14B2E5 (base 16) Shenzhen iComm Semiconductor CO.,LTD
- Room 504A,Block B,Digital Building,Gargen City,No.1079,Nanhai Road,Nanshan District,Shenzhen.
- Shenzhen 518067
+34-FE-C5 (hex) Shenzhen Sunwoda intelligent hardware Co.,Ltd
+34FEC5 (base 16) Shenzhen Sunwoda intelligent hardware Co.,Ltd
+ No.6-6,Yan Shan Rd.,Baoan District,Shenzhen City,China
+ Shenzhen Guangdong 518105
CN
A8-F7-66 (hex) ITE Tech Inc
@@ -137777,11 +138593,11 @@ A8F766 (base 16) ITE Tech Inc
Hsinchu Taiwan 30076
TW
-00-25-DF (hex) Taser International Inc.
-0025DF (base 16) Taser International Inc.
- 17800 N 85th St.
- Scottsdale AZ 85255
- US
+14-B2-E5 (hex) Shenzhen iComm Semiconductor CO.,LTD
+14B2E5 (base 16) Shenzhen iComm Semiconductor CO.,LTD
+ Room 504A,Block B,Digital Building,Gargen City,No.1079,Nanhai Road,Nanshan District,Shenzhen.
+ Shenzhen 518067
+ CN
00-21-3E (hex) TomTom International BV
00213E (base 16) TomTom International BV
@@ -137789,24 +138605,6 @@ A8F766 (base 16) ITE Tech Inc
Amsterdam North Holland 1011 DK
NL
-FC-0C-45 (hex) Shenzhen SuperElectron Technology Co.,Ltd.
-FC0C45 (base 16) Shenzhen SuperElectron Technology Co.,Ltd.
- 1213-1214, haosheng business center, dongbin road, nanshan street, nanshan district, shenzhen city
- Shenzhen Guangdong 518000
- CN
-
-54-67-E6 (hex) SHENZHEN MTC CO LTD
-5467E6 (base 16) SHENZHEN MTC CO LTD
- 5th Floor, 3rd Building, SHENZHEN MTC Industrial Park, XiaLilang Rd, Nanwan Street, Long’gang District
- Shenzhen Guangdong 518100
- CN
-
-70-9C-D1 (hex) Intel Corporate
-709CD1 (base 16) Intel Corporate
- Lot 8, Jalan Hi-Tech 2/3
- Kulim Kedah 09000
- MY
-
68-3E-26 (hex) Intel Corporate
683E26 (base 16) Intel Corporate
Lot 8, Jalan Hi-Tech 2/3
@@ -137849,24 +138647,354 @@ A46BB6 (base 16) Intel Corporate
Kulim Kedah 09000
MY
+FC-0C-45 (hex) Shenzhen SuperElectron Technology Co.,Ltd.
+FC0C45 (base 16) Shenzhen SuperElectron Technology Co.,Ltd.
+ 1213-1214, haosheng business center, dongbin road, nanshan street, nanshan district, shenzhen city
+ Shenzhen Guangdong 518000
+ CN
+
+54-67-E6 (hex) SHENZHEN MTC CO LTD
+5467E6 (base 16) SHENZHEN MTC CO LTD
+ 5th Floor, 3rd Building, SHENZHEN MTC Industrial Park, XiaLilang Rd, Nanwan Street, Long’gang District
+ Shenzhen Guangdong 518100
+ CN
+
+3C-54-47 (hex) HUAWEI TECHNOLOGIES CO.,LTD
+3C5447 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
+ CN
+
+00-6B-6F (hex) HUAWEI TECHNOLOGIES CO.,LTD
+006B6F (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
+ CN
+
+A0-3D-6E (hex) Cisco Systems, Inc
+A03D6E (base 16) Cisco Systems, Inc
+ 80 West Tasman Drive
+ San Jose CA 94568
+ US
+
+70-9C-D1 (hex) Intel Corporate
+709CD1 (base 16) Intel Corporate
+ Lot 8, Jalan Hi-Tech 2/3
+ Kulim Kedah 09000
+ MY
+
00-0E-B6 (hex) Riverbed Technology, Inc.
000EB6 (base 16) Riverbed Technology, Inc.
680 Folsom St
San Francisco CA 94107
US
-A0-3D-6E (hex) Cisco Systems, Inc
-A03D6E (base 16) Cisco Systems, Inc
- 80 West Tasman Drive
- San Jose CA 94568
+84-44-AF (hex) Zhejiang Tmall Technology Co., Ltd.
+8444AF (base 16) Zhejiang Tmall Technology Co., Ltd.
+ Ali Center,No.3331 Keyuan South RD (Shenzhen bay), Nanshan District, Shenzhen Guangdong province
+ Shenzhen GuangDong 518000
+ CN
+
+E4-BF-FA (hex) Technicolor CH USA Inc.
+E4BFFA (base 16) Technicolor CH USA Inc.
+ 5030 Sugarloaf Parkway Bldg 6
+ Lawrenceville GA 30044
US
+8C-64-D4 (hex) Hyeco Smart Tech Co.,Ltd
+8C64D4 (base 16) Hyeco Smart Tech Co.,Ltd
+ 12 Beiqian Lane,Industrial Park
+ Suzhou Jiangsu 215000
+ CN
+
+8C-DE-F9 (hex) Beijing Xiaomi Mobile Software Co., Ltd
+8CDEF9 (base 16) Beijing Xiaomi Mobile Software Co., Ltd
+ The Rainbow City Office Building, 68 Qinghe Middle Street Haidian District
+ Beijing Beijing 100085
+ CN
+
+58-AE-2B (hex) Huawei Device Co., Ltd.
+58AE2B (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+D0-3C-1F (hex) Intel Corporate
+D03C1F (base 16) Intel Corporate
+ Lot 8, Jalan Hi-Tech 2/3
+ Kulim Kedah 09000
+ MY
+
B0-8B-D0 (hex) Cisco Systems, Inc
B08BD0 (base 16) Cisco Systems, Inc
80 West Tasman Drive
San Jose CA 94568
US
+6C-D7-04 (hex) HUAWEI TECHNOLOGIES CO.,LTD
+6CD704 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
+ CN
+
+54-3A-D6 (hex) Samsung Electronics Co.,Ltd
+543AD6 (base 16) Samsung Electronics Co.,Ltd
+ 129, Samsung-ro, Youngtongl-Gu
+ Suwon Gyeonggi-Do 16677
+ KR
+
+54-46-17 (hex) zte corporation
+544617 (base 16) zte corporation
+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China
+ shenzhen guangdong 518057
+ CN
+
+5C-85-F8 (hex) SHENZHEN KAIFA TECHNOLOGY CO.,LTD.
+5C85F8 (base 16) SHENZHEN KAIFA TECHNOLOGY CO.,LTD.
+ 7006 Caitian Rd., Futian Dist.
+ Shen Zhen Guang Dong 518035
+ CN
+
+9C-BC-F0 (hex) Xiaomi Communications Co Ltd
+9CBCF0 (base 16) Xiaomi Communications Co Ltd
+ The Rainbow City of China Resources
+ NO.68, Qinghe Middle Street Haidian District, Beijing 100085
+ CN
+
+14-23-0A (hex) HUAWEI TECHNOLOGIES CO.,LTD
+14230A (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
+ CN
+
+58-AE-A8 (hex) HUAWEI TECHNOLOGIES CO.,LTD
+58AEA8 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
+ CN
+
+48-EC-5B (hex) Nokia Solutions and Networks GmbH & Co. KG
+48EC5B (base 16) Nokia Solutions and Networks GmbH & Co. KG
+ Werinherstrasse 91
+ München Bavaria D-81541
+ DE
+
+00-77-E4 (hex) Nokia Solutions and Networks GmbH & Co. KG
+0077E4 (base 16) Nokia Solutions and Networks GmbH & Co. KG
+ Werinherstrasse 91
+ München Bavaria D-81541
+ DE
+
+80-22-78 (hex) China Mobile IOT Company Limited
+802278 (base 16) China Mobile IOT Company Limited
+ NO.8 Yu Ma Road, NanAn Area
+ Chongqing Chongqing 401336
+ CN
+
+90-3C-B3 (hex) Edgecore Networks Corporation
+903CB3 (base 16) Edgecore Networks Corporation
+ 1 Creation RD 3.
+ Hsinchu 30077
+ TW
+
+D8-14-DF (hex) TCL King Electrical Appliances (Huizhou) Co., Ltd
+D814DF (base 16) TCL King Electrical Appliances (Huizhou) Co., Ltd
+ 10F, TCL Multimedia Building, TCL International E City, No.1001 Zhongshanyuan Rd., Nanshan District
+ Shenzhen Guangdong 518052
+ CN
+
+90-02-7A (hex) Shenzhen Sworix Techonlogy Co., Ltd
+90027A (base 16) Shenzhen Sworix Techonlogy Co., Ltd
+ Room202, 2nd floor, Jianghao commercial center, Jianghao Industrial area,Jihua road 430, Bantian, Longgang
+ Shenzhen 518129
+ CN
+
+3C-06-A7 (hex) TP-LINK TECHNOLOGIES CO.,LTD.
+3C06A7 (base 16) TP-LINK TECHNOLOGIES CO.,LTD.
+ Building 24(floors 1,3,4,5)and 28(floors 1-4)Central Science and Technology Park,Shennan Road,Nanshan
+ Shenzhen Guangdong 518057
+ CN
+
+24-E9-27 (hex) TomTom International BV
+24E927 (base 16) TomTom International BV
+ Oosterdoksstraat 114
+ Amsterdam North Holland 1011 DK
+ NL
+
+84-5C-F3 (hex) Intel Corporate
+845CF3 (base 16) Intel Corporate
+ Lot 8, Jalan Hi-Tech 2/3
+ Kulim Kedah 09000
+ MY
+
+D0-5A-FD (hex) Realme Chongqing Mobile Telecommunications Corp.,Ltd.
+D05AFD (base 16) Realme Chongqing Mobile Telecommunications Corp.,Ltd.
+ No.178 Yulong Avenue, Yufengshan, Yubei District, Chongqing.
+ Chongqing China 401120
+ CN
+
+58-41-20 (hex) TP-LINK TECHNOLOGIES CO.,LTD.
+584120 (base 16) TP-LINK TECHNOLOGIES CO.,LTD.
+ Building 24(floors 1,3,4,5)and 28(floors 1-4)Central Science and Technology Park,Shennan Road,Nanshan
+ Shenzhen Guangdong 518057
+ CN
+
+64-D7-C0 (hex) Huawei Device Co., Ltd.
+64D7C0 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+94-60-10 (hex) Huawei Device Co., Ltd.
+946010 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+2C-79-3D (hex) Boditech Med
+2C793D (base 16) Boditech Med
+ 43, Geodudanji 1-gil, Dongnae-myeon,
+ Chuncheon-si, Gangwon-do 24398
+ KR
+
+6C-02-E0 (hex) HP Inc.
+6C02E0 (base 16) HP Inc.
+ 10300 Energy Dr
+ Spring TX 77389
+ US
+
+70-89-76 (hex) Tuya (HK) Limietd
+708976 (base 16) Tuya (HK) Limietd
+ FLAT/RM 806 BLK ? 8/F CHEUNG SHA WAN PLAZA 833 CHEUNG SHA WAN ROAD KL
+ hongkong Hong Kong 999077
+ CN
+
+24-5B-83 (hex) Renesas Electronics (Penang) Sdn. Bhd.
+245B83 (base 16) Renesas Electronics (Penang) Sdn. Bhd.
+ Phase 3, Bayan Lepas FIZ
+ Bayan Lepas Penang 11900
+ MY
+
+F0-F5-64 (hex) Samsung Electronics Co.,Ltd
+F0F564 (base 16) Samsung Electronics Co.,Ltd
+ #94-1, Imsoo-Dong
+ Gumi Gyeongbuk 730-350
+ KR
+
+00-DC-B2 (hex) Extreme Networks, Inc.
+00DCB2 (base 16) Extreme Networks, Inc.
+ 6480 Via Del Oro
+ San Jose NH 95119
+ US
+
+6C-13-D5 (hex) Cisco Systems, Inc
+6C13D5 (base 16) Cisco Systems, Inc
+ 80 West Tasman Drive
+ San Jose CA 94568
+ US
+
+00-08-B0 (hex) HUBER+SUHNER BKtel GmbH
+0008B0 (base 16) HUBER+SUHNER BKtel GmbH
+ Benzstraße 4
+ 41836 Hückelhoven-Baal NRW 41836
+ DE
+
+84-DB-9E (hex) Pink Nectarine Health AB
+84DB9E (base 16) Pink Nectarine Health AB
+ Munkbron 11
+ Stockholm 111 28
+ SE
+
+18-69-D8 (hex) Tuya Smart Inc.
+1869D8 (base 16) Tuya Smart Inc.
+ 160 Greentree Drive, Suite 101
+ Dover DE 19904
+ US
+
+68-AB-BC (hex) Beijing Xiaomi Mobile Software Co., Ltd
+68ABBC (base 16) Beijing Xiaomi Mobile Software Co., Ltd
+ The Rainbow City Office Building, 68 Qinghe Middle Street Haidian District
+ Beijing Beijing 100085
+ CN
+
+34-C1-03 (hex) Hangzhou Huamu Technology Co.,Ltd.
+34C103 (base 16) Hangzhou Huamu Technology Co.,Ltd.
+ Xiangnan village,Yiqiao Town,Xiaoshan District,Hangzhou City,Zhejiang
+ Hangzhou 311256
+ CN
+
+64-13-AB (hex) HUAWEI TECHNOLOGIES CO.,LTD
+6413AB (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
+ CN
+
+B0-60-88 (hex) Intel Corporate
+B06088 (base 16) Intel Corporate
+ Lot 8, Jalan Hi-Tech 2/3
+ Kulim Kedah 09000
+ MY
+
+0C-73-29 (hex) Sercomm Corporation.
+0C7329 (base 16) Sercomm Corporation.
+ 3F,No.81,Yu-Yih Rd.,Chu-Nan Chen
+ Miao-Lih Hsuan 115
+ TW
+
+5C-C3-36 (hex) ittim
+5CC336 (base 16) ittim
+ 1202, No.6, Zhongguancun South Street, Haidian District,
+ beijing 100080
+ CN
+
+FC-04-1C (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+FC041C (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+ NO.18 HAIBIN ROAD,
+ DONG GUAN GUANG DONG 523860
+ CN
+
+F4-D4-88 (hex) Apple, Inc.
+F4D488 (base 16) Apple, Inc.
+ 1 Infinite Loop
+ Cupertino CA 95014
+ US
+
+68-2F-67 (hex) Apple, Inc.
+682F67 (base 16) Apple, Inc.
+ 1 Infinite Loop
+ Cupertino CA 95014
+ US
+
+00-3D-E1 (hex) Huawei Device Co., Ltd.
+003DE1 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+F0-6F-46 (hex) Ubiik
+F06F46 (base 16) Ubiik
+ 2F, No. 151, Aikou 1st Street,
+ Zhubei City Hsinchu County 302
+ TW
+
+50-ED-3C (hex) Apple, Inc.
+50ED3C (base 16) Apple, Inc.
+ 1 Infinite Loop
+ Cupertino CA 95014
+ US
+
+E0-CB-BC (hex) Cisco Meraki
+E0CBBC (base 16) Cisco Meraki
+ 500 Terry A. Francois Blvd
+ San Francisco 94158
+ US
+
+68-3A-1E (hex) Cisco Meraki
+683A1E (base 16) Cisco Meraki
+ 500 Terry A. Francois Blvd
+ San Francisco 94158
+ US
+
7C-8A-E1 (hex) COMPAL INFORMATION (KUNSHAN) CO., LTD.
7C8AE1 (base 16) COMPAL INFORMATION (KUNSHAN) CO., LTD.
NO. 25, THE 3RD Street KUNSHAN EXPORT PROCESSING ZONE
@@ -138941,12 +140069,6 @@ E446DA (base 16) Xiaomi Communications Co Ltd
Reno NV 89507
US
-4C-C8-A1 (hex) Cisco Meraki
-4CC8A1 (base 16) Cisco Meraki
- 500 Terry A. Francois Blvd
- San Francisco null 94158
- US
-
4C-BC-98 (hex) IEEE Registration Authority
4CBC98 (base 16) IEEE Registration Authority
445 Hoes Lane
@@ -139913,12 +141035,6 @@ BC5EA1 (base 16) PsiKick, Inc.
Vista CA 92081
US
-98-18-88 (hex) Cisco Meraki
-981888 (base 16) Cisco Meraki
- 500 Terry A. Francois Blvd
- San Francisco null 94158
- US
-
18-81-0E (hex) Apple, Inc.
18810E (base 16) Apple, Inc.
1 Infinite Loop
@@ -140633,12 +141749,6 @@ ACFD93 (base 16) WEIFANG GOERTEK ELECTRONICS CO.,LTD
Weifang Shandong 261205
CN
-68-57-2D (hex) HANGZHOU AIXIANGJI TECHNOLOGY CO., LTD
-68572D (base 16) HANGZHOU AIXIANGJI TECHNOLOGY CO., LTD
- 7 Floor, 3 Blvd., More Centre, 87 Gudun Rd., Xihu District
- Hangzhou Zhejiang 310012
- CN
-
00-B8-C2 (hex) Heights Telecom T ltd
00B8C2 (base 16) Heights Telecom T ltd
Moshe Lerer 15
@@ -141089,12 +142199,6 @@ A057E3 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
NEW TAIPEI TAIWAN 23585
TW
-AC-17-C8 (hex) Cisco Meraki
-AC17C8 (base 16) Cisco Meraki
- 500 Terry A. Francois Blvd
- San Francisco null 94158
- US
-
F4-84-4C (hex) Texas Instruments
F4844C (base 16) Texas Instruments
12500 TI Blvd
@@ -170150,12 +171254,6 @@ A8705D (base 16) ARRIS Group, Inc.
Shenzhen Guangdong 518055
CN
-F0-46-3B (hex) Comcast Cable Corporation
-F0463B (base 16) Comcast Cable Corporation
- 1800 Arch Street
- Philadelphia PA 19103
- US
-
1C-05-B7 (hex) Chongqing Trantor Technology Co., Ltd.
1C05B7 (base 16) Chongqing Trantor Technology Co., Ltd.
No.69,Huoju Avenue,Jiulongpo District.
@@ -170204,17 +171302,23 @@ D8C561 (base 16) CommFront Communications Pte Ltd
Espoo 02600
FI
+F8-2E-8E (hex) Nanjing Kechen Electric Co., Ltd.
+F82E8E (base 16) Nanjing Kechen Electric Co., Ltd.
+ Room 202, Building 12, No. 50 Daguang road
+ Nanjing 210001
+ CN
+
B4-C9-B9 (hex) Sichuan AI-Link Technology Co., Ltd.
B4C9B9 (base 16) Sichuan AI-Link Technology Co., Ltd.
Anzhou, Industrial Park
Mianyang Sichuan 622650
CN
-F8-2E-8E (hex) Nanjing Kechen Electric Co., Ltd.
-F82E8E (base 16) Nanjing Kechen Electric Co., Ltd.
- Room 202, Building 12, No. 50 Daguang road
- Nanjing 210001
- CN
+F0-46-3B (hex) Comcast Cable Corporation
+F0463B (base 16) Comcast Cable Corporation
+ 1800 Arch Street
+ Philadelphia PA 19103
+ US
68-D7-9A (hex) Ubiquiti Networks Inc.
68D79A (base 16) Ubiquiti Networks Inc.
@@ -170258,30 +171362,6 @@ D84732 (base 16) TP-LINK TECHNOLOGIES CO.,LTD.
Shenzhen Guangdong 518057
CN
-B4-6E-08 (hex) HUAWEI TECHNOLOGIES CO.,LTD
-B46E08 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
- Dongguan 523808
- CN
-
-8C-68-3A (hex) HUAWEI TECHNOLOGIES CO.,LTD
-8C683A (base 16) HUAWEI TECHNOLOGIES CO.,LTD
- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
- Dongguan 523808
- CN
-
-B4-81-07 (hex) SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD
-B48107 (base 16) SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD
- Unit East Block22-24/F,Skyworth semiconductor design Bldg., Gaoxin Ave.4.S.,Nanshan District,Shenzhen,China
- SHENZHEN GUANGDONG 518057
- CN
-
-70-66-55 (hex) AzureWave Technology Inc.
-706655 (base 16) AzureWave Technology Inc.
- 8F., No. 94, Baozhong Rd.
- New Taipei City Taiwan 231
- TW
-
28-64-B0 (hex) Huawei Device Co., Ltd.
2864B0 (base 16) Huawei Device Co., Ltd.
No.2 of Xincheng Road, Songshan Lake Zone
@@ -170300,11 +171380,17 @@ B48107 (base 16) SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD
Dongguan Guangdong 523808
CN
-0C-48-C6 (hex) CELESTICA INC.
-0C48C6 (base 16) CELESTICA INC.
- 1900-5140 Yonge Street PO Box 42
- Toronto Ontario M2N 6L7
- CA
+8C-68-3A (hex) HUAWEI TECHNOLOGIES CO.,LTD
+8C683A (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
+ CN
+
+B4-6E-08 (hex) HUAWEI TECHNOLOGIES CO.,LTD
+B46E08 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
+ CN
00-5E-0C (hex) HMD Global Oy
005E0C (base 16) HMD Global Oy
@@ -170312,12 +171398,18 @@ B48107 (base 16) SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD
Espoo 02600
FI
-A4-29-85 (hex) Sichuan AI-Link Technology Co., Ltd.
-A42985 (base 16) Sichuan AI-Link Technology Co., Ltd.
- Anzhou, Industrial Park
- Mianyang Sichuan 622650
+B4-81-07 (hex) SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD
+B48107 (base 16) SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD
+ Unit East Block22-24/F,Skyworth semiconductor design Bldg., Gaoxin Ave.4.S.,Nanshan District,Shenzhen,China
+ SHENZHEN GUANGDONG 518057
CN
+70-66-55 (hex) AzureWave Technology Inc.
+706655 (base 16) AzureWave Technology Inc.
+ 8F., No. 94, Baozhong Rd.
+ New Taipei City Taiwan 231
+ TW
+
64-7C-34 (hex) Ubee Interactive Co., Limited
647C34 (base 16) Ubee Interactive Co., Limited
Flat/RM 1202, 12/F, AT Tower
@@ -170336,18 +171428,36 @@ A42985 (base 16) Sichuan AI-Link Technology Co., Ltd.
Shenzhen Guangdong 518057
CN
+0C-48-C6 (hex) CELESTICA INC.
+0C48C6 (base 16) CELESTICA INC.
+ 1900-5140 Yonge Street PO Box 42
+ Toronto Ontario M2N 6L7
+ CA
+
+A4-29-85 (hex) Sichuan AI-Link Technology Co., Ltd.
+A42985 (base 16) Sichuan AI-Link Technology Co., Ltd.
+ Anzhou, Industrial Park
+ Mianyang Sichuan 622650
+ CN
+
+78-AC-44 (hex) Dell Inc.
+78AC44 (base 16) Dell Inc.
+ One Dell Way
+ Round Rock TX 78682
+ US
+
+98-C8-B8 (hex) vivo Mobile Communication Co., Ltd.
+98C8B8 (base 16) vivo Mobile Communication Co., Ltd.
+ #283,BBK Road
+ Wusha,Chang'An DongGuan City,Guangdong, 523860
+ CN
+
B8-D4-E7 (hex) Aruba, a Hewlett Packard Enterprise Company
B8D4E7 (base 16) Aruba, a Hewlett Packard Enterprise Company
3333 Scott Blvd
Santa Clara CA 95054
US
-BC-09-63 (hex) Apple, Inc.
-BC0963 (base 16) Apple, Inc.
- 1 Infinite Loop
- Cupertino CA 95014
- US
-
D8-4C-90 (hex) Apple, Inc.
D84C90 (base 16) Apple, Inc.
1 Infinite Loop
@@ -170372,6 +171482,18 @@ D84C90 (base 16) Apple, Inc.
Cupertino CA 95014
US
+20-9E-F7 (hex) Extreme Networks, Inc.
+209EF7 (base 16) Extreme Networks, Inc.
+ 6480 Via Del Oro
+ San Jose CA 95119
+ US
+
+BC-09-63 (hex) Apple, Inc.
+BC0963 (base 16) Apple, Inc.
+ 1 Infinite Loop
+ Cupertino CA 95014
+ US
+
18-58-69 (hex) Sailer Electronic Co., Ltd
185869 (base 16) Sailer Electronic Co., Ltd
No. 6, Sanxi Road, Ximagou Industrial Park, Jianxi District
@@ -170384,24 +171506,18 @@ BC2DEF (base 16) Realme Chongqing Mobile Telecommunications Corp.,Ltd.
Chongqing China 401120
CN
-78-AC-44 (hex) Dell Inc.
-78AC44 (base 16) Dell Inc.
- One Dell Way
- Round Rock TX 78682
- US
-
-98-C8-B8 (hex) vivo Mobile Communication Co., Ltd.
-98C8B8 (base 16) vivo Mobile Communication Co., Ltd.
- #283,BBK Road
- Wusha,Chang'An DongGuan City,Guangdong, 523860
- CN
-
78-81-CE (hex) China Mobile Iot Limited company
7881CE (base 16) China Mobile Iot Limited company
No. 8 Yangliu North Road, Yubei District, Chongqing, China
Chong Qing Chong Qing 401120
CN
+BC-FF-21 (hex) Smart Code(shenzhen)Technology Co.,Ltd
+BCFF21 (base 16) Smart Code(shenzhen)Technology Co.,Ltd
+ Room 1206, Satellite Building,2002 Keyuan Road, Nanshan
+ Shenzhen Guangdong (Province) 518000
+ CN
+
44-5C-E9 (hex) Samsung Electronics Co.,Ltd
445CE9 (base 16) Samsung Electronics Co.,Ltd
129, Samsung-ro, Youngtongl-Gu
@@ -170414,30 +171530,12 @@ C01692 (base 16) China Mobile Group Device Co.,Ltd.
Beijing 100053
CN
-20-9E-F7 (hex) Extreme Networks, Inc.
-209EF7 (base 16) Extreme Networks, Inc.
- 6480 Via Del Oro
- San Jose CA 95119
- US
-
-BC-FF-21 (hex) Smart Code(shenzhen)Technology Co.,Ltd
-BCFF21 (base 16) Smart Code(shenzhen)Technology Co.,Ltd
- Room 1206, Satellite Building,2002 Keyuan Road, Nanshan
- Shenzhen Guangdong (Province) 518000
- CN
-
38-17-30 (hex) Ulrich Lippert GmbH & Co KG
381730 (base 16) Ulrich Lippert GmbH & Co KG
Christian-Henkel-Str. 12
Berlin 12349
DE
-28-E3-4E (hex) HUAWEI TECHNOLOGIES CO.,LTD
-28E34E (base 16) HUAWEI TECHNOLOGIES CO.,LTD
- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
- Dongguan 523808
- CN
-
40-2E-71 (hex) Texas Instruments
402E71 (base 16) Texas Instruments
12500 TI Blvd
@@ -170450,6 +171548,24 @@ BCFF21 (base 16) Smart Code(shenzhen)Technology Co.,Ltd
Farum DK-3520
DK
+94-E9-EE (hex) Huawei Device Co., Ltd.
+94E9EE (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+28-E3-4E (hex) HUAWEI TECHNOLOGIES CO.,LTD
+28E34E (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
+ CN
+
+D4-52-EE (hex) BSkyB Ltd
+D452EE (base 16) BSkyB Ltd
+ 130 Kings Road
+ Brentwood Essex 08854
+ GB
+
E0-23-FF (hex) Fortinet, Inc.
E023FF (base 16) Fortinet, Inc.
899 Kifer Road
@@ -170468,30 +171584,6 @@ E023FF (base 16) Fortinet, Inc.
Hsinchu City Hsinchu 30071
TW
-94-E9-EE (hex) Huawei Device Co., Ltd.
-94E9EE (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
- CN
-
-78-B8-D6 (hex) Zebra Technologies Inc.
-78B8D6 (base 16) Zebra Technologies Inc.
- ONE ZEBRA PLAZA
- HOLTSVILLE NY 11742
- US
-
-D4-52-EE (hex) BSkyB Ltd
-D452EE (base 16) BSkyB Ltd
- 130 Kings Road
- Brentwood Essex 08854
- GB
-
-F4-90-CB (hex) IEEE Registration Authority
-F490CB (base 16) IEEE Registration Authority
- 445 Hoes Lane
- Piscataway NJ 08554
- US
-
9C-F0-29 (hex) Integrated Device Technology (Malaysia) Sdn. Bhd.
9CF029 (base 16) Integrated Device Technology (Malaysia) Sdn. Bhd.
Phase 3, Bayan Lepas FIZ
@@ -170504,42 +171596,30 @@ F490CB (base 16) IEEE Registration Authority
Stamford CT 06901
US
-4C-FC-AA (hex) Tesla,Inc.
-4CFCAA (base 16) Tesla,Inc.
- 3500 Deer Creek Rd.
- PALO ALTO CA 94304
+78-B8-D6 (hex) Zebra Technologies Inc.
+78B8D6 (base 16) Zebra Technologies Inc.
+ ONE ZEBRA PLAZA
+ HOLTSVILLE NY 11742
US
-10-CE-45 (hex) Miromico AG
-10CE45 (base 16) Miromico AG
- Gallusstrasse 4
- Zurich Zurich CH-8006
- CH
-
BC-4A-56 (hex) Cisco Systems, Inc
BC4A56 (base 16) Cisco Systems, Inc
80 West Tasman Drive
San Jose CA 94568
US
-F8-AF-05 (hex) Huawei Device Co., Ltd.
-F8AF05 (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
- CN
-
-B8-2F-CB (hex) CMS Electracom
-B82FCB (base 16) CMS Electracom
- 24 Binney Road
- Kings Park NSW 2148
- AU
-
6C-61-F4 (hex) SFR
6C61F4 (base 16) SFR
12 rue jean-philippe Rameau CS 80001
La plaine saint denis FRANCE 93634
FR
+F4-90-CB (hex) IEEE Registration Authority
+F490CB (base 16) IEEE Registration Authority
+ 445 Hoes Lane
+ Piscataway NJ 08554
+ US
+
00-10-7F (hex) CRESTRON ELECTRONICS, INC.
00107F (base 16) CRESTRON ELECTRONICS, INC.
15 Volvo Drive
@@ -170552,11 +171632,17 @@ B82FCB (base 16) CMS Electracom
Copenhagen 2450
DK
-CC-AB-2C (hex) HUMAX Co., Ltd.
-CCAB2C (base 16) HUMAX Co., Ltd.
- HUMAX Village, 216, Hwangsaeul-ro, Bu
- Seongnam-si Gyeonggi-do 463-875
- KR
+58-49-3B (hex) Palo Alto Networks
+58493B (base 16) Palo Alto Networks
+ 3000 Tannery Way
+ Santa Clara CA 95054
+ US
+
+00-1B-17 (hex) Palo Alto Networks
+001B17 (base 16) Palo Alto Networks
+ 3000 Tannery Way
+ Santa Clara CA 95054
+ US
58-59-C2 (hex) Extreme Networks, Inc.
5859C2 (base 16) Extreme Networks, Inc.
@@ -170564,6 +171650,18 @@ CCAB2C (base 16) HUMAX Co., Ltd.
Milpitas CA 95035
US
+B8-2F-CB (hex) CMS Electracom
+B82FCB (base 16) CMS Electracom
+ 24 Binney Road
+ Kings Park NSW 2148
+ AU
+
+10-CE-45 (hex) Miromico AG
+10CE45 (base 16) Miromico AG
+ Gallusstrasse 4
+ Zurich Zurich CH-8006
+ CH
+
78-7D-53 (hex) Extreme Networks, Inc.
787D53 (base 16) Extreme Networks, Inc.
1011 McCarthy Blvd
@@ -170576,24 +171674,48 @@ CCAB2C (base 16) HUMAX Co., Ltd.
Milpitas CA 95035
US
-78-6D-94 (hex) Palo Alto Networks
-786D94 (base 16) Palo Alto Networks
+EC-68-81 (hex) Palo Alto Networks
+EC6881 (base 16) Palo Alto Networks
3000 Tannery Way
Santa Clara CA 95054
US
-58-49-3B (hex) Palo Alto Networks
-58493B (base 16) Palo Alto Networks
+78-6D-94 (hex) Palo Alto Networks
+786D94 (base 16) Palo Alto Networks
3000 Tannery Way
Santa Clara CA 95054
US
-00-1B-17 (hex) Palo Alto Networks
-001B17 (base 16) Palo Alto Networks
- 3000 Tannery Way
- Santa Clara CA 95054
+F8-AF-05 (hex) Huawei Device Co., Ltd.
+F8AF05 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+4C-FC-AA (hex) Tesla,Inc.
+4CFCAA (base 16) Tesla,Inc.
+ 3500 Deer Creek Rd.
+ PALO ALTO CA 94304
US
+CC-AB-2C (hex) HUMAX Co., Ltd.
+CCAB2C (base 16) HUMAX Co., Ltd.
+ HUMAX Village, 216, Hwangsaeul-ro, Bu
+ Seongnam-si Gyeonggi-do 463-875
+ KR
+
+6C-6D-09 (hex) Kyowa Electronics Co.,Ltd.
+6C6D09 (base 16) Kyowa Electronics Co.,Ltd.
+ 4-3-31 Takatsukasa
+ Takarazuka Hyogo 665-0051
+ JP
+
+24-E1-24 (hex) Xiamen Ursalink Technology Co., Ltd.
+24E124 (base 16) Xiamen Ursalink Technology Co., Ltd.
+ 4/F, No. 63-2 Wanghai Road, 2nd Software Park
+ Xiamen Fujian 361008
+ CN
+
24-43-E2 (hex) DASAN Network Solutions
2443E2 (base 16) DASAN Network Solutions
DASAN Tower 8F, 49 Daewangpangyo-ro644beon-gil Bundang-gu
@@ -170606,11 +171728,11 @@ A86ABB (base 16) Sagemcom Broadband SAS
Rueil Malmaison Cedex hauts de seine 92848
FR
-EC-68-81 (hex) Palo Alto Networks
-EC6881 (base 16) Palo Alto Networks
- 3000 Tannery Way
- Santa Clara CA 95054
- US
+90-17-3F (hex) HUAWEI TECHNOLOGIES CO.,LTD
+90173F (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
+ CN
54-0E-2D (hex) vivo Mobile Communication Co., Ltd.
540E2D (base 16) vivo Mobile Communication Co., Ltd.
@@ -170624,42 +171746,48 @@ EC6881 (base 16) Palo Alto Networks
Wusha,Chang'An DongGuan City,Guangdong, 523860
CN
-24-E1-24 (hex) Xiamen Ursalink Technology Co., Ltd.
-24E124 (base 16) Xiamen Ursalink Technology Co., Ltd.
- 4/F, No. 63-2 Wanghai Road, 2nd Software Park
- Xiamen Fujian 361008
- CN
-
A0-FF-70 (hex) Technicolor CH USA Inc.
A0FF70 (base 16) Technicolor CH USA Inc.
5030 Sugarloaf Parkway Bldg 6
Lawrenceville GA 30044
US
-6C-6D-09 (hex) Kyowa Electronics Co.,Ltd.
-6C6D09 (base 16) Kyowa Electronics Co.,Ltd.
- 4-3-31 Takatsukasa
- Takarazuka Hyogo 665-0051
- JP
-
-90-17-3F (hex) HUAWEI TECHNOLOGIES CO.,LTD
-90173F (base 16) HUAWEI TECHNOLOGIES CO.,LTD
- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
- Dongguan 523808
- CN
-
60-7E-CD (hex) HUAWEI TECHNOLOGIES CO.,LTD
607ECD (base 16) HUAWEI TECHNOLOGIES CO.,LTD
No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
Dongguan 523808
CN
+54-8A-BA (hex) Cisco Systems, Inc
+548ABA (base 16) Cisco Systems, Inc
+ 80 West Tasman Drive
+ San Jose CA 94568
+ US
+
+C8-07-39 (hex) NAKAYO Inc
+C80739 (base 16) NAKAYO Inc
+ 1-3-2, Soja-machi
+ Maebashi-shi Gunma 371-0853
+ JP
+
8C-7C-FF (hex) Brocade Communications Systems LLC
8C7CFF (base 16) Brocade Communications Systems LLC
1320 Ridder Park Dr
San Jose CA 95131
US
+AC-3C-8E (hex) Flextronics Computing(Suzhou)Co.,Ltd.
+AC3C8E (base 16) Flextronics Computing(Suzhou)Co.,Ltd.
+ No.1 GuanPu Road. Guoxiang street , WuZhong District,Suzhou City, Jiangsu Province.
+ Suzhou 215124
+ CN
+
+40-62-34 (hex) Telink Semiconductor (Shanghai) Co., Ltd.
+406234 (base 16) Telink Semiconductor (Shanghai) Co., Ltd.
+ No. 1500 Zuchongzhi Rd, Building #3
+ Shanghai 201203
+ CN
+
88-94-71 (hex) Brocade Communications Systems LLC
889471 (base 16) Brocade Communications Systems LLC
1320 Ridder Park Dr
@@ -170672,35 +171800,53 @@ A0FF70 (base 16) Technicolor CH USA Inc.
San Jose CA 95131
US
-80-CF-A2 (hex) Huawei Device Co., Ltd.
-80CFA2 (base 16) Huawei Device Co., Ltd.
+00-94-EC (hex) Huawei Device Co., Ltd.
+0094EC (base 16) Huawei Device Co., Ltd.
No.2 of Xincheng Road, Songshan Lake Zone
Dongguan Guangdong 523808
CN
-00-94-EC (hex) Huawei Device Co., Ltd.
-0094EC (base 16) Huawei Device Co., Ltd.
+74-45-2D (hex) Huawei Device Co., Ltd.
+74452D (base 16) Huawei Device Co., Ltd.
No.2 of Xincheng Road, Songshan Lake Zone
Dongguan Guangdong 523808
CN
-54-8A-BA (hex) Cisco Systems, Inc
-548ABA (base 16) Cisco Systems, Inc
- 80 West Tasman Drive
- San Jose CA 94568
+A4-50-06 (hex) SHENZHEN HUACHUANG SHIDAI TECHNOLOGYCO.,LTD
+A45006 (base 16) SHENZHEN HUACHUANG SHIDAI TECHNOLOGYCO.,LTD
+ longhua dalang huaronglu lianjiangongyeyuan 4-5
+ shenzhen guangdong 518000
+ CN
+
+C8-71-25 (hex) Johnson Outdoors Marine Electronics d/b/a Minnkota
+C87125 (base 16) Johnson Outdoors Marine Electronics d/b/a Minnkota
+ 1531 E Madison Ave
+ Mankato MN 56001
US
+68-6D-BC (hex) Hangzhou Hikvision Digital Technology Co.,Ltd.
+686DBC (base 16) Hangzhou Hikvision Digital Technology Co.,Ltd.
+ No.555 Qianmo Road
+ Hangzhou Zhejiang 310052
+ CN
+
+80-CF-A2 (hex) Huawei Device Co., Ltd.
+80CFA2 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
08-03-42 (hex) Palo Alto Networks
080342 (base 16) Palo Alto Networks
3000 Tannery Way
Santa Clara CA 95054
US
-C8-07-39 (hex) NAKAYO Inc
-C80739 (base 16) NAKAYO Inc
- 1-3-2, Soja-machi
- Maebashi-shi Gunma 371-0853
- JP
+FC-3D-A5 (hex) Arcadyan Corporation
+FC3DA5 (base 16) Arcadyan Corporation
+ No.8, Sec.2, Guangfu Rd.
+ Hsinchu City Hsinchu 30071
+ TW
EC-4F-82 (hex) Calix Inc.
EC4F82 (base 16) Calix Inc.
@@ -170732,70 +171878,16 @@ C0B101 (base 16) zte corporation
shenzhen guangdong 518057
CN
-A4-50-06 (hex) SHENZHEN HUACHUANG SHIDAI TECHNOLOGYCO.,LTD
-A45006 (base 16) SHENZHEN HUACHUANG SHIDAI TECHNOLOGYCO.,LTD
- longhua dalang huaronglu lianjiangongyeyuan 4-5
- shenzhen guangdong 518000
- CN
-
-C8-71-25 (hex) Johnson Outdoors Marine Electronics d/b/a Minnkota
-C87125 (base 16) Johnson Outdoors Marine Electronics d/b/a Minnkota
- 1531 E Madison Ave
- Mankato MN 56001
- US
-
-68-6D-BC (hex) Hangzhou Hikvision Digital Technology Co.,Ltd.
-686DBC (base 16) Hangzhou Hikvision Digital Technology Co.,Ltd.
- No.555 Qianmo Road
- Hangzhou Zhejiang 310052
- CN
-
-AC-3C-8E (hex) Flextronics Computing(Suzhou)Co.,Ltd.
-AC3C8E (base 16) Flextronics Computing(Suzhou)Co.,Ltd.
- No.1 GuanPu Road. Guoxiang street , WuZhong District,Suzhou City, Jiangsu Province.
- Suzhou 215124
- CN
-
-74-45-2D (hex) Huawei Device Co., Ltd.
-74452D (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
- CN
-
-40-62-34 (hex) Telink Semiconductor (Shanghai) Co., Ltd.
-406234 (base 16) Telink Semiconductor (Shanghai) Co., Ltd.
- No. 1500 Zuchongzhi Rd, Building #3
- Shanghai 201203
- CN
-
-FC-3D-A5 (hex) Arcadyan Corporation
-FC3DA5 (base 16) Arcadyan Corporation
- No.8, Sec.2, Guangfu Rd.
- Hsinchu City Hsinchu 30071
- TW
-
-BC-33-AC (hex) Silicon Laboratories
-BC33AC (base 16) Silicon Laboratories
- 7000 W. William Cannon Dr.
- Austin TX 78735
- US
-
-F0-55-01 (hex) Huawei Device Co., Ltd.
-F05501 (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
- CN
-
14-01-52 (hex) Samsung Electronics Co.,Ltd
140152 (base 16) Samsung Electronics Co.,Ltd
#94-1, Imsoo-Dong
Gumi Gyeongbuk 730-350
KR
-7C-F2-DD (hex) Vence Corp
-7CF2DD (base 16) Vence Corp
- 16885 W Bernardo Dr., STE 209
- San Diego CA 92127
+BC-33-AC (hex) Silicon Laboratories
+BC33AC (base 16) Silicon Laboratories
+ 7000 W. William Cannon Dr.
+ Austin TX 78735
US
94-FB-A7 (hex) IEEE Registration Authority
@@ -170810,24 +171902,18 @@ F05501 (base 16) Huawei Device Co., Ltd.
Seoul 12110
KR
-C0-3E-BA (hex) Dell Inc.
-C03EBA (base 16) Dell Inc.
- One Dell Way
- Round Rock TX 78682
- US
-
-1C-FF-59 (hex) Sichuan Tianyi Comheart Telecom Co., Ltd.
-1CFF59 (base 16) Sichuan Tianyi Comheart Telecom Co., Ltd.
- No.198,First Section,Snow Mountain Avenue, Jinyuan Town, Dayi County
- Chengdu Sichuan 611330
- CN
-
98-F6-21 (hex) Xiaomi Communications Co Ltd
98F621 (base 16) Xiaomi Communications Co Ltd
The Rainbow City of China Resources
NO.68, Qinghe Middle Street Haidian District, Beijing 100085
CN
+C0-3E-BA (hex) Dell Inc.
+C03EBA (base 16) Dell Inc.
+ One Dell Way
+ Round Rock TX 78682
+ US
+
C0-39-5A (hex) Zhejiang Dahua Technology Co., Ltd.
C0395A (base 16) Zhejiang Dahua Technology Co., Ltd.
No.1199,Waterfront Road
@@ -170840,18 +171926,42 @@ C0395A (base 16) Zhejiang Dahua Technology Co., Ltd.
DONG GUAN GUANG DONG 523860
CN
-14-13-FB (hex) HUAWEI TECHNOLOGIES CO.,LTD
-1413FB (base 16) HUAWEI TECHNOLOGIES CO.,LTD
- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
- Dongguan 523808
+F0-55-01 (hex) Huawei Device Co., Ltd.
+F05501 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
CN
+7C-F2-DD (hex) Vence Corp
+7CF2DD (base 16) Vence Corp
+ 16885 W Bernardo Dr., STE 209
+ San Diego CA 92127
+ US
+
D0-76-8F (hex) Calix Inc.
D0768F (base 16) Calix Inc.
2777 Orchard Pkwy
San Jose CA 95131
US
+1C-FF-59 (hex) Sichuan Tianyi Comheart Telecom Co., Ltd.
+1CFF59 (base 16) Sichuan Tianyi Comheart Telecom Co., Ltd.
+ No.198,First Section,Snow Mountain Avenue, Jinyuan Town, Dayi County
+ Chengdu Sichuan 611330
+ CN
+
+14-13-FB (hex) HUAWEI TECHNOLOGIES CO.,LTD
+1413FB (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
+ CN
+
+00-E0-B7 (hex) Cosworth Electronics Ltd
+00E0B7 (base 16) Cosworth Electronics Ltd
+ The Octagon, St. James Mill Road
+ Northampton Northamptonshire NN5 5RA, GB
+ GB
+
A4-93-40 (hex) Beijing Supvan Information Technology Co.,Ltd.
A49340 (base 16) Beijing Supvan Information Technology Co.,Ltd.
206.2/F,Building No.1.No.1 Gaoxin Three Street. Huilongguan Town,Changping District
@@ -170882,17 +171992,17 @@ B49E80 (base 16) Sichuan Changhong Electric Ltd.
MianYang SiChuan PRC 621000
CN
-00-E0-B7 (hex) Cosworth Electronics Ltd
-00E0B7 (base 16) Cosworth Electronics Ltd
- The Octagon, St. James Mill Road
- Northampton Northamptonshire NN5 5RA, GB
- GB
+00-E2-2C (hex) China Mobile Group Device Co.,Ltd.
+00E22C (base 16) China Mobile Group Device Co.,Ltd.
+ 32 Xuanwumen West Street,Xicheng District
+ Beijing 100053
+ CN
-74-AB-93 (hex) Blink by Amazon
-74AB93 (base 16) Blink by Amazon
- 100 Riverpark Drive
- North Reading MA 01864
- US
+78-11-00 (hex) Quantumsolution
+781100 (base 16) Quantumsolution
+ Rm 903, STX V-Tower, 128, Gasandigital 1-ro, Geumcheon-gu
+ Seoul 08507
+ KR
E8-7F-95 (hex) Apple, Inc.
E87F95 (base 16) Apple, Inc.
@@ -170906,11 +172016,47 @@ E87F95 (base 16) Apple, Inc.
Cupertino CA 95014
US
-00-E2-2C (hex) China Mobile Group Device Co.,Ltd.
-00E22C (base 16) China Mobile Group Device Co.,Ltd.
- 32 Xuanwumen West Street,Xicheng District
- Beijing 100053
- CN
+74-AB-93 (hex) Blink by Amazon
+74AB93 (base 16) Blink by Amazon
+ 100 Riverpark Drive
+ North Reading MA 01864
+ US
+
+7C-A9-6B (hex) Syrotech Networks. Ltd.
+7CA96B (base 16) Syrotech Networks. Ltd.
+ UNIT NO.-5 20F, KIN WING INDUSTERIAL BUILDING,33 KIN WING STREET
+ TUEN MUN 999077
+ HK
+
+98-06-3C (hex) Samsung Electronics Co.,Ltd
+98063C (base 16) Samsung Electronics Co.,Ltd
+ 129, Samsung-ro, Youngtongl-Gu
+ Suwon Gyeonggi-Do 16677
+ KR
+
+38-DE-AD (hex) Intel Corporate
+38DEAD (base 16) Intel Corporate
+ Lot 8, Jalan Hi-Tech 2/3
+ Kulim Kedah 09000
+ MY
+
+D4-6D-6D (hex) Intel Corporate
+D46D6D (base 16) Intel Corporate
+ Lot 8, Jalan Hi-Tech 2/3
+ Kulim Kedah 09000
+ MY
+
+B4-69-21 (hex) Intel Corporate
+B46921 (base 16) Intel Corporate
+ Lot 8, Jalan Hi-Tech 2/3
+ Kulim Kedah 09000
+ MY
+
+F8-F2-1E (hex) Intel Corporate
+F8F21E (base 16) Intel Corporate
+ Lot 8, Jalan Hi-Tech 2/3
+ Kulim Kedah 09000
+ MY
74-A7-EA (hex) Amazon Technologies Inc.
74A7EA (base 16) Amazon Technologies Inc.
@@ -170918,18 +172064,18 @@ E87F95 (base 16) Apple, Inc.
Reno NV 89507
US
-78-11-00 (hex) Quantumsolution
-781100 (base 16) Quantumsolution
- Rm 903, STX V-Tower, 128, Gasandigital 1-ro, Geumcheon-gu
- Seoul 08507
- KR
-
4C-7C-D9 (hex) Apple, Inc.
4C7CD9 (base 16) Apple, Inc.
1 Infinite Loop
Cupertino CA 95014
US
+F0-D7-AF (hex) IEEE Registration Authority
+F0D7AF (base 16) IEEE Registration Authority
+ 445 Hoes Lane
+ Piscataway NJ 08554
+ US
+
7C-B2-7D (hex) Intel Corporate
7CB27D (base 16) Intel Corporate
Lot 8, Jalan Hi-Tech 2/3
@@ -170966,60 +172112,6 @@ F8E4E3 (base 16) Intel Corporate
Kulim Kedah 09000
MY
-38-DE-AD (hex) Intel Corporate
-38DEAD (base 16) Intel Corporate
- Lot 8, Jalan Hi-Tech 2/3
- Kulim Kedah 09000
- MY
-
-D4-6D-6D (hex) Intel Corporate
-D46D6D (base 16) Intel Corporate
- Lot 8, Jalan Hi-Tech 2/3
- Kulim Kedah 09000
- MY
-
-B4-69-21 (hex) Intel Corporate
-B46921 (base 16) Intel Corporate
- Lot 8, Jalan Hi-Tech 2/3
- Kulim Kedah 09000
- MY
-
-98-06-3C (hex) Samsung Electronics Co.,Ltd
-98063C (base 16) Samsung Electronics Co.,Ltd
- 129, Samsung-ro, Youngtongl-Gu
- Suwon Gyeonggi-Do 16677
- KR
-
-7C-A9-6B (hex) Syrotech Networks. Ltd.
-7CA96B (base 16) Syrotech Networks. Ltd.
- UNIT NO.-5 20F, KIN WING INDUSTERIAL BUILDING,33 KIN WING STREET
- TUEN MUN 999077
- HK
-
-F8-F2-1E (hex) Intel Corporate
-F8F21E (base 16) Intel Corporate
- Lot 8, Jalan Hi-Tech 2/3
- Kulim Kedah 09000
- MY
-
-A4-C3-F0 (hex) Intel Corporate
-A4C3F0 (base 16) Intel Corporate
- Lot 8, Jalan Hi-Tech 2/3
- Kulim Kedah 09000
- MY
-
-50-76-AF (hex) Intel Corporate
-5076AF (base 16) Intel Corporate
- Lot 8, Jalan Hi-Tech 2/3
- Kulim Kedah 09000
- MY
-
-F0-D7-AF (hex) IEEE Registration Authority
-F0D7AF (base 16) IEEE Registration Authority
- 445 Hoes Lane
- Piscataway NJ 08554
- US
-
D8-4F-37 (hex) Proxis, spol. s r.o.
D84F37 (base 16) Proxis, spol. s r.o.
Slovenska 1
@@ -171062,36 +172154,36 @@ C858C0 (base 16) Intel Corporate
Kulim Kedah 09000
MY
-6C-CE-44 (hex) 1MORE
-6CCE44 (base 16) 1MORE
- TianliaoBuilding F14?New Materials Industrial Park,Xueyuan Blvd,Nanshan
- Shenzhen Guangdong 518055
- CN
+A4-C3-F0 (hex) Intel Corporate
+A4C3F0 (base 16) Intel Corporate
+ Lot 8, Jalan Hi-Tech 2/3
+ Kulim Kedah 09000
+ MY
-B0-76-1B (hex) HUAWEI TECHNOLOGIES CO.,LTD
-B0761B (base 16) HUAWEI TECHNOLOGIES CO.,LTD
- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
- Dongguan 523808
- CN
+50-76-AF (hex) Intel Corporate
+5076AF (base 16) Intel Corporate
+ Lot 8, Jalan Hi-Tech 2/3
+ Kulim Kedah 09000
+ MY
-A4-11-62 (hex) Arlo Technology
-A41162 (base 16) Arlo Technology
- 3030 Orchard Parkway
- San Jose CA 95134
+DC-91-BF (hex) Amazon Technologies Inc.
+DC91BF (base 16) Amazon Technologies Inc.
+ P.O Box 8102
+ Reno NV 89507
US
+E0-92-A7 (hex) Feitian Technologies Co., Ltd
+E092A7 (base 16) Feitian Technologies Co., Ltd
+ Floor 17, Tower B, Huizhi Mansion, No.9 Xueqing Rd, Haidian District
+ Beijing 100085
+ CN
+
08-B0-A7 (hex) Truebeyond Co., Ltd
08B0A7 (base 16) Truebeyond Co., Ltd
D-906, 60, Haan-ro
Gwangmyeong Gyeonggi 14322
KR
-DC-91-BF (hex) Amazon Technologies Inc.
-DC91BF (base 16) Amazon Technologies Inc.
- P.O Box 8102
- Reno NV 89507
- US
-
C0-63-69 (hex) BINXIN TECHNOLOGY(ZHEJIANG) LTD.
C06369 (base 16) BINXIN TECHNOLOGY(ZHEJIANG) LTD.
B4066 Haichuang Park,368 Liuhe Road, Binjiang District
@@ -171104,6 +172196,36 @@ C06369 (base 16) BINXIN TECHNOLOGY(ZHEJIANG) LTD.
Oulu 90590
FI
+6C-CE-44 (hex) 1MORE
+6CCE44 (base 16) 1MORE
+ TianliaoBuilding F14?New Materials Industrial Park,Xueyuan Blvd,Nanshan
+ Shenzhen Guangdong 518055
+ CN
+
+B0-76-1B (hex) HUAWEI TECHNOLOGIES CO.,LTD
+B0761B (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
+ CN
+
+A4-11-62 (hex) Arlo Technology
+A41162 (base 16) Arlo Technology
+ 3030 Orchard Parkway
+ San Jose CA 95134
+ US
+
+00-1D-05 (hex) Cooper Lighting Solutions
+001D05 (base 16) Cooper Lighting Solutions
+ 1121 Highway 74 S
+ Peachtree City GA 30269
+ US
+
+8C-0E-60 (hex) Nanjing Juplink Intelligent Technologies Co., Ltd.
+8C0E60 (base 16) Nanjing Juplink Intelligent Technologies Co., Ltd.
+ No. 757 Dixiu Road, Binjiang Economic Development Zone, Jiangning District
+ Nanjing Jiangsu 211100
+ CN
+
18-AB-1D (hex) Samsung Electronics Co.,Ltd
18AB1D (base 16) Samsung Electronics Co.,Ltd
#94-1, Imsoo-Dong
@@ -171128,24 +172250,6 @@ BCE92F (base 16) HP Inc.
Gumi Gyeongbuk 730-350
KR
-E0-92-A7 (hex) Feitian Technologies Co., Ltd
-E092A7 (base 16) Feitian Technologies Co., Ltd
- Floor 17, Tower B, Huizhi Mansion, No.9 Xueqing Rd, Haidian District
- Beijing 100085
- CN
-
-00-1D-05 (hex) Cooper Lighting Solutions
-001D05 (base 16) Cooper Lighting Solutions
- 1121 Highway 74 S
- Peachtree City GA 30269
- US
-
-3C-84-6A (hex) TP-LINK TECHNOLOGIES CO.,LTD.
-3C846A (base 16) TP-LINK TECHNOLOGIES CO.,LTD.
- Building 24(floors 1,3,4,5)and 28(floors 1-4)Central Science and Technology Park,Shennan Road,Nanshan
- Shenzhen Guangdong 518057
- CN
-
84-D8-1B (hex) TP-LINK TECHNOLOGIES CO.,LTD.
84D81B (base 16) TP-LINK TECHNOLOGIES CO.,LTD.
Building 24(floors 1,3,4,5)and 28(floors 1-4)Central Science and Technology Park,Shennan Road,Nanshan
@@ -171158,24 +172262,6 @@ E092A7 (base 16) Feitian Technologies Co., Ltd
NO.68, Qinghe Middle Street Haidian District, Beijing 100085
CN
-8C-0E-60 (hex) Nanjing Juplink Intelligent Technologies Co., Ltd.
-8C0E60 (base 16) Nanjing Juplink Intelligent Technologies Co., Ltd.
- No. 757 Dixiu Road, Binjiang Economic Development Zone, Jiangning District
- Nanjing Jiangsu 211100
- CN
-
-24-A1-60 (hex) Espressif Inc.
-24A160 (base 16) Espressif Inc.
- Room 204, Building 2, 690 Bibo Rd, Pudong New Area
- Shanghai Shanghai 201203
- CN
-
-DC-AE-EB (hex) Ruckus Wireless
-DCAEEB (base 16) Ruckus Wireless
- 350 West Java Drive
- Sunnyvale CA 94089
- US
-
E8-A2-45 (hex) Juniper Networks
E8A245 (base 16) Juniper Networks
1133 Innovation Way
@@ -171206,6 +172292,12 @@ C0D193 (base 16) Huawei Device Co., Ltd.
Dongguan Guangdong 523808
CN
+3C-84-6A (hex) TP-LINK TECHNOLOGIES CO.,LTD.
+3C846A (base 16) TP-LINK TECHNOLOGIES CO.,LTD.
+ Building 24(floors 1,3,4,5)and 28(floors 1-4)Central Science and Technology Park,Shennan Road,Nanshan
+ Shenzhen Guangdong 518057
+ CN
+
78-04-E3 (hex) Huawei Device Co., Ltd.
7804E3 (base 16) Huawei Device Co., Ltd.
No.2 of Xincheng Road, Songshan Lake Zone
@@ -171218,6 +172310,30 @@ A43B0E (base 16) Huawei Device Co., Ltd.
Dongguan Guangdong 523808
CN
+24-A1-60 (hex) Espressif Inc.
+24A160 (base 16) Espressif Inc.
+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area
+ Shanghai Shanghai 201203
+ CN
+
+DC-AE-EB (hex) Ruckus Wireless
+DCAEEB (base 16) Ruckus Wireless
+ 350 West Java Drive
+ Sunnyvale CA 94089
+ US
+
+24-81-C7 (hex) Huawei Device Co., Ltd.
+2481C7 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+FC-86-2A (hex) Huawei Device Co., Ltd.
+FC862A (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
1C-3D-2F (hex) HUAWEI TECHNOLOGIES CO.,LTD
1C3D2F (base 16) HUAWEI TECHNOLOGIES CO.,LTD
No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
@@ -171242,17 +172358,11 @@ ECDB86 (base 16) API-K
Saint Vincent de Mercuze Isère 38660
FR
-24-81-C7 (hex) Huawei Device Co., Ltd.
-2481C7 (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
- CN
-
-FC-86-2A (hex) Huawei Device Co., Ltd.
-FC862A (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
- CN
+48-43-DD (hex) Amazon Technologies Inc.
+4843DD (base 16) Amazon Technologies Inc.
+ P.O Box 8102
+ Reno NV 89507
+ US
08-38-69 (hex) Hong Kong AMobile Intelligent Corp. Limited Taiwan Branch
083869 (base 16) Hong Kong AMobile Intelligent Corp. Limited Taiwan Branch
@@ -171266,54 +172376,12 @@ D89ED4 (base 16) Fiberhome Telecommunication Technologies Co.,LTD
Wuhan Hubei 430074
CN
-AC-95-72 (hex) Jovision Technology Co., Ltd.
-AC9572 (base 16) Jovision Technology Co., Ltd.
- Floor 12, Building 3, Aosheng Square, No.1166 Xinluo Street
- Jinan Shandong 250101
- CN
-
-00-CB-BD (hex) Cambridge Broadband Networks Group
-00CBBD (base 16) Cambridge Broadband Networks Group
- 1 Hammersmith Broadway
- London W6 9DL
- GB
-
-48-43-DD (hex) Amazon Technologies Inc.
-4843DD (base 16) Amazon Technologies Inc.
- P.O Box 8102
- Reno NV 89507
- US
-
-58-94-A2 (hex) KETEK GmbH
-5894A2 (base 16) KETEK GmbH
- Hofer Str. 3
- München 81737
- DE
-
-00-19-F5 (hex) Imagination Technologies Ltd
-0019F5 (base 16) Imagination Technologies Ltd
- Home Park Estate
- Kings Langley Hertfordshire WD4 8LZ
- GB
-
-40-D2-5F (hex) ITEL MOBILE LIMITED
-40D25F (base 16) ITEL MOBILE LIMITED
- RM B3 & B4 BLOCK B, KO FAI INDUSTRIAL BUILDING NO.7 KO FAI ROAD, YAU TONG, KLN, H.K
- Hong Kong KOWLOON 999077
- HK
-
84-03-28 (hex) Juniper Networks
840328 (base 16) Juniper Networks
1133 Innovation Way
Sunnyvale CA 94089
US
-08-9B-B9 (hex) Nokia
-089BB9 (base 16) Nokia
- Karaportti 3
- Espoo Finland 02610
- FI
-
00-1C-FC (hex) Sumitomo Electric Industries, Ltd
001CFC (base 16) Sumitomo Electric Industries, Ltd
1-1-3, Shimaya, Konohana-ku
@@ -171344,28 +172412,46 @@ E079C4 (base 16) iRay Technology Company Limited
Seongnam-si 13595
KR
+AC-95-72 (hex) Jovision Technology Co., Ltd.
+AC9572 (base 16) Jovision Technology Co., Ltd.
+ Floor 12, Building 3, Aosheng Square, No.1166 Xinluo Street
+ Jinan Shandong 250101
+ CN
+
+40-D2-5F (hex) ITEL MOBILE LIMITED
+40D25F (base 16) ITEL MOBILE LIMITED
+ RM B3 & B4 BLOCK B, KO FAI INDUSTRIAL BUILDING NO.7 KO FAI ROAD, YAU TONG, KLN, H.K
+ Hong Kong KOWLOON 999077
+ HK
+
A8-03-2A (hex) Espressif Inc.
A8032A (base 16) Espressif Inc.
Room 204, Building 2, 690 Bibo Rd, Pudong New Area
Shanghai Shanghai 201203
CN
-D8-EF-42 (hex) Huawei Device Co., Ltd.
-D8EF42 (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
- CN
+00-19-F5 (hex) Imagination Technologies Ltd
+0019F5 (base 16) Imagination Technologies Ltd
+ Home Park Estate
+ Kings Langley Hertfordshire WD4 8LZ
+ GB
-80-CC-12 (hex) Huawei Device Co., Ltd.
-80CC12 (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
- CN
+00-CB-BD (hex) Cambridge Broadband Networks Group
+00CBBD (base 16) Cambridge Broadband Networks Group
+ 1 Hammersmith Broadway
+ London W6 9DL
+ GB
-18-AA-0F (hex) Huawei Device Co., Ltd.
-18AA0F (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
+58-94-A2 (hex) KETEK GmbH
+5894A2 (base 16) KETEK GmbH
+ Hofer Str. 3
+ München 81737
+ DE
+
+4C-22-19 (hex) YUANFUDAO HK LIMTED
+4C2219 (base 16) YUANFUDAO HK LIMTED
+ Building C, global creative center, No. 10, Furong street
+ Beijing 100102
CN
54-D9-C6 (hex) Huawei Device Co., Ltd.
@@ -171386,48 +172472,42 @@ D8EF42 (base 16) Huawei Device Co., Ltd.
Suwon Gyeonggi-Do 16677
KR
-AC-9A-96 (hex) Maxlinear, Inc
-AC9A96 (base 16) Maxlinear, Inc
- Am Campeon 3
- Neubiberg Bavaria 85579
- DE
-
-4C-22-19 (hex) YUANFUDAO HK LIMTED
-4C2219 (base 16) YUANFUDAO HK LIMTED
- Building C, global creative center, No. 10, Furong street
- Beijing 100102
- CN
-
-00-E4-06 (hex) HUAWEI TECHNOLOGIES CO.,LTD
-00E406 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
- Dongguan 523808
+D8-EF-42 (hex) Huawei Device Co., Ltd.
+D8EF42 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
CN
-44-22-7C (hex) HUAWEI TECHNOLOGIES CO.,LTD
-44227C (base 16) HUAWEI TECHNOLOGIES CO.,LTD
- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
- Dongguan 523808
+80-CC-12 (hex) Huawei Device Co., Ltd.
+80CC12 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
CN
-CC-B1-82 (hex) HUAWEI TECHNOLOGIES CO.,LTD
-CCB182 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
- Dongguan 523808
+18-AA-0F (hex) Huawei Device Co., Ltd.
+18AA0F (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
CN
-48-90-2F (hex) LG Electronics (Mobile Communications)
-48902F (base 16) LG Electronics (Mobile Communications)
- 60-39, Gasan-dong, Geumcheon-gu
- Seoul 153-801
- KR
-
B0-A4-60 (hex) Intel Corporate
B0A460 (base 16) Intel Corporate
Lot 8, Jalan Hi-Tech 2/3
Kulim Kedah 09000
MY
+AC-9A-96 (hex) Maxlinear, Inc
+AC9A96 (base 16) Maxlinear, Inc
+ Am Campeon 3
+ Neubiberg Bavaria 85579
+ DE
+
+8C-70-86 (hex) Gesellschaft für Sonder-EDV-Anlagen mbH
+8C7086 (base 16) Gesellschaft für Sonder-EDV-Anlagen mbH
+ Lorsbacher Straße 31
+ Hofheim 65719
+ DE
+
1C-28-AF (hex) Aruba, a Hewlett Packard Enterprise Company
1C28AF (base 16) Aruba, a Hewlett Packard Enterprise Company
3333 Scott Blvd
@@ -171446,11 +172526,17 @@ E8EB1B (base 16) Microchip Technology Inc.
Chandler AZ 85224
US
-28-C2-1F (hex) SAMSUNG ELECTRO-MECHANICS(THAILAND)
-28C21F (base 16) SAMSUNG ELECTRO-MECHANICS(THAILAND)
- 93Moo5T. Bangsamak SEMTHAI, WELLGROW INDUSTRIAL ESTATE
- Bangpakong Chachoengsao 24180
- TH
+84-02-83 (hex) HUMAX Co., Ltd.
+840283 (base 16) HUMAX Co., Ltd.
+ HUMAX Village, 216, Hwangsaeul-ro, Bu
+ Seongnam-si Gyeonggi-do 463-875
+ KR
+
+94-17-00 (hex) Xiaomi Communications Co Ltd
+941700 (base 16) Xiaomi Communications Co Ltd
+ The Rainbow City of China Resources
+ NO.68, Qinghe Middle Street Haidian District, Beijing 100085
+ CN
68-D6-ED (hex) GooWi Wireless Technology Co., Limited
68D6ED (base 16) GooWi Wireless Technology Co., Limited
@@ -171458,23 +172544,47 @@ E8EB1B (base 16) Microchip Technology Inc.
Shenzhen Guangdong 518000
CN
-94-17-00 (hex) Xiaomi Communications Co Ltd
-941700 (base 16) Xiaomi Communications Co Ltd
- The Rainbow City of China Resources
- NO.68, Qinghe Middle Street Haidian District, Beijing 100085
+00-E4-06 (hex) HUAWEI TECHNOLOGIES CO.,LTD
+00E406 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
CN
-84-02-83 (hex) HUMAX Co., Ltd.
-840283 (base 16) HUMAX Co., Ltd.
- HUMAX Village, 216, Hwangsaeul-ro, Bu
- Seongnam-si Gyeonggi-do 463-875
+44-22-7C (hex) HUAWEI TECHNOLOGIES CO.,LTD
+44227C (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
+ CN
+
+CC-B1-82 (hex) HUAWEI TECHNOLOGIES CO.,LTD
+CCB182 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
+ CN
+
+48-90-2F (hex) LG Electronics (Mobile Communications)
+48902F (base 16) LG Electronics (Mobile Communications)
+ 60-39, Gasan-dong, Geumcheon-gu
+ Seoul 153-801
KR
-8C-70-86 (hex) Gesellschaft für Sonder-EDV-Anlagen mbH
-8C7086 (base 16) Gesellschaft für Sonder-EDV-Anlagen mbH
- Lorsbacher Straße 31
- Hofheim 65719
- DE
+28-B7-7C (hex) IEEE Registration Authority
+28B77C (base 16) IEEE Registration Authority
+ 445 Hoes Lane
+ Piscataway NJ 08554
+ US
+
+28-C2-1F (hex) SAMSUNG ELECTRO-MECHANICS(THAILAND)
+28C21F (base 16) SAMSUNG ELECTRO-MECHANICS(THAILAND)
+ 93Moo5T. Bangsamak SEMTHAI, WELLGROW INDUSTRIAL ESTATE
+ Bangpakong Chachoengsao 24180
+ TH
+
+5C-7D-7D (hex) Technicolor CH USA Inc.
+5C7D7D (base 16) Technicolor CH USA Inc.
+ 5030 Sugarloaf Parkway Bldg 6
+ Lawrenceville GA 30044
+ US
F4-BF-A8 (hex) Juniper Networks
F4BFA8 (base 16) Juniper Networks
@@ -171482,18 +172592,12 @@ F4BFA8 (base 16) Juniper Networks
Sunnyvale CA 94089
US
-28-B7-7C (hex) IEEE Registration Authority
-28B77C (base 16) IEEE Registration Authority
+C0-61-9A (hex) IEEE Registration Authority
+C0619A (base 16) IEEE Registration Authority
445 Hoes Lane
Piscataway NJ 08554
US
-40-06-34 (hex) Huawei Device Co., Ltd.
-400634 (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
- CN
-
C4-2B-44 (hex) Huawei Device Co., Ltd.
C42B44 (base 16) Huawei Device Co., Ltd.
No.2 of Xincheng Road, Songshan Lake Zone
@@ -171506,41 +172610,23 @@ F8A26D (base 16) CANON INC.
Ohta-ku Tokyo 146-8501
JP
-5C-7D-7D (hex) Technicolor CH USA Inc.
-5C7D7D (base 16) Technicolor CH USA Inc.
- 5030 Sugarloaf Parkway Bldg 6
- Lawrenceville GA 30044
- US
-
-70-61-EE (hex) Sunwoda Electronic Co.,Ltd
-7061EE (base 16) Sunwoda Electronic Co.,Ltd
- No 2,Yihe Road, shiyan Street?shilong Community ,Baoan District
- Shenzhen 518105
- CN
-
-C0-61-9A (hex) IEEE Registration Authority
-C0619A (base 16) IEEE Registration Authority
- 445 Hoes Lane
- Piscataway NJ 08554
- US
-
74-42-7F (hex) AVM Audiovisuelles Marketing und Computersysteme GmbH
74427F (base 16) AVM Audiovisuelles Marketing und Computersysteme GmbH
Alt-Moabit 95
Berlin Berlin 10559
DE
-74-F9-CA (hex) Nintendo Co.,Ltd
-74F9CA (base 16) Nintendo Co.,Ltd
- 11-1 HOKOTATE-CHO KAMITOBA,MINAMI-KU
- KYOTO KYOTO 601-8501
- JP
+40-06-34 (hex) Huawei Device Co., Ltd.
+400634 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
-68-9E-0B (hex) Cisco Systems, Inc
-689E0B (base 16) Cisco Systems, Inc
- 80 West Tasman Drive
- San Jose CA 94568
- US
+70-61-EE (hex) Sunwoda Electronic Co.,Ltd
+7061EE (base 16) Sunwoda Electronic Co.,Ltd
+ No 2,Yihe Road, shiyan Street?shilong Community ,Baoan District
+ Shenzhen 518105
+ CN
14-3F-C3 (hex) SnapAV
143FC3 (base 16) SnapAV
@@ -171554,11 +172640,11 @@ C0619A (base 16) IEEE Registration Authority
Rueil Malmaison Cedex hauts de seine 92848
FR
-A0-D0-DC (hex) Amazon Technologies Inc.
-A0D0DC (base 16) Amazon Technologies Inc.
- P.O Box 8102
- Reno NV 89507
- US
+74-F9-CA (hex) Nintendo Co.,Ltd
+74F9CA (base 16) Nintendo Co.,Ltd
+ 11-1 HOKOTATE-CHO KAMITOBA,MINAMI-KU
+ KYOTO KYOTO 601-8501
+ JP
50-C6-8E (hex) Biwin Semiconductor (HK) Company Limted
50C68E (base 16) Biwin Semiconductor (HK) Company Limted
@@ -171566,18 +172652,36 @@ A0D0DC (base 16) Amazon Technologies Inc.
Shenzhen Guangdong 518055
CN
-80-CA-4B (hex) SHENZHEN GONGJIN ELECTRONICS CO.,LTD
-80CA4B (base 16) SHENZHEN GONGJIN ELECTRONICS CO.,LTD
- No.2, Danzi North Road, Kengzi Street,Pingshan District,
- SHENZHEN GUANGDONG 518122
- CN
-
04-E7-95 (hex) HUAWEI TECHNOLOGIES CO.,LTD
04E795 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
Dongguan 523808
CN
+A0-D0-DC (hex) Amazon Technologies Inc.
+A0D0DC (base 16) Amazon Technologies Inc.
+ P.O Box 8102
+ Reno NV 89507
+ US
+
+68-9E-0B (hex) Cisco Systems, Inc
+689E0B (base 16) Cisco Systems, Inc
+ 80 West Tasman Drive
+ San Jose CA 94568
+ US
+
+C8-FE-6A (hex) Juniper Networks
+C8FE6A (base 16) Juniper Networks
+ 1133 Innovation Way
+ Sunnyvale CA 94089
+ US
+
+80-CA-4B (hex) SHENZHEN GONGJIN ELECTRONICS CO.,LTD
+80CA4B (base 16) SHENZHEN GONGJIN ELECTRONICS CO.,LTD
+ No.2, Danzi North Road, Kengzi Street,Pingshan District,
+ SHENZHEN GUANGDONG 518122
+ CN
+
64-F5-4E (hex) EM Microelectronic
64F54E (base 16) EM Microelectronic
Rue des Sors 3
@@ -171590,6 +172694,24 @@ A0D0DC (base 16) Amazon Technologies Inc.
Castel Maggiore Bologna 40013
IT
+C4-DD-57 (hex) Espressif Inc.
+C4DD57 (base 16) Espressif Inc.
+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area
+ Shanghai Shanghai 201203
+ CN
+
+70-2F-4B (hex) Steelcase Inc.
+702F4B (base 16) Steelcase Inc.
+ 901 44th Street SE
+ Grand Rapids MI 49508-7594
+ US
+
+E4-75-DC (hex) Arcadyan Corporation
+E475DC (base 16) Arcadyan Corporation
+ No.8, Sec.2, Guangfu Rd.
+ Hsinchu City Hsinchu 30071
+ TW
+
C4-16-88 (hex) Huawei Device Co., Ltd.
C41688 (base 16) Huawei Device Co., Ltd.
No.2 of Xincheng Road, Songshan Lake Zone
@@ -171602,18 +172724,6 @@ C41688 (base 16) Huawei Device Co., Ltd.
Dongguan Guangdong 523808
CN
-30-A9-98 (hex) Huawei Device Co., Ltd.
-30A998 (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
- CN
-
-C8-FE-6A (hex) Juniper Networks
-C8FE6A (base 16) Juniper Networks
- 1133 Innovation Way
- Sunnyvale CA 94089
- US
-
BC-A5-A9 (hex) Apple, Inc.
BCA5A9 (base 16) Apple, Inc.
1 Infinite Loop
@@ -171632,54 +172742,18 @@ A0FBC5 (base 16) Apple, Inc.
Cupertino CA 95014
US
-70-2F-4B (hex) Steelcase Inc.
-702F4B (base 16) Steelcase Inc.
- 901 44th Street SE
- Grand Rapids MI 49508-7594
- US
-
-E4-75-DC (hex) Arcadyan Corporation
-E475DC (base 16) Arcadyan Corporation
- No.8, Sec.2, Guangfu Rd.
- Hsinchu City Hsinchu 30071
- TW
-
-C4-DD-57 (hex) Espressif Inc.
-C4DD57 (base 16) Espressif Inc.
- Room 204, Building 2, 690 Bibo Rd, Pudong New Area
- Shanghai Shanghai 201203
+30-A9-98 (hex) Huawei Device Co., Ltd.
+30A998 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
CN
-58-20-8A (hex) IEEE Registration Authority
-58208A (base 16) IEEE Registration Authority
- 445 Hoes Lane
- Piscataway NJ 08554
- US
-
00-7D-60 (hex) Apple, Inc.
007D60 (base 16) Apple, Inc.
1 Infinite Loop
Cupertino CA 95014
US
-6C-1E-D7 (hex) vivo Mobile Communication Co., Ltd.
-6C1ED7 (base 16) vivo Mobile Communication Co., Ltd.
- #283,BBK Road
- Wusha,Chang'An DongGuan City,Guangdong, 523860
- CN
-
-F0-AA-0B (hex) Arra Networks/ Spectramesh
-F0AA0B (base 16) Arra Networks/ Spectramesh
- 9201 Ward Pkwy #101
- Kansas City MO 64114
- US
-
-94-56-41 (hex) Palo Alto Networks
-945641 (base 16) Palo Alto Networks
- 3000 Tannery Way
- Santa Clara CA 95054
- US
-
EC-C3-02 (hex) HUMAX Co., Ltd.
ECC302 (base 16) HUMAX Co., Ltd.
HUMAX Village, 216, Hwangsaeul-ro, Bu
@@ -171692,22 +172766,16 @@ ECC302 (base 16) HUMAX Co., Ltd.
shenzhen Guangdong 518067
CN
-18-36-72 (hex) Shaoxing ShunChuang Technology CO.,LTD
-183672 (base 16) Shaoxing ShunChuang Technology CO.,LTD
- N.O.398 west tongjiang load shangyu
- Shaoxing Zhejiang 312300
- CN
-
00-C3-43 (hex) E-T-A Circuit Breakers Ltd
00C343 (base 16) E-T-A Circuit Breakers Ltd
6 Telford Close
Aylesbury Buckinghamshire HP198DG
GB
-B0-A6-51 (hex) Cisco Systems, Inc
-B0A651 (base 16) Cisco Systems, Inc
- 80 West Tasman Drive
- San Jose CA 94568
+58-20-8A (hex) IEEE Registration Authority
+58208A (base 16) IEEE Registration Authority
+ 445 Hoes Lane
+ Piscataway NJ 08554
US
00-90-D2 (hex) Artel Video Systems
@@ -171716,16 +172784,28 @@ B0A651 (base 16) Cisco Systems, Inc
Westford MA 01886
US
-B4-BA-12 (hex) China Mobile (Hangzhou) Information Technology Co.,Ltd.
-B4BA12 (base 16) China Mobile (Hangzhou) Information Technology Co.,Ltd.
- No. 1600 Yuhangtang Road, Wuchang Street, Yuhang District
- Hangzhou Zhejiang 311100
+6C-1E-D7 (hex) vivo Mobile Communication Co., Ltd.
+6C1ED7 (base 16) vivo Mobile Communication Co., Ltd.
+ #283,BBK Road
+ Wusha,Chang'An DongGuan City,Guangdong, 523860
CN
-D4-91-0F (hex) Amazon Technologies Inc.
-D4910F (base 16) Amazon Technologies Inc.
- P.O Box 8102
- Reno NV 89507
+F0-AA-0B (hex) Arra Networks/ Spectramesh
+F0AA0B (base 16) Arra Networks/ Spectramesh
+ 9201 Ward Pkwy #101
+ Kansas City MO 64114
+ US
+
+94-56-41 (hex) Palo Alto Networks
+945641 (base 16) Palo Alto Networks
+ 3000 Tannery Way
+ Santa Clara CA 95054
+ US
+
+80-F5-B5 (hex) Texas Instruments
+80F5B5 (base 16) Texas Instruments
+ 12500 TI Blvd
+ Dallas TX 75243
US
1C-30-08 (hex) Hui Zhou Gaoshengda Technology Co.,LTD
@@ -171740,6 +172820,12 @@ D4910F (base 16) Amazon Technologies Inc.
Singapore 556741
SG
+B4-BA-12 (hex) China Mobile (Hangzhou) Information Technology Co.,Ltd.
+B4BA12 (base 16) China Mobile (Hangzhou) Information Technology Co.,Ltd.
+ No. 1600 Yuhangtang Road, Wuchang Street, Yuhang District
+ Hangzhou Zhejiang 311100
+ CN
+
5C-F9-FD (hex) Taicang T&W Electronics
5CF9FD (base 16) Taicang T&W Electronics
89# Jiang Nan RD
@@ -171758,56 +172844,44 @@ D4910F (base 16) Amazon Technologies Inc.
Dongguan Guangdong 523808
CN
+18-36-72 (hex) Shaoxing ShunChuang Technology CO.,LTD
+183672 (base 16) Shaoxing ShunChuang Technology CO.,LTD
+ N.O.398 west tongjiang load shangyu
+ Shaoxing Zhejiang 312300
+ CN
+
28-DE-65 (hex) Aruba, a Hewlett Packard Enterprise Company
28DE65 (base 16) Aruba, a Hewlett Packard Enterprise Company
3333 Scott Blvd
Santa Clara CA 95054
US
-C4-FB-AA (hex) HUAWEI TECHNOLOGIES CO.,LTD
-C4FBAA (base 16) HUAWEI TECHNOLOGIES CO.,LTD
- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
- Dongguan 523808
- CN
-
-E0-E0-C2 (hex) China Mobile Group Device Co.,Ltd.
-E0E0C2 (base 16) China Mobile Group Device Co.,Ltd.
- 32 Xuanwumen West Street,Xicheng District
- Beijing 100053
- CN
-
-80-F5-B5 (hex) Texas Instruments
-80F5B5 (base 16) Texas Instruments
- 12500 TI Blvd
- Dallas TX 75243
+B0-A6-51 (hex) Cisco Systems, Inc
+B0A651 (base 16) Cisco Systems, Inc
+ 80 West Tasman Drive
+ San Jose CA 94568
US
-F0-64-26 (hex) Extreme Networks, Inc.
-F06426 (base 16) Extreme Networks, Inc.
- 6480 Via Del Oro
- San Jose CA 95119
+D4-91-0F (hex) Amazon Technologies Inc.
+D4910F (base 16) Amazon Technologies Inc.
+ P.O Box 8102
+ Reno NV 89507
US
-70-3A-2D (hex) Shenzhen V-Link Technology CO., LTD.
-703A2D (base 16) Shenzhen V-Link Technology CO., LTD.
- Room 1803, BaiRuiDa Building, Bantian Sub-district, LongGang District
- Shenzhen GuangDong 518000
- CN
-
-1C-45-C2 (hex) Huizhou City Sunsin lntelligent Technology Co.,Ltd
-1C45C2 (base 16) Huizhou City Sunsin lntelligent Technology Co.,Ltd
- Outside No.6 community, Zhongkai high tech Zone, Huizhou
- Huizhou 516000
+B8-5F-B0 (hex) HUAWEI TECHNOLOGIES CO.,LTD
+B85FB0 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
CN
-AC-DC-CA (hex) HUAWEI TECHNOLOGIES CO.,LTD
-ACDCCA (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+C4-FB-AA (hex) HUAWEI TECHNOLOGIES CO.,LTD
+C4FBAA (base 16) HUAWEI TECHNOLOGIES CO.,LTD
No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
Dongguan 523808
CN
-B8-5F-B0 (hex) HUAWEI TECHNOLOGIES CO.,LTD
-B85FB0 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+AC-DC-CA (hex) HUAWEI TECHNOLOGIES CO.,LTD
+ACDCCA (base 16) HUAWEI TECHNOLOGIES CO.,LTD
No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
Dongguan 523808
CN
@@ -171830,11 +172904,29 @@ C07831 (base 16) Huawei Device Co., Ltd.
Dongguan Guangdong 523808
CN
-00-1A-65 (hex) Seluxit
-001A65 (base 16) Seluxit
- Sofiendalsvej 74
- Aalborg SV 9200
- DK
+E0-E0-C2 (hex) China Mobile Group Device Co.,Ltd.
+E0E0C2 (base 16) China Mobile Group Device Co.,Ltd.
+ 32 Xuanwumen West Street,Xicheng District
+ Beijing 100053
+ CN
+
+F0-64-26 (hex) Extreme Networks, Inc.
+F06426 (base 16) Extreme Networks, Inc.
+ 6480 Via Del Oro
+ San Jose CA 95119
+ US
+
+70-3A-2D (hex) Shenzhen V-Link Technology CO., LTD.
+703A2D (base 16) Shenzhen V-Link Technology CO., LTD.
+ Room 1803, BaiRuiDa Building, Bantian Sub-district, LongGang District
+ Shenzhen GuangDong 518000
+ CN
+
+1C-45-C2 (hex) Huizhou City Sunsin lntelligent Technology Co.,Ltd
+1C45C2 (base 16) Huizhou City Sunsin lntelligent Technology Co.,Ltd
+ Outside No.6 community, Zhongkai high tech Zone, Huizhou
+ Huizhou 516000
+ CN
7C-4E-09 (hex) Shenzhen Skyworth Wireless Technology Co.,Ltd
7C4E09 (base 16) Shenzhen Skyworth Wireless Technology Co.,Ltd
@@ -171854,18 +172946,18 @@ FC9643 (base 16) Juniper Networks
Sunnyvale CA 94089
US
-AC-67-84 (hex) Google, Inc.
-AC6784 (base 16) Google, Inc.
- 1600 Amphitheatre Parkway
- Mountain View CA 94043
- US
-
A8-B0-88 (hex) eero inc.
A8B088 (base 16) eero inc.
660 3rd Street
San Francisco CA 94107
US
+00-1A-65 (hex) Seluxit
+001A65 (base 16) Seluxit
+ Sofiendalsvej 74
+ Aalborg SV 9200
+ DK
+
28-0F-C5 (hex) Beijing Leadsec Technology Co., Ltd.
280FC5 (base 16) Beijing Leadsec Technology Co., Ltd.
Venus Plaza No.21Zhongguancun Software Park,No.8 Dongbeiwang Xilu, Haidian District
@@ -171902,23 +172994,11 @@ B0ECDD (base 16) HUAWEI TECHNOLOGIES CO.,LTD
Dongguan 523808
CN
-9C-5F-B0 (hex) Samsung Electronics Co.,Ltd
-9C5FB0 (base 16) Samsung Electronics Co.,Ltd
- #94-1, Imsoo-Dong
- Gumi Gyeongbuk 730-350
- KR
-
-E8-7F-6B (hex) Samsung Electronics Co.,Ltd
-E87F6B (base 16) Samsung Electronics Co.,Ltd
- #94-1, Imsoo-Dong
- Gumi Gyeongbuk 730-350
- KR
-
-94-F2-BB (hex) Valeo Vision Systems
-94F2BB (base 16) Valeo Vision Systems
- Dunmore Road
- Tuam Co. Galway H54 Y276
- IE
+AC-67-84 (hex) Google, Inc.
+AC6784 (base 16) Google, Inc.
+ 1600 Amphitheatre Parkway
+ Mountain View CA 94043
+ US
90-DE-80 (hex) Shenzhen Century Xinyang Technology Co., Ltd
90DE80 (base 16) Shenzhen Century Xinyang Technology Co., Ltd
@@ -171938,41 +173018,35 @@ E4DC43 (base 16) Huawei Device Co., Ltd.
Dongguan Guangdong 523808
CN
+9C-5F-B0 (hex) Samsung Electronics Co.,Ltd
+9C5FB0 (base 16) Samsung Electronics Co.,Ltd
+ #94-1, Imsoo-Dong
+ Gumi Gyeongbuk 730-350
+ KR
+
+E8-7F-6B (hex) Samsung Electronics Co.,Ltd
+E87F6B (base 16) Samsung Electronics Co.,Ltd
+ #94-1, Imsoo-Dong
+ Gumi Gyeongbuk 730-350
+ KR
+
FC-B6-9D (hex) Zhejiang Dahua Technology Co., Ltd.
FCB69D (base 16) Zhejiang Dahua Technology Co., Ltd.
No.1199,Waterfront Road
Hangzhou Zhejiang 310053
CN
-78-6A-1F (hex) ARRIS Group, Inc.
-786A1F (base 16) ARRIS Group, Inc.
- 6450 Sequence Drive
- San Diego CA 92121
- US
-
-24-94-CB (hex) ARRIS Group, Inc.
-2494CB (base 16) ARRIS Group, Inc.
- 6450 Sequence Drive
- San Diego CA 92121
- US
-
18-5B-B3 (hex) Samsung Electronics Co.,Ltd
185BB3 (base 16) Samsung Electronics Co.,Ltd
#94-1, Imsoo-Dong
Gumi Gyeongbuk 730-350
KR
-48-8B-0A (hex) Cisco Systems, Inc
-488B0A (base 16) Cisco Systems, Inc
- 80 West Tasman Drive
- San Jose CA 94568
- US
-
-8C-7A-15 (hex) Ruckus Wireless
-8C7A15 (base 16) Ruckus Wireless
- 350 West Java Drive
- Sunnyvale CA 94089
- US
+94-F2-BB (hex) Valeo Vision Systems
+94F2BB (base 16) Valeo Vision Systems
+ Dunmore Road
+ Tuam Co. Galway H54 Y276
+ IE
64-20-E0 (hex) T3 Technology Co., Ltd.
6420E0 (base 16) T3 Technology Co., Ltd.
@@ -171980,12 +173054,6 @@ FCB69D (base 16) Zhejiang Dahua Technology Co., Ltd.
Bangkok Bangkok 10310
TH
-10-96-93 (hex) Amazon Technologies Inc.
-109693 (base 16) Amazon Technologies Inc.
- P.O Box 8102
- Reno NV 89507
- US
-
5C-C0-A0 (hex) HUAWEI TECHNOLOGIES CO.,LTD
5CC0A0 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
@@ -172004,30 +173072,42 @@ ECA1D1 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
Dongguan 523808
CN
-E4-F1-D4 (hex) vivo Mobile Communication Co., Ltd.
-E4F1D4 (base 16) vivo Mobile Communication Co., Ltd.
- #283,BBK Road
- Wusha,Chang'An DongGuan City,Guangdong, 523860
- CN
-
A4-6D-A4 (hex) HUAWEI TECHNOLOGIES CO.,LTD
A46DA4 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
Dongguan 523808
CN
+48-8B-0A (hex) Cisco Systems, Inc
+488B0A (base 16) Cisco Systems, Inc
+ 80 West Tasman Drive
+ San Jose CA 94568
+ US
+
+24-94-CB (hex) ARRIS Group, Inc.
+2494CB (base 16) ARRIS Group, Inc.
+ 6450 Sequence Drive
+ San Diego CA 92121
+ US
+
+78-6A-1F (hex) ARRIS Group, Inc.
+786A1F (base 16) ARRIS Group, Inc.
+ 6450 Sequence Drive
+ San Diego CA 92121
+ US
+
+8C-7A-15 (hex) Ruckus Wireless
+8C7A15 (base 16) Ruckus Wireless
+ 350 West Java Drive
+ Sunnyvale CA 94089
+ US
+
84-11-C2 (hex) IEEE Registration Authority
8411C2 (base 16) IEEE Registration Authority
445 Hoes Lane
Piscataway NJ 08554
US
-20-AC-9C (hex) China Telecom Corporation Limited
-20AC9C (base 16) China Telecom Corporation Limited
- 31 Jinrong Street, Xicheng District, Beijing, China
- Beijing, China 100033
- CN
-
28-AD-18 (hex) Hui Zhou Gaoshengda Technology Co.,LTD
28AD18 (base 16) Hui Zhou Gaoshengda Technology Co.,LTD
No.75,Zhongkai High-Tech Development District,Huizhou
@@ -172046,22 +173126,22 @@ C45A86 (base 16) Huawei Device Co., Ltd.
Dongguan Guangdong 523808
CN
+20-AC-9C (hex) China Telecom Corporation Limited
+20AC9C (base 16) China Telecom Corporation Limited
+ 31 Jinrong Street, Xicheng District, Beijing, China
+ Beijing, China 100033
+ CN
+
74-78-27 (hex) Dell Inc.
747827 (base 16) Dell Inc.
One Dell Way
Round Rock TX 78682
US
-C4-0B-31 (hex) Apple, Inc.
-C40B31 (base 16) Apple, Inc.
- 1 Infinite Loop
- Cupertino CA 95014
- US
-
-BC-62-CE (hex) SHENZHEN NETIS TECHNOLOGY CO.,LTD
-BC62CE (base 16) SHENZHEN NETIS TECHNOLOGY CO.,LTD
- 8 Floor, Bd B, information port, Langshan RD, Nanshan district,
- Shenzhen Guangdong 518057
+E4-F1-D4 (hex) vivo Mobile Communication Co., Ltd.
+E4F1D4 (base 16) vivo Mobile Communication Co., Ltd.
+ #283,BBK Road
+ Wusha,Chang'An DongGuan City,Guangdong, 523860
CN
94-09-D3 (hex) shenzhen maxtopic technology co.,ltd
@@ -172070,12 +173150,6 @@ BC62CE (base 16) SHENZHEN NETIS TECHNOLOGY CO.,LTD
shenzhen guangdong 518108
CN
-78-2E-56 (hex) China Mobile Group Device Co.,Ltd.
-782E56 (base 16) China Mobile Group Device Co.,Ltd.
- 32 Xuanwumen West Street,Xicheng District
- Beijing 100053
- CN
-
58-D5-6E (hex) D-Link International
58D56E (base 16) D-Link International
1 Internal Business Park, #03-12,The Synergy
@@ -172100,23 +173174,23 @@ ECADE0 (base 16) D-Link International
Singapore Singapore 609917
SG
-C4-CB-54 (hex) Fibocom Auto Inc.
-C4CB54 (base 16) Fibocom Auto Inc.
- 5/F,Tower A,Technology Building II,1057# Nanhai Blvd
- Shenzhen Guangdong 518054
+BC-62-CE (hex) SHENZHEN NETIS TECHNOLOGY CO.,LTD
+BC62CE (base 16) SHENZHEN NETIS TECHNOLOGY CO.,LTD
+ 8 Floor, Bd B, information port, Langshan RD, Nanshan district,
+ Shenzhen Guangdong 518057
CN
-10-2D-31 (hex) Shenzhen Americas Trading Company LLC
-102D31 (base 16) Shenzhen Americas Trading Company LLC
- 1308 Capital Ave.Suite #7
- Plano TX 75074
- US
+78-2E-56 (hex) China Mobile Group Device Co.,Ltd.
+782E56 (base 16) China Mobile Group Device Co.,Ltd.
+ 32 Xuanwumen West Street,Xicheng District
+ Beijing 100053
+ CN
-0C-35-4F (hex) Nokia
-0C354F (base 16) Nokia
- 600 March Road
- Kanata Ontario K2K 2E6
- CA
+C4-0B-31 (hex) Apple, Inc.
+C40B31 (base 16) Apple, Inc.
+ 1 Infinite Loop
+ Cupertino CA 95014
+ US
30-24-A9 (hex) HP Inc.
3024A9 (base 16) HP Inc.
@@ -172124,6 +173198,12 @@ C4CB54 (base 16) Fibocom Auto Inc.
Spring TX 77389
US
+A8-6E-4E (hex) Huawei Device Co., Ltd.
+A86E4E (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
94-5F-34 (hex) Renesas Electronics (Penang) Sdn. Bhd.
945F34 (base 16) Renesas Electronics (Penang) Sdn. Bhd.
Phase 3, Bayan Lepas FIZ
@@ -172136,6 +173216,42 @@ C4CB54 (base 16) Fibocom Auto Inc.
Seoul 153-801
KR
+2C-4A-11 (hex) Ciena Corporation
+2C4A11 (base 16) Ciena Corporation
+ 7035 Ridge Road
+ Hanover MD 21076
+ US
+
+1C-4C-48 (hex) ITEL MOBILE LIMITED
+1C4C48 (base 16) ITEL MOBILE LIMITED
+ RM B3 & B4 BLOCK B, KO FAI INDUSTRIAL BUILDING NO.7 KO FAI ROAD, YAU TONG, KLN, H.K
+ Hong Kong KOWLOON 999077
+ HK
+
+C4-CB-54 (hex) Fibocom Auto Inc.
+C4CB54 (base 16) Fibocom Auto Inc.
+ 5/F,Tower A,Technology Building II,1057# Nanhai Blvd
+ Shenzhen Guangdong 518054
+ CN
+
+10-2D-31 (hex) Shenzhen Americas Trading Company LLC
+102D31 (base 16) Shenzhen Americas Trading Company LLC
+ 1308 Capital Ave.Suite #7
+ Plano TX 75074
+ US
+
+2C-07-86 (hex) Huawei Device Co., Ltd.
+2C0786 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+0C-35-4F (hex) Nokia
+0C354F (base 16) Nokia
+ 600 March Road
+ Kanata Ontario K2K 2E6
+ CA
+
60-81-2B (hex) Astronics Custom Control Concepts
60812B (base 16) Astronics Custom Control Concepts
6020 S 190th ST
@@ -172154,58 +173270,28 @@ B8114B (base 16) Cisco Systems, Inc
San Jose CA 94568
US
-2C-07-86 (hex) Huawei Device Co., Ltd.
-2C0786 (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
- CN
-
-A8-6E-4E (hex) Huawei Device Co., Ltd.
-A86E4E (base 16) Huawei Device Co., Ltd.
- No.2 of Xincheng Road, Songshan Lake Zone
- Dongguan Guangdong 523808
- CN
-
-2C-4A-11 (hex) Ciena Corporation
-2C4A11 (base 16) Ciena Corporation
- 7035 Ridge Road
- Hanover MD 21076
- US
-
-1C-4C-48 (hex) ITEL MOBILE LIMITED
-1C4C48 (base 16) ITEL MOBILE LIMITED
- RM B3 & B4 BLOCK B, KO FAI INDUSTRIAL BUILDING NO.7 KO FAI ROAD, YAU TONG, KLN, H.K
- Hong Kong KOWLOON 999077
- HK
-
-00-14-5A (hex) Westermo Neratec AG
-00145A (base 16) Westermo Neratec AG
- Rosswiesstrasse 29
- CH-8608 Bubikon ZH
- CH
-
-A8-99-DC (hex) i-TOP DESING TECHNOLOGY CO.,LTD
-A899DC (base 16) i-TOP DESING TECHNOLOGY CO.,LTD
- 301-302,Rongchengda Building,Dabao Road, Bao an District
- Shenzhen 518101
- CN
-
-B0-7B-25 (hex) Dell Inc.
-B07B25 (base 16) Dell Inc.
- One Dell Way
- Round Rock TX 78682
- US
-
30-E2-83 (hex) Texas Instruments
30E283 (base 16) Texas Instruments
12500 TI Blvd
Dallas TX 75243
US
-48-F0-7B (hex) ALPSALPINE CO,.LTD
-48F07B (base 16) ALPSALPINE CO,.LTD
+00-02-C7 (hex) ALPSALPINE CO,.LTD
+0002C7 (base 16) ALPSALPINE CO,.LTD
+ 1-2-1, Okinouchi, Sama-City,
+ Sama 00000
+ JP
+
+FC-62-B9 (hex) ALPSALPINE CO,.LTD
+FC62B9 (base 16) ALPSALPINE CO,.LTD
6-1
- Kakuda Miyagi-Pref 981-1595
+ kakuda-city Miyagi-Pref 981-1595
+ JP
+
+60-38-0E (hex) ALPSALPINE CO,.LTD
+60380E (base 16) ALPSALPINE CO,.LTD
+ 1-2-1, Okinouchi
+ Soma-city Fukushima 976-8501
JP
28-A1-83 (hex) ALPSALPINE CO,.LTD
@@ -172220,23 +173306,17 @@ B07B25 (base 16) Dell Inc.
Soma-city, Fukushima-pref., 976-8501
JP
-00-02-C7 (hex) ALPSALPINE CO,.LTD
-0002C7 (base 16) ALPSALPINE CO,.LTD
- 1-2-1, Okinouchi, Sama-City,
- Sama 00000
- JP
-
-FC-62-B9 (hex) ALPSALPINE CO,.LTD
-FC62B9 (base 16) ALPSALPINE CO,.LTD
+48-F0-7B (hex) ALPSALPINE CO,.LTD
+48F07B (base 16) ALPSALPINE CO,.LTD
6-1
- kakuda-city Miyagi-Pref 981-1595
+ Kakuda Miyagi-Pref 981-1595
JP
-60-38-0E (hex) ALPSALPINE CO,.LTD
-60380E (base 16) ALPSALPINE CO,.LTD
- 1-2-1, Okinouchi
- Soma-city Fukushima 976-8501
- JP
+00-14-5A (hex) Westermo Neratec AG
+00145A (base 16) Westermo Neratec AG
+ Rosswiesstrasse 29
+ CH-8608 Bubikon ZH
+ CH
1C-D1-BA (hex) Fiberhome Telecommunication Technologies Co.,LTD
1CD1BA (base 16) Fiberhome Telecommunication Technologies Co.,LTD
@@ -172244,6 +173324,30 @@ FC62B9 (base 16) ALPSALPINE CO,.LTD
Wuhan Hubei 430074
CN
+A8-99-DC (hex) i-TOP DESING TECHNOLOGY CO.,LTD
+A899DC (base 16) i-TOP DESING TECHNOLOGY CO.,LTD
+ 301-302,Rongchengda Building,Dabao Road, Bao an District
+ Shenzhen 518101
+ CN
+
+B0-7B-25 (hex) Dell Inc.
+B07B25 (base 16) Dell Inc.
+ One Dell Way
+ Round Rock TX 78682
+ US
+
+84-EA-ED (hex) Roku, Inc
+84EAED (base 16) Roku, Inc
+ 1155 Coleman Ave
+ San Jose CA 95110
+ US
+
+00-12-AD (hex) VIVAVIS AG
+0012AD (base 16) VIVAVIS AG
+ Nobelstraße, 18
+ Ettlingen Baden-Württemberg 76275
+ DE
+
E0-29-67 (hex) HMD Global Oy
E02967 (base 16) HMD Global Oy
Bertel Jungin aukio 9
@@ -172262,36 +173366,48 @@ E02967 (base 16) HMD Global Oy
Shenzhen GuangDong 518000
CN
+3C-20-93 (hex) GD Midea Air-Conditioning Equipment Co.,Ltd.
+3C2093 (base 16) GD Midea Air-Conditioning Equipment Co.,Ltd.
+ Midea Global Innovation Center,Beijiao Town,Shunde
+ Foshan Guangdong 528311
+ CN
+
9C-05-67 (hex) Honor Device Co., Ltd.
9C0567 (base 16) Honor Device Co., Ltd.
A1701, Block AB, Building 1, Tianan Yungu Phase I, Gangtou Community, Bantian Street
Shenzhen Guangdong 518129
CN
+B0-7D-64 (hex) Intel Corporate
+B07D64 (base 16) Intel Corporate
+ Lot 8, Jalan Hi-Tech 2/3
+ Kulim Kedah 09000
+ MY
+
+00-42-38 (hex) Intel Corporate
+004238 (base 16) Intel Corporate
+ Lot 8, Jalan Hi-Tech 2/3
+ Kulim Kedah 09000
+ MY
+
C0-E3-FB (hex) HUAWEI TECHNOLOGIES CO.,LTD
C0E3FB (base 16) HUAWEI TECHNOLOGIES CO.,LTD
No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
Dongguan 523808
CN
-84-EA-ED (hex) Roku, Inc
-84EAED (base 16) Roku, Inc
- 1155 Coleman Ave
- San Jose CA 95110
- US
-
-00-12-AD (hex) VIVAVIS AG
-0012AD (base 16) VIVAVIS AG
- Nobelstraße, 18
- Ettlingen Baden-Württemberg 76275
- DE
-
80-4B-50 (hex) Silicon Laboratories
804B50 (base 16) Silicon Laboratories
400 West Cesar Chavez Street
Austin TX 78701
US
+40-89-A8 (hex) WiredIQ, LLC
+4089A8 (base 16) WiredIQ, LLC
+ 1 South School Avenue
+ sarasota FL 34237
+ US
+
68-3F-7D (hex) INGRAM MICRO SERVICES
683F7D (base 16) INGRAM MICRO SERVICES
100 CHEMIN DE BAILLOT
@@ -172304,35 +173420,41 @@ C0E3FB (base 16) HUAWEI TECHNOLOGIES CO.,LTD
Nuremberg Bavaria 90411
DE
-B0-7D-64 (hex) Intel Corporate
-B07D64 (base 16) Intel Corporate
- Lot 8, Jalan Hi-Tech 2/3
- Kulim Kedah 09000
- MY
-
-00-42-38 (hex) Intel Corporate
-004238 (base 16) Intel Corporate
- Lot 8, Jalan Hi-Tech 2/3
- Kulim Kedah 09000
- MY
+D4-EC-AB (hex) vivo Mobile Communication Co., Ltd.
+D4ECAB (base 16) vivo Mobile Communication Co., Ltd.
+ #283,BBK Road
+ Wusha,Chang'An DongGuan City,Guangdong, 523860
+ CN
-40-89-A8 (hex) WiredIQ, LLC
-4089A8 (base 16) WiredIQ, LLC
- 1 South School Avenue
- sarasota FL 34237
- US
+BC-3E-CB (hex) vivo Mobile Communication Co., Ltd.
+BC3ECB (base 16) vivo Mobile Communication Co., Ltd.
+ #283,BBK Road
+ Wusha,Chang'An DongGuan City,Guangdong, 523860
+ CN
-3C-20-93 (hex) GD Midea Air-Conditioning Equipment Co.,Ltd.
-3C2093 (base 16) GD Midea Air-Conditioning Equipment Co.,Ltd.
- Midea Global Innovation Center,Beijiao Town,Shunde
- Foshan Guangdong 528311
+08-79-8C (hex) HUAWEI TECHNOLOGIES CO.,LTD
+08798C (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
CN
-34-AF-B3 (hex) Amazon Technologies Inc.
-34AFB3 (base 16) Amazon Technologies Inc.
- P.O Box 8102
- Reno NV 89507
- US
+50-C3-A2 (hex) nFore Technology Co.,Ltd.
+50C3A2 (base 16) nFore Technology Co.,Ltd.
+ 5F., No.31, Ln. 258, Ruiguang Rd. Neihu Dist., Taipei City 114, Taiwan
+ Taipei 114
+ TW
+
+54-DB-A2 (hex) Fibrain
+54DBA2 (base 16) Fibrain
+ Zaczernie 190F
+ Zaczernie Subcarpathia 36-062
+ PL
+
+08-9B-B9 (hex) Nokia Solutions and Networks GmbH & Co. KG
+089BB9 (base 16) Nokia Solutions and Networks GmbH & Co. KG
+ Werinherstrasse 91
+ München Bavaria D-81541
+ DE
44-AE-25 (hex) Cisco Systems, Inc
44AE25 (base 16) Cisco Systems, Inc
@@ -172345,3 +173467,261 @@ BCE712 (base 16) Cisco Systems, Inc
80 West Tasman Drive
San Jose CA 94568
US
+
+64-A1-98 (hex) Huawei Device Co., Ltd.
+64A198 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+5C-9A-A1 (hex) Huawei Device Co., Ltd.
+5C9AA1 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+60-55-F9 (hex) Espressif Inc.
+6055F9 (base 16) Espressif Inc.
+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area
+ Shanghai Shanghai 201203
+ CN
+
+50-3D-C6 (hex) Xiaomi Communications Co Ltd
+503DC6 (base 16) Xiaomi Communications Co Ltd
+ The Rainbow City of China Resources
+ NO.68, Qinghe Middle Street Haidian District, Beijing 100085
+ CN
+
+8C-EA-48 (hex) Samsung Electronics Co.,Ltd
+8CEA48 (base 16) Samsung Electronics Co.,Ltd
+ 129, Samsung-ro, Youngtongl-Gu
+ Suwon Gyeonggi-Do 16677
+ KR
+
+00-5F-67 (hex) TP-Link Corporation Limited
+005F67 (base 16) TP-Link Corporation Limited
+ Room 901,9/F.New East Ocean Centre, 9 Science Museum Road
+ Tsim Sha Tsui Kowloon 999077
+ HK
+
+BC-F4-5F (hex) zte corporation
+BCF45F (base 16) zte corporation
+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China
+ shenzhen guangdong 518057
+ CN
+
+B0-BD-1B (hex) Dongguan Liesheng Electronic Co., Ltd.
+B0BD1B (base 16) Dongguan Liesheng Electronic Co., Ltd.
+ F5, Building B, North Block, Gaosheng Tech Park, No. 84 Zhongli Road, Nancheng District, Dongguan Ci
+ dongguan guangdong 523000
+ CN
+
+10-96-93 (hex) Amazon Technologies Inc.
+109693 (base 16) Amazon Technologies Inc.
+ P.O Box 8102
+ Reno NV 89507
+ US
+
+34-AF-B3 (hex) Amazon Technologies Inc.
+34AFB3 (base 16) Amazon Technologies Inc.
+ P.O Box 8102
+ Reno NV 89507
+ US
+
+14-18-C3 (hex) Intel Corporate
+1418C3 (base 16) Intel Corporate
+ Lot 8, Jalan Hi-Tech 2/3
+ Kulim Kedah 09000
+ MY
+
+24-ED-FD (hex) Siemens Canada Limited
+24EDFD (base 16) Siemens Canada Limited
+ 1954 Technology Drive
+ Peterborough Ontario K9J 6X7
+ CA
+
+6C-CD-D6 (hex) NETGEAR
+6CCDD6 (base 16) NETGEAR
+ 350 East Plumeria Drive
+ San Jose CA 95134
+ US
+
+54-07-64 (hex) Huawei Device Co., Ltd.
+540764 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+DC-D7-A0 (hex) Huawei Device Co., Ltd.
+DCD7A0 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+9C-68-65 (hex) Fiberhome Telecommunication Technologies Co.,LTD
+9C6865 (base 16) Fiberhome Telecommunication Technologies Co.,LTD
+ No.5 DongXin Road
+ Wuhan Hubei 430074
+ CN
+
+38-3D-5B (hex) Fiberhome Telecommunication Technologies Co.,LTD
+383D5B (base 16) Fiberhome Telecommunication Technologies Co.,LTD
+ No.5 DongXin Road
+ Wuhan Hubei 430074
+ CN
+
+A0-62-FB (hex) HISENSE VISUAL TECHNOLOGY CO.,LTD
+A062FB (base 16) HISENSE VISUAL TECHNOLOGY CO.,LTD
+ Qianwangang Road 218
+ Qingdao Shandong 266510
+ CN
+
+98-77-E7 (hex) Kaonmedia CO., LTD.
+9877E7 (base 16) Kaonmedia CO., LTD.
+ 884-3, Seongnam-daero, Bundang-gu
+ Seongnam-si Gyeonggi-do 13517
+ KR
+
+78-D4-F1 (hex) IEEE Registration Authority
+78D4F1 (base 16) IEEE Registration Authority
+ 445 Hoes Lane
+ Piscataway NJ 08554
+ US
+
+B0-16-56 (hex) HUAWEI TECHNOLOGIES CO.,LTD
+B01656 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
+ CN
+
+04-79-75 (hex) Honor Device Co., Ltd.
+047975 (base 16) Honor Device Co., Ltd.
+ A1701, Block AB, Building 1, Tianan Yungu Phase I, Gangtou Community, Bantian Street
+ Shenzhen Guangdong 518129
+ CN
+
+DC-90-20 (hex) RURU TEK PRIVATE LIMITED
+DC9020 (base 16) RURU TEK PRIVATE LIMITED
+ The Canopy , BLOCK A , SECOND FLOOR , UNIT 1B , PARANUR RAILWAY STATION ROAD ,MAHINDRA WORLD CITY,
+ CHENGALPATTU TAMILNADU 603004
+ IN
+
+38-10-F0 (hex) Aruba, a Hewlett Packard Enterprise Company
+3810F0 (base 16) Aruba, a Hewlett Packard Enterprise Company
+ 3333 Scott Blvd
+ Santa Clara CA 95054
+ US
+
+F8-8F-07 (hex) Samsung Electronics Co.,Ltd
+F88F07 (base 16) Samsung Electronics Co.,Ltd
+ #94-1, Imsoo-Dong
+ Gumi Gyeongbuk 730-350
+ KR
+
+14-EB-08 (hex) HUAWEI TECHNOLOGIES CO.,LTD
+14EB08 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park
+ Dongguan 523808
+ CN
+
+A8-42-A7 (hex) Jiangsu Huitong Group Co.,Ltd.
+A842A7 (base 16) Jiangsu Huitong Group Co.,Ltd.
+ No. 24, Block 2, Taohuawu New District
+ Zhenjiang Jiangsu 212003
+ CN
+
+2C-D2-6B (hex) FN-LINK TECHNOLOGY LIMITED
+2CD26B (base 16) FN-LINK TECHNOLOGY LIMITED
+ A Building,HuiXin industial park,No 31, YongHe road, Fuyong town, Bao'an District
+ SHENZHEN GUANGDONG 518100
+ CN
+
+B8-8D-F1 (hex) Nanjing BigFish Semiconductor Co., Ltd.
+B88DF1 (base 16) Nanjing BigFish Semiconductor Co., Ltd.
+ 7th Floor,Block A, Chuangzhi Building, No.17, Xinghuo Road
+ Nanjing Jiangsu 210032
+ CN
+
+6C-4A-74 (hex) AERODISK LLC
+6C4A74 (base 16) AERODISK LLC
+ Obrucheva, 30/1 b1
+ Moscow Moskva 117485
+ RU
+
+40-DE-17 (hex) Shenzhen Lanfeng Times Industrial Co.,Ltd.
+40DE17 (base 16) Shenzhen Lanfeng Times Industrial Co.,Ltd.
+ Introduction Building 6F,71 Xin’an Street, Baoan District
+ Shenzhen Guangdong 518101
+ CN
+
+F0-16-28 (hex) Technicolor (China) Technology Co., Ltd.
+F01628 (base 16) Technicolor (China) Technology Co., Ltd.
+ No.A2181,2F,Zhongguancun Dongsheng Science and Technology Park, Jia No.18, Xueqing Rd., Haidian District
+ Beijing 100083
+ CN
+
+68-57-2D (hex) Tuya Smart Inc.
+68572D (base 16) Tuya Smart Inc.
+ 160 Greentree Drive, Suite 101
+ Dover DE 19904
+ US
+
+14-98-77 (hex) Apple, Inc.
+149877 (base 16) Apple, Inc.
+ 1 Infinite Loop
+ Cupertino CA 95014
+ US
+
+88-66-5A (hex) Apple, Inc.
+88665A (base 16) Apple, Inc.
+ 1 Infinite Loop
+ Cupertino CA 95014
+ US
+
+B0-E5-F9 (hex) Apple, Inc.
+B0E5F9 (base 16) Apple, Inc.
+ 1 Infinite Loop
+ Cupertino CA 95014
+ US
+
+84-71-6A (hex) Huawei Device Co., Ltd.
+84716A (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+48-8C-63 (hex) Huawei Device Co., Ltd.
+488C63 (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+70-DD-EF (hex) Huawei Device Co., Ltd.
+70DDEF (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+54-A6-DB (hex) Huawei Device Co., Ltd.
+54A6DB (base 16) Huawei Device Co., Ltd.
+ No.2 of Xincheng Road, Songshan Lake Zone
+ Dongguan Guangdong 523808
+ CN
+
+AC-17-C8 (hex) Cisco Meraki
+AC17C8 (base 16) Cisco Meraki
+ 500 Terry A. Francois Blvd
+ San Francisco 94158
+ US
+
+98-18-88 (hex) Cisco Meraki
+981888 (base 16) Cisco Meraki
+ 500 Terry A. Francois Blvd
+ San Francisco 94158
+ US
+
+4C-C8-A1 (hex) Cisco Meraki
+4CC8A1 (base 16) Cisco Meraki
+ 500 Terry A. Francois Blvd
+ San Francisco 94158
+ US
diff --git a/hwdb.d/ma-medium.txt b/hwdb.d/ma-medium.txt
index 0bb0ddc66d..43a498c09f 100644
--- a/hwdb.d/ma-medium.txt
+++ b/hwdb.d/ma-medium.txt
@@ -3908,12 +3908,6 @@ F4-69-D5 (hex) Rosco, Inc
Jamaica NY 11435
US
-4C-93-A6 (hex) 4D Sistem Ticaret A.S.
-400000-4FFFFF (base 16) 4D Sistem Ticaret A.S.
- Oran Mah. Turan Gunes Bul. Park Oran Ofis 180-Y No:6 Cankaya
- ANKARA 06550
- TR
-
4C-93-A6 (hex) Private
500000-5FFFFF (base 16) Private
@@ -4223,12 +4217,6 @@ C00000-CFFFFF (base 16) Parametric GmbH
Saint-Petersburg 193318
RU
-A4-53-EE (hex) Ubisafe Smart Devices
-200000-2FFFFF (base 16) Ubisafe Smart Devices
- Getulio Vargas 2729
- Sao Jose SC 88103-400
- BR
-
A4-53-EE (hex) Stellamore
100000-1FFFFF (base 16) Stellamore
Room 1519, 15th Floor, Block A, Economic Building, Baoyuan Huafeng Headquarters, No. 288, Xixiang Avenue, Bao'an District
@@ -4247,6 +4235,60 @@ A4-53-EE (hex) Dongguan HuaFuu industrial co., LTD
Dongguan Guangdong 523841
CN
+A4-53-EE (hex) Ubisafe Smart Devices
+200000-2FFFFF (base 16) Ubisafe Smart Devices
+ Getulio Vargas 2729
+ Sao Jose SC 88103-400
+ BR
+
+4C-93-A6 (hex) 4TheWall - 4D Sistem A.S
+400000-4FFFFF (base 16) 4TheWall - 4D Sistem A.S
+ Oran Mah. Turan Gunes Bul. Park Oran Ofis 180-Y No:6 Cankaya
+ ANKARA 06550
+ TR
+
+A0-02-4A (hex) Xiaojie Technology (Shenzhen) Co., Ltd
+600000-6FFFFF (base 16) Xiaojie Technology (Shenzhen) Co., Ltd
+ 801#, Block B1,Kexing Secience Park, Hi-Tech Industrial Park, Nanshan District
+ Shenzhen Guangdong 518000
+ CN
+
+78-D4-F1 (hex) Huaqin Telecom Technology Co.,Ltd.
+500000-5FFFFF (base 16) Huaqin Telecom Technology Co.,Ltd.
+ Building 1,No.399, Keyuan Road, Pudong, Shanghai China
+ Shanghai 200120
+ CN
+
+78-D4-F1 (hex) shanghai baudcom communication device co.,ltd
+900000-9FFFFF (base 16) shanghai baudcom communication device co.,ltd
+ 519A, Building A, Lianming Road 389, Minhang District
+ shanghai shanghai 201101
+ CN
+
+78-D4-F1 (hex) BYD Auto lndustry Co.,Ltd
+400000-4FFFFF (base 16) BYD Auto lndustry Co.,Ltd
+ No.3009 BYD Road, Building D23, BYD EPRI, PingShan District,
+ ShenZhen GuangDong 518118
+ CN
+
+78-D4-F1 (hex) Famar Fueguina S.A.
+700000-7FFFFF (base 16) Famar Fueguina S.A.
+ Rodney 70
+ Buenos Aires 1427
+ AR
+
+44-6F-D8 (hex) Sichuan subao network technology ltd.co.
+000000-0FFFFF (base 16) Sichuan subao network technology ltd.co.
+ No. 704 Room , No. 599 South Century Town Road, High technology district, Chengdu
+ chengdu sichuan Province 610094
+ CN
+
+44-6F-D8 (hex) ZHEJIANG SHIP ELECTRONICS & TECHNOLOGY CO., LTD.
+500000-5FFFFF (base 16) ZHEJIANG SHIP ELECTRONICS & TECHNOLOGY CO., LTD.
+ #6 GAOYA RD
+ NINGBO ZHEJIANG PROVINCE 315191
+ CN
+
4C-4B-F9 (hex) Shenzhen dingsheng technology co., LTD
400000-4FFFFF (base 16) Shenzhen dingsheng technology co., LTD
Floor 3, building 5, kaijeda industrial zone, no.97, huaxing road, langkou community, dalang street, longhua district
@@ -4667,12 +4709,6 @@ E00000-EFFFFF (base 16) Univer S.p.A.
Milan 20128
IT
-34-E1-D1 (hex) Apart Audio NV
-900000-9FFFFF (base 16) Apart Audio NV
- Industriepark Brechtsebaan 8 bus 1
- Schoten 2900
- BE
-
FC-D2-B6 (hex) NREAL TECHNOLOGY LIMITED
A00000-AFFFFF (base 16) NREAL TECHNOLOGY LIMITED
RM 1901,19/F LEE GARDEN ONE 33 HYSAN AVENUE CAUSEWAY BAY
@@ -8114,18 +8150,66 @@ A00000-AFFFFF (base 16) AU Optronics Corporation
New Taipei 221
TW
-A4-53-EE (hex) MASBER ELECTRIC SL
-000000-0FFFFF (base 16) MASBER ELECTRIC SL
+A4-53-EE (hex) MAHLE ELECTRONICS, SLU
+000000-0FFFFF (base 16) MAHLE ELECTRONICS, SLU
Ctra. Madrid-Valencia Km. 196
Motilla del Palancar Cuenca 16200
ES
+A4-53-EE (hex) Aura Home, Inc.
+600000-6FFFFF (base 16) Aura Home, Inc.
+ 50 Eldridge Street, Suite 5D
+ New York NY 10002
+ US
+
A4-53-EE (hex) SSK CORPORATION
D00000-DFFFFF (base 16) SSK CORPORATION
3F, M-10, Centre of Hi-Tech Industrial Park, Nanshan
Shenzhen 518054
CN
+A0-02-4A (hex) Argos Solutions AS
+400000-4FFFFF (base 16) Argos Solutions AS
+ Dyrmyrgata 35
+ Kongsberg 3611
+ NO
+
+A0-02-4A (hex) Danriver Technologies Corp.
+200000-2FFFFF (base 16) Danriver Technologies Corp.
+ Building 3#, 2F, Yunxin Rd.
+ Shanghai 200436
+ CN
+
+A0-02-4A (hex) Kontakt Micro-Location Sp z o.o.
+900000-9FFFFF (base 16) Kontakt Micro-Location Sp z o.o.
+ Stoczniowcow 3
+ Krakow 30-709
+ PL
+
+A0-02-4A (hex) Xi'an Yingsheng Electric Technology Co.,Ltd.
+B00000-BFFFFF (base 16) Xi'an Yingsheng Electric Technology Co.,Ltd.
+ Room 303, building B, Xi'an University of Technology science and Technology Park, 26 Gazelle road, Zhang Ba Street office,
+ Xi'an 710065
+ CN
+
+78-D4-F1 (hex) Quidel Corporation
+D00000-DFFFFF (base 16) Quidel Corporation
+ 9975 Summers Ridge Road
+ San Diego CA 92121
+ US
+
+78-D4-F1 (hex) Xiamen Cheerzing IOT Technology Co.,Ltd.
+800000-8FFFFF (base 16) Xiamen Cheerzing IOT Technology Co.,Ltd.
+ Xiamen Cheerzing IOT Technology Co.,Ltd.
+ Xiamen FuJian 361002
+ CN
+
+34-E1-D1 (hex) Biamp
+900000-9FFFFF (base 16) Biamp
+ 9300 SW Gemini Drive
+ Beaverton OR 97008
+ US
+
20-85-93 (hex) UNILUMIN GROUP CO.,LTD
300000-3FFFFF (base 16) UNILUMIN GROUP CO.,LTD
No.112 Yongfu Rd.,BaoanDistrict,
@@ -12116,6 +12200,60 @@ D00000-DFFFFF (base 16) Larch Networks
Rosh Ain 4809239
IL
+A4-53-EE (hex) T-Touching Co., Ltd.
+800000-8FFFFF (base 16) T-Touching Co., Ltd.
+ 28B, No. 4, Science and Technology 10th Road
+ Dongguan GuangDong 52300
+ CN
+
+A0-02-4A (hex) Zhejiang Hechuan Technology Co.,Ltd
+000000-0FFFFF (base 16) Zhejiang Hechuan Technology Co.,Ltd
+ No. 9, Fucai Road, Longyou Industrial Zone, Quzhou City, Zhejiang Province, PRC
+ Quzhou 324000
+ CN
+
+A4-53-EE (hex) Beijing Lanke Science and Technology Co.,LTd.
+700000-7FFFFF (base 16) Beijing Lanke Science and Technology Co.,LTd.
+ Room 607, building 6, No.1, Chaoqian Road, science and Technology Park, Changping District
+ Beijing 102209
+ CN
+
+A0-02-4A (hex) bitbee Inc
+D00000-DFFFFF (base 16) bitbee Inc
+ #703, 361 Simindae-ro, Dongan-gu,
+ anyang-si gyeonggi-do 14057
+ KR
+
+A0-02-4A (hex) SomaDetect Inc
+300000-3FFFFF (base 16) SomaDetect Inc
+ 241 Canada Street, Suite 10
+ Fredericton New Brunswick E3A 4A1
+ CA
+
+78-D4-F1 (hex) BONENG TRANSMISSION(SUZHOU)CO.,LTD
+A00000-AFFFFF (base 16) BONENG TRANSMISSION(SUZHOU)CO.,LTD
+ 100#Ruyuan Rd.,Xiangcheng District,
+ Suzhou Jiangsu 215131
+ CN
+
+78-D4-F1 (hex) Lyngsoe Systems
+200000-2FFFFF (base 16) Lyngsoe Systems
+ 101 Simona Dr Unit 2
+ Bolton Ontario L7E 4E8
+ CA
+
+78-D4-F1 (hex) Blue Sparq, Inc.
+E00000-EFFFFF (base 16) Blue Sparq, Inc.
+ 928 NE 24th Lane, Unit 4
+ Cape Coral FL 33909
+ US
+
+44-6F-D8 (hex) SCAIME
+D00000-DFFFFF (base 16) SCAIME
+ 294 Rue Georges Charpak
+ JUVIGNY Select State 74100
+ FR
+
4C-4B-F9 (hex) Shandong Linkotech Electronic Co., Ltd.
600000-6FFFFF (base 16) Shandong Linkotech Electronic Co., Ltd.
22nd Floor, Building 2, Aosheng Building, No.1166 Xinyi Street, High-tech Zone
@@ -16052,6 +16190,72 @@ A4-53-EE (hex) Williamson Corporation
Concord MA 01742
US
+A4-53-EE (hex) Larva.io OÜ
+300000-3FFFFF (base 16) Larva.io OÜ
+ Sidur 3
+ Tallinn 11313
+ EE
+
+A4-53-EE (hex) Foshan Yisihang Electrical Technology Co., Ltd.
+500000-5FFFFF (base 16) Foshan Yisihang Electrical Technology Co., Ltd.
+ F4 Block A Lege Industrial Park, North Yucheng Road, Lunjiao Town, Shunde District
+ Foshan Guangdong 528308
+ CN
+
+A0-02-4A (hex) IoTecha Corp
+E00000-EFFFFF (base 16) IoTecha Corp
+ 2555 Route 130, Suite 2
+ Cranbury NJ 08512
+ US
+
+78-D4-F1 (hex) TNB
+C00000-CFFFFF (base 16) TNB
+ Ryazanskiy Prospekt, 24, k.2
+ Moscow 109428
+ RU
+
+78-D4-F1 (hex) Burisch Elektronik Bauteile GmbH
+000000-0FFFFF (base 16) Burisch Elektronik Bauteile GmbH
+ Leopoldauerstrasse 29
+ Vienna 1210
+ AT
+
+78-D4-F1 (hex) Guangzhou Kingray information technology Co.,Ltd.
+600000-6FFFFF (base 16) Guangzhou Kingray information technology Co.,Ltd.
+ No.8, Jinghu Road, Huadu Reg
+ Guangzhou 510800
+ CN
+
+78-D4-F1 (hex) Ekoenergetyka - Polska S.A.
+300000-3FFFFF (base 16) Ekoenergetyka - Polska S.A.
+ ul. Nowy Kisielin - Wysockiego 8
+ Zielona Gora 66-002
+ PL
+
+44-6F-D8 (hex) Shenzhen Furuilian Electronic Co.,Ltd.
+100000-1FFFFF (base 16) Shenzhen Furuilian Electronic Co.,Ltd.
+ 3/F, No.5 Building Workshop, No.123, Shuitian Industrial Zone,Baoshi East Road, Shuitian Community, Shiyan Street, Bao'an District,
+ Shenzhen 518000
+ CN
+
+44-6F-D8 (hex) lb Lautsprecher gmbH
+400000-4FFFFF (base 16) lb Lautsprecher gmbH
+ Steinerstrasse 15 K
+ Munich Bavaria 81369
+ DE
+
+44-6F-D8 (hex) Beijing gpthink technology co.,LTD.
+B00000-BFFFFF (base 16) Beijing gpthink technology co.,LTD.
+ Beijing fengtai guogongzhuang
+ Beijing 100070
+ CN
+
+44-6F-D8 (hex) Global Telecom Engineering, Inc
+800000-8FFFFF (base 16) Global Telecom Engineering, Inc
+ 17901 Von Karman Ave, Suite 600
+ Irvine CA 92614
+ US
+
20-85-93 (hex) Great Lite International
700000-7FFFFF (base 16) Great Lite International
11F., No.207-2, Sec. 3, Beixin Rd., Xindian Dist.,
@@ -20086,3 +20290,57 @@ B00000-BFFFFF (base 16) Suzhou Guowang Electronics Technology Co., Ltd.
No. 99, Changli Road, 703, Wuzhong science and technology entrepreneurship Park
Suzhou 215168
CN
+
+A4-53-EE (hex) Viper Design, LLC
+B00000-BFFFFF (base 16) Viper Design, LLC
+ 85 Cude Lane
+ Madison TN 37115
+ US
+
+A0-02-4A (hex) Donguan Amsamotion Automation Technology Co., Ltd
+500000-5FFFFF (base 16) Donguan Amsamotion Automation Technology Co., Ltd
+ Block A, Zosun Intelligence Creation Zone, No.9 Yizhan Road, Yuanwubian Streeet Nancheng District,
+ Dongguan Gunagdong 523000
+ CN
+
+A0-02-4A (hex) Guangdong Jinpeng Technology Co. LTD
+A00000-AFFFFF (base 16) Guangdong Jinpeng Technology Co. LTD
+ Room 504, 5 / F, Self-built A3 Building, No. 50 Science Avenue, Huangpu District
+ Guangzhou 510700
+ CN
+
+A0-02-4A (hex) Beijing Lyratone Technology Co., Ltd
+800000-8FFFFF (base 16) Beijing Lyratone Technology Co., Ltd
+ 1st floor, Caigang building, No.40 Beiyuan Road
+ Beijing 100020
+ CN
+
+A0-02-4A (hex) Encroute AB
+C00000-CFFFFF (base 16) Encroute AB
+ Box 2062
+ Sundbyberg 17402
+ SE
+
+A0-02-4A (hex) Vitec Imaging Solutions Spa
+100000-1FFFFF (base 16) Vitec Imaging Solutions Spa
+ Via Valsugana 100
+ Cassola Vicenza 36022
+ IT
+
+78-D4-F1 (hex) Cartender
+100000-1FFFFF (base 16) Cartender
+ Via della Meccanica 2a
+ Padova PD 35127
+ IT
+
+78-D4-F1 (hex) Jiangsu byzoro intelligent technology Co.,Ltd
+B00000-BFFFFF (base 16) Jiangsu byzoro intelligent technology Co.,Ltd
+ Room 301, Building D, Yunmi City, No.19 Ningshuang Road, Yuhuatai District
+ Nanjing Jiangsu 210012
+ CN
+
+44-6F-D8 (hex) ITC
+700000-7FFFFF (base 16) ITC
+ 3030 Corporate Grove Drive
+ Hudsonville MI 49426
+ US
diff --git a/hwdb.d/ma-small.txt b/hwdb.d/ma-small.txt
index 6cceaca015..18422c1ab1 100644
--- a/hwdb.d/ma-small.txt
+++ b/hwdb.d/ma-small.txt
@@ -1733,12 +1733,6 @@ D1C000-D1CFFF (base 16) Specialised Imaging Limited
Pitstone Bucks LU7 9GX
GB
-70-B3-D5 (hex) Viko Elektrik-Elektronik A.Ş.
-EC8000-EC8FFF (base 16) Viko Elektrik-Elektronik A.Ş.
- Abdurrahmangazi Mah. Ebubekir Cad. No:44 Sancaktepe
- Istanbul 34887
- TR
-
70-B3-D5 (hex) ATX Networks Corp
9D9000-9D9FFF (base 16) ATX Networks Corp
1-501 Clements Road West
@@ -4175,6 +4169,12 @@ EF1000-EF1FFF (base 16) Nanotok LLC
Hong Kong Hong Kong 00000
HK
+70-B3-D5 (hex) Technology Link Corporation
+B1B000-B1BFFF (base 16) Technology Link Corporation
+ Shin-Yokohama Kohoku-ku
+ yokohama kanagawa 222-0033
+ JP
+
70-B3-D5 (hex) VANTAGE INTEGRATED SECURITY SOLUTIONS PVT LTD
6BE000-6BEFFF (base 16) VANTAGE INTEGRATED SECURITY SOLUTIONS PVT LTD
B3, Bredon House, 321, Tettenhall Road, Tettenhall
@@ -4199,11 +4199,11 @@ F47000-F47FFF (base 16) TXMission Ltd.
Watford Hertfordshire WD25 8HU
GB
-70-B3-D5 (hex) Technology Link Corporation
-B1B000-B1BFFF (base 16) Technology Link Corporation
- Shin-Yokohama Kohoku-ku
- yokohama kanagawa 222-0033
- JP
+70-B3-D5 (hex) sensorway
+C52000-C52FFF (base 16) sensorway
+ A-339 samsong techno valley, 140 tongilro, deockyanggu
+ goyangsi gyeonggido 10594
+ KR
70-B3-D5 (hex) Tucsen Photonics Co., Ltd.
8A7000-8A7FFF (base 16) Tucsen Photonics Co., Ltd.
@@ -4211,11 +4211,11 @@ B1B000-B1BFFF (base 16) Technology Link Corporation
fuzhou 350000
CN
-70-B3-D5 (hex) sensorway
-C52000-C52FFF (base 16) sensorway
- A-339 samsong techno valley, 140 tongilro, deockyanggu
- goyangsi gyeonggido 10594
- KR
+70-B3-D5 (hex) Beijing Yourong Runda Rechnology Development Co.Ltd.
+980000-980FFF (base 16) Beijing Yourong Runda Rechnology Development Co.Ltd.
+ Changping District Science and Technology Park Advanced Road 37
+ Beijing 6219650
+ CN
70-B3-D5 (hex) KDT Corp.
E72000-E72FFF (base 16) KDT Corp.
@@ -4223,11 +4223,11 @@ E72000-E72FFF (base 16) KDT Corp.
shaoxing zhejiang 312030
CN
-70-B3-D5 (hex) Beijing Yourong Runda Rechnology Development Co.Ltd.
-980000-980FFF (base 16) Beijing Yourong Runda Rechnology Development Co.Ltd.
- Changping District Science and Technology Park Advanced Road 37
- Beijing 6219650
- CN
+70-B3-D5 (hex) AUTOMATICA Y REGULACION S.A.
+EBF000-EBFFFF (base 16) AUTOMATICA Y REGULACION S.A.
+ Condell 1735, Nunoa
+ Santiago RM 7770331
+ CL
70-B3-D5 (hex) R.C. Systems Inc
52F000-52FFFF (base 16) R.C. Systems Inc
@@ -4241,18 +4241,18 @@ E72000-E72FFF (base 16) KDT Corp.
Brendola Vicenza 36040
IT
-70-B3-D5 (hex) AUTOMATICA Y REGULACION S.A.
-EBF000-EBFFFF (base 16) AUTOMATICA Y REGULACION S.A.
- Condell 1735, Nunoa
- Santiago RM 7770331
- CL
-
70-B3-D5 (hex) Digital Solutions JSC
D9F000-D9FFFF (base 16) Digital Solutions JSC
room 4, office 1, 3rd floor, building 7, house 9a, 2nd Sinichkina Str.
Moscow 111020
RU
+70-B3-D5 (hex) DOGA
+62A000-62AFFF (base 16) DOGA
+ 11 rue Lavoisier
+ MAUREPAS 78310
+ FR
+
70-B3-D5 (hex) Oculii
B96000-B96FFF (base 16) Oculii
829 Space Dr
@@ -4271,29 +4271,17 @@ B96000-B96FFF (base 16) Oculii
Woodside NY 11377
US
-70-B3-D5 (hex) DOGA
-62A000-62AFFF (base 16) DOGA
- 11 rue Lavoisier
- MAUREPAS 78310
- FR
-
-70-B3-D5 (hex) NEUROPHET, Inc.
-E31000-E31FFF (base 16) NEUROPHET, Inc.
- 3rd Floor, 175, Yeoksam-ro, Gangnam-gu, seoul
- Seoul Province 06247
- KR
-
70-B3-D5 (hex) Remote Diagnostic Technologies Ltd
C99000-C99FFF (base 16) Remote Diagnostic Technologies Ltd
Pavilion C2 Ashwood Park, Ashwood Way
Basingstoke Hampshire RG23 8BG
GB
-70-B3-D5 (hex) Gogo Business Aviation
-3E0000-3E0FFF (base 16) Gogo Business Aviation
- 105 Edgeview Dr., Suite 300
- Broomfield CO 80021
- US
+70-B3-D5 (hex) NEUROPHET, Inc.
+E31000-E31FFF (base 16) NEUROPHET, Inc.
+ 3rd Floor, 175, Yeoksam-ro, Gangnam-gu, seoul
+ Seoul Province 06247
+ KR
70-B3-D5 (hex) Chromateq
944000-944FFF (base 16) Chromateq
@@ -4313,12 +4301,30 @@ F3D000-F3DFFF (base 16) KAYA Instruments
Nesher 3688520
IL
+70-B3-D5 (hex) Gogo Business Aviation
+3E0000-3E0FFF (base 16) Gogo Business Aviation
+ 105 Edgeview Dr., Suite 300
+ Broomfield CO 80021
+ US
+
70-B3-D5 (hex) Asiga Pty Ltd
53E000-53EFFF (base 16) Asiga Pty Ltd
Unit 2, 19-21 Bourke Road
Alexandria New South Wales 2015
AU
+70-B3-D5 (hex) ENABLER LTD.
+15A000-15AFFF (base 16) ENABLER LTD.
+ 29F Shiroyama Trust Tower 4-3-1 Toranomon
+ Minato-ku Tokyo 105-6029
+ JP
+
+70-B3-D5 (hex) LINEAGE POWER PVT LTD.,
+62E000-62EFFF (base 16) LINEAGE POWER PVT LTD.,
+ 30-A1, KIADB, 1ST PHASE INDUSTRIAL ESTATE,KUMBALGODU, BANGALORE-MYSORE ROAD
+ BANGALORE KARNATAKA 560074
+ IN
+
70-B3-D5 (hex) Salupo Sas
898000-898FFF (base 16) Salupo Sas
Via Laganeto n. 129
@@ -4331,53 +4337,35 @@ F3D000-F3DFFF (base 16) KAYA Instruments
Amagasaki Hyogo 660-0082
JP
-70-B3-D5 (hex) LINEAGE POWER PVT LTD.,
-62E000-62EFFF (base 16) LINEAGE POWER PVT LTD.,
- 30-A1, KIADB, 1ST PHASE INDUSTRIAL ESTATE,KUMBALGODU, BANGALORE-MYSORE ROAD
- BANGALORE KARNATAKA 560074
- IN
-
-70-B3-D5 (hex) ENABLER LTD.
-15A000-15AFFF (base 16) ENABLER LTD.
- 29F Shiroyama Trust Tower 4-3-1 Toranomon
- Minato-ku Tokyo 105-6029
- JP
-
70-B3-D5 (hex) Grupo Epelsa S.L.
40D000-40DFFF (base 16) Grupo Epelsa S.L.
C/ Punto Net,3
Alcala de Henares Madrid 28805
ES
-70-B3-D5 (hex) WEPTECH elektronik GmbH
-9CD000-9CDFFF (base 16) WEPTECH elektronik GmbH
- Ostring 10
- Landau 76829
- DE
-
70-B3-D5 (hex) AnaPico AG
0BB000-0BBFFF (base 16) AnaPico AG
Europa-Strasse 9
Glattbrugg Schweiz 8152
CH
-70-B3-D5 (hex) Egag, LLC
-9A8000-9A8FFF (base 16) Egag, LLC
- 303 King James Ct
- Upper Marlboro MD 20774
- US
-
70-B3-D5 (hex) Season Electronics Ltd
F46000-F46FFF (base 16) Season Electronics Ltd
600 Nest Business Park
Havant Hampshire PO9 5TL
GB
-70-B3-D5 (hex) Algodue Elettronica Srl
-191000-191FFF (base 16) Algodue Elettronica Srl
- Via P. Gobetti, 16F
- Maggiora NO 28014
- IT
+70-B3-D5 (hex) WEPTECH elektronik GmbH
+9CD000-9CDFFF (base 16) WEPTECH elektronik GmbH
+ Ostring 10
+ Landau 76829
+ DE
+
+70-B3-D5 (hex) Egag, LLC
+9A8000-9A8FFF (base 16) Egag, LLC
+ 303 King James Ct
+ Upper Marlboro MD 20774
+ US
70-B3-D5 (hex) Hermann Sewerin GmbH
484000-484FFF (base 16) Hermann Sewerin GmbH
@@ -4391,30 +4379,18 @@ F46000-F46FFF (base 16) Season Electronics Ltd
GwangMyung-si Gyeonggi-do, Korea 14322
KR
+70-B3-D5 (hex) Algodue Elettronica Srl
+191000-191FFF (base 16) Algodue Elettronica Srl
+ Via P. Gobetti, 16F
+ Maggiora NO 28014
+ IT
+
70-B3-D5 (hex) Beijing Vizum Technology Co.,Ltd.
F33000-F33FFF (base 16) Beijing Vizum Technology Co.,Ltd.
Room603, Floor6, Block2, No.1 Zhongguancun, No.81 Beiqing Road
Beijing Beijing 100094
CN
-70-B3-D5 (hex) Monnit Corporation
-393000-393FFF (base 16) Monnit Corporation
- 3400 S West Temple
- Salt Lake City UT 84115
- US
-
-70-B3-D5 (hex) eSight
-FD9000-FD9FFF (base 16) eSight
- 515 Legget Drive, Suite 200
- Ottawa ON K2K3G4
- CA
-
-70-B3-D5 (hex) Nilar AB
-D99000-D99FFF (base 16) Nilar AB
- Bönavägen 55
- Gävle Gavleborg 80647
- SE
-
70-B3-D5 (hex) Volution Group UK
687000-687FFF (base 16) Volution Group UK
Vent-Axia Ltd, Fleming Way
@@ -4427,12 +4403,30 @@ D99000-D99FFF (base 16) Nilar AB
Sagamihara Kanagawa 252-0203
JP
+70-B3-D5 (hex) Monnit Corporation
+393000-393FFF (base 16) Monnit Corporation
+ 3400 S West Temple
+ Salt Lake City UT 84115
+ US
+
70-B3-D5 (hex) Specialized Communications Corp.
867000-867FFF (base 16) Specialized Communications Corp.
20940 Twin Springs Drive
Smithsburg 21783
US
+70-B3-D5 (hex) eSight
+FD9000-FD9FFF (base 16) eSight
+ 515 Legget Drive, Suite 200
+ Ottawa ON K2K3G4
+ CA
+
+70-B3-D5 (hex) Nilar AB
+D99000-D99FFF (base 16) Nilar AB
+ Bönavägen 55
+ Gävle Gavleborg 80647
+ SE
+
70-B3-D5 (hex) Jabil, Inc.
736000-736FFF (base 16) Jabil, Inc.
888 Executive Center Dr. W.
@@ -4487,12 +4481,6 @@ D06000-D06FFF (base 16) YUYAMA MFG Co.,Ltd
Guangzhou Guangdong 510665
CN
-70-B3-D5 (hex) 7thSense Design Limited
-E46000-E46FFF (base 16) 7thSense Design Limited
- 2 The Courtyard, Shoreham Road
- Upper Beeding West Sussex BN44 3TN
- GB
-
70-B3-D5 (hex) Cominfo, Inc.
6F5000-6F5FFF (base 16) Cominfo, Inc.
Nabrezi 695
@@ -4505,12 +4493,24 @@ E46000-E46FFF (base 16) 7thSense Design Limited
Shenyang Liaoning 110000
CN
+70-B3-D5 (hex) 7thSense Design Limited
+E46000-E46FFF (base 16) 7thSense Design Limited
+ 2 The Courtyard, Shoreham Road
+ Upper Beeding West Sussex BN44 3TN
+ GB
+
70-B3-D5 (hex) Weltek Technologies Co. Ltd.
C48000-C48FFF (base 16) Weltek Technologies Co. Ltd.
Flat A-B, 12/F, Block 1, Wah Fung Ind. Centre, 33-39 Kwai Fung Crescent, Kwai Chung, N.T.
HK 852
HK
+70-B3-D5 (hex) TimeMachines Inc.
+756000-756FFF (base 16) TimeMachines Inc.
+ 300 S 68th Street Place, Suite 100
+ Lincoln NE 68510
+ US
+
70-B3-D5 (hex) BirdDog Australia
3B9000-3B9FFF (base 16) BirdDog Australia
Unit 1, 8 Theobald St
@@ -4523,11 +4523,11 @@ C0D000-C0DFFF (base 16) Clarity Medical Pvt Ltd
MOHALI Punjab 140306
IN
-70-B3-D5 (hex) TimeMachines Inc.
-756000-756FFF (base 16) TimeMachines Inc.
- 300 S 68th Street Place, Suite 100
- Lincoln NE 68510
- US
+70-B3-D5 (hex) KRONOTECH SRL
+626000-626FFF (base 16) KRONOTECH SRL
+ VIALE UNGHERIA 125
+ UDINE ITALY/UDINE 33100
+ IT
70-B3-D5 (hex) Algra tec AG
80C000-80CFFF (base 16) Algra tec AG
@@ -4535,12 +4535,6 @@ C0D000-C0DFFF (base 16) Clarity Medical Pvt Ltd
Merenschwand Aargau 5634
CH
-70-B3-D5 (hex) KRONOTECH SRL
-626000-626FFF (base 16) KRONOTECH SRL
- VIALE UNGHERIA 125
- UDINE ITALY/UDINE 33100
- IT
-
70-B3-D5 (hex) Enlaps
2AF000-2AFFFF (base 16) Enlaps
29 chemin du vieux chene, Tarmac
@@ -4559,11 +4553,11 @@ C0D000-C0DFFF (base 16) Clarity Medical Pvt Ltd
Neusaess Bayern 85356
DE
-70-B3-D5 (hex) NaraControls Inc
-3FD000-3FDFFF (base 16) NaraControls Inc
- youngdong daero
- Seoul 06072
- KR
+70-B3-D5 (hex) Shangnuo company
+82B000-82BFFF (base 16) Shangnuo company
+ Nong'an district
+ Changchun Jilin 130000
+ CN
70-B3-D5 (hex) Shanghai Westwell Information and Technology Company Ltd
856000-856FFF (base 16) Shanghai Westwell Information and Technology Company Ltd
@@ -4571,11 +4565,11 @@ C0D000-C0DFFF (base 16) Clarity Medical Pvt Ltd
Shanghai Shanghai 200050
CN
-70-B3-D5 (hex) Shangnuo company
-82B000-82BFFF (base 16) Shangnuo company
- Nong'an district
- Changchun Jilin 130000
- CN
+70-B3-D5 (hex) NaraControls Inc
+3FD000-3FDFFF (base 16) NaraControls Inc
+ youngdong daero
+ Seoul 06072
+ KR
70-B3-D5 (hex) Vision Sensing Co., Ltd.
93F000-93FFFF (base 16) Vision Sensing Co., Ltd.
@@ -4613,6 +4607,12 @@ F41000-F41FFF (base 16) DUEVI SRL
TORINO TORINO 10142
IT
+70-B3-D5 (hex) Daifuku CO., Ltd.
+3A2000-3A2FFF (base 16) Daifuku CO., Ltd.
+ 1225 Nakazaiji, Hino-cho, Gamo-gun, Shiga
+ Gamo-gun Shiga-ken 529-1692
+ JP
+
70-B3-D5 (hex) CLARESYS LIMITED
485000-485FFF (base 16) CLARESYS LIMITED
154E Brook Drive, Milton Park
@@ -4625,18 +4625,18 @@ F41000-F41FFF (base 16) DUEVI SRL
Bengaluru Karnataka 562149
IN
-70-B3-D5 (hex) Daifuku CO., Ltd.
-3A2000-3A2FFF (base 16) Daifuku CO., Ltd.
- 1225 Nakazaiji, Hino-cho, Gamo-gun, Shiga
- Gamo-gun Shiga-ken 529-1692
- JP
-
70-B3-D5 (hex) Panamera
7B1000-7B1FFF (base 16) Panamera
Rua. Dr. Brasilio Vicente de Castro, 111
Critiba Parana 81200-526
BR
+70-B3-D5 (hex) QUNU LABS PRIVATE LIMITED
+9A6000-9A6FFF (base 16) QUNU LABS PRIVATE LIMITED
+ Centenary Building, 2nd Floor,, East Wing, No. 28 M.G. Road
+ BANGALORE KARNATAKA 560025
+ IN
+
70-B3-D5 (hex) ALTIT.CO.,Ltd.
552000-552FFF (base 16) ALTIT.CO.,Ltd.
Gasan Digital 1 ro 88, 1905
@@ -4649,12 +4649,6 @@ F41000-F41FFF (base 16) DUEVI SRL
Bengaluru Karnataka 560066
IN
-70-B3-D5 (hex) QUNU LABS PRIVATE LIMITED
-9A6000-9A6FFF (base 16) QUNU LABS PRIVATE LIMITED
- Centenary Building, 2nd Floor,, East Wing, No. 28 M.G. Road
- BANGALORE KARNATAKA 560025
- IN
-
70-B3-D5 (hex) Galaxy Next Generation, Inc.
E1D000-E1DFFF (base 16) Galaxy Next Generation, Inc.
285 Big A Rd
@@ -4685,30 +4679,24 @@ DCD000-DCDFFF (base 16) C TECH BILISIM TEKNOLOJILERI SAN. VE TIC. A.S.
Istanbul 34912
TR
-70-B3-D5 (hex) Cubic ITS, Inc. dba GRIDSMART Technologies
-7EC000-7ECFFF (base 16) Cubic ITS, Inc. dba GRIDSMART Technologies
- 10545 Hardin Valley Rd
- Knoxville TN 37932
- US
-
70-B3-D5 (hex) TableConnect GmbH
7BD000-7BDFFF (base 16) TableConnect GmbH
Schlossgasse 13/2/3
Vienna Vienna 1050
AT
+70-B3-D5 (hex) Cubic ITS, Inc. dba GRIDSMART Technologies
+7EC000-7ECFFF (base 16) Cubic ITS, Inc. dba GRIDSMART Technologies
+ 10545 Hardin Valley Rd
+ Knoxville TN 37932
+ US
+
70-B3-D5 (hex) Eldes Ltd
8B6000-8B6FFF (base 16) Eldes Ltd
Ukmerges 283b
Vilnius LT-06313
LT
-70-B3-D5 (hex) Circle Consult ApS
-23D000-23DFFF (base 16) Circle Consult ApS
- Rundforbivej 271A
- Naerum 2850
- DK
-
70-B3-D5 (hex) Foerster-Technik GmbH
453000-453FFF (base 16) Foerster-Technik GmbH
Gerwigstraße 25
@@ -4721,11 +4709,11 @@ D85000-D85FFF (base 16) BTG Instruments AB
Saffle Varmland 66132
SE
-70-B3-D5 (hex) Velvac Incorporated
-44F000-44FFFF (base 16) Velvac Incorporated
- 2405 S. Calhoun Road
- New Berlin WI 53151-2709
- US
+70-B3-D5 (hex) Circle Consult ApS
+23D000-23DFFF (base 16) Circle Consult ApS
+ Rundforbivej 271A
+ Naerum 2850
+ DK
70-B3-D5 (hex) CreevX
BF4000-BF4FFF (base 16) CreevX
@@ -4733,18 +4721,24 @@ BF4000-BF4FFF (base 16) CreevX
Randalstown Antrim BT41 3LH
GB
-70-B3-D5 (hex) Connido Limited
-71D000-71DFFF (base 16) Connido Limited
- 35 Kingsland Road
- London E2 8AA
- GB
-
70-B3-D5 (hex) Potter Electric Signal Co. LLC
261000-261FFF (base 16) Potter Electric Signal Co. LLC
1609 Park 370 Place
Hazelwood MO 63042
US
+70-B3-D5 (hex) Velvac Incorporated
+44F000-44FFFF (base 16) Velvac Incorporated
+ 2405 S. Calhoun Road
+ New Berlin WI 53151-2709
+ US
+
+70-B3-D5 (hex) Connido Limited
+71D000-71DFFF (base 16) Connido Limited
+ 35 Kingsland Road
+ London E2 8AA
+ GB
+
70-B3-D5 (hex) EDF Lab
BDC000-BDCFFF (base 16) EDF Lab
7 Bd Gaspard Monge
@@ -4757,6 +4751,126 @@ BDC000-BDCFFF (base 16) EDF Lab
London England N1 6DR
GB
+70-B3-D5 (hex) VALEO CDA
+51F000-51FFFF (base 16) VALEO CDA
+ Hummendorfer Str 74
+ Kronach 96317
+ DE
+
+70-B3-D5 (hex) PANASONIC LIFE SOLUTIONS ELEKTRİK SANAYİ VE TİCARE
+EC8000-EC8FFF (base 16) PANASONIC LIFE SOLUTIONS ELEKTRİK SANAYİ VE TİCARE
+ Abdurrahmangazi Mah. Ebubekir Cad. No:44 Sancaktepe
+ Istanbul 34887
+ TR
+
+70-B3-D5 (hex) Telco Antennas Pty Ltd
+256000-256FFF (base 16) Telco Antennas Pty Ltd
+ 5/1 Roebuck St
+ Hemmant QLD 4154
+ AU
+
+70-B3-D5 (hex) enders GmbH
+D3E000-D3EFFF (base 16) enders GmbH
+ Sonnenstraße 39
+ Ergolding 84030
+ DE
+
+70-B3-D5 (hex) DaiShin Information & Communications Co., Ltd
+560000-560FFF (base 16) DaiShin Information & Communications Co., Ltd
+ DaiShin I&C Bldg., 205-28, Gasan digital 1-ro Geumcheon-gu
+ Seoul Seoul 08501
+ KR
+
+70-B3-D5 (hex) ULSee Inc
+1B7000-1B7FFF (base 16) ULSee Inc
+ 9F, No.97, Jingye 1st Road Zhongshan Dist.,Taipei City 104451 Taiwan
+ Taipei Taipei 104451
+ TW
+
+70-B3-D5 (hex) Network Customizing Technologies Inc
+B4B000-B4BFFF (base 16) Network Customizing Technologies Inc
+ 29, Yuseong-daero 1184beon-gil, Yuseong-gu
+ Daejeon 34109
+ KR
+
+70-B3-D5 (hex) Nexus Electric S.A.
+CD8000-CD8FFF (base 16) Nexus Electric S.A.
+ Serú 63
+ Mendoza Mendoza M5500FNA
+ AR
+
+70-B3-D5 (hex) SPE Smartico, LLC
+399000-399FFF (base 16) SPE Smartico, LLC
+ 82G, Oleksandra Polya Avenue
+ Dnipro Dnipropetrovsk 49000
+ UA
+
+70-B3-D5 (hex) Austco Marketing & Service (USA) ltd.
+316000-316FFF (base 16) Austco Marketing & Service (USA) ltd.
+ 9155 Sterling St Unit 100
+ Irving TX 75063
+ US
+
+70-B3-D5 (hex) ARKS Enterprises, Inc.
+43A000-43AFFF (base 16) ARKS Enterprises, Inc.
+ 4304 Alfriends Trail
+ Virginia Beach VA 23455-6102
+ US
+
+70-B3-D5 (hex) CT Company
+39F000-39FFFF (base 16) CT Company
+ Godovikova , 9, Moscow
+ Moscow RUSSIA 129085
+ RU
+
+70-B3-D5 (hex) VONSCH
+491000-491FFF (base 16) VONSCH
+ Budovatelska 13
+ Brezno 97703
+ SK
+
+70-B3-D5 (hex) Thesycon Software Solutions GmbH & Co. KG
+919000-919FFF (base 16) Thesycon Software Solutions GmbH & Co. KG
+ Werner-von-Siemens-Str. 2
+ Ilmenau 98693
+ DE
+
+70-B3-D5 (hex) ZMBIZI APP LLC
+F49000-F49FFF (base 16) ZMBIZI APP LLC
+ 10000 Santa Monica Blvd, Suite 503
+ LOS ANGELES CA 90067
+ US
+
+70-B3-D5 (hex) N A Communications LLC
+B92000-B92FFF (base 16) N A Communications LLC
+ 3820 Ohio Ave Ste 12
+ St Charles IL 60174
+ US
+
+70-B3-D5 (hex) Bita-International Co., Ltd.
+1C6000-1C6FFF (base 16) Bita-International Co., Ltd.
+ 2F., NO. 36, PARK ST., NANGANG DIST.,
+ TAIPEI 11560
+ TW
+
+70-B3-D5 (hex) nexgenwave
+5BD000-5BDFFF (base 16) nexgenwave
+ 1209 sicox tower, 484 Dunchon-daero, jungwon-gu
+ Sungnam-si gyeonggi-do 13229
+ KR
+
+70-B3-D5 (hex) EBZ SysTec GmbH
+1FA000-1FAFFF (base 16) EBZ SysTec GmbH
+ Bleicherstraße 7
+ Ravensburg DE 88212
+ DE
+
+70-B3-D5 (hex) TRIOPTICS
+A11000-A11FFF (base 16) TRIOPTICS
+ Strandbaddamm 6
+ Wedel Schleswig-Holstein 22880
+ DE
+
70-B3-D5 (hex) EVCO SPA
A80000-A80FFF (base 16) EVCO SPA
VIA FELTRE N. 81
@@ -8432,12 +8546,6 @@ C78000-C78FFF (base 16) NETA Elektronik AS
Istanbul - 34775
TR
-70-B3-D5 (hex) Farmobile
-5A8000-5A8FFF (base 16) Farmobile
- 18132 Melrose Dr.
- Bucyrus KS 66013
-
-
70-B3-D5 (hex) Nautel Limted
EB0000-EB0FFF (base 16) Nautel Limted
10089 Peggy's Cove Road
@@ -9059,24 +9167,30 @@ A7F000-A7FFFF (base 16) AUDIO VISUAL DIGITAL SYSTEMS
Bergisch Gladbach North Rhine-Westphalia 51465
DE
-70-B3-D5 (hex) DONG IL VISION Co., Ltd.
-038000-038FFF (base 16) DONG IL VISION Co., Ltd.
- #9 Ftrek tower, 11-25, Simindaero 327 beongil,Dongan-gu
- Anyangi-Si Gyeonggi-Do 14055
- KR
-
70-B3-D5 (hex) Cetitec GmbH
B36000-B36FFF (base 16) Cetitec GmbH
Mannheimer Strasse 17
Pforzheim 75179
DE
+70-B3-D5 (hex) DONG IL VISION Co., Ltd.
+038000-038FFF (base 16) DONG IL VISION Co., Ltd.
+ #9 Ftrek tower, 11-25, Simindaero 327 beongil,Dongan-gu
+ Anyangi-Si Gyeonggi-Do 14055
+ KR
+
70-B3-D5 (hex) Kamacho Scale Co., Ltd.
385000-385FFF (base 16) Kamacho Scale Co., Ltd.
2246 Mure
Takamatsu-shi Kagawa-ken 761-0196
JP
+70-B3-D5 (hex) Visual Robotics
+0F4000-0F4FFF (base 16) Visual Robotics
+ 38 Irving Rd
+ Eugene OR 97404
+ US
+
70-B3-D5 (hex) Vessel Technology Ltd
44D000-44DFFF (base 16) Vessel Technology Ltd
Banchory Business Centre, Burn O'Bennie Road
@@ -9089,11 +9203,11 @@ FA8000-FA8FFF (base 16) Munters
Pethch Tikva Israel 4959376
IL
-70-B3-D5 (hex) Visual Robotics
-0F4000-0F4FFF (base 16) Visual Robotics
- 38 Irving Rd
- Eugene OR 97404
- US
+70-B3-D5 (hex) TEX COMPUTER SRL
+6C2000-6C2FFF (base 16) TEX COMPUTER SRL
+ VIA MERCADANTE 35
+ CATTOLICA RIMINI 47841
+ IT
70-B3-D5 (hex) TangRen C&S CO., Ltd
3FC000-3FCFFF (base 16) TangRen C&S CO., Ltd
@@ -9101,29 +9215,29 @@ FA8000-FA8FFF (base 16) Munters
Shenzhen Guangdong 518052
CN
-70-B3-D5 (hex) TEX COMPUTER SRL
-6C2000-6C2FFF (base 16) TEX COMPUTER SRL
- VIA MERCADANTE 35
- CATTOLICA RIMINI 47841
- IT
-
70-B3-D5 (hex) LOTES TM OOO
EA5000-EA5FFF (base 16) LOTES TM OOO
Barklaya 22, str.1
Moscow 121309
RU
+70-B3-D5 (hex) Yi An Electronics Co., Ltd
+F28000-F28FFF (base 16) Yi An Electronics Co., Ltd
+ 5F.-2, No. 81, Sec. 1, Xintai 5th Rd., Xizhi Dist
+ New Taipei City 22101
+ TW
+
70-B3-D5 (hex) Ariston Thermo s.p.a.
3D6000-3D6FFF (base 16) Ariston Thermo s.p.a.
Via Aristide Merloni 45
Fabriano Ancona 60044
IT
-70-B3-D5 (hex) Yi An Electronics Co., Ltd
-F28000-F28FFF (base 16) Yi An Electronics Co., Ltd
- 5F.-2, No. 81, Sec. 1, Xintai 5th Rd., Xizhi Dist
- New Taipei City 22101
- TW
+70-B3-D5 (hex) MG s.r.l.
+130000-130FFF (base 16) MG s.r.l.
+ via Monte Bianco, 1
+ Solbiate Olona VA 21058
+ IT
70-B3-D5 (hex) DORLET SAU
639000-639FFF (base 16) DORLET SAU
@@ -9137,18 +9251,6 @@ F28000-F28FFF (base 16) Yi An Electronics Co., Ltd
Ryazan 390048
RU
-70-B3-D5 (hex) MG s.r.l.
-130000-130FFF (base 16) MG s.r.l.
- via Monte Bianco, 1
- Solbiate Olona VA 21058
- IT
-
-70-B3-D5 (hex) Postmark Incorporated
-CBB000-CBBFFF (base 16) Postmark Incorporated
- 3197 Duncan Lane
- San Luis Obispo CA 93401
- US
-
70-B3-D5 (hex) Glory Technology Service Inc.
801000-801FFF (base 16) Glory Technology Service Inc.
3F., No.43-1, Ln. 11, Sec. 6, Minquan E. Rd
@@ -9161,6 +9263,12 @@ CBB000-CBBFFF (base 16) Postmark Incorporated
Gifu-shi Gifu 500-8122
JP
+70-B3-D5 (hex) Postmark Incorporated
+CBB000-CBBFFF (base 16) Postmark Incorporated
+ 3197 Duncan Lane
+ San Luis Obispo CA 93401
+ US
+
70-B3-D5 (hex) Abbott Diagnostics Technologies AS
53F000-53FFFF (base 16) Abbott Diagnostics Technologies AS
P. O. Box 6863 Rodeløkka
@@ -9185,6 +9293,12 @@ CBB000-CBBFFF (base 16) Postmark Incorporated
VILLA BARTOLOMEA IT 37049
IT
+70-B3-D5 (hex) Global Power Products
+3B1000-3B1FFF (base 16) Global Power Products
+ 225 Arnold Road
+ Lawrenceville 30044
+ US
+
70-B3-D5 (hex) Sankyo Intec Co,ltd
E7F000-E7FFFF (base 16) Sankyo Intec Co,ltd
127 Tokimata
@@ -9197,18 +9311,6 @@ E7F000-E7FFFF (base 16) Sankyo Intec Co,ltd
waltham MA 02453
US
-70-B3-D5 (hex) Global Power Products
-3B1000-3B1FFF (base 16) Global Power Products
- 225 Arnold Road
- Lawrenceville 30044
- US
-
-70-B3-D5 (hex) Nidec asi spa
-D88000-D88FFF (base 16) Nidec asi spa
- s.s11 , ca sordis 4
- Montebello Vicentino vicenza 36054
- IT
-
70-B3-D5 (hex) EnergizeEV
EB6000-EB6FFF (base 16) EnergizeEV
#160, 1684 Decoto Road
@@ -9221,6 +9323,12 @@ F66000-F66FFF (base 16) Seznam.cz, a.s., CZ26168685
Praha Czech Republic 15000
CZ
+70-B3-D5 (hex) Nidec asi spa
+D88000-D88FFF (base 16) Nidec asi spa
+ s.s11 , ca sordis 4
+ Montebello Vicentino vicenza 36054
+ IT
+
70-B3-D5 (hex) Frog Cellsat Limited
C5E000-C5EFFF (base 16) Frog Cellsat Limited
D-213, Sector-63, Noida
@@ -9263,11 +9371,11 @@ C5E000-C5EFFF (base 16) Frog Cellsat Limited
Shanghai Shanghai 201114
CN
-70-B3-D5 (hex) Sphere of economical technologies Ltd
-1C1000-1C1FFF (base 16) Sphere of economical technologies Ltd
- 132, 7-ya Liniya Str.
- Omsk Omskaya oblast 644021
- RU
+70-B3-D5 (hex) NooliTIC
+E51000-E51FFF (base 16) NooliTIC
+ 165 avenue de bretagne
+ LILLE 59000
+ FR
70-B3-D5 (hex) Simplified MFG
66F000-66FFFF (base 16) Simplified MFG
@@ -9275,11 +9383,11 @@ C5E000-C5EFFF (base 16) Frog Cellsat Limited
Mesa AZ 85206
US
-70-B3-D5 (hex) NooliTIC
-E51000-E51FFF (base 16) NooliTIC
- 165 avenue de bretagne
- LILLE 59000
- FR
+70-B3-D5 (hex) Sphere of economical technologies Ltd
+1C1000-1C1FFF (base 16) Sphere of economical technologies Ltd
+ 132, 7-ya Liniya Str.
+ Omsk Omskaya oblast 644021
+ RU
70-B3-D5 (hex) Scenario Automation
43C000-43CFFF (base 16) Scenario Automation
@@ -9317,18 +9425,18 @@ D35000-D35FFF (base 16) King-On Technology Ltd.
New Taipei City Taiwan 23143
TW
-70-B3-D5 (hex) Nuance Hearing Ltd.
-AE4000-AE4FFF (base 16) Nuance Hearing Ltd.
- Raoul Wallenberg 24, Building A1, Floor 3
- Tel Aviv 6971920
- IL
-
70-B3-D5 (hex) BRS Sistemas Eletrônicos
3CD000-3CDFFF (base 16) BRS Sistemas Eletrônicos
Rua Gomes de Freitas, 491 / 204
Porto Alegre RS 91380-000
BR
+70-B3-D5 (hex) Nuance Hearing Ltd.
+AE4000-AE4FFF (base 16) Nuance Hearing Ltd.
+ Raoul Wallenberg 24, Building A1, Floor 3
+ Tel Aviv 6971920
+ IL
+
70-B3-D5 (hex) HONG JIANG ELECTRONICS CO., LTD.
E64000-E64FFF (base 16) HONG JIANG ELECTRONICS CO., LTD.
9F, No. 649-3, Zhong Zheng Rd.,, Xin Zhuang Dist., New Taipei City,, TAIWAN(R.O.C.)
@@ -9341,18 +9449,18 @@ E64000-E64FFF (base 16) HONG JIANG ELECTRONICS CO., LTD.
TianHe GuangZhou 515800
CN
-70-B3-D5 (hex) OLEDCOMM
-7D3000-7D3FFF (base 16) OLEDCOMM
- 10-12 avenue de l'Europe
- Vélizy Villacoublay Ile de France 78140
- FR
-
70-B3-D5 (hex) Malin Space Science System
FE5000-FE5FFF (base 16) Malin Space Science System
5880 Pacific Center Blvd
San Diego CA 92121
US
+70-B3-D5 (hex) OLEDCOMM
+7D3000-7D3FFF (base 16) OLEDCOMM
+ 10-12 avenue de l'Europe
+ Vélizy Villacoublay Ile de France 78140
+ FR
+
70-B3-D5 (hex) Wexiodisk AB
905000-905FFF (base 16) Wexiodisk AB
Mardvagen 4
@@ -9395,6 +9503,12 @@ F02000-F02FFF (base 16) ABECO Industrie Computer GmbH
Straelen NRW 47638
DE
+70-B3-D5 (hex) Abbott Diagnostics Technologies AS
+DDE000-DDEFFF (base 16) Abbott Diagnostics Technologies AS
+ P. O. Box 6863 Rodeløkka
+ Oslo Oslo 0504
+ NO
+
70-B3-D5 (hex) PuS GmbH und Co. KG
09D000-09DFFF (base 16) PuS GmbH und Co. KG
Hainstr. 13
@@ -9413,12 +9527,6 @@ B22000-B22FFF (base 16) YUYAMA MFG Co.,Ltd
MEISHINGUCHI,TOYONAKA OSAKA 561-0841
JP
-70-B3-D5 (hex) Abbott Diagnostics Technologies AS
-DDE000-DDEFFF (base 16) Abbott Diagnostics Technologies AS
- P. O. Box 6863 Rodeløkka
- Oslo Oslo 0504
- NO
-
70-B3-D5 (hex) Laser Imagineering Vertriebs GmbH
3EE000-3EEFFF (base 16) Laser Imagineering Vertriebs GmbH
Rudolf-Diesel-Weg 5
@@ -9500,23 +9608,17 @@ A31000-A31FFF (base 16) Private
London E1 2JH
GB
-70-B3-D5 (hex) BIRTECH TECHNOLOGY
-E65000-E65FFF (base 16) BIRTECH TECHNOLOGY
- Ak is Business Center, Tuzla, Istanbul / Turkey
- Istanbul Tuzla 34944
- TR
-
70-B3-D5 (hex) SUN ELECTRONICS CO.,LTD.
D82000-D82FFF (base 16) SUN ELECTRONICS CO.,LTD.
667-2,Furugori,Misato-machi,Kodama-gun
Saitama-ken 367-0111
JP
-70-B3-D5 (hex) xTom GmbH
-8B5000-8B5FFF (base 16) xTom GmbH
- Kreuzstr.60
- Duesseldorf NRW 40210
- DE
+70-B3-D5 (hex) BIRTECH TECHNOLOGY
+E65000-E65FFF (base 16) BIRTECH TECHNOLOGY
+ Ak is Business Center, Tuzla, Istanbul / Turkey
+ Istanbul Tuzla 34944
+ TR
70-B3-D5 (hex) Transit Solutions, LLC.
E68000-E68FFF (base 16) Transit Solutions, LLC.
@@ -9530,6 +9632,12 @@ E68000-E68FFF (base 16) Transit Solutions, LLC.
Tel Aviv 6971920
IL
+70-B3-D5 (hex) xTom GmbH
+8B5000-8B5FFF (base 16) xTom GmbH
+ Kreuzstr.60
+ Duesseldorf NRW 40210
+ DE
+
70-B3-D5 (hex) E-Controls
6E2000-6E2FFF (base 16) E-Controls
PASSATGE GARROTXA, 6
@@ -9537,13 +9645,13 @@ E68000-E68FFF (base 16) Transit Solutions, LLC.
ES
70-B3-D5 (hex) Potter Electric Signal Co. LLC
-1BE000-1BEFFF (base 16) Potter Electric Signal Co. LLC
+B9A000-B9AFFF (base 16) Potter Electric Signal Co. LLC
1609 Park 370 Place
Hazelwood MO 63042
US
70-B3-D5 (hex) Potter Electric Signal Co. LLC
-B9A000-B9AFFF (base 16) Potter Electric Signal Co. LLC
+1BE000-1BEFFF (base 16) Potter Electric Signal Co. LLC
1609 Park 370 Place
Hazelwood MO 63042
US
@@ -9554,24 +9662,126 @@ FAC000-FACFFF (base 16) Integrated Protein Technologies, Inc.
Evanston IL 60204
US
+70-B3-D5 (hex) GETT Geraetetechnik GmbH
+290000-290FFF (base 16) GETT Geraetetechnik GmbH
+ Mittlerer Ring 1
+ Treuen 08233
+ DE
+
70-B3-D5 (hex) ABB
C47000-C47FFF (base 16) ABB
Fulachstrasse 150
Schaffhausen 8200
CH
-70-B3-D5 (hex) GETT Geraetetechnik GmbH
-290000-290FFF (base 16) GETT Geraetetechnik GmbH
- Mittlerer Ring 1
- Treuen 08233
- DE
+70-B3-D5 (hex) CREATIVE
+A65000-A65FFF (base 16) CREATIVE
+ 801 Chenil Bldg. 266 Hwagokro,
+ Gangseogu seoul 07673
+ KR
+
+70-B3-D5 (hex) Samwell International Inc
+B42000-B42FFF (base 16) Samwell International Inc
+ No. 317-1, Sec.2, An Kang Rd., Hsintien Dist
+ New Taipei City 231
+ TW
+
+70-B3-D5 (hex) BAE Systems
+AFC000-AFCFFF (base 16) BAE Systems
+ 1098 Clark Street
+ Endicott NY 13760
+ US
+
+70-B3-D5 (hex) DAYOUPLUS
+474000-474FFF (base 16) DAYOUPLUS
+ 3F 509, Dunchon-daero, Jungwon-gu, Seongnam-si, Gyeonggi-do, Republic of Korea
+ Seongnam-si Gyeonggi-do 13217
+ KR
+
+70-B3-D5 (hex) Guangzhou Xianhe Technology Engineering Co., Ltd
+C13000-C13FFF (base 16) Guangzhou Xianhe Technology Engineering Co., Ltd
+ No. 30-6, Jiantai Road, Dongyong Town, Nansha District
+ Guangzhou Guangdong 511453
+ CN
+
+70-B3-D5 (hex) Lightside Instruments AS
+EC2000-EC2FFF (base 16) Lightside Instruments AS
+ Thorvald Meyers gate 34A
+ Oslo 0555
+ NO
+
+70-B3-D5 (hex) Farmobile, LLC
+5A8000-5A8FFF (base 16) Farmobile, LLC
+ 4001 West 114th Street Suite 300
+ Leawood KS 66211
+ US
+
+70-B3-D5 (hex) i2-electronics
+59E000-59EFFF (base 16) i2-electronics
+ Kitazakae 4-13-15-701
+ Urayasu city Chiba 2790002
+ JP
+
+70-B3-D5 (hex) EXATEL
+065000-065FFF (base 16) EXATEL
+ Perkuna 46
+ Warsaw Mazowieckie 04-164
+ PL
+
+70-B3-D5 (hex) Shenzhen Shi Fang Communication Technology Co., Ltd
+E6B000-E6BFFF (base 16) Shenzhen Shi Fang Communication Technology Co., Ltd
+ 601-6 Mitehuapujing No.9 Jinxiu Mid Road Longtian Street Pingshan Distinct
+ Shenzhen Guangdong 518118
+ CN
+
+70-B3-D5 (hex) Kita Kirmizi Takim Bilgi Guvenligi Danismanlik ve Egitim A.S.
+998000-998FFF (base 16) Kita Kirmizi Takim Bilgi Guvenligi Danismanlik ve Egitim A.S.
+ Sogutozu mah. Sogutözu cad. A Blok No:2A/47 Cankaya/ANKARA Maltepe V.D. 559 051 3252
+ Ankara Cankaya 06510
+ TR
+
+70-B3-D5 (hex) Octopus IoT srl
+AD7000-AD7FFF (base 16) Octopus IoT srl
+ Via Acquasanta, 15
+ Salerno Salerno 84131
+ IT
70-B3-D5 (hex) ACRIOS Systems s.r.o.
CEE000-CEEFFF (base 16) ACRIOS Systems s.r.o.
- Tvar?žkova, 2738
- Rožnov pod Radhošt?m 75661
+ Tvaruzkova, 2738
+ Roznov pod Radhostem 756 61
CZ
+70-B3-D5 (hex) SIANA Systems
+82F000-82FFFF (base 16) SIANA Systems
+ 8979 Carley circle
+ San Diego CA 92126
+ US
+
+70-B3-D5 (hex) Günther Spelsberg GmbH + Co. KG
+311000-311FFF (base 16) Günther Spelsberg GmbH + Co. KG
+ Im Gewerbepark 1
+ Schalksmühle NRW 58579
+ DE
+
+70-B3-D5 (hex) Eneon sp. z o.o.
+E66000-E66FFF (base 16) Eneon sp. z o.o.
+ Aleje Jerozolimskie 200
+ Warsaw 02-486
+ PL
+
+70-B3-D5 (hex) ALFI
+B0D000-B0DFFF (base 16) ALFI
+ Via Castelletto 20
+ Borgo Ticino NO 28040
+ IT
+
+70-B3-D5 (hex) WIZAPPLY CO.,LTD
+8D2000-8D2FFF (base 16) WIZAPPLY CO.,LTD
+ 1-3-13-5107, Benten
+ Osaka-shi, Minato-ku Osaka-fu 552-0007
+ JP
+
70-B3-D5 (hex) System West dba ICS Electronics
E06000-E06FFF (base 16) System West dba ICS Electronics
7034 Commerce Circle Suite A
@@ -13328,12 +13538,6 @@ FD1000-FD1FFF (base 16) RedRat Ltd
Des Plaines IL 60090
US
-00-1B-C5 (hex) OctoGate it Security Systems GmbH
-030000-030FFF (base 16) OctoGate it Security Systems GmbH
- Klingender Strasse 5
- Paderborn NRW 33100
- DE
-
00-1B-C5 (hex) andersen lighting GmbH
025000-025FFF (base 16) andersen lighting GmbH
Technologiezentrum
@@ -13775,18 +13979,6 @@ F23000-F23FFF (base 16) Lyse AS
Bad Marienberg Rheinland-Pfalz 56470
DE
-70-B3-D5 (hex) Walton Hi-Tech Industries Ltd.
-E5C000-E5CFFF (base 16) Walton Hi-Tech Industries Ltd.
- HOLDING NO. I-65/2, WARD NO-07
- CHANDRA, KALIAKOIR, GAZIPUR. 1750
- BD
-
-70-B3-D5 (hex) Flextronics International Kft
-699000-699FFF (base 16) Flextronics International Kft
- 38. Zrinyi Str.
- Zalaegerszeg Zala 8900
- HU
-
70-B3-D5 (hex) JFA Electronics Industry and Commerce EIRELI
5F7000-5F7FFF (base 16) JFA Electronics Industry and Commerce EIRELI
Rua Flor das Pedras, 175
@@ -13799,6 +13991,12 @@ E5C000-E5CFFF (base 16) Walton Hi-Tech Industries Ltd.
Boonton Township NJ 07005
US
+70-B3-D5 (hex) Walton Hi-Tech Industries Ltd.
+E5C000-E5CFFF (base 16) Walton Hi-Tech Industries Ltd.
+ HOLDING NO. I-65/2, WARD NO-07
+ CHANDRA, KALIAKOIR, GAZIPUR. 1750
+ BD
+
70-B3-D5 (hex) aquila biolabs GmbH
7DB000-7DBFFF (base 16) aquila biolabs GmbH
Arnold-Sommerfeld-Ring 2
@@ -13811,6 +14009,12 @@ C82000-C82FFF (base 16) Sicon srl
Isola Vicentina Vicenza 36033
IT
+70-B3-D5 (hex) Flextronics International Kft
+699000-699FFF (base 16) Flextronics International Kft
+ 38. Zrinyi Str.
+ Zalaegerszeg Zala 8900
+ HU
+
70-B3-D5 (hex) LGE
DAE000-DAEFFF (base 16) LGE
10, Magokjungang 10-ro, Gangseo-gu
@@ -13865,12 +14069,6 @@ F64000-F64FFF (base 16) silicom
Borehamwood Hert WD6 1NA
GB
-70-B3-D5 (hex) Kospel S.A.
-249000-249FFF (base 16) Kospel S.A.
- Olchowa 1
- Koszalin 75-136
- PL
-
70-B3-D5 (hex) Microchip Technology Germany II GmbH&Co.KG
77F000-77FFFF (base 16) Microchip Technology Germany II GmbH&Co.KG
Emmy-Noether-Straße 14
@@ -13883,6 +14081,12 @@ C98000-C98FFF (base 16) Trust Automation
San Luis Obispo CA 93401
US
+70-B3-D5 (hex) Kospel S.A.
+249000-249FFF (base 16) Kospel S.A.
+ Olchowa 1
+ Koszalin 75-136
+ PL
+
70-B3-D5 (hex) Coheros Oy
D2E000-D2EFFF (base 16) Coheros Oy
Tammukkakatu 6
@@ -13895,18 +14099,6 @@ E24000-E24FFF (base 16) Gogo Business Aviation
Broomfield CO 80021
US
-70-B3-D5 (hex) Smart Embedded Systems
-A09000-A09FFF (base 16) Smart Embedded Systems
- 6701 Koll Center Parkway #250
- Pleasonton CA 94566
- US
-
-70-B3-D5 (hex) Guan Show Technologe Co., Ltd.
-F6A000-F6AFFF (base 16) Guan Show Technologe Co., Ltd.
- No.127, Jianguo 1st Rd., Lingya Dist.
- Kaohsiung City 802
- TW
-
70-B3-D5 (hex) Taejin InfoTech
A75000-A75FFF (base 16) Taejin InfoTech
40, Imi-ro, A-411
@@ -13919,6 +14111,18 @@ A75000-A75FFF (base 16) Taejin InfoTech
AIX EN PROVENCE 13290
FR
+70-B3-D5 (hex) Smart Embedded Systems
+A09000-A09FFF (base 16) Smart Embedded Systems
+ 6701 Koll Center Parkway #250
+ Pleasonton CA 94566
+ US
+
+70-B3-D5 (hex) Guan Show Technologe Co., Ltd.
+F6A000-F6AFFF (base 16) Guan Show Technologe Co., Ltd.
+ No.127, Jianguo 1st Rd., Lingya Dist.
+ Kaohsiung City 802
+ TW
+
70-B3-D5 (hex) LLC Sarov Innovative Technologies (WIZOLUTION)
50F000-50FFFF (base 16) LLC Sarov Innovative Technologies (WIZOLUTION)
RUSSIAN FEDERATION, Nizhny Novgorod region, Varlamovskaya road, 7, build 2
@@ -13931,12 +14135,6 @@ A77000-A77FFF (base 16) SPX Radiodetection
Bristol Avon BS14 0AF
GB
-70-B3-D5 (hex) INVISSYS
-AD4000-AD4FFF (base 16) INVISSYS
- 25 rue marcel issartier
- merignac 33700
- FR
-
70-B3-D5 (hex) LM-Instruments Oy
5AC000-5ACFFF (base 16) LM-Instruments Oy
Norrbyn rantatie 8
@@ -13949,16 +14147,28 @@ DBB000-DBBFFF (base 16) Fuhr GmbH Filtertechnik
Klein-Winternheim Rheinland-Pfalz 55270
DE
+70-B3-D5 (hex) Sanmina Israel
+C18000-C18FFF (base 16) Sanmina Israel
+ Koren Industrial Zone , POBox 102
+ Maalot Israel 2101002
+ IL
+
+70-B3-D5 (hex) INVISSYS
+AD4000-AD4FFF (base 16) INVISSYS
+ 25 rue marcel issartier
+ merignac 33700
+ FR
+
70-B3-D5 (hex) Panoramic Power
669000-669FFF (base 16) Panoramic Power
15 Atir Yeda
Kfar Saba 4464312
IL
-70-B3-D5 (hex) Sanmina Israel
-C18000-C18FFF (base 16) Sanmina Israel
- Koren Industrial Zone , POBox 102
- Maalot Israel 2101002
+70-B3-D5 (hex) Panoramic Power
+06D000-06DFFF (base 16) Panoramic Power
+ Atir Yeda 15
+ Kfar Saba 4464312
IL
70-B3-D5 (hex) Avlinkpro
@@ -13967,11 +14177,11 @@ C18000-C18FFF (base 16) Sanmina Israel
Totowa NJ 07512
US
-70-B3-D5 (hex) Panoramic Power
-06D000-06DFFF (base 16) Panoramic Power
- Atir Yeda 15
- Kfar Saba 4464312
- IL
+70-B3-D5 (hex) DECYBEN
+683000-683FFF (base 16) DECYBEN
+ 170 Rue Raymond Losserand
+ Paris 75014
+ FR
70-B3-D5 (hex) C4I Systems Ltd
5C6000-5C6FFF (base 16) C4I Systems Ltd
@@ -13985,11 +14195,11 @@ C36000-C36FFF (base 16) Knowledge Resources GmbH
Bsel BS 4057
CH
-70-B3-D5 (hex) DECYBEN
-683000-683FFF (base 16) DECYBEN
- 170 Rue Raymond Losserand
- Paris 75014
- FR
+70-B3-D5 (hex) CoreEL Technologies Pvt Ltd
+10D000-10DFFF (base 16) CoreEL Technologies Pvt Ltd
+ #21, 7th Main, 1st Block ,Koramangala,
+ Bangalore Karnataka 560034
+ IN
70-B3-D5 (hex) adnexo GmbH
4E3000-4E3FFF (base 16) adnexo GmbH
@@ -14009,12 +14219,6 @@ C23000-C23FFF (base 16) Sumitomo Heavy Industries, Ltd.
Moscow Moscow 109380
RU
-70-B3-D5 (hex) CoreEL Technologies Pvt Ltd
-10D000-10DFFF (base 16) CoreEL Technologies Pvt Ltd
- #21, 7th Main, 1st Block ,Koramangala,
- Bangalore Karnataka 560034
- IN
-
70-B3-D5 (hex) Shenzhen Vikings Technology Co., Ltd.
46A000-46AFFF (base 16) Shenzhen Vikings Technology Co., Ltd.
Floor 3, building 2, tiantong industrial park, gaofeng community, dalang street, longhua district
@@ -14027,18 +14231,18 @@ C23000-C23FFF (base 16) Sumitomo Heavy Industries, Ltd.
Ho Chi Minh City Ho Chi Minh 70000
VN
-70-B3-D5 (hex) C W F Hamilton & Co Ltd
-82A000-82AFFF (base 16) C W F Hamilton & Co Ltd
- 20 Lunns Road, Middleton
- Christchurch Canterbury 8024
- NZ
-
70-B3-D5 (hex) aelettronica group srl
AD9000-AD9FFF (base 16) aelettronica group srl
via matteotti,22
gaggiano milano 20083
IT
+70-B3-D5 (hex) C W F Hamilton & Co Ltd
+82A000-82AFFF (base 16) C W F Hamilton & Co Ltd
+ 20 Lunns Road, Middleton
+ Christchurch Canterbury 8024
+ NZ
+
70-B3-D5 (hex) Wuhan Xingtuxinke ELectronic Co.,Ltd
165000-165FFF (base 16) Wuhan Xingtuxinke ELectronic Co.,Ltd
NO.C3-8F,Software Park,Optics Valley,East Lake Development Zone,Wuhan,Hubei,China
@@ -14087,18 +14291,18 @@ B90000-B90FFF (base 16) Amico Corporation
Seung-nam Si Gyeonggi-Do 13488
KR
-70-B3-D5 (hex) Honeywell/Intelligrated
-94C000-94CFFF (base 16) Honeywell/Intelligrated
- 10045 International Blvd
- Cincinnati OH 45246
- US
-
70-B3-D5 (hex) TIAMA
8A1000-8A1FFF (base 16) TIAMA
ZA des Plattes - 1 Chemin des Plattes
VOURLES 69390
FR
+70-B3-D5 (hex) Honeywell/Intelligrated
+94C000-94CFFF (base 16) Honeywell/Intelligrated
+ 10045 International Blvd
+ Cincinnati OH 45246
+ US
+
70-B3-D5 (hex) LARIMART SPA
536000-536FFF (base 16) LARIMART SPA
VIA DI TORREVECCHIA
@@ -14117,18 +14321,18 @@ EDA000-EDAFFF (base 16) Breas Medical AB
Mölnlycke SE-435 33
SE
-70-B3-D5 (hex) Ketronixs Sdn Bhd
-6AC000-6ACFFF (base 16) Ketronixs Sdn Bhd
- 51-17-B Menara BHL Bank, Jalan Sultan Ahmad Shah
- Georgetown Penang 10050
- MY
-
70-B3-D5 (hex) Packet Power
B54000-B54FFF (base 16) Packet Power
2716 Summer Str. N.E.
Minneapolis MN 55413
US
+70-B3-D5 (hex) Ketronixs Sdn Bhd
+6AC000-6ACFFF (base 16) Ketronixs Sdn Bhd
+ 51-17-B Menara BHL Bank, Jalan Sultan Ahmad Shah
+ Georgetown Penang 10050
+ MY
+
70-B3-D5 (hex) Alto Aviation
D0F000-D0FFFF (base 16) Alto Aviation
86 Leominster Road
@@ -14183,12 +14387,6 @@ E11000-E11FFF (base 16) Engage Technologies
Brooklyn Park MN 55428
US
-70-B3-D5 (hex) Proemion GmbH
-A03000-A03FFF (base 16) Proemion GmbH
- Donaustraße 14
- Fulda Hessen 36043
- DE
-
70-B3-D5 (hex) GPSat Systems
386000-386FFF (base 16) GPSat Systems
Suite 1 22 Aberdeen Road
@@ -14201,6 +14399,12 @@ A03000-A03FFF (base 16) Proemion GmbH
Havant Hampshire PO9 5TL
GB
+70-B3-D5 (hex) Proemion GmbH
+A03000-A03FFF (base 16) Proemion GmbH
+ Donaustraße 14
+ Fulda Hessen 36043
+ DE
+
70-B3-D5 (hex) Magenta Labs, Inc.
376000-376FFF (base 16) Magenta Labs, Inc.
164 Townsend Street Unit 1
@@ -14267,6 +14471,12 @@ B71000-B71FFF (base 16) Optiver Pty Ltd
MONTCEAU LES MINES SAONE ET LOIRE 71300
FR
+70-B3-D5 (hex) DAVE SRL
+27B000-27BFFF (base 16) DAVE SRL
+ VIA TALPONEDO 29/A
+ PORCIA PORDENONE 330850
+ IT
+
70-B3-D5 (hex) ZAO ZEO
619000-619FFF (base 16) ZAO ZEO
Khachaturiana 14a
@@ -14291,12 +14501,6 @@ B71000-B71FFF (base 16) Optiver Pty Ltd
Shanghai Shanghai 201612
CN
-70-B3-D5 (hex) DAVE SRL
-27B000-27BFFF (base 16) DAVE SRL
- VIA TALPONEDO 29/A
- PORCIA PORDENONE 330850
- IT
-
70-B3-D5 (hex) MB connect line GmbH Fernwartungssysteme
8FB000-8FBFFF (base 16) MB connect line GmbH Fernwartungssysteme
Winnettener Straße 6
@@ -14315,18 +14519,18 @@ B71000-B71FFF (base 16) Optiver Pty Ltd
Singapore Singapore 479237
SG
-70-B3-D5 (hex) Cubic ITS, Inc. dba GRIDSMART Technologies
-CBF000-CBFFFF (base 16) Cubic ITS, Inc. dba GRIDSMART Technologies
- 10545 Hardin Valley Rd
- Knoxville TN 37932
- US
-
70-B3-D5 (hex) WILMORE ELECTRONICS COMPANY
ED4000-ED4FFF (base 16) WILMORE ELECTRONICS COMPANY
607 US HIGHWAY 70A E
HILLSBOROUGH NC 27278-8526
US
+70-B3-D5 (hex) Cubic ITS, Inc. dba GRIDSMART Technologies
+CBF000-CBFFFF (base 16) Cubic ITS, Inc. dba GRIDSMART Technologies
+ 10545 Hardin Valley Rd
+ Knoxville TN 37932
+ US
+
70-B3-D5 (hex) Veo Robotics, Inc.
6C4000-6C4FFF (base 16) Veo Robotics, Inc.
411 Waverley Oaks Rd. Suite 107
@@ -14357,6 +14561,18 @@ CDD000-CDDFFF (base 16) Teneo IoT B.V.
Winterswijk 7101 EK
NL
+70-B3-D5 (hex) tetronik GmbH AEN
+909000-909FFF (base 16) tetronik GmbH AEN
+ Silberbachstr.10
+ Taunusstein Hessen 65232
+ DE
+
+70-B3-D5 (hex) EBE Mobility & Green Energy GmbH
+624000-624FFF (base 16) EBE Mobility & Green Energy GmbH
+ Prießnitzgasse 16
+ Mödling Austria 2340
+ AT
+
70-B3-D5 (hex) WuXi anktech Co., Ltd
B61000-B61FFF (base 16) WuXi anktech Co., Ltd
Room1801, No.6 Third Financial Street, Binhu District, Wuxi City, Jiangsu Province
@@ -14375,32 +14591,26 @@ AB1000-AB1FFF (base 16) ISRV Zrt.
Budapest PEST 1024
HU
-70-B3-D5 (hex) tetronik GmbH AEN
-909000-909FFF (base 16) tetronik GmbH AEN
- Silberbachstr.10
- Taunusstein Hessen 65232
- DE
-
70-B3-D5 (hex) Boundary Technologies Ltd
BBC000-BBCFFF (base 16) Boundary Technologies Ltd
61 Dublin Street
Edinburgh Midlothian EH3 6NL
GB
-70-B3-D5 (hex) EBE Mobility & Green Energy GmbH
-624000-624FFF (base 16) EBE Mobility & Green Energy GmbH
- Prießnitzgasse 16
- Mödling Austria 2340
- AT
+70-B3-D5 (hex) Microvision
+5F5000-5F5FFF (base 16) Microvision
+ 272, Digital-ro, 1004ho Microvision.
+ Guro-gu, Seoul, Republic of Korea 08848
+ KR
70-B3-D5 (hex) Potter Electric Signal Co. LLC
-C17000-C17FFF (base 16) Potter Electric Signal Co. LLC
+70C000-70CFFF (base 16) Potter Electric Signal Co. LLC
1609 Park 370 Place
Hazelwood MO 63042
US
70-B3-D5 (hex) Potter Electric Signal Co. LLC
-70C000-70CFFF (base 16) Potter Electric Signal Co. LLC
+C17000-C17FFF (base 16) Potter Electric Signal Co. LLC
1609 Park 370 Place
Hazelwood MO 63042
US
@@ -14411,11 +14621,47 @@ C17000-C17FFF (base 16) Potter Electric Signal Co. LLC
Shinagawa-ku Tokyo 1410001
JP
-70-B3-D5 (hex) Microvision
-5F5000-5F5FFF (base 16) Microvision
- 272, Digital-ro, 1004ho Microvision.
- Guro-gu, Seoul, Republic of Korea 08848
- KR
+70-B3-D5 (hex) Alfa Elettronica srl
+BF0000-BF0FFF (base 16) Alfa Elettronica srl
+ Via Amman, 35
+ Cordenons - - not required - - 33084
+ IT
+
+70-B3-D5 (hex) PREO INDUSTRIES FAR EAST LTD
+8E8000-8E8FFF (base 16) PREO INDUSTRIES FAR EAST LTD
+ UNIT B, 26/F, AMIATA IND'L BLDG
+ HONG KONG NIL
+ HK
+
+70-B3-D5 (hex) Utopi Ltd
+80E000-80EFFF (base 16) Utopi Ltd
+ 3 Candymill Lane
+ Hamilton ML3 0FD
+ GB
+
+70-B3-D5 (hex) Entec Solar S.L.
+887000-887FFF (base 16) Entec Solar S.L.
+ C/ Bambú 4
+ Madrid Madrid 28036
+ ES
+
+70-B3-D5 (hex) Nxvi Microelectronics Technology (Jinan) Co., Ltd.
+D78000-D78FFF (base 16) Nxvi Microelectronics Technology (Jinan) Co., Ltd.
+ 2701, 27th floor, No. 7000, Hanyu Golden Valley Business Service Center, Jingshi Road, Jinan Area, Pilot Free Trade Zone,
+ Jinan Shandong 250102
+ CN
+
+70-B3-D5 (hex) Procon Electronics Pty Ltd
+527000-527FFF (base 16) Procon Electronics Pty Ltd
+ P O Box 164
+ Seven Hills NSW 1730
+ AU
+
+00-1B-C5 (hex) OctoGate IT Security Systems GmbH
+030000-030FFF (base 16) OctoGate IT Security Systems GmbH
+ Klingender Strasse 5
+ Paderborn NRW 33100
+ DE
70-B3-D5 (hex) YUYAMA MFG Co.,Ltd
BBB000-BBBFFF (base 16) YUYAMA MFG Co.,Ltd
@@ -18617,24 +18863,30 @@ BE0000-BE0FFF (base 16) Cognosos, Inc.
Taoyuan 330
TW
-70-B3-D5 (hex) PolyTech A/S
-F4C000-F4CFFF (base 16) PolyTech A/S
- HI Park 445
- Herning Herning 7400
- DK
-
70-B3-D5 (hex) Zhuhai Lonl electric Co.,Ltd.
EA9000-EA9FFF (base 16) Zhuhai Lonl electric Co.,Ltd.
2nd floor, building B3, nanfang software park, xiangzhou district
Zhuhai Guangdong 519000
CN
+70-B3-D5 (hex) PolyTech A/S
+F4C000-F4CFFF (base 16) PolyTech A/S
+ HI Park 445
+ Herning Herning 7400
+ DK
+
70-B3-D5 (hex) Shanghai Tiancheng Communication Technology Corporation
1C3000-1C3FFF (base 16) Shanghai Tiancheng Communication Technology Corporation
No.618,Guangxing Rd.,Songjiang
shanghai 200090
CN
+70-B3-D5 (hex) T&M Media Pty Ltd
+B41000-B41FFF (base 16) T&M Media Pty Ltd
+ 6, 476 Gardeners Road
+ Alexandria NSW 2015
+ AU
+
70-B3-D5 (hex) SAMBO HITECH
282000-282FFF (base 16) SAMBO HITECH
469,Seokjung-ro,Namdong-Gu
@@ -18647,40 +18899,34 @@ F9F000-F9FFFF (base 16) M.A.C. Solutions (UK) Ltd
Redditch Worcestershire B98 8LG
GB
+70-B3-D5 (hex) Shenzhen CAMERAY ELECTRONIC CO., LTD
+1E2000-1E2FFF (base 16) Shenzhen CAMERAY ELECTRONIC CO., LTD
+ 4-5FL, Building 1, Guanghui Science, and Technology Park; Minqing Road, Longhua Town
+ shenzhen GD 518109
+ CN
+
+70-B3-D5 (hex) Vulcan Wireless Inc.
+E4D000-E4DFFF (base 16) Vulcan Wireless Inc.
+ 2218 Faraday Ave Suite 110
+ Carlsbad CA 92008
+ US
+
70-B3-D5 (hex) ERA TOYS LIMITED
193000-193FFF (base 16) ERA TOYS LIMITED
Room 505, 5th Floor, Beverley Commercial Centre, 87-105 Chatham Road South
Tsim Sha Tsui Kowloon 0000
HK
-70-B3-D5 (hex) T&M Media Pty Ltd
-B41000-B41FFF (base 16) T&M Media Pty Ltd
- 6, 476 Gardeners Road
- Alexandria NSW 2015
- AU
-
-70-B3-D5 (hex) A&T Corporation
-32E000-32EFFF (base 16) A&T Corporation
- 2023-1
- Endo, Fujisawa, Kanagawa 252-0816
- JP
-
70-B3-D5 (hex) Scorpion Precision Industry (HK)CO. Ltd.
02B000-02BFFF (base 16) Scorpion Precision Industry (HK)CO. Ltd.
16th Floor, Excelsior Industrial Building,68-76 Sha Tsui Road,
Tsuen Wan New Territories 999077
HK
-70-B3-D5 (hex) Shenzhen CAMERAY ELECTRONIC CO., LTD
-1E2000-1E2FFF (base 16) Shenzhen CAMERAY ELECTRONIC CO., LTD
- 4-5FL, Building 1, Guanghui Science, and Technology Park; Minqing Road, Longhua Town
- shenzhen GD 518109
- CN
-
-70-B3-D5 (hex) Vulcan Wireless Inc.
-E4D000-E4DFFF (base 16) Vulcan Wireless Inc.
- 2218 Faraday Ave Suite 110
- Carlsbad CA 92008
+70-B3-D5 (hex) Cryptotronix LLC
+0DB000-0DBFFF (base 16) Cryptotronix LLC
+ P.O. Box 273029
+ Fort Collins CO 80525
US
70-B3-D5 (hex) MIVO Technology AB
@@ -18689,11 +18935,11 @@ E4D000-E4DFFF (base 16) Vulcan Wireless Inc.
Stockholm 11215
SE
-70-B3-D5 (hex) Cryptotronix LLC
-0DB000-0DBFFF (base 16) Cryptotronix LLC
- P.O. Box 273029
- Fort Collins CO 80525
- US
+70-B3-D5 (hex) A&T Corporation
+32E000-32EFFF (base 16) A&T Corporation
+ 2023-1
+ Endo, Fujisawa, Kanagawa 252-0816
+ JP
70-B3-D5 (hex) TOMEI TSUSHIN KOGYO CO,.LTD
FB1000-FB1FFF (base 16) TOMEI TSUSHIN KOGYO CO,.LTD
@@ -18701,6 +18947,12 @@ FB1000-FB1FFF (base 16) TOMEI TSUSHIN KOGYO CO,.LTD
Inazawa Shi Aichi ken 4928274
JP
+70-B3-D5 (hex) DogWatch Inc
+1E7000-1E7FFF (base 16) DogWatch Inc
+ 10 Michigan Drive
+ Natick 01760
+ US
+
70-B3-D5 (hex) RCH Vietnam Limited Liability Company
C09000-C09FFF (base 16) RCH Vietnam Limited Liability Company
Workshop F.01B-2, Lot No. F.01B Long Hau
@@ -18713,24 +18965,6 @@ F69000-F69FFF (base 16) Copper Labs, Inc.
Boulder CO 80301
US
-70-B3-D5 (hex) DogWatch Inc
-1E7000-1E7FFF (base 16) DogWatch Inc
- 10 Michigan Drive
- Natick 01760
- US
-
-70-B3-D5 (hex) Grossenbacher Systeme AG
-B75000-B75FFF (base 16) Grossenbacher Systeme AG
- Spinnereistrasse 10
- St. Gallen 9008
- CH
-
-70-B3-D5 (hex) ITsynergy Ltd
-D2A000-D2AFFF (base 16) ITsynergy Ltd
- 9 Bonhill Street
- London EC2A 4DJ
- GB
-
70-B3-D5 (hex) SHENZHEN HUINENGYUAN Technology Co., Ltd
A83000-A83FFF (base 16) SHENZHEN HUINENGYUAN Technology Co., Ltd
Room 206, 3 Building, Hongwanchuangke Center, Gushu, Xixiang, Baoan District
@@ -18755,28 +18989,34 @@ C94000-C94FFF (base 16) Vars Technology
Blaricum 1261WT
NL
+70-B3-D5 (hex) Grossenbacher Systeme AG
+B75000-B75FFF (base 16) Grossenbacher Systeme AG
+ Spinnereistrasse 10
+ St. Gallen 9008
+ CH
+
+70-B3-D5 (hex) ITsynergy Ltd
+D2A000-D2AFFF (base 16) ITsynergy Ltd
+ 9 Bonhill Street
+ London EC2A 4DJ
+ GB
+
70-B3-D5 (hex) Vaunix Technology Corporation
EE6000-EE6FFF (base 16) Vaunix Technology Corporation
7 New Pasture Rd
Newburyport MA 01950
US
-70-B3-D5 (hex) Portrait Displays, Inc.
-D77000-D77FFF (base 16) Portrait Displays, Inc.
- 6663 OWENS DR
- PLEASANTON CA 94588
- US
-
70-B3-D5 (hex) chargeBIG
869000-869FFF (base 16) chargeBIG
Pragstraße 26-46
Stuttgart 70376
DE
-70-B3-D5 (hex) Tricom Research Inc.
-601000-601FFF (base 16) Tricom Research Inc.
- 17791 Sky Park Circle Suite GHJ
- Irvine CA 92614
+70-B3-D5 (hex) Portrait Displays, Inc.
+D77000-D77FFF (base 16) Portrait Displays, Inc.
+ 6663 OWENS DR
+ PLEASANTON CA 94588
US
70-B3-D5 (hex) Sprintshield d.o.o.
@@ -18785,16 +19025,40 @@ B03000-B03FFF (base 16) Sprintshield d.o.o.
Velika Gorica 10410
HR
+70-B3-D5 (hex) Tricom Research Inc.
+601000-601FFF (base 16) Tricom Research Inc.
+ 17791 Sky Park Circle Suite GHJ
+ Irvine CA 92614
+ US
+
+70-B3-D5 (hex) Mictrotrac Retsch GmbH
+F09000-F09FFF (base 16) Mictrotrac Retsch GmbH
+ Retsch-Allee 1-5
+ Haan NRW 42781
+ DE
+
70-B3-D5 (hex) KeyProd
473000-473FFF (base 16) KeyProd
66 avenue des Champs Elysées
Paris 77008
FR
-70-B3-D5 (hex) Mictrotrac Retsch GmbH
-F09000-F09FFF (base 16) Mictrotrac Retsch GmbH
- Retsch-Allee 1-5
- Haan NRW 42781
+70-B3-D5 (hex) WARECUBE,INC
+AD3000-AD3FFF (base 16) WARECUBE,INC
+ #A-811, 142-10, Saneop-ro, 156beon-gil, Gwonseon-gu
+ Suwon-si 16648
+ KR
+
+70-B3-D5 (hex) myUpTech AB
+FC3000-FC3FFF (base 16) myUpTech AB
+ Box 14
+ Markaryd 28532
+ SE
+
+70-B3-D5 (hex) Scharco Elektronik GmbH
+C72000-C72FFF (base 16) Scharco Elektronik GmbH
+ Tilsiter Strasse 8
+ Wuppertal NRW 42277
DE
70-B3-D5 (hex) MB connect line GmbH Fernwartungssysteme
@@ -18809,30 +19073,12 @@ E01000-E01FFF (base 16) EarTex
London England N1 6DR
GB
-70-B3-D5 (hex) Scharco Elektronik GmbH
-C72000-C72FFF (base 16) Scharco Elektronik GmbH
- Tilsiter Strasse 8
- Wuppertal NRW 42277
- DE
-
70-B3-D5 (hex) AVL DiTEST GmbH
78D000-78DFFF (base 16) AVL DiTEST GmbH
Alte Poststrasse 156
Graz 8020
AT
-70-B3-D5 (hex) WARECUBE,INC
-AD3000-AD3FFF (base 16) WARECUBE,INC
- #A-811, 142-10, Saneop-ro, 156beon-gil, Gwonseon-gu
- Suwon-si 16648
- KR
-
-70-B3-D5 (hex) myUpTech AB
-FC3000-FC3FFF (base 16) myUpTech AB
- Box 14
- Markaryd 28532
- SE
-
70-B3-D5 (hex) TextSpeak Corporation
F0E000-F0EFFF (base 16) TextSpeak Corporation
55 Greensfarm RD 2nd Flr 200-69
@@ -18845,18 +19091,18 @@ F0E000-F0EFFF (base 16) TextSpeak Corporation
Zola Predosa Bologna 40069
IT
-70-B3-D5 (hex) WAYNE ANALYTICS LLC
-301000-301FFF (base 16) WAYNE ANALYTICS LLC
- 100 Rialto Place, Suite 721
- MELBOURNE FL 32901
- US
-
70-B3-D5 (hex) HongSeok Ltd.
30A000-30AFFF (base 16) HongSeok Ltd.
166, Osan-ro, Osan-myeon
Iksan-si Jeollabuk-do 54670
KR
+70-B3-D5 (hex) WAYNE ANALYTICS LLC
+301000-301FFF (base 16) WAYNE ANALYTICS LLC
+ 100 Rialto Place, Suite 721
+ MELBOURNE FL 32901
+ US
+
70-B3-D5 (hex) GS Elektromedizinsiche Geräte G. Stemple GmbH
3D3000-3D3FFF (base 16) GS Elektromedizinsiche Geräte G. Stemple GmbH
Hauswiesenstr. 26
@@ -18887,22 +19133,16 @@ E1C000-E1CFFF (base 16) RoomMate AS
Daejeon Yuseong-gu 34016
KR
-70-B3-D5 (hex) Sequent AG
-291000-291FFF (base 16) Sequent AG
- Eptingerstrasse 3
- Basel 4052
- CH
-
70-B3-D5 (hex) KODENSHI CORP.
DBA000-DBAFFF (base 16) KODENSHI CORP.
161,Jyuichi,Makishima
UJI KYOTO 6110041
JP
-70-B3-D5 (hex) ID Quantique SA
-657000-657FFF (base 16) ID Quantique SA
- 3 chemin de la marbrerie
- Carouge 1227
+70-B3-D5 (hex) Sequent AG
+291000-291FFF (base 16) Sequent AG
+ Eptingerstrasse 3
+ Basel 4052
CH
70-B3-D5 (hex) Profusion Limited
@@ -18911,6 +19151,12 @@ DBA000-DBAFFF (base 16) KODENSHI CORP.
Southend on Sea Essex SS2 6UN
GB
+70-B3-D5 (hex) ID Quantique SA
+657000-657FFF (base 16) ID Quantique SA
+ 3 chemin de la marbrerie
+ Carouge 1227
+ CH
+
70-B3-D5 (hex) CDS Institute of Management Strategy, Inc.
3A3000-3A3FFF (base 16) CDS Institute of Management Strategy, Inc.
Fukuyoshi-cho Billding 7F, Roppongi 2-2-6
@@ -18953,6 +19199,12 @@ B6F000-B6FFFF (base 16) Integra Metering SAS
Ramsen 8262
CH
+70-B3-D5 (hex) K&A Electronics Inc.
+9E4000-9E4FFF (base 16) K&A Electronics Inc.
+ 2609 Pinelawn dr.
+ La Crescenta CA 91214
+ US
+
70-B3-D5 (hex) Paramount Bed Holdings Co., Ltd.
8F1000-8F1FFF (base 16) Paramount Bed Holdings Co., Ltd.
2-14-5. Higashisuna
@@ -18971,12 +19223,6 @@ B6F000-B6FFFF (base 16) Integra Metering SAS
LONDON County (optional) N17 9LJ
GB
-70-B3-D5 (hex) K&A Electronics Inc.
-9E4000-9E4FFF (base 16) K&A Electronics Inc.
- 2609 Pinelawn dr.
- La Crescenta CA 91214
- US
-
70-B3-D5 (hex) Indutherm Giesstechnologie GmbH
8DE000-8DEFFF (base 16) Indutherm Giesstechnologie GmbH
Brettener Straße 32
@@ -19001,12 +19247,6 @@ D97000-D97FFF (base 16) BRS Sistemas Eletrônicos
Porto Alegre - RS (Non U.S.) 91380-000
BR
-70-B3-D5 (hex) Ideas srl
-B63000-B63FFF (base 16) Ideas srl
- Via dei Brughi, 21
- Gessate Milan 20060
- IT
-
70-B3-D5 (hex) 2M Technology
F7D000-F7DFFF (base 16) 2M Technology
802 Greenview Drive
@@ -19019,30 +19259,18 @@ F7D000-F7DFFF (base 16) 2M Technology
Natick MA 01760
US
+70-B3-D5 (hex) Ideas srl
+B63000-B63FFF (base 16) Ideas srl
+ Via dei Brughi, 21
+ Gessate Milan 20060
+ IT
+
70-B3-D5 (hex) Invert Robotics Ltd.
FC7000-FC7FFF (base 16) Invert Robotics Ltd.
Unit A, 235 Annex Road
Christchurch 8024
NZ
-70-B3-D5 (hex) AERIAL CAMERA SYSTEMS Ltd
-FC4000-FC4FFF (base 16) AERIAL CAMERA SYSTEMS Ltd
- 3 The Merlin Centre, Lancaster Road,
- HIGH WYCOMBE HP12 3QL
- GB
-
-70-B3-D5 (hex) TUALCOM ELEKTRONIK A.S.
-4A3000-4A3FFF (base 16) TUALCOM ELEKTRONIK A.S.
- Mustafa Kemal mah.
- ANKARA 06530
- TR
-
-70-B3-D5 (hex) Underground Systems, Inc.
-424000-424FFF (base 16) Underground Systems, Inc.
- 3A Trowbridge Drive
- Bethel CT 06801
- US
-
70-B3-D5 (hex) MPM Micro Präzision Marx GmbH
F60000-F60FFF (base 16) MPM Micro Präzision Marx GmbH
Neuenweiherstraße 19
@@ -19055,17 +19283,23 @@ F60000-F60FFF (base 16) MPM Micro Präzision Marx GmbH
San Francisco CA 94103-4938
US
-70-B3-D5 (hex) Hensoldt Sensors GmbH
-2D3000-2D3FFF (base 16) Hensoldt Sensors GmbH
- Woerthstrasse 85
- Ulm Baden-Wuerttemberg 89081
- DE
+70-B3-D5 (hex) Underground Systems, Inc.
+424000-424FFF (base 16) Underground Systems, Inc.
+ 3A Trowbridge Drive
+ Bethel CT 06801
+ US
-70-B3-D5 (hex) Kron Medidores
-C1E000-C1EFFF (base 16) Kron Medidores
- Rua Alexandre de Gusmão, 278
- São Paulo São Paulo 04760-020
- BR
+70-B3-D5 (hex) AERIAL CAMERA SYSTEMS Ltd
+FC4000-FC4FFF (base 16) AERIAL CAMERA SYSTEMS Ltd
+ 3 The Merlin Centre, Lancaster Road,
+ HIGH WYCOMBE HP12 3QL
+ GB
+
+70-B3-D5 (hex) TUALCOM ELEKTRONIK A.S.
+4A3000-4A3FFF (base 16) TUALCOM ELEKTRONIK A.S.
+ Mustafa Kemal mah.
+ ANKARA 06530
+ TR
70-B3-D5 (hex) Shanghai Jupper Technology Co.Ltd
157000-157FFF (base 16) Shanghai Jupper Technology Co.Ltd
@@ -19073,17 +19307,23 @@ C1E000-C1EFFF (base 16) Kron Medidores
Shanghai 201315
CN
-70-B3-D5 (hex) S-Rain Control A/S
-B68000-B68FFF (base 16) S-Rain Control A/S
- Oldenvej 6
- Kvistgård Copenhagen DK-3490
- DK
+70-B3-D5 (hex) Kron Medidores
+C1E000-C1EFFF (base 16) Kron Medidores
+ Rua Alexandre de Gusmão, 278
+ São Paulo São Paulo 04760-020
+ BR
-70-B3-D5 (hex) Thermo Fisher Scientific Inc.
-D96000-D96FFF (base 16) Thermo Fisher Scientific Inc.
- Thermo Fisher Scientific Inc.
- Shanghai Shanghai 201206
- CN
+70-B3-D5 (hex) IK MULTIMEDIA PRODUCTION SRL
+2FB000-2FBFFF (base 16) IK MULTIMEDIA PRODUCTION SRL
+ Via dell'Industria 46
+ Modena Italy 41122
+ IT
+
+70-B3-D5 (hex) Hensoldt Sensors GmbH
+2D3000-2D3FFF (base 16) Hensoldt Sensors GmbH
+ Woerthstrasse 85
+ Ulm Baden-Wuerttemberg 89081
+ DE
70-B3-D5 (hex) Autonomic Controls, Inc.
BC7000-BC7FFF (base 16) Autonomic Controls, Inc.
@@ -19091,29 +19331,35 @@ BC7000-BC7FFF (base 16) Autonomic Controls, Inc.
ARMONK NY 10504
US
-70-B3-D5 (hex) IK MULTIMEDIA PRODUCTION SRL
-2FB000-2FBFFF (base 16) IK MULTIMEDIA PRODUCTION SRL
- Via dell'Industria 46
- Modena Italy 41122
- IT
-
70-B3-D5 (hex) CYG CONTRON CO.LTD
A8C000-A8CFFF (base 16) CYG CONTRON CO.LTD
BUILDING A.NO.11 OF THE 6TH TECHNOGY ROAD,PHASE III OF TECNOLOGY INNOVATION COAST,ZHUHAI NATIONAL HI-TECH INDUSTRIES DEVELOPMENT ZONE
Zhuhai 519000
CN
+70-B3-D5 (hex) Thermo Fisher Scientific Inc.
+D96000-D96FFF (base 16) Thermo Fisher Scientific Inc.
+ Thermo Fisher Scientific Inc.
+ Shanghai Shanghai 201206
+ CN
+
+70-B3-D5 (hex) S-Rain Control A/S
+B68000-B68FFF (base 16) S-Rain Control A/S
+ Oldenvej 6
+ Kvistgård Copenhagen DK-3490
+ DK
+
70-B3-D5 (hex) LIGPT
D14000-D14FFF (base 16) LIGPT
167, Jukdong-ro
Daejeon Yuseong-gu 34127
KR
-70-B3-D5 (hex) Innoknight
-AE8000-AE8FFF (base 16) Innoknight
- Rm. 1A2-A01, No. 1, Lixing 1st Rd., East Dist., Hsinchu City 300, Taiwan (R.O.C.)
- Hsinchu 300
- TW
+70-B3-D5 (hex) Royal Engineering Consultancy Private Limited
+34F000-34FFFF (base 16) Royal Engineering Consultancy Private Limited
+ 203 2nd Floor Jyoti Building 66 Nehru Place
+ New Delhi 110019
+ IN
70-B3-D5 (hex) Melissa Climate Jsc
2DD000-2DDFFF (base 16) Melissa Climate Jsc
@@ -19121,11 +19367,11 @@ AE8000-AE8FFF (base 16) Innoknight
Sofia 1000
BG
-70-B3-D5 (hex) Royal Engineering Consultancy Private Limited
-34F000-34FFFF (base 16) Royal Engineering Consultancy Private Limited
- 203 2nd Floor Jyoti Building 66 Nehru Place
- New Delhi 110019
- IN
+70-B3-D5 (hex) Innoknight
+AE8000-AE8FFF (base 16) Innoknight
+ Rm. 1A2-A01, No. 1, Lixing 1st Rd., East Dist., Hsinchu City 300, Taiwan (R.O.C.)
+ Hsinchu 300
+ TW
70-B3-D5 (hex) NUBURU Inc.
DC7000-DC7FFF (base 16) NUBURU Inc.
@@ -19133,18 +19379,6 @@ DC7000-DC7FFF (base 16) NUBURU Inc.
Centennial CO 80112
US
-70-B3-D5 (hex) Projects Unlimited Inc.
-7C5000-7C5FFF (base 16) Projects Unlimited Inc.
- 6300 Sand Lake Road
- Dayton OH 45414
- US
-
-70-B3-D5 (hex) Hilo
-B86000-B86FFF (base 16) Hilo
- 4-6 Kiprou str
- Tavros Athens 17778
- GR
-
70-B3-D5 (hex) Vigorcloud Co., Ltd.
A3E000-A3EFFF (base 16) Vigorcloud Co., Ltd.
3F., No. 11, Xinpo 1st St., Xindian Dist.,
@@ -19163,17 +19397,23 @@ A3E000-A3EFFF (base 16) Vigorcloud Co., Ltd.
Incheon 2nd floor, 16 Giljuro, Seogu 22793
KR
+70-B3-D5 (hex) Projects Unlimited Inc.
+7C5000-7C5FFF (base 16) Projects Unlimited Inc.
+ 6300 Sand Lake Road
+ Dayton OH 45414
+ US
+
70-B3-D5 (hex) RFHIC
25E000-25EFFF (base 16) RFHIC
41-14, Burim-ro 170beon-gil
Dongan-gu, Anyang-si Gyeonggi-do 14055
KR
-70-B3-D5 (hex) ADDE
-79C000-79CFFF (base 16) ADDE
- 21 impasse frédéric faÿs
- Villeurbanne 69100
- FR
+70-B3-D5 (hex) Hilo
+B86000-B86FFF (base 16) Hilo
+ 4-6 Kiprou str
+ Tavros Athens 17778
+ GR
70-B3-D5 (hex) Federated Wireless, Inc.
E22000-E22FFF (base 16) Federated Wireless, Inc.
@@ -19181,18 +19421,24 @@ E22000-E22FFF (base 16) Federated Wireless, Inc.
Arlington VA 22203
US
-70-B3-D5 (hex) DEUTA-WERKE GmbH
-F6B000-F6BFFF (base 16) DEUTA-WERKE GmbH
- Paffrather Str. 140
- Bergisch Gladbach North Rhine-Westphalia 51465
- DE
-
70-B3-D5 (hex) Nocix, LLC
BE2000-BE2FFF (base 16) Nocix, LLC
201 East 16th Ave
North Kansas City MO 64116
US
+70-B3-D5 (hex) ADDE
+79C000-79CFFF (base 16) ADDE
+ 21 impasse frédéric faÿs
+ Villeurbanne 69100
+ FR
+
+70-B3-D5 (hex) DEUTA-WERKE GmbH
+F6B000-F6BFFF (base 16) DEUTA-WERKE GmbH
+ Paffrather Str. 140
+ Bergisch Gladbach North Rhine-Westphalia 51465
+ DE
+
70-B3-D5 (hex) Servotronix Motion Control
B0E000-B0EFFF (base 16) Servotronix Motion Control
21C Yagia Kapayim st.
@@ -19211,17 +19457,23 @@ E87000-E87FFF (base 16) STACKFORCE GmbH
Eschbach 79427
DE
+70-B3-D5 (hex) Qlinx Technologies
+EC9000-EC9FFF (base 16) Qlinx Technologies
+ 1717 N Street NW Ste 1
+ Washington DC 20036
+ US
+
70-B3-D5 (hex) Pantherun Technologies Pvt Ltd
B14000-B14FFF (base 16) Pantherun Technologies Pvt Ltd
311 6th main road Hal 2nd stage
Bangalore Karnataka 560038
IN
-70-B3-D5 (hex) Qlinx Technologies
-EC9000-EC9FFF (base 16) Qlinx Technologies
- 1717 N Street NW Ste 1
- Washington DC 20036
- US
+70-B3-D5 (hex) Liberator Pty Ltd
+561000-561FFF (base 16) Liberator Pty Ltd
+ 265?Gilbert Street
+ Adelaide SA 5000
+ AU
70-B3-D5 (hex) EASTERN SCIENCE & TECHNOLOGY CO., LTD
2DF000-2DFFFF (base 16) EASTERN SCIENCE & TECHNOLOGY CO., LTD
@@ -19235,17 +19487,11 @@ EC9000-EC9FFF (base 16) Qlinx Technologies
Bridge of Don Aberdeen AB22 8GT
GB
-70-B3-D5 (hex) Liberator Pty Ltd
-561000-561FFF (base 16) Liberator Pty Ltd
- 265?Gilbert Street
- Adelaide SA 5000
- AU
-
-70-B3-D5 (hex) International Super Computer Co., Ltd.
-806000-806FFF (base 16) International Super Computer Co., Ltd.
- 807-3, 8 / F, block F, No. 9, Shangdi Third Street, Haidian District
- Beijing 100085
- CN
+70-B3-D5 (hex) Contec Americas Inc.
+883000-883FFF (base 16) Contec Americas Inc.
+ 3991 Sarno Rd
+ Melbourne FL 32934
+ US
70-B3-D5 (hex) Hon Hai Precision IND.CO.,LTD
B45000-B45FFF (base 16) Hon Hai Precision IND.CO.,LTD
@@ -19253,11 +19499,11 @@ B45000-B45FFF (base 16) Hon Hai Precision IND.CO.,LTD
TAIPEI TAIWAN 33859
CN
-70-B3-D5 (hex) Contec Americas Inc.
-883000-883FFF (base 16) Contec Americas Inc.
- 3991 Sarno Rd
- Melbourne FL 32934
- US
+70-B3-D5 (hex) International Super Computer Co., Ltd.
+806000-806FFF (base 16) International Super Computer Co., Ltd.
+ 807-3, 8 / F, block F, No. 9, Shangdi Third Street, Haidian District
+ Beijing 100085
+ CN
70-B3-D5 (hex) Rivercity Innovations Ltd.
156000-156FFF (base 16) Rivercity Innovations Ltd.
@@ -19307,18 +19553,36 @@ C46000-C46FFF (base 16) eumig industrie-TV GmbH.
Menomonee Falls WI 53051
US
-70-B3-D5 (hex) EkspertStroyProekt LLC
-DE9000-DE9FFF (base 16) EkspertStroyProekt LLC
- office 400, str.61, d.2/4, Luzhnetskaya nab.
- Moscow Moscow 119270
- RU
-
70-B3-D5 (hex) EA Elektroautomatik GmbH & Co. KG
4C3000-4C3FFF (base 16) EA Elektroautomatik GmbH & Co. KG
Helmholtzstraße 31-33
Viersen NRW 41747
DE
+70-B3-D5 (hex) YDK Technologies Co.,Ltd
+7F0000-7F0FFF (base 16) YDK Technologies Co.,Ltd
+ Minami Shinjuku Hoshino Bldg. 5-23-13 Sendagaya
+ Shibuya-ku Tokyo 151-0051
+ JP
+
+70-B3-D5 (hex) Potter Electric Signal Co. LLC
+A1B000-A1BFFF (base 16) Potter Electric Signal Co. LLC
+ 1609 Park 370 Place
+ Hazelwood MO 63042
+ US
+
+70-B3-D5 (hex) Potter Electric Signal Co. LLC
+BEB000-BEBFFF (base 16) Potter Electric Signal Co. LLC
+ 1609 Park 370 Place
+ Hazelwood MO 63042
+ US
+
+70-B3-D5 (hex) EkspertStroyProekt LLC
+DE9000-DE9FFF (base 16) EkspertStroyProekt LLC
+ office 400, str.61, d.2/4, Luzhnetskaya nab.
+ Moscow Moscow 119270
+ RU
+
70-B3-D5 (hex) GSP Sprachtechnologie GmbH
93C000-93CFFF (base 16) GSP Sprachtechnologie GmbH
Teltowkanalstraße 1
@@ -19331,29 +19595,17 @@ DE9000-DE9FFF (base 16) EkspertStroyProekt LLC
MIDORI-CITY GUNMA 376-0101
JP
-70-B3-D5 (hex) YDK Technologies Co.,Ltd
-7F0000-7F0FFF (base 16) YDK Technologies Co.,Ltd
- Minami Shinjuku Hoshino Bldg. 5-23-13 Sendagaya
- Shibuya-ku Tokyo 151-0051
- JP
-
70-B3-D5 (hex) Velvac Incorporated
4DD000-4DDFFF (base 16) Velvac Incorporated
2183 Alpine Way
Bellingham WA 98226
US
-70-B3-D5 (hex) Potter Electric Signal Co. LLC
-A1B000-A1BFFF (base 16) Potter Electric Signal Co. LLC
- 1609 Park 370 Place
- Hazelwood MO 63042
- US
-
-70-B3-D5 (hex) Potter Electric Signal Co. LLC
-BEB000-BEBFFF (base 16) Potter Electric Signal Co. LLC
- 1609 Park 370 Place
- Hazelwood MO 63042
- US
+70-B3-D5 (hex) Digitella Inc.
+D03000-D03FFF (base 16) Digitella Inc.
+ 2F, Banpodaero 99
+ Seocho-gu Seoul 06657
+ KR
70-B3-D5 (hex) Twoway Communications, Inc.
41C000-41CFFF (base 16) Twoway Communications, Inc.
@@ -19361,12 +19613,72 @@ BEB000-BEBFFF (base 16) Potter Electric Signal Co. LLC
New Taipei city Taipei 24891
TW
-70-B3-D5 (hex) Digitella Inc.
-D03000-D03FFF (base 16) Digitella Inc.
- 2F, Banpodaero 99
- Seocho-gu Seoul 06657
+70-B3-D5 (hex) B2cloud lda
+29E000-29EFFF (base 16) B2cloud lda
+ Urbanizacao do correlo 4,14
+ Gandra Paredes 4585-362
+ PT
+
+70-B3-D5 (hex) Elman srl
+B2C000-B2CFFF (base 16) Elman srl
+ Via di Valle Caia, km 4.700
+ Pomezia Roma 00040
+ IT
+
+70-B3-D5 (hex) Power Electronics Espana, S.L.
+BDB000-BDBFFF (base 16) Power Electronics Espana, S.L.
+ PI Pla de Carrases, CV-35 Salida 30Salida 30-
+ lliria Valencia 46160
+ ES
+
+70-B3-D5 (hex) AADONA Communication Pvt Ltd
+ED9000-ED9FFF (base 16) AADONA Communication Pvt Ltd
+ 1st Floor, Phoenix Tech Tower, Plot No. 14/46, IDA - Uppal
+ Hyderabad Telangana 500039
+ IN
+
+70-B3-D5 (hex) Eon
+E62000-E62FFF (base 16) Eon
+ 415, Heungan-daero, Dongan-gu, Anyang-si, Gyeonggi-do, Republic of Korea
+ Anyang-si Gyeonggi-do KS009
KR
+70-B3-D5 (hex) ARINAX
+6CC000-6CCFFF (base 16) ARINAX
+ 259 rue du Rocher de Lorzier
+ MOIRANS 38430
+ FR
+
+70-B3-D5 (hex) NOREYA Technology e.U.
+A79000-A79FFF (base 16) NOREYA Technology e.U.
+ Parkring 1
+ Raaba-Grambach Styria 8074
+ AT
+
+70-B3-D5 (hex) Motohaus Powersports Limited
+98D000-98DFFF (base 16) Motohaus Powersports Limited
+ Motohaus Powersports Limited, 1a Rose Estate Osborn Way
+ Hook RG27 9UT
+ GB
+
+70-B3-D5 (hex) IMMOLAS
+792000-792FFF (base 16) IMMOLAS
+ Aleje Jerozolimskie 85/21
+ Warszawa 02-001
+ PL
+
+70-B3-D5 (hex) EVPU Defence a.s.
+04F000-04FFFF (base 16) EVPU Defence a.s.
+ Jaktare 1781
+ Uherske Hradiste 686 01
+ CZ
+
+70-B3-D5 (hex) MB connect line GmbH Fernwartungssysteme
+5A4000-5A4FFF (base 16) MB connect line GmbH Fernwartungssysteme
+ Winnettener Straße 6
+ Dinkelsbuehl Bavaria 91550
+ DE
+
70-B3-D5 (hex) DISMUNTEL SAL
92C000-92CFFF (base 16) DISMUNTEL SAL
Pol ind cotes
@@ -22709,12 +23021,6 @@ AA7000-AA7FFF (base 16) ATEME
Bievres IDF 91470
-70-B3-D5 (hex) Farmobile
-13F000-13FFFF (base 16) Farmobile
- 18132 Melrose Dr.
- Bucyrus KS 66013
-
-
70-B3-D5 (hex) Code Blue Corporation
C3F000-C3FFFF (base 16) Code Blue Corporation
259 Hedcor St
@@ -23669,23 +23975,17 @@ A6A000-A6AFFF (base 16) Privafy, Inc
Oslo Oslo 0504
NO
-70-B3-D5 (hex) RCH Vietnam Limited Liability Company
-6BD000-6BDFFF (base 16) RCH Vietnam Limited Liability Company
- Workshop F.01B-2, Lot No. F.01B Long Hau
- Ho Chi Minh City Ho Chi Minh 70000
- VN
-
70-B3-D5 (hex) Gamber Johnson-LLC
E34000-E34FFF (base 16) Gamber Johnson-LLC
3001 Borham Ave
Stevens Point WI 54481
US
-70-B3-D5 (hex) YUYAMA MFG Co.,Ltd
-C2B000-C2BFFF (base 16) YUYAMA MFG Co.,Ltd
- 3-3-1
- TOYONAKASHI OSAKA 561-0841
- JP
+70-B3-D5 (hex) RCH Vietnam Limited Liability Company
+6BD000-6BDFFF (base 16) RCH Vietnam Limited Liability Company
+ Workshop F.01B-2, Lot No. F.01B Long Hau
+ Ho Chi Minh City Ho Chi Minh 70000
+ VN
70-B3-D5 (hex) YUYAMA MFG Co.,Ltd
1F2000-1F2FFF (base 16) YUYAMA MFG Co.,Ltd
@@ -23699,71 +23999,77 @@ C2B000-C2BFFF (base 16) YUYAMA MFG Co.,Ltd
Moscow 105484
RU
+70-B3-D5 (hex) YUYAMA MFG Co.,Ltd
+C2B000-C2BFFF (base 16) YUYAMA MFG Co.,Ltd
+ 3-3-1
+ TOYONAKASHI OSAKA 561-0841
+ JP
+
70-B3-D5 (hex) eSMART Technologies SA
979000-979FFF (base 16) eSMART Technologies SA
Chemin de la Rueyre, 118
Renens VD 1020
CH
-70-B3-D5 (hex) Axnes AS
-65F000-65FFFF (base 16) Axnes AS
- Terje Løvåsvei 1
- Grimstad 4879
- NO
-
70-B3-D5 (hex) Duplomatic MS spa
DE1000-DE1FFF (base 16) Duplomatic MS spa
Via Re Depaolini 24
Parabiago Milan 20015
IT
+70-B3-D5 (hex) Axnes AS
+65F000-65FFFF (base 16) Axnes AS
+ Terje Løvåsvei 1
+ Grimstad 4879
+ NO
+
70-B3-D5 (hex) Nanjing Pingguang Electronic Technology Co., Ltd
541000-541FFF (base 16) Nanjing Pingguang Electronic Technology Co., Ltd
B30/B31 4th Floor, Building#11, Shengtai Road, JiangNing District
NanJing 211100
CN
-70-B3-D5 (hex) PHYZHON Health Inc
-744000-744FFF (base 16) PHYZHON Health Inc
- 180 Blue Ravine Road, suite A
- Folsom CA 95630
- US
-
70-B3-D5 (hex) thingdust AG
3C1000-3C1FFF (base 16) thingdust AG
Moosstrasse 7
Lucerne Lucerne 6003
CH
-70-B3-D5 (hex) Panoramic Power
-53A000-53AFFF (base 16) Panoramic Power
- 15 Atir Yeda
- Kfar Saba 4464312
- IL
-
70-B3-D5 (hex) ALVAT s.r.o.
369000-369FFF (base 16) ALVAT s.r.o.
Chodovska 228/3
Praha 4 14100
CZ
+70-B3-D5 (hex) PHYZHON Health Inc
+744000-744FFF (base 16) PHYZHON Health Inc
+ 180 Blue Ravine Road, suite A
+ Folsom CA 95630
+ US
+
70-B3-D5 (hex) PCB Piezotronics
4CA000-4CAFFF (base 16) PCB Piezotronics
3425 Walden Avenue
Depew NY 14043
US
+70-B3-D5 (hex) Panoramic Power
+53A000-53AFFF (base 16) Panoramic Power
+ 15 Atir Yeda
+ Kfar Saba 4464312
+ IL
+
70-B3-D5 (hex) STEP sarl
481000-481FFF (base 16) STEP sarl
11, avenue Aristide Berges
LANCEY ISERE 38190
FR
-70-B3-D5 (hex) Mianjie Technology
-8FC000-8FCFFF (base 16) Mianjie Technology
- Zhubang2000 Building2 1205
- Beijing 100000
- CN
+70-B3-D5 (hex) ZPAS S.A.
+2D9000-2D9FFF (base 16) ZPAS S.A.
+ Przygorze 209
+ Woliborz Lower Silesian (Dolno?l?skie) 57-431
+ PL
70-B3-D5 (hex) Redstone Sunshine(Beijing)Technology Co.,Ltd.
6C9000-6C9FFF (base 16) Redstone Sunshine(Beijing)Technology Co.,Ltd.
@@ -23771,11 +24077,11 @@ DE1000-DE1FFF (base 16) Duplomatic MS spa
Beijing 100020
CN
-70-B3-D5 (hex) ZPAS S.A.
-2D9000-2D9FFF (base 16) ZPAS S.A.
- Przygorze 209
- Woliborz Lower Silesian (Dolno?l?skie) 57-431
- PL
+70-B3-D5 (hex) Mianjie Technology
+8FC000-8FCFFF (base 16) Mianjie Technology
+ Zhubang2000 Building2 1205
+ Beijing 100000
+ CN
70-B3-D5 (hex) HAI ROBOTICS Co., Ltd.
0B7000-0B7FFF (base 16) HAI ROBOTICS Co., Ltd.
@@ -23801,18 +24107,18 @@ DE1000-DE1FFF (base 16) Duplomatic MS spa
Santa Ana CA 92705
US
-70-B3-D5 (hex) Beijing Aumiwalker technology CO.,LTD
-C7C000-C7CFFF (base 16) Beijing Aumiwalker technology CO.,LTD
- Floor 6, Tower 1, No.1 Zhonghe Road Fengtai Science Park Beijing P.R.C.
- Beijing Beijing 100071
- CN
-
70-B3-D5 (hex) Peter Huber Kaeltemaschinenbau AG
DC4000-DC4FFF (base 16) Peter Huber Kaeltemaschinenbau AG
Werner-von-Siemens-Str. 1
Offenburg Ba-Wue 77656
DE
+70-B3-D5 (hex) Beijing Aumiwalker technology CO.,LTD
+C7C000-C7CFFF (base 16) Beijing Aumiwalker technology CO.,LTD
+ Floor 6, Tower 1, No.1 Zhonghe Road Fengtai Science Park Beijing P.R.C.
+ Beijing Beijing 100071
+ CN
+
70-B3-D5 (hex) Kazdream Technologies LLP
089000-089FFF (base 16) Kazdream Technologies LLP
10, Turkestan Str.
@@ -23825,12 +24131,6 @@ E5A000-E5AFFF (base 16) Cardinal Scales Manufacturing Co
Webb City MO 64870
US
-70-B3-D5 (hex) Military Research Institute
-2F7000-2F7FFF (base 16) Military Research Institute
- Veslarska 230
- Brno 63700
- CZ
-
70-B3-D5 (hex) Farmpro Ltd
17C000-17CFFF (base 16) Farmpro Ltd
806, 28 Digitalro 30gil, Gurogu
@@ -23843,6 +24143,12 @@ E83000-E83FFF (base 16) Talleres de Escoriaza SA
Irun Gipuzkoa 20305
ES
+70-B3-D5 (hex) Military Research Institute
+2F7000-2F7FFF (base 16) Military Research Institute
+ Veslarska 230
+ Brno 63700
+ CZ
+
70-B3-D5 (hex) Network Innovations
DA7000-DA7FFF (base 16) Network Innovations
4950 West Prospect Road
@@ -23855,18 +24161,6 @@ DA7000-DA7FFF (base 16) Network Innovations
Champagne au Mont d'Or Rhône 69543
FR
-70-B3-D5 (hex) Grossenbacher Systeme AG
-5FE000-5FEFFF (base 16) Grossenbacher Systeme AG
- Spinnereistrasse 10
- St. Gallen 9008
- CH
-
-70-B3-D5 (hex) QUISS GmbH
-AAB000-AABFFF (base 16) QUISS GmbH
- Lilienthalstraße 5
- Puchheim 82178
- DE
-
70-B3-D5 (hex) Shanghai Qinyue Communication Technology Co., Ltd.
B57000-B57FFF (base 16) Shanghai Qinyue Communication Technology Co., Ltd.
Room 101,Building 51,Lane 588,ShuPing Road,Jiading District
@@ -23879,18 +24173,24 @@ B57000-B57FFF (base 16) Shanghai Qinyue Communication Technology Co., Ltd.
Oslo Select One 1405
NO
+70-B3-D5 (hex) QUISS GmbH
+AAB000-AABFFF (base 16) QUISS GmbH
+ Lilienthalstraße 5
+ Puchheim 82178
+ DE
+
+70-B3-D5 (hex) Grossenbacher Systeme AG
+5FE000-5FEFFF (base 16) Grossenbacher Systeme AG
+ Spinnereistrasse 10
+ St. Gallen 9008
+ CH
+
70-B3-D5 (hex) Accolade Technology Inc
87A000-87AFFF (base 16) Accolade Technology Inc
124 Grove Street, Suite 315
FRANKLIN MA 02038
US
-70-B3-D5 (hex) Loehnert Elektronik GmbH
-8A3000-8A3FFF (base 16) Loehnert Elektronik GmbH
- Oskar-Sembach-Ring 18
- Lauf a.d.Peg. Bavaria 91207
- DE
-
70-B3-D5 (hex) Adcole Space
922000-922FFF (base 16) Adcole Space
734 Forest St.,Suite #100
@@ -23909,11 +24209,17 @@ B57000-B57FFF (base 16) Shanghai Qinyue Communication Technology Co., Ltd.
Dinkelsbuehl Bavaria 91550
DE
-70-B3-D5 (hex) Tobi Tribe Inc
-D68000-D68FFF (base 16) Tobi Tribe Inc
- 13263 MIDDLETON FARM LN,
- HERNDON, VA 20171
- US
+70-B3-D5 (hex) Loehnert Elektronik GmbH
+8A3000-8A3FFF (base 16) Loehnert Elektronik GmbH
+ Oskar-Sembach-Ring 18
+ Lauf a.d.Peg. Bavaria 91207
+ DE
+
+70-B3-D5 (hex) plc-tec AG
+095000-095FFF (base 16) plc-tec AG
+ Panoramastrasse 5
+ Hägglingen 5607
+ CH
70-B3-D5 (hex) Edge Power Solutions
612000-612FFF (base 16) Edge Power Solutions
@@ -23921,11 +24227,11 @@ D68000-D68FFF (base 16) Tobi Tribe Inc
Melbourne FL 32940
US
-70-B3-D5 (hex) Eurotempest AB
-E37000-E37FFF (base 16) Eurotempest AB
- Algolgatan 10
- Linköping Other 58335
- SE
+70-B3-D5 (hex) Tobi Tribe Inc
+D68000-D68FFF (base 16) Tobi Tribe Inc
+ 13263 MIDDLETON FARM LN,
+ HERNDON, VA 20171
+ US
70-B3-D5 (hex) Antek Technology
9E5000-9E5FFF (base 16) Antek Technology
@@ -23933,17 +24239,11 @@ E37000-E37FFF (base 16) Eurotempest AB
Taipei 100
TW
-70-B3-D5 (hex) plc-tec AG
-095000-095FFF (base 16) plc-tec AG
- Panoramastrasse 5
- Hägglingen 5607
- CH
-
-70-B3-D5 (hex) Weihai Weigao Medical Imaging Technology Co., Ltd
-534000-534FFF (base 16) Weihai Weigao Medical Imaging Technology Co., Ltd
- No. 566-1, Qishan Road, Lingang Economic and Technological Development Zone
- Weihai Shandong 264210
- CN
+70-B3-D5 (hex) Eurotempest AB
+E37000-E37FFF (base 16) Eurotempest AB
+ Algolgatan 10
+ Linköping Other 58335
+ SE
70-B3-D5 (hex) ARECA EMBEDDED SYSTEMS PVT LTD
F15000-F15FFF (base 16) ARECA EMBEDDED SYSTEMS PVT LTD
@@ -23963,6 +24263,12 @@ F59000-F59FFF (base 16) KOREA SPECTRAL PRODUCTS
Incheon 21999
KR
+70-B3-D5 (hex) Weihai Weigao Medical Imaging Technology Co., Ltd
+534000-534FFF (base 16) Weihai Weigao Medical Imaging Technology Co., Ltd
+ No. 566-1, Qishan Road, Lingang Economic and Technological Development Zone
+ Weihai Shandong 264210
+ CN
+
70-B3-D5 (hex) LiveCopper Inc.
9E9000-9E9FFF (base 16) LiveCopper Inc.
600 Greer Rd
@@ -23999,6 +24305,18 @@ F59000-F59FFF (base 16) KOREA SPECTRAL PRODUCTS
Shenzhen Guangdong 518132
CN
+70-B3-D5 (hex) CAST Group of Companies Inc.
+BDE000-BDEFFF (base 16) CAST Group of Companies Inc.
+ 35 Ripley Ave.
+ Toronto Ontario M6S3P2
+ CA
+
+70-B3-D5 (hex) Momentum Data Systems
+116000-116FFF (base 16) Momentum Data Systems
+ 5432 Bolsa Ave Unit B
+ Huntington Beach CA 92649
+ US
+
70-B3-D5 (hex) Camozzi Automation SpA
3AB000-3ABFFF (base 16) Camozzi Automation SpA
Via Eritrea 20/I
@@ -24017,42 +24335,36 @@ F59000-F59FFF (base 16) KOREA SPECTRAL PRODUCTS
Nürnberg Bavaria 90441
DE
-70-B3-D5 (hex) CAST Group of Companies Inc.
-BDE000-BDEFFF (base 16) CAST Group of Companies Inc.
- 35 Ripley Ave.
- Toronto Ontario M6S3P2
- CA
-
-70-B3-D5 (hex) Momentum Data Systems
-116000-116FFF (base 16) Momentum Data Systems
- 5432 Bolsa Ave Unit B
- Huntington Beach CA 92649
- US
-
70-B3-D5 (hex) Arris
988000-988FFF (base 16) Arris
2500 Walsh Ave.
Santa Clara CA 95014
US
-70-B3-D5 (hex) Transit Solutions, LLC.
-4E2000-4E2FFF (base 16) Transit Solutions, LLC.
- 114 West Grandview Avenue
- Zelienople PA 16063
- US
-
70-B3-D5 (hex) Xirgo Technologies LLC
646000-646FFF (base 16) Xirgo Technologies LLC
188 Camino Ruiz
Camarillo CA 93012
US
+70-B3-D5 (hex) Transit Solutions, LLC.
+4E2000-4E2FFF (base 16) Transit Solutions, LLC.
+ 114 West Grandview Avenue
+ Zelienople PA 16063
+ US
+
70-B3-D5 (hex) JD Squared, Inc.
562000-562FFF (base 16) JD Squared, Inc.
915 Riverview Drive
Johnson City TN 37601
US
+70-B3-D5 (hex) VOCAL Technologies Ltd.
+7B5000-7B5FFF (base 16) VOCAL Technologies Ltd.
+ 520 LEE ENTRANCE STE 202
+ BUFFALO NY 142282583
+ US
+
70-B3-D5 (hex) Deltronic Security AB
CEC000-CECFFF (base 16) Deltronic Security AB
E A Rosengrensgata 4
@@ -24065,12 +24377,6 @@ F90000-F90FFF (base 16) Atman Tecnologia Ltda
Vitória Espírito Santo 29070-010
BR
-70-B3-D5 (hex) VOCAL Technologies Ltd.
-7B5000-7B5FFF (base 16) VOCAL Technologies Ltd.
- 520 LEE ENTRANCE STE 202
- BUFFALO NY 142282583
- US
-
70-B3-D5 (hex) Shenyang TECHE Technology Co.,Ltd
47D000-47DFFF (base 16) Shenyang TECHE Technology Co.,Ltd
oom2302, Changfeng building, 26-2 Pangjiang street, Dadong District
@@ -24083,12 +24389,6 @@ F90000-F90FFF (base 16) Atman Tecnologia Ltda
Helsingborg 25225
SE
-70-B3-D5 (hex) Larraioz Elektronika
-176000-176FFF (base 16) Larraioz Elektronika
- FACT Larraioz, Ctra GI3162 km 2,2
- Zarautz 20800
- ES
-
70-B3-D5 (hex) Omsk Manufacturing Association named after A.S. Popov
A61000-A61FFF (base 16) Omsk Manufacturing Association named after A.S. Popov
10 Let Oktyabrya str, 195
@@ -24101,11 +24401,11 @@ A61000-A61FFF (base 16) Omsk Manufacturing Association named after A.S. Pop
VENDARGUES 34740
FR
-70-B3-D5 (hex) ICsec S.A.
-395000-395FFF (base 16) ICsec S.A.
- Wichrowa 1A
- Poznan 60-446
- PL
+70-B3-D5 (hex) Larraioz Elektronika
+176000-176FFF (base 16) Larraioz Elektronika
+ FACT Larraioz, Ctra GI3162 km 2,2
+ Zarautz 20800
+ ES
70-B3-D5 (hex) Potter Electric Signal Co. LLC
7A4000-7A4FFF (base 16) Potter Electric Signal Co. LLC
@@ -24125,11 +24425,17 @@ F5D000-F5DFFF (base 16) Potter Electric Signal Co. LLC
Hazelwood MO 63042
US
-70-B3-D5 (hex) KMtronic ltd
-540000-540FFF (base 16) KMtronic ltd
- Dobri Czintulov 28A str.
- Gorna Oryahovica VT 5100
- BG
+70-B3-D5 (hex) ICsec S.A.
+395000-395FFF (base 16) ICsec S.A.
+ Wichrowa 1A
+ Poznan 60-446
+ PL
+
+70-B3-D5 (hex) SOtM
+CC7000-CC7FFF (base 16) SOtM
+ 202 SSANGYONG-DONG 84/9 WOLBONG 4RO SEOBUK GU
+ Cheonan Chungnam 31171
+ KR
70-B3-D5 (hex) MIJIENETRTECH CO.,LTD
DCB000-DCBFFF (base 16) MIJIENETRTECH CO.,LTD
@@ -24143,8 +24449,65 @@ C28000-C28FFF (base 16) Mitech Integrated Systems Inc.
Toronto ON M2R3R3
CA
-70-B3-D5 (hex) SOtM
-CC7000-CC7FFF (base 16) SOtM
- 202 SSANGYONG-DONG 84/9 WOLBONG 4RO SEOBUK GU
- Cheonan Chungnam 31171
+70-B3-D5 (hex) KMtronic ltd
+540000-540FFF (base 16) KMtronic ltd
+ Dobri Czintulov 28A str.
+ Gorna Oryahovica VT 5100
+ BG
+
+70-B3-D5 (hex) Terratel Technology s.r.o.
+31A000-31AFFF (base 16) Terratel Technology s.r.o.
+ Dukelska 2192
+ Benesov CZ 25601
+ CZ
+
+70-B3-D5 (hex) Teledyne API
+F9D000-F9DFFF (base 16) Teledyne API
+ 9970 Carroll Canyon Road
+ San Diego CA 92131-1106
+ US
+
+70-B3-D5 (hex) QIT Co., Ltd.
+81C000-81CFFF (base 16) QIT Co., Ltd.
+ #713, ACE Gwanggyo Tower1, 17, Daehak 4-ro, Yeongtong-gu
+ Suwon-si Gyeonggi-do 16226
+ KR
+
+70-B3-D5 (hex) Farmobile, LLC
+13F000-13FFFF (base 16) Farmobile, LLC
+ 4001 West 114th Street Suite 300
+ Leawood KS 66211
+ US
+
+70-B3-D5 (hex) PULOON Tech
+DB9000-DB9FFF (base 16) PULOON Tech
+ 23-10, Hyoryeong-ro 60 gil, Seocho-gu, Seoul, korea
+ seoul 06721
KR
+
+70-B3-D5 (hex) Polskie Sady Nowe Podole Sp. z o.o.
+C30000-C30FFF (base 16) Polskie Sady Nowe Podole Sp. z o.o.
+ Rzymowskiego 17/48
+ Warsaw Mazowieckie 02-297
+ PL
+
+70-B3-D5 (hex) Suzhou ZhiCai Co.,Ltd.
+E13000-E13FFF (base 16) Suzhou ZhiCai Co.,Ltd.
+ Room 1902,Block A,Global Fortune Plaza,88 Suhui Road,Suzhou Industrial Park
+ SuZhou Jiangsu 215021
+ CN
+
+70-B3-D5 (hex) Private
+4DA000-4DAFFF (base 16) Private
+
+70-B3-D5 (hex) devAIs s.r.l.
+A16000-A16FFF (base 16) devAIs s.r.l.
+ Via Carlo Goldoni 1
+ Milano Milano 20129
+ IT
+
+70-B3-D5 (hex) Naval Group
+B27000-B27FFF (base 16) Naval Group
+ 40-42 Rue Du Docteur Finlay
+ PARIS CEDEX 15 75732
+ FR
diff --git a/hwdb.d/meson.build b/hwdb.d/meson.build
index 5c77387a26..6fcb364acd 100644
--- a/hwdb.d/meson.build
+++ b/hwdb.d/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
# Those files right now are not supported by the grammar. Also,
# they are very long but quite repetitive and the parser is not very fast.
@@ -42,12 +42,14 @@ if conf.get('ENABLE_HWDB') == 1
hwdb_files_test,
install_dir : udevhwdbdir)
- meson.add_install_script('sh', '-c',
- mkdir_p.format(join_paths(sysconfdir, 'udev/hwdb.d')))
+ if install_sysconfdir
+ meson.add_install_script('sh', '-c',
+ mkdir_p.format(join_paths(sysconfdir, 'udev/hwdb.d')))
- meson.add_install_script('sh', '-c',
- 'test -n "$DESTDIR" || @0@/systemd-hwdb update'
- .format(rootbindir))
+ meson.add_install_script('sh', '-c',
+ 'test -n "$DESTDIR" || @0@/systemd-hwdb update'
+ .format(rootbindir))
+ endif
if want_tests != 'false'
parse_hwdb_py = find_program('parse_hwdb.py')
diff --git a/hwdb.d/parse_hwdb.py b/hwdb.d/parse_hwdb.py
index 4174c7598f..ed07224b3c 100755
--- a/hwdb.d/parse_hwdb.py
+++ b/hwdb.d/parse_hwdb.py
@@ -202,9 +202,8 @@ def check_matches(groups):
except ParseBaseException as e:
error('Pattern {!r} is invalid: {}', rest, e)
continue
-
- if not rest.endswith(':*'):
- error("pattern {!r} does not end with ':*'", match)
+ if rest[-1] not in '*:':
+ error('pattern {} does not end with "*" or ":"', match)
matches.sort()
prev = None
diff --git a/hwdb.d/pci.ids b/hwdb.d/pci.ids
index e1dc3da818..05c6b5d266 100644
--- a/hwdb.d/pci.ids
+++ b/hwdb.d/pci.ids
@@ -1,8 +1,8 @@
#
# List of PCI ID's
#
-# Version: 2020.10.11
-# Date: 2020-10-11 03:15:01
+# Version: 2020.11.14
+# Date: 2020-11-14 03:15:02
#
# Maintained by Albert Pool, Martin Mares, and other volunteers from
# the PCI ID Project at https://pci-ids.ucw.cz/.
@@ -70,6 +70,8 @@
018a LevelOne
0106 FPC-0106TX misprogrammed [RTL81xx]
01de Oxide Computer Company
+# probably misprogrammed Intel Atom C2338 on Dell 0K8Y0N board
+0200 Dell (wrong ID)
# 021b is not Compaq but there is a board misprogrammed
021b Compaq Computer Corporation
8139 HNE-300 (RealTek RTL8139c) [iPaq Networking]
@@ -703,6 +705,8 @@
1d49 0200 ThinkSystem 430-8i SAS/SATA 12Gb HBA
1d49 0202 ThinkSystem 430-8e SAS/SATA 12Gb HBA
1d49 0204 ThinkSystem 430-8i SAS/SATA 12Gb Dense HBA
+# PCIe switch SES management endpoint
+ 00b2 PEX880xx PCIe Gen 4 Switch SES management endpoint
00be SAS3504 Fusion-MPT Tri-Mode RAID On Chip (ROC)
00bf SAS3404 Fusion-MPT Tri-Mode I/O Controller Chip (IOC)
00c0 SAS3324 PCI-Express Fusion-MPT SAS-3
@@ -2648,6 +2652,7 @@
67e9 Baffin [Polaris11]
67eb Baffin [Radeon Pro V5300X]
67ef Baffin [Radeon RX 460/560D / Pro 450/455/460/555/555X/560/560X]
+ 1025 1367 RX560X 4GB
1028 1703 RX 560D OEM OC 2 GB
103c 3421 Radeon RX 460
1043 0561 AREZ Radeon RX 560
@@ -2725,6 +2730,7 @@
17aa 3643 Radeon R9 A375
17aa 3801 Radeon R9 M275
17aa 3824 Radeon R9 M375
+ 1da2 e26a Radeon R7 250
6821 Venus XT [Radeon HD 8870M / R9 M270X/M370X]
1002 031e FirePro SX4000
1028 05cc FirePro M5100
@@ -3410,6 +3416,7 @@
148c 9380 Radeon R9 380
# Make naming scheme consistent
174b e308 Radeon R9 380 Nitro 4G D5
+ 174b e315 Radeon R9 285
693b Tonga PRO GL [FirePro W7100 / Barco MXRT-7600]
694c Polaris 22 XT [Radeon RX Vega M GH]
694e Polaris 22 XL [Radeon RX Vega M GL]
@@ -3583,6 +3590,10 @@
7347 Navi 14 [Radeon Pro W5500M]
734f Navi 14 [Radeon Pro W5300M]
7360 Navi 12 [Radeon Pro 5600M]
+ 73bf Navi 21 [Radeon RX 6800/6800 XT / 6900 XT]
+ 73c3 Navi 22
+ 73df Navi 22
+ 73ff Navi 23
7833 RS350 Host Bridge
7834 RS350 [Radeon 9100 PRO/XT IGP]
7835 RS350M [Mobility Radeon 9000 IGP]
@@ -9463,7 +9474,7 @@
1682 211c GeForce 6600 256MB DDR DUAL DVI TV
00f3 NV43 [GeForce 6200]
00f4 NV43 [GeForce 6600 LE]
- 00f5 G71 [GeForce 7800 GS AGP]
+ 00f5 G70/G71 [GeForce 7800 GS AGP]
00f6 NV43 [GeForce 6800 GS/XT]
1682 217e XFX GeForce 6800 XTreme 256MB DDR3 AGP
00f8 NV45GL [Quadro FX 3400/4400]
@@ -11699,6 +11710,7 @@
128a GK208B
128b GK208B [GeForce GT 710]
1043 85f7 GT710-SL-1GD5
+ 1043 8770 GT710-4H-SL-2GD5
128c GK208B
1290 GK208M [GeForce GT 730M]
103c 2afa GeForce GT 730A
@@ -11816,6 +11828,7 @@
13fb GM204GLM [Quadro M5500]
1401 GM206 [GeForce GTX 960]
1402 GM206 [GeForce GTX 950]
+ 1404 GM206 [GeForce GTX 960 FAKE]
1406 GM206 [GeForce GTX 960 OEM]
1407 GM206 [GeForce GTX 750 v2]
1427 GM206M [GeForce GTX 965M]
@@ -11921,6 +11934,7 @@
1c30 GP106GL [Quadro P2000]
1c31 GP106GL [Quadro P2200]
1c35 GP106
+ 1c36 GP106
1c60 GP106BM [GeForce GTX 1060 Mobile 6GB]
103c 8390 GeForce GTX 1060 Max-Q 6GB
1c61 GP106BM [GeForce GTX 1050 Ti Mobile]
@@ -12073,6 +12087,7 @@
1fd9 TU117BM [GeForce GTX 1650 Mobile Refresh]
1ff9 TU117GLM [Quadro T1000 Mobile]
20b0 GA100 [A100 SXM4 40GB]
+ 20b1 GA100 [A100 PCIe 40GB]
20be GA100 [GRID A100A]
20bf GA100 [GRID A100B]
20f1 GA100 [A100 PCIe 40GB]
@@ -12088,7 +12103,7 @@
21c4 TU116 [GeForce GTX 1660 SUPER]
21d1 TU116BM [GeForce GTX 1660 Ti Mobile]
2204 GA102 [GeForce RTX 3090]
- 2206 GA102 [GeForce RTX 3080 10GB / 20GB]
+ 2206 GA102 [GeForce RTX 3080]
10de 146d GA102 [GeForce RTX 3080 20GB]
1462 3892 RTX 3080 10GB GAMING X TRIO
222b GA102 [GeForce RTX 3090 Engineering Sample]
@@ -12097,12 +12112,19 @@
223f GA102GL
2482 GA104 [GeForce RTX 3070 Ti]
2484 GA104 [GeForce RTX 3070]
+ 10de 146b GA104 [GeForce RTX 3070]
+ 10de 14ae GA104 [GeForce RTX 3070 16GB]
2486 GA104 [GeForce RTX 3060 Ti]
- 249c GA104M [GeForce RTX 3070 Mobile]
+ 249c GA104M [GeForce RTX 3070 Mobile / Max-Q 8GB/16GB]
249d GA104M [GeForce RTX 3070 Mobile / Max-Q]
+ 24ac GA104 [GeForce RTX 30x0 Engineering Sample]
+ 24ad GA104 [GeForce RTX 3060 Engineering Sample]
24af GA104 [GeForce RTX 3070 Engineering Sample]
24bf GA104 [GeForce RTX 3070 Engineering Sample]
+ 24dc GA104M [GeForce RTX 3070 Mobile 16GB]
+ 24dd GA104M [GeForce RTX 3070 Mobile / Max-Q]
252f GA106 [GeForce RTX 3060 Engineering Sample]
+ 25af GA107 [GeForce RTX 3050 Engineering Sample]
10df Emulex Corporation
0720 OneConnect NIC (Skyhawk)
103c 1934 FlexFabric 20Gb 2-port 650M Adapter
@@ -12334,6 +12356,7 @@
5288 RTS5288 PCI Express Card Reader
5289 RTL8411 PCI Express Card Reader
1043 1457 K55A Laptop
+ 5762 RTS5763DL NVMe SSD Controller
8029 RTL-8029(AS)
10b8 2011 EZ-Card (SMC1208)
10ec 8029 RTL-8029(AS)
@@ -14021,6 +14044,8 @@
1137 00ce VIC 1225T PCIe Management Controller
1137 012e VIC 1227 PCIe Management Controller
1137 014d VIC 1385 PCIe Management Controller
+ 1137 0217 VIC 1455 PCIe Management Controller
+ 1137 0218 VIC 1457 PCIe Management Controller
0043 VIC Ethernet NIC
1137 0047 VIC P81E PCIe Ethernet NIC
1137 0048 VIC M81KR Mezzanine Ethernet NIC
@@ -15779,6 +15804,11 @@
125b Asix Electronics Corporation
1400 AX88141 Fast Ethernet Controller
1186 1100 AX8814X Based PCI Fast Ethernet Adapter
+ 9100 AX99100 PCIe to Multi I/O Controller
+ a000 1000 Serial Port
+ a000 2000 Parallel Port
+ a000 6000 SPI
+ a000 7000 Local Bus
125c Aurora Technologies, Inc.
0101 Saturn 4520P
0640 Aries 16000P
@@ -19524,6 +19554,7 @@
0070 6902 WinTV HVR-4000-HD
0070 7801 WinTV HVR-1800 MCE
0070 9001 Nova-T DVB-T
+ 0070 9002 Nova-T DVB-T Model 909
0070 9200 Nova-SE2 DVB-S
0070 9202 Nova-S-Plus DVB-S
0070 9402 WinTV-HVR1100 DVB-T/Hybrid
@@ -20231,8 +20262,14 @@
15b7 Sandisk Corp
2001 Skyhawk Series NVME SSD
5001 WD Black NVMe SSD
- 5002 WD Black 2018/PC SN720 NVMe SSD
- 5003 WD Black 2018/PC SN520 NVMe SSD
+ 5002 WD Black 2018 / PC SN720 NVMe SSD
+ 5003 WD Black 2018 / PC SN520 NVMe SSD
+ 5004 PC SN520 NVMe SSD
+ 5005 PC SN520 NVMe SSD
+ 5006 WD Black 2019/PC SN750 NVMe SSD
+ 5009 WD Blue SN550 NVMe SSD
+ 15b7 5009 WD Blue SN550 NVMe SSD
+ 500d WD Ultrastar DC SN340 NVMe SSD
15b8 ADDI-DATA GmbH
1001 APCI1516 SP controller (16 digi outputs)
1003 APCI1032 SP controller (32 digi inputs w/ opto coupler)
@@ -21718,6 +21755,8 @@
0185 NT40A01 Network Adapter
01a5 NT200A01 Network Adapter
01c5 NT200A02 Network Adapter
+ 01d5 NT50B01 Network Adapter
+ 01e5 NT100A01 Network Adapter
18f6 NextIO
1000 [Nexsis] Switch Virtual P2P PCIe Bridge
1001 [Texsis] Switch Virtual P2P PCIe Bridge
@@ -22104,12 +22143,15 @@
1974 Star Electronics GmbH & Co. KG
0009 FlexCard PMC-II
0011 FlexCard PMC-II Ethernet
+ 0018 FlexCard PXIe3
+ 0019 FlexCard PCIe3
1976 TRENDnet
1977 Parsec
197b JMicron Technology Corp.
0250 JMC250 PCI Express Gigabit Ethernet Controller
0260 JMC260 PCI Express Fast Ethernet Controller
0368 JMB368 IDE controller
+ 0585 JMB58x AHCI SATA controller
2360 JMB360 AHCI Controller
2361 JMB361 AHCI/IDE
1462 7235 P965 Neo MS-7235 mainboard
@@ -22254,7 +22296,7 @@
19e5 d303 Hi1822 SP522 (2*8G FC)
19e5 d306 Hi1822 SP523 (2*8G FC)
1710 iBMA Virtual Network Adapter
- 1711 Hi1710 [iBMC Intelligent Management system chip w/VGA support]
+ 1711 Hi171x Series [iBMC Intelligent Management system chip w/VGA support]
1822 Hi1822 Family (4*25GE)
19e5 d129 Hi1822 SP570 (4*25GE)
19e5 d136 Hi1822 SP580 (4*25GE)
@@ -22355,13 +22397,16 @@
1a4a SLAC National Accelerator Lab TID-AIR
1000 MCOR Power Supply Controller
1010 AMC EVR - Stockholm Timing Board
- 1020 Cluster On Board (COB) Ethernet Switch
+ 1030 PGPCard - Gen3 GIGe Interface
2000 PGPCard - 4 Lane
2001 PGPCard - 8 Lane Plus EVR
2010 PCI-Express EVR
-# PC-260-101-03
- 2020 PGP-GEN3 PCIe
+ 2011 PCI-Express EVR - TPR Version
+ 2020 PGP-GEN3 PCIe - 8 Lane Plus EVR
2030 AXI Stream DAQ PCIe card
+ 2040 EXO PCIe TEM
+ 3000 COB DTM V1
+ 3001 COB DTM V2
1a51 Hectronic AB
1a55 Rohde & Schwarz DVS GmbH
0010 SDStationOEM
@@ -22568,10 +22613,12 @@
1b13 Jaton Corp
1b1a K&F Computing Research Co.
0e70 GRAPE
+1b1c Corsair
1b21 ASMedia Technology Inc.
0611 ASM1061 SATA IDE Controller
0612 ASM1062 Serial ATA Controller
1849 0612 Motherboard
+ 1040 ASM1040 XHCI Controller
1042 ASM1042 SuperSpeed USB Host Controller
1043 1059 K53SM motherboard
1043 8488 P8B WS Motherboard
@@ -22651,6 +22698,8 @@
1b4b Marvell Technology Group Ltd.
0640 88SE9128 SATA III 6Gb/s RAID Controller
2241 88NR2241 Non-Volatile memory controller
+ 1028 2112 BOSS-N1 Monolithic
+ 1028 2113 BOSS-N1 Modular
1d49 0306 ThinkSystem M.2 NVMe 2-Bay RAID Enablement Kit
1d49 0307 ThinkSystem 7mm NVMe 2-Bay Rear RAID Enablement Kit
9120 88SE9120 SATA 6Gb/s Controller
@@ -22720,6 +22769,16 @@
1b94 Signatec / Dynamic Signals Corp
e400 PX14400 Dual Xilinx Virtex5 based Digitizer
1b96 Western Digital
+ 2200 Ultrastar DC SN630 NVMe SSD
+ 2201 Ultrastar DC SN630 NVMe SSD
+ 2300 Ultrastar DC SN840 NVMe SSD
+ 2400 Ultrastar DC SN640 NVMe SSD
+ 2401 Ultrastar DC SN640 NVMe SSD
+ 2402 Ultrastar DC SN640 NVMe SSD
+ 2404 Ultrastar DC SN640 NVMe SSD
+ 2500 Ultrastar DC SN840 NVMe SSD
+ 3714 PC SN730 NVMe SSD
+ 3734 PC SN730 NVMe SSD
1b9a XAVi Technologies Corp.
1baa QNAP Systems, Inc.
1bad ReFLEX CES
@@ -22894,8 +22953,10 @@
1285 PC300 NVMe Solid State Drive 1TB
1327 BC501 NVMe Solid State Drive 512GB
1504 SC300 512GB M.2 2280 SATA Solid State Drive
+ 243b PE6110 NVMe Solid State Drive
+ 1c5c 0100 PE6110 NVMe Solid State Drive
2839 PE8000 Series NVMe Solid State Drive
- 0100 1c5c PE8000 Series NVMe Solid State Drive
+ 1c5c 0100 PE8000 Series NVMe Solid State Drive
1c5f Beijing Memblaze Technology Co. Ltd.
000d PBlaze5 520/526 AIC
003d PBlaze5 920/926 AIC
@@ -22956,6 +23017,7 @@
0305 Simulyzer-RT CompactPCI Serial CAN-1 card
# supports 8x CAN (-FD) interfaces
0306 Simulyzer-RT CompactPCI Serial CAN-2 card (CAN-FD)
+ 0307 Simulyzer-RT CompactPCI Serial DIO-2 card [Xilinx Zynq UltraScale+]
1cd7 Nanjing Magewell Electronics Co., Ltd.
0010 Pro Capture Endpoint
0014 PRO CAPTURE AIO 4K PLUS
@@ -23130,6 +23192,8 @@
1d78 3105 D5457 U.2 3.2TB NVMe SSD
1d78 3107 D5457 U.2 6.4TB NVMe SSD
1d7c Aerotech, Inc.
+# Fiber-optic HyperWire motion control bus from Aerotech.
+ 0001 HyperWire Adapter
1d82 NETINT Technologies Inc.
0101 Codensity D400 SSD
0102 Codensity D408 PCIe Gen4 NVMe SSD
@@ -23178,6 +23242,7 @@
0011 IO Bridge
1da1 Teko Telecom S.r.l.
1da2 Sapphire Technology Limited
+ e26a Radeon R7 250
1da3 Habana Labs Ltd.
0001 HL-1000 AI Inference Accelerator [Goya]
# PCIe accelerator card for Deep Learning training tasks
@@ -23315,6 +23380,8 @@
1028 210f Dell Ent NVMe FIPS CM6 MU 3.2TB
1028 2110 Dell Ent NVMe FIPS CM6 MU 6.4TB
1e0f 0001 Generic NVMe CM6 RI 3.84TB
+ 0009 NVMe SSD
+ 1e0f 0001 Toshiba RC500 NVMe SSD 500GB
1e17 Arnold & Richter Cine Technik GmbH & Co. Betriebs KG
1e24 Squirrels Research Labs
0101 Acorn CLE-101
@@ -23330,9 +23397,38 @@
1e26 Fujitsu Client Computing Limited
1e36 Shanghai Enflame Technology Co. Ltd
0001 T10 [CloudBlazer]
+ 0002 T11 [CloudBlazer]
+ 0003 T10s [CloudBlazer]
+ 8011 I10 [CloudBlazer]
# nee Thinci, Inc
1e38 Blaize, Inc
0102 Xplorer X1600
+1e3b Shenzhen DAPU Microelectronics Co., Ltd
+ 1098 Haishen 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 0005 Enterprise NVMe SSD U.2 1.92TB (H2200)
+ 1e3b 0009 Enterprise NVMe SSD U.2 0.8TB (H3100)
+ 1e3b 000a Enterprise NVMe SSD U.2 0.96TB (H3200)
+ 1e3b 000c Enterprise NVMe SSD U.2 1.6TB (H3100)
+ 1e3b 000d Enterprise NVMe SSD U.2 1.92TB (H3200)
+ 1e3b 0014 Enterprise NVMe SSD U.2 3.2TB (H3100)
+ 1e3b 0015 Enterprise NVMe SSD U.2 3.84TB (H3200)
+ 1e3b 0021 Enterprise NVMe SSD U.2 6.4TB (H3100)
+ 1e3b 0022 Enterprise NVMe SSD U.2 7.68TB (H3200)
+ 1e3b 0061 Enterprise NVMe SSD HHHL 0.8TB (H2100)
+ 1e3b 0062 Enterprise NVMe SSD HHHL 0.96TB (H2200)
+ 1e3b 0064 Enterprise NVMe SSD HHHL 1.6TB (H2100)
+ 1e3b 0065 Enterprise NVMe SSD HHHL 1.92TB (H2200)
+ 1e3b 006c Enterprise NVMe SSD HHHL 0.8TB (H3100)
+ 1e3b 006d Enterprise NVMe SSD HHHL 0.96TB (H3200)
+ 1e3b 006f Enterprise NVMe SSD HHHL 1.6TB (H3100)
+ 1e3b 0070 Enterprise NVMe SSD HHHL 1.92TB (H3200)
+ 1e3b 007c Enterprise NVMe SSD HHHL 3.2TB (H3100)
+ 1e3b 007d Enterprise NVMe SSD HHHL 3.84TB (H3200)
+ 1e3b 007f Enterprise NVMe SSD HHHL 6.4TB (H3100)
+ 1e3b 0080 Enterprise NVMe SSD HHHL 7.68TB (H3200)
1e3d Burlywood, Inc
1e49 Yangtze Memory Technologies Co.,Ltd
1e4b MAXIO Technology (Hangzhou) Ltd.
@@ -23343,13 +23439,14 @@
1202 NVMe SSD Controller MAP1202
1601 NVMe SSD Controller MAP1601
1e4c GSI Technology
-# Associative Processing Unit chip
- 0010 Gemini [ Lida ]
+# Associative Processing Unit (APU)
+ 0010 APU [Leda-G]
1e4c 0120 SE120
1e57 Beijing Panyi Technology Co., Ltd
0100 The device has already been deleted.
0000 0100 PY8800 64GB Accelerator
1e6b Axiado Corp.
+1e7b Dataland
1e7c Brainchip Inc
bca1 AKD1000 Neural Network Coprocessor [Akida]
1e85 Heitec AG
@@ -23359,6 +23456,8 @@
# aka SED Systems
1e94 Calian SED
1e95 Solid State Storage Technology Corporation
+1eab Hefei DATANG Storage Technology Co.,LTD.
+1eae XFX Limited
1eb1 VeriSilicon Inc
1001 Video Accelerator
# nee Tumsan Oy
@@ -23442,7 +23541,7 @@
2348 Racore
2010 8142 100VG/AnyLAN
2646 Kingston Technology Company, Inc.
- 2263 A2000, M.2, 500GB
+ 2263 A2000 NVMe SSD
270b Xantel Corporation
270f Chaintech Computer Co. Ltd
2711 AVID Technology Inc.
@@ -24864,6 +24963,8 @@
1028 1fe7 Express Flash NVMe 3.2TB 2.5" U.2 (P4600)
1028 1fe8 Express Flash NVMe 2.0TB HHHL AIC (P4600)
1028 1fe9 Express Flash NVMe 4.0TB HHHL AIC (P4600)
+ 0b26 Thunderbolt 4 Bridge [Goshen Ridge 2020]
+ 0b27 Thunderbolt 4 USB Controller [Goshen Ridge 2020]
0b60 NVMe DC SSD [3DNAND, Beta Rock Controller]
1028 2060 NVMe SED MU U.2 1.6TB (P5600)
1028 2061 NVMe SED MU U.2 3.2TB (P5600)
@@ -25902,6 +26003,10 @@
123f 82466GX Integrated Hot-Plug Controller (IHPC)
1240 82752 (752) AGP Graphics Accelerator
124b 82380FB (MPCI2) Mobile Docking Controller
+ 124c Ethernet Connection E823-L for backplane
+ 124d Ethernet Connection E823-L for SFP
+ 124e Ethernet Connection E823-L/X557-AT 10GBASE-T
+ 124f Ethernet Connection E823-L 1GbE
1250 430HX - 82439HX TXC [Triton II]
1360 82806AA PCI64 Hub PCI Bridge
1361 82806AA PCI64 Hub Controller (HRes)
@@ -25953,6 +26058,7 @@
151b CVL2510 Thunderbolt Controller [Light Peak 2C 2010]
151c 82599 10 Gigabit TN Network Connection
108e 7b13 Dual 10GBASE-T LP
+ 151d Ethernet Connection E823-L for QSFP
1520 I350 Ethernet Controller Virtual Function
1521 I350 Gigabit Network Connection
1028 0602 Gigabit 2P I350-t LOM
@@ -26395,6 +26501,7 @@
8086 0001 Ethernet Network Adapter I225-T1
8086 0002 Ethernet Network Adapter I225-T1
15f3 Ethernet Controller I225-V
+ 8086 0003 Intel(R) Ethernet Controller (3) I225-V
15f4 Ethernet Connection (15) I219-LM
15f5 Ethernet Connection (15) I219-V
15f6 I210 Gigabit Ethernet Connection
@@ -26459,6 +26566,15 @@
163d Broadwell-U Integrated Graphics
163e Broadwell-U Integrated Graphics
1889 Ethernet Adaptive Virtual Function
+ 1890 Ethernet Connection E822-C for backplane
+ 1891 Ethernet Connection E822-C for QSFP
+ 1892 Ethernet Connection E822-C for SFP
+ 1893 Ethernet Connection E822-C/X557-AT 10GBASE-T
+ 1894 Ethernet Connection E822-C 1GbE
+ 1897 Ethernet Connection E822-L for backplane
+ 1898 Ethernet Connection E822-L for SFP
+ 1899 Ethernet Connection E822-L/X557-AT 10GBASE-T
+ 189a Ethernet Connection E822-L 1GbE
18a0 C4xxx Series QAT
18a1 C4XXX Series QAT Virtual Function
1900 Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers
@@ -27014,6 +27130,7 @@
1f26 Atom processor C2000 RAID SATA2 Controller
1f27 Atom processor C2000 RAID SATA2 Controller
1f2c Atom processor C2000 USB Enhanced Host Controller
+ 0200 1028 Atom C2338 on Dell 0K8Y0N motherboard
1f2e Atom processor C2000 RAID SATA2 Controller
1f2f Atom processor C2000 RAID SATA2 Controller
1f30 Atom processor C2000 2-Port IDE SATA3 Controller
@@ -27856,6 +27973,9 @@
250f 82820 820 (Camino) Chipset AGP Bridge
2520 82805AA MTH Memory Translator Hub
2521 82804AA MRH-S Memory Repeater Hub for SDRAM
+ 2522 NVMe Optane Memory Series
+ 8086 3806 Optane Memory 16GB
+ 8086 3810 Optane Memory M10 16GB
2526 Wireless-AC 9260
2530 82850 850 (Tehama) Chipset Host Bridge (MCH)
1028 00c7 Dimension 8100
@@ -30554,6 +30674,7 @@
3e30 8th/9th Gen Core 8-core Desktop Processor Host Bridge/DRAM Registers [Coffee Lake S]
3e33 8th/9th Gen Core Processor Host Bridge/DRAM Registers [Coffee Lake]
3e34 Coffee Lake HOST and DRAM Controller
+ 3e35 Coffee Lake Host Bridge/DRAM Registers
3e81 8th Gen Core Processor PCIe Controller (x16)
3e85 8th Gen Core Processor PCIe Controller (x8)
3e89 8th Gen Core Processor PCIe Controller (x4)
@@ -31420,14 +31541,21 @@
9a0b Volume Management Device NVMe RAID Controller
9a13 Tiger Lake-LP Thunderbolt USB Controller
9a14 11th Gen Core Processor Host Bridge/DRAM Registers
+ 9a17 Tiger Lake-H Thunderbolt USB Controller
9a1b Tiger Lake-LP Thunderbolt NHI #0
9a1d Tiger Lake-LP Thunderbolt NHI #1
+ 9a1f Tiger Lake-H Thunderbolt NHI #0
+ 9a21 Tiger Lake-H Thunderbolt NHI #1
9a23 Tiger Lake-LP Thunderbolt PCI Express Root Port #0
9a25 Tiger Lake-LP Thunderbolt PCI Express Root Port #1
9a27 Tiger Lake-LP Thunderbolt PCI Express Root Port #2
9a29 Tiger Lake-LP Thunderbolt PCI Express Root Port #3
+ 9a2b Tiger Lake-H Thunderbolt PCI Express Root Port #0
+ 9a2d Tiger Lake-H Thunderbolt PCI Express Root Port #1
+ 9a2f Tiger Lake-H Thunderbolt PCI Express Root Port #2
+ 9a31 Tiger Lake-H Thunderbolt PCI Express Root Port #3
9a33 Tiger Lake Trace Hub
- 9a49 UHD Graphics
+ 9a49 Iris Xe Graphics
9b41 UHD Graphics
9b44 10th Gen Core Processor Host Bridge/DRAM Registers
9b54 10th Gen Core Processor Host Bridge/DRAM Registers
@@ -32435,6 +32563,10 @@
152d 8a24 QS-8236-16i
152d 8a36 QS-8240-24i
152d 8a37 QS-8242-24i
+ 193d 1104 RAID P2404-Mf-4i-2GB
+ 193d 1105 RAID P4408-Mf-8i-2GB
+ 193d 1106 RAID P2404-Mf-4i-1GB
+ 193d 1107 RAID P4408-Mf-8i-4GB
193d 8460 HBA H460-M1
193d 8461 HBA H460-B1
193d c460 RAID P460-M2
@@ -32464,6 +32596,8 @@
9005 0805 SmartRAID 3102-8i
9005 0806 SmartRAID 3100
9005 0807 SmartRAID 3162-8i
+ 9005 0808 SmartRAID 3101E-4i
+ 9005 0809 SmartRAID 3102E-8i
9005 0900 SmartHBA 2100-8i
9005 0901 SmartHBA 2100-4i
9005 0902 HBA 1100-8i
@@ -32479,6 +32613,7 @@
9005 1202 SmartRAID 3154-8i8e
9005 1280 HBA 1100-16i
9005 1281 HBA 1100-16e
+ 9005 1282 SmartHBA 2100-16i
9005 1300 HBA 1100-8i8e
9005 1301 HBA 1100-24i
9005 1302 SmartHBA 2100-8i8e
@@ -32605,6 +32740,7 @@
1202 STAR1200I NVMe SSD
1203 STAR1200L NVMe SSD
1204 STAR1200E NVMe SSD
+a000 Asix Electronics Corporation (Wrong ID)
a0a0 AOPEN Inc.
a0f1 UNISYS Corporation
a200 NEC Corporation
@@ -33116,6 +33252,9 @@ C 08 Generic system peripheral
05 SD Host controller
06 IOMMU
80 System peripheral
+ 99 Timing Card
+# PTP Grandmaster Source Clock
+ 01 TAP Timing Card
C 09 Input device controller
00 Keyboard controller
01 Digitizer Pen
diff --git a/hwdb.d/pnp_id_registry.html b/hwdb.d/pnp_id_registry.html
index a62adc33e6..797a79691e 100644
--- a/hwdb.d/pnp_id_registry.html
+++ b/hwdb.d/pnp_id_registry.html
@@ -2464,6 +2464,7 @@
<tr class="even"><td>Meta View, Inc.</td><td>CFR</td><td>07/15/2020</td> </tr>
<tr class="odd"><td>MILCOTS</td><td>MLC</td><td>07/15/2020</td> </tr>
<tr class="even"><td>NZXT (PNP same EDID)_</td><td>NXT</td><td>07/15/2020</td> </tr>
+ <tr class="odd"><td>Unicompute Technology Co., Ltd.</td><td>UTC</td><td>10/19/2020</td> </tr>
</tbody>
</table>
</body>
diff --git a/man/binfmt.d.xml b/man/binfmt.d.xml
index 8caeb56a5f..6134b27d03 100644
--- a/man/binfmt.d.xml
+++ b/man/binfmt.d.xml
@@ -2,7 +2,7 @@
<!--*-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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="binfmt.d" conditional='ENABLE_BINFMT'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/bootctl.xml b/man/bootctl.xml
index 479cbb5d92..878f24742e 100644
--- a/man/bootctl.xml
+++ b/man/bootctl.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="bootctl" conditional='ENABLE_EFI'
xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -112,6 +112,7 @@
These special IDs are primarily useful as a quick way to persistently make the currently booted boot loader
entry the default choice, or to upgrade the default boot loader entry for the next boot to the default boot
loader entry for all future boots, but may be used for other operations too.
+ When an empty string ("") is specified as an ID, then the corresponding EFI variable will be unset.
</para></listitem>
</varlistentry>
diff --git a/man/bootup.xml b/man/bootup.xml
index 0c2edfc8a5..781e539191 100644
--- a/man/bootup.xml
+++ b/man/bootup.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="bootup">
diff --git a/man/busctl.xml b/man/busctl.xml
index 06d17b201a..912f302641 100644
--- a/man/busctl.xml
+++ b/man/busctl.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="busctl"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/coredump.conf.xml b/man/coredump.conf.xml
index 46da7741c9..942a31db74 100644
--- a/man/coredump.conf.xml
+++ b/man/coredump.conf.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="coredump.conf" conditional="ENABLE_COREDUMP"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/coredumpctl.xml b/man/coredumpctl.xml
index 150d410c24..62dbb314c9 100644
--- a/man/coredumpctl.xml
+++ b/man/coredumpctl.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="coredumpctl" conditional='ENABLE_COREDUMP'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/crypttab.xml b/man/crypttab.xml
index 567762751b..14bf93a0f7 100644
--- a/man/crypttab.xml
+++ b/man/crypttab.xml
@@ -3,7 +3,7 @@
<!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+
+ SPDX-License-Identifier: LGPL-2.1-or-later
This is based on crypttab(5) from Fedora's initscripts package, which in
turn is based on Debian's version.
diff --git a/man/custom-html.xsl b/man/custom-html.xsl
index 57a9cc97d2..6e4dc27f5d 100644
--- a/man/custom-html.xsl
+++ b/man/custom-html.xsl
@@ -1,5 +1,5 @@
<?xml version='1.0'?> <!--*-nxml-*-->
-<!-- SPDX-License-Identifier: LGPL-2.1+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
diff --git a/man/custom-man.xsl b/man/custom-man.xsl
index d9af519d32..2ed361fcc2 100644
--- a/man/custom-man.xsl
+++ b/man/custom-man.xsl
@@ -1,7 +1,7 @@
<?xml version='1.0'?> <!--*-nxml-*-->
<!--
- SPDX-License-Identifier: LGPL-2.1+
+ SPDX-License-Identifier: LGPL-2.1-or-later
-->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
diff --git a/man/daemon.xml b/man/daemon.xml
index b5ae08473d..db95d2f75b 100644
--- a/man/daemon.xml
+++ b/man/daemon.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="daemon">
diff --git a/man/directives-template.xml b/man/directives-template.xml
index e0063e051d..addb0effdb 100644
--- a/man/directives-template.xml
+++ b/man/directives-template.xml
@@ -1,4 +1,4 @@
-<!-- SPDX-License-Identifier: LGPL-2.1+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd.directives">
<refentryinfo>
diff --git a/man/dnssec-trust-anchors.d.xml b/man/dnssec-trust-anchors.d.xml
index f14ebbce7c..25c6ce2c61 100644
--- a/man/dnssec-trust-anchors.d.xml
+++ b/man/dnssec-trust-anchors.d.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="dnssec-trust-anchors.d" conditional='ENABLE_RESOLVE'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/environment.d.xml b/man/environment.d.xml
index 4db44616a7..272211cbd4 100644
--- a/man/environment.d.xml
+++ b/man/environment.d.xml
@@ -3,7 +3,7 @@
<!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+
+ SPDX-License-Identifier: LGPL-2.1-or-later
Copyright © 2016 Red Hat, Inc.
-->
diff --git a/man/file-hierarchy.xml b/man/file-hierarchy.xml
index 996876f48a..6c64b726f0 100644
--- a/man/file-hierarchy.xml
+++ b/man/file-hierarchy.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="file-hierarchy">
diff --git a/man/halt.xml b/man/halt.xml
index f811b10348..4b3beb80b7 100644
--- a/man/halt.xml
+++ b/man/halt.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="halt"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/homectl.xml b/man/homectl.xml
index 8afe993dac..a9cf2f8550 100644
--- a/man/homectl.xml
+++ b/man/homectl.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="homectl" conditional='ENABLE_HOMED'
xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -195,7 +195,7 @@
<term><option>--realm=</option><replaceable>REALM</replaceable></term>
<listitem><para>The realm for the user. The realm associates a user with a specific organization or
- installation, and allows distuingishing users of the same name defined in different contexts. The
+ installation, and allows distinguishing users of the same name defined in different contexts. The
realm can be any string that also qualifies as valid DNS domain name, and it is recommended to use
the organization's or installation's domain name for this purpose, but this is not enforced nor
required. On each system only a single user of the same name may exist, and if a user with the same
diff --git a/man/homed.conf.xml b/man/homed.conf.xml
index d43a83de3e..7e99aa6191 100644
--- a/man/homed.conf.xml
+++ b/man/homed.conf.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="homed.conf" conditional='ENABLE_HOMED'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/hostname.xml b/man/hostname.xml
index bb880c336c..edbeef8f4a 100644
--- a/man/hostname.xml
+++ b/man/hostname.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="hostname">
<refentryinfo>
diff --git a/man/hostnamectl.xml b/man/hostnamectl.xml
index 7ca62f4810..8c00867e73 100644
--- a/man/hostnamectl.xml
+++ b/man/hostnamectl.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="hostnamectl" conditional='ENABLE_HOSTNAMED'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/hwdb.xml b/man/hwdb.xml
index 5e90690747..2c1e502dcd 100644
--- a/man/hwdb.xml
+++ b/man/hwdb.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="hwdb" conditional="ENABLE_HWDB">
<refentryinfo>
diff --git a/man/journal-remote.conf.xml b/man/journal-remote.conf.xml
index f6a9f1565e..3f69f30df3 100644
--- a/man/journal-remote.conf.xml
+++ b/man/journal-remote.conf.xml
@@ -3,7 +3,7 @@
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<!--
- SPDX-License-Identifier: LGPL-2.1+
+ SPDX-License-Identifier: LGPL-2.1-or-later
Copyright © 2015 Chris Morgan
-->
diff --git a/man/journal-upload.conf.xml b/man/journal-upload.conf.xml
index 2a67e6fd05..403eb57c69 100644
--- a/man/journal-upload.conf.xml
+++ b/man/journal-upload.conf.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="journal-upload.conf" conditional='HAVE_MICROHTTPD'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/journalctl.xml b/man/journalctl.xml
index fa230484a1..379344170d 100644
--- a/man/journalctl.xml
+++ b/man/journalctl.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="journalctl"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/journald.conf.xml b/man/journald.conf.xml
index 2281e069d5..959815a8f1 100644
--- a/man/journald.conf.xml
+++ b/man/journald.conf.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="journald.conf"
xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -433,7 +433,7 @@
<listitem><para>The maximum line length to permit when converting stream logs into record logs. When a systemd
unit's standard output/error are connected to the journal via a stream socket, the data read is split into
- individual log records at newline (<literal>\n</literal>, ASCII 10) and NUL characters. If no such delimiter is
+ individual log records at newline (<literal>\n</literal>, ASCII 10) and <constant>NUL</constant> characters. If no such delimiter is
read for the specified number of bytes a hard log record boundary is artificially inserted, breaking up overly
long lines into multiple log records. Selecting overly large values increases the possible memory usage of the
Journal daemon for each stream client, as in the worst case the journal daemon needs to buffer the specified
diff --git a/man/kernel-command-line.xml b/man/kernel-command-line.xml
index 8f61188a63..7a4109916c 100644
--- a/man/kernel-command-line.xml
+++ b/man/kernel-command-line.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="kernel-command-line">
diff --git a/man/kernel-install.xml b/man/kernel-install.xml
index 3de95f7088..37eefe256e 100644
--- a/man/kernel-install.xml
+++ b/man/kernel-install.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="kernel-install"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/less-variables.xml b/man/less-variables.xml
index 702ca06c76..3b32673f39 100644
--- a/man/less-variables.xml
+++ b/man/less-variables.xml
@@ -1,7 +1,7 @@
<?xml version="1.0"?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<!-- SPDX-License-Identifier: LGPL-2.1+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refsect1>
<title>Environment</title>
diff --git a/man/libsystemd-pkgconfig.xml b/man/libsystemd-pkgconfig.xml
index e378c4dd7c..e3b0634c9f 100644
--- a/man/libsystemd-pkgconfig.xml
+++ b/man/libsystemd-pkgconfig.xml
@@ -1,7 +1,7 @@
<?xml version="1.0"?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<!-- SPDX-License-Identifier: LGPL-2.1+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refsect1>
<title>Notes</title>
diff --git a/man/libudev.xml b/man/libudev.xml
index c35bc292ed..4b87962fc0 100644
--- a/man/libudev.xml
+++ b/man/libudev.xml
@@ -4,7 +4,7 @@
<!ENTITY % entities SYSTEM "custom-entities.ent" >
%entities;
]>
-<!-- SPDX-License-Identifier: LGPL-2.1+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="libudev"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/loader.conf.xml b/man/loader.conf.xml
index 4b01a93bd0..29315ceb17 100644
--- a/man/loader.conf.xml
+++ b/man/loader.conf.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="loader.conf" conditional='ENABLE_EFI'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/locale.conf.xml b/man/locale.conf.xml
index a92cf50a8d..b24ad9cf2e 100644
--- a/man/locale.conf.xml
+++ b/man/locale.conf.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="locale.conf">
<refentryinfo>
diff --git a/man/localectl.xml b/man/localectl.xml
index 5efb5fec7c..7f7e5775c0 100644
--- a/man/localectl.xml
+++ b/man/localectl.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="localectl" conditional='ENABLE_LOCALED'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/localtime.xml b/man/localtime.xml
index 0f1652ee2e..73c1b8e5a3 100644
--- a/man/localtime.xml
+++ b/man/localtime.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="localtime">
<refentryinfo>
diff --git a/man/loginctl.xml b/man/loginctl.xml
index acc5aa9a6f..d3745ce52d 100644
--- a/man/loginctl.xml
+++ b/man/loginctl.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="loginctl" conditional='ENABLE_LOGIND'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/logind.conf.xml b/man/logind.conf.xml
index 7857073aca..be62b6b572 100644
--- a/man/logind.conf.xml
+++ b/man/logind.conf.xml
@@ -4,7 +4,7 @@
<!ENTITY % entities SYSTEM "custom-entities.ent" >
%entities;
]>
-<!-- SPDX-License-Identifier: LGPL-2.1+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="logind.conf" conditional='ENABLE_LOGIND'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/machine-id.xml b/man/machine-id.xml
index 45607d5264..f61634fde5 100644
--- a/man/machine-id.xml
+++ b/man/machine-id.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="machine-id">
<refentryinfo>
diff --git a/man/machine-info.xml b/man/machine-info.xml
index 7a0a396a1e..c42f6e2211 100644
--- a/man/machine-info.xml
+++ b/man/machine-info.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="machine-info">
<refentryinfo>
diff --git a/man/machinectl.xml b/man/machinectl.xml
index 8ea836ade6..9026849559 100644
--- a/man/machinectl.xml
+++ b/man/machinectl.xml
@@ -4,7 +4,7 @@
<!ENTITY % entities SYSTEM "custom-entities.ent" >
%entities;
]>
-<!-- SPDX-License-Identifier: LGPL-2.1+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="machinectl" conditional='ENABLE_MACHINED'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/meson.build b/man/meson.build
index d056ad0c71..f555d629df 100644
--- a/man/meson.build
+++ b/man/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
# This is lame, I know, but meson has no other include mechanism
subdir('rules')
diff --git a/man/modules-load.d.xml b/man/modules-load.d.xml
index d126634e73..cd0c00687a 100644
--- a/man/modules-load.d.xml
+++ b/man/modules-load.d.xml
@@ -2,7 +2,7 @@
<!--*-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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="modules-load.d" conditional='HAVE_KMOD'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/networkctl.xml b/man/networkctl.xml
index 9b50912765..466bba47ff 100644
--- a/man/networkctl.xml
+++ b/man/networkctl.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="networkctl" conditional='ENABLE_NETWORKD'
xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -301,8 +301,8 @@ s - Service VLAN, m - Two-port MAC Relay (TPMR)
</term>
<listitem><para>Reconfigure network interfaces. Takes interface name or index number. Note that
this does not reload <filename>.netdev</filename> or <filename>.network</filename>
- corresponding to the the specified interface. So, if you edit config files, it is necessary to
- call <command>networkctl reload</command> first to apply new settings.</para></listitem>
+ corresponding to the specified interface. So, if you edit config files, it is necessary to call
+ <command>networkctl reload</command> first to apply new settings.</para></listitem>
</varlistentry>
<varlistentry>
diff --git a/man/networkd.conf.xml b/man/networkd.conf.xml
index 821212c343..65aecb6256 100644
--- a/man/networkd.conf.xml
+++ b/man/networkd.conf.xml
@@ -3,7 +3,7 @@
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<!--
- SPDX-License-Identifier: LGPL-2.1+
+ SPDX-License-Identifier: LGPL-2.1-or-later
Copyright © 2014 Vinay Kulkarni
-->
diff --git a/man/nss-myhostname.xml b/man/nss-myhostname.xml
index e12d9bf5b2..8d5b549c3b 100644
--- a/man/nss-myhostname.xml
+++ b/man/nss-myhostname.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="nss-myhostname" conditional='ENABLE_NSS_MYHOSTNAME'>
diff --git a/man/nss-mymachines.xml b/man/nss-mymachines.xml
index 56ee073c8a..b2785df410 100644
--- a/man/nss-mymachines.xml
+++ b/man/nss-mymachines.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="nss-mymachines" conditional='ENABLE_NSS_MYMACHINES'>
diff --git a/man/nss-resolve.xml b/man/nss-resolve.xml
index e6963e5812..78c92030ac 100644
--- a/man/nss-resolve.xml
+++ b/man/nss-resolve.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="nss-resolve" conditional='ENABLE_NSS_RESOLVE'>
diff --git a/man/nss-systemd.xml b/man/nss-systemd.xml
index 6285b8da9d..1fee8cc8ba 100644
--- a/man/nss-systemd.xml
+++ b/man/nss-systemd.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="nss-systemd" conditional='ENABLE_NSS_SYSTEMD'>
diff --git a/man/oomctl.xml b/man/oomctl.xml
index 10633b92fc..b5e8a44282 100644
--- a/man/oomctl.xml
+++ b/man/oomctl.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="oomctl" conditional='ENABLE_OOMD'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/oomd.conf.xml b/man/oomd.conf.xml
index e6be947c5b..35a0686bc5 100644
--- a/man/oomd.conf.xml
+++ b/man/oomd.conf.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="oomd.conf" conditional='ENABLE_OOMD'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/org.freedesktop.LogControl1.xml b/man/org.freedesktop.LogControl1.xml
index 1fdfb8943a..da6dd7628e 100644
--- a/man/org.freedesktop.LogControl1.xml
+++ b/man/org.freedesktop.LogControl1.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="org.freedesktop.LogControl1"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/org.freedesktop.home1.xml b/man/org.freedesktop.home1.xml
index 8d3defbfe0..b977e1b46f 100644
--- a/man/org.freedesktop.home1.xml
+++ b/man/org.freedesktop.home1.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="org.freedesktop.home1" conditional='ENABLE_HOMED'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/org.freedesktop.hostname1.xml b/man/org.freedesktop.hostname1.xml
index ab49c0b3e2..f8e199ceaa 100644
--- a/man/org.freedesktop.hostname1.xml
+++ b/man/org.freedesktop.hostname1.xml
@@ -5,7 +5,7 @@
<!ENTITY % entities SYSTEM "custom-entities.ent" >
%entities;
]>
-<!-- SPDX-License-Identifier: LGPL-2.1+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="org.freedesktop.hostname1" conditional='ENABLE_HOSTNAMED'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/org.freedesktop.import1.xml b/man/org.freedesktop.import1.xml
index 472b9f999e..9558ee138f 100644
--- a/man/org.freedesktop.import1.xml
+++ b/man/org.freedesktop.import1.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="org.freedesktop.import1" conditional='ENABLE_IMPORTD'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/org.freedesktop.locale1.xml b/man/org.freedesktop.locale1.xml
index 3956eaf8a7..1da386d6a7 100644
--- a/man/org.freedesktop.locale1.xml
+++ b/man/org.freedesktop.locale1.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="org.freedesktop.locale1" conditional='ENABLE_LOCALED'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/org.freedesktop.login1.xml b/man/org.freedesktop.login1.xml
index 17ffd493ab..ad27b226b8 100644
--- a/man/org.freedesktop.login1.xml
+++ b/man/org.freedesktop.login1.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="org.freedesktop.login1" conditional='ENABLE_LOGIND'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/org.freedesktop.machine1.xml b/man/org.freedesktop.machine1.xml
index da4738b615..284c3d60e4 100644
--- a/man/org.freedesktop.machine1.xml
+++ b/man/org.freedesktop.machine1.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="org.freedesktop.machine1" conditional='ENABLE_MACHINED'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/org.freedesktop.oom1.xml b/man/org.freedesktop.oom1.xml
index 289a7b6e89..ab0725e867 100644
--- a/man/org.freedesktop.oom1.xml
+++ b/man/org.freedesktop.oom1.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="org.freedesktop.oom1" conditional='ENABLE_OOMD'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/org.freedesktop.resolve1.xml b/man/org.freedesktop.resolve1.xml
index b06155662a..41562360a0 100644
--- a/man/org.freedesktop.resolve1.xml
+++ b/man/org.freedesktop.resolve1.xml
@@ -5,7 +5,7 @@
<!ENTITY % entities SYSTEM "custom-entities.ent" >
%entities;
]>
-<!-- SPDX-License-Identifier: LGPL-2.1+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="org.freedesktop.resolve1" conditional='ENABLE_RESOLVE'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/org.freedesktop.systemd1.xml b/man/org.freedesktop.systemd1.xml
index c0e0f385b4..78fd0b3378 100644
--- a/man/org.freedesktop.systemd1.xml
+++ b/man/org.freedesktop.systemd1.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="org.freedesktop.systemd1" xmlns:xi="http://www.w3.org/2001/XInclude">
<refentryinfo>
@@ -7211,6 +7211,8 @@ node /org/freedesktop/systemd1/unit/systemd_2dtmpfiles_2dclean_2etimer {
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
readonly t RandomizedDelayUSec = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
+ readonly b FixedRandomDelay = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
readonly b Persistent = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
readonly b WakeSystem = ...;
@@ -7236,6 +7238,8 @@ node /org/freedesktop/systemd1/unit/systemd_2dtmpfiles_2dclean_2etimer {
<!--property RandomizedDelayUSec is not documented!-->
+ <!--property FixedRandomDelay is not documented!-->
+
<!--property Persistent is not documented!-->
<!--property WakeSystem is not documented!-->
@@ -7276,6 +7280,8 @@ node /org/freedesktop/systemd1/unit/systemd_2dtmpfiles_2dclean_2etimer {
<variablelist class="dbus-property" generated="True" extra-ref="RandomizedDelayUSec"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="FixedRandomDelay"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="Persistent"/>
<variablelist class="dbus-property" generated="True" extra-ref="WakeSystem"/>
diff --git a/man/org.freedesktop.timedate1.xml b/man/org.freedesktop.timedate1.xml
index 325c3acfb1..52efa68935 100644
--- a/man/org.freedesktop.timedate1.xml
+++ b/man/org.freedesktop.timedate1.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="org.freedesktop.timedate1" conditional='ENABLE_TIMEDATED'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/os-release.xml b/man/os-release.xml
index cd5b5bf158..674180679b 100644
--- a/man/os-release.xml
+++ b/man/os-release.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="os-release">
<refentryinfo>
diff --git a/man/pam_systemd.xml b/man/pam_systemd.xml
index 609743be6b..21a2581b24 100644
--- a/man/pam_systemd.xml
+++ b/man/pam_systemd.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="pam_systemd" conditional='HAVE_PAM'>
@@ -244,7 +244,7 @@
<title>Session limits</title>
<para>PAM modules earlier in the stack, that is those that come before <command>pam_systemd.so</command>,
- can set session scope limits using the PAM context objects. The data for these objects is provided as NUL-terminated C strings
+ can set session scope limits using the PAM context objects. The data for these objects is provided as <constant>NUL</constant>-terminated C strings
and maps directly to the respective unit resource control directives. Note that these limits apply to individual sessions of the user,
they do not apply to all user processes as a combined whole. In particular, the per-user <command>user@.service</command> unit instance,
which runs the <command>systemd --user</command> manager process and its children, and is tracked outside of any session, being shared
diff --git a/man/pam_systemd_home.xml b/man/pam_systemd_home.xml
index ab02f98337..93e8435805 100644
--- a/man/pam_systemd_home.xml
+++ b/man/pam_systemd_home.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="pam_systemd_home" conditional='ENABLE_PAM_HOME'>
diff --git a/man/portablectl.xml b/man/portablectl.xml
index d24c010e2c..3653207d72 100644
--- a/man/portablectl.xml
+++ b/man/portablectl.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="portablectl" conditional='ENABLE_PORTABLED'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/pstore.conf.xml b/man/pstore.conf.xml
index 501171e78a..ef3226c5a6 100644
--- a/man/pstore.conf.xml
+++ b/man/pstore.conf.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="pstore.conf" conditional="ENABLE_PSTORE"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/repart.d.xml b/man/repart.d.xml
index 5cc978b873..6e31843a08 100644
--- a/man/repart.d.xml
+++ b/man/repart.d.xml
@@ -199,6 +199,26 @@
</row>
<row>
+ <entry><constant>root-riscv32</constant></entry>
+ <entry>Root file system partition for the RISC-V 32-bit architecture</entry>
+ </row>
+
+ <row>
+ <entry><constant>root-riscv32-verity</constant></entry>
+ <entry>Verity data for the RISC-V 32-bit root file system partition</entry>
+ </row>
+
+ <row>
+ <entry><constant>root-riscv64</constant></entry>
+ <entry>Root file system partition for the RISC-V 64-bit architecture</entry>
+ </row>
+
+ <row>
+ <entry><constant>root-riscv64-verity</constant></entry>
+ <entry>Verity data for the RISC-V 64-bit root file system partition</entry>
+ </row>
+
+ <row>
<entry><constant>usr</constant></entry>
<entry><filename>/usr/</filename> file system partition type appropriate for the local architecture (an alias for an architecture <filename>/usr/</filename> file system partition type listed below, e.g. <constant>usr-x86-64</constant>)</entry>
</row>
@@ -267,6 +287,28 @@
<entry><constant>usr-ia64-verity</constant></entry>
<entry>Verity data for the ia64 <filename>/usr/</filename> file system partition</entry>
</row>
+
+ <row>
+ <entry><constant>usr-riscv32</constant></entry>
+ <entry><filename>/usr/</filename> file system partition for the RISC-V 32-bit architecture</entry>
+ </row>
+
+ <row>
+ <entry><constant>usr-riscv32-verity</constant></entry>
+ <entry>Verity data for the RISC-V 32-bit <filename>/usr/</filename> file system partition</entry>
+ </row>
+
+ <row>
+ <entry><constant>usr-riscv64</constant></entry>
+ <entry><filename>/usr/</filename> file system partition for the RISC-V 64-bit architecture</entry>
+ </row>
+
+ <row>
+ <entry><constant>usr-riscv64-verity</constant></entry>
+ <entry>Verity data for the RISC-V 64-bit <filename>/usr/</filename> file system partition</entry>
+ </row>
+
+
</tbody>
</tgroup>
</table>
diff --git a/man/resolvectl.xml b/man/resolvectl.xml
index a4bd8f52d7..fb6cae7b9b 100644
--- a/man/resolvectl.xml
+++ b/man/resolvectl.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="resolvectl" conditional='ENABLE_RESOLVE'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/resolved.conf.xml b/man/resolved.conf.xml
index 2cefc40949..3fdf5de58b 100644
--- a/man/resolved.conf.xml
+++ b/man/resolved.conf.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="resolved.conf" conditional='ENABLE_RESOLVE'
xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -199,7 +199,7 @@
domains (TLDs) that are not known by the DNS root server. This
logic does not work in all private zone setups.</para>
- <para>Defaults to <literal>allow-downgrade</literal></para>
+ <para>Defaults to <literal>allow-downgrade</literal>.</para>
</listitem>
</varlistentry>
@@ -233,13 +233,11 @@
resolver is not capable of authenticating the server, so it is
vulnerable to "man-in-the-middle" attacks.</para>
- <para>In addition to this global DNSOverTLS setting
+ <para>In addition to this global <varname>DNSOverTLS=</varname> setting
<citerefentry><refentrytitle>systemd-networkd.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>
- also maintains per-link DNSOverTLS settings. For system DNS
- servers (see above), only the global DNSOverTLS setting is in
- effect. For per-link DNS servers the per-link
- setting is in effect, unless it is unset in which case the
- global setting is used instead.</para>
+ also maintains per-link <varname>DNSOverTLS=</varname> settings. For system DNS servers (see above), only the global
+ <varname>DNSOverTLS=</varname> setting is in effect. For per-link DNS servers the per-link setting is in effect, unless
+ it is unset in which case the global setting is used instead.</para>
<para>Defaults to off.</para>
</listitem>
@@ -253,8 +251,16 @@
request. Be aware that turning off caching comes at a performance penalty, which is particularly high
when DNSSEC is used. If <literal>no-negative</literal>, only positive answers are cached.</para>
- <para>Note that caching is turned off implicitly if the configured DNS server is on a host-local IP address
- (such as 127.0.0.1 or ::1), in order to avoid duplicate local caching.</para></listitem>
+ <para>Note that caching is turned off by default for host-local DNS servers.
+ See <varname>CacheFromLocalhost=</varname> for details.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>CacheFromLocalhost=</varname></term>
+ <listitem><para>Takes a boolean as argument. If <literal>no</literal> (the default), and response cames from
+ host-local IP address (such as 127.0.0.1 or ::1), the result wouldn't be cached in order to avoid
+ potential duplicate local caching.</para>
+ </listitem>
</varlistentry>
<varlistentry>
diff --git a/man/rules/meson.build b/man/rules/meson.build
index cc3c2ef5e3..cacbbd75bc 100644
--- a/man/rules/meson.build
+++ b/man/rules/meson.build
@@ -529,11 +529,13 @@ manpages = [
''],
['sd_event_add_time',
'3',
- ['sd_event_source_get_time',
+ ['sd_event_add_time_relative',
+ 'sd_event_source_get_time',
'sd_event_source_get_time_accuracy',
'sd_event_source_get_time_clock',
'sd_event_source_set_time',
'sd_event_source_set_time_accuracy',
+ 'sd_event_source_set_time_relative',
'sd_event_time_handler_t'],
''],
['sd_event_exit', '3', ['sd_event_get_exit_code'], ''],
diff --git a/man/runlevel.xml b/man/runlevel.xml
index 75a572cb00..f5e1e00da4 100644
--- a/man/runlevel.xml
+++ b/man/runlevel.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="runlevel" conditional='HAVE_SYSV_COMPAT'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd-bus-errors.xml b/man/sd-bus-errors.xml
index e5590c81c7..a69efe03f0 100644
--- a/man/sd-bus-errors.xml
+++ b/man/sd-bus-errors.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd-bus-errors"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd-bus.xml b/man/sd-bus.xml
index 199a4a81e9..05fce44acf 100644
--- a/man/sd-bus.xml
+++ b/man/sd-bus.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd-bus" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd-daemon.xml b/man/sd-daemon.xml
index a01ec58786..5dee3e893c 100644
--- a/man/sd-daemon.xml
+++ b/man/sd-daemon.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd-daemon"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd-event.xml b/man/sd-event.xml
index afdafff5da..a28c9b87ec 100644
--- a/man/sd-event.xml
+++ b/man/sd-event.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd-event" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd-hwdb.xml b/man/sd-hwdb.xml
index 13552e5846..254c218ac6 100644
--- a/man/sd-hwdb.xml
+++ b/man/sd-hwdb.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd-hwdb" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd-id128.xml b/man/sd-id128.xml
index 22d5e0e3ed..40a3cc59ae 100644
--- a/man/sd-id128.xml
+++ b/man/sd-id128.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd-id128"
xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -85,8 +85,8 @@
<programlisting>#define SD_MESSAGE_COREDUMP SD_ID128_MAKE(fc,2e,22,bc,6e,e6,47,b6,b9,07,29,ab,34,a2,50,b1)</programlisting>
- <para><function>SD_ID128_NULL</function> may be used to refer to the 128bit ID consisting of only NUL
- bytes.</para>
+ <para><constant>SD_ID128_NULL</constant> may be used to refer to the 128bit ID consisting of only
+ <constant>NUL</constant> bytes.</para>
<para><function>SD_ID128_MAKE_STR()</function> is similar to <function>SD_ID128_MAKE()</function>, but creates a
<type>const char*</type> expression that can be conveniently used in message formats and such:</para>
@@ -107,9 +107,8 @@ int main(int argc, char **argv) {
puts("Match for coredumps: %s", SD_ID128_CONST_STR(SD_MESSAGE_COREDUMP));
}</programlisting>
- <para><function>SD_ID128_FORMAT_STR()</function> and
- <function>SD_ID128_FORMAT_VAL()</function> may be used to format a
- 128-bit ID in a
+ <para><constant>SD_ID128_FORMAT_STR</constant> and <function>SD_ID128_FORMAT_VAL()</function> may
+ be used to format a 128-bit ID in a
<citerefentry project='man-pages'><refentrytitle>printf</refentrytitle><manvolnum>3</manvolnum></citerefentry>
format string, as shown in the following example:</para>
@@ -120,8 +119,8 @@ int main(int argc, char **argv) {
return 0;
}</programlisting>
- <para><function>SD_ID128_UUID_FORMAT_STR()</function> is similar to
- <function>SD_ID128_FORMAT_STR()</function> but includes separating hyphens to conform to the
+ <para><constant>SD_ID128_UUID_FORMAT_STR</constant> is similar to
+ <constant>SD_ID128_FORMAT_STR</constant> but includes separating hyphens to conform to the
"<ulink url="https://en.wikipedia.org/wiki/Universally_unique_identifier#Format">canonical representation</ulink>".
</para>
@@ -137,7 +136,8 @@ int main(int argc, char **argv) {
return 0;
}</programlisting>
- <para>Use <function>sd_id128_is_null()</function> to check if an 128bit ID consists of only NUL bytes:</para>
+ <para>Use <function>sd_id128_is_null()</function> to check if an 128bit ID consists of only
+ <constant>NUL</constant> bytes:</para>
<programlisting>int main(int argc, char *argv[]) {
assert(sd_id128_is_null(SD_ID128_NULL));
diff --git a/man/sd-journal.xml b/man/sd-journal.xml
index a3ee1ea9e1..4609868c11 100644
--- a/man/sd-journal.xml
+++ b/man/sd-journal.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd-journal"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd-login.xml b/man/sd-login.xml
index f39be20fc5..0127b691f5 100644
--- a/man/sd-login.xml
+++ b/man/sd-login.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd-login" conditional='HAVE_PAM'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_booted.xml b/man/sd_booted.xml
index 6a6a620633..d9b3ddc83e 100644
--- a/man/sd_booted.xml
+++ b/man/sd_booted.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_booted"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_add_match.xml b/man/sd_bus_add_match.xml
index 071060dde6..1ce1c13674 100644
--- a/man/sd_bus_add_match.xml
+++ b/man/sd_bus_add_match.xml
@@ -3,7 +3,7 @@
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<!--
- SPDX-License-Identifier: LGPL-2.1+
+ SPDX-License-Identifier: LGPL-2.1-or-later
Copyright © 2016 Julian Orth
-->
diff --git a/man/sd_bus_add_node_enumerator.xml b/man/sd_bus_add_node_enumerator.xml
index fd11e46fcb..da3989ef94 100644
--- a/man/sd_bus_add_node_enumerator.xml
+++ b/man/sd_bus_add_node_enumerator.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_add_node_enumerator"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_add_object.xml b/man/sd_bus_add_object.xml
index bce71bd11a..00e4110739 100644
--- a/man/sd_bus_add_object.xml
+++ b/man/sd_bus_add_object.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_add_object"
xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -292,11 +292,13 @@
attached to the request object path, interface and member. Finally, the property callbacks
attached to the request object path, interface and member are called. If the final callback
returns zero, an error reply is sent back to the caller indicating no matching object for the
- request was found. Note that you can return a positive integer from a callback without
+ request was found.</para>
+
+ <para>Note that you can return a positive integer from a callback without
immediately sending a reply. This informs sd-bus this callback will take responsibility for
replying to the request without forcing the callback to produce a reply immediately. This allows
- a callback to perform any number of asynchronous operations required to construct a reply. Note
- that if producing a reply takes too long, the method call will time out at the caller.</para>
+ a callback to perform any number of asynchronous operations required to construct a reply.
+ However, if producing a reply takes too long, the method call will time out at the caller.</para>
<para>If a callback was invoked to handle a request that expects a reply and the callback
returns a negative value, the value is interpreted as a negative errno-style error code and sent
@@ -369,8 +371,8 @@
with the message the callback was invoked with. Parameter <replaceable>flags</replaceable> is a
combination of flags, see below.</para>
- <constant>SD_BUS_METHOD_WITH_ARGS()</constant> is a shorthand for calling
- <constant>SD_BUS_METHOD_WITH_ARGS_OFFSET()</constant> with an offset of zero.
+ <para><constant>SD_BUS_METHOD_WITH_ARGS()</constant> is a shorthand for calling
+ <constant>SD_BUS_METHOD_WITH_ARGS_OFFSET()</constant> with an offset of zero.</para>
</listitem>
</varlistentry>
@@ -404,7 +406,7 @@
<varlistentry>
<term><constant>SD_BUS_SIGNAL_WITH_ARGS()</constant></term>
- <listitem><para>>Declare a D-Bus signal with the name <replaceable>member</replaceable> and
+ <listitem><para>Declare a D-Bus signal with the name <replaceable>member</replaceable> and
arguments <replaceable>args</replaceable>. <replaceable>args</replaceable> expects a sequence of
argument type/name pairs wrapped in the <constant>SD_BUS_ARGS()</constant> macro. The elements at
even indices in this list describe the types of the signal's arguments. The signal's parameter
@@ -620,8 +622,8 @@
<varlistentry>
<term><constant>-EPROTOTYPE</constant></term>
- <listitem><para><function>sd_bus_add_object_vtable</function> and
- <function>sd_bus_add_fallback_vtable</function> have been both called for the same bus
+ <listitem><para><function>sd_bus_add_object_vtable()</function> and
+ <function>sd_bus_add_fallback_vtable()</function> have been both called for the same bus
object path, which is not allowed.</para></listitem>
</varlistentry>
diff --git a/man/sd_bus_add_object_manager.xml b/man/sd_bus_add_object_manager.xml
index cc442d161c..df2704ac99 100644
--- a/man/sd_bus_add_object_manager.xml
+++ b/man/sd_bus_add_object_manager.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_add_object_manager"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_attach_event.xml b/man/sd_bus_attach_event.xml
index 2a207d2848..bb34d4a7b9 100644
--- a/man/sd_bus_attach_event.xml
+++ b/man/sd_bus_attach_event.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_attach_event"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_call.xml b/man/sd_bus_call.xml
index f47f9c8526..1f7dfc2e82 100644
--- a/man/sd_bus_call.xml
+++ b/man/sd_bus_call.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_call"
xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -89,6 +89,12 @@
input parameter; it can be used to propagate errors from the callback handler, it will not receive any
error that was received as method reply.)</para>
+ <para>The message <parameter>m</parameter> passed to the callback is only borrowed, that is, the callback should
+ not call <citerefentry><refentrytitle>sd_bus_message_unref</refentrytitle><manvolnum>3</manvolnum></citerefentry>
+ on it. If the callback wants to hold on to the message beyond the lifetime of the callback, it needs to call
+ <citerefentry><refentrytitle>sd_bus_message_ref</refentrytitle><manvolnum>3</manvolnum></citerefentry> to create a
+ new reference.</para>
+
<para>If <parameter>usec</parameter> is zero, the default D-Bus method call timeout is used. See
<citerefentry><refentrytitle>sd_bus_get_method_call_timeout</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
</para>
@@ -104,6 +110,12 @@
<refsect2 id='errors'>
<title>Errors</title>
+ <para>When <function>sd_bus_call()</function> internally receives a D-Bus error reply, it will set
+ <parameter>ret_error</parameter> if it is not <constant>NULL</constant>, and will return a negative
+ value mapped from the error reply, see
+ <citerefentry><refentrytitle>sd_bus_error_get_errno</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
+ </para>
+
<para>Returned errors may indicate the following problems:</para>
<variablelist>
@@ -180,7 +192,8 @@
<citerefentry><refentrytitle>sd_bus_call_method</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd_bus_call_method_async</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd_bus_message_new_method_call</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
- <citerefentry><refentrytitle>sd_bus_message_append</refentrytitle><manvolnum>3</manvolnum></citerefentry>
+ <citerefentry><refentrytitle>sd_bus_message_append</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>sd_bus_error</refentrytitle><manvolnum>3</manvolnum></citerefentry>
</para>
</refsect1>
diff --git a/man/sd_bus_call_method.xml b/man/sd_bus_call_method.xml
index ac9cf143ad..762ea11c01 100644
--- a/man/sd_bus_call_method.xml
+++ b/man/sd_bus_call_method.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_call_method"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_can_send.xml b/man/sd_bus_can_send.xml
index ba2a180ee2..632d9bc4ee 100644
--- a/man/sd_bus_can_send.xml
+++ b/man/sd_bus_can_send.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_can_send"
xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -37,7 +37,7 @@
<refsect1>
<title>Description</title>
- <para><function>sd_bus_can_send</function> is mostly used for checking if file descriptor
+ <para><function>sd_bus_can_send()</function> is mostly used for checking if file descriptor
passing is available on the given bus. <parameter>type</parameter> can be any of the
<constant>SD_BUS_TYPE</constant> constants.</para>
</refsect1>
diff --git a/man/sd_bus_close.xml b/man/sd_bus_close.xml
index 42db107470..95427bd7f9 100644
--- a/man/sd_bus_close.xml
+++ b/man/sd_bus_close.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_close"
xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -72,7 +72,7 @@
is provided that combines them into one.</para>
<para><function>sd_bus_default_flush_close()</function> is similar to
- <function>sd_bus_flush_close_unref</function>, but does not take a bus pointer argument and
+ <function>sd_bus_flush_close_unref()</function>, but does not take a bus pointer argument and
instead iterates over any of the "default" buses opened by
<citerefentry><refentrytitle>sd_bus_default</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd_bus_default_user</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
diff --git a/man/sd_bus_creds_get_pid.xml b/man/sd_bus_creds_get_pid.xml
index a3e8079c51..8f5b94e531 100644
--- a/man/sd_bus_creds_get_pid.xml
+++ b/man/sd_bus_creds_get_pid.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_creds_get_pid" xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -439,14 +439,14 @@
<para>All functions that take a <parameter>const
char**</parameter> parameter will store the answer there as an
- address of a NUL-terminated string. It will be valid as long as
+ address of a <constant>NUL</constant>-terminated string. It will be valid as long as
<parameter>c</parameter> remains valid, and should not be freed or
modified by the caller.</para>
<para>All functions that take a <parameter>char***</parameter>
parameter will store the answer there as an address of an array
- of strings. Each individual string is NUL-terminated, and the
- array is NULL-terminated as a whole. It will be valid as long as
+ of strings. Each individual string is <constant>NUL</constant>-terminated, and the
+ array is <constant>NULL</constant>-terminated as a whole. It will be valid as long as
<parameter>c</parameter> remains valid, and should not be freed or
modified by the caller.</para>
</refsect1>
diff --git a/man/sd_bus_creds_new_from_pid.xml b/man/sd_bus_creds_new_from_pid.xml
index d1a168a23b..ea3acc447e 100644
--- a/man/sd_bus_creds_new_from_pid.xml
+++ b/man/sd_bus_creds_new_from_pid.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_creds_new_from_pid" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_default.xml b/man/sd_bus_default.xml
index c218768346..4ae26414eb 100644
--- a/man/sd_bus_default.xml
+++ b/man/sd_bus_default.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_default" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_emit_signal.xml b/man/sd_bus_emit_signal.xml
index 26ec7d1d70..08d5be400e 100644
--- a/man/sd_bus_emit_signal.xml
+++ b/man/sd_bus_emit_signal.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_emit_signal"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_enqueue_for_read.xml b/man/sd_bus_enqueue_for_read.xml
index f948b5914f..82b91cbe3c 100644
--- a/man/sd_bus_enqueue_for_read.xml
+++ b/man/sd_bus_enqueue_for_read.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_enqueue_for_read"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_error.xml b/man/sd_bus_error.xml
index 3ce375bb2b..af2238e74d 100644
--- a/man/sd_bus_error.xml
+++ b/man/sd_bus_error.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_error" xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -160,10 +160,10 @@
but additional domain-specific errors may be defined by
applications. The <structfield>message</structfield> field usually
contains a human-readable string describing the details, but might
- be NULL. An unset <structname>sd_bus_error</structname> structure
- should have both fields initialized to NULL. Set an error
+ be <constant>NULL</constant>. An unset <structname>sd_bus_error</structname> structure
+ should have both fields initialized to <constant>NULL</constant>. Set an error
structure to <constant>SD_BUS_ERROR_NULL</constant> in order to
- reset both fields to NULL. When no longer necessary, resources
+ reset both fields to <constant>NULL</constant>. When no longer necessary, resources
held by the <structname>sd_bus_error</structname> structure should
be destroyed with <function>sd_bus_error_free()</function>.</para>
@@ -181,14 +181,14 @@
for a list of well-known error names. Additional error mappings
may be defined with
<citerefentry><refentrytitle>sd_bus_error_add_map</refentrytitle><manvolnum>3</manvolnum></citerefentry>. If
- <parameter>e</parameter> is NULL, no error structure is initialized,
+ <parameter>e</parameter> is <constant>NULL</constant>, no error structure is initialized,
but the error is still converted into an
<varname>errno</varname>-style error. If
<parameter>name</parameter> is <constant>NULL</constant>, it is
assumed that no error occurred, and 0 is returned. This means that
this function may be conveniently used in a
<function>return</function> statement. If
- <parameter>message</parameter> is NULL, no message is set. This
+ <parameter>message</parameter> is <constant>NULL</constant>, no message is set. This
call can fail if no memory may be allocated for the name and
message strings, in which case an
<constant>SD_BUS_ERROR_NO_MEMORY</constant> error might be set
@@ -291,10 +291,10 @@
will not be deallocated, and must be <citerefentry
project='man-pages'><refentrytitle>free</refentrytitle><manvolnum>3</manvolnum></citerefentry>d
by the caller if necessary. The function may also be called safely
- on unset errors (error structures with both fields set to NULL),
+ on unset errors (error structures with both fields set to <constant>NULL</constant>),
in which case it performs no operation. This call will reset the
error structure after freeing the data, so that all fields are set
- to NULL. The structure may be reused afterwards.</para>
+ to <constant>NULL</constant>. The structure may be reused afterwards.</para>
</refsect1>
<refsect1>
diff --git a/man/sd_bus_error_add_map.xml b/man/sd_bus_error_add_map.xml
index 1dfc7259e2..f62b43fd7d 100644
--- a/man/sd_bus_error_add_map.xml
+++ b/man/sd_bus_error_add_map.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_error_add_map"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_get_current_handler.xml b/man/sd_bus_get_current_handler.xml
index 0a1843a849..c3756b83e0 100644
--- a/man/sd_bus_get_current_handler.xml
+++ b/man/sd_bus_get_current_handler.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_get_current_handler" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_get_fd.xml b/man/sd_bus_get_fd.xml
index 466606118b..689bba6f38 100644
--- a/man/sd_bus_get_fd.xml
+++ b/man/sd_bus_get_fd.xml
@@ -3,7 +3,7 @@
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<!--
- SPDX-License-Identifier: LGPL-2.1+
+ SPDX-License-Identifier: LGPL-2.1-or-later
Copyright © 2016 Julian Orth
-->
diff --git a/man/sd_bus_get_n_queued_read.xml b/man/sd_bus_get_n_queued_read.xml
index f949c936c2..c9978d8ba7 100644
--- a/man/sd_bus_get_n_queued_read.xml
+++ b/man/sd_bus_get_n_queued_read.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_get_n_queued_read">
diff --git a/man/sd_bus_get_name_creds.xml b/man/sd_bus_get_name_creds.xml
index 3731336573..6f0541d97a 100644
--- a/man/sd_bus_get_name_creds.xml
+++ b/man/sd_bus_get_name_creds.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_get_name_creds" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_get_name_machine_id.xml b/man/sd_bus_get_name_machine_id.xml
index 8f3ce6436d..8249485f25 100644
--- a/man/sd_bus_get_name_machine_id.xml
+++ b/man/sd_bus_get_name_machine_id.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_get_name_machine_id" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_interface_name_is_valid.xml b/man/sd_bus_interface_name_is_valid.xml
index a72024e5a7..81a3fad0e2 100644
--- a/man/sd_bus_interface_name_is_valid.xml
+++ b/man/sd_bus_interface_name_is_valid.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_interface_name_is_valid" xmlns:xi="http://www.w3.org/2001/XInclude">
<refentryinfo>
@@ -65,7 +65,7 @@
<title>Return Value</title>
<para>Those functions return 1 if the argument is a valid interface / service / member name or object
- path, and 0 if it is not. If the argument is NULL, an error is returned.</para>
+ path, and 0 if it is not. If the argument is <constant>NULL</constant>, an error is returned.</para>
<refsect2>
<title>Errors</title>
diff --git a/man/sd_bus_is_open.xml b/man/sd_bus_is_open.xml
index 4a21189c1d..8e0aed29b3 100644
--- a/man/sd_bus_is_open.xml
+++ b/man/sd_bus_is_open.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_is_open"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_list_names.xml b/man/sd_bus_list_names.xml
index ad7ecd00e3..d8f7e60b7d 100644
--- a/man/sd_bus_list_names.xml
+++ b/man/sd_bus_list_names.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_list_names"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_message_append.xml b/man/sd_bus_message_append.xml
index 7f9235954f..a1c87366de 100644
--- a/man/sd_bus_message_append.xml
+++ b/man/sd_bus_message_append.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_message_append"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_message_append_array.xml b/man/sd_bus_message_append_array.xml
index d81ddc558f..cc8e0db525 100644
--- a/man/sd_bus_message_append_array.xml
+++ b/man/sd_bus_message_append_array.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_message_append_array"
xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -57,6 +57,7 @@
<funcprototype>
<funcdef>int sd_bus_message_append_array_space</funcdef>
+ <paramdef>sd_bus_message *<parameter>m</parameter></paramdef>
<paramdef>char <parameter>type</parameter></paramdef>
<paramdef>size_t <parameter>size</parameter></paramdef>
<paramdef>void **<parameter>ptr</parameter></paramdef>
diff --git a/man/sd_bus_message_append_basic.xml b/man/sd_bus_message_append_basic.xml
index a180046b96..aca4d1fe7a 100644
--- a/man/sd_bus_message_append_basic.xml
+++ b/man/sd_bus_message_append_basic.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_message_append_basic" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_message_append_string_memfd.xml b/man/sd_bus_message_append_string_memfd.xml
index c59b8a4284..8559c60ba8 100644
--- a/man/sd_bus_message_append_string_memfd.xml
+++ b/man/sd_bus_message_append_string_memfd.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_message_append_string_memfd"
xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -54,20 +54,20 @@
<title>Description</title>
<para>The functions
- <function>sd_bus_message_append_string_memfd</function> and
- <function>sd_bus_message_append_string_iovec</function> can be
+ <function>sd_bus_message_append_string_memfd()</function> and
+ <function>sd_bus_message_append_string_iovec()</function> can be
used to append a single string (item of type <literal>s</literal>)
to message <parameter>m</parameter>.</para>
<para>In case of
- <function>sd_bus_message_append_string_memfd</function>, the
+ <function>sd_bus_message_append_string_memfd()</function>, the
contents of <parameter>memfd</parameter> are the string. They must
satisfy the same constraints as described for the
<literal>s</literal> type in
<citerefentry><refentrytitle>sd_bus_message_append_basic</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para>
<para>In case of
- <function>sd_bus_message_append_string_iovec</function>, the
+ <function>sd_bus_message_append_string_iovec()</function>, the
payload of <parameter>iov</parameter> is the string. It must
satisfy the same constraints as described for the
<literal>s</literal> type in
@@ -84,9 +84,9 @@
after this call.</para>
<para>The
- <function>sd_bus_message_append_string_space</function> function appends
+ <function>sd_bus_message_append_string_space()</function> function appends
space for a string to message <parameter>m</parameter>. It behaves
- similar to <function>sd_bus_message_append_basic</function> with
+ similar to <function>sd_bus_message_append_basic()</function> with
type <literal>s</literal>, but instead of copying a string into
the message, it returns a pointer to the destination area to
the caller in pointer <parameter>p</parameter>. Space for the string
diff --git a/man/sd_bus_message_append_strv.xml b/man/sd_bus_message_append_strv.xml
index 2ce321633d..67ba404137 100644
--- a/man/sd_bus_message_append_strv.xml
+++ b/man/sd_bus_message_append_strv.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_message_append_strv"
xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -37,7 +37,7 @@
<refsect1>
<title>Description</title>
- <para>The <function>sd_bus_message_append</function> function can be
+ <para>The <function>sd_bus_message_append()</function> function can be
used to append an array of strings to message
<parameter>m</parameter>. The parameter <parameter>l</parameter>
shall point to a <constant>NULL</constant>-terminated array of pointers
diff --git a/man/sd_bus_message_at_end.xml b/man/sd_bus_message_at_end.xml
index ce21c7e748..9cff48a2ba 100644
--- a/man/sd_bus_message_at_end.xml
+++ b/man/sd_bus_message_at_end.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_message_at_end" xmlns:xi="http://www.w3.org/2001/XInclude">
<refentryinfo>
diff --git a/man/sd_bus_message_copy.xml b/man/sd_bus_message_copy.xml
index cd8ad72e46..278bc35459 100644
--- a/man/sd_bus_message_copy.xml
+++ b/man/sd_bus_message_copy.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_message_copy" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_message_dump.xml b/man/sd_bus_message_dump.xml
index 720b114273..eac0541ca4 100644
--- a/man/sd_bus_message_dump.xml
+++ b/man/sd_bus_message_dump.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_message_dump"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_message_get_cookie.xml b/man/sd_bus_message_get_cookie.xml
index 7b9408c049..148bda5feb 100644
--- a/man/sd_bus_message_get_cookie.xml
+++ b/man/sd_bus_message_get_cookie.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_message_get_cookie"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_message_get_monotonic_usec.xml b/man/sd_bus_message_get_monotonic_usec.xml
index 958b832534..605e2b4afe 100644
--- a/man/sd_bus_message_get_monotonic_usec.xml
+++ b/man/sd_bus_message_get_monotonic_usec.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_message_get_monotonic_usec"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_message_get_signature.xml b/man/sd_bus_message_get_signature.xml
index e3f41346b6..203145bcdd 100644
--- a/man/sd_bus_message_get_signature.xml
+++ b/man/sd_bus_message_get_signature.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_message_get_signature" xmlns:xi="http://www.w3.org/2001/XInclude">
<refentryinfo>
diff --git a/man/sd_bus_message_get_type.xml b/man/sd_bus_message_get_type.xml
index 442c763a49..dd86316832 100644
--- a/man/sd_bus_message_get_type.xml
+++ b/man/sd_bus_message_get_type.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_message_get_type" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_message_new.xml b/man/sd_bus_message_new.xml
index 7eb2c49fcc..4907c5a755 100644
--- a/man/sd_bus_message_new.xml
+++ b/man/sd_bus_message_new.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_message_new" xmlns:xi="http://www.w3.org/2001/XInclude">
<refentryinfo>
diff --git a/man/sd_bus_message_new_method_call.xml b/man/sd_bus_message_new_method_call.xml
index cfb13af51f..f6278e3c73 100644
--- a/man/sd_bus_message_new_method_call.xml
+++ b/man/sd_bus_message_new_method_call.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_message_new_method_call"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_message_new_method_error.xml b/man/sd_bus_message_new_method_error.xml
index 39bb24c3a5..92c4ac680e 100644
--- a/man/sd_bus_message_new_method_error.xml
+++ b/man/sd_bus_message_new_method_error.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_message_new_method_error"
xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -143,8 +143,8 @@
<para>Message <parameter>call</parameter> is not a method call
message.</para>
- <para>The error <parameter>error</parameter> parameter to
- <function>sd_bus_message_new_method_error</function> is not set, see
+ <para>The error <parameter>e</parameter> parameter to
+ <function>sd_bus_message_new_method_error()</function> is not set, see
<citerefentry><refentrytitle>sd_bus_error_is_set</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
</para>
</listitem>
diff --git a/man/sd_bus_message_new_signal.xml b/man/sd_bus_message_new_signal.xml
index 5ac35e7a3a..17862deb0b 100644
--- a/man/sd_bus_message_new_signal.xml
+++ b/man/sd_bus_message_new_signal.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_message_new_signal"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_message_open_container.xml b/man/sd_bus_message_open_container.xml
index 64fda41b12..27b953ecc1 100644
--- a/man/sd_bus_message_open_container.xml
+++ b/man/sd_bus_message_open_container.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_message_open_container"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_message_read.xml b/man/sd_bus_message_read.xml
index 2b5f1000be..12a2c77ea8 100644
--- a/man/sd_bus_message_read.xml
+++ b/man/sd_bus_message_read.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_message_read"
xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -44,6 +44,7 @@
<funcprototype>
<funcdef>int <function>sd_bus_message_peek_type</function></funcdef>
+ <paramdef>sd_bus_message *<parameter>m</parameter></paramdef>
<paramdef>char *<parameter>type</parameter></paramdef>
<paramdef>const char **<parameter>contents</parameter></paramdef>
</funcprototype>
diff --git a/man/sd_bus_message_read_array.xml b/man/sd_bus_message_read_array.xml
index 9bac0246c8..daff9097da 100644
--- a/man/sd_bus_message_read_array.xml
+++ b/man/sd_bus_message_read_array.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_message_read_array">
diff --git a/man/sd_bus_message_read_basic.xml b/man/sd_bus_message_read_basic.xml
index dc9f960618..443fcdaad0 100644
--- a/man/sd_bus_message_read_basic.xml
+++ b/man/sd_bus_message_read_basic.xml
@@ -3,7 +3,7 @@
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<!--
- SPDX-License-Identifier: LGPL-2.1+
+ SPDX-License-Identifier: LGPL-2.1-or-later
Copyright © 2016 Julian Orth
-->
@@ -188,9 +188,9 @@
<title>Return Value</title>
<para>
- On success, <function>sd_bus_message_read_basic()</function> returns 0 or
- a positive integer. On failure, it returns a negative errno-style error
- code.
+ On success, <function>sd_bus_message_read_basic()</function> returns a positive integer.
+ If the end of the currently opened array has been reached, it returns 0.
+ On failure, it returns a negative errno-style error code.
</para>
<refsect2 id='errors'>
diff --git a/man/sd_bus_message_read_strv.xml b/man/sd_bus_message_read_strv.xml
index a86bbe45d8..a90ae84098 100644
--- a/man/sd_bus_message_read_strv.xml
+++ b/man/sd_bus_message_read_strv.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_message_read_strv">
diff --git a/man/sd_bus_message_rewind.xml b/man/sd_bus_message_rewind.xml
index cbfa2511d2..5640d2821a 100644
--- a/man/sd_bus_message_rewind.xml
+++ b/man/sd_bus_message_rewind.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_message_rewind"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_message_seal.xml b/man/sd_bus_message_seal.xml
index 03783d9279..53d3a218bb 100644
--- a/man/sd_bus_message_seal.xml
+++ b/man/sd_bus_message_seal.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_message_seal"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_message_sensitive.xml b/man/sd_bus_message_sensitive.xml
index 8f3e8aeb8e..f953965983 100644
--- a/man/sd_bus_message_sensitive.xml
+++ b/man/sd_bus_message_sensitive.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_message_sensitive" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_message_set_destination.xml b/man/sd_bus_message_set_destination.xml
index 51da5ff3b8..6308b5e23c 100644
--- a/man/sd_bus_message_set_destination.xml
+++ b/man/sd_bus_message_set_destination.xml
@@ -1,6 +1,6 @@
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_message_set_destination" xmlns:xi="http://www.w3.org/2001/XInclude">
<refentryinfo>
diff --git a/man/sd_bus_message_set_expect_reply.xml b/man/sd_bus_message_set_expect_reply.xml
index 43a94c83c7..dccb99ad81 100644
--- a/man/sd_bus_message_set_expect_reply.xml
+++ b/man/sd_bus_message_set_expect_reply.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_message_set_expect_reply" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_message_skip.xml b/man/sd_bus_message_skip.xml
index 0e740ab261..7a227c4a27 100644
--- a/man/sd_bus_message_skip.xml
+++ b/man/sd_bus_message_skip.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_message_skip" xmlns:xi="http://www.w3.org/2001/XInclude">
<refentryinfo>
diff --git a/man/sd_bus_message_verify_type.xml b/man/sd_bus_message_verify_type.xml
index e03a253885..9f3a34790a 100644
--- a/man/sd_bus_message_verify_type.xml
+++ b/man/sd_bus_message_verify_type.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_message_verify_type" xmlns:xi="http://www.w3.org/2001/XInclude">
<refentryinfo>
diff --git a/man/sd_bus_negotiate_fds.xml b/man/sd_bus_negotiate_fds.xml
index 340049fc97..a4893b62e7 100644
--- a/man/sd_bus_negotiate_fds.xml
+++ b/man/sd_bus_negotiate_fds.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_negotiate_fds" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_new.xml b/man/sd_bus_new.xml
index ceca3350fc..355b34bad8 100644
--- a/man/sd_bus_new.xml
+++ b/man/sd_bus_new.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_new" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_path_encode.xml b/man/sd_bus_path_encode.xml
index ade11bc15e..5cdb1d77a1 100644
--- a/man/sd_bus_path_encode.xml
+++ b/man/sd_bus_path_encode.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_path_encode" xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -118,7 +118,7 @@
will be stored there. Each <literal>%</literal> character will
only match the current label. It will never match across labels.
Furthermore, only a single directive is allowed per label.
- If <literal>NULL</literal> is passed as output storage, the
+ If <constant>NULL</constant> is passed as output storage, the
label is verified but not returned to the caller.</para>
</refsect1>
@@ -130,7 +130,7 @@
argument. On success, <function>sd_bus_path_decode()</function>
returns a positive value if the prefixed matched, or 0 if it
did not. If the prefix matched, the external identifier is returned
- in the return parameter. If it did not match, NULL is returned in
+ in the return parameter. If it did not match, <constant>NULL</constant> is returned in
the return parameter. On failure, a negative errno-style error
number is returned by either function. The returned strings must
be
diff --git a/man/sd_bus_process.xml b/man/sd_bus_process.xml
index 8f35388da3..09b3c50dde 100644
--- a/man/sd_bus_process.xml
+++ b/man/sd_bus_process.xml
@@ -3,7 +3,7 @@
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<!--
- SPDX-License-Identifier: LGPL-2.1+
+ SPDX-License-Identifier: LGPL-2.1-or-later
Copyright © 2016 Julian Orth
-->
@@ -56,10 +56,10 @@
<parameter>ret</parameter> is not <constant>NULL</constant> and the call processed a message,
<parameter>*ret</parameter> is set to this message. The caller owns a reference to this message and should call
<citerefentry><refentrytitle>sd_bus_message_unref</refentrytitle><manvolnum>3</manvolnum></citerefentry> when the
- message is no longer needed. If <parameter>ret</parameter> is not NULL, progress was made, but no message was
+ message is no longer needed. If <parameter>ret</parameter> is not <constant>NULL</constant>, progress was made, but no message was
processed, <parameter>*ret</parameter> is set to <constant>NULL</constant>.</para>
- <para>If a the bus object is connected to an
+ <para>If the bus object is connected to an
<citerefentry><refentrytitle>sd-event</refentrytitle><manvolnum>3</manvolnum></citerefentry> event loop (with
<citerefentry><refentrytitle>sd_bus_attach_event</refentrytitle><manvolnum>3</manvolnum></citerefentry>), it is not
necessary to call <function>sd_bus_process()</function> directly as it is invoked automatically when
diff --git a/man/sd_bus_query_sender_creds.xml b/man/sd_bus_query_sender_creds.xml
index 54cd817717..d0769e8c85 100644
--- a/man/sd_bus_query_sender_creds.xml
+++ b/man/sd_bus_query_sender_creds.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_query_sender_creds" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_reply_method_error.xml b/man/sd_bus_reply_method_error.xml
index dcf9ee299f..c9553a06b5 100644
--- a/man/sd_bus_reply_method_error.xml
+++ b/man/sd_bus_reply_method_error.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_reply_method_error"
xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -127,8 +127,8 @@
<para>Message <parameter>call</parameter> is not attached to a bus.</para>
- <para>The error parameter <parameter>error</parameter> to
- <function>sd_bus_reply_method_error</function> is not set, see
+ <para>The error parameter <parameter>e</parameter> to
+ <function>sd_bus_reply_method_error()</function> is not set, see
<citerefentry><refentrytitle>sd_bus_error_is_set</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
</para>
</listitem>
diff --git a/man/sd_bus_reply_method_return.xml b/man/sd_bus_reply_method_return.xml
index a6052c61fd..76e4adecd5 100644
--- a/man/sd_bus_reply_method_return.xml
+++ b/man/sd_bus_reply_method_return.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_reply_method_return"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_request_name.xml b/man/sd_bus_request_name.xml
index f8a49c006b..ea4ea2279d 100644
--- a/man/sd_bus_request_name.xml
+++ b/man/sd_bus_request_name.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_request_name"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_send.xml b/man/sd_bus_send.xml
index 233dd7c4fa..c4c623a1e8 100644
--- a/man/sd_bus_send.xml
+++ b/man/sd_bus_send.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_send"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_set_address.xml b/man/sd_bus_set_address.xml
index 8404da53f1..21742bdf5f 100644
--- a/man/sd_bus_set_address.xml
+++ b/man/sd_bus_set_address.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_set_address"
xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -112,7 +112,7 @@
<citerefentry><refentrytitle>sd_bus_open</refentrytitle><manvolnum>3</manvolnum></citerefentry> and
similar calls, based on environment variables or built-in defaults.</para>
- <para><function>sd_bus_set_exec</function> is a shorthand function for setting a
+ <para><function>sd_bus_set_exec()</function> is a shorthand function for setting a
<literal>unixexec</literal> address that spawns the given executable with the given arguments.
If <parameter>argv</parameter> is <constant>NULL</constant>, the given executable is spawned
without any extra arguments.</para>
diff --git a/man/sd_bus_set_close_on_exit.xml b/man/sd_bus_set_close_on_exit.xml
index 64ca356443..cf3bbae0b5 100644
--- a/man/sd_bus_set_close_on_exit.xml
+++ b/man/sd_bus_set_close_on_exit.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_set_close_on_exit"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_set_connected_signal.xml b/man/sd_bus_set_connected_signal.xml
index b025112b63..b2dfcf0cf9 100644
--- a/man/sd_bus_set_connected_signal.xml
+++ b/man/sd_bus_set_connected_signal.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_set_connected_signal"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_set_description.xml b/man/sd_bus_set_description.xml
index bd3ec78864..bbd3835f01 100644
--- a/man/sd_bus_set_description.xml
+++ b/man/sd_bus_set_description.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_set_description" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_set_exit_on_disconnect.xml b/man/sd_bus_set_exit_on_disconnect.xml
index 8bd904ba40..a694aef4f2 100644
--- a/man/sd_bus_set_exit_on_disconnect.xml
+++ b/man/sd_bus_set_exit_on_disconnect.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_set_exit_on_disconnect"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_set_method_call_timeout.xml b/man/sd_bus_set_method_call_timeout.xml
index 006020aae7..0db13e22ae 100644
--- a/man/sd_bus_set_method_call_timeout.xml
+++ b/man/sd_bus_set_method_call_timeout.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_set_method_call_timeout" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_set_property.xml b/man/sd_bus_set_property.xml
index 411ccad28c..66477b3500 100644
--- a/man/sd_bus_set_property.xml
+++ b/man/sd_bus_set_property.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_set_property"
xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -157,7 +157,7 @@
<para>See the
<citerefentry><refentrytitle>sd_bus_call_method</refentrytitle><manvolnum>3</manvolnum></citerefentry>
- man page for a list of possible errors</para>
+ man page for a list of possible errors.</para>
</refsect2>
</refsect1>
diff --git a/man/sd_bus_set_sender.xml b/man/sd_bus_set_sender.xml
index b3f67d9f91..c6e07acc97 100644
--- a/man/sd_bus_set_sender.xml
+++ b/man/sd_bus_set_sender.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_set_sender"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_set_server.xml b/man/sd_bus_set_server.xml
index 625dfd4468..e2cd74da90 100644
--- a/man/sd_bus_set_server.xml
+++ b/man/sd_bus_set_server.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_set_server"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_set_watch_bind.xml b/man/sd_bus_set_watch_bind.xml
index 5638cdc0a6..20f6f53a2c 100644
--- a/man/sd_bus_set_watch_bind.xml
+++ b/man/sd_bus_set_watch_bind.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_set_watch_bind"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_slot_get_bus.xml b/man/sd_bus_slot_get_bus.xml
index 26541a9d97..48400ad15a 100644
--- a/man/sd_bus_slot_get_bus.xml
+++ b/man/sd_bus_slot_get_bus.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_slot_get_bus" xmlns:xi="http://www.w3.org/2001/XInclude">
<refentryinfo>
diff --git a/man/sd_bus_slot_ref.xml b/man/sd_bus_slot_ref.xml
index ef144ece6d..c200bc4a5a 100644
--- a/man/sd_bus_slot_ref.xml
+++ b/man/sd_bus_slot_ref.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_slot_ref" xmlns:xi="http://www.w3.org/2001/XInclude">
<refentryinfo>
diff --git a/man/sd_bus_slot_set_description.xml b/man/sd_bus_slot_set_description.xml
index 9bc2ba8592..4a8df0cc48 100644
--- a/man/sd_bus_slot_set_description.xml
+++ b/man/sd_bus_slot_set_description.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_slot_set_description" xmlns:xi="http://www.w3.org/2001/XInclude">
<refentryinfo>
diff --git a/man/sd_bus_slot_set_destroy_callback.xml b/man/sd_bus_slot_set_destroy_callback.xml
index c2a0876e21..4de77d2baa 100644
--- a/man/sd_bus_slot_set_destroy_callback.xml
+++ b/man/sd_bus_slot_set_destroy_callback.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_slot_set_destroy_callback"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_slot_set_floating.xml b/man/sd_bus_slot_set_floating.xml
index ecfc079514..dd3a9500cf 100644
--- a/man/sd_bus_slot_set_floating.xml
+++ b/man/sd_bus_slot_set_floating.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_slot_set_floating" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_slot_set_userdata.xml b/man/sd_bus_slot_set_userdata.xml
index f0456b4413..9fa5f3a978 100644
--- a/man/sd_bus_slot_set_userdata.xml
+++ b/man/sd_bus_slot_set_userdata.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_slot_set_userdata" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_start.xml b/man/sd_bus_start.xml
index 0be07f4777..68fe3e0e22 100644
--- a/man/sd_bus_start.xml
+++ b/man/sd_bus_start.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_start"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_track_add_name.xml b/man/sd_bus_track_add_name.xml
index 29501adf57..ae90e44882 100644
--- a/man/sd_bus_track_add_name.xml
+++ b/man/sd_bus_track_add_name.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_track_add_name" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_bus_track_new.xml b/man/sd_bus_track_new.xml
index 9b79eb4c2d..2147ad16dd 100644
--- a/man/sd_bus_track_new.xml
+++ b/man/sd_bus_track_new.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_bus_track_new" xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -101,11 +101,11 @@
<function>sd_bus_track_add_sender()</function>. They may be dropped again via
<function>sd_bus_track_remove_name()</function> and
<function>sd_bus_track_remove_sender()</function>. Alternatively, references on peers are removed automatically
- when they disconnect from the bus. If non-NULL the <parameter>handler</parameter> may specify a function that is
- invoked whenever the last reference is dropped, regardless whether the reference is dropped explicitly via
- <function>sd_bus_track_remove_name()</function> or implicitly because the peer disconnected from the bus. The final
- argument <parameter>userdata</parameter> may be used to attach a generic user data pointer to the object. This
- pointer is passed to the handler callback when it is invoked.</para>
+ when they disconnect from the bus. If non-<constant>NULL</constant> the <parameter>handler</parameter> may specify
+ a function that is invoked whenever the last reference is dropped, regardless whether the reference is dropped
+ explicitly via <function>sd_bus_track_remove_name()</function> or implicitly because the peer disconnected from the
+ bus. The final argument <parameter>userdata</parameter> may be used to attach a generic user data pointer to the
+ object. This pointer is passed to the handler callback when it is invoked.</para>
<para><function>sd_bus_track_ref()</function> creates a new reference to a bus peer tracking object. This object
will not be destroyed until <function>sd_bus_track_unref()</function> has been called as many times plus once
diff --git a/man/sd_bus_wait.xml b/man/sd_bus_wait.xml
index 7b97dc02fd..005602d04e 100644
--- a/man/sd_bus_wait.xml
+++ b/man/sd_bus_wait.xml
@@ -3,7 +3,7 @@
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<!--
- SPDX-License-Identifier: LGPL-2.1+
+ SPDX-License-Identifier: LGPL-2.1-or-later
Copyright © 2016 Julian Orth
-->
diff --git a/man/sd_event_add_child.xml b/man/sd_event_add_child.xml
index 74ebe6d264..2961b3ee5e 100644
--- a/man/sd_event_add_child.xml
+++ b/man/sd_event_add_child.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_event_add_child" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_event_add_defer.xml b/man/sd_event_add_defer.xml
index d1d6d980ee..54e8823000 100644
--- a/man/sd_event_add_defer.xml
+++ b/man/sd_event_add_defer.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_event_add_defer" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_event_add_inotify.xml b/man/sd_event_add_inotify.xml
index 27d43853e6..1681143eb1 100644
--- a/man/sd_event_add_inotify.xml
+++ b/man/sd_event_add_inotify.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_event_add_inotify" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_event_add_io.xml b/man/sd_event_add_io.xml
index 51238f4755..323e57c79d 100644
--- a/man/sd_event_add_io.xml
+++ b/man/sd_event_add_io.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_event_add_io" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_event_add_signal.xml b/man/sd_event_add_signal.xml
index 85de53120f..1f0854f6cb 100644
--- a/man/sd_event_add_signal.xml
+++ b/man/sd_event_add_signal.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_event_add_signal" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_event_add_time.xml b/man/sd_event_add_time.xml
index 24a316f9ed..3e8927f966 100644
--- a/man/sd_event_add_time.xml
+++ b/man/sd_event_add_time.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_event_add_time" xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -17,8 +17,10 @@
<refnamediv>
<refname>sd_event_add_time</refname>
+ <refname>sd_event_add_time_relative</refname>
<refname>sd_event_source_get_time</refname>
<refname>sd_event_source_set_time</refname>
+ <refname>sd_event_source_set_time_relative</refname>
<refname>sd_event_source_get_time_accuracy</refname>
<refname>sd_event_source_set_time_accuracy</refname>
<refname>sd_event_source_get_time_clock</refname>
diff --git a/man/sd_event_exit.xml b/man/sd_event_exit.xml
index 53aed70012..e13cbe18ab 100644
--- a/man/sd_event_exit.xml
+++ b/man/sd_event_exit.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_event_exit" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_event_get_fd.xml b/man/sd_event_get_fd.xml
index 3e78182137..a3b11e41ee 100644
--- a/man/sd_event_get_fd.xml
+++ b/man/sd_event_get_fd.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_event_get_fd" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_event_new.xml b/man/sd_event_new.xml
index 0e572c40ee..352137ec09 100644
--- a/man/sd_event_new.xml
+++ b/man/sd_event_new.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_event_new" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_event_now.xml b/man/sd_event_now.xml
index 2d2b085015..789b9e0288 100644
--- a/man/sd_event_now.xml
+++ b/man/sd_event_now.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_event_now" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_event_run.xml b/man/sd_event_run.xml
index 5c33d61fdf..81c51b7060 100644
--- a/man/sd_event_run.xml
+++ b/man/sd_event_run.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_event_run" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_event_set_watchdog.xml b/man/sd_event_set_watchdog.xml
index cacc683b57..28d647c7bc 100644
--- a/man/sd_event_set_watchdog.xml
+++ b/man/sd_event_set_watchdog.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_event_set_watchdog" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_event_source_get_event.xml b/man/sd_event_source_get_event.xml
index 2b059a3523..a850583100 100644
--- a/man/sd_event_source_get_event.xml
+++ b/man/sd_event_source_get_event.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_event_source_get_event" xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -51,7 +51,7 @@
<para>On success, <function>sd_event_source_get_event()</function>
returns the associated event loop object. On failure, it returns
- NULL.</para>
+ <constant>NULL</constant>.</para>
</refsect1>
<xi:include href="libsystemd-pkgconfig.xml" />
diff --git a/man/sd_event_source_get_pending.xml b/man/sd_event_source_get_pending.xml
index 603d4ad377..5906930b3c 100644
--- a/man/sd_event_source_get_pending.xml
+++ b/man/sd_event_source_get_pending.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_event_source_get_pending" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_event_source_set_description.xml b/man/sd_event_source_set_description.xml
index 717cc5be9e..bea3e71914 100644
--- a/man/sd_event_source_set_description.xml
+++ b/man/sd_event_source_set_description.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_event_source_set_description" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_event_source_set_destroy_callback.xml b/man/sd_event_source_set_destroy_callback.xml
index 3df926b863..4e39f21020 100644
--- a/man/sd_event_source_set_destroy_callback.xml
+++ b/man/sd_event_source_set_destroy_callback.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_event_source_set_destroy_callback"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_event_source_set_enabled.xml b/man/sd_event_source_set_enabled.xml
index 6a7a39b427..cf00695fda 100644
--- a/man/sd_event_source_set_enabled.xml
+++ b/man/sd_event_source_set_enabled.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_event_source_set_enabled" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_event_source_set_exit_on_failure.xml b/man/sd_event_source_set_exit_on_failure.xml
index f9d87488c4..6f839cddc0 100644
--- a/man/sd_event_source_set_exit_on_failure.xml
+++ b/man/sd_event_source_set_exit_on_failure.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_event_source_set_exit_on_failure" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_event_source_set_floating.xml b/man/sd_event_source_set_floating.xml
index 89341d18c4..7f3ed86a65 100644
--- a/man/sd_event_source_set_floating.xml
+++ b/man/sd_event_source_set_floating.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_event_source_set_floating" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_event_source_set_prepare.xml b/man/sd_event_source_set_prepare.xml
index 63c33ca19e..d52c55b3db 100644
--- a/man/sd_event_source_set_prepare.xml
+++ b/man/sd_event_source_set_prepare.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_event_source_set_prepare" xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -52,7 +52,7 @@
when the event source was created. The event source will be disabled
if the callback function returns a negative error code. The callback
function may be used to reconfigure the precise events to wait for.
- If the <parameter>callback</parameter> parameter is passed as NULL
+ If the <parameter>callback</parameter> parameter is passed as <constant>NULL</constant>
the callback function is reset. </para>
<para>Event source objects have no preparation callback associated
diff --git a/man/sd_event_source_set_priority.xml b/man/sd_event_source_set_priority.xml
index d1cb416dcb..2616c12e3f 100644
--- a/man/sd_event_source_set_priority.xml
+++ b/man/sd_event_source_set_priority.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_event_source_set_priority" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_event_source_set_userdata.xml b/man/sd_event_source_set_userdata.xml
index fe315845fa..e8e5dc1444 100644
--- a/man/sd_event_source_set_userdata.xml
+++ b/man/sd_event_source_set_userdata.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_event_source_set_userdata" xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -70,7 +70,7 @@
<function>sd_event_source_set_userdata()</function> and
<function>sd_event_source_get_userdata()</function> return the
previously set user data pointer. On failure, they return
- NULL.</para>
+ <constant>NULL</constant>.</para>
</refsect1>
<xi:include href="libsystemd-pkgconfig.xml" />
diff --git a/man/sd_event_source_unref.xml b/man/sd_event_source_unref.xml
index 81131fa737..a7699e3547 100644
--- a/man/sd_event_source_unref.xml
+++ b/man/sd_event_source_unref.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_event_source_unref" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_event_wait.xml b/man/sd_event_wait.xml
index 210a0c948d..25e21b9d5c 100644
--- a/man/sd_event_wait.xml
+++ b/man/sd_event_wait.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_event_wait" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_get_seats.xml b/man/sd_get_seats.xml
index ed4b77b3ea..818f9684c3 100644
--- a/man/sd_get_seats.xml
+++ b/man/sd_get_seats.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_get_seats" conditional='HAVE_PAM'
xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -56,7 +56,7 @@
<para><function>sd_get_seats()</function> may be used to determine
all currently available local seats. Returns the number of seat
- identifiers and if the input pointer is non-NULL, a
+ identifiers and if the input pointer is non-<constant>NULL</constant>, a
<constant>NULL</constant>-terminated array of seat identifiers
is stored at the address.
The returned array and all strings it references need to be freed
diff --git a/man/sd_hwdb_get.xml b/man/sd_hwdb_get.xml
index dbaaf6292c..6a6594f3f8 100644
--- a/man/sd_hwdb_get.xml
+++ b/man/sd_hwdb_get.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_hwdb_get" xmlns:xi="http://www.w3.org/2001/XInclude">
<refentryinfo>
@@ -84,7 +84,7 @@
<citerefentry><refentrytitle>hwdb</refentrytitle><manvolnum>7</manvolnum></citerefentry> for
details.</para>
- <para>The <function>SD_HWDB_FOREACH_PROPERTY</function> macro combines
+ <para>The <function>SD_HWDB_FOREACH_PROPERTY()</function> macro combines
<function>sd_hwdb_seek()</function> and <function>sd_hwdb_enumerate()</function>. No error handling is
performed and iteration simply stops on error. See the example below.</para>
</refsect1>
diff --git a/man/sd_hwdb_new.xml b/man/sd_hwdb_new.xml
index 8f1c01b731..c071599ae6 100644
--- a/man/sd_hwdb_new.xml
+++ b/man/sd_hwdb_new.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_hwdb_new" xmlns:xi="http://www.w3.org/2001/XInclude">
<refentryinfo>
diff --git a/man/sd_id128_get_machine.xml b/man/sd_id128_get_machine.xml
index bb85d8839f..2df4496f19 100644
--- a/man/sd_id128_get_machine.xml
+++ b/man/sd_id128_get_machine.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_id128_get_machine" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_id128_randomize.xml b/man/sd_id128_randomize.xml
index 9cf55ddab0..cf6ca7726f 100644
--- a/man/sd_id128_randomize.xml
+++ b/man/sd_id128_randomize.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_id128_randomize" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_id128_to_string.xml b/man/sd_id128_to_string.xml
index 4f585e35a0..54cab1af5a 100644
--- a/man/sd_id128_to_string.xml
+++ b/man/sd_id128_to_string.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_id128_to_string" xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -50,8 +50,9 @@
<para><function>sd_id128_from_string()</function> implements the reverse operation: it takes a 33 character string
with 32 hexadecimal digits (either lowercase or uppercase, terminated by <constant>NUL</constant>) and parses them
back into a 128-bit ID returned in <parameter>ret</parameter>. Alternatively, this call can also parse a
- 37-character string with a 128-bit ID formatted as RFC UUID. If <parameter>ret</parameter> is passed as NULL the
- function will validate the passed ID string, but not actually return it in parsed form.</para>
+ 37-character string with a 128-bit ID formatted as RFC UUID. If <parameter>ret</parameter> is passed as
+ <constant>NULL</constant> the function will validate the passed ID string, but not actually return it in parsed
+ form.</para>
<para>For more information about the <literal>sd_id128_t</literal>
type see
@@ -63,9 +64,8 @@
easier to use a format string for
<citerefentry project='man-pages'><refentrytitle>printf</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
This is easily done using the
- <function>SD_ID128_FORMAT_STR</function> and
- <function>SD_ID128_FORMAT_VAL()</function> macros. For more
- information see
+ <constant>SD_ID128_FORMAT_STR</constant> and <function>SD_ID128_FORMAT_VAL()</function> macros. For
+ more information see
<citerefentry><refentrytitle>sd-id128</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para>
</refsect1>
@@ -74,7 +74,7 @@
<para><function>sd_id128_to_string()</function> always succeeds
and returns a pointer to the string array passed in.
- <function>sd_id128_from_string</function> returns 0 on success, in
+ <function>sd_id128_from_string()</function> returns 0 on success, in
which case <parameter>ret</parameter> is filled in, or a negative
errno-style error code.</para>
</refsect1>
diff --git a/man/sd_is_fifo.xml b/man/sd_is_fifo.xml
index 339bb32707..99f1524004 100644
--- a/man/sd_is_fifo.xml
+++ b/man/sd_is_fifo.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_is_fifo"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_journal_add_match.xml b/man/sd_journal_add_match.xml
index 83f7fe9242..f7f5ee364a 100644
--- a/man/sd_journal_add_match.xml
+++ b/man/sd_journal_add_match.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_journal_add_match" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_journal_enumerate_fields.xml b/man/sd_journal_enumerate_fields.xml
index 791d1c7469..e074906980 100644
--- a/man/sd_journal_enumerate_fields.xml
+++ b/man/sd_journal_enumerate_fields.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_journal_enumerate_fields" xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -91,7 +91,7 @@
<refsect1>
<title>Examples</title>
- <para>Use the <function>SD_JOURNAL_FOREACH_FIELD</function> macro to iterate through all field names in use in the
+ <para>Use the <function>SD_JOURNAL_FOREACH_FIELD()</function> macro to iterate through all field names in use in the
current journal.</para>
<programlisting>#include &lt;stdio.h&gt;
diff --git a/man/sd_journal_get_catalog.xml b/man/sd_journal_get_catalog.xml
index 8c7058a132..ad5992f0ba 100644
--- a/man/sd_journal_get_catalog.xml
+++ b/man/sd_journal_get_catalog.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_journal_get_catalog" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_journal_get_cursor.xml b/man/sd_journal_get_cursor.xml
index 851bfde816..acaba06960 100644
--- a/man/sd_journal_get_cursor.xml
+++ b/man/sd_journal_get_cursor.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_journal_get_cursor" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_journal_get_cutoff_realtime_usec.xml b/man/sd_journal_get_cutoff_realtime_usec.xml
index a76855feaa..445130e1cb 100644
--- a/man/sd_journal_get_cutoff_realtime_usec.xml
+++ b/man/sd_journal_get_cutoff_realtime_usec.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_journal_get_cutoff_realtime_usec" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_journal_get_data.xml b/man/sd_journal_get_data.xml
index 209f5deaa1..2955cd264b 100644
--- a/man/sd_journal_get_data.xml
+++ b/man/sd_journal_get_data.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_journal_get_data" xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -245,7 +245,7 @@
<function>sd_journal_get_data()</function>.</para>
<para>Use the
- <function>SD_JOURNAL_FOREACH_DATA</function> macro to
+ <function>SD_JOURNAL_FOREACH_DATA()</function> macro to
iterate through all fields of the current journal
entry:</para>
diff --git a/man/sd_journal_get_fd.xml b/man/sd_journal_get_fd.xml
index fc55bbd5ff..52360c76c3 100644
--- a/man/sd_journal_get_fd.xml
+++ b/man/sd_journal_get_fd.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_journal_get_fd" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_journal_get_realtime_usec.xml b/man/sd_journal_get_realtime_usec.xml
index f8150ded19..025b6a1a5a 100644
--- a/man/sd_journal_get_realtime_usec.xml
+++ b/man/sd_journal_get_realtime_usec.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_journal_get_realtime_usec"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_journal_get_usage.xml b/man/sd_journal_get_usage.xml
index 6368371562..e6fcd67df1 100644
--- a/man/sd_journal_get_usage.xml
+++ b/man/sd_journal_get_usage.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_journal_get_usage" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_journal_has_runtime_files.xml b/man/sd_journal_has_runtime_files.xml
index 02fdc12473..e452b49e82 100644
--- a/man/sd_journal_has_runtime_files.xml
+++ b/man/sd_journal_has_runtime_files.xml
@@ -3,7 +3,7 @@
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<!--
- SPDX-License-Identifier: LGPL-2.1+
+ SPDX-License-Identifier: LGPL-2.1-or-later
-->
<refentry id="sd_journal_has_runtime_files" xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -57,7 +57,7 @@
<title>Return value</title>
<para>Both <function>sd_journal_has_runtime_files()</function>
and <function>sd_journal_has_persistent_files()</function> return -EINVAL
- if their argument is NULL.
+ if their argument is <constant>NULL</constant>.
</para>
</refsect1>
diff --git a/man/sd_journal_next.xml b/man/sd_journal_next.xml
index 20d153db64..5608331737 100644
--- a/man/sd_journal_next.xml
+++ b/man/sd_journal_next.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_journal_next" xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -78,9 +78,9 @@
the read pointer back one entry.</para>
<para><function>sd_journal_next_skip()</function> and
- <function>sd_journal_previous_skip()</function> advance/set back
- the read pointer by multiple entries at once, as specified in the
- <varname>skip</varname> parameter.</para>
+ <function>sd_journal_previous_skip()</function> advance/set back the read pointer by multiple
+ entries at once, as specified in the <varname>skip</varname> parameter. The <varname>skip</varname>
+ parameter must be less than or equal to 2147483647 (2^31-1).</para>
<para>The journal is strictly ordered by reception time, and hence
advancing to the next entry guarantees that the entry then
diff --git a/man/sd_journal_open.xml b/man/sd_journal_open.xml
index bdece26ccc..8f62c966ea 100644
--- a/man/sd_journal_open.xml
+++ b/man/sd_journal_open.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_journal_open"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_journal_print.xml b/man/sd_journal_print.xml
index 84adab5c7b..68a4a0a5c0 100644
--- a/man/sd_journal_print.xml
+++ b/man/sd_journal_print.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_journal_print" xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -192,10 +192,10 @@ sd_journal_send("MESSAGE=Hello World, this is PID %lu!", (unsigned long) getpid(
<constant>SD_JOURNAL_SUPPRESS_LOCATION</constant> before including <filename>sd-journal.h</filename>.
</para>
- <para><function>sd_journal_print_with_location</function>,
- <function>sd_journal_printv_with_location</function>, <function>sd_journal_send_with_location</function>,
- <function>sd_journal_sendv_with_location</function>, and
- <function>sd_journal_perror_with_location</function> are similar to their counterparts without
+ <para><function>sd_journal_print_with_location()</function>,
+ <function>sd_journal_printv_with_location()</function>, <function>sd_journal_send_with_location()</function>,
+ <function>sd_journal_sendv_with_location()</function>, and
+ <function>sd_journal_perror_with_location()</function> are similar to their counterparts without
<literal>_with_location</literal>, but accept additional parameters to explicitly set the source file
name, function, and line. Those arguments must contain valid journal entries including the variable name,
e.g. <literal>CODE_FILE=src/foo.c</literal>, <literal>CODE_LINE=666</literal>,
@@ -243,10 +243,10 @@ sd_journal_send("MESSAGE=Hello World, this is PID %lu!", (unsigned long) getpid(
<citerefentry project='man-pages'><refentrytitle>signal-safety</refentrytitle><manvolnum>7</manvolnum></citerefentry>.
</para>
- <para><function>sd_journal_print</function>,
- <function>sd_journal_printv</function>,
- <function>sd_journal_send</function>,
- <function>sd_journal_perror</function>,
+ <para><function>sd_journal_print()</function>,
+ <function>sd_journal_printv()</function>,
+ <function>sd_journal_send()</function>,
+ <function>sd_journal_perror()</function>,
and their counterparts with <literal>_with_location</literal>
are not async signal safe.</para>
</refsect1>
diff --git a/man/sd_journal_query_unique.xml b/man/sd_journal_query_unique.xml
index 88beaa6460..26188f9e7e 100644
--- a/man/sd_journal_query_unique.xml
+++ b/man/sd_journal_query_unique.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_journal_query_unique" xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -151,7 +151,7 @@
<refsect1>
<title>Examples</title>
- <para>Use the <function>SD_JOURNAL_FOREACH_UNIQUE</function> macro to iterate through all values a field
+ <para>Use the <function>SD_JOURNAL_FOREACH_UNIQUE()</function> macro to iterate through all values a field
of the journal can take (and which can be accessed on the given architecture and are not compressed with
an unsupported mechanism). The following example lists all unit names referenced in the journal:</para>
diff --git a/man/sd_journal_seek_head.xml b/man/sd_journal_seek_head.xml
index 8e505f91e4..869889a4bf 100644
--- a/man/sd_journal_seek_head.xml
+++ b/man/sd_journal_seek_head.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_journal_seek_head" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_journal_stream_fd.xml b/man/sd_journal_stream_fd.xml
index bdb27cc8ac..af2234e77d 100644
--- a/man/sd_journal_stream_fd.xml
+++ b/man/sd_journal_stream_fd.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_journal_stream_fd" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_listen_fds.xml b/man/sd_listen_fds.xml
index 4973718ef6..9ddd129aae 100644
--- a/man/sd_listen_fds.xml
+++ b/man/sd_listen_fds.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_listen_fds"
xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -94,7 +94,7 @@
<function>sd_listen_fds()</function>, but optionally also returns
an array of strings with identification names for the passed file
descriptors, if that is available and the
- <parameter>names</parameter> parameter is non-NULL. This
+ <parameter>names</parameter> parameter is non-<constant>NULL</constant>. This
information is read from the <varname>$LISTEN_FDNAMES</varname>
variable, which may contain a colon-separated list of names. For
socket-activated services, these names may be configured with the
@@ -113,11 +113,11 @@
<function>sd_is_socket()</function> and related calls is not
sufficient. Note that the names used are not unique in any
way. The returned array of strings has as many entries as file
- descriptors have been received, plus a final NULL pointer
+ descriptors have been received, plus a final <constant>NULL</constant> pointer
terminating the array. The caller needs to free the array itself
and each of its elements with libc's <function>free()</function>
call after use. If the <parameter>names</parameter> parameter is
- NULL, the call is entirely equivalent to
+ <constant>NULL</constant>, the call is entirely equivalent to
<function>sd_listen_fds()</function>.</para>
<para>Under specific conditions, the following automatic file
diff --git a/man/sd_login_monitor_new.xml b/man/sd_login_monitor_new.xml
index d1c83e2d20..57d22f9f65 100644
--- a/man/sd_login_monitor_new.xml
+++ b/man/sd_login_monitor_new.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_login_monitor_new" conditional='HAVE_PAM'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_machine_get_class.xml b/man/sd_machine_get_class.xml
index a8db371230..6e5fe9e23d 100644
--- a/man/sd_machine_get_class.xml
+++ b/man/sd_machine_get_class.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_machine_get_class" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_notify.xml b/man/sd_notify.xml
index 3721ed91ef..69e1b024ad 100644
--- a/man/sd_notify.xml
+++ b/man/sd_notify.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_notify"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_path_lookup.xml b/man/sd_path_lookup.xml
index 9316090cce..01fb1ed8f1 100644
--- a/man/sd_path_lookup.xml
+++ b/man/sd_path_lookup.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_path_lookup" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_pid_get_owner_uid.xml b/man/sd_pid_get_owner_uid.xml
index f684c03aeb..3e30acad8d 100644
--- a/man/sd_pid_get_owner_uid.xml
+++ b/man/sd_pid_get_owner_uid.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_pid_get_owner_uid" conditional='HAVE_PAM'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_seat_get_active.xml b/man/sd_seat_get_active.xml
index 94401caa72..110862c5df 100644
--- a/man/sd_seat_get_active.xml
+++ b/man/sd_seat_get_active.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_seat_get_active" conditional='HAVE_PAM'
xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -99,7 +99,7 @@
<para> On success, <function>sd_seat_get_active()</function> returns 0 or a positive integer. On success,
<function>sd_seat_get_sessions()</function> returns the number of entries in the session identifier
array. If the test succeeds,
- <function>sd_seat_can_tty</function> and <function>sd_seat_can_graphical</function> return a positive
+ <function>sd_seat_can_tty()</function> and <function>sd_seat_can_graphical()</function> return a positive
integer, if it fails 0. On failure, these calls return a negative errno-style error code.</para>
<refsect2>
diff --git a/man/sd_session_is_active.xml b/man/sd_session_is_active.xml
index d4a12f533c..9941a05a86 100644
--- a/man/sd_session_is_active.xml
+++ b/man/sd_session_is_active.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_session_is_active" conditional='HAVE_PAM'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sd_uid_get_state.xml b/man/sd_uid_get_state.xml
index ed38559bb3..2d6fb0c8a3 100644
--- a/man/sd_uid_get_state.xml
+++ b/man/sd_uid_get_state.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_uid_get_state" conditional='HAVE_PAM'
xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -161,9 +161,10 @@
<varlistentry>
<term><constant>-EINVAL</constant></term>
- <listitem><para>An input parameter was invalid (out of range, or NULL, where that is not
- accepted). This is also returned if the passed user ID is <constant>0xFFFF</constant> or
- <constant>0xFFFFFFFF</constant>, which are undefined on Linux.</para></listitem>
+ <listitem><para>An input parameter was invalid (out of range, or <constant>NULL</constant>,
+ where that is not accepted). This is also returned if the passed user ID is
+ <constant>0xFFFF</constant> or <constant>0xFFFFFFFF</constant>, which are undefined on Linux.
+ </para></listitem>
</varlistentry>
<varlistentry>
diff --git a/man/sd_watchdog_enabled.xml b/man/sd_watchdog_enabled.xml
index 0aa5609a35..1abc2f8051 100644
--- a/man/sd_watchdog_enabled.xml
+++ b/man/sd_watchdog_enabled.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sd_watchdog_enabled"
xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -63,7 +63,7 @@
<function>sd_watchdog_enabled()</function> will also return with
zero.</para>
- <para>If the <parameter>usec</parameter> parameter is non-NULL,
+ <para>If the <parameter>usec</parameter> parameter is non-<constant>NULL</constant>,
<function>sd_watchdog_enabled()</function> will write the timeout
in µs for the watchdog logic to it.</para>
diff --git a/man/shutdown.xml b/man/shutdown.xml
index bc2fa60744..f29010f6b6 100644
--- a/man/shutdown.xml
+++ b/man/shutdown.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="shutdown"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/standard-conf.xml b/man/standard-conf.xml
index ee8cc7bc0a..69cd7b0c0f 100644
--- a/man/standard-conf.xml
+++ b/man/standard-conf.xml
@@ -3,7 +3,7 @@
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
<!--
- SPDX-License-Identifier: LGPL-2.1+
+ SPDX-License-Identifier: LGPL-2.1-or-later
Copyright © 2014 Josh Triplett
-->
diff --git a/man/standard-options.xml b/man/standard-options.xml
index 6a61d9ec07..64274ce8f3 100644
--- a/man/standard-options.xml
+++ b/man/standard-options.xml
@@ -1,7 +1,7 @@
<?xml version="1.0"?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<!-- SPDX-License-Identifier: LGPL-2.1+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<variablelist>
<varlistentry id='help'>
diff --git a/man/standard-specifiers.xml b/man/standard-specifiers.xml
index 5b73043ce2..40bb6cc3ea 100644
--- a/man/standard-specifiers.xml
+++ b/man/standard-specifiers.xml
@@ -1,7 +1,7 @@
<?xml version="1.0"?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<!-- SPDX-License-Identifier: LGPL-2.1+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<tbody>
<row id='b'>
diff --git a/man/supported-controllers.xml b/man/supported-controllers.xml
index 15e048b12d..61cdf468d9 100644
--- a/man/supported-controllers.xml
+++ b/man/supported-controllers.xml
@@ -2,7 +2,7 @@
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
<!--
- SPDX-License-Identifier: LGPL-2.1+
+ SPDX-License-Identifier: LGPL-2.1-or-later
-->
<refsect1>
diff --git a/man/sysctl.d.xml b/man/sysctl.d.xml
index d348795063..4d810e6c0c 100644
--- a/man/sysctl.d.xml
+++ b/man/sysctl.d.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sysctl.d"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/system-only.xml b/man/system-only.xml
index 94aa08bd6d..afd3d32bc5 100644
--- a/man/system-only.xml
+++ b/man/system-only.xml
@@ -2,7 +2,7 @@
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
<!--
- SPDX-License-Identifier: LGPL-2.1+
+ SPDX-License-Identifier: LGPL-2.1-or-later
-->
<refsect1>
diff --git a/man/systemctl.xml b/man/systemctl.xml
index e67469ee46..c83c9c49af 100644
--- a/man/systemctl.xml
+++ b/man/systemctl.xml
@@ -4,7 +4,7 @@
<!ENTITY % entities SYSTEM "custom-entities.ent" >
%entities;
]>
-<!-- SPDX-License-Identifier: LGPL-2.1+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemctl"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/systemd-analyze.xml b/man/systemd-analyze.xml
index c7f72abc45..01df7da193 100644
--- a/man/systemd-analyze.xml
+++ b/man/systemd-analyze.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-analyze" conditional='ENABLE_ANALYZE'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/systemd-ask-password-console.service.xml b/man/systemd-ask-password-console.service.xml
index ba8fe7e928..03b7317cd3 100644
--- a/man/systemd-ask-password-console.service.xml
+++ b/man/systemd-ask-password-console.service.xml
@@ -2,7 +2,7 @@
<!--*-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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-ask-password-console.service">
<refentryinfo>
diff --git a/man/systemd-ask-password.xml b/man/systemd-ask-password.xml
index f696623ee7..433260475d 100644
--- a/man/systemd-ask-password.xml
+++ b/man/systemd-ask-password.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-ask-password"
xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -131,7 +131,7 @@
cached key will have a timeout of 2.5min set, after which it
will be purged from the kernel keyring. Note that it is
possible to cache multiple passwords under the same keyname,
- in which case they will be stored as NUL-separated list of
+ in which case they will be stored as <constant>NUL</constant>-separated list of
passwords. Use
<citerefentry project='die-net'><refentrytitle>keyctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
to access the cached key via the kernel keyring
diff --git a/man/systemd-backlight@.service.xml b/man/systemd-backlight@.service.xml
index 682c52efb1..7294910ca3 100644
--- a/man/systemd-backlight@.service.xml
+++ b/man/systemd-backlight@.service.xml
@@ -2,7 +2,7 @@
<!--*-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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-backlight@.service" conditional='ENABLE_BACKLIGHT'>
<refentryinfo>
diff --git a/man/systemd-binfmt.service.xml b/man/systemd-binfmt.service.xml
index 41a8247c5f..25c5e6dcc2 100644
--- a/man/systemd-binfmt.service.xml
+++ b/man/systemd-binfmt.service.xml
@@ -2,7 +2,7 @@
<!--*-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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-binfmt.service" conditional='ENABLE_BINFMT'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/systemd-bless-boot-generator.xml b/man/systemd-bless-boot-generator.xml
index 8275838bce..e945ee8c73 100644
--- a/man/systemd-bless-boot-generator.xml
+++ b/man/systemd-bless-boot-generator.xml
@@ -2,7 +2,7 @@
<!--*-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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-bless-boot-generator" conditional='ENABLE_EFI'>
<refentryinfo>
diff --git a/man/systemd-bless-boot.service.xml b/man/systemd-bless-boot.service.xml
index 1787d7216f..53d7e4afdc 100644
--- a/man/systemd-bless-boot.service.xml
+++ b/man/systemd-bless-boot.service.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-bless-boot.service" conditional='ENABLE_EFI'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/systemd-boot-check-no-failures.service.xml b/man/systemd-boot-check-no-failures.service.xml
index e92fdd63c0..39a2aa80c9 100644
--- a/man/systemd-boot-check-no-failures.service.xml
+++ b/man/systemd-boot-check-no-failures.service.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-boot-check-no-failures.service"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/systemd-boot-system-token.service.xml b/man/systemd-boot-system-token.service.xml
index b2948a5c4b..b94665bfca 100644
--- a/man/systemd-boot-system-token.service.xml
+++ b/man/systemd-boot-system-token.service.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-boot-system-token.service" conditional='ENABLE_EFI'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/systemd-boot.xml b/man/systemd-boot.xml
index ee6ad1d533..09f2854d83 100644
--- a/man/systemd-boot.xml
+++ b/man/systemd-boot.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-boot" conditional='ENABLE_EFI'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/systemd-cat.xml b/man/systemd-cat.xml
index 96d3072a1f..aff295bd87 100644
--- a/man/systemd-cat.xml
+++ b/man/systemd-cat.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-cat"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/systemd-cgls.xml b/man/systemd-cgls.xml
index 2d209ab323..da853ec5aa 100644
--- a/man/systemd-cgls.xml
+++ b/man/systemd-cgls.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-cgls"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/systemd-cgtop.xml b/man/systemd-cgtop.xml
index 356ec05c77..a6d9671952 100644
--- a/man/systemd-cgtop.xml
+++ b/man/systemd-cgtop.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-cgtop"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/systemd-coredump.xml b/man/systemd-coredump.xml
index 1ab7e598a7..4ac6de1ee2 100644
--- a/man/systemd-coredump.xml
+++ b/man/systemd-coredump.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-coredump" conditional='ENABLE_COREDUMP'
xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -73,8 +73,8 @@
<refsect1>
<title>Configuration</title>
- <para>For programs started by <command>systemd</command> process resource limits can be set by directive
- <varname>LimitCore=</varname>, see
+ <para>For programs started by <command>systemd</command>, process resource limits can be set by directive
+ <varname>LimitCORE=</varname>, see
<citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
</para>
@@ -94,10 +94,10 @@
<citerefentry><refentrytitle>systemd-sysctl</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
</para>
- <para>In order to by used in the <option>--backtrace</option> mode, an appropriate backtrace
+ <para>In order to be used in the <option>--backtrace</option> mode, an appropriate backtrace
handler must be installed on the sender side. For example, in case of
<citerefentry project='die-net'><refentrytitle>python</refentrytitle><manvolnum>1</manvolnum></citerefentry>, this
- means a <varname>sys.excepthook</varname> must installed, see
+ means a <varname>sys.excepthook</varname> must be installed, see
<ulink url="https://github.com/keszybz/systemd-coredump-python">systemd-coredump-python</ulink>.
</para>
diff --git a/man/systemd-cryptsetup-generator.xml b/man/systemd-cryptsetup-generator.xml
index a479b23406..4284f78c4e 100644
--- a/man/systemd-cryptsetup-generator.xml
+++ b/man/systemd-cryptsetup-generator.xml
@@ -2,7 +2,7 @@
<!--*-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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-cryptsetup-generator" conditional='HAVE_LIBCRYPTSETUP'>
<refentryinfo>
diff --git a/man/systemd-cryptsetup@.service.xml b/man/systemd-cryptsetup@.service.xml
index 164fc2ed84..216db7467c 100644
--- a/man/systemd-cryptsetup@.service.xml
+++ b/man/systemd-cryptsetup@.service.xml
@@ -2,7 +2,7 @@
<!--*-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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-cryptsetup@.service" conditional='HAVE_LIBCRYPTSETUP'>
<refentryinfo>
diff --git a/man/systemd-debug-generator.xml b/man/systemd-debug-generator.xml
index 305dc2ff37..531209bec2 100644
--- a/man/systemd-debug-generator.xml
+++ b/man/systemd-debug-generator.xml
@@ -5,7 +5,7 @@
<!ENTITY % entities SYSTEM "custom-entities.ent" >
%entities;
]>
-<!-- SPDX-License-Identifier: LGPL-2.1+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-debug-generator">
<refentryinfo>
diff --git a/man/systemd-delta.xml b/man/systemd-delta.xml
index 381add7f0c..7a83bc9fca 100644
--- a/man/systemd-delta.xml
+++ b/man/systemd-delta.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-delta"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/systemd-detect-virt.xml b/man/systemd-detect-virt.xml
index 36c4602d69..09491f7f11 100644
--- a/man/systemd-detect-virt.xml
+++ b/man/systemd-detect-virt.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-detect-virt"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/systemd-dissect.xml b/man/systemd-dissect.xml
index 1c761c4996..ed2153f765 100644
--- a/man/systemd-dissect.xml
+++ b/man/systemd-dissect.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-dissect" conditional='HAVE_BLKID'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/systemd-environment-d-generator.xml b/man/systemd-environment-d-generator.xml
index 708db01b4a..a9b6b987de 100644
--- a/man/systemd-environment-d-generator.xml
+++ b/man/systemd-environment-d-generator.xml
@@ -4,7 +4,7 @@
<!ENTITY % entities SYSTEM "custom-entities.ent" >
%entities;
]>
-<!-- SPDX-License-Identifier: LGPL-2.1+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-environment-d-generator" conditional='ENABLE_ENVIRONMENT_D'>
<refentryinfo>
diff --git a/man/systemd-escape.xml b/man/systemd-escape.xml
index 86ef175ab8..f5d78be488 100644
--- a/man/systemd-escape.xml
+++ b/man/systemd-escape.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-escape"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/systemd-firstboot.xml b/man/systemd-firstboot.xml
index e60bfa0eb0..a1607abb84 100644
--- a/man/systemd-firstboot.xml
+++ b/man/systemd-firstboot.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-firstboot" conditional='ENABLE_FIRSTBOOT'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/systemd-fsck@.service.xml b/man/systemd-fsck@.service.xml
index 16fad1ae04..035382913f 100644
--- a/man/systemd-fsck@.service.xml
+++ b/man/systemd-fsck@.service.xml
@@ -2,7 +2,7 @@
<!--*-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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-fsck@.service">
<refentryinfo>
diff --git a/man/systemd-fstab-generator.xml b/man/systemd-fstab-generator.xml
index e842f3f9bc..ec8f5c988e 100644
--- a/man/systemd-fstab-generator.xml
+++ b/man/systemd-fstab-generator.xml
@@ -2,7 +2,7 @@
<!--*-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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-fstab-generator">
<refentryinfo>
diff --git a/man/systemd-getty-generator.xml b/man/systemd-getty-generator.xml
index efd490bf3a..507a001ca5 100644
--- a/man/systemd-getty-generator.xml
+++ b/man/systemd-getty-generator.xml
@@ -2,7 +2,7 @@
<!--*-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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-getty-generator">
<refentryinfo>
diff --git a/man/systemd-gpt-auto-generator.xml b/man/systemd-gpt-auto-generator.xml
index 7476edcffc..4a21540c70 100644
--- a/man/systemd-gpt-auto-generator.xml
+++ b/man/systemd-gpt-auto-generator.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-gpt-auto-generator" conditional='HAVE_BLKID'>
@@ -110,6 +110,18 @@
<entry>On Itanium systems, the first Itanium root partition on the disk the EFI ESP is located on is mounted to the root directory <filename>/</filename>.</entry>
</row>
<row>
+ <entry>60d5a7fe-8e7d-435c-b714-3dd8162144e1</entry>
+ <entry><filename>Root Partition (RISCV-V 32)</filename></entry>
+ <entry><filename>/</filename></entry>
+ <entry>On RISC-V 32-bit systems, the first RISCV-V 32-bit root partition on the disk the EFI ESP is located on is mounted to the root directory <filename>/</filename>.</entry>
+ </row>
+ <row>
+ <entry>72ec70a6-cf74-40e6-bd49-4bda08e8f224</entry>
+ <entry><filename>Root Partition (RISCV-V 64)</filename></entry>
+ <entry><filename>/</filename></entry>
+ <entry>On RISC-V 64-bit systems, the first RISCV-V 64-bit root partition on the disk the EFI ESP is located on is mounted to the root directory <filename>/</filename>.</entry>
+ </row>
+ <row>
<entry>933ac7e1-2eb4-4f13-b844-0e14e2aef915</entry>
<entry>Home Partition</entry>
<entry><filename>/home/</filename></entry>
diff --git a/man/systemd-halt.service.xml b/man/systemd-halt.service.xml
index 2b102cc940..96072ae7fb 100644
--- a/man/systemd-halt.service.xml
+++ b/man/systemd-halt.service.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-halt.service">
diff --git a/man/systemd-hibernate-resume-generator.xml b/man/systemd-hibernate-resume-generator.xml
index 60d66b201d..910fcaeb25 100644
--- a/man/systemd-hibernate-resume-generator.xml
+++ b/man/systemd-hibernate-resume-generator.xml
@@ -2,7 +2,7 @@
<!--*-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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-hibernate-resume-generator" conditional='ENABLE_HIBERNATE'>
<refentryinfo>
diff --git a/man/systemd-hibernate-resume@.service.xml b/man/systemd-hibernate-resume@.service.xml
index 88858ef6c8..c460393d9e 100644
--- a/man/systemd-hibernate-resume@.service.xml
+++ b/man/systemd-hibernate-resume@.service.xml
@@ -2,7 +2,7 @@
<!--*-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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-hibernate-resume@.service" conditional='ENABLE_HIBERNATE'>
<refentryinfo>
diff --git a/man/systemd-homed.service.xml b/man/systemd-homed.service.xml
index d6a239bc96..2bc1dba375 100644
--- a/man/systemd-homed.service.xml
+++ b/man/systemd-homed.service.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-homed.service" conditional='ENABLE_HOMED'>
diff --git a/man/systemd-hostnamed.service.xml b/man/systemd-hostnamed.service.xml
index 1aa32a61ce..c0c46b6609 100644
--- a/man/systemd-hostnamed.service.xml
+++ b/man/systemd-hostnamed.service.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-hostnamed.service" conditional='ENABLE_HOSTNAMED'>
diff --git a/man/systemd-hwdb.xml b/man/systemd-hwdb.xml
index 15a2c0130a..70c052ef8d 100644
--- a/man/systemd-hwdb.xml
+++ b/man/systemd-hwdb.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-hwdb" conditional="ENABLE_HWDB"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/systemd-id128.xml b/man/systemd-id128.xml
index 747b703653..21cbf1604f 100644
--- a/man/systemd-id128.xml
+++ b/man/systemd-id128.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-id128" xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/systemd-importd.service.xml b/man/systemd-importd.service.xml
index fa3c3a812f..19cc69f1a5 100644
--- a/man/systemd-importd.service.xml
+++ b/man/systemd-importd.service.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-importd.service" conditional='ENABLE_IMPORTD'>
diff --git a/man/systemd-inhibit.xml b/man/systemd-inhibit.xml
index e0399ebbb1..2fee0ede84 100644
--- a/man/systemd-inhibit.xml
+++ b/man/systemd-inhibit.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-inhibit"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/systemd-initctl.service.xml b/man/systemd-initctl.service.xml
index ea93efd3f0..b435800c39 100644
--- a/man/systemd-initctl.service.xml
+++ b/man/systemd-initctl.service.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-initctl.service" conditional='HAVE_SYSV_COMPAT'>
diff --git a/man/systemd-journal-gatewayd.service.xml b/man/systemd-journal-gatewayd.service.xml
index a7c50f382f..61a4037669 100644
--- a/man/systemd-journal-gatewayd.service.xml
+++ b/man/systemd-journal-gatewayd.service.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-journal-gatewayd.service" conditional='HAVE_MICROHTTPD'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/systemd-journal-remote.service.xml b/man/systemd-journal-remote.service.xml
index 1db0128f74..6e068a617a 100644
--- a/man/systemd-journal-remote.service.xml
+++ b/man/systemd-journal-remote.service.xml
@@ -4,7 +4,7 @@
<!ENTITY % entities SYSTEM "custom-entities.ent" >
%entities;
]>
-<!-- SPDX-License-Identifier: LGPL-2.1+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-journal-remote" conditional='HAVE_MICROHTTPD'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/systemd-journal-upload.service.xml b/man/systemd-journal-upload.service.xml
index 174bef803f..e2b39bf96e 100644
--- a/man/systemd-journal-upload.service.xml
+++ b/man/systemd-journal-upload.service.xml
@@ -4,7 +4,7 @@
<!ENTITY % entities SYSTEM "custom-entities.ent" >
%entities;
]>
-<!-- SPDX-License-Identifier: LGPL-2.1+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-journal-upload" conditional='HAVE_MICROHTTPD'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/systemd-journald.service.xml b/man/systemd-journald.service.xml
index 1ed36dace9..35cfbde86c 100644
--- a/man/systemd-journald.service.xml
+++ b/man/systemd-journald.service.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-journald.service">
diff --git a/man/systemd-localed.service.xml b/man/systemd-localed.service.xml
index 49eeeffee6..b0a4a9fb03 100644
--- a/man/systemd-localed.service.xml
+++ b/man/systemd-localed.service.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-localed.service" conditional='ENABLE_LOCALED'>
diff --git a/man/systemd-logind.service.xml b/man/systemd-logind.service.xml
index bbfcad4af6..746c9163b4 100644
--- a/man/systemd-logind.service.xml
+++ b/man/systemd-logind.service.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-logind.service" conditional='ENABLE_LOGIND'>
diff --git a/man/systemd-machine-id-commit.service.xml b/man/systemd-machine-id-commit.service.xml
index 40c9f436cf..cffc3e58ee 100644
--- a/man/systemd-machine-id-commit.service.xml
+++ b/man/systemd-machine-id-commit.service.xml
@@ -3,7 +3,7 @@
<!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+
+ SPDX-License-Identifier: LGPL-2.1-or-later
Copyright © 2014 Didier Roche
-->
diff --git a/man/systemd-machine-id-setup.xml b/man/systemd-machine-id-setup.xml
index 0454c11c8c..2c2a096493 100644
--- a/man/systemd-machine-id-setup.xml
+++ b/man/systemd-machine-id-setup.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-machine-id-setup"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/systemd-machined.service.xml b/man/systemd-machined.service.xml
index a6b1aa0f13..1b4318fdbb 100644
--- a/man/systemd-machined.service.xml
+++ b/man/systemd-machined.service.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-machined.service" conditional='ENABLE_MACHINED'>
diff --git a/man/systemd-makefs@.service.xml b/man/systemd-makefs@.service.xml
index 9aa058588e..5ea200cc5c 100644
--- a/man/systemd-makefs@.service.xml
+++ b/man/systemd-makefs@.service.xml
@@ -2,7 +2,7 @@
<!--*-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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-makefs@.service">
<refentryinfo>
diff --git a/man/systemd-modules-load.service.xml b/man/systemd-modules-load.service.xml
index b849b81939..0144650e87 100644
--- a/man/systemd-modules-load.service.xml
+++ b/man/systemd-modules-load.service.xml
@@ -2,7 +2,7 @@
<!--*-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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-modules-load.service" conditional='HAVE_KMOD'>
<refentryinfo>
diff --git a/man/systemd-mount.xml b/man/systemd-mount.xml
index 3641c90248..1cde3ab00c 100644
--- a/man/systemd-mount.xml
+++ b/man/systemd-mount.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-mount"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/systemd-network-generator.service.xml b/man/systemd-network-generator.service.xml
index 4a3f78a9e5..67567c4099 100644
--- a/man/systemd-network-generator.service.xml
+++ b/man/systemd-network-generator.service.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-network-generator.service" conditional='ENABLE_NETWORKD'>
diff --git a/man/systemd-networkd-wait-online.service.xml b/man/systemd-networkd-wait-online.service.xml
index e2f1eb0e83..6d2c71d8c7 100644
--- a/man/systemd-networkd-wait-online.service.xml
+++ b/man/systemd-networkd-wait-online.service.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-networkd-wait-online.service" conditional='ENABLE_NETWORKD'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/systemd-networkd.service.xml b/man/systemd-networkd.service.xml
index 2913bb953d..df6e180ffc 100644
--- a/man/systemd-networkd.service.xml
+++ b/man/systemd-networkd.service.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-networkd.service" conditional='ENABLE_NETWORKD'>
diff --git a/man/systemd-notify.xml b/man/systemd-notify.xml
index f61bfd9980..3fed92ef0e 100644
--- a/man/systemd-notify.xml
+++ b/man/systemd-notify.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-notify"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/systemd-nspawn.xml b/man/systemd-nspawn.xml
index 848f1415d5..588924ee61 100644
--- a/man/systemd-nspawn.xml
+++ b/man/systemd-nspawn.xml
@@ -4,7 +4,7 @@
<!ENTITY % entities SYSTEM "custom-entities.ent" >
%entities;
]>
-<!-- SPDX-License-Identifier: LGPL-2.1+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-nspawn"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/systemd-oomd.service.xml b/man/systemd-oomd.service.xml
index 9d72373d1e..9cb9c6076a 100644
--- a/man/systemd-oomd.service.xml
+++ b/man/systemd-oomd.service.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-oomd.service" conditional='ENABLE_OOMD'>
diff --git a/man/systemd-path.xml b/man/systemd-path.xml
index 91a8786abd..f2ca87d368 100644
--- a/man/systemd-path.xml
+++ b/man/systemd-path.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-path"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/systemd-portabled.service.xml b/man/systemd-portabled.service.xml
index 3363a1d946..ce91b4fcbb 100644
--- a/man/systemd-portabled.service.xml
+++ b/man/systemd-portabled.service.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-portabled.service" conditional='ENABLE_PORTABLED'>
diff --git a/man/systemd-pstore.service.xml b/man/systemd-pstore.service.xml
index 335a3b3d18..306f1099b0 100644
--- a/man/systemd-pstore.service.xml
+++ b/man/systemd-pstore.service.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-pstore" conditional='ENABLE_PSTORE'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/systemd-quotacheck.service.xml b/man/systemd-quotacheck.service.xml
index 9ba9f3950b..4e2a5a43eb 100644
--- a/man/systemd-quotacheck.service.xml
+++ b/man/systemd-quotacheck.service.xml
@@ -2,7 +2,7 @@
<!--*-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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-quotacheck.service" conditional='ENABLE_QUOTACHECK'>
<refentryinfo>
diff --git a/man/systemd-random-seed.service.xml b/man/systemd-random-seed.service.xml
index a9e322425f..3137ed0c81 100644
--- a/man/systemd-random-seed.service.xml
+++ b/man/systemd-random-seed.service.xml
@@ -2,7 +2,7 @@
<!--*-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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-random-seed.service" conditional='ENABLE_RANDOMSEED'>
<refentryinfo>
diff --git a/man/systemd-rc-local-generator.xml b/man/systemd-rc-local-generator.xml
index b51f50a1e1..9e175247fd 100644
--- a/man/systemd-rc-local-generator.xml
+++ b/man/systemd-rc-local-generator.xml
@@ -4,7 +4,7 @@
<!ENTITY % entities SYSTEM "custom-entities.ent" >
%entities;
]>
-<!-- SPDX-License-Identifier: LGPL-2.1+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-rc-local-generator" conditional='HAVE_SYSV_COMPAT'>
<refentryinfo>
diff --git a/man/systemd-remount-fs.service.xml b/man/systemd-remount-fs.service.xml
index 4f89156264..be74307f9b 100644
--- a/man/systemd-remount-fs.service.xml
+++ b/man/systemd-remount-fs.service.xml
@@ -2,7 +2,7 @@
<!--*-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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-remount-fs.service">
<refentryinfo>
diff --git a/man/systemd-repart.xml b/man/systemd-repart.xml
index b234cfe949..16add32b2d 100644
--- a/man/systemd-repart.xml
+++ b/man/systemd-repart.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-repart" conditional='ENABLE_REPART'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/systemd-resolved.service.xml b/man/systemd-resolved.service.xml
index 8bd3ade9e2..12aefd5a89 100644
--- a/man/systemd-resolved.service.xml
+++ b/man/systemd-resolved.service.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-resolved.service" conditional='ENABLE_RESOLVE'>
diff --git a/man/systemd-rfkill.service.xml b/man/systemd-rfkill.service.xml
index bc3322cf2d..d89eb91d43 100644
--- a/man/systemd-rfkill.service.xml
+++ b/man/systemd-rfkill.service.xml
@@ -2,7 +2,7 @@
<!--*-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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-rfkill.service" conditional='ENABLE_RFKILL'>
<refentryinfo>
diff --git a/man/systemd-run-generator.xml b/man/systemd-run-generator.xml
index db84cf73a8..02924b45f1 100644
--- a/man/systemd-run-generator.xml
+++ b/man/systemd-run-generator.xml
@@ -2,7 +2,7 @@
<!--*-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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-run-generator">
<refentryinfo>
diff --git a/man/systemd-run.xml b/man/systemd-run.xml
index c1471e108f..fc8716ea79 100644
--- a/man/systemd-run.xml
+++ b/man/systemd-run.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-run"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/systemd-sleep.conf.xml b/man/systemd-sleep.conf.xml
index a3714f52ae..d117a212ac 100644
--- a/man/systemd-sleep.conf.xml
+++ b/man/systemd-sleep.conf.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-sleep.conf"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/systemd-socket-activate.xml b/man/systemd-socket-activate.xml
index 20a5572192..a9d00dce21 100644
--- a/man/systemd-socket-activate.xml
+++ b/man/systemd-socket-activate.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-socket-activate"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/systemd-socket-proxyd.xml b/man/systemd-socket-proxyd.xml
index a4e18989fc..e512a4334e 100644
--- a/man/systemd-socket-proxyd.xml
+++ b/man/systemd-socket-proxyd.xml
@@ -2,7 +2,7 @@
<!--*-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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-socket-proxyd"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/systemd-suspend.service.xml b/man/systemd-suspend.service.xml
index e57000e09a..e4a6de548f 100644
--- a/man/systemd-suspend.service.xml
+++ b/man/systemd-suspend.service.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-suspend.service"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/systemd-sysctl.service.xml b/man/systemd-sysctl.service.xml
index fa1cbef586..751aa2b09e 100644
--- a/man/systemd-sysctl.service.xml
+++ b/man/systemd-sysctl.service.xml
@@ -2,7 +2,7 @@
<!--*-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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-sysctl.service"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/systemd-system-update-generator.xml b/man/systemd-system-update-generator.xml
index d816c0b2c8..8711be26e3 100644
--- a/man/systemd-system-update-generator.xml
+++ b/man/systemd-system-update-generator.xml
@@ -2,7 +2,7 @@
<!--*-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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-system-update-generator">
<refentryinfo>
diff --git a/man/systemd-system.conf.xml b/man/systemd-system.conf.xml
index c64e57c277..0dea50f2fe 100644
--- a/man/systemd-system.conf.xml
+++ b/man/systemd-system.conf.xml
@@ -4,7 +4,7 @@
<!ENTITY % entities SYSTEM "custom-entities.ent" >
%entities;
]>
-<!-- SPDX-License-Identifier: LGPL-2.1+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-system.conf"
xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -361,8 +361,10 @@
<listitem><para>Configure the default value for the per-unit <varname>TasksMax=</varname> setting. See
<citerefentry><refentrytitle>systemd.resource-control</refentrytitle><manvolnum>5</manvolnum></citerefentry>
for details. This setting applies to all unit types that support resource control settings, with the exception
- of slice units. Defaults to 15%, which equals 4915 with the kernel's defaults on the host, but might be smaller
- in OS containers.</para></listitem>
+ of slice units. Defaults to 15% of the sysctl setting <varname>kernel.pid_max=</varname> or root cgroup <varname>pids.max</varname>.
+ Kernel has a default value for <varname>kernel.pid_max=</varname> and an algorithm of counting in case of more than 32 cores.
+ For example with the default <varname>kernel.pid_max=</varname>, <varname>DefaultTasksMax=</varname> defaults to 4915,
+ but might be greater in other systems or smaller in OS containers.</para></listitem>
</varlistentry>
<varlistentry>
diff --git a/man/systemd-sysusers.xml b/man/systemd-sysusers.xml
index 1e5853a55b..950a8b4499 100644
--- a/man/systemd-sysusers.xml
+++ b/man/systemd-sysusers.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-sysusers"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/systemd-sysv-generator.xml b/man/systemd-sysv-generator.xml
index 7396d4ab60..14ab932fed 100644
--- a/man/systemd-sysv-generator.xml
+++ b/man/systemd-sysv-generator.xml
@@ -2,7 +2,7 @@
<!--*-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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-sysv-generator" conditional="HAVE_SYSV_COMPAT">
<refentryinfo>
diff --git a/man/systemd-time-wait-sync.service.xml b/man/systemd-time-wait-sync.service.xml
index 685fe74339..28f55a184e 100644
--- a/man/systemd-time-wait-sync.service.xml
+++ b/man/systemd-time-wait-sync.service.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-time-wait-sync.service" conditional='ENABLE_TIMESYNCD'>
diff --git a/man/systemd-timedated.service.xml b/man/systemd-timedated.service.xml
index 93cfdf5118..112bdf3040 100644
--- a/man/systemd-timedated.service.xml
+++ b/man/systemd-timedated.service.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-timedated.service" conditional='ENABLE_TIMEDATED'>
diff --git a/man/systemd-timesyncd.service.xml b/man/systemd-timesyncd.service.xml
index 3dff63779b..ff14c40665 100644
--- a/man/systemd-timesyncd.service.xml
+++ b/man/systemd-timesyncd.service.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-timesyncd.service" conditional='ENABLE_TIMESYNCD'>
diff --git a/man/systemd-tmpfiles.xml b/man/systemd-tmpfiles.xml
index b6011c344a..90c2626685 100644
--- a/man/systemd-tmpfiles.xml
+++ b/man/systemd-tmpfiles.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-tmpfiles"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/systemd-tty-ask-password-agent.xml b/man/systemd-tty-ask-password-agent.xml
index 36089dff83..995657683b 100644
--- a/man/systemd-tty-ask-password-agent.xml
+++ b/man/systemd-tty-ask-password-agent.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-tty-ask-password-agent"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/systemd-udev-settle.service.xml b/man/systemd-udev-settle.service.xml
index 3698bfaf19..2852f31466 100644
--- a/man/systemd-udev-settle.service.xml
+++ b/man/systemd-udev-settle.service.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-udev-settle.service"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/systemd-udevd.service.xml b/man/systemd-udevd.service.xml
index e49690dc74..5df4cd6a22 100644
--- a/man/systemd-udevd.service.xml
+++ b/man/systemd-udevd.service.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-udevd.service"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/systemd-update-done.service.xml b/man/systemd-update-done.service.xml
index f26da5102a..3393010ff6 100644
--- a/man/systemd-update-done.service.xml
+++ b/man/systemd-update-done.service.xml
@@ -2,7 +2,7 @@
<!--*-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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-update-done.service">
<refentryinfo>
diff --git a/man/systemd-update-utmp.service.xml b/man/systemd-update-utmp.service.xml
index e1059ec733..ff01893b94 100644
--- a/man/systemd-update-utmp.service.xml
+++ b/man/systemd-update-utmp.service.xml
@@ -2,7 +2,7 @@
<!--*-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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-update-utmp.service" conditional="ENABLE_UTMP">
<refentryinfo>
diff --git a/man/systemd-user-sessions.service.xml b/man/systemd-user-sessions.service.xml
index ab33d469a2..f05e4e3222 100644
--- a/man/systemd-user-sessions.service.xml
+++ b/man/systemd-user-sessions.service.xml
@@ -2,7 +2,7 @@
<!--*-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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-user-sessions.service" conditional='HAVE_PAM'>
<refentryinfo>
diff --git a/man/systemd-userdbd.service.xml b/man/systemd-userdbd.service.xml
index 9d5841c0f0..a6234be214 100644
--- a/man/systemd-userdbd.service.xml
+++ b/man/systemd-userdbd.service.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-userdbd.service" conditional='ENABLE_USERDB'>
diff --git a/man/systemd-vconsole-setup.service.xml b/man/systemd-vconsole-setup.service.xml
index 7e76383720..80577edba0 100644
--- a/man/systemd-vconsole-setup.service.xml
+++ b/man/systemd-vconsole-setup.service.xml
@@ -2,7 +2,7 @@
<!--*-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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-vconsole-setup.service" conditional='ENABLE_VCONSOLE'>
<refentryinfo>
diff --git a/man/systemd-veritysetup-generator.xml b/man/systemd-veritysetup-generator.xml
index bcacd59cf9..d2736a7fd5 100644
--- a/man/systemd-veritysetup-generator.xml
+++ b/man/systemd-veritysetup-generator.xml
@@ -2,7 +2,7 @@
<!--*-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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-veritysetup-generator" conditional='HAVE_LIBCRYPTSETUP'>
<refentryinfo>
diff --git a/man/systemd-veritysetup@.service.xml b/man/systemd-veritysetup@.service.xml
index 2c71c3e70b..c9554b087a 100644
--- a/man/systemd-veritysetup@.service.xml
+++ b/man/systemd-veritysetup@.service.xml
@@ -2,7 +2,7 @@
<!--*-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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-veritysetup@.service" conditional='HAVE_LIBCRYPTSETUP'>
<refentryinfo>
diff --git a/man/systemd-volatile-root.service.xml b/man/systemd-volatile-root.service.xml
index 0b1f39e34d..d591da2f77 100644
--- a/man/systemd-volatile-root.service.xml
+++ b/man/systemd-volatile-root.service.xml
@@ -2,7 +2,7 @@
<!--*-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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-volatile-root.service">
<refentryinfo>
diff --git a/man/systemd-xdg-autostart-generator.xml b/man/systemd-xdg-autostart-generator.xml
index 5b3856e945..4d153c3040 100644
--- a/man/systemd-xdg-autostart-generator.xml
+++ b/man/systemd-xdg-autostart-generator.xml
@@ -2,7 +2,7 @@
<!--*-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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-xdg-autostart-generator" conditional="ENABLE_XDG_AUTOSTART">
<refentryinfo>
diff --git a/man/systemd.automount.xml b/man/systemd.automount.xml
index 29b9bb14e1..a592fd3af2 100644
--- a/man/systemd.automount.xml
+++ b/man/systemd.automount.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd.automount">
<refentryinfo>
diff --git a/man/systemd.device.xml b/man/systemd.device.xml
index 49b59ebf13..255ca3373b 100644
--- a/man/systemd.device.xml
+++ b/man/systemd.device.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd.device">
<refentryinfo>
diff --git a/man/systemd.dnssd.xml b/man/systemd.dnssd.xml
index c4f7ef6e6b..96a14b1ba5 100644
--- a/man/systemd.dnssd.xml
+++ b/man/systemd.dnssd.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd.dnssd"
xmlns:xi="http://www.w3.org/2001/XInclude"
diff --git a/man/systemd.environment-generator.xml b/man/systemd.environment-generator.xml
index 4ffe89065d..663d7dcddf 100644
--- a/man/systemd.environment-generator.xml
+++ b/man/systemd.environment-generator.xml
@@ -4,7 +4,7 @@
<!ENTITY % entities SYSTEM "custom-entities.ent" >
%entities;
]>
-<!-- SPDX-License-Identifier: LGPL-2.1+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd.environment-generator" conditional='ENABLE_ENVIRONMENT_D'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/systemd.exec.xml b/man/systemd.exec.xml
index 5c18fffbc8..4b85f914f4 100644
--- a/man/systemd.exec.xml
+++ b/man/systemd.exec.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd.exec" xmlns:xi="http://www.w3.org/2001/XInclude">
<refentryinfo>
@@ -1918,9 +1918,9 @@ RestrictNamespaces=~cgroup net</programlisting>
but without the <constant>CAP_SYS_ADMIN</constant> capability (e.g. setting
<varname>User=nobody</varname>), <varname>NoNewPrivileges=yes</varname> is implied. This feature
makes use of the Secure Computing Mode 2 interfaces of the kernel ('seccomp filtering') and is useful
- for enforcing a minimal sandboxing environment. Note that the <function>execve</function>,
- <function>exit</function>, <function>exit_group</function>, <function>getrlimit</function>,
- <function>rt_sigreturn</function>, <function>sigreturn</function> system calls and the system calls
+ for enforcing a minimal sandboxing environment. Note that the <function>execve()</function>,
+ <function>exit()</function>, <function>exit_group()</function>, <function>getrlimit()</function>,
+ <function>rt_sigreturn()</function>, <function>sigreturn()</function> system calls and the system calls
for querying time and sleeping are implicitly allow-listed and do not need to be listed
explicitly. This option may be specified more than once, in which case the filter masks are
merged. If the empty string is assigned, the filter is reset, all prior assignments will have no
@@ -1932,7 +1932,7 @@ RestrictNamespaces=~cgroup net</programlisting>
<varname>SystemCallArchitectures=native</varname> or similar.</para>
<para>Note that strict system call filters may impact execution and error handling code paths of the service
- invocation. Specifically, access to the <function>execve</function> system call is required for the execution
+ invocation. Specifically, access to the <function>execve()</function> system call is required for the execution
of the service binary — if it is blocked service invocation will necessarily fail. Also, if execution of the
service binary fails for some reason (for example: missing service executable), the error handling logic might
require access to an additional set of system calls in order to process and log this failure correctly. It
@@ -1943,9 +1943,9 @@ RestrictNamespaces=~cgroup net</programlisting>
encountered will take precedence and will dictate the default action (termination or approval of a
system call). Then the next occurrences of this option will add or delete the listed system calls
from the set of the filtered system calls, depending of its type and the default action. (For
- example, if you have started with an allow list rule for <function>read</function> and
- <function>write</function>, and right after it add a deny list rule for <function>write</function>,
- then <function>write</function> will be removed from the set.)</para>
+ example, if you have started with an allow list rule for <function>read()</function> and
+ <function>write()</function>, and right after it add a deny list rule for <function>write()</function>,
+ then <function>write()</function> will be removed from the set.)</para>
<para>As the number of possible system calls is large, predefined sets of system calls are provided. A set
starts with <literal>@</literal> character, followed by name of the set.
@@ -2706,15 +2706,16 @@ StandardInputData=SWNrIHNpdHplIGRhIHVuJyBlc3NlIEtsb3BzLAp1ZmYgZWVtYWwga2xvcHAncy
credential plus a file system path. The ID must be a short ASCII string suitable as filename in the
filesystem, and may be chosen freely by the user. If the specified path is absolute it is opened as
regular file and the credential data is read from it. If the absolute path refers to an
- <constant>AF_UNIX</constant> stream socket in the file system a connection is made to it and the
- credential data read from the connection, providing an easy IPC integration point for dynamically
- providing credentials from other services. If the specified path is not absolute and itself qualifies
- as valid credential identifier it is understood to refer to a credential that the service manager
- itself received via the <varname>$CREDENTIALS_DIRECTORY</varname> environment variable, which may be
- used to propagate credentials from an invoking environment (e.g. a container manager that invoked the
- service manager) into a service. The contents of the file/socket may be arbitrary binary or textual
- data, including newline characters and NUL bytes. This option may be used multiple times, each time
- defining an additional credential to pass to the unit.</para>
+ <constant>AF_UNIX</constant> stream socket in the file system a connection is made to it (only once
+ at unit start-up) and the credential data read from the connection, providing an easy IPC integration
+ point for dynamically providing credentials from other services. If the specified path is not
+ absolute and itself qualifies as valid credential identifier it is understood to refer to a
+ credential that the service manager itself received via the <varname>$CREDENTIALS_DIRECTORY</varname>
+ environment variable, which may be used to propagate credentials from an invoking environment (e.g. a
+ container manager that invoked the service manager) into a service. The contents of the file/socket
+ may be arbitrary binary or textual data, including newline characters and <constant>NUL</constant>
+ bytes. This option may be used multiple times, each time defining an additional credential to pass to
+ the unit.</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,
@@ -2728,7 +2729,22 @@ StandardInputData=SWNrIHNpdHplIGRhIHVuJyBlc3NlIEtsb3BzLAp1ZmYgZWVtYWwga2xvcHAncy
e.g. <literal>ExecStart=cat ${CREDENTIALS_DIRECTORY}/mycred</literal>.</para>
<para>Currently, an accumulated credential size limit of 1M bytes per unit is
- enforced.</para></listitem>
+ enforced.</para>
+
+ <para>If referencing an <constant>AF_UNIX</constant> stream socket to connect to, the connection will
+ originate from an abstract namespace socket, that includes information about the unit and the
+ credential ID in its socket name. Use <citerefentry
+ project='man-pages'><refentrytitle>getpeername</refentrytitle><manvolnum>2</manvolnum></citerefentry>
+ to query this information. The returned socket name is formatted as <constant>NUL</constant>
+ <replaceable>RANDOM</replaceable> <literal>/unit/</literal> <replaceable>UNIT</replaceable>
+ <literal>/</literal> <replaceable>ID</replaceable>, i.e. a <constant>NUL</constant> byte (as required
+ for abstract namespace socket names), followed by a random string (consisting of alphadecimal
+ characters), followed by the literal string <literal>/unit/</literal>, followed by the requesting
+ unit name, followed by the literal character <literal>/</literal>, followed by the textual credential
+ ID requested. Example: <literal>\0adf9d86b6eda275e/unit/foobar.service/credx</literal> in case the
+ credential <literal>credx</literal> is requested for a unit <literal>foobar.service</literal>. This
+ functionality is useful for using a single listening socket to serve credentials to multiple
+ consumers.</para></listitem>
</varlistentry>
<varlistentry>
@@ -2741,7 +2757,7 @@ StandardInputData=SWNrIHNpdHplIGRhIHVuJyBlc3NlIEtsb3BzLAp1ZmYgZWVtYWwga2xvcHAncy
user IDs, public key material and similar non-sensitive data. For everything else use
<varname>LoadCredential=</varname>. In order to embed binary data into the credential data use
C-style escaping (i.e. <literal>\n</literal> to embed a newline, or <literal>\x00</literal> to embed
- a NUL byte).</para>
+ a <constant>NUL</constant> byte).</para>
<para>If a credential of the same ID is listed in both <varname>LoadCredential=</varname> and
<varname>SetCredential=</varname>, the latter will act as default if the former cannot be
diff --git a/man/systemd.generator.xml b/man/systemd.generator.xml
index b8d0cd578a..b1936bed4d 100644
--- a/man/systemd.generator.xml
+++ b/man/systemd.generator.xml
@@ -4,7 +4,7 @@
<!ENTITY % entities SYSTEM "custom-entities.ent" >
%entities;
]>
-<!-- SPDX-License-Identifier: LGPL-2.1+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd.generator">
<refentryinfo>
diff --git a/man/systemd.journal-fields.xml b/man/systemd.journal-fields.xml
index 73e3039d6e..578e074f57 100644
--- a/man/systemd.journal-fields.xml
+++ b/man/systemd.journal-fields.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd.journal-fields">
@@ -365,7 +365,7 @@
<para>Only applies to <literal>_TRANSPORT=stdout</literal> records: indicates that the log message
in the standard output/error stream was not terminated with a normal newline character
(<literal>\n</literal>, i.e. ASCII 10). Specifically, when set this field is one of
- <option>nul</option> (in case the line was terminated by a NUL byte), <option>line-max</option> (in
+ <option>nul</option> (in case the line was terminated by a <constant>NUL</constant> byte), <option>line-max</option> (in
case the maximum log line length was reached, as configured with <varname>LineMax=</varname> in
<citerefentry><refentrytitle>journald.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>),
<option>eof</option> (if this was the last log record of a stream and the stream ended without a
diff --git a/man/systemd.kill.xml b/man/systemd.kill.xml
index 73f61c80e4..57eb6403c7 100644
--- a/man/systemd.kill.xml
+++ b/man/systemd.kill.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd.kill">
<refentryinfo>
diff --git a/man/systemd.link.xml b/man/systemd.link.xml
index 9a9ff6bd3b..24271ea65a 100644
--- a/man/systemd.link.xml
+++ b/man/systemd.link.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd.link">
<refentryinfo>
@@ -273,18 +273,21 @@
<varlistentry>
<term><option>none</option></term>
<listitem>
- <para>Keeps the MAC address assigned by the kernel.</para>
+ <para>Keeps the MAC address assigned by the kernel. Or use the MAC address specified in
+ <varname>MACAddress=</varname>.</para>
</listitem>
</varlistentry>
</variablelist>
+
+ <para>An empty string assignment is equivalent to setting <literal>none</literal>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>MACAddress=</varname></term>
<listitem>
- <para>The MAC address to use, if no
- <varname>MACAddressPolicy=</varname>
- is specified.</para>
+ <para>The interface MAC address to use. For this setting to take effect,
+ <varname>MACAddressPolicy=</varname> must either be unset, empty, or <literal>none</literal>.
+ </para>
</listitem>
</varlistentry>
<varlistentry>
diff --git a/man/systemd.mount.xml b/man/systemd.mount.xml
index e9e2f68408..8b71c96ab5 100644
--- a/man/systemd.mount.xml
+++ b/man/systemd.mount.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd.mount">
<refentryinfo>
diff --git a/man/systemd.net-naming-scheme.xml b/man/systemd.net-naming-scheme.xml
index 6efb5be2fb..054de92c0b 100644
--- a/man/systemd.net-naming-scheme.xml
+++ b/man/systemd.net-naming-scheme.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd.net-naming-scheme">
<refentryinfo>
diff --git a/man/systemd.netdev.xml b/man/systemd.netdev.xml
index a95beb6f9f..f8a5c6dc86 100644
--- a/man/systemd.netdev.xml
+++ b/man/systemd.netdev.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd.netdev" conditional='ENABLE_NETWORKD'>
@@ -84,7 +84,7 @@
</row></thead>
<tbody>
<row><entry><varname>bond</varname></entry>
- <entry>A bond device is an aggregation of all its slave devices. See <ulink url="https://www.kernel.org/doc/Documentation/networking/bonding.txt">Linux Ethernet Bonding Driver HOWTO</ulink> for details.Local configuration</entry></row>
+ <entry>A bond device is an aggregation of all its slave devices. See <ulink url="https://www.kernel.org/doc/Documentation/networking/bonding.txt">Linux Ethernet Bonding Driver HOWTO</ulink> for details.</entry></row>
<row><entry><varname>bridge</varname></entry>
<entry>A bridge device is a software switch, and each of its slave devices and the bridge itself are ports of the switch.</entry></row>
@@ -754,7 +754,8 @@
<varlistentry>
<term><varname>Id=</varname></term>
<listitem>
- <para>Specifies the Virtual Network Identifier (VNI) to use. Ranges [0-16777215]. This field is mandatory.</para>
+ <para>Specifies the Virtual Network Identifier (VNI) to use, a number between 0 and 16777215. This
+ field is mandatory.</para>
</listitem>
</varlistentry>
<varlistentry>
@@ -766,7 +767,7 @@
<varlistentry>
<term><varname>TOS=</varname></term>
<listitem>
- <para>Specifies the TOS value to use in outgoing packets. Ranges [1-255].</para>
+ <para>Specifies the TOS value to use in outgoing packets. Takes a number between 1 and 255.</para>
</listitem>
</varlistentry>
<varlistentry>
@@ -818,8 +819,9 @@
<varlistentry>
<term><varname>Independent=</varname></term>
<listitem>
- <para>Takes a boolean. When true, the vxlan interface is created without underlying interfaces.
- Defaults to <literal>false</literal>.</para>
+ <para>Takes a boolean. When true, the vxlan interface is created without any underlying network
+ interface. Defaults to false, which means that a .network file that requests this tunnel using
+ <varname>Tunnel=</varname> is required for the tunnel to be created.</para>
</listitem>
</varlistentry>
</variablelist>
@@ -1276,9 +1278,10 @@
<varlistentry>
<term><varname>Independent=</varname></term>
<listitem>
- <para>Takes a boolean. When true tunnel does not require .network file. Created as "tunnel@NONE".
- Defaults to <literal>false</literal>.
- </para>
+ <para>Takes a boolean. When false (the default), the tunnel is always created over some network
+ device, and a .network file that requests this tunnel using <varname>Tunnel=</varname> is required
+ for the tunnel to be created. When true, the tunnel is created independently of any network as
+ "tunnel@NONE".</para>
</listitem>
</varlistentry>
<varlistentry>
@@ -1770,7 +1773,8 @@
<varlistentry>
<term><varname>AdActorSystem=</varname></term>
<listitem>
- <para>Specifies the 802.3ad system mac address. This can not be either NULL or Multicast.</para>
+ <para>Specifies the 802.3ad system MAC address. This cannot be a null or multicast address.
+ </para>
</listitem>
</varlistentry>
@@ -1947,10 +1951,8 @@
<varlistentry>
<term><varname>Independent=</varname></term>
<listitem>
- <para>Takes a boolean. If set to <literal>no</literal>, the xfrm interface should have an
- underlying device which can be used for hardware offloading. Defaults to <literal>no</literal>.
- See <citerefentry><refentrytitle>systemd.network</refentrytitle><manvolnum>5</manvolnum></citerefentry>
- for how to configure the underlying device.</para>
+ <para>Takes a boolean. If false (the default), the xfrm interface must have an underlying device
+ which can be used for hardware offloading.</para>
</listitem>
</varlistentry>
</variablelist>
diff --git a/man/systemd.network.xml b/man/systemd.network.xml
index 1eb8274e83..70e1608c4a 100644
--- a/man/systemd.network.xml
+++ b/man/systemd.network.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd.network" conditional='ENABLE_NETWORKD'
xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -825,7 +825,7 @@ IPv6Token=prefixstable:2002:da8:1::</programlisting></para>
configured on another link. By default, an address within each delegated prefix will be
assigned, and the prefixes will be announced through IPv6 Router Advertisement when
<varname>IPv6SendRA=</varname> is enabled. Such default settings can be configured in
- [DHCPv6PrefixDelegation] section.</para></listitem>
+ [DHCPv6PrefixDelegation] section. Defaults to disabled.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>IPv6MTUBytes=</varname></term>
@@ -1122,7 +1122,7 @@ IPv6Token=prefixstable:2002:da8:1::</programlisting></para>
<para>An [IPv6AddressLabel] section accepts the following keys. Specify several [IPv6AddressLabel]
sections to configure several address labels. IPv6 address labels are used for address selection. See
<ulink url="https://tools.ietf.org/html/rfc3484">RFC 3484</ulink>. Precedence is managed by userspace,
- and only the label itself is stored in the kernel</para>
+ and only the label itself is stored in the kernel.</para>
<variablelist class='network-directives'>
<varlistentry>
@@ -1170,7 +1170,9 @@ IPv6Token=prefixstable:2002:da8:1::</programlisting></para>
<varlistentry>
<term><varname>FirewallMark=</varname></term>
<listitem>
- <para>Specifies the iptables firewall mark value to match (a number between 1 and 4294967295).</para>
+ <para>Specifies the iptables firewall mark value to match (a number between 1 and
+ 4294967295). Optionally, the firewall mask (also a number between 1 and 4294967295) can be
+ suffixed with a slash (<literal>/</literal>), e.g., <literal>7/255</literal>.</para>
</listitem>
</varlistentry>
<varlistentry>
@@ -1944,7 +1946,7 @@ IPv6Token=prefixstable:2002:da8:1::</programlisting></para>
<ulink url="https://en.wikipedia.org/wiki/Escape_sequences_in_C#Table_of_escape_sequences">C-style
escapes</ulink>. This setting can be specified multiple times. If an empty string is specified,
then all options specified earlier are cleared. Takes a whitespace-separated list of strings. Note that
- currently NUL bytes are not allowed.</para>
+ currently <constant>NUL</constant> bytes are not allowed.</para>
</listitem>
</varlistentry>
@@ -2086,9 +2088,11 @@ IPv6Token=prefixstable:2002:da8:1::</programlisting></para>
<varlistentry>
<term><varname>DHCPv6Client=</varname></term>
<listitem>
- <para>Takes a boolean, or the special value <literal>always</literal>. When true (the default), the DHCPv6 client will be started when the
- RA has the managed or other information flag. If set to <literal>always</literal>, the DHCPv6 client will be started even if there is no
- managed or other information flag in the RA.</para>
+ <para>Takes a boolean, or the special value <literal>always</literal>. When true or
+ <literal>always</literal>, the DHCPv6 client will be started when the RA has the managed or
+ other information flag. If set to <literal>always</literal>, the DHCPv6 client will also be
+ started in managed mode when neither managed nor other information flag is set in the RA.
+ Defaults to true.</para>
</listitem>
</varlistentry>
</variablelist>
@@ -2254,9 +2258,8 @@ IPv6Token=prefixstable:2002:da8:1::</programlisting></para>
<varlistentry>
<term><varname>RouterLifetimeSec=</varname></term>
- <listitem><para>Takes a timespan. Configures the IPv6 router lifetime in seconds. If set,
- this host also announces itself in Router Advertisements as an IPv6
- router for the network link. When unset, the host is not acting as a router.</para>
+ <listitem><para>Takes a timespan. Configures the IPv6 router lifetime in seconds. When set to
+ 0, the host is not acting as a router. Defaults to 30 minutes.</para>
</listitem>
</varlistentry>
diff --git a/man/systemd.nspawn.xml b/man/systemd.nspawn.xml
index 4b37c5dc44..0125b71e34 100644
--- a/man/systemd.nspawn.xml
+++ b/man/systemd.nspawn.xml
@@ -4,7 +4,7 @@
<!ENTITY % entities SYSTEM "custom-entities.ent" >
%entities;
]>
-<!-- SPDX-License-Identifier: LGPL-2.1+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd.nspawn">
diff --git a/man/systemd.offline-updates.xml b/man/systemd.offline-updates.xml
index 242448aa04..ef02d6f931 100644
--- a/man/systemd.offline-updates.xml
+++ b/man/systemd.offline-updates.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd.offline-updates">
<refentryinfo>
diff --git a/man/systemd.path.xml b/man/systemd.path.xml
index 604bf494ba..bca1514b33 100644
--- a/man/systemd.path.xml
+++ b/man/systemd.path.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd.path">
<refentryinfo>
diff --git a/man/systemd.preset.xml b/man/systemd.preset.xml
index 092c186738..5697e50be7 100644
--- a/man/systemd.preset.xml
+++ b/man/systemd.preset.xml
@@ -2,7 +2,7 @@
<!--*-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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd.preset">
<refentryinfo>
diff --git a/man/systemd.resource-control.xml b/man/systemd.resource-control.xml
index b40fa86145..6c513ed57e 100644
--- a/man/systemd.resource-control.xml
+++ b/man/systemd.resource-control.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd.resource-control" xmlns:xi="http://www.w3.org/2001/XInclude">
<refentryinfo>
diff --git a/man/systemd.scope.xml b/man/systemd.scope.xml
index 449b90b484..7d7b32df46 100644
--- a/man/systemd.scope.xml
+++ b/man/systemd.scope.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd.scope">
<refentryinfo>
diff --git a/man/systemd.service.xml b/man/systemd.service.xml
index 5bb13fcfe7..5da6d132ee 100644
--- a/man/systemd.service.xml
+++ b/man/systemd.service.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd.service">
<refentryinfo>
diff --git a/man/systemd.slice.xml b/man/systemd.slice.xml
index 928c9905e1..0d3616f8b1 100644
--- a/man/systemd.slice.xml
+++ b/man/systemd.slice.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd.slice">
<refentryinfo>
diff --git a/man/systemd.socket.xml b/man/systemd.socket.xml
index 015337ff2f..520a906249 100644
--- a/man/systemd.socket.xml
+++ b/man/systemd.socket.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd.socket">
<refentryinfo>
diff --git a/man/systemd.special.xml b/man/systemd.special.xml
index 1434ead7d5..a70e9ee0ca 100644
--- a/man/systemd.special.xml
+++ b/man/systemd.special.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd.special">
@@ -1179,6 +1179,60 @@
</varlistentry>
</variablelist>
</refsect2>
+
+ <refsect2>
+ <title>Special User Slice Units</title>
+
+ <para>There are four <literal>.slice</literal> units which form the basis of the user hierarchy for
+ assignment of resources for user applications and services. See
+ <citerefentry><refentrytitle>systemd.slice</refentrytitle><manvolnum>7</manvolnum></citerefentry>
+ for details about slice units and the documentation about
+ <ulink url="https://systemd.io/DESKTOP_ENVIRONMENTS">Desktop Environments</ulink>
+ for further information.</para>
+
+ <variablelist>
+ <varlistentry>
+ <term><filename>-.slice</filename></term>
+ <listitem>
+ <para>The root slice is the root of the user's slice hierarchy.
+ It usually does not contain units directly, but may be used to set defaults for the whole tree.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><filename>app.slice</filename></term>
+ <listitem>
+ <para>By default, all user services and applications managed by
+ <command>systemd</command> are found in this slice.
+ All interactively launched applications like web browsers and text editors
+ as well as non-critical services should be placed into this slice.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><filename>session.slice</filename></term>
+ <listitem>
+ <para>All essential services and applications required for the
+ session should use this slice.
+ These are services that either cannot be restarted easily
+ or where latency issues may affect the interactivity of the system and applications.
+ This includes the display server, screen readers and other services such as DBus or XDG portals.
+ Such services should be configured to be part of this slice by
+ adding <varname>Slice=session.slice</varname> to their unit files.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><filename>background.slice</filename></term>
+ <listitem>
+ <para>All services running low-priority background tasks should use this slice.
+ This permits resources to be preferentially assigned to the other slices.
+ Examples include non-interactive tasks like file indexing or backup operations
+ where latency is not important.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
</refsect1>
<refsect1>
diff --git a/man/systemd.swap.xml b/man/systemd.swap.xml
index 4b1f850af4..3e41d6f0bf 100644
--- a/man/systemd.swap.xml
+++ b/man/systemd.swap.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd.swap"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/systemd.syntax.xml b/man/systemd.syntax.xml
index df100ec4e7..7960adb659 100644
--- a/man/systemd.syntax.xml
+++ b/man/systemd.syntax.xml
@@ -4,7 +4,7 @@
<!ENTITY % entities SYSTEM "custom-entities.ent" >
%entities;
]>
-<!-- SPDX-License-Identifier: LGPL-2.1+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd.syntax">
diff --git a/man/systemd.target.xml b/man/systemd.target.xml
index a706a4588a..bd618d8e93 100644
--- a/man/systemd.target.xml
+++ b/man/systemd.target.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd.target">
<refentryinfo>
diff --git a/man/systemd.time.xml b/man/systemd.time.xml
index 79fe9735c4..a759707fec 100644
--- a/man/systemd.time.xml
+++ b/man/systemd.time.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd.time">
diff --git a/man/systemd.timer.xml b/man/systemd.timer.xml
index 32f7814f8e..9fe7ff3255 100644
--- a/man/systemd.timer.xml
+++ b/man/systemd.timer.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd.timer">
<refentryinfo>
@@ -240,32 +240,41 @@
<varlistentry>
<term><varname>RandomizedDelaySec=</varname></term>
- <listitem><para>Delay the timer by a randomly selected, evenly
- distributed amount of time between 0 and the specified time
- value. Defaults to 0, indicating that no randomized delay
- shall be applied. Each timer unit will determine this delay
- randomly before each iteration, and the delay will simply be
- added on top of the next determined elapsing time. This is
- useful to stretch dispatching of similarly configured timer
- events over a certain amount time, to avoid that they all fire
- at the same time, possibly resulting in resource
- congestion. Note the relation to
- <varname>AccuracySec=</varname> above: the latter allows the
- service manager to coalesce timer events within a specified
- time range in order to minimize wakeups, the former does the
- opposite: it stretches timer events over a time range, to make
- it unlikely that they fire simultaneously. If
- <varname>RandomizedDelaySec=</varname> and
- <varname>AccuracySec=</varname> are used in conjunction, first
- the randomized delay is added, and then the result is
- possibly further shifted to coalesce it with other timer
- events happening on the system. As mentioned above
- <varname>AccuracySec=</varname> defaults to 1min and
- <varname>RandomizedDelaySec=</varname> to 0, thus encouraging
- coalescing of timer events. In order to optimally stretch
- timer events over a certain range of time, make sure to set
- <varname>RandomizedDelaySec=</varname> to a higher value, and
- <varname>AccuracySec=1us</varname>.</para></listitem>
+ <listitem><para>Delay the timer by a randomly selected, evenly distributed amount of time between 0
+ and the specified time value. Defaults to 0, indicating that no randomized delay shall be applied.
+ Each timer unit will determine this delay randomly before each iteration, and the delay will simply
+ be added on top of the next determined elapsing time, unless modified with
+ <varname>FixedRandomDelay=</varname>, see below.</para>
+
+ <para>This setting is useful to stretch dispatching of similarly configured timer events over a
+ certain time interval, to prevent them from firing all at the same time, possibly resulting in
+ resource congestion.</para>
+
+ <para>Note the relation to <varname>AccuracySec=</varname> above: the latter allows the service
+ manager to coalesce timer events within a specified time range in order to minimize wakeups, while
+ this setting does the opposite: it stretches timer events over an interval, to make it unlikely that
+ they fire simultaneously. If <varname>RandomizedDelaySec=</varname> and
+ <varname>AccuracySec=</varname> are used in conjunction, first the randomized delay is added, and
+ then the result is possibly further shifted to coalesce it with other timer events happening on the
+ system. As mentioned above <varname>AccuracySec=</varname> defaults to 1 minute and
+ <varname>RandomizedDelaySec=</varname> to 0, thus encouraging coalescing of timer events. In order to
+ optimally stretch timer events over a certain range of time, set
+ <varname>AccuracySec=1us</varname> and <varname>RandomizedDelaySec=</varname> to some higher value.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>FixedRandomDelay=</varname></term>
+
+ <listitem><para>Takes a boolean argument. When enabled, the randomized offset specified by
+ <varname>RandomizedDelaySec=</varname> is reused for all firings of the same timer. For a given timer
+ unit, the offset depends on the machine ID, user identifier and timer name, which means that it is
+ stable between restarts of the manager. This effectively creates a fixed offset for an individual
+ timer, reducing the jitter in firings of this timer, while still avoiding firing at the same time as
+ other similarly configured timers.</para>
+
+ <para>This setting has no effect if <varname>RandomizedDelaySec=</varname> is set to 0. Defaults to
+ <option>false</option>.</para></listitem>
</varlistentry>
<varlistentry>
@@ -276,7 +285,7 @@
when the system clock (<constant>CLOCK_REALTIME</constant>) jumps relative to the monotonic clock
(<constant>CLOCK_MONOTONIC</constant>), or when the local system timezone is modified. These options
can be used alone or in combination with other timer expressions (see above) within the same timer
- unit. These options default to false.</para></listitem>
+ unit. These options default to <option>false</option>.</para></listitem>
</varlistentry>
<varlistentry>
@@ -301,7 +310,7 @@
is nonetheless subject to the delay imposed by <varname>RandomizedDelaySec=</varname>.
This is useful to catch up on missed runs of the service when the system was powered down. Note that
this setting only has an effect on timers configured with <varname>OnCalendar=</varname>. Defaults to
- <varname>false</varname>.</para>
+ <option>false</option>.</para>
<para>Use <command>systemctl clean --what=state …</command> on the timer unit to remove the timestamp
file maintained by this option from disk. In particular, use this command before uninstalling a timer
@@ -317,7 +326,7 @@
from suspend, should it be suspended and if the system supports this. Note that this option will only
make sure the system resumes on the appropriate times, it will not take care of suspending it again
after any work that is to be done is finished. Defaults to
- <varname>false</varname>.</para>
+ <option>false</option>.</para>
<para>Note that this functionality requires privileges and is thus generally only available in the
system service manager.</para>
@@ -343,7 +352,7 @@
<varname>RemainAfterElapse=</varname> is on, starting the timer a second time has no effect. However,
if <varname>RemainAfterElapse=</varname> is off and the timer unit was already unloaded, it can be
started again, and thus the service can be triggered multiple times. Defaults to
- <varname>yes</varname>.</para></listitem>
+ <option>true</option>.</para></listitem>
</varlistentry>
</variablelist>
</refsect1>
diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml
index 4b8e515fe2..5364c4c975 100644
--- a/man/systemd.unit.xml
+++ b/man/systemd.unit.xml
@@ -4,7 +4,7 @@
<!ENTITY % entities SYSTEM "custom-entities.ent" >
%entities;
]>
-<!-- SPDX-License-Identifier: LGPL-2.1+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd.unit"
xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -266,10 +266,10 @@
<title>String Escaping for Inclusion in Unit Names</title>
<para>Sometimes it is useful to convert arbitrary strings into unit names. To facilitate this, a method of string
- escaping is used, in order to map strings containing arbitrary byte values (except NUL) into valid unit names and
- their restricted character set. A common special case are unit names that reflect paths to objects in the file
- system hierarchy. Example: a device unit <filename>dev-sda.device</filename> refers to a device with the device
- node <filename index="false">/dev/sda</filename> in the file system.</para>
+ escaping is used, in order to map strings containing arbitrary byte values (except <constant>NUL</constant>) into
+ valid unit names and their restricted character set. A common special case are unit names that reflect paths to
+ objects in the file system hierarchy. Example: a device unit <filename>dev-sda.device</filename> refers to a device
+ with the device node <filename index="false">/dev/sda</filename> in the file system.</para>
<para>The escaping algorithm operates as follows: given a string, any <literal>/</literal> character is replaced by
<literal>-</literal>, and all other characters which are not ASCII alphanumerics or <literal>_</literal> are
@@ -1734,10 +1734,9 @@
</varlistentry>
</variablelist>
- <para>The following specifiers are interpreted in the Install
- section: %n, %N, %p, %i, %j, %g, %G, %U, %u, %m, %H, %b, %v. For their
- meaning see the next section.
- </para>
+ <para>The following specifiers are interpreted in the Install section:
+ %a, %b, %B, %g, %G, %H, %i, %j, %l, %m, %n, %N, %o, %p, %u, %U, %v, %w, %W, %%.
+ For their meaning see the next section.</para>
</refsect1>
<refsect1>
@@ -1788,6 +1787,16 @@
<entry>This is either the unescaped instance name (if applicable) with <filename>/</filename> prepended (if applicable), or the unescaped prefix name prepended with <filename>/</filename>. This implements unescaping according to the rules for escaping absolute file system paths discussed above.</entry>
</row>
<row>
+ <entry><literal>%g</literal></entry>
+ <entry>User group</entry>
+ <entry>This is the name of the group running the service manager instance. In case of the system manager this resolves to <literal>root</literal>.</entry>
+ </row>
+ <row>
+ <entry><literal>%G</literal></entry>
+ <entry>User GID</entry>
+ <entry>This is the numeric GID of the user running the service manager instance. In case of the system manager this resolves to <literal>0</literal>.</entry>
+ </row>
+ <row>
<entry><literal>%h</literal></entry>
<entry>User home directory</entry>
<entry>This is the home directory of the <emphasis>user running the service manager instance</emphasis>. In case of the system manager this resolves to <literal>/root</literal>.
@@ -1802,11 +1811,6 @@ Note that this setting is <emphasis>not</emphasis> influenced by the <varname>Us
<entry>The hostname of the running system at the point in time the unit configuration is loaded.</entry>
</row>
<row>
- <entry><literal>%l</literal></entry>
- <entry>Short host name</entry>
- <entry>The hostname of the running system at the point in time the unit configuration is loaded, truncated at the first dot to remove any domain component.</entry>
- </row>
- <row>
<entry><literal>%i</literal></entry>
<entry>Instance name</entry>
<entry>For instantiated units this is the string between the first <literal>@</literal> character and the type suffix. Empty for non-instantiated units.</entry>
@@ -1827,12 +1831,16 @@ Note that this setting is <emphasis>not</emphasis> influenced by the <varname>Us
<entry>Same as <literal>%j</literal>, but with escaping undone.</entry>
</row>
<row>
+ <entry><literal>%l</literal></entry>
+ <entry>Short host name</entry>
+ <entry>The hostname of the running system at the point in time the unit configuration is loaded, truncated at the first dot to remove any domain component.</entry>
+ </row>
+ <row>
<entry><literal>%L</literal></entry>
<entry>Log directory root</entry>
<entry>This is either <filename>/var/log</filename> (for the system manager) or the path <literal>$XDG_CONFIG_HOME</literal> resolves to with <filename index="false">/log</filename> appended (for user managers).</entry>
</row>
<xi:include href="standard-specifiers.xml" xpointer="m"/>
- <xi:include href="standard-specifiers.xml" xpointer="o"/>
<row>
<entry><literal>%n</literal></entry>
<entry>Full unit name</entry>
@@ -1843,6 +1851,7 @@ Note that this setting is <emphasis>not</emphasis> influenced by the <varname>Us
<entry>Full unit name</entry>
<entry>Same as <literal>%n</literal>, but with the type suffix removed.</entry>
</row>
+ <xi:include href="standard-specifiers.xml" xpointer="o"/>
<row>
<entry><literal>%p</literal></entry>
<entry>Prefix name</entry>
@@ -1870,16 +1879,6 @@ Note that this setting is <emphasis>not</emphasis> influenced by the <varname>Us
</row>
<xi:include href="standard-specifiers.xml" xpointer="T"/>
<row>
- <entry><literal>%g</literal></entry>
- <entry>User group</entry>
- <entry>This is the name of the group running the service manager instance. In case of the system manager this resolves to <literal>root</literal>.</entry>
- </row>
- <row>
- <entry><literal>%G</literal></entry>
- <entry>User GID</entry>
- <entry>This is the numeric GID of the user running the service manager instance. In case of the system manager this resolves to <literal>0</literal>.</entry>
- </row>
- <row>
<entry><literal>%u</literal></entry>
<entry>User name</entry>
<entry>This is the name of the <emphasis>user running the service manager instance</emphasis>. In case of the system manager this resolves to <literal>root</literal>.
diff --git a/man/systemd.xml b/man/systemd.xml
index 20f1a4ebea..882b5a6c74 100644
--- a/man/systemd.xml
+++ b/man/systemd.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/sysusers.d.xml b/man/sysusers.d.xml
index 52b2d89474..a76dda954b 100644
--- a/man/sysusers.d.xml
+++ b/man/sysusers.d.xml
@@ -2,7 +2,7 @@
<!--*-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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sysusers.d" conditional='ENABLE_SYSUSERS'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/tc.xml b/man/tc.xml
index da24c081ee..e5c70d4a18 100644
--- a/man/tc.xml
+++ b/man/tc.xml
@@ -2,7 +2,7 @@
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
<!--
- SPDX-License-Identifier: LGPL-2.1+
+ SPDX-License-Identifier: LGPL-2.1-or-later
-->
<refsect1>
diff --git a/man/telinit.xml b/man/telinit.xml
index 0fffd51093..294b359a3a 100644
--- a/man/telinit.xml
+++ b/man/telinit.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="telinit" conditional='HAVE_SYSV_COMPAT'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/threads-aware.xml b/man/threads-aware.xml
index 49de3444be..fb38d07e1a 100644
--- a/man/threads-aware.xml
+++ b/man/threads-aware.xml
@@ -1,7 +1,7 @@
<?xml version="1.0"?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<!-- SPDX-License-Identifier: LGPL-2.1+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refsect1>
diff --git a/man/timedatectl.xml b/man/timedatectl.xml
index a8c1f5c0f3..e7db4870c0 100644
--- a/man/timedatectl.xml
+++ b/man/timedatectl.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="timedatectl" conditional='ENABLE_TIMEDATECTL'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/timesyncd.conf.xml b/man/timesyncd.conf.xml
index c1a37ec837..1cbea9eaa5 100644
--- a/man/timesyncd.conf.xml
+++ b/man/timesyncd.conf.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="timesyncd.conf" conditional='ENABLE_TIMESYNCD'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/tmpfiles.d.xml b/man/tmpfiles.d.xml
index 5b81bb5888..49ce8375a4 100644
--- a/man/tmpfiles.d.xml
+++ b/man/tmpfiles.d.xml
@@ -2,7 +2,7 @@
<!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+
+ SPDX-License-Identifier: LGPL-2.1-or-later
Copyright © 2010 Brandon Philips
-->
@@ -640,6 +640,16 @@ w- /proc/sys/vm/swappiness - - - - 10</programlisting></para>
<entry>In <option>--user</option> mode, this is the same as <varname>$XDG_CACHE_HOME</varname>, and <filename>/var/cache</filename> otherwise.</entry>
</row>
<row>
+ <entry><literal>%g</literal></entry>
+ <entry>User group</entry>
+ <entry>This is the name of the group running the command. In case of the system instance this resolves to <literal>root</literal>.</entry>
+ </row>
+ <row>
+ <entry><literal>%G</literal></entry>
+ <entry>User GID</entry>
+ <entry>This is the numeric GID of the group running the command. In case of the system instance this resolves to <constant>0</constant>.</entry>
+ </row>
+ <row>
<entry><literal>%h</literal></entry>
<entry>User home directory</entry>
<entry>This is the home directory of the user running the command. In case of the system instance this resolves to <literal>/root</literal>.</entry>
@@ -665,16 +675,6 @@ w- /proc/sys/vm/swappiness - - - - 10</programlisting></para>
</row>
<xi:include href="standard-specifiers.xml" xpointer="T"/>
<row>
- <entry><literal>%g</literal></entry>
- <entry>User group</entry>
- <entry>This is the name of the group running the command. In case of the system instance this resolves to <literal>root</literal>.</entry>
- </row>
- <row>
- <entry><literal>%G</literal></entry>
- <entry>User GID</entry>
- <entry>This is the numeric GID of the group running the command. In case of the system instance this resolves to <constant>0</constant>.</entry>
- </row>
- <row>
<entry><literal>%u</literal></entry>
<entry>User name</entry>
<entry>This is the name of the user running the command. In case of the system instance this resolves to <literal>root</literal>.</entry>
diff --git a/man/udev.conf.xml b/man/udev.conf.xml
index aa695b5e04..df0a70c9fb 100644
--- a/man/udev.conf.xml
+++ b/man/udev.conf.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="udev.conf"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/udev.xml b/man/udev.xml
index a41a39a43f..14e4c21aae 100644
--- a/man/udev.xml
+++ b/man/udev.xml
@@ -3,7 +3,7 @@
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<!--
- SPDX-License-Identifier: LGPL-2.1+
+ SPDX-License-Identifier: LGPL-2.1-or-later
Copyright © 2014 Jason St. John
-->
@@ -23,7 +23,8 @@
<refpurpose>Dynamic device management</refpurpose>
</refnamediv>
- <refsect1><title>Description</title>
+ <refsect1>
+ <title>Description</title>
<para>udev supplies the system software with device events, manages permissions
of device nodes and may create additional symlinks in the <filename>/dev/</filename>
directory, or renames network interfaces. The kernel usually just assigns unpredictable
@@ -44,7 +45,8 @@
sources is provided by the library libudev.</para>
</refsect1>
- <refsect1><title>Rules Files</title>
+ <refsect1>
+ <title>Rules Files</title>
<para>The udev rules are read from the files located in the system rules directories
<filename>/usr/lib/udev/rules.d</filename> and <filename>/usr/local/lib/udev/rules.d</filename>, the
volatile runtime directory <filename>/run/udev/rules.d</filename> and the local administration
@@ -68,727 +70,749 @@
pointing to the device node, or run a specified program as part of
the event handling.</para>
- <para>A rule consists of a comma-separated list of one or more key-value pairs.
- Each key has a distinct operation, depending on the used operator. Valid
- operators are:</para>
- <variablelist>
- <varlistentry>
- <term><literal>==</literal></term>
- <listitem>
- <para>Compare for equality.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><literal>!=</literal></term>
- <listitem>
- <para>Compare for inequality.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><literal>=</literal></term>
- <listitem>
- <para>Assign a value to a key. Keys that represent a list are reset
- and only this single value is assigned.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><literal>+=</literal></term>
- <listitem>
- <para>Add the value to a key that holds a list of entries.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><literal>-=</literal></term>
- <listitem>
- <para>Remove the value from a key that holds a list of entries.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><literal>:=</literal></term>
- <listitem>
- <para>Assign a value to a key finally; disallow any later changes.</para>
- </listitem>
- </varlistentry>
- </variablelist>
-
- <para>The following key names can be used to match against device properties.
- Some of the keys also match against properties of the parent devices in sysfs,
- not only the device that has generated the event. If multiple keys that match
- a parent device are specified in a single rule, all these keys must match at
- one and the same parent device.</para>
- <variablelist class='udev-directives'>
- <varlistentry>
- <term><varname>ACTION</varname></term>
- <listitem>
- <para>Match the name of the event action.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><varname>DEVPATH</varname></term>
- <listitem>
- <para>Match the devpath of the event device.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><varname>KERNEL</varname></term>
- <listitem>
- <para>Match the name of the event device.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><varname>NAME</varname></term>
- <listitem>
- <para>Match the name of a network interface. It can be used once the
- NAME key has been set in one of the preceding rules.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><varname>SYMLINK</varname></term>
- <listitem>
- <para>Match the name of a symlink targeting the node. It can
- be used once a SYMLINK key has been set in one of the preceding
- rules. There may be multiple symlinks; only one needs to match.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><varname>SUBSYSTEM</varname></term>
- <listitem>
- <para>Match the subsystem of the event device.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><varname>DRIVER</varname></term>
- <listitem>
- <para>Match the driver name of the event device. Only set this key for devices
- which are bound to a driver at the time the event is generated.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><varname>ATTR{<replaceable>filename</replaceable>}</varname></term>
- <listitem>
- <para>Match sysfs attribute values of the event device. Trailing
- whitespace in the attribute values is ignored unless the specified match
- value itself contains trailing whitespace.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><varname>SYSCTL{<replaceable>kernel parameter</replaceable>}</varname></term>
- <listitem>
- <para>Match a kernel parameter value.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><varname>KERNELS</varname></term>
- <listitem>
- <para>Search the devpath upwards for a matching device name.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><varname>SUBSYSTEMS</varname></term>
- <listitem>
- <para>Search the devpath upwards for a matching device subsystem name.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><varname>DRIVERS</varname></term>
- <listitem>
- <para>Search the devpath upwards for a matching device driver name.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><varname>ATTRS{<replaceable>filename</replaceable>}</varname></term>
- <listitem>
- <para>Search the devpath upwards for a device with matching sysfs attribute values.
- If multiple <varname>ATTRS</varname> matches are specified, all of them
- must match on the same device. Trailing whitespace in the attribute values is ignored
- unless the specified match value itself contains trailing whitespace.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><varname>TAGS</varname></term>
- <listitem>
- <para>Search the devpath upwards for a device with matching tag.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><varname>ENV{<replaceable>key</replaceable>}</varname></term>
- <listitem>
- <para>Match against a device property value.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><varname>CONST{<replaceable>key</replaceable>}</varname></term>
- <listitem>
- <para>Match against a system-wide constant. Supported keys are:</para>
- <variablelist>
- <varlistentry>
- <term><literal>arch</literal></term>
- <listitem>
- <para>System's architecture. See <option>ConditionArchitecture=</option> in
- <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>
- for possible values.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><literal>virt</literal></term>
- <listitem>
- <para>System's virtualization environment. See
- <citerefentry><refentrytitle>systemd-detect-virt</refentrytitle><manvolnum>1</manvolnum></citerefentry>
- for possible values.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- <para>Unknown keys will never match.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><varname>TAG</varname></term>
- <listitem>
- <para>Match against a device tag.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><varname>TEST{<replaceable>octal mode mask</replaceable>}</varname></term>
- <listitem>
- <para>Test the existence of a file. An octal mode mask can be specified
- if needed.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><varname>PROGRAM</varname></term>
- <listitem>
- <para>Execute a program to determine whether there is a match; the key is true if the program
- returns successfully. The device properties are made available to the executed program in the
- environment. The program's standard output is available in the <varname>RESULT</varname>
- key.</para>
-
- <para>This can only be used for very short-running foreground tasks. For details, see
- <varname>RUN</varname>.</para>
-
- <para>Note that multiple <varname>PROGRAM</varname> keys may be specified in one rule, and
- <literal>=</literal>, <literal>:=</literal>, and <literal>+=</literal> have the same effect as
- <literal>==</literal>.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><varname>RESULT</varname></term>
- <listitem>
- <para>Match the returned string of the last <varname>PROGRAM</varname> call.
- This key can be used in the same or in any later rule after a
- <varname>PROGRAM</varname> call.</para>
- </listitem>
- </varlistentry>
- </variablelist>
-
- <para>Most of the fields support shell glob pattern matching and
- alternate patterns. The following special characters are supported:</para>
- <variablelist>
- <varlistentry>
- <term><literal>*</literal></term>
- <listitem>
- <para>Matches zero or more characters.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><literal>?</literal></term>
- <listitem>
- <para>Matches any single character.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><literal>[]</literal></term>
- <listitem>
- <para>Matches any single character specified within the brackets. For
- example, the pattern string <literal>tty[SR]</literal>
- would match either <literal>ttyS</literal> or <literal>ttyR</literal>.
- Ranges are also supported via the <literal>-</literal> character.
- For example, to match on the range of all digits, the pattern
- <literal>[0-9]</literal> could be used. If the first character
- following the <literal>[</literal> is a <literal>!</literal>,
- any characters not enclosed are matched.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><literal>|</literal></term>
- <listitem>
- <para>Separates alternative patterns. For example, the pattern string
- <literal>abc|x*</literal> would match either <literal>abc</literal>
- or <literal>x*</literal>.</para>
- </listitem>
- </varlistentry>
- </variablelist>
-
- <para>The following keys can get values assigned:</para>
- <variablelist class='udev-directives'>
- <varlistentry>
- <term><varname>NAME</varname></term>
- <listitem>
- <para>The name to use for a network interface. See
- <citerefentry><refentrytitle>systemd.link</refentrytitle><manvolnum>5</manvolnum></citerefentry>
- for a higher-level mechanism for setting the interface name.
- The name of a device node cannot be changed by udev, only additional
- symlinks can be created.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><varname>SYMLINK</varname></term>
- <listitem>
- <para>The name of a symlink targeting the node. Every matching rule adds
- this value to the list of symlinks to be created.</para>
- <para>The set of characters to name a symlink is limited. Allowed
- characters are <literal>0-9A-Za-z#+-.:=@_/</literal>, valid UTF-8 character
- sequences, and <literal>\x00</literal> hex encoding. All other
- characters are replaced by a <literal>_</literal> character.</para>
- <para>Multiple symlinks may be specified by separating the names by the
- space character. In case multiple devices claim the same name, the link
- always points to the device with the highest link_priority. If the current
- device goes away, the links are re-evaluated and the device with the
- next highest link_priority becomes the owner of the link. If no
- link_priority is specified, the order of the devices (and which one of
- them owns the link) is undefined.</para>
- <para>Symlink names must never conflict with the kernel's default device
- node names, as that would result in unpredictable behavior.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><varname>OWNER</varname>, <varname>GROUP</varname>, <varname>MODE</varname></term>
- <listitem>
- <para>The permissions for the device node. Every specified value overrides
- the compiled-in default value.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><varname>SECLABEL{<replaceable>module</replaceable>}</varname></term>
- <listitem>
- <para>Applies the specified Linux Security Module label to the device node.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><varname>ATTR{<replaceable>key</replaceable>}</varname></term>
- <listitem>
- <para>The value that should be written to a sysfs attribute of the
- event device.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><varname>SYSCTL{<replaceable>kernel parameter</replaceable>}</varname></term>
- <listitem>
- <para>The value that should be written to kernel parameter.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><varname>ENV{<replaceable>key</replaceable>}</varname></term>
- <listitem>
- <para>Set a device property value. Property names with a leading <literal>.</literal>
- are neither stored in the database nor exported to events or
- external tools (run by, for example, the <varname>PROGRAM</varname>
- match key).</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><varname>TAG</varname></term>
- <listitem>
- <para>Attach a tag to a device. This is used to filter events for users
- of libudev's monitor functionality, or to enumerate a group of tagged
- devices. The implementation can only work efficiently if only a few
- tags are attached to a device. It is only meant to be used in
- contexts with specific device filter requirements, and not as a
- general-purpose flag. Excessive use might result in inefficient event
- handling.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><varname>RUN{<replaceable>type</replaceable>}</varname></term>
- <listitem>
- <para>Specify a program to be executed after processing of all the rules for the event. With
- <literal>+=</literal>, this invocation is added to the list, and with <literal>=</literal> or
- <literal>:=</literal>, it replaces any previous contents of the list. Please note that both
- <literal>program</literal> and <literal>builtin</literal> types described below use a single
- list, so clearing the list with <literal>:=</literal> and <literal>=</literal> affects both
- types.</para>
-
- <para><replaceable>type</replaceable> may be:</para>
- <variablelist>
- <varlistentry>
- <term><literal>program</literal></term>
- <listitem>
- <para>Execute an external program specified as the assigned
- value. If no absolute path is given, the program is expected
- to live in <filename>/usr/lib/udev</filename>; otherwise, the
- absolute path must be specified.</para>
- <para>This is the default if no <replaceable>type</replaceable>
- is specified.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><literal>builtin</literal></term>
- <listitem>
- <para>As <varname>program</varname>, but use one of the
- built-in programs rather than an external one.</para>
- </listitem>
- </varlistentry>
- </variablelist>
-
- <para>The program name and following arguments are separated by spaces. Single quotes can be
- used to specify arguments with spaces.</para>
-
- <para>This can only be used for very short-running foreground tasks. Running an event process for
- a long period of time may block all further events for this or a dependent device.</para>
-
- <para>Note that running programs that access the network or mount/unmount filesystems is not
- allowed inside of udev rules, due to the default sandbox that is enforced on
- <filename>systemd-udevd.service</filename>.</para>
-
- <para>Starting daemons or other long-running processes is not allowed; the forked processes,
- detached or not, will be unconditionally killed after the event handling has finished. In order
- to activate long-running processes from udev rules, provide a service unit and pull it in from a
- udev device using the <varname>SYSTEMD_WANTS</varname> device property. See
- <citerefentry><refentrytitle>systemd.device</refentrytitle><manvolnum>5</manvolnum></citerefentry>
- for details.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><varname>LABEL</varname></term>
- <listitem>
- <para>A named label to which a <varname>GOTO</varname> may jump.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><varname>GOTO</varname></term>
- <listitem>
- <para>Jumps to the next <varname>LABEL</varname> with a matching name.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><varname>IMPORT{<replaceable>type</replaceable>}</varname></term>
- <listitem>
- <para>Import a set of variables as device properties, depending on
- <replaceable>type</replaceable>:</para>
-
- <variablelist>
- <varlistentry>
- <term><literal>program</literal></term>
- <listitem>
- <para>Execute an external program specified as the assigned
- value and, if it returns successfully,
- import its output, which must be in environment key
- format. Path specification, command/argument separation,
- and quoting work like in <varname>RUN</varname>.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><literal>builtin</literal></term>
- <listitem>
- <para>Similar to <literal>program</literal>, but use one of the
- built-in programs rather than an external one.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><literal>file</literal></term>
- <listitem>
- <para>Import a text file specified as the assigned value, the content
- of which must be in environment key format.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><literal>db</literal></term>
- <listitem>
- <para>Import a single property specified as the assigned value from the
- current device database. This works only if the database is already populated
- by an earlier event.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><literal>cmdline</literal></term>
- <listitem>
- <para>Import a single property from the kernel command line. For simple flags
- the value of the property is set to <literal>1</literal>.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><literal>parent</literal></term>
- <listitem>
- <para>Import the stored keys from the parent device by reading
- the database entry of the parent device. The value assigned to
- <option>IMPORT{parent}</option> is used as a filter of key names
- to import (with the same shell glob pattern matching used for
- comparisons).</para>
- </listitem>
- </varlistentry>
- </variablelist>
-
- <para>This can only be used for very short-running foreground tasks. For details see
- <option>RUN</option>.</para>
-
- <para>Note that multiple <varname>IMPORT{}</varname> keys may be specified in one rule, and
- <literal>=</literal>, <literal>:=</literal>, and <literal>+=</literal> have the same effect as
- <literal>==</literal>. The key is true if the import is successful, unless <literal>!=</literal>
- is used as the operator which causes the key to be true if the import failed.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><varname>OPTIONS</varname></term>
- <listitem>
- <para>Rule and device options:</para>
- <variablelist class='udev-directives'>
- <varlistentry>
- <term><option>link_priority=<replaceable>value</replaceable></option></term>
- <listitem>
- <para>Specify the priority of the created symlinks. Devices with higher
- priorities overwrite existing symlinks of other devices. The default is 0.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>string_escape=<replaceable>none|replace</replaceable></option></term>
- <listitem>
- <para>Usually, control and other possibly unsafe characters are replaced
- in strings used for device naming. The mode of replacement can be specified
- with this option.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>static_node=</option></term>
- <listitem>
- <para>Apply the permissions specified in this rule to the
- static device node with the specified name. Also, for every
- tag specified in this rule, create a symlink
- in the directory
- <filename>/run/udev/static_node-tags/<replaceable>tag</replaceable></filename>
- pointing at the static device node with the specified name.
- Static device node creation is performed by systemd-tmpfiles
- before systemd-udevd is started. The static nodes might not
- have a corresponding kernel device; they are used to trigger
- automatic kernel module loading when they are accessed.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>watch</option></term>
- <listitem>
- <para>Watch the device node with inotify; when the node is
- closed after being opened for writing, a change uevent is
- synthesized.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>nowatch</option></term>
- <listitem>
- <para>Disable the watching of a device node with inotify.</para>
- </listitem>
- </varlistentry>
+ <para>A rule consists of a comma-separated list of one or more key-operator-value expressions.
+ Each expression has a distinct effect, depending on the key and operator used.</para>
+
+ <refsect2>
+ <title>Operators</title>
+ <variablelist>
+ <varlistentry>
+ <term><literal>==</literal></term>
+ <listitem>
+ <para>Compare for equality.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>!=</literal></term>
+ <listitem>
+ <para>Compare for inequality.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>=</literal></term>
+ <listitem>
+ <para>Assign a value to a key. Keys that represent a list are reset
+ and only this single value is assigned.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>+=</literal></term>
+ <listitem>
+ <para>Add the value to a key that holds a list of entries.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>-=</literal></term>
+ <listitem>
+ <para>Remove the value from a key that holds a list of entries.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>:=</literal></term>
+ <listitem>
+ <para>Assign a value to a key finally; disallow any later changes.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2>
+ <title>Values</title>
+ <para>Values are written as double quoted strings, such as ("string").
+ To include a quotation mark (") in the value, precede it by a backslash (\").
+ Any other occurrences of a character followed by a backslash are not further unescaped.
+ That is, "\t\n" is treated as four characters:
+ backslash, lowercase t, backslash, lowercase n.</para>
+
+ <para>The string can be prefixed with a lowercase e (e"string\n") to mark the string as
+ <ulink url="https://en.wikipedia.org/wiki/Escape_sequences_in_C#Table_of_escape_sequences">C-style escaped</ulink>.
+ For example, e"string\n" is parsed as 7 characters: 6 lowercase letters and a newline.
+ This can be useful for writing special characters when a kernel driver requires them.</para>
+
+ <para>Please note that <constant>NUL</constant> is not allowed in either string variant.</para>
+ </refsect2>
+
+ <refsect2>
+ <title>Keys</title>
+ <para>The following key names can be used to match against device properties.
+ Some of the keys also match against properties of the parent devices in sysfs,
+ not only the device that has generated the event. If multiple keys that match
+ a parent device are specified in a single rule, all these keys must match at
+ one and the same parent device.</para>
+ <variablelist class='udev-directives'>
+ <varlistentry>
+ <term><varname>ACTION</varname></term>
+ <listitem>
+ <para>Match the name of the event action.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>DEVPATH</varname></term>
+ <listitem>
+ <para>Match the devpath of the event device.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>KERNEL</varname></term>
+ <listitem>
+ <para>Match the name of the event device.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>NAME</varname></term>
+ <listitem>
+ <para>Match the name of a network interface. It can be used once the
+ NAME key has been set in one of the preceding rules.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>SYMLINK</varname></term>
+ <listitem>
+ <para>Match the name of a symlink targeting the node. It can
+ be used once a SYMLINK key has been set in one of the preceding
+ rules. There may be multiple symlinks; only one needs to match.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>SUBSYSTEM</varname></term>
+ <listitem>
+ <para>Match the subsystem of the event device.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><varname>DRIVER</varname></term>
+ <listitem>
+ <para>Match the driver name of the event device. Only set this key for devices
+ which are bound to a driver at the time the event is generated.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><varname>ATTR{<replaceable>filename</replaceable>}</varname></term>
+ <listitem>
+ <para>Match sysfs attribute values of the event device. Trailing
+ whitespace in the attribute values is ignored unless the specified match
+ value itself contains trailing whitespace.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><varname>SYSCTL{<replaceable>kernel parameter</replaceable>}</varname></term>
+ <listitem>
+ <para>Match a kernel parameter value.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>KERNELS</varname></term>
+ <listitem>
+ <para>Search the devpath upwards for a matching device name.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>SUBSYSTEMS</varname></term>
+ <listitem>
+ <para>Search the devpath upwards for a matching device subsystem name.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>DRIVERS</varname></term>
+ <listitem>
+ <para>Search the devpath upwards for a matching device driver name.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>ATTRS{<replaceable>filename</replaceable>}</varname></term>
+ <listitem>
+ <para>Search the devpath upwards for a device with matching sysfs attribute values.
+ If multiple <varname>ATTRS</varname> matches are specified, all of them
+ must match on the same device. Trailing whitespace in the attribute values is ignored
+ unless the specified match value itself contains trailing whitespace.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>TAGS</varname></term>
+ <listitem>
+ <para>Search the devpath upwards for a device with matching tag.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>ENV{<replaceable>key</replaceable>}</varname></term>
+ <listitem>
+ <para>Match against a device property value.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>CONST{<replaceable>key</replaceable>}</varname></term>
+ <listitem>
+ <para>Match against a system-wide constant. Supported keys are:</para>
+ <variablelist>
+ <varlistentry>
+ <term><literal>arch</literal></term>
+ <listitem>
+ <para>System's architecture. See <option>ConditionArchitecture=</option> in
+ <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+ for possible values.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>virt</literal></term>
+ <listitem>
+ <para>System's virtualization environment. See
+ <citerefentry><refentrytitle>systemd-detect-virt</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+ for possible values.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para>Unknown keys will never match.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>TAG</varname></term>
+ <listitem>
+ <para>Match against a device tag.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>TEST{<replaceable>octal mode mask</replaceable>}</varname></term>
+ <listitem>
+ <para>Test the existence of a file. An octal mode mask can be specified
+ if needed.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>PROGRAM</varname></term>
+ <listitem>
+ <para>Execute a program to determine whether there is a match; the key is true if the program
+ returns successfully. The device properties are made available to the executed program in the
+ environment. The program's standard output is available in the <varname>RESULT</varname>
+ key.</para>
+
+ <para>This can only be used for very short-running foreground tasks. For details, see
+ <varname>RUN</varname>.</para>
+
+ <para>Note that multiple <varname>PROGRAM</varname> keys may be specified in one rule, and
+ <literal>=</literal>, <literal>:=</literal>, and <literal>+=</literal> have the same effect as
+ <literal>==</literal>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>RESULT</varname></term>
+ <listitem>
+ <para>Match the returned string of the last <varname>PROGRAM</varname> call.
+ This key can be used in the same or in any later rule after a
+ <varname>PROGRAM</varname> call.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>Most of the fields support shell glob pattern matching and
+ alternate patterns. The following special characters are supported:</para>
+ <variablelist>
+ <varlistentry>
+ <term><literal>*</literal></term>
+ <listitem>
+ <para>Matches zero or more characters.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>?</literal></term>
+ <listitem>
+ <para>Matches any single character.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>[]</literal></term>
+ <listitem>
+ <para>Matches any single character specified within the brackets. For
+ example, the pattern string <literal>tty[SR]</literal>
+ would match either <literal>ttyS</literal> or <literal>ttyR</literal>.
+ Ranges are also supported via the <literal>-</literal> character.
+ For example, to match on the range of all digits, the pattern
+ <literal>[0-9]</literal> could be used. If the first character
+ following the <literal>[</literal> is a <literal>!</literal>,
+ any characters not enclosed are matched.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>|</literal></term>
+ <listitem>
+ <para>Separates alternative patterns. For example, the pattern string
+ <literal>abc|x*</literal> would match either <literal>abc</literal>
+ or <literal>x*</literal>.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>The following keys can get values assigned:</para>
+ <variablelist class='udev-directives'>
+ <varlistentry>
+ <term><varname>NAME</varname></term>
+ <listitem>
+ <para>The name to use for a network interface. See
+ <citerefentry><refentrytitle>systemd.link</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+ for a higher-level mechanism for setting the interface name.
+ The name of a device node cannot be changed by udev, only additional
+ symlinks can be created.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>SYMLINK</varname></term>
+ <listitem>
+ <para>The name of a symlink targeting the node. Every matching rule adds
+ this value to the list of symlinks to be created.</para>
+ <para>The set of characters to name a symlink is limited. Allowed
+ characters are <literal>0-9A-Za-z#+-.:=@_/</literal>, valid UTF-8 character
+ sequences, and <literal>\x00</literal> hex encoding. All other
+ characters are replaced by a <literal>_</literal> character.</para>
+ <para>Multiple symlinks may be specified by separating the names by the
+ space character. In case multiple devices claim the same name, the link
+ always points to the device with the highest link_priority. If the current
+ device goes away, the links are re-evaluated and the device with the
+ next highest link_priority becomes the owner of the link. If no
+ link_priority is specified, the order of the devices (and which one of
+ them owns the link) is undefined.</para>
+ <para>Symlink names must never conflict with the kernel's default device
+ node names, as that would result in unpredictable behavior.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>OWNER</varname>, <varname>GROUP</varname>, <varname>MODE</varname></term>
+ <listitem>
+ <para>The permissions for the device node. Every specified value overrides
+ the compiled-in default value.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>SECLABEL{<replaceable>module</replaceable>}</varname></term>
+ <listitem>
+ <para>Applies the specified Linux Security Module label to the device node.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>ATTR{<replaceable>key</replaceable>}</varname></term>
+ <listitem>
+ <para>The value that should be written to a sysfs attribute of the
+ event device.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>SYSCTL{<replaceable>kernel parameter</replaceable>}</varname></term>
+ <listitem>
+ <para>The value that should be written to kernel parameter.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>ENV{<replaceable>key</replaceable>}</varname></term>
+ <listitem>
+ <para>Set a device property value. Property names with a leading <literal>.</literal>
+ are neither stored in the database nor exported to events or
+ external tools (run by, for example, the <varname>PROGRAM</varname>
+ match key).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>TAG</varname></term>
+ <listitem>
+ <para>Attach a tag to a device. This is used to filter events for users
+ of libudev's monitor functionality, or to enumerate a group of tagged
+ devices. The implementation can only work efficiently if only a few
+ tags are attached to a device. It is only meant to be used in
+ contexts with specific device filter requirements, and not as a
+ general-purpose flag. Excessive use might result in inefficient event
+ handling.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>RUN{<replaceable>type</replaceable>}</varname></term>
+ <listitem>
+ <para>Specify a program to be executed after processing of all the rules for the event. With
+ <literal>+=</literal>, this invocation is added to the list, and with <literal>=</literal> or
+ <literal>:=</literal>, it replaces any previous contents of the list. Please note that both
+ <literal>program</literal> and <literal>builtin</literal> types described below use a single
+ list, so clearing the list with <literal>:=</literal> and <literal>=</literal> affects both
+ types.</para>
+
+ <para><replaceable>type</replaceable> may be:</para>
+ <variablelist>
+ <varlistentry>
+ <term><literal>program</literal></term>
+ <listitem>
+ <para>Execute an external program specified as the assigned
+ value. If no absolute path is given, the program is expected
+ to live in <filename>/usr/lib/udev</filename>; otherwise, the
+ absolute path must be specified.</para>
+ <para>This is the default if no <replaceable>type</replaceable>
+ is specified.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>builtin</literal></term>
+ <listitem>
+ <para>As <varname>program</varname>, but use one of the
+ built-in programs rather than an external one.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>The program name and following arguments are separated by spaces. Single quotes can be
+ used to specify arguments with spaces.</para>
+
+ <para>This can only be used for very short-running foreground tasks. Running an event process for
+ a long period of time may block all further events for this or a dependent device.</para>
+
+ <para>Note that running programs that access the network or mount/unmount filesystems is not
+ allowed inside of udev rules, due to the default sandbox that is enforced on
+ <filename>systemd-udevd.service</filename>.</para>
+
+ <para>Starting daemons or other long-running processes is not allowed; the forked processes,
+ detached or not, will be unconditionally killed after the event handling has finished. In order
+ to activate long-running processes from udev rules, provide a service unit and pull it in from a
+ udev device using the <varname>SYSTEMD_WANTS</varname> device property. See
+ <citerefentry><refentrytitle>systemd.device</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+ for details.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>LABEL</varname></term>
+ <listitem>
+ <para>A named label to which a <varname>GOTO</varname> may jump.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>GOTO</varname></term>
+ <listitem>
+ <para>Jumps to the next <varname>LABEL</varname> with a matching name.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>IMPORT{<replaceable>type</replaceable>}</varname></term>
+ <listitem>
+ <para>Import a set of variables as device properties, depending on
+ <replaceable>type</replaceable>:</para>
+
+ <variablelist>
+ <varlistentry>
+ <term><literal>program</literal></term>
+ <listitem>
+ <para>Execute an external program specified as the assigned
+ value and, if it returns successfully,
+ import its output, which must be in environment key
+ format. Path specification, command/argument separation,
+ and quoting work like in <varname>RUN</varname>.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>builtin</literal></term>
+ <listitem>
+ <para>Similar to <literal>program</literal>, but use one of the
+ built-in programs rather than an external one.</para>
+ </listitem>
+ </varlistentry>
<varlistentry>
- <term><option>db_persist</option></term>
- <listitem>
- <para>Set the flag (sticky bit) on the udev database entry
- of the event device. Device properties are then kept in the
- database even when
- <command>udevadm info --cleanup-db</command> is called.
- This option can be useful in certain cases
- (e.g. Device Mapper devices) for persisting device state
- on the transition from initramfs.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </listitem>
- </varlistentry>
- </variablelist>
-
- <para>The <varname>NAME</varname>, <varname>SYMLINK</varname>,
- <varname>PROGRAM</varname>, <varname>OWNER</varname>,
- <varname>GROUP</varname>, <varname>MODE</varname>, <varname>SECLABEL</varname>,
- and <varname>RUN</varname> fields support simple string substitutions.
- The <varname>RUN</varname> substitutions are performed after all rules
- have been processed, right before the program is executed, allowing for
- the use of device properties set by earlier matching rules. For all other
- fields, substitutions are performed while the individual rule is being
- processed. The available substitutions are:</para>
- <variablelist class='udev-directives'>
- <varlistentry>
- <term><option>$kernel</option>, <option>%k</option></term>
- <listitem>
- <para>The kernel name for this device.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>$number</option>, <option>%n</option></term>
- <listitem>
- <para>The kernel number for this device. For example, <literal>sda3</literal> has kernel number
- 3.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>$devpath</option>, <option>%p</option></term>
- <listitem>
- <para>The devpath of the device.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>$id</option>, <option>%b</option></term>
- <listitem>
- <para>The name of the device matched while searching the devpath
- upwards for <option>SUBSYSTEMS</option>, <option>KERNELS</option>,
- <option>DRIVERS</option>, and <option>ATTRS</option>.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>$driver</option></term>
- <listitem>
- <para>The driver name of the device matched while searching the
- devpath upwards for <option>SUBSYSTEMS</option>,
- <option>KERNELS</option>, <option>DRIVERS</option>, and
- <option>ATTRS</option>.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>$attr{<replaceable>file</replaceable>}</option>, <option>%s{<replaceable>file</replaceable>}</option></term>
- <listitem>
- <para>The value of a sysfs attribute found at the device where
- all keys of the rule have matched. If the matching device does not
- have such an attribute, and a previous <option>KERNELS</option>,
- <option>SUBSYSTEMS</option>, <option>DRIVERS</option>, or
- <option>ATTRS</option> test selected a parent device, then the
- attribute from that parent device is used.
- </para>
- <para>If the attribute is a symlink, the last element of the
- symlink target is returned as the value.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>$env{<replaceable>key</replaceable>}</option>, <option>%E{<replaceable>key</replaceable>}</option></term>
- <listitem>
- <para>A device property value.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>$major</option>, <option>%M</option></term>
- <listitem>
- <para>The kernel major number for the device.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>$minor</option>, <option>%m</option></term>
- <listitem>
- <para>The kernel minor number for the device.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>$result</option>, <option>%c</option></term>
- <listitem>
- <para>The string returned by the external program requested with
- <varname>PROGRAM</varname>.
- A single part of the string, separated by a space character, may be selected
- by specifying the part number as an attribute: <literal>%c{N}</literal>.
- If the number is followed by the <literal>+</literal> character, this part plus all remaining parts
- of the result string are substituted: <literal>%c{N+}</literal>.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>$parent</option>, <option>%P</option></term>
- <listitem>
- <para>The node name of the parent device.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>$name</option></term>
- <listitem>
- <para>The current name of the device. If not changed by a rule, it is the
- name of the kernel device.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>$links</option></term>
- <listitem>
- <para>A space-separated list of the current symlinks. The value is
- only set during a remove event or if an earlier rule assigned a value.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>$root</option>, <option>%r</option></term>
- <listitem>
- <para>The udev_root value.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>$sys</option>, <option>%S</option></term>
- <listitem>
- <para>The sysfs mount point.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>$devnode</option>, <option>%N</option></term>
- <listitem>
- <para>The name of the device node.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>%%</option></term>
- <listitem>
- <para>The <literal>%</literal> character itself.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>$$</option></term>
- <listitem>
- <para>The <literal>$</literal> character itself.</para>
- </listitem>
- </varlistentry>
- </variablelist>
+ <term><literal>file</literal></term>
+ <listitem>
+ <para>Import a text file specified as the assigned value, the content
+ of which must be in environment key format.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>db</literal></term>
+ <listitem>
+ <para>Import a single property specified as the assigned value from the
+ current device database. This works only if the database is already populated
+ by an earlier event.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>cmdline</literal></term>
+ <listitem>
+ <para>Import a single property from the kernel command line. For simple flags
+ the value of the property is set to <literal>1</literal>.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>parent</literal></term>
+ <listitem>
+ <para>Import the stored keys from the parent device by reading
+ the database entry of the parent device. The value assigned to
+ <option>IMPORT{parent}</option> is used as a filter of key names
+ to import (with the same shell glob pattern matching used for
+ comparisons).</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>This can only be used for very short-running foreground tasks. For details see
+ <option>RUN</option>.</para>
+
+ <para>Note that multiple <varname>IMPORT{}</varname> keys may be specified in one rule, and
+ <literal>=</literal>, <literal>:=</literal>, and <literal>+=</literal> have the same effect as
+ <literal>==</literal>. The key is true if the import is successful, unless <literal>!=</literal>
+ is used as the operator which causes the key to be true if the import failed.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>OPTIONS</varname></term>
+ <listitem>
+ <para>Rule and device options:</para>
+ <variablelist class='udev-directives'>
+ <varlistentry>
+ <term><option>link_priority=<replaceable>value</replaceable></option></term>
+ <listitem>
+ <para>Specify the priority of the created symlinks. Devices with higher
+ priorities overwrite existing symlinks of other devices. The default is 0.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>string_escape=<replaceable>none|replace</replaceable></option></term>
+ <listitem>
+ <para>Usually, control and other possibly unsafe characters are replaced
+ in strings used for device naming. The mode of replacement can be specified
+ with this option.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>static_node=</option></term>
+ <listitem>
+ <para>Apply the permissions specified in this rule to the
+ static device node with the specified name. Also, for every
+ tag specified in this rule, create a symlink
+ in the directory
+ <filename>/run/udev/static_node-tags/<replaceable>tag</replaceable></filename>
+ pointing at the static device node with the specified name.
+ Static device node creation is performed by systemd-tmpfiles
+ before systemd-udevd is started. The static nodes might not
+ have a corresponding kernel device; they are used to trigger
+ automatic kernel module loading when they are accessed.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>watch</option></term>
+ <listitem>
+ <para>Watch the device node with inotify; when the node is
+ closed after being opened for writing, a change uevent is
+ synthesized.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>nowatch</option></term>
+ <listitem>
+ <para>Disable the watching of a device node with inotify.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>db_persist</option></term>
+ <listitem>
+ <para>Set the flag (sticky bit) on the udev database entry
+ of the event device. Device properties are then kept in the
+ database even when
+ <command>udevadm info --cleanup-db</command> is called.
+ This option can be useful in certain cases
+ (e.g. Device Mapper devices) for persisting device state
+ on the transition from initramfs.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>The <varname>NAME</varname>, <varname>SYMLINK</varname>,
+ <varname>PROGRAM</varname>, <varname>OWNER</varname>,
+ <varname>GROUP</varname>, <varname>MODE</varname>, <varname>SECLABEL</varname>,
+ and <varname>RUN</varname> fields support simple string substitutions.
+ The <varname>RUN</varname> substitutions are performed after all rules
+ have been processed, right before the program is executed, allowing for
+ the use of device properties set by earlier matching rules. For all other
+ fields, substitutions are performed while the individual rule is being
+ processed. The available substitutions are:</para>
+ <variablelist class='udev-directives'>
+ <varlistentry>
+ <term><option>$kernel</option>, <option>%k</option></term>
+ <listitem>
+ <para>The kernel name for this device.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>$number</option>, <option>%n</option></term>
+ <listitem>
+ <para>The kernel number for this device. For example, <literal>sda3</literal> has kernel number
+ 3.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>$devpath</option>, <option>%p</option></term>
+ <listitem>
+ <para>The devpath of the device.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>$id</option>, <option>%b</option></term>
+ <listitem>
+ <para>The name of the device matched while searching the devpath
+ upwards for <option>SUBSYSTEMS</option>, <option>KERNELS</option>,
+ <option>DRIVERS</option>, and <option>ATTRS</option>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>$driver</option></term>
+ <listitem>
+ <para>The driver name of the device matched while searching the
+ devpath upwards for <option>SUBSYSTEMS</option>,
+ <option>KERNELS</option>, <option>DRIVERS</option>, and
+ <option>ATTRS</option>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>$attr{<replaceable>file</replaceable>}</option>, <option>%s{<replaceable>file</replaceable>}</option></term>
+ <listitem>
+ <para>The value of a sysfs attribute found at the device where
+ all keys of the rule have matched. If the matching device does not
+ have such an attribute, and a previous <option>KERNELS</option>,
+ <option>SUBSYSTEMS</option>, <option>DRIVERS</option>, or
+ <option>ATTRS</option> test selected a parent device, then the
+ attribute from that parent device is used.
+ </para>
+ <para>If the attribute is a symlink, the last element of the
+ symlink target is returned as the value.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>$env{<replaceable>key</replaceable>}</option>, <option>%E{<replaceable>key</replaceable>}</option></term>
+ <listitem>
+ <para>A device property value.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>$major</option>, <option>%M</option></term>
+ <listitem>
+ <para>The kernel major number for the device.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>$minor</option>, <option>%m</option></term>
+ <listitem>
+ <para>The kernel minor number for the device.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>$result</option>, <option>%c</option></term>
+ <listitem>
+ <para>The string returned by the external program requested with
+ <varname>PROGRAM</varname>.
+ A single part of the string, separated by a space character, may be selected
+ by specifying the part number as an attribute: <literal>%c{N}</literal>.
+ If the number is followed by the <literal>+</literal> character, this part plus all remaining parts
+ of the result string are substituted: <literal>%c{N+}</literal>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>$parent</option>, <option>%P</option></term>
+ <listitem>
+ <para>The node name of the parent device.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>$name</option></term>
+ <listitem>
+ <para>The current name of the device. If not changed by a rule, it is the
+ name of the kernel device.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>$links</option></term>
+ <listitem>
+ <para>A space-separated list of the current symlinks. The value is
+ only set during a remove event or if an earlier rule assigned a value.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>$root</option>, <option>%r</option></term>
+ <listitem>
+ <para>The udev_root value.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>$sys</option>, <option>%S</option></term>
+ <listitem>
+ <para>The sysfs mount point.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>$devnode</option>, <option>%N</option></term>
+ <listitem>
+ <para>The name of the device node.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>%%</option></term>
+ <listitem>
+ <para>The <literal>%</literal> character itself.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>$$</option></term>
+ <listitem>
+ <para>The <literal>$</literal> character itself.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
</refsect1>
<refsect1>
diff --git a/man/udev_device_get_syspath.xml b/man/udev_device_get_syspath.xml
index 0deb1d0d2c..f2d712f23f 100644
--- a/man/udev_device_get_syspath.xml
+++ b/man/udev_device_get_syspath.xml
@@ -4,7 +4,7 @@
<!ENTITY % entities SYSTEM "custom-entities.ent" >
%entities;
]>
-<!-- SPDX-License-Identifier: LGPL-2.1+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="udev_device_get_syspath"
xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -173,7 +173,7 @@
<citerefentry><refentrytitle>udev_enumerate_new</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>udev_monitor_new_from_netlink</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>udev_list_entry</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
- <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>
</para>
</refsect1>
diff --git a/man/udev_device_has_tag.xml b/man/udev_device_has_tag.xml
index 2e5b67e750..19bad4f7da 100644
--- a/man/udev_device_has_tag.xml
+++ b/man/udev_device_has_tag.xml
@@ -4,7 +4,7 @@
<!ENTITY % entities SYSTEM "custom-entities.ent" >
%entities;
]>
-<!-- SPDX-License-Identifier: LGPL-2.1+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="udev_device_has_tag"
xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -111,8 +111,8 @@
passed to <function>udev_device_has_tag()</function>, but the opposite might not be true, in case a tag is
no longer configured by the rules applied to the most recent device even.</para>
- <para><function>udev_device_get_tags_list_entry()</function> returns a a
- <function>udev_list_entry</function> object, encapsulating a list of tags set for the specified
+ <para><function>udev_device_get_tags_list_entry()</function> returns a
+ <structname>udev_list_entry</structname> object, encapsulating a list of tags set for the specified
device. Similar, <function>udev_device_get_current_tags_list_entry()</function> returns a list of tags
set for the specified device as effect of the most recent device event seen (see above for details on the
difference).</para>
diff --git a/man/udev_device_new_from_syspath.xml b/man/udev_device_new_from_syspath.xml
index 763041d223..f5ec03d4c7 100644
--- a/man/udev_device_new_from_syspath.xml
+++ b/man/udev_device_new_from_syspath.xml
@@ -4,7 +4,7 @@
<!ENTITY % entities SYSTEM "custom-entities.ent" >
%entities;
]>
-<!-- SPDX-License-Identifier: LGPL-2.1+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="udev_device_new_from_syspath"
xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -82,11 +82,11 @@
<refsect1>
<title>Description</title>
- <para><function>udev_device_new_from_syspath</function>,
- <function>udev_device_new_from_devnum</function>,
- <function>udev_device_new_from_subsystem_sysname</function>,
- <function>udev_device_new_from_device_id</function>, and
- <function>udev_device_new_from_environment</function>
+ <para><function>udev_device_new_from_syspath()</function>,
+ <function>udev_device_new_from_devnum()</function>,
+ <function>udev_device_new_from_subsystem_sysname()</function>,
+ <function>udev_device_new_from_device_id()</function>, and
+ <function>udev_device_new_from_environment()</function>
allocate a new udev device object and returns a pointer to it. This
object is opaque and must not be accessed by the caller via different
means than functions provided by libudev. Initially, the reference count
@@ -95,25 +95,25 @@
<function>udev_device_unref()</function>. Once the reference count hits 0,
the device object is destroyed and freed.</para>
- <para><function>udev_device_new_from_syspath</function>,
- <function>udev_device_new_from_devnum</function>,
- <function>udev_device_new_from_subsystem_sysname</function>, and
- <function>udev_device_new_from_device_id</function>
+ <para><function>udev_device_new_from_syspath()</function>,
+ <function>udev_device_new_from_devnum()</function>,
+ <function>udev_device_new_from_subsystem_sysname()</function>, and
+ <function>udev_device_new_from_device_id()</function>
create the device object based on information found in
<filename>/sys/</filename>, annotated with properties from the udev-internal
device database. A syspath is any subdirectory of <filename>/sys/</filename>,
with the restriction that a subdirectory of <filename>/sys/devices</filename>
(or a symlink to one) represents a real device and as such must contain
- a <filename>uevent</filename> file. <function>udev_device_new_from_devnum</function>
+ a <filename>uevent</filename> file. <function>udev_device_new_from_devnum()</function>
takes a device type, which can be <constant>b</constant> for block devices or
<constant>c</constant> for character devices, as well as a devnum (see
<citerefentry project='man-pages'><refentrytitle>makedev</refentrytitle><manvolnum>3</manvolnum></citerefentry>).
- <function>udev_device_new_from_subsystem_sysname</function> looks up devices based
+ <function>udev_device_new_from_subsystem_sysname()</function> looks up devices based
on the provided subsystem and sysname
(see <citerefentry><refentrytitle>udev_device_get_subsystem</refentrytitle><manvolnum>3</manvolnum></citerefentry>
and
<citerefentry><refentrytitle>udev_device_get_sysname</refentrytitle><manvolnum>3</manvolnum></citerefentry>)
- and <function>udev_device_new_from_device_id</function> looks up devices based on the provided
+ and <function>udev_device_new_from_device_id()</function> looks up devices based on the provided
device ID, which is a special string in one of the following four forms:
<table>
<title>Device ID strings</title>
@@ -142,7 +142,7 @@
</table>
</para>
- <para><function>udev_device_new_from_environment</function>
+ <para><function>udev_device_new_from_environment()</function>
creates a device from the current environment (see
<citerefentry project='man-pages'><refentrytitle>environ</refentrytitle><manvolnum>7</manvolnum></citerefentry>).
Each key-value pair is interpreted in the same way as if it was
diff --git a/man/udev_enumerate_add_match_subsystem.xml b/man/udev_enumerate_add_match_subsystem.xml
index 0dbb926ff0..455aabd725 100644
--- a/man/udev_enumerate_add_match_subsystem.xml
+++ b/man/udev_enumerate_add_match_subsystem.xml
@@ -4,7 +4,7 @@
<!ENTITY % entities SYSTEM "custom-entities.ent" >
%entities;
]>
-<!-- SPDX-License-Identifier: LGPL-2.1+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="udev_enumerate_add_match_subsystem"
xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -106,15 +106,15 @@
<title>Return Value</title>
<para>On success,
- <function>udev_enumerate_add_match_subsystem</function>,
- <function>udev_enumerate_add_nomatch_subsystem</function>,
- <function>udev_enumerate_add_match_sysattr</function>,
- <function>udev_enumerate_add_nomatch_sysattr</function>,
- <function>udev_enumerate_add_match_property</function>,
- <function>udev_enumerate_add_match_sysname</function>,
- <function>udev_enumerate_add_match_tag</function>,
- <function>udev_enumerate_add_match_parent</function> and
- <function>udev_enumerate_add_match_is_initialized</function>
+ <function>udev_enumerate_add_match_subsystem()</function>,
+ <function>udev_enumerate_add_nomatch_subsystem()</function>,
+ <function>udev_enumerate_add_match_sysattr()</function>,
+ <function>udev_enumerate_add_nomatch_sysattr()</function>,
+ <function>udev_enumerate_add_match_property()</function>,
+ <function>udev_enumerate_add_match_sysname()</function>,
+ <function>udev_enumerate_add_match_tag()</function>,
+ <function>udev_enumerate_add_match_parent()</function> and
+ <function>udev_enumerate_add_match_is_initialized()</function>
return an integer greater than, or equal to,
<constant>0</constant>.</para>
</refsect1>
diff --git a/man/udev_enumerate_new.xml b/man/udev_enumerate_new.xml
index 013d5cc823..3360cf0454 100644
--- a/man/udev_enumerate_new.xml
+++ b/man/udev_enumerate_new.xml
@@ -4,7 +4,7 @@
<!ENTITY % entities SYSTEM "custom-entities.ent" >
%entities;
]>
-<!-- SPDX-License-Identifier: LGPL-2.1+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="udev_enumerate_new"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/udev_enumerate_scan_devices.xml b/man/udev_enumerate_scan_devices.xml
index d3dddd4157..22151a532d 100644
--- a/man/udev_enumerate_scan_devices.xml
+++ b/man/udev_enumerate_scan_devices.xml
@@ -4,7 +4,7 @@
<!ENTITY % entities SYSTEM "custom-entities.ent" >
%entities;
]>
-<!-- SPDX-License-Identifier: LGPL-2.1+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="udev_enumerate_scan_devices"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/udev_list_entry.xml b/man/udev_list_entry.xml
index 9f44812cb4..94273cef85 100644
--- a/man/udev_list_entry.xml
+++ b/man/udev_list_entry.xml
@@ -4,7 +4,7 @@
<!ENTITY % entities SYSTEM "custom-entities.ent" >
%entities;
]>
-<!-- SPDX-License-Identifier: LGPL-2.1+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="udev_list_entry"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/udev_monitor_filter_update.xml b/man/udev_monitor_filter_update.xml
index 88a19f1da8..4e77db4836 100644
--- a/man/udev_monitor_filter_update.xml
+++ b/man/udev_monitor_filter_update.xml
@@ -4,7 +4,7 @@
<!ENTITY % entities SYSTEM "custom-entities.ent" >
%entities;
]>
-<!-- SPDX-License-Identifier: LGPL-2.1+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="udev_monitor_filter_update"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/udev_monitor_new_from_netlink.xml b/man/udev_monitor_new_from_netlink.xml
index cc37d21936..538a27e2b1 100644
--- a/man/udev_monitor_new_from_netlink.xml
+++ b/man/udev_monitor_new_from_netlink.xml
@@ -4,7 +4,7 @@
<!ENTITY % entities SYSTEM "custom-entities.ent" >
%entities;
]>
-<!-- SPDX-License-Identifier: LGPL-2.1+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="udev_monitor_new_from_netlink"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/udev_monitor_receive_device.xml b/man/udev_monitor_receive_device.xml
index 5b3f097d17..bbdce3cb67 100644
--- a/man/udev_monitor_receive_device.xml
+++ b/man/udev_monitor_receive_device.xml
@@ -4,7 +4,7 @@
<!ENTITY % entities SYSTEM "custom-entities.ent" >
%entities;
]>
-<!-- SPDX-License-Identifier: LGPL-2.1+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="udev_monitor_receive_device"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/udev_new.xml b/man/udev_new.xml
index 89fa05e388..34e249d486 100644
--- a/man/udev_new.xml
+++ b/man/udev_new.xml
@@ -4,7 +4,7 @@
<!ENTITY % entities SYSTEM "custom-entities.ent" >
%entities;
]>
-<!-- SPDX-License-Identifier: LGPL-2.1+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="udev_new"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/udevadm.xml b/man/udevadm.xml
index d2f6083bae..ec26cc3c07 100644
--- a/man/udevadm.xml
+++ b/man/udevadm.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="udevadm"
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/user-system-options.xml b/man/user-system-options.xml
index 8034735658..728118e60c 100644
--- a/man/user-system-options.xml
+++ b/man/user-system-options.xml
@@ -1,7 +1,7 @@
<?xml version="1.0"?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<!-- SPDX-License-Identifier: LGPL-2.1+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<variablelist>
<varlistentry id='user'>
diff --git a/man/user@.service.xml b/man/user@.service.xml
index b9d1461404..0cf7f02352 100644
--- a/man/user@.service.xml
+++ b/man/user@.service.xml
@@ -1,7 +1,7 @@
<?xml version="1.0"?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="user@.service">
<refentryinfo>
diff --git a/man/userdbctl.xml b/man/userdbctl.xml
index c86937760f..0c2dd73bb9 100644
--- a/man/userdbctl.xml
+++ b/man/userdbctl.xml
@@ -1,7 +1,7 @@
<?xml version='1.0'?>
<!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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="userdbctl" conditional='ENABLE_USERDB'
xmlns:xi="http://www.w3.org/2001/XInclude">
diff --git a/man/vconsole.conf.xml b/man/vconsole.conf.xml
index 2e2223cc69..378812bd2a 100644
--- a/man/vconsole.conf.xml
+++ b/man/vconsole.conf.xml
@@ -1,7 +1,7 @@
<?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+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="vconsole.conf" conditional='ENABLE_VCONSOLE'>
<refentryinfo>
diff --git a/meson.build b/meson.build
index dba721208b..ab2404c3c4 100644
--- a/meson.build
+++ b/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
project('systemd', 'c',
version : '247',
@@ -126,6 +126,7 @@ if rootlibdir == ''
rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
endif
+install_sysconfdir = get_option('install-sysconfdir')
# Dirs of external packages
pkgconfigdatadir = get_option('pkgconfigdatadir') == '' ? join_paths(datadir, 'pkgconfig') : get_option('pkgconfigdatadir')
pkgconfiglibdir = get_option('pkgconfiglibdir') == '' ? join_paths(libdir, 'pkgconfig') : get_option('pkgconfiglibdir')
@@ -1073,6 +1074,7 @@ else
libcurl = []
endif
conf.set10('HAVE_LIBCURL', have)
+conf.set10('CURL_NO_OLDIES', get_option('mode') == 'developer')
want_libidn = get_option('libidn')
want_libidn2 = get_option('libidn2')
@@ -1418,7 +1420,7 @@ if have == 'auto'
else
have = have == 'true'
if have and get_option('mode') != 'developer'
- error('oomd is not available in release mode (yet)')
+ warning('oomd is not ready for release mode (yet)')
endif
endif
conf.set10('ENABLE_OOMD', have)
@@ -1593,6 +1595,7 @@ generate_gperfs = find_program('tools/generate-gperfs.py')
subdir('po')
subdir('catalog')
+subdir('src/libudev')
subdir('src/systemd')
subdir('src/basic')
subdir('src/libsystemd')
@@ -1672,7 +1675,6 @@ update_dbus_docs_py = find_program('tools/update-dbus-docs.py')
# usually, but not always, installed in /bin.
public_programs = []
-subdir('src/libudev')
subdir('src/shared')
subdir('src/core')
subdir('src/shutdown')
@@ -2776,8 +2778,10 @@ if conf.get('ENABLE_BINFMT') == 1
meson.add_install_script('sh', '-c',
mkdir_p.format(binfmtdir))
- meson.add_install_script('sh', '-c',
- mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
+ if install_sysconfdir
+ meson.add_install_script('sh', '-c',
+ mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
+ endif
endif
if conf.get('ENABLE_REPART') == 1
@@ -2891,8 +2895,10 @@ executable(
install : true,
install_dir : rootlibexecdir)
-install_data('src/sleep/sleep.conf',
- install_dir : pkgsysconfdir)
+if install_sysconfdir
+ install_data('src/sleep/sleep.conf',
+ install_dir : pkgsysconfdir)
+endif
public_programs += executable(
'systemd-sysctl',
@@ -3242,8 +3248,10 @@ if conf.get('HAVE_KMOD') == 1
meson.add_install_script('sh', '-c',
mkdir_p.format(modulesloaddir))
- meson.add_install_script('sh', '-c',
- mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
+ if install_sysconfdir
+ meson.add_install_script('sh', '-c',
+ mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
+ endif
endif
public_programs += executable(
@@ -3430,7 +3438,7 @@ endif
fuzzer_exes = []
-if get_option('tests') != 'false'
+if fuzz_tests or fuzzer_build
foreach tuple : fuzzers
sources = tuple[0]
link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
@@ -3488,8 +3496,10 @@ subdir('docs/var-log')
install_subdir('factory/etc',
install_dir : factorydir)
-install_data('xorg/50-systemd-user.sh',
- install_dir : xinitrcdir)
+if install_sysconfdir
+ install_data('xorg/50-systemd-user.sh',
+ install_dir : xinitrcdir)
+endif
install_data('modprobe.d/systemd.conf',
install_dir : modprobedir)
install_data('LICENSE.GPL2',
@@ -3550,7 +3560,7 @@ foreach tuple : sanitizers
if name != prev
if want_tests == 'false'
message('Not compiling @0@ because tests is set to false'.format(name))
- elif slow_tests or fuzz_tests
+ elif fuzz_tests
exe = custom_target(
name,
output : name,
@@ -3560,12 +3570,12 @@ foreach tuple : sanitizers
'@OUTPUT@'],
build_by_default : true)
else
- message('Not compiling @0@ because slow-tests/fuzz-tests is set to false'.format(name))
+ message('Not compiling @0@ because fuzz-tests is set to false'.format(name))
endif
endif
prev = name
- if want_tests != 'false' and (slow_tests or fuzz_tests)
+ if fuzz_tests
test('@0@:@1@:@2@'.format(b, c, sanitizer),
env,
env : ['UBSAN_OPTIONS=print_stacktrace=1:print_summary=1:halt_on_error=1'],
diff --git a/meson_options.txt b/meson_options.txt
index 2c10054769..2435ccebd4 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -1,5 +1,5 @@
# -*- mode: meson -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
option('version-tag', type : 'string',
description : 'override the git version string')
@@ -180,6 +180,8 @@ option('pamconfdir', type : 'string',
description : 'directory for PAM configuration ["no" disables]')
option('docdir', type : 'string',
description : 'documentation directory')
+option('install-sysconfdir', type : 'boolean', value : true,
+ description : 'install configuration files to $sysconfdir')
option('fallback-hostname', type : 'string', value : 'localhost',
description : 'the hostname used if none configured')
diff --git a/modprobe.d/systemd.conf b/modprobe.d/systemd.conf
index 0c4a3eaa3a..652254155c 100644
--- a/modprobe.d/systemd.conf
+++ b/modprobe.d/systemd.conf
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/network/80-container-host0.network b/network/80-container-host0.network
index 44c59b7dde..a8e683455b 100644
--- a/network/80-container-host0.network
+++ b/network/80-container-host0.network
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/network/80-container-ve.network b/network/80-container-ve.network
index 8a8df2fcd3..7e8ff48d75 100644
--- a/network/80-container-ve.network
+++ b/network/80-container-ve.network
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/network/80-container-vz.network b/network/80-container-vz.network
index 4d4482b33a..b0ea57a67c 100644
--- a/network/80-container-vz.network
+++ b/network/80-container-vz.network
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/network/80-vm-vt.network b/network/80-vm-vt.network
index 4144034cde..45c5ab1734 100644
--- a/network/80-vm-vt.network
+++ b/network/80-vm-vt.network
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/network/99-default.link b/network/99-default.link
index dc7a42bf58..bca660ac28 100644
--- a/network/99-default.link
+++ b/network/99-default.link
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/network/meson.build b/network/meson.build
index 99a650eac3..b0e60f7217 100644
--- a/network/meson.build
+++ b/network/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
if conf.get('ENABLE_NETWORKD') == 1
install_data('80-container-host0.network',
@@ -10,8 +10,10 @@ if conf.get('ENABLE_NETWORKD') == 1
'80-wifi-station.network.example',
install_dir : networkdir)
- meson.add_install_script('sh', '-c',
- mkdir_p.format(join_paths(sysconfdir, 'systemd/network')))
+ if install_sysconfdir
+ meson.add_install_script('sh', '-c',
+ mkdir_p.format(join_paths(sysconfdir, 'systemd/network')))
+ endif
endif
install_data('99-default.link',
diff --git a/po/be.po b/po/be.po
index b7e6674351..77f3a3f2cf 100644
--- a/po/be.po
+++ b/po/be.po
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# Belarusian translation for systemd.
#
diff --git a/po/be@latin.po b/po/be@latin.po
index ff57007042..4e80e8ee71 100644
--- a/po/be@latin.po
+++ b/po/be@latin.po
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# Belarusian translation for systemd.
#
diff --git a/po/bg.po b/po/bg.po
index cb7eaacf36..0859b09737 100644
--- a/po/bg.po
+++ b/po/bg.po
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# Bulgarian translation of systemd po-file.
# Copyright © 2016 Alexander Shopov <ash@kambanaria.org>
diff --git a/po/ca.po b/po/ca.po
index 76b2c60b8f..fcbdb23ae5 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# Catalan translation for systemd.
# Walter Garcia-Fontes <walter.garcia@upf.edu>, 2016.
diff --git a/po/cs.po b/po/cs.po
index 518bff050f..abc6188579 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# Czech translation for systemd.
# Daniel Maixner <xskipy@gmail.com>, 2016.
diff --git a/po/da.po b/po/da.po
index 1dafbc5a5c..74ee786281 100644
--- a/po/da.po
+++ b/po/da.po
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# Danish translation for systemd.
# Daniel Machon <dmachon.dev@gmail.com>, 2015.
diff --git a/po/de.po b/po/de.po
index 59a27d2634..1b88d14e03 100644
--- a/po/de.po
+++ b/po/de.po
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# German translation for systemd.
# Christian Kirbach <Christian.Kirbach@gmail.com>, 2014, 2015.
diff --git a/po/el.po b/po/el.po
index 535216f11c..fa581d9a91 100644
--- a/po/el.po
+++ b/po/el.po
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# Greek translation for systemd.
# Dimitris Spingos <dmtrs32@gmail.com>, 2014.
diff --git a/po/es.po b/po/es.po
index d1bcd18db8..9d92545da3 100644
--- a/po/es.po
+++ b/po/es.po
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# Spanish translation for systemd.
# Alex Puchades <alex94puchades@gmail.com>, 2015.
diff --git a/po/fr.po b/po/fr.po
index d54de1e8e0..a5f65ae7fd 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# French translations for systemd package
# Traductions françaises du paquet systemd.
diff --git a/po/gl.po b/po/gl.po
index d58c493427..4843e21c49 100644
--- a/po/gl.po
+++ b/po/gl.po
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# Fran Dieguez <frandieguez@gnome.org>, 2015.
msgid ""
diff --git a/po/hr.po b/po/hr.po
index 6cf7e8a05b..23704ce95c 100644
--- a/po/hr.po
+++ b/po/hr.po
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# SOME DESCRIPTIVE TITLE.
# This file is distributed under the same license as the PACKAGE package.
diff --git a/po/hu.po b/po/hu.po
index d36bb4baad..0c8bb93ab2 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# Hungarian translation of systemd
# Copyright © 2015, 2016. Free Software Foundation, Inc.
diff --git a/po/id.po b/po/id.po
index 06268b308d..3e5fb7a51d 100644
--- a/po/id.po
+++ b/po/id.po
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# Indonesian translation for systemd.
# Andika Triwidada <andika@gmail.com>, 2014.
diff --git a/po/it.po b/po/it.po
index 1c1c6a40d0..595e4868ae 100644
--- a/po/it.po
+++ b/po/it.po
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# Italian translation for systemd package
# Traduzione in italiano per il pacchetto systemd
diff --git a/po/ja.po b/po/ja.po
index 54cccac9d4..7e55f1efcf 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# Japanese translation for systemd.
#
diff --git a/po/ko.po b/po/ko.po
index c4c4bd9747..a5e3dbc389 100644
--- a/po/ko.po
+++ b/po/ko.po
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# Korean translation for the systemd.
# Seong-ho Cho <shcho@gnome.org>, 2015.
diff --git a/po/meson.build b/po/meson.build
index 3611ac90f1..193f614f4f 100644
--- a/po/meson.build
+++ b/po/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
i18n = import('i18n')
i18n.gettext(meson.project_name(),
diff --git a/po/pl.po b/po/pl.po
index 3bf4d092d9..b4b3912a5b 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# Polish translation for systemd.
#
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 1e807d8959..188f8a9f98 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# Brazilian Portuguese translation for systemd.
# Enrico Nicoletto <liverig@gmail.com>, 2014.
diff --git a/po/ro.po b/po/ro.po
index 7924cf9f86..6c46900752 100644
--- a/po/ro.po
+++ b/po/ro.po
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# Romanian translation for systemd.
# va511e <va511e@yahoo.com>, 2015.
diff --git a/po/ru.po b/po/ru.po
index 778da46456..2211d11630 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# translation of ru.po to Rissian
#
diff --git a/po/sk.po b/po/sk.po
index 8b87bd6a7d..d3dec2ba19 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# Slovak translation for systemd.
# Dušan Kazik <prescott66@gmail.com>, 2017.
diff --git a/po/sr.po b/po/sr.po
index 4747b26be9..83920e80b3 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# SOME DESCRIPTIVE TITLE.
# This file is distributed under the same license as the PACKAGE package.
diff --git a/po/sv.po b/po/sv.po
index 8148c6bce4..91108ad5ff 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# Swedish translation for systemd.
# Sebastian Rasmussen <sebras@gmail.com>, 2015.
diff --git a/po/tr.po b/po/tr.po
index c5a76b2bfa..0e04733372 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -1,25 +1,25 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# Turkish translation for systemd.
# Necdet Yücel <necdetyucel@gmail.com>, 2014.
# Gökhan Gurbetoğlu <ggurbet@gmail.com>, 2015.
-# Muhammet Kara <muhammetk@gnome.org>, 2015, 2016, 2017, 2018.
# Oğuz Ersen <oguzersen@protonmail.com>, 2020.
+# Muhammet Kara <muhammetk@gmail.com>, 2015-2020.
+#
msgid ""
msgstr ""
"Project-Id-Version: systemd master\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-08-19 18:02+0200\n"
-"PO-Revision-Date: 2020-09-26 06:29+0000\n"
-"Last-Translator: Oğuz Ersen <oguzersen@protonmail.com>\n"
-"Language-Team: Turkish <https://translate.fedoraproject.org/projects/systemd/"
-"master/tr/>\n"
+"Report-Msgid-Bugs-To: https://github.com/systemd/systemd/issues\n"
+"POT-Creation-Date: 2020-09-27 03:31+0000\n"
+"PO-Revision-Date: 2020-11-01 15:10+0300\n"
+"Last-Translator: Muhammet Kara <muhammetk@gmail.com>\n"
+"Language-Team: Turkish <gnometurk@gnome.org>\n"
"Language: tr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 4.2.2\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"X-Generator: Gtranslator 3.38.0\n"
#: src/core/org.freedesktop.systemd1.policy.in:22
msgid "Send passphrase back to system"
@@ -72,72 +72,67 @@ msgstr "systemd durumunu yeniden yüklemek kimlik doğrulaması gerektiriyor."
#: src/home/org.freedesktop.home1.policy:13
msgid "Create a home area"
-msgstr ""
+msgstr "Ev alanı oluştur"
#: src/home/org.freedesktop.home1.policy:14
-#, fuzzy
#| msgid "Authentication is required to reload the systemd state."
msgid "Authentication is required to create a user's home area."
-msgstr "systemd durumunu yeniden yüklemek kimlik doğrulaması gerektiriyor."
+msgstr "Bir kullanıcının ev alanını oluşturmak kimlik doğrulaması gerektirir."
#: src/home/org.freedesktop.home1.policy:23
msgid "Remove a home area"
-msgstr ""
+msgstr "Ev alanını kaldır"
#: src/home/org.freedesktop.home1.policy:24
-#, fuzzy
#| msgid "Authentication is required to reload the systemd state."
msgid "Authentication is required to remove a user's home area."
-msgstr "systemd durumunu yeniden yüklemek kimlik doğrulaması gerektiriyor."
+msgstr "Bir kullanıcının ev alanını kaldırmak kimlik doğrulaması gerektirir."
#: src/home/org.freedesktop.home1.policy:33
msgid "Check credentials of a home area"
-msgstr ""
+msgstr "Bir ev alanının kimlik bilgilerini denetle"
#: src/home/org.freedesktop.home1.policy:34
-#, fuzzy
#| msgid ""
#| "Authentication is required to attach or detach a portable service image."
msgid ""
"Authentication is required to check credentials against a user's home area."
msgstr ""
-"Bir taşınabilir hizmet kalıbını tutturmak ya da ayırmak için kimlik "
-"doğrulaması gereklidir."
+"Bir kullanıcının ev alanının kimlik bilgilerini denetlemek için kimlik "
+"doğrulaması gerekir."
#: src/home/org.freedesktop.home1.policy:43
msgid "Update a home area"
-msgstr ""
+msgstr "Ev alanını güncelle"
#: src/home/org.freedesktop.home1.policy:44
-#, fuzzy
#| msgid "Authentication is required to attach a device to a seat."
msgid "Authentication is required to update a user's home area."
-msgstr ""
-"Bir aygıtın yuvaya takılmasına izin vermek kimlik doğrulaması gerektiriyor."
+msgstr "Bir kullanıcının ev alanını güncellemek kimlik doğrulaması gerektirir."
#: src/home/org.freedesktop.home1.policy:53
msgid "Resize a home area"
-msgstr ""
+msgstr "Ev alanını yeniden boyutlandır"
#: src/home/org.freedesktop.home1.policy:54
-#, fuzzy
#| msgid "Authentication is required to set a wall message"
msgid "Authentication is required to resize a user's home area."
-msgstr "Duvar mesajı ayarlamak için kimlik doğrulaması gereklidir"
+msgstr ""
+"Bir kullanıcının ev alanını yeniden boyutlandırmak kimlik doğrulaması "
+"gerektirir."
#: src/home/org.freedesktop.home1.policy:63
msgid "Change password of a home area"
-msgstr ""
+msgstr "Ev alanının parolasını değiştir"
#: src/home/org.freedesktop.home1.policy:64
-#, fuzzy
#| msgid ""
#| "Authentication is required to manage active sessions, users and seats."
msgid ""
"Authentication is required to change the password of a user's home area."
msgstr ""
-"Aktif oturumları, kullanıcıları ve yuvaları yönetmek için kimlik doğrulaması "
-"gereklidir."
+"Bir kullanıcının ev alanının parolasını değiştirmek kimlik doğrulaması "
+"gerektirir."
#: src/hostname/org.freedesktop.hostname1.policy:20
msgid "Set hostname"
@@ -328,57 +323,75 @@ msgstr ""
"kimlik doğrulaması gereklidir."
#: src/login/org.freedesktop.login1.policy:117
+#, fuzzy
+#| msgid "Allow applications to inhibit system handling of the power key"
+msgid "Allow applications to inhibit system handling of the reboot key"
+msgstr "Uygulamaların sistemin güç tuşunun kullanımını engellemesine izin ver"
+
+#: src/login/org.freedesktop.login1.policy:118
+#, fuzzy
+#| msgid ""
+#| "Authentication is required for an application to inhibit system handling "
+#| "of the power key."
+msgid ""
+"Authentication is required for an application to inhibit system handling of "
+"the reboot key."
+msgstr ""
+"Bir uygulamanın sistemin güç tuşunu idare etmesine engel olması için kimlik "
+"doğrulaması gereklidir."
+
+#: src/login/org.freedesktop.login1.policy:128
msgid "Allow non-logged-in user to run programs"
msgstr "Oturum açmamış kullanıcının program çalıştırmasına izin ver"
-#: src/login/org.freedesktop.login1.policy:118
+#: src/login/org.freedesktop.login1.policy:129
msgid "Explicit request is required to run programs as a non-logged-in user."
msgstr ""
"Oturum açmamış bir kullanıcı olarak program çalıştırmak için açıkça istekte "
"bulunulması gerekir."
-#: src/login/org.freedesktop.login1.policy:127
+#: src/login/org.freedesktop.login1.policy:138
msgid "Allow non-logged-in users to run programs"
msgstr "Oturum açmamış kullanıcıların program çalıştırmasına izin ver"
-#: src/login/org.freedesktop.login1.policy:128
+#: src/login/org.freedesktop.login1.policy:139
msgid "Authentication is required to run programs as a non-logged-in user."
msgstr ""
"Oturum açmamış bir kullanıcı olarak program çalıştırmak için kimlik "
"doğrulaması gereklidir."
-#: src/login/org.freedesktop.login1.policy:137
+#: src/login/org.freedesktop.login1.policy:148
msgid "Allow attaching devices to seats"
msgstr "Aygıtların yuvaya takılmasına izin ver"
-#: src/login/org.freedesktop.login1.policy:138
+#: src/login/org.freedesktop.login1.policy:149
msgid "Authentication is required to attach a device to a seat."
msgstr ""
"Bir aygıtın yuvaya takılmasına izin vermek kimlik doğrulaması gerektiriyor."
-#: src/login/org.freedesktop.login1.policy:148
+#: src/login/org.freedesktop.login1.policy:159
msgid "Flush device to seat attachments"
msgstr "Aygıtın yuvaya eklenmesini sıfırla"
-#: src/login/org.freedesktop.login1.policy:149
+#: src/login/org.freedesktop.login1.policy:160
msgid "Authentication is required to reset how devices are attached to seats."
msgstr ""
"Aygıtların yuvalara nasıl takıldığını sıfırlamak kimlik doğrulama "
"gerektiriyor."
-#: src/login/org.freedesktop.login1.policy:158
+#: src/login/org.freedesktop.login1.policy:169
msgid "Power off the system"
msgstr "Sistemi kapat"
-#: src/login/org.freedesktop.login1.policy:159
+#: src/login/org.freedesktop.login1.policy:170
msgid "Authentication is required to power off the system."
msgstr "Sistemi kapatmak için kimlik doğrulaması gerekiyor."
-#: src/login/org.freedesktop.login1.policy:169
+#: src/login/org.freedesktop.login1.policy:180
msgid "Power off the system while other users are logged in"
msgstr "Diğer kullanıcılar oturum açmışken sistemi kapat"
-#: src/login/org.freedesktop.login1.policy:170
+#: src/login/org.freedesktop.login1.policy:181
msgid ""
"Authentication is required to power off the system while other users are "
"logged in."
@@ -386,11 +399,11 @@ msgstr ""
"Diğer kullanıcılar oturum açmışken sistemi kapatmak kimlik doğrulaması "
"gerektiriyor."
-#: src/login/org.freedesktop.login1.policy:180
+#: src/login/org.freedesktop.login1.policy:191
msgid "Power off the system while an application is inhibiting this"
msgstr "Bir uygulama engellenmesini isterken sistemi kapat"
-#: src/login/org.freedesktop.login1.policy:181
+#: src/login/org.freedesktop.login1.policy:192
msgid ""
"Authentication is required to power off the system while an application is "
"inhibiting this."
@@ -398,19 +411,19 @@ msgstr ""
"Bir uygulama engellenmesini isterken sistemi kapatmak kimlik doğrulaması "
"gerektiriyor."
-#: src/login/org.freedesktop.login1.policy:191
+#: src/login/org.freedesktop.login1.policy:202
msgid "Reboot the system"
msgstr "Sistemi yeniden başlat"
-#: src/login/org.freedesktop.login1.policy:192
+#: src/login/org.freedesktop.login1.policy:203
msgid "Authentication is required to reboot the system."
msgstr "Sistemi yeniden başlatmak kimlik doğrulaması gerektiriyor."
-#: src/login/org.freedesktop.login1.policy:202
+#: src/login/org.freedesktop.login1.policy:213
msgid "Reboot the system while other users are logged in"
msgstr "Diğer kullanıcılar oturum açmışken sistemi yeniden başlat"
-#: src/login/org.freedesktop.login1.policy:203
+#: src/login/org.freedesktop.login1.policy:214
msgid ""
"Authentication is required to reboot the system while other users are logged "
"in."
@@ -418,11 +431,11 @@ msgstr ""
"Diğer kullanıcılar oturum açmışken sistemi yeniden başlatmak kimlik "
"doğrulaması gerektiriyor."
-#: src/login/org.freedesktop.login1.policy:213
+#: src/login/org.freedesktop.login1.policy:224
msgid "Reboot the system while an application is inhibiting this"
msgstr "Bir uygulama engellenmesini isterken sistemi yeniden başlat"
-#: src/login/org.freedesktop.login1.policy:214
+#: src/login/org.freedesktop.login1.policy:225
msgid ""
"Authentication is required to reboot the system while an application is "
"inhibiting this."
@@ -430,19 +443,19 @@ msgstr ""
"Bir uygulama engellenmesini isterken sistemi yeniden başlatmak kimlik "
"doğrulaması gerektiriyor."
-#: src/login/org.freedesktop.login1.policy:224
+#: src/login/org.freedesktop.login1.policy:235
msgid "Halt the system"
msgstr "Sistemi durdur"
-#: src/login/org.freedesktop.login1.policy:225
+#: src/login/org.freedesktop.login1.policy:236
msgid "Authentication is required to halt the system."
msgstr "Sistemi durdurmak kimlik doğrulaması gerektiriyor."
-#: src/login/org.freedesktop.login1.policy:235
+#: src/login/org.freedesktop.login1.policy:246
msgid "Halt the system while other users are logged in"
msgstr "Diğer kullanıcılar oturum açmışken sistemi durdur"
-#: src/login/org.freedesktop.login1.policy:236
+#: src/login/org.freedesktop.login1.policy:247
msgid ""
"Authentication is required to halt the system while other users are logged "
"in."
@@ -450,11 +463,11 @@ msgstr ""
"Diğer kullanıcılar oturum açmışken sistemi durdurmak kimlik doğrulaması "
"gerektiriyor."
-#: src/login/org.freedesktop.login1.policy:246
+#: src/login/org.freedesktop.login1.policy:257
msgid "Halt the system while an application is inhibiting this"
msgstr "Bir uygulama engellenmesini isterken sistemi durdur"
-#: src/login/org.freedesktop.login1.policy:247
+#: src/login/org.freedesktop.login1.policy:258
#, fuzzy
#| msgid ""
#| "Authentication is required to hibernate the system while an application "
@@ -466,19 +479,19 @@ msgstr ""
"Bir uygulama engellenmesini isterken sistemi hazırda bekletmek kimlik "
"doğrulaması gerektiriyor."
-#: src/login/org.freedesktop.login1.policy:257
+#: src/login/org.freedesktop.login1.policy:268
msgid "Suspend the system"
msgstr "Sistemi askıya al"
-#: src/login/org.freedesktop.login1.policy:258
+#: src/login/org.freedesktop.login1.policy:269
msgid "Authentication is required to suspend the system."
msgstr "Sistemi askıya almak kimlik doğrulaması gerektiriyor."
-#: src/login/org.freedesktop.login1.policy:267
+#: src/login/org.freedesktop.login1.policy:278
msgid "Suspend the system while other users are logged in"
msgstr "Diğer kullanıcılar oturum açmışken sistemi askıya al"
-#: src/login/org.freedesktop.login1.policy:268
+#: src/login/org.freedesktop.login1.policy:279
msgid ""
"Authentication is required to suspend the system while other users are "
"logged in."
@@ -486,11 +499,11 @@ msgstr ""
"Diğer kullanıcılar oturum açmışken sistemi askıya almak kimlik doğrulaması "
"gerektiriyor."
-#: src/login/org.freedesktop.login1.policy:278
+#: src/login/org.freedesktop.login1.policy:289
msgid "Suspend the system while an application is inhibiting this"
msgstr "Bir uygulama engellenmesini isterken sistemi askıya al"
-#: src/login/org.freedesktop.login1.policy:279
+#: src/login/org.freedesktop.login1.policy:290
msgid ""
"Authentication is required to suspend the system while an application is "
"inhibiting this."
@@ -498,19 +511,19 @@ msgstr ""
"Bir uygulama engellenmesini isterken sistemi askıya almak kimlik doğrulaması "
"gerektiriyor."
-#: src/login/org.freedesktop.login1.policy:289
+#: src/login/org.freedesktop.login1.policy:300
msgid "Hibernate the system"
msgstr "Sistemi hazırda beklet"
-#: src/login/org.freedesktop.login1.policy:290
+#: src/login/org.freedesktop.login1.policy:301
msgid "Authentication is required to hibernate the system."
msgstr "Sistemi hazırda bekletmek kimlik doğrulaması gerektiriyor."
-#: src/login/org.freedesktop.login1.policy:299
+#: src/login/org.freedesktop.login1.policy:310
msgid "Hibernate the system while other users are logged in"
msgstr "Diğer kullanıcılar oturum açmışken sistemi hazırda beklet"
-#: src/login/org.freedesktop.login1.policy:300
+#: src/login/org.freedesktop.login1.policy:311
msgid ""
"Authentication is required to hibernate the system while other users are "
"logged in."
@@ -518,11 +531,11 @@ msgstr ""
"Diğer kullanıcılar oturum açmışken sistemi hazırda bekletmek kimlik "
"doğrulaması gerektiriyor."
-#: src/login/org.freedesktop.login1.policy:310
+#: src/login/org.freedesktop.login1.policy:321
msgid "Hibernate the system while an application is inhibiting this"
msgstr "Bir uygulama engellenmesini isterken sistemi hazırda beklet"
-#: src/login/org.freedesktop.login1.policy:311
+#: src/login/org.freedesktop.login1.policy:322
msgid ""
"Authentication is required to hibernate the system while an application is "
"inhibiting this."
@@ -530,44 +543,44 @@ msgstr ""
"Bir uygulama engellenmesini isterken sistemi hazırda bekletmek kimlik "
"doğrulaması gerektiriyor."
-#: src/login/org.freedesktop.login1.policy:321
+#: src/login/org.freedesktop.login1.policy:332
msgid "Manage active sessions, users and seats"
msgstr "Aktif oturumları, kullanıcıları ve yuvaları yönet"
-#: src/login/org.freedesktop.login1.policy:322
+#: src/login/org.freedesktop.login1.policy:333
msgid "Authentication is required to manage active sessions, users and seats."
msgstr ""
"Aktif oturumları, kullanıcıları ve yuvaları yönetmek için kimlik doğrulaması "
"gereklidir."
-#: src/login/org.freedesktop.login1.policy:331
+#: src/login/org.freedesktop.login1.policy:342
msgid "Lock or unlock active sessions"
msgstr "Aktif oturumları kilitle ya da kilidini aç"
-#: src/login/org.freedesktop.login1.policy:332
+#: src/login/org.freedesktop.login1.policy:343
msgid "Authentication is required to lock or unlock active sessions."
msgstr ""
"Aktif oturumları kilitlemek ve bunların kilidini açmak için kimlik "
"doğrulaması gereklidir."
-#: src/login/org.freedesktop.login1.policy:341
+#: src/login/org.freedesktop.login1.policy:352
msgid "Set the reboot \"reason\" in the kernel"
msgstr ""
-#: src/login/org.freedesktop.login1.policy:342
+#: src/login/org.freedesktop.login1.policy:353
#, fuzzy
#| msgid "Authentication is required to set the system timezone."
msgid "Authentication is required to set the reboot \"reason\" in the kernel."
msgstr "Sistem zaman dilimini ayarlamak kimlik doğrulaması gerektiriyor."
-#: src/login/org.freedesktop.login1.policy:352
+#: src/login/org.freedesktop.login1.policy:363
#, fuzzy
#| msgid "Allow indication to the firmware to boot to setup interface"
msgid "Indicate to the firmware to boot to setup interface"
msgstr ""
"Kurulum arayüzünü önyüklemek için ürün yazılımının belirtilmesine izin ver"
-#: src/login/org.freedesktop.login1.policy:353
+#: src/login/org.freedesktop.login1.policy:364
msgid ""
"Authentication is required to indicate to the firmware to boot to setup "
"interface."
@@ -575,11 +588,11 @@ msgstr ""
"Kurulum arayüzünü önyüklemek için ürün yazılımının belirtilmesi için kimlik "
"doğrulaması gereklidir."
-#: src/login/org.freedesktop.login1.policy:363
+#: src/login/org.freedesktop.login1.policy:374
msgid "Indicate to the boot loader to boot to the boot loader menu"
msgstr ""
-#: src/login/org.freedesktop.login1.policy:364
+#: src/login/org.freedesktop.login1.policy:375
#, fuzzy
#| msgid ""
#| "Authentication is required to indicate to the firmware to boot to setup "
@@ -591,11 +604,11 @@ msgstr ""
"Kurulum arayüzünü önyüklemek için ürün yazılımının belirtilmesi için kimlik "
"doğrulaması gereklidir."
-#: src/login/org.freedesktop.login1.policy:374
+#: src/login/org.freedesktop.login1.policy:385
msgid "Indicate to the boot loader to boot a specific entry"
msgstr ""
-#: src/login/org.freedesktop.login1.policy:375
+#: src/login/org.freedesktop.login1.policy:386
#, fuzzy
#| msgid ""
#| "Authentication is required to indicate to the firmware to boot to setup "
@@ -607,23 +620,22 @@ msgstr ""
"Kurulum arayüzünü önyüklemek için ürün yazılımının belirtilmesi için kimlik "
"doğrulaması gereklidir."
-#: src/login/org.freedesktop.login1.policy:385
+#: src/login/org.freedesktop.login1.policy:396
msgid "Set a wall message"
msgstr "Bir duvar mesajı ayarla"
-#: src/login/org.freedesktop.login1.policy:386
+#: src/login/org.freedesktop.login1.policy:397
msgid "Authentication is required to set a wall message"
msgstr "Duvar mesajı ayarlamak için kimlik doğrulaması gereklidir"
-#: src/login/org.freedesktop.login1.policy:395
+#: src/login/org.freedesktop.login1.policy:406
msgid "Change Session"
-msgstr ""
+msgstr "Oturumu Değiştir"
-#: src/login/org.freedesktop.login1.policy:396
-#, fuzzy
+#: src/login/org.freedesktop.login1.policy:407
#| msgid "Authentication is required to halt the system."
msgid "Authentication is required to change the virtual terminal."
-msgstr "Sistemi durdurmak kimlik doğrulaması gerektiriyor."
+msgstr "Sanal uçbirimi değiştirmek kimlik doğrulaması gerektirir."
#: src/machine/org.freedesktop.machine1.policy:22
msgid "Log into a local container"
@@ -705,7 +717,7 @@ msgstr ""
#: src/network/org.freedesktop.network1.policy:22
msgid "Set NTP servers"
-msgstr ""
+msgstr "NTP sunucularını ayarla"
#: src/network/org.freedesktop.network1.policy:23
#, fuzzy
@@ -715,10 +727,9 @@ msgstr "Sistem zamanını ayarlamak kimlik doğrulaması gerektiriyor."
#: src/network/org.freedesktop.network1.policy:33
#: src/resolve/org.freedesktop.resolve1.policy:44
-#, fuzzy
#| msgid "Register a DNS-SD service"
msgid "Set DNS servers"
-msgstr "Bir DNS-SD hizmeti kaydet"
+msgstr "DNS sunucularını ayarla"
#: src/network/org.freedesktop.network1.policy:34
#: src/resolve/org.freedesktop.resolve1.policy:45
@@ -730,7 +741,7 @@ msgstr "Bir DNS-SD hizmeti kaydetmek için kimlik doğrulaması gereklidir"
#: src/network/org.freedesktop.network1.policy:44
#: src/resolve/org.freedesktop.resolve1.policy:55
msgid "Set domains"
-msgstr ""
+msgstr "Etki alanlarını ayarla"
#: src/network/org.freedesktop.network1.policy:45
#: src/resolve/org.freedesktop.resolve1.policy:56
@@ -742,7 +753,7 @@ msgstr "'$(unit)' durdurmak için kimlik doğrulaması gereklidir."
#: src/network/org.freedesktop.network1.policy:55
#: src/resolve/org.freedesktop.resolve1.policy:66
msgid "Set default route"
-msgstr ""
+msgstr "Öntanımlı rota belirle"
#: src/network/org.freedesktop.network1.policy:56
#: src/resolve/org.freedesktop.resolve1.policy:67
@@ -754,7 +765,7 @@ msgstr "Yerel makine adını ayarlamak kimlik doğrulaması gerektiriyor."
#: src/network/org.freedesktop.network1.policy:66
#: src/resolve/org.freedesktop.resolve1.policy:77
msgid "Enable/disable LLMNR"
-msgstr ""
+msgstr "LLMNR etkinleştir/devre dışı bırak"
#: src/network/org.freedesktop.network1.policy:67
#: src/resolve/org.freedesktop.resolve1.policy:78
@@ -843,7 +854,7 @@ msgstr "Duvar mesajı ayarlamak için kimlik doğrulaması gereklidir"
#: src/network/org.freedesktop.network1.policy:154
msgid "Renew dynamic addresses"
-msgstr ""
+msgstr "Dinamik adresleri yenile"
#: src/network/org.freedesktop.network1.policy:155
#, fuzzy
@@ -853,7 +864,7 @@ msgstr "Duvar mesajı ayarlamak için kimlik doğrulaması gereklidir"
#: src/network/org.freedesktop.network1.policy:165
msgid "Reload network settings"
-msgstr ""
+msgstr "Ağ ayarlarını yeniden yükle"
#: src/network/org.freedesktop.network1.policy:166
#, fuzzy
@@ -863,7 +874,7 @@ msgstr "systemd durumunu yeniden yüklemek kimlik doğrulaması gerektiriyor."
#: src/network/org.freedesktop.network1.policy:176
msgid "Reconfigure network interface"
-msgstr ""
+msgstr "Ağ arabirimini yeniden yapılandır"
#: src/network/org.freedesktop.network1.policy:177
#, fuzzy
@@ -967,23 +978,23 @@ msgid ""
"shall be enabled."
msgstr "Ağ zaman eş zamanlamasını denetlemek kimlik doğrulaması gerektiriyor."
-#: src/core/dbus-unit.c:362
+#: src/core/dbus-unit.c:359
msgid "Authentication is required to start '$(unit)'."
msgstr "'$(unit)' başlatmak için kimlik doğrulaması gereklidir."
-#: src/core/dbus-unit.c:363
+#: src/core/dbus-unit.c:360
msgid "Authentication is required to stop '$(unit)'."
msgstr "'$(unit)' durdurmak için kimlik doğrulaması gereklidir."
-#: src/core/dbus-unit.c:364
+#: src/core/dbus-unit.c:361
msgid "Authentication is required to reload '$(unit)'."
msgstr "'$(unit)' yeniden yüklemek için kimlik doğrulaması gereklidir."
-#: src/core/dbus-unit.c:365 src/core/dbus-unit.c:366
+#: src/core/dbus-unit.c:362 src/core/dbus-unit.c:363
msgid "Authentication is required to restart '$(unit)'."
msgstr "'$(unit)' yeniden başlatmak için kimlik doğrulaması gereklidir."
-#: src/core/dbus-unit.c:538
+#: src/core/dbus-unit.c:535
msgid ""
"Authentication is required to send a UNIX signal to the processes of "
"'$(unit)'."
@@ -991,19 +1002,19 @@ msgstr ""
"'$(unit)' süreçlerine bir UNIX sinyali göndermek için kimlik doğrulaması "
"gereklidir."
-#: src/core/dbus-unit.c:569
+#: src/core/dbus-unit.c:566
msgid "Authentication is required to reset the \"failed\" state of '$(unit)'."
msgstr ""
"'$(unit)'in \"failed\" (başarısız) durumunu sıfırlamak için kimlik "
"doğrulaması gereklidir."
-#: src/core/dbus-unit.c:602
+#: src/core/dbus-unit.c:599
msgid "Authentication is required to set properties on '$(unit)'."
msgstr ""
"'$(unit)' üzerindeki özellikleri ayarlamak için kimlik doğrulaması "
"gereklidir."
-#: src/core/dbus-unit.c:711
+#: src/core/dbus-unit.c:708
#, fuzzy
#| msgid ""
#| "Authentication is required to reset the \"failed\" state of '$(unit)'."
@@ -1014,7 +1025,7 @@ msgstr ""
"'$(unit)'in \"failed\" (başarısız) durumunu sıfırlamak için kimlik "
"doğrulaması gereklidir."
-#: src/core/dbus-unit.c:760
+#: src/core/dbus-unit.c:757
#, fuzzy
#| msgid ""
#| "Authentication is required to send a UNIX signal to the processes of "
diff --git a/po/uk.po b/po/uk.po
index df47789786..8e6f9dce89 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
# Ukrainian translation for systemd.
# Eugene Melnik <jeka7js@gmail.com>, 2014.
# Daniel Korostil <ted.korostiled@gmail.com>, 2014, 2016, 2018.
diff --git a/po/zh_CN.po b/po/zh_CN.po
index a2c6f06efb..15a169167f 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# Simplified Chinese translation for systemd.
#
@@ -6,13 +6,14 @@
# Boyuan Yang <073plan@gmail.com>, 2015.
# Jeff Bai <jeffbai@aosc.xyz>, 2016.
# Charles Lee <lchopn@gmail.com>, 2020.
+# Whired Planck <fungdaat31@outlook.com>, 2020.
msgid ""
msgstr ""
"Project-Id-Version: systemd\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-08-19 18:02+0200\n"
-"PO-Revision-Date: 2020-09-24 04:29+0000\n"
-"Last-Translator: Charles Lee <lchopn@gmail.com>\n"
+"PO-Revision-Date: 2020-11-26 11:35+0000\n"
+"Last-Translator: Whired Planck <fungdaat31@outlook.com>\n"
"Language-Team: Chinese (Simplified) <https://translate.fedoraproject.org/"
"projects/systemd/master/zh_CN/>\n"
"Language: zh_CN\n"
@@ -20,7 +21,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 4.2.2\n"
+"X-Generator: Weblate 4.3.2\n"
#: src/core/org.freedesktop.systemd1.policy.in:22
msgid "Send passphrase back to system"
@@ -67,70 +68,56 @@ msgstr "重新载入 systemd 状态需要认证。"
#: src/home/org.freedesktop.home1.policy:13
msgid "Create a home area"
-msgstr ""
+msgstr "创建一个家区域"
#: src/home/org.freedesktop.home1.policy:14
-#, fuzzy
-#| msgid "Authentication is required to reload the systemd state."
msgid "Authentication is required to create a user's home area."
-msgstr "重新载入 systemd 状态需要认证。"
+msgstr "创建用户家区域需要认证。"
#: src/home/org.freedesktop.home1.policy:23
msgid "Remove a home area"
-msgstr ""
+msgstr "移除一个家区域"
#: src/home/org.freedesktop.home1.policy:24
-#, fuzzy
-#| msgid "Authentication is required to reload the systemd state."
msgid "Authentication is required to remove a user's home area."
-msgstr "重新载入 systemd 状态需要认证。"
+msgstr "移除用户家区域需要认证。"
#: src/home/org.freedesktop.home1.policy:33
msgid "Check credentials of a home area"
-msgstr ""
+msgstr "检查家区域凭证"
#: src/home/org.freedesktop.home1.policy:34
-#, fuzzy
-#| msgid ""
-#| "Authentication is required to manage active sessions, users and seats."
msgid ""
"Authentication is required to check credentials against a user's home area."
-msgstr "管理活动会话、用户与会话座位需要认证。"
+msgstr "根据用户家区域检查凭证需要认证。"
#: src/home/org.freedesktop.home1.policy:43
msgid "Update a home area"
-msgstr ""
+msgstr "更新一个家区域"
# Pay attention to the concept of "seat".
#
# To fully understand the meaning, please refer to session management in old ConsoleKit and new systemd-logind.
#: src/home/org.freedesktop.home1.policy:44
-#, fuzzy
-#| msgid "Authentication is required to attach a device to a seat."
msgid "Authentication is required to update a user's home area."
-msgstr "允许将设备附加至某个会话座位需要认证。"
+msgstr "更新用户家区域需要认证。"
#: src/home/org.freedesktop.home1.policy:53
msgid "Resize a home area"
-msgstr ""
+msgstr "调整家区域大小"
#: src/home/org.freedesktop.home1.policy:54
-#, fuzzy
-#| msgid "Authentication is required to set a wall message"
msgid "Authentication is required to resize a user's home area."
-msgstr "设置 wall 消息需要认证。"
+msgstr "调整家区域大小需要认证。"
#: src/home/org.freedesktop.home1.policy:63
msgid "Change password of a home area"
-msgstr ""
+msgstr "更改家区域的密码"
#: src/home/org.freedesktop.home1.policy:64
-#, fuzzy
-#| msgid ""
-#| "Authentication is required to manage active sessions, users and seats."
msgid ""
"Authentication is required to change the password of a user's home area."
-msgstr "管理活动会话、用户与会话座位需要认证。"
+msgstr "更改家区域密码需要认证。"
#: src/hostname/org.freedesktop.hostname1.policy:20
msgid "Set hostname"
@@ -148,11 +135,10 @@ msgstr "设置静态主机名"
#
# There were some discussions, like https://lists.fedoraprojects.org/pipermail/trans-zh_cn/2012-December/001347.html
#: src/hostname/org.freedesktop.hostname1.policy:31
-#, fuzzy
msgid ""
"Authentication is required to set the statically configured local hostname, "
"as well as the pretty hostname."
-msgstr "设置静态本地主机名或美观主机名需要认证。"
+msgstr "设定静态本地主机名或美观主机名需要认证。"
#: src/hostname/org.freedesktop.hostname1.policy:41
msgid "Set machine information"
@@ -164,13 +150,11 @@ msgstr "设置本地机器信息需要认证。"
#: src/hostname/org.freedesktop.hostname1.policy:51
msgid "Get product UUID"
-msgstr ""
+msgstr "获取产品 UUID"
#: src/hostname/org.freedesktop.hostname1.policy:52
-#, fuzzy
-#| msgid "Authentication is required to reload '$(unit)'."
msgid "Authentication is required to get product UUID."
-msgstr "重新载入“$(unit)”需要认证。"
+msgstr "获取产品 UUID 需要认证。"
#: src/import/org.freedesktop.import1.policy:22
msgid "Import a VM or container image"
@@ -300,10 +284,8 @@ msgid "Allow non-logged-in user to run programs"
msgstr "允许未登录用户运行程序"
#: src/login/org.freedesktop.login1.policy:118
-#, fuzzy
-#| msgid "Authentication is required to run programs as a non-logged-in user."
msgid "Explicit request is required to run programs as a non-logged-in user."
-msgstr "允许未登录用户运行程序需要认证。"
+msgstr "要以未登录用户运行程序,需要明确请求。"
#: src/login/org.freedesktop.login1.policy:127
msgid "Allow non-logged-in users to run programs"
@@ -389,10 +371,8 @@ msgid ""
msgstr "在其它应用程序阻止重启时重启系统需要认证。"
#: src/login/org.freedesktop.login1.policy:224
-#, fuzzy
-#| msgid "Hibernate the system"
msgid "Halt the system"
-msgstr "休眠系统"
+msgstr "停止系统"
#: src/login/org.freedesktop.login1.policy:225
msgid "Authentication is required to halt the system."
@@ -492,13 +472,11 @@ msgstr "对活动会话进行锁定或解锁需要认证。"
#: src/login/org.freedesktop.login1.policy:341
msgid "Set the reboot \"reason\" in the kernel"
-msgstr ""
+msgstr "在内核中设定重启“原因”"
#: src/login/org.freedesktop.login1.policy:342
-#, fuzzy
-#| msgid "Authentication is required to set the system timezone."
msgid "Authentication is required to set the reboot \"reason\" in the kernel."
-msgstr "设置系统时区需要认证。"
+msgstr "在内核中设定重启“原因”需要认证。"
#: src/login/org.freedesktop.login1.policy:352
msgid "Indicate to the firmware to boot to setup interface"
@@ -512,31 +490,23 @@ msgstr "向固件发出启动时进入设置界面的指令需要认证。"
#: src/login/org.freedesktop.login1.policy:363
msgid "Indicate to the boot loader to boot to the boot loader menu"
-msgstr ""
+msgstr "指示引导加载程序启动至引导加载程序菜单"
#: src/login/org.freedesktop.login1.policy:364
-#, fuzzy
-#| msgid ""
-#| "Authentication is required to indicate to the firmware to boot to setup "
-#| "interface."
msgid ""
"Authentication is required to indicate to the boot loader to boot to the "
"boot loader menu."
-msgstr "向固件发出启动时进入设置界面的指令需要认证。"
+msgstr "指示引导加载程序启动至引导加载程序菜单需要认证。"
#: src/login/org.freedesktop.login1.policy:374
msgid "Indicate to the boot loader to boot a specific entry"
-msgstr ""
+msgstr "指示引导加载程序启动指定条目"
#: src/login/org.freedesktop.login1.policy:375
-#, fuzzy
-#| msgid ""
-#| "Authentication is required to indicate to the firmware to boot to setup "
-#| "interface."
msgid ""
"Authentication is required to indicate to the boot loader to boot into a "
"specific boot loader entry."
-msgstr "向固件发出启动时进入设置界面的指令需要认证。"
+msgstr "指示引导加载程序启动入指定引导加载条目需要认证。"
#: src/login/org.freedesktop.login1.policy:385
msgid "Set a wall message"
@@ -548,13 +518,11 @@ msgstr "设置 wall 消息需要认证。"
#: src/login/org.freedesktop.login1.policy:395
msgid "Change Session"
-msgstr ""
+msgstr "更改会话"
#: src/login/org.freedesktop.login1.policy:396
-#, fuzzy
-#| msgid "Authentication is required to set the local hostname."
msgid "Authentication is required to change the virtual terminal."
-msgstr "设置本地主机名需要认证。"
+msgstr "更改虚拟终端需要认证。"
#: src/machine/org.freedesktop.machine1.policy:22
msgid "Log into a local container"
@@ -629,10 +597,8 @@ msgid "Set NTP servers"
msgstr "设置 NTP 服务器"
#: src/network/org.freedesktop.network1.policy:23
-#, fuzzy
-#| msgid "Authentication is required to set the system time."
msgid "Authentication is required to set NTP servers."
-msgstr "设置系统时间需要认证。"
+msgstr "设定 NTP 服务器需要认证。"
#: src/network/org.freedesktop.network1.policy:33
#: src/resolve/org.freedesktop.resolve1.policy:44
@@ -641,10 +607,8 @@ msgstr "设置 DNS 服务器"
#: src/network/org.freedesktop.network1.policy:34
#: src/resolve/org.freedesktop.resolve1.policy:45
-#, fuzzy
-#| msgid "Authentication is required to set the system time."
msgid "Authentication is required to set DNS servers."
-msgstr "设置系统时间需要认证。"
+msgstr "设定 DNS 服务器需要认证。"
#: src/network/org.freedesktop.network1.policy:44
#: src/resolve/org.freedesktop.resolve1.policy:55
@@ -653,10 +617,8 @@ msgstr "设置域名"
#: src/network/org.freedesktop.network1.policy:45
#: src/resolve/org.freedesktop.resolve1.policy:56
-#, fuzzy
-#| msgid "Authentication is required to stop '$(unit)'."
msgid "Authentication is required to set domains."
-msgstr "停止“$(unit)”需要认证。"
+msgstr "设定域需要认证。"
#: src/network/org.freedesktop.network1.policy:55
#: src/resolve/org.freedesktop.resolve1.policy:66
@@ -665,51 +627,43 @@ msgstr "设置默认路由"
#: src/network/org.freedesktop.network1.policy:56
#: src/resolve/org.freedesktop.resolve1.policy:67
-#, fuzzy
-#| msgid "Authentication is required to set the local hostname."
msgid "Authentication is required to set default route."
-msgstr "设置本地主机名需要认证。"
+msgstr "设定默认路由需要认证。"
#: src/network/org.freedesktop.network1.policy:66
#: src/resolve/org.freedesktop.resolve1.policy:77
msgid "Enable/disable LLMNR"
-msgstr ""
+msgstr "启用/禁用 LLMNR"
#: src/network/org.freedesktop.network1.policy:67
#: src/resolve/org.freedesktop.resolve1.policy:78
-#, fuzzy
-#| msgid "Authentication is required to hibernate the system."
msgid "Authentication is required to enable or disable LLMNR."
-msgstr "休眠系统需要认证。"
+msgstr "启用或禁用 LLMNR 需要认证。"
#: src/network/org.freedesktop.network1.policy:77
#: src/resolve/org.freedesktop.resolve1.policy:88
msgid "Enable/disable multicast DNS"
-msgstr ""
+msgstr "启用/禁用多播 DNS"
#: src/network/org.freedesktop.network1.policy:78
#: src/resolve/org.freedesktop.resolve1.policy:89
-#, fuzzy
-#| msgid "Authentication is required to log into the local host."
msgid "Authentication is required to enable or disable multicast DNS."
-msgstr "登入本地主机需要认证。"
+msgstr "启用或禁用多播 DNS 需要认证。"
#: src/network/org.freedesktop.network1.policy:88
#: src/resolve/org.freedesktop.resolve1.policy:99
msgid "Enable/disable DNS over TLS"
-msgstr ""
+msgstr "启用/禁用 DNS over TLS"
#: src/network/org.freedesktop.network1.policy:89
#: src/resolve/org.freedesktop.resolve1.policy:100
-#, fuzzy
-#| msgid "Authentication is required to set the local hostname."
msgid "Authentication is required to enable or disable DNS over TLS."
-msgstr "设置本地主机名需要认证。"
+msgstr "启用或禁用 DNS over TLS 需要认证。"
#: src/network/org.freedesktop.network1.policy:99
#: src/resolve/org.freedesktop.resolve1.policy:110
msgid "Enable/disable DNSSEC"
-msgstr ""
+msgstr "启用/禁用 DNSSEC"
#: src/network/org.freedesktop.network1.policy:100
#: src/resolve/org.freedesktop.resolve1.policy:111
diff --git a/po/zh_TW.po b/po/zh_TW.po
index c765b36d55..e706f70e16 100644
--- a/po/zh_TW.po
+++ b/po/zh_TW.po
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# Traditional Chinese translation for systemd.
# Jeff Huang <s8321414@gmail.com>, 2015, 2016.
diff --git a/presets/90-systemd.preset b/presets/90-systemd.preset
index 9e430904f1..d26087445c 100644
--- a/presets/90-systemd.preset
+++ b/presets/90-systemd.preset
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/presets/meson.build b/presets/meson.build
index 0b16acf59a..84abeded2f 100644
--- a/presets/meson.build
+++ b/presets/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
install_data('90-systemd.preset',
install_dir : systempresetdir)
diff --git a/presets/user/90-systemd.preset b/presets/user/90-systemd.preset
index 5ee969090d..7b407567d5 100644
--- a/presets/user/90-systemd.preset
+++ b/presets/user/90-systemd.preset
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/rules.d/99-systemd.rules.in b/rules.d/99-systemd.rules.in
index 9e2772388d..d2f595d18e 100644
--- a/rules.d/99-systemd.rules.in
+++ b/rules.d/99-systemd.rules.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/rules.d/meson.build b/rules.d/meson.build
index b4640ab9d4..7e46abd559 100644
--- a/rules.d/meson.build
+++ b/rules.d/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
rules = files('''
60-autosuspend.rules
diff --git a/semaphoreci/semaphore-runner.sh b/semaphoreci/semaphore-runner.sh
index 715a5aafb1..a21d5d88e0 100755
--- a/semaphoreci/semaphore-runner.sh
+++ b/semaphoreci/semaphore-runner.sh
@@ -20,7 +20,7 @@ create_container() {
# GPG key from keyserver", so retry a few times with different keyservers.
for keyserver in "" "keys.gnupg.net" "keys.openpgp.org" "keyserver.ubuntu.com"; do
for retry in {1..5}; do
- sudo lxc-create -n $CONTAINER -t download -- -d $DISTRO -r $RELEASE -a $ARCH --server us.images.linuxcontainers.org ${keyserver:+--keyserver "$keyserver"} && break 2
+ sudo lxc-create -n $CONTAINER -t download -- -d $DISTRO -r $RELEASE -a $ARCH ${keyserver:+--keyserver "$keyserver"} && break 2
sleep $((retry*retry))
done
done
@@ -86,7 +86,7 @@ EOF
# disable autopkgtests which are not for upstream
sed -i '/# NOUPSTREAM/ q' debian/tests/control
# enable more unit tests
- sed -i '/^CONFFLAGS =/ s/=/= --werror -Dtests=unsafe -Dsplit-usr=true -Dslow-tests=true -Dman=true /' debian/rules
+ sed -i '/^CONFFLAGS =/ s/=/= --werror -Dtests=unsafe -Dsplit-usr=true -Dslow-tests=true -Dfuzz-tests=true -Dman=true /' debian/rules
# no orig tarball
echo '1.0' > debian/source/format
diff --git a/shell-completion/bash/bootctl b/shell-completion/bash/bootctl
index 9fc6cb3df5..391fa67bfc 100644
--- a/shell-completion/bash/bootctl
+++ b/shell-completion/bash/bootctl
@@ -1,5 +1,5 @@
# bootctl(1) completion -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/shell-completion/bash/busctl b/shell-completion/bash/busctl
index 1ed924e63a..5a4acd337f 100644
--- a/shell-completion/bash/busctl
+++ b/shell-completion/bash/busctl
@@ -1,5 +1,5 @@
# busctl(1) completion -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/shell-completion/bash/coredumpctl b/shell-completion/bash/coredumpctl
index d4366df0d0..20886932e2 100644
--- a/shell-completion/bash/coredumpctl
+++ b/shell-completion/bash/coredumpctl
@@ -1,5 +1,5 @@
# coredumpctl(1) completion -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/shell-completion/bash/homectl b/shell-completion/bash/homectl
index 1a1d522966..fe909fbb41 100644
--- a/shell-completion/bash/homectl
+++ b/shell-completion/bash/homectl
@@ -1,5 +1,5 @@
# hostctl(1) completion -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/shell-completion/bash/hostnamectl b/shell-completion/bash/hostnamectl
index 0d829e705a..e3765c315c 100644
--- a/shell-completion/bash/hostnamectl
+++ b/shell-completion/bash/hostnamectl
@@ -1,5 +1,5 @@
# hostnamectl(1) completion -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/shell-completion/bash/journalctl b/shell-completion/bash/journalctl
index 757c3d77f4..84232e83c2 100644
--- a/shell-completion/bash/journalctl
+++ b/shell-completion/bash/journalctl
@@ -1,5 +1,5 @@
# journalctl(1) completion -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/shell-completion/bash/kernel-install b/shell-completion/bash/kernel-install
index 224ea83eb8..35c44ea3a8 100644
--- a/shell-completion/bash/kernel-install
+++ b/shell-completion/bash/kernel-install
@@ -1,5 +1,5 @@
# kernel-install(8) completion -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/shell-completion/bash/localectl b/shell-completion/bash/localectl
index fe53112fd4..fa0f8fdca1 100644
--- a/shell-completion/bash/localectl
+++ b/shell-completion/bash/localectl
@@ -1,5 +1,5 @@
# localectl(1) completion -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/shell-completion/bash/loginctl b/shell-completion/bash/loginctl
index 69b999c05d..ac85519c10 100644
--- a/shell-completion/bash/loginctl
+++ b/shell-completion/bash/loginctl
@@ -1,5 +1,5 @@
# loginctl(1) completion -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/shell-completion/bash/machinectl b/shell-completion/bash/machinectl
index a89ce812b2..cd16e47721 100644
--- a/shell-completion/bash/machinectl
+++ b/shell-completion/bash/machinectl
@@ -1,5 +1,5 @@
# machinectl(1) completion -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/shell-completion/bash/meson.build b/shell-completion/bash/meson.build
index 1df70147af..1afa7977e6 100644
--- a/shell-completion/bash/meson.build
+++ b/shell-completion/bash/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
bashcompletiondir = get_option('bashcompletiondir')
if bashcompletiondir == ''
diff --git a/shell-completion/bash/networkctl b/shell-completion/bash/networkctl
index 02b9c75c44..9282ee8737 100644
--- a/shell-completion/bash/networkctl
+++ b/shell-completion/bash/networkctl
@@ -1,5 +1,5 @@
# networkctl(1) completion -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/shell-completion/bash/portablectl b/shell-completion/bash/portablectl
index 0b84d5c834..fe3d925d78 100644
--- a/shell-completion/bash/portablectl
+++ b/shell-completion/bash/portablectl
@@ -1,5 +1,5 @@
# portablectl(1) completion -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/shell-completion/bash/resolvectl b/shell-completion/bash/resolvectl
index 54b241ce90..dae4330d4c 100644
--- a/shell-completion/bash/resolvectl
+++ b/shell-completion/bash/resolvectl
@@ -1,5 +1,5 @@
# resolvectl(1) completion -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/shell-completion/bash/systemctl.in b/shell-completion/bash/systemctl.in
index b5bd727abf..f6be3827cf 100644
--- a/shell-completion/bash/systemctl.in
+++ b/shell-completion/bash/systemctl.in
@@ -1,5 +1,5 @@
# systemctl(1) completion -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/shell-completion/bash/systemd-analyze b/shell-completion/bash/systemd-analyze
index 0c61f54504..92f81a60fc 100644
--- a/shell-completion/bash/systemd-analyze
+++ b/shell-completion/bash/systemd-analyze
@@ -1,5 +1,5 @@
# systemd-analyze(1) completion -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/shell-completion/bash/systemd-cat b/shell-completion/bash/systemd-cat
index 62da65da7a..9413b6fa70 100644
--- a/shell-completion/bash/systemd-cat
+++ b/shell-completion/bash/systemd-cat
@@ -1,5 +1,5 @@
# systemd-cat(1) completion -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/shell-completion/bash/systemd-cgls b/shell-completion/bash/systemd-cgls
index ae41f8ba5a..7caaf89ddb 100644
--- a/shell-completion/bash/systemd-cgls
+++ b/shell-completion/bash/systemd-cgls
@@ -1,5 +1,5 @@
# systemd-cgls(1) completion -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/shell-completion/bash/systemd-cgtop b/shell-completion/bash/systemd-cgtop
index a5e3401959..b186f1bd53 100644
--- a/shell-completion/bash/systemd-cgtop
+++ b/shell-completion/bash/systemd-cgtop
@@ -1,5 +1,5 @@
# systemd-cgtop(1) completion -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/shell-completion/bash/systemd-delta b/shell-completion/bash/systemd-delta
index fcf27ba30e..baf86b0813 100644
--- a/shell-completion/bash/systemd-delta
+++ b/shell-completion/bash/systemd-delta
@@ -1,5 +1,5 @@
# systemd-delta(1) completion -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/shell-completion/bash/systemd-detect-virt b/shell-completion/bash/systemd-detect-virt
index bea00fc7ae..fb35efaadb 100644
--- a/shell-completion/bash/systemd-detect-virt
+++ b/shell-completion/bash/systemd-detect-virt
@@ -1,5 +1,5 @@
# systemd-detect-virt(1) completion -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/shell-completion/bash/systemd-id128 b/shell-completion/bash/systemd-id128
index f25848beba..937556154a 100644
--- a/shell-completion/bash/systemd-id128
+++ b/shell-completion/bash/systemd-id128
@@ -1,5 +1,5 @@
# networkctl(1) completion -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/shell-completion/bash/systemd-nspawn b/shell-completion/bash/systemd-nspawn
index a8bd406fb3..ebd97a9de1 100644
--- a/shell-completion/bash/systemd-nspawn
+++ b/shell-completion/bash/systemd-nspawn
@@ -1,5 +1,5 @@
# systemd-nspawn(1) completion -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/shell-completion/bash/systemd-path b/shell-completion/bash/systemd-path
index 189fec0933..cae4ac1b30 100644
--- a/shell-completion/bash/systemd-path
+++ b/shell-completion/bash/systemd-path
@@ -1,5 +1,5 @@
# systemd-path(1) completion -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/shell-completion/bash/systemd-resolve b/shell-completion/bash/systemd-resolve
index 66f0ae04a0..ec43948278 100644
--- a/shell-completion/bash/systemd-resolve
+++ b/shell-completion/bash/systemd-resolve
@@ -1,5 +1,5 @@
# systemd-resolve(1) completion -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/shell-completion/bash/systemd-run b/shell-completion/bash/systemd-run
index 88f4443ad9..884065187b 100644
--- a/shell-completion/bash/systemd-run
+++ b/shell-completion/bash/systemd-run
@@ -1,5 +1,5 @@
# systemd-run(1) completion -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/shell-completion/bash/timedatectl b/shell-completion/bash/timedatectl
index 4605fafc46..3e72ce6655 100644
--- a/shell-completion/bash/timedatectl
+++ b/shell-completion/bash/timedatectl
@@ -1,5 +1,5 @@
# timedatectl(1) completion -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/shell-completion/bash/udevadm b/shell-completion/bash/udevadm
index 76126a6329..8b1b962f2d 100644
--- a/shell-completion/bash/udevadm
+++ b/shell-completion/bash/udevadm
@@ -1,5 +1,5 @@
# udevadm(8) completion -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/shell-completion/zsh/_bootctl b/shell-completion/zsh/_bootctl
index fc051bd87d..9e024da341 100644
--- a/shell-completion/zsh/_bootctl
+++ b/shell-completion/zsh/_bootctl
@@ -1,5 +1,5 @@
#compdef bootctl -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
__bootctl() {
bootctl --no-pager $@ 2>/dev/null
diff --git a/shell-completion/zsh/_busctl b/shell-completion/zsh/_busctl
index 0589e99326..8085d5ad11 100644
--- a/shell-completion/zsh/_busctl
+++ b/shell-completion/zsh/_busctl
@@ -1,5 +1,5 @@
#compdef busctl -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
# busctl(1) completion -*- shell-script -*-
#
diff --git a/shell-completion/zsh/_coredumpctl b/shell-completion/zsh/_coredumpctl
index 6b7d14a766..54e935330f 100644
--- a/shell-completion/zsh/_coredumpctl
+++ b/shell-completion/zsh/_coredumpctl
@@ -1,5 +1,5 @@
#compdef coredumpctl -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
(( $+functions[_coredumpctl_commands] )) ||
_coredumpctl_commands(){
diff --git a/shell-completion/zsh/_hostnamectl b/shell-completion/zsh/_hostnamectl
index d1ad85a18f..d05c46bd43 100644
--- a/shell-completion/zsh/_hostnamectl
+++ b/shell-completion/zsh/_hostnamectl
@@ -1,5 +1,5 @@
#compdef hostnamectl -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
(( $+functions[_hostnamectl_set-hostname] )) ||
_hostnamectl_set-hostname() {
diff --git a/shell-completion/zsh/_journalctl b/shell-completion/zsh/_journalctl
index ecc5d0831a..848c4fa1be 100644
--- a/shell-completion/zsh/_journalctl
+++ b/shell-completion/zsh/_journalctl
@@ -1,5 +1,5 @@
#compdef journalctl -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
(( $+functions[_journalctl_fields] )) ||
_journalctl_fields() {
diff --git a/shell-completion/zsh/_kernel-install b/shell-completion/zsh/_kernel-install
index 4b5dd89d43..b0dd824356 100644
--- a/shell-completion/zsh/_kernel-install
+++ b/shell-completion/zsh/_kernel-install
@@ -1,5 +1,5 @@
#compdef kernel-install -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
(( $+functions[_kernel-install_images] )) ||
_kernel-install_images(){
diff --git a/shell-completion/zsh/_localectl b/shell-completion/zsh/_localectl
index a712473ce2..1c7ac82b65 100644
--- a/shell-completion/zsh/_localectl
+++ b/shell-completion/zsh/_localectl
@@ -1,5 +1,5 @@
#compdef localectl -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
(( $+functions[_localectl_set-locale] )) ||
_localectl_set-locale() {
diff --git a/shell-completion/zsh/_loginctl b/shell-completion/zsh/_loginctl
index feb7016770..50c192daad 100644
--- a/shell-completion/zsh/_loginctl
+++ b/shell-completion/zsh/_loginctl
@@ -1,5 +1,5 @@
#compdef loginctl -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
(( $+functions[_loginctl_all_sessions] )) ||
_loginctl_all_sessions() {
diff --git a/shell-completion/zsh/_machinectl b/shell-completion/zsh/_machinectl
index 5955c765aa..9a4a32e627 100644
--- a/shell-completion/zsh/_machinectl
+++ b/shell-completion/zsh/_machinectl
@@ -1,5 +1,5 @@
#compdef machinectl -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
(( $+functions[__machinectl_get_machines] )) ||
__machinectl_get_machines () {
diff --git a/shell-completion/zsh/_networkctl b/shell-completion/zsh/_networkctl
index 13c8009887..165c5411be 100644
--- a/shell-completion/zsh/_networkctl
+++ b/shell-completion/zsh/_networkctl
@@ -1,5 +1,5 @@
#compdef networkctl -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
(( $+functions[_networkctl_commands] )) ||
_networkctl_commands() {
diff --git a/shell-completion/zsh/_resolvectl b/shell-completion/zsh/_resolvectl
index 3ac069c6b0..8a50fbdbbe 100644
--- a/shell-completion/zsh/_resolvectl
+++ b/shell-completion/zsh/_resolvectl
@@ -1,5 +1,5 @@
#compdef resolvectl systemd-resolve -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/shell-completion/zsh/_sd_hosts_or_user_at_host b/shell-completion/zsh/_sd_hosts_or_user_at_host
index a510bf3cf1..8148ed1985 100644
--- a/shell-completion/zsh/_sd_hosts_or_user_at_host
+++ b/shell-completion/zsh/_sd_hosts_or_user_at_host
@@ -1,5 +1,5 @@
#autoload
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
_alternative \
'users-hosts:: _user_at_host' \
diff --git a/shell-completion/zsh/_sd_machines b/shell-completion/zsh/_sd_machines
index 30b7fd81a3..cc0d1e2b4e 100644
--- a/shell-completion/zsh/_sd_machines
+++ b/shell-completion/zsh/_sd_machines
@@ -1,5 +1,5 @@
#autoload
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
(( $+functions[__sd_machines_get_machines] )) ||
__sd_machines_get_machines () {
diff --git a/shell-completion/zsh/_sd_outputmodes b/shell-completion/zsh/_sd_outputmodes
index 763b106f3d..267a2e7bd3 100644
--- a/shell-completion/zsh/_sd_outputmodes
+++ b/shell-completion/zsh/_sd_outputmodes
@@ -1,5 +1,5 @@
#autoload
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
local -a _output_opts
_output_opts=(short short-full short-iso short-iso-precise short-precise short-monotonic short-unix verbose export json json-pretty json-sse json-seq cat with-unit)
diff --git a/shell-completion/zsh/_sd_unit_files b/shell-completion/zsh/_sd_unit_files
index cce44423e9..654f48fca5 100644
--- a/shell-completion/zsh/_sd_unit_files
+++ b/shell-completion/zsh/_sd_unit_files
@@ -1,5 +1,5 @@
#autoload
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
_sd_unit_files() {
local files expl
diff --git a/shell-completion/zsh/_systemctl.in b/shell-completion/zsh/_systemctl.in
index c59beb157c..4830aeba5f 100644
--- a/shell-completion/zsh/_systemctl.in
+++ b/shell-completion/zsh/_systemctl.in
@@ -1,5 +1,5 @@
#compdef systemctl -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
(( $+functions[_systemctl_commands] )) || _systemctl_commands()
{
diff --git a/shell-completion/zsh/_systemd b/shell-completion/zsh/_systemd
index 3550c15163..5a8af1c918 100644
--- a/shell-completion/zsh/_systemd
+++ b/shell-completion/zsh/_systemd
@@ -1,5 +1,5 @@
#compdef systemd-cat systemd-ask-password systemd-cgls systemd-cgtop systemd-detect-virt systemd-machine-id-setup systemd-notify systemd-tty-ask-password-agent -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
local curcontext="$curcontext" state lstate line
case "$service" in
diff --git a/shell-completion/zsh/_systemd-analyze b/shell-completion/zsh/_systemd-analyze
index 75e72439fd..188d6b7359 100644
--- a/shell-completion/zsh/_systemd-analyze
+++ b/shell-completion/zsh/_systemd-analyze
@@ -1,5 +1,5 @@
#compdef systemd-analyze -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
(( $+functions[_systemd-analyze_log-level] )) ||
_systemd-analyze_log-level() {
diff --git a/shell-completion/zsh/_systemd-delta b/shell-completion/zsh/_systemd-delta
index b4361f7860..5cd140d1fc 100644
--- a/shell-completion/zsh/_systemd-delta
+++ b/shell-completion/zsh/_systemd-delta
@@ -1,5 +1,5 @@
#compdef systemd-delta -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
(( $+functions[_systemd-delta_types] )) ||
_systemd-delta_types() {
diff --git a/shell-completion/zsh/_systemd-inhibit b/shell-completion/zsh/_systemd-inhibit
index 4536f9bd2e..1ff8487bf9 100644
--- a/shell-completion/zsh/_systemd-inhibit
+++ b/shell-completion/zsh/_systemd-inhibit
@@ -1,5 +1,5 @@
#compdef systemd-inhibit -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
(( $+functions[_systemd-inhibit_commands] )) ||
_systemd-inhibit_commands(){
diff --git a/shell-completion/zsh/_systemd-nspawn b/shell-completion/zsh/_systemd-nspawn
index 414d82e2ea..d3cf06016b 100644
--- a/shell-completion/zsh/_systemd-nspawn
+++ b/shell-completion/zsh/_systemd-nspawn
@@ -1,5 +1,5 @@
#compdef systemd-nspawn -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
(( $+functions[_systemd-nspawn_caps] )) ||
_systemd-nspawn_caps(){
diff --git a/shell-completion/zsh/_systemd-run b/shell-completion/zsh/_systemd-run
index 22b82d66fd..d9998e5dfb 100644
--- a/shell-completion/zsh/_systemd-run
+++ b/shell-completion/zsh/_systemd-run
@@ -1,5 +1,5 @@
#compdef systemd-run -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
# @todo _systemctl has a helper with the same name, so we must redefine
__systemctl() {
diff --git a/shell-completion/zsh/_systemd-tmpfiles b/shell-completion/zsh/_systemd-tmpfiles
index 8860dc797c..8a23360bf0 100644
--- a/shell-completion/zsh/_systemd-tmpfiles
+++ b/shell-completion/zsh/_systemd-tmpfiles
@@ -1,5 +1,5 @@
#compdef systemd-tmpfiles -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
_arguments \
{-h,--help}'[Show help]' \
diff --git a/shell-completion/zsh/_timedatectl b/shell-completion/zsh/_timedatectl
index e2dabc79a7..eee086ea9e 100644
--- a/shell-completion/zsh/_timedatectl
+++ b/shell-completion/zsh/_timedatectl
@@ -1,5 +1,5 @@
#compdef timedatectl -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
_timedatectl_set-timezone(){
local -a _timezones
diff --git a/shell-completion/zsh/_udevadm b/shell-completion/zsh/_udevadm
index ad0b73d476..ae82d8aa70 100644
--- a/shell-completion/zsh/_udevadm
+++ b/shell-completion/zsh/_udevadm
@@ -1,5 +1,5 @@
#compdef udevadm -*- shell-script -*-
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
(( $+functions[_udevadm_info] )) ||
_udevadm_info(){
diff --git a/shell-completion/zsh/meson.build b/shell-completion/zsh/meson.build
index ff91cc1134..4fff13357f 100644
--- a/shell-completion/zsh/meson.build
+++ b/shell-completion/zsh/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
zshcompletiondir = get_option('zshcompletiondir')
if zshcompletiondir == ''
diff --git a/src/ac-power/ac-power.c b/src/ac-power/ac-power.c
index 90ba5d2b68..9fabdb9e9f 100644
--- a/src/ac-power/ac-power.c
+++ b/src/ac-power/ac-power.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <getopt.h>
diff --git a/src/activate/activate.c b/src/activate/activate.c
index bca845ad83..1f7a2490e7 100644
--- a/src/activate/activate.c
+++ b/src/activate/activate.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <getopt.h>
#include <sys/epoll.h>
diff --git a/src/analyze/analyze-condition.c b/src/analyze/analyze-condition.c
index e1365e1805..241c188ed6 100644
--- a/src/analyze/analyze-condition.c
+++ b/src/analyze/analyze-condition.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdlib.h>
diff --git a/src/analyze/analyze-condition.h b/src/analyze/analyze-condition.h
index 2ef278eb5c..7b52669d05 100644
--- a/src/analyze/analyze-condition.h
+++ b/src/analyze/analyze-condition.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "install.h"
diff --git a/src/analyze/analyze-security.c b/src/analyze/analyze-security.c
index 9c1d63030d..8d94fbc5d7 100644
--- a/src/analyze/analyze-security.c
+++ b/src/analyze/analyze-security.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/utsname.h>
diff --git a/src/analyze/analyze-security.h b/src/analyze/analyze-security.h
index c00ae7c80a..e8de39f3bc 100644
--- a/src/analyze/analyze-security.h
+++ b/src/analyze/analyze-security.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/analyze/analyze-verify.c b/src/analyze/analyze-verify.c
index 93506482e8..a9c89173bf 100644
--- a/src/analyze/analyze-verify.c
+++ b/src/analyze/analyze-verify.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdlib.h>
diff --git a/src/analyze/analyze-verify.h b/src/analyze/analyze-verify.h
index 3da2cf7097..43bfbcbc8c 100644
--- a/src/analyze/analyze-verify.h
+++ b/src/analyze/analyze-verify.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/analyze/analyze.c b/src/analyze/analyze.c
index 9a0b1a7bbf..9920f2a856 100644
--- a/src/analyze/analyze.c
+++ b/src/analyze/analyze.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2013 Simon Peeters
***/
diff --git a/src/analyze/meson.build b/src/analyze/meson.build
index 58760d609b..9e4d95b036 100644
--- a/src/analyze/meson.build
+++ b/src/analyze/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
systemd_analyze_sources = files('''
analyze.c
diff --git a/src/analyze/test-verify.c b/src/analyze/test-verify.c
index dcbb6394c6..12c32159e5 100644
--- a/src/analyze/test-verify.c
+++ b/src/analyze/test-verify.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "analyze-verify.h"
#include "tests.h"
diff --git a/src/ask-password/ask-password.c b/src/ask-password/ask-password.c
index ca6da40bbc..a24ee9af1c 100644
--- a/src/ask-password/ask-password.c
+++ b/src/ask-password/ask-password.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <getopt.h>
diff --git a/src/backlight/backlight.c b/src/backlight/backlight.c
index 9ee2c23683..d1b6a81e33 100644
--- a/src/backlight/backlight.c
+++ b/src/backlight/backlight.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/stat.h>
#include <sys/types.h>
@@ -252,6 +252,7 @@ static int get_max_brightness(sd_device *device, unsigned *ret) {
if (max_brightness <= 0)
return log_device_warning_errno(device, SYNTHETIC_ERRNO(EINVAL), "Maximum brightness is 0, ignoring device.");
+ log_device_debug(device, "Maximum brightness is %u", max_brightness);
*ret = max_brightness;
return 0;
}
@@ -348,6 +349,7 @@ static int read_brightness(sd_device *device, unsigned max_brightness, unsigned
goto use_brightness;
}
+ log_device_debug(device, "Current actual_brightness is %u", brightness);
*ret_brightness = brightness;
return 0;
}
@@ -366,6 +368,7 @@ use_brightness:
"brightness=%u is larger than max_brightness=%u",
brightness, max_brightness);
+ log_device_debug(device, "Current brightness is %u", brightness);
*ret_brightness = brightness;
return 0;
}
@@ -456,10 +459,11 @@ static int run(int argc, char *argv[]) {
if (r > 0) {
r = safe_atou(value, &brightness);
if (r < 0) {
- log_error_errno(r, "Failed to parse saved brightness '%s', removing %s.",
- value, saved);
+ log_warning_errno(r, "Failed to parse saved brightness '%s', removing %s.",
+ value, saved);
(void) unlink(saved);
} else {
+ log_debug("Using saved brightness %u.", brightness);
if (clamp)
(void) clamp_brightness(device, true, max_brightness, &brightness);
diff --git a/src/basic/MurmurHash2.c b/src/basic/MurmurHash2.c
index 5859af0a81..43a89a0820 100644
--- a/src/basic/MurmurHash2.c
+++ b/src/basic/MurmurHash2.c
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: LicenseRef-murmurhash2-public-domain */
//-----------------------------------------------------------------------------
// MurmurHash2 was written by Austin Appleby, and is placed in the public
// domain. The author hereby disclaims copyright to this source code.
diff --git a/src/basic/MurmurHash2.h b/src/basic/MurmurHash2.h
index 1aef3afba0..5758b86039 100644
--- a/src/basic/MurmurHash2.h
+++ b/src/basic/MurmurHash2.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: LicenseRef-murmurhash2-public-domain */
//-----------------------------------------------------------------------------
// MurmurHash2 was written by Austin Appleby, and is placed in the public
// domain. The author hereby disclaims copyright to this source code.
diff --git a/src/basic/af-list.c b/src/basic/af-list.c
index abad221d58..7e819d6d11 100644
--- a/src/basic/af-list.c
+++ b/src/basic/af-list.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <string.h>
diff --git a/src/basic/af-list.h b/src/basic/af-list.h
index 8342323b8a..688ac63df7 100644
--- a/src/basic/af-list.h
+++ b/src/basic/af-list.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <sys/socket.h>
diff --git a/src/basic/alloc-util.c b/src/basic/alloc-util.c
index 5951e8c3d5..bad15cc204 100644
--- a/src/basic/alloc-util.c
+++ b/src/basic/alloc-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <malloc.h>
#include <stdint.h>
diff --git a/src/basic/alloc-util.h b/src/basic/alloc-util.h
index 34340e4a39..f3e192ddaf 100644
--- a/src/basic/alloc-util.h
+++ b/src/basic/alloc-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <alloca.h>
diff --git a/src/basic/architecture.c b/src/basic/architecture.c
index 85837b5ebf..409632c3f4 100644
--- a/src/basic/architecture.c
+++ b/src/basic/architecture.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/utsname.h>
diff --git a/src/basic/architecture.h b/src/basic/architecture.h
index 443e890eab..1db625cf80 100644
--- a/src/basic/architecture.h
+++ b/src/basic/architecture.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <endian.h>
diff --git a/src/basic/arphrd-list.c b/src/basic/arphrd-list.c
index 7e5570ab9f..99048d20c8 100644
--- a/src/basic/arphrd-list.c
+++ b/src/basic/arphrd-list.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <linux/if_arp.h>
diff --git a/src/basic/arphrd-list.h b/src/basic/arphrd-list.h
index aae56bc88c..bc95b4507b 100644
--- a/src/basic/arphrd-list.h
+++ b/src/basic/arphrd-list.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
const char *arphrd_to_name(int id);
diff --git a/src/basic/async.c b/src/basic/async.c
index daa95cd102..443cfa95ab 100644
--- a/src/basic/async.c
+++ b/src/basic/async.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <pthread.h>
diff --git a/src/basic/async.h b/src/basic/async.h
index 3160613184..9ada32c994 100644
--- a/src/basic/async.h
+++ b/src/basic/async.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int asynchronous_job(void* (*func)(void *p), void *arg);
diff --git a/src/basic/audit-util.c b/src/basic/audit-util.c
index 6eb224b2c8..1bf88b1e52 100644
--- a/src/basic/audit-util.c
+++ b/src/basic/audit-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <linux/netlink.h>
diff --git a/src/basic/audit-util.h b/src/basic/audit-util.h
index c9fc49871d..aa2177113b 100644
--- a/src/basic/audit-util.h
+++ b/src/basic/audit-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/basic/blockdev-util.c b/src/basic/blockdev-util.c
index 21ff3ba1b1..0f1e30ccd9 100644
--- a/src/basic/blockdev-util.c
+++ b/src/basic/blockdev-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/file.h>
#include <unistd.h>
diff --git a/src/basic/blockdev-util.h b/src/basic/blockdev-util.h
index 58a7050f53..10048ff313 100644
--- a/src/basic/blockdev-util.h
+++ b/src/basic/blockdev-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <sys/types.h>
diff --git a/src/basic/btrfs-util.c b/src/basic/btrfs-util.c
index 50a35268ea..2634659aa0 100644
--- a/src/basic/btrfs-util.c
+++ b/src/basic/btrfs-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/basic/btrfs-util.h b/src/basic/btrfs-util.h
index d9cb95af00..c8b44f6162 100644
--- a/src/basic/btrfs-util.h
+++ b/src/basic/btrfs-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/basic/build.h b/src/basic/build.h
index e02ad391a9..4697639efa 100644
--- a/src/basic/build.h
+++ b/src/basic/build.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "version.h"
diff --git a/src/basic/bus-label.c b/src/basic/bus-label.c
index 1613cf7fd7..cd6c58a3d3 100644
--- a/src/basic/bus-label.c
+++ b/src/basic/bus-label.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdlib.h>
diff --git a/src/basic/bus-label.h b/src/basic/bus-label.h
index 4a1b097a52..446daba7f2 100644
--- a/src/basic/bus-label.h
+++ b/src/basic/bus-label.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stddef.h>
diff --git a/src/basic/cap-list.c b/src/basic/cap-list.c
index b483833947..d295a635ca 100644
--- a/src/basic/cap-list.c
+++ b/src/basic/cap-list.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <string.h>
@@ -50,6 +50,9 @@ int capability_from_name(const char *name) {
return sc->id;
}
+/* This is the number of capability names we are *compiled* with.
+ * For the max capability number of the currently-running kernel,
+ * use cap_last_cap(). */
int capability_list_length(void) {
return (int) ELEMENTSOF(capability_names);
}
diff --git a/src/basic/cap-list.h b/src/basic/cap-list.h
index 4bfb1a355b..71235d6a28 100644
--- a/src/basic/cap-list.h
+++ b/src/basic/cap-list.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <inttypes.h>
diff --git a/src/basic/capability-util.c b/src/basic/capability-util.c
index ae269e8a8a..c1520d9279 100644
--- a/src/basic/capability-util.c
+++ b/src/basic/capability-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stdio.h>
diff --git a/src/basic/capability-util.h b/src/basic/capability-util.h
index fdf6ef8462..f5ce290524 100644
--- a/src/basic/capability-util.h
+++ b/src/basic/capability-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/basic/cgroup-util.c b/src/basic/cgroup-util.c
index d2655673fd..f28bf1866a 100644
--- a/src/basic/cgroup-util.c
+++ b/src/basic/cgroup-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <ftw.h>
@@ -1875,9 +1875,8 @@ int cg_mask_supported(CGroupMask *ret) {
if (r > 0) {
_cleanup_free_ char *root = NULL, *controllers = NULL, *path = NULL;
- /* In the unified hierarchy we can read the supported
- * and accessible controllers from a the top-level
- * cgroup attribute */
+ /* In the unified hierarchy we can read the supported and accessible controllers from
+ * the top-level cgroup attribute */
r = cg_get_root_path(&root);
if (r < 0)
diff --git a/src/basic/cgroup-util.h b/src/basic/cgroup-util.h
index eda2b16a1b..bdc0d0d086 100644
--- a/src/basic/cgroup-util.h
+++ b/src/basic/cgroup-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <dirent.h>
diff --git a/src/basic/chattr-util.c b/src/basic/chattr-util.c
index 235cfb9bd7..c724e17685 100644
--- a/src/basic/chattr-util.c
+++ b/src/basic/chattr-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/basic/chattr-util.h b/src/basic/chattr-util.h
index 29070c848a..2fcdb64431 100644
--- a/src/basic/chattr-util.h
+++ b/src/basic/chattr-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <linux/fs.h>
diff --git a/src/basic/conf-files.c b/src/basic/conf-files.c
index eb19516c2a..f8c997673a 100644
--- a/src/basic/conf-files.c
+++ b/src/basic/conf-files.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stdarg.h>
diff --git a/src/basic/conf-files.h b/src/basic/conf-files.h
index 7d7be5c90f..7774ed7054 100644
--- a/src/basic/conf-files.h
+++ b/src/basic/conf-files.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "macro.h"
diff --git a/src/basic/copy.c b/src/basic/copy.c
index be4ca6288a..6a9c3a396f 100644
--- a/src/basic/copy.c
+++ b/src/basic/copy.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
@@ -1103,7 +1103,7 @@ int copy_file_atomic_full(
assert(from);
assert(to);
- /* We try to use O_TMPFILE here to create the file if we can. Note that that only works if COPY_REPLACE is not
+ /* We try to use O_TMPFILE here to create the file if we can. Note that this only works if COPY_REPLACE is not
* set though as we need to use linkat() for linking the O_TMPFILE file into the file system but that system
* call can't replace existing files. Hence, if COPY_REPLACE is set we create a temporary name in the file
* system right-away and unconditionally which we then can renameat() to the right name after we completed
diff --git a/src/basic/copy.h b/src/basic/copy.h
index cf2efd8e7b..b583dff2c0 100644
--- a/src/basic/copy.h
+++ b/src/basic/copy.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <fcntl.h>
diff --git a/src/basic/def.h b/src/basic/def.h
index 9f1f3c229c..2e60abb4f1 100644
--- a/src/basic/def.h
+++ b/src/basic/def.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#define DEFAULT_TIMEOUT_USEC (90*USEC_PER_SEC)
diff --git a/src/basic/device-nodes.c b/src/basic/device-nodes.c
index 888ef23664..7eb9c351b6 100644
--- a/src/basic/device-nodes.c
+++ b/src/basic/device-nodes.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stdio.h>
diff --git a/src/basic/device-nodes.h b/src/basic/device-nodes.h
index 0dad8c9c68..9e5c79f67d 100644
--- a/src/basic/device-nodes.h
+++ b/src/basic/device-nodes.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stddef.h>
diff --git a/src/basic/dirent-util.c b/src/basic/dirent-util.c
index d1d2c0ef46..48aced748a 100644
--- a/src/basic/dirent-util.c
+++ b/src/basic/dirent-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <sys/stat.h>
diff --git a/src/basic/dirent-util.h b/src/basic/dirent-util.h
index b1b87679dc..07750c39e0 100644
--- a/src/basic/dirent-util.h
+++ b/src/basic/dirent-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <dirent.h>
diff --git a/src/basic/dlfcn-util.c b/src/basic/dlfcn-util.c
index 08ded96965..2dbff0e358 100644
--- a/src/basic/dlfcn-util.c
+++ b/src/basic/dlfcn-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "dlfcn-util.h"
diff --git a/src/basic/dlfcn-util.h b/src/basic/dlfcn-util.h
index df66cdfd38..2c94ed51f3 100644
--- a/src/basic/dlfcn-util.h
+++ b/src/basic/dlfcn-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <dlfcn.h>
diff --git a/src/basic/efivars.c b/src/basic/efivars.c
index 007137cf01..5aeddef7e2 100644
--- a/src/basic/efivars.c
+++ b/src/basic/efivars.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/basic/efivars.h b/src/basic/efivars.h
index cb341e452f..d310dde7d7 100644
--- a/src/basic/efivars.h
+++ b/src/basic/efivars.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#if !ENABLE_EFI
diff --git a/src/basic/env-file.c b/src/basic/env-file.c
index dc92b13a6f..99c3e3f4a3 100644
--- a/src/basic/env-file.c
+++ b/src/basic/env-file.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "env-file.h"
diff --git a/src/basic/env-file.h b/src/basic/env-file.h
index e1ca195ff0..de475885ac 100644
--- a/src/basic/env-file.h
+++ b/src/basic/env-file.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdarg.h>
diff --git a/src/basic/env-util.c b/src/basic/env-util.c
index 802dff2485..a84863ff22 100644
--- a/src/basic/env-util.c
+++ b/src/basic/env-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <limits.h>
@@ -747,3 +747,15 @@ int getenv_bool_secure(const char *p) {
return parse_boolean(e);
}
+
+int set_unset_env(const char *name, const char *value, bool overwrite) {
+ int r;
+
+ if (value)
+ r = setenv(name, value, overwrite);
+ else
+ r = unsetenv(name);
+ if (r < 0)
+ return -errno;
+ return 0;
+}
diff --git a/src/basic/env-util.h b/src/basic/env-util.h
index 92802ed774..6684b3350f 100644
--- a/src/basic/env-util.h
+++ b/src/basic/env-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
@@ -52,3 +52,6 @@ char *strv_env_get(char **x, const char *n) _pure_;
int getenv_bool(const char *p);
int getenv_bool_secure(const char *p);
+
+/* Like setenv, but calls unsetenv if value == NULL. */
+int set_unset_env(const char *name, const char *value, bool overwrite);
diff --git a/src/basic/errno-list.c b/src/basic/errno-list.c
index 44cc570539..2aeb38c438 100644
--- a/src/basic/errno-list.c
+++ b/src/basic/errno-list.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <string.h>
diff --git a/src/basic/errno-list.h b/src/basic/errno-list.h
index 9c639b4f55..082b833e49 100644
--- a/src/basic/errno-list.h
+++ b/src/basic/errno-list.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/basic/errno-util.h b/src/basic/errno-util.h
index 0ca650f48f..5609820b88 100644
--- a/src/basic/errno-util.h
+++ b/src/basic/errno-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdlib.h>
@@ -50,7 +50,10 @@ static inline int errno_or_else(int fallback) {
/* Hint #1: ENETUNREACH happens if we try to connect to "non-existing" special IP addresses, such as ::5.
*
* Hint #2: The kernel sends e.g., EHOSTUNREACH or ENONET to userspace in some ICMP error cases. See the
- * icmp_err_convert[] in net/ipv4/icmp.c in the kernel sources */
+ * icmp_err_convert[] in net/ipv4/icmp.c in the kernel sources.
+ *
+ * Hint #3: When asynchronous connect() on TCP fails because the host never acknowledges a single packet,
+ * kernel tells us that with ETIMEDOUT, see tcp(7). */
static inline bool ERRNO_IS_DISCONNECT(int r) {
return IN_SET(abs(r),
ECONNABORTED,
@@ -66,7 +69,8 @@ static inline bool ERRNO_IS_DISCONNECT(int r) {
ENOTCONN,
EPIPE,
EPROTO,
- ESHUTDOWN);
+ ESHUTDOWN,
+ ETIMEDOUT);
}
/* Transient errors we might get on accept() that we should ignore. As per error handling comment in
diff --git a/src/basic/escape.c b/src/basic/escape.c
index 7589d597a2..31f3cda472 100644
--- a/src/basic/escape.c
+++ b/src/basic/escape.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stdlib.h>
diff --git a/src/basic/escape.h b/src/basic/escape.h
index fa267813b3..691b6d802c 100644
--- a/src/basic/escape.h
+++ b/src/basic/escape.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <inttypes.h>
@@ -16,7 +16,7 @@
/* Those that can be escaped or double-quoted.
*
- * Stricly speaking, ! does not need to be escaped, except in interactive
+ * Strictly speaking, ! does not need to be escaped, except in interactive
* mode, but let's be extra nice to the user and quote ! in case this
* output is ever used in interactive mode. */
#define SHELL_NEED_QUOTES SHELL_NEED_ESCAPE GLOB_CHARS "'()<>|&;!"
diff --git a/src/basic/ether-addr-util.c b/src/basic/ether-addr-util.c
index e875696a1a..c8094b6e45 100644
--- a/src/basic/ether-addr-util.c
+++ b/src/basic/ether-addr-util.c
@@ -1,6 +1,7 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
+#include <inttypes.h>
#include <net/ethernet.h>
#include <stdio.h>
#include <sys/types.h>
@@ -9,6 +10,20 @@
#include "macro.h"
#include "string-util.h"
+char* hw_addr_to_string(const hw_addr_data *addr, char buffer[HW_ADDR_TO_STRING_MAX]) {
+ assert(addr);
+ assert(buffer);
+ assert(addr->length <= HW_ADDR_MAX_SIZE);
+
+ for (size_t i = 0; i < addr->length; i++) {
+ sprintf(&buffer[3*i], "%02"PRIx8, addr->addr.bytes[i]);
+ if (i < addr->length - 1)
+ buffer[3*i + 2] = ':';
+ }
+
+ return buffer;
+}
+
char* ether_addr_to_string(const struct ether_addr *addr, char buffer[ETHER_ADDR_TO_STRING_MAX]) {
assert(addr);
assert(buffer);
diff --git a/src/basic/ether-addr-util.h b/src/basic/ether-addr-util.h
index 4e44b30be9..942ce55621 100644
--- a/src/basic/ether-addr-util.h
+++ b/src/basic/ether-addr-util.h
@@ -1,11 +1,35 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
+#include <linux/if_infiniband.h>
#include <net/ethernet.h>
#include <stdbool.h>
#include "hash-funcs.h"
+/* This is MAX_ADDR_LEN as defined in linux/netdevice.h, but net/if_arp.h
+ * defines a macro of the same name with a much lower size. */
+#define HW_ADDR_MAX_SIZE 32
+
+union hw_addr_union {
+ struct ether_addr ether;
+ uint8_t infiniband[INFINIBAND_ALEN];
+ uint8_t bytes[HW_ADDR_MAX_SIZE];
+};
+
+typedef struct hw_addr_data {
+ union hw_addr_union addr;
+ size_t length;
+} hw_addr_data;
+
+#define HW_ADDR_TO_STRING_MAX (3*HW_ADDR_MAX_SIZE)
+char* hw_addr_to_string(const hw_addr_data *addr, char buffer[HW_ADDR_TO_STRING_MAX]);
+
+/* Use only as function argument, never stand-alone! */
+#define HW_ADDR_TO_STR(hw_addr) hw_addr_to_string((hw_addr), (char[HW_ADDR_TO_STRING_MAX]){})
+
+#define HW_ADDR_NULL ((const hw_addr_data){})
+
#define ETHER_ADDR_FORMAT_STR "%02X%02X%02X%02X%02X%02X"
#define ETHER_ADDR_FORMAT_VAL(x) (x).ether_addr_octet[0], (x).ether_addr_octet[1], (x).ether_addr_octet[2], (x).ether_addr_octet[3], (x).ether_addr_octet[4], (x).ether_addr_octet[5]
diff --git a/src/basic/extract-word.c b/src/basic/extract-word.c
index d64dddd641..76b3fe12e3 100644
--- a/src/basic/extract-word.c
+++ b/src/basic/extract-word.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stdarg.h>
diff --git a/src/basic/extract-word.h b/src/basic/extract-word.h
index f028577c40..d1de32e580 100644
--- a/src/basic/extract-word.h
+++ b/src/basic/extract-word.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "macro.h"
diff --git a/src/basic/fd-util.c b/src/basic/fd-util.c
index e37b6944a8..07a7b3a306 100644
--- a/src/basic/fd-util.c
+++ b/src/basic/fd-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/basic/fd-util.h b/src/basic/fd-util.h
index 93ce95cd03..2162537b80 100644
--- a/src/basic/fd-util.h
+++ b/src/basic/fd-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <dirent.h>
diff --git a/src/basic/fileio.c b/src/basic/fileio.c
index 050c8709f8..973756c891 100644
--- a/src/basic/fileio.c
+++ b/src/basic/fileio.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <ctype.h>
#include <errno.h>
@@ -117,7 +117,7 @@ int write_string_stream_ts(
FILE *f,
const char *line,
WriteStringFileFlags flags,
- struct timespec *ts) {
+ const struct timespec *ts) {
bool needs_nl;
int r, fd;
@@ -161,7 +161,7 @@ int write_string_stream_ts(
return r;
if (ts) {
- struct timespec twice[2] = {*ts, *ts};
+ const struct timespec twice[2] = {*ts, *ts};
if (futimens(fd, twice) < 0)
return -errno;
@@ -174,7 +174,7 @@ static int write_string_file_atomic(
const char *fn,
const char *line,
WriteStringFileFlags flags,
- struct timespec *ts) {
+ const struct timespec *ts) {
_cleanup_fclose_ FILE *f = NULL;
_cleanup_free_ char *p = NULL;
@@ -221,7 +221,7 @@ int write_string_file_ts(
const char *fn,
const char *line,
WriteStringFileFlags flags,
- struct timespec *ts) {
+ const struct timespec *ts) {
_cleanup_fclose_ FILE *f = NULL;
int q, r, fd;
@@ -602,7 +602,13 @@ finalize:
return r;
}
-int read_full_file_full(int dir_fd, const char *filename, ReadFullFileFlags flags, char **contents, size_t *size) {
+int read_full_file_full(
+ int dir_fd,
+ const char *filename,
+ ReadFullFileFlags flags,
+ const char *bind_name,
+ char **contents, size_t *size) {
+
_cleanup_fclose_ FILE *f = NULL;
int r;
@@ -645,6 +651,20 @@ int read_full_file_full(int dir_fd, const char *filename, ReadFullFileFlags flag
if (sk < 0)
return -errno;
+ if (bind_name) {
+ /* If the caller specified a socket name to bind to, do so before connecting. This is
+ * useful to communicate some minor, short meta-information token from the client to
+ * the server. */
+ union sockaddr_union bsa;
+
+ r = sockaddr_un_set_path(&bsa.un, bind_name);
+ if (r < 0)
+ return r;
+
+ if (bind(sk, &bsa.sa, r) < 0)
+ return r;
+ }
+
if (connect(sk, &sa.sa, SOCKADDR_UN_LEN(sa.un)) < 0)
return errno == ENOTSOCK ? -ENXIO : -errno; /* propagate original error if this is
* not a socket after all */
diff --git a/src/basic/fileio.h b/src/basic/fileio.h
index 963d7d08fc..0886354cbc 100644
--- a/src/basic/fileio.h
+++ b/src/basic/fileio.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <dirent.h>
@@ -48,11 +48,11 @@ DIR* take_fdopendir(int *dfd);
FILE* open_memstream_unlocked(char **ptr, size_t *sizeloc);
FILE* fmemopen_unlocked(void *buf, size_t size, const char *mode);
-int write_string_stream_ts(FILE *f, const char *line, WriteStringFileFlags flags, struct timespec *ts);
+int write_string_stream_ts(FILE *f, const char *line, WriteStringFileFlags flags, const struct timespec *ts);
static inline int write_string_stream(FILE *f, const char *line, WriteStringFileFlags flags) {
return write_string_stream_ts(f, line, flags, NULL);
}
-int write_string_file_ts(const char *fn, const char *line, WriteStringFileFlags flags, struct timespec *ts);
+int write_string_file_ts(const char *fn, const char *line, WriteStringFileFlags flags, const struct timespec *ts);
static inline int write_string_file(const char *fn, const char *line, WriteStringFileFlags flags) {
return write_string_file_ts(fn, line, flags, NULL);
}
@@ -60,9 +60,9 @@ static inline int write_string_file(const char *fn, const char *line, WriteStrin
int write_string_filef(const char *fn, WriteStringFileFlags flags, const char *format, ...) _printf_(3, 4);
int read_one_line_file(const char *filename, char **line);
-int read_full_file_full(int dir_fd, const char *filename, ReadFullFileFlags flags, char **contents, size_t *size);
+int read_full_file_full(int dir_fd, const char *filename, ReadFullFileFlags flags, const char *bind_name, char **contents, size_t *size);
static inline int read_full_file(const char *filename, char **contents, size_t *size) {
- return read_full_file_full(AT_FDCWD, filename, 0, contents, size);
+ return read_full_file_full(AT_FDCWD, filename, 0, NULL, contents, size);
}
int read_full_virtual_file(const char *filename, char **ret_contents, size_t *ret_size);
int read_full_stream_full(FILE *f, const char *filename, ReadFullFileFlags flags, char **contents, size_t *size);
diff --git a/src/basic/format-util.c b/src/basic/format-util.c
index b4144e0352..bf23037792 100644
--- a/src/basic/format-util.c
+++ b/src/basic/format-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "format-util.h"
#include "memory-util.h"
diff --git a/src/basic/format-util.h b/src/basic/format-util.h
index db37c16140..b7e18768e3 100644
--- a/src/basic/format-util.h
+++ b/src/basic/format-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <inttypes.h>
diff --git a/src/basic/fs-util.c b/src/basic/fs-util.c
index 587b3504ee..6924f5dfb1 100644
--- a/src/basic/fs-util.c
+++ b/src/basic/fs-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stddef.h>
@@ -810,7 +810,7 @@ int chase_symlinks(const char *path, const char *original_root, unsigned flags,
*
* 3. With CHASE_STEP: in this case only a single step of the normalization is executed, i.e. only the first
* symlink or ".." component of the path is resolved, and the resulting path is returned. This is useful if
- * a caller wants to trace the a path through the file system verbosely. Returns < 0 on error, > 0 if the
+ * a caller wants to trace the path through the file system verbosely. Returns < 0 on error, > 0 if the
* path is fully normalized, and == 0 for each normalization step. This may be combined with
* CHASE_NONEXISTENT, in which case 1 is returned when a component is not found.
*
diff --git a/src/basic/fs-util.h b/src/basic/fs-util.h
index 241cc6ef62..5dc8853eac 100644
--- a/src/basic/fs-util.h
+++ b/src/basic/fs-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <dirent.h>
diff --git a/src/basic/gcrypt-util.c b/src/basic/gcrypt-util.c
index a82be979de..bf0d2106f8 100644
--- a/src/basic/gcrypt-util.c
+++ b/src/basic/gcrypt-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#if HAVE_GCRYPT
diff --git a/src/basic/gcrypt-util.h b/src/basic/gcrypt-util.h
index 87eb606891..c07b36cdb9 100644
--- a/src/basic/gcrypt-util.h
+++ b/src/basic/gcrypt-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
diff --git a/src/basic/glob-util.c b/src/basic/glob-util.c
index 1e7e301e09..bc0278e57f 100644
--- a/src/basic/glob-util.c
+++ b/src/basic/glob-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <sys/types.h>
diff --git a/src/basic/glob-util.h b/src/basic/glob-util.h
index 3d5f543508..d2f8718d5a 100644
--- a/src/basic/glob-util.h
+++ b/src/basic/glob-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <glob.h>
diff --git a/src/basic/gunicode.c b/src/basic/gunicode.c
index c51b1a7a18..36beb957e1 100644
--- a/src/basic/gunicode.c
+++ b/src/basic/gunicode.c
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/* gunicode.c - Unicode manipulation functions
*
* Copyright (C) 1999, 2000 Tom Tromey
diff --git a/src/basic/gunicode.h b/src/basic/gunicode.h
index a16b7b6ff1..6b7183986f 100644
--- a/src/basic/gunicode.h
+++ b/src/basic/gunicode.h
@@ -1,10 +1,10 @@
-#pragma once
-
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/* gunicode.h - Unicode manipulation functions
*
* Copyright (C) 1999, 2000 Tom Tromey
* Copyright © 2000, 2005 Red Hat, Inc.
*/
+#pragma once
#include <stdbool.h>
#include <stdint.h>
diff --git a/src/basic/hash-funcs.c b/src/basic/hash-funcs.c
index 83016c0fd6..e033de1ae1 100644
--- a/src/basic/hash-funcs.c
+++ b/src/basic/hash-funcs.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <string.h>
diff --git a/src/basic/hash-funcs.h b/src/basic/hash-funcs.h
index fb60200941..5672df1da4 100644
--- a/src/basic/hash-funcs.h
+++ b/src/basic/hash-funcs.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "alloc-util.h"
diff --git a/src/basic/hashmap.c b/src/basic/hashmap.c
index 61946cea32..dd1b18c878 100644
--- a/src/basic/hashmap.c
+++ b/src/basic/hashmap.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <pthread.h>
diff --git a/src/basic/hashmap.h b/src/basic/hashmap.h
index 6933c0b1e6..e99448375e 100644
--- a/src/basic/hashmap.h
+++ b/src/basic/hashmap.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <limits.h>
diff --git a/src/basic/hexdecoct.c b/src/basic/hexdecoct.c
index 96f7b9ed0f..da60202e57 100644
--- a/src/basic/hexdecoct.c
+++ b/src/basic/hexdecoct.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <ctype.h>
#include <errno.h>
diff --git a/src/basic/hexdecoct.h b/src/basic/hexdecoct.h
index dfdff1e9bb..7e2a6892c0 100644
--- a/src/basic/hexdecoct.h
+++ b/src/basic/hexdecoct.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/basic/hostname-util.c b/src/basic/hostname-util.c
index 90a3dfc864..09e49ccb7d 100644
--- a/src/basic/hostname-util.c
+++ b/src/basic/hostname-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <limits.h>
diff --git a/src/basic/hostname-util.h b/src/basic/hostname-util.h
index cafd6f020b..c1e47a2a53 100644
--- a/src/basic/hostname-util.h
+++ b/src/basic/hostname-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/basic/in-addr-util.c b/src/basic/in-addr-util.c
index c102504fdd..a4f13b620a 100644
--- a/src/basic/in-addr-util.c
+++ b/src/basic/in-addr-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <arpa/inet.h>
#include <endian.h>
diff --git a/src/basic/in-addr-util.h b/src/basic/in-addr-util.h
index 45c93a0056..24308b702e 100644
--- a/src/basic/in-addr-util.h
+++ b/src/basic/in-addr-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <netinet/in.h>
diff --git a/src/basic/io-util.c b/src/basic/io-util.c
index 460649deda..4d7405296b 100644
--- a/src/basic/io-util.c
+++ b/src/basic/io-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <limits.h>
@@ -291,7 +291,7 @@ int iovw_put(struct iovec_wrapper *iovw, void *data, size_t len) {
return -E2BIG;
if (!GREEDY_REALLOC(iovw->iovec, iovw->size_bytes, iovw->count + 1))
- return log_oom();
+ return -ENOMEM;
iovw->iovec[iovw->count++] = IOVEC_MAKE(data, len);
return 0;
@@ -303,7 +303,7 @@ int iovw_put_string_field(struct iovec_wrapper *iovw, const char *field, const c
x = strjoin(field, value);
if (!x)
- return log_oom();
+ return -ENOMEM;
r = iovw_put(iovw, x, strlen(x));
if (r >= 0)
diff --git a/src/basic/io-util.h b/src/basic/io-util.h
index 719e19e85d..d817714b05 100644
--- a/src/basic/io-util.h
+++ b/src/basic/io-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/basic/kbd-util.c b/src/basic/kbd-util.c
index 17d4022dbe..267803ec2c 100644
--- a/src/basic/kbd-util.c
+++ b/src/basic/kbd-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <ftw.h>
diff --git a/src/basic/kbd-util.h b/src/basic/kbd-util.h
index 9efd2c7052..6714aeb9e0 100644
--- a/src/basic/kbd-util.h
+++ b/src/basic/kbd-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/basic/khash.c b/src/basic/khash.c
index dbae418282..6a4d1dd594 100644
--- a/src/basic/khash.c
+++ b/src/basic/khash.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <linux/if_alg.h>
#include <stdbool.h>
@@ -248,8 +248,8 @@ int khash_put(khash *h, const void *buffer, size_t size) {
int khash_put_iovec(khash *h, const struct iovec *iovec, size_t n) {
struct msghdr mh = {
- mh.msg_iov = (struct iovec*) iovec,
- mh.msg_iovlen = n,
+ .msg_iov = (struct iovec*) iovec,
+ .msg_iovlen = n,
};
ssize_t k;
diff --git a/src/basic/khash.h b/src/basic/khash.h
index a3013b9d61..a343d306e9 100644
--- a/src/basic/khash.h
+++ b/src/basic/khash.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <inttypes.h>
diff --git a/src/basic/label.c b/src/basic/label.c
index 107028e068..1fc492fb31 100644
--- a/src/basic/label.c
+++ b/src/basic/label.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <sys/stat.h>
diff --git a/src/basic/label.h b/src/basic/label.h
index d99d824b4a..b5118d96d3 100644
--- a/src/basic/label.h
+++ b/src/basic/label.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/basic/limits-util.c b/src/basic/limits-util.c
index 9da767a570..259c311a67 100644
--- a/src/basic/limits-util.c
+++ b/src/basic/limits-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "cgroup-util.h"
diff --git a/src/basic/limits-util.h b/src/basic/limits-util.h
index 77895cbad4..d267fcf1d4 100644
--- a/src/basic/limits-util.h
+++ b/src/basic/limits-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <inttypes.h>
diff --git a/src/basic/list.h b/src/basic/list.h
index b62c374985..256b7187c2 100644
--- a/src/basic/list.h
+++ b/src/basic/list.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "macro.h"
diff --git a/src/basic/locale-util.c b/src/basic/locale-util.c
index 8e6a12b602..4c81cb9440 100644
--- a/src/basic/locale-util.c
+++ b/src/basic/locale-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/basic/locale-util.h b/src/basic/locale-util.h
index aa25e17f15..2d672e2f95 100644
--- a/src/basic/locale-util.h
+++ b/src/basic/locale-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <libintl.h>
diff --git a/src/basic/log.c b/src/basic/log.c
index 1d796c5180..d4054cf46a 100644
--- a/src/basic/log.c
+++ b/src/basic/log.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/basic/log.h b/src/basic/log.h
index ce8bb42ea1..a2aae16df2 100644
--- a/src/basic/log.h
+++ b/src/basic/log.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdarg.h>
diff --git a/src/basic/login-util.c b/src/basic/login-util.c
index 9313926d5a..044e8b7650 100644
--- a/src/basic/login-util.c
+++ b/src/basic/login-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "login-util.h"
#include "string-util.h"
diff --git a/src/basic/login-util.h b/src/basic/login-util.h
index e1e62e12b7..00a124dc9f 100644
--- a/src/basic/login-util.h
+++ b/src/basic/login-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/basic/macro.h b/src/basic/macro.h
index cffc5ec59c..2782553756 100644
--- a/src/basic/macro.h
+++ b/src/basic/macro.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <assert.h>
diff --git a/src/basic/memfd-util.c b/src/basic/memfd-util.c
index e06bdcb0a8..0b8ecea1b1 100644
--- a/src/basic/memfd-util.c
+++ b/src/basic/memfd-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <sys/stat.h>
diff --git a/src/basic/memfd-util.h b/src/basic/memfd-util.h
index 5ebb519931..8596c1a369 100644
--- a/src/basic/memfd-util.h
+++ b/src/basic/memfd-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <inttypes.h>
diff --git a/src/basic/memory-util.c b/src/basic/memory-util.c
index 5f327ef0d7..3338e355f7 100644
--- a/src/basic/memory-util.c
+++ b/src/basic/memory-util.c
@@ -1,3 +1,5 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
#include <unistd.h>
#include "memory-util.h"
diff --git a/src/basic/memory-util.h b/src/basic/memory-util.h
index 4f596cffb7..179edd247b 100644
--- a/src/basic/memory-util.h
+++ b/src/basic/memory-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <inttypes.h>
diff --git a/src/basic/mempool.c b/src/basic/mempool.c
index 22df42105b..9eedc20c4f 100644
--- a/src/basic/mempool.c
+++ b/src/basic/mempool.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdint.h>
#include <stdlib.h>
diff --git a/src/basic/mempool.h b/src/basic/mempool.h
index 0eecca0f92..0fe2f2789c 100644
--- a/src/basic/mempool.h
+++ b/src/basic/mempool.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/basic/meson.build b/src/basic/meson.build
index d83c1ae496..1183ea83ad 100644
--- a/src/basic/meson.build
+++ b/src/basic/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
basic_sources = files('''
MurmurHash2.c
diff --git a/src/basic/missing_audit.h b/src/basic/missing_audit.h
index b00d537be2..62e3c292f5 100644
--- a/src/basic/missing_audit.h
+++ b/src/basic/missing_audit.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <linux/audit.h>
diff --git a/src/basic/missing_capability.h b/src/basic/missing_capability.h
index 4d37618741..4cf31cb839 100644
--- a/src/basic/missing_capability.h
+++ b/src/basic/missing_capability.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <linux/capability.h>
diff --git a/src/basic/missing_drm.h b/src/basic/missing_drm.h
index a64f74efda..0dec591146 100644
--- a/src/basic/missing_drm.h
+++ b/src/basic/missing_drm.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#ifndef DRM_IOCTL_SET_MASTER
diff --git a/src/basic/missing_fcntl.h b/src/basic/missing_fcntl.h
index 5d1c6352f4..00937d2af0 100644
--- a/src/basic/missing_fcntl.h
+++ b/src/basic/missing_fcntl.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <fcntl.h>
diff --git a/src/basic/missing_fs.h b/src/basic/missing_fs.h
index c262a91812..79c1620e83 100644
--- a/src/basic/missing_fs.h
+++ b/src/basic/missing_fs.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
/* linux/fs.h */
diff --git a/src/basic/missing_input.h b/src/basic/missing_input.h
index b91ccb6485..6cf16ffb97 100644
--- a/src/basic/missing_input.h
+++ b/src/basic/missing_input.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <linux/input.h>
diff --git a/src/basic/missing_keyctl.h b/src/basic/missing_keyctl.h
index 7eb709586c..5680483bb4 100644
--- a/src/basic/missing_keyctl.h
+++ b/src/basic/missing_keyctl.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <linux/keyctl.h>
diff --git a/src/basic/missing_loop.h b/src/basic/missing_loop.h
index 5326777419..b22ebda9fd 100644
--- a/src/basic/missing_loop.h
+++ b/src/basic/missing_loop.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <linux/loop.h>
diff --git a/src/basic/missing_magic.h b/src/basic/missing_magic.h
index a05b5b5c3c..e7466cb6bc 100644
--- a/src/basic/missing_magic.h
+++ b/src/basic/missing_magic.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <linux/magic.h>
diff --git a/src/basic/missing_mman.h b/src/basic/missing_mman.h
index 7ff12f770b..4a109128d0 100644
--- a/src/basic/missing_mman.h
+++ b/src/basic/missing_mman.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <sys/mman.h>
diff --git a/src/basic/missing_network.h b/src/basic/missing_network.h
index a25a1480f0..f9db690d18 100644
--- a/src/basic/missing_network.h
+++ b/src/basic/missing_network.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
/* linux/in6.h or netinet/in.h */
diff --git a/src/basic/missing_prctl.h b/src/basic/missing_prctl.h
index f80cd17f34..ab851306ba 100644
--- a/src/basic/missing_prctl.h
+++ b/src/basic/missing_prctl.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <linux/prctl.h>
diff --git a/src/basic/missing_random.h b/src/basic/missing_random.h
index 17af87a3ae..443b913685 100644
--- a/src/basic/missing_random.h
+++ b/src/basic/missing_random.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#if USE_SYS_RANDOM_H
diff --git a/src/basic/missing_resource.h b/src/basic/missing_resource.h
index 22ba8abfc6..6e7676527b 100644
--- a/src/basic/missing_resource.h
+++ b/src/basic/missing_resource.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <sys/resource.h>
diff --git a/src/basic/missing_sched.h b/src/basic/missing_sched.h
index baa3913283..6a889f66d9 100644
--- a/src/basic/missing_sched.h
+++ b/src/basic/missing_sched.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <sched.h>
diff --git a/src/basic/missing_socket.h b/src/basic/missing_socket.h
index c4f33449a3..17bc1a5a01 100644
--- a/src/basic/missing_socket.h
+++ b/src/basic/missing_socket.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <sys/socket.h>
diff --git a/src/basic/missing_stat.h b/src/basic/missing_stat.h
index 7bdc8a7efa..372fdf90bd 100644
--- a/src/basic/missing_stat.h
+++ b/src/basic/missing_stat.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <linux/types.h>
diff --git a/src/basic/missing_stdlib.h b/src/basic/missing_stdlib.h
index 188a8d4406..8c76f93eb2 100644
--- a/src/basic/missing_stdlib.h
+++ b/src/basic/missing_stdlib.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdlib.h>
diff --git a/src/basic/missing_syscall.h b/src/basic/missing_syscall.h
index 01fec6f2f5..6f2a3589c0 100644
--- a/src/basic/missing_syscall.h
+++ b/src/basic/missing_syscall.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
/* Missing glibc definitions to access certain kernel APIs */
@@ -16,9 +16,23 @@
#endif
#if defined(__x86_64__) && defined(__ILP32__)
-#define systemd_SC_arch_bias(x) ((x) | /* __X32_SYSCALL_BIT */ 0x40000000)
+# define systemd_SC_arch_bias(x) ((x) | /* __X32_SYSCALL_BIT */ 0x40000000)
+#elif defined(__ia64__)
+# define systemd_SC_arch_bias(x) (1024 + (x))
+#elif defined __alpha__
+# define systemd_SC_arch_bias(x) (110 + (x))
+#elif defined _MIPS_SIM
+# if _MIPS_SIM == _MIPS_SIM_ABI32
+# define systemd_SC_arch_bias(x) (4000 + (x))
+# elif _MIPS_SIM == _MIPS_SIM_NABI32
+# define systemd_SC_arch_bias(x) (6000 + (x))
+# elif _MIPS_SIM == _MIPS_SIM_ABI64
+# define systemd_SC_arch_bias(x) (5000 + (x))
+# else
+# error "Unknown MIPS ABI"
+# endif
#else
-#define systemd_SC_arch_bias(x) (x)
+# define systemd_SC_arch_bias(x) (x)
#endif
#include "missing_keyctl.h"
@@ -51,13 +65,11 @@ static inline int missing_pivot_root(const char *new_root, const char *put_old)
# define systemd_NR_memfd_create 350
#elif defined _MIPS_SIM
# if _MIPS_SIM == _MIPS_SIM_ABI32
-# define systemd_NR_memfd_create 4354
-# endif
-# if _MIPS_SIM == _MIPS_SIM_NABI32
-# define systemd_NR_memfd_create 6318
-# endif
-# if _MIPS_SIM == _MIPS_SIM_ABI64
-# define systemd_NR_memfd_create 5314
+# define systemd_NR_memfd_create systemd_SC_arch_bias(354)
+# elif _MIPS_SIM == _MIPS_SIM_NABI32
+# define systemd_NR_memfd_create systemd_SC_arch_bias(318)
+# elif _MIPS_SIM == _MIPS_SIM_ABI64
+# define systemd_NR_memfd_create systemd_SC_arch_bias(314)
# endif
#elif defined __i386__
# define systemd_NR_memfd_create 356
@@ -105,7 +117,7 @@ static inline int missing_memfd_create(const char *name, unsigned int flags) {
#elif defined(__aarch64__)
# define systemd_NR_getrandom 278
#elif defined(__ia64__)
-# define systemd_NR_getrandom 1339
+# define systemd_NR_getrandom systemd_SC_arch_bias(318)
#elif defined(__m68k__)
# define systemd_NR_getrandom 352
#elif defined(__s390x__)
@@ -114,13 +126,11 @@ static inline int missing_memfd_create(const char *name, unsigned int flags) {
# define systemd_NR_getrandom 359
#elif defined _MIPS_SIM
# if _MIPS_SIM == _MIPS_SIM_ABI32
-# define systemd_NR_getrandom 4353
-# endif
-# if _MIPS_SIM == _MIPS_SIM_NABI32
-# define systemd_NR_getrandom 6317
-# endif
-# if _MIPS_SIM == _MIPS_SIM_ABI64
-# define systemd_NR_getrandom 5313
+# define systemd_NR_getrandom systemd_SC_arch_bias(353)
+# elif _MIPS_SIM == _MIPS_SIM_NABI32
+# define systemd_NR_getrandom systemd_SC_arch_bias(317)
+# elif _MIPS_SIM == _MIPS_SIM_ABI64
+# define systemd_NR_getrandom systemd_SC_arch_bias(313)
# endif
#elif defined(__arc__)
# define systemd_NR_getrandom 278
@@ -186,6 +196,14 @@ static inline pid_t missing_gettid(void) {
# define systemd_NR_name_to_handle_at 335
#elif defined(__arc__)
# define systemd_NR_name_to_handle_at 264
+#elif defined _MIPS_SIM
+# if _MIPS_SIM == _MIPS_SIM_ABI32
+# define systemd_NR_name_to_handle_at systemd_SC_arch_bias(339)
+# elif _MIPS_SIM == _MIPS_SIM_NABI32
+# define systemd_NR_name_to_handle_at systemd_SC_arch_bias(303)
+# elif _MIPS_SIM == _MIPS_SIM_ABI64
+# define systemd_NR_name_to_handle_at systemd_SC_arch_bias(298)
+# endif
#else
# warning "name_to_handle_at number is not defined"
#endif
@@ -239,6 +257,14 @@ static inline int missing_name_to_handle_at(int fd, const char *name, struct fil
# define systemd_NR_setns 339
#elif defined(__arc__)
# define systemd_NR_setns 268
+#elif defined _MIPS_SIM
+# if _MIPS_SIM == _MIPS_SIM_ABI32
+# define systemd_NR_setns systemd_SC_arch_bias(344)
+# elif _MIPS_SIM == _MIPS_SIM_NABI32
+# define systemd_NR_setns systemd_SC_arch_bias(308)
+# elif _MIPS_SIM == _MIPS_SIM_ABI64
+# define systemd_NR_setns systemd_SC_arch_bias(303)
+# endif
#else
# warning "setns() syscall number unknown for your architecture"
#endif
@@ -290,13 +316,11 @@ static inline pid_t raw_getpid(void) {
# define systemd_NR_renameat2 276
#elif defined _MIPS_SIM
# if _MIPS_SIM == _MIPS_SIM_ABI32
-# define systemd_NR_renameat2 4351
-# endif
-# if _MIPS_SIM == _MIPS_SIM_NABI32
-# define systemd_NR_renameat2 6315
-# endif
-# if _MIPS_SIM == _MIPS_SIM_ABI64
-# define systemd_NR_renameat2 5311
+# define systemd_NR_renameat2 systemd_SC_arch_bias(351)
+# elif _MIPS_SIM == _MIPS_SIM_NABI32
+# define systemd_NR_renameat2 systemd_SC_arch_bias(315)
+# elif _MIPS_SIM == _MIPS_SIM_ABI64
+# define systemd_NR_renameat2 systemd_SC_arch_bias(311)
# endif
#elif defined __i386__
# define systemd_NR_renameat2 353
@@ -405,6 +429,14 @@ static inline key_serial_t missing_request_key(const char *type, const char *des
# define systemd_NR_copy_file_range 379
#elif defined __arc__
# define systemd_NR_copy_file_range 285
+#elif defined _MIPS_SIM
+# if _MIPS_SIM == _MIPS_SIM_ABI32
+# define systemd_NR_copy_file_range systemd_SC_arch_bias(360)
+# elif _MIPS_SIM == _MIPS_SIM_NABI32
+# define systemd_NR_copy_file_range systemd_SC_arch_bias(324)
+# elif _MIPS_SIM == _MIPS_SIM_ABI64
+# define systemd_NR_copy_file_range systemd_SC_arch_bias(320)
+# endif
#else
# warning "copy_file_range() syscall number unknown for your architecture"
#endif
@@ -457,6 +489,14 @@ static inline ssize_t missing_copy_file_range(int fd_in, loff_t *off_in,
# define systemd_NR_bpf 351
#elif defined __tilegx__
# define systemd_NR_bpf 280
+#elif defined _MIPS_SIM
+# if _MIPS_SIM == _MIPS_SIM_ABI32
+# define systemd_NR_bpf systemd_SC_arch_bias(355)
+# elif _MIPS_SIM == _MIPS_SIM_NABI32
+# define systemd_NR_bpf systemd_SC_arch_bias(319)
+# elif _MIPS_SIM == _MIPS_SIM_ABI64
+# define systemd_NR_bpf systemd_SC_arch_bias(315)
+# endif
#else
# warning "bpf() syscall number unknown for your architecture"
#endif
@@ -507,13 +547,11 @@ static inline int missing_bpf(int cmd, union bpf_attr *attr, size_t size) {
# define systemd_NR_pkey_mprotect 384
# elif defined _MIPS_SIM
# if _MIPS_SIM == _MIPS_SIM_ABI32
-# define systemd_NR_pkey_mprotect 4363
-# endif
-# if _MIPS_SIM == _MIPS_SIM_NABI32
-# define systemd_NR_pkey_mprotect 6327
-# endif
-# if _MIPS_SIM == _MIPS_SIM_ABI64
-# define systemd_NR_pkey_mprotect 5323
+# define systemd_NR_pkey_mprotect systemd_SC_arch_bias(363)
+# elif _MIPS_SIM == _MIPS_SIM_NABI32
+# define systemd_NR_pkey_mprotect systemd_SC_arch_bias(327)
+# elif _MIPS_SIM == _MIPS_SIM_ABI64
+# define systemd_NR_pkey_mprotect systemd_SC_arch_bias(323)
# endif
# else
# warning "pkey_mprotect() syscall number unknown for your architecture"
@@ -550,6 +588,14 @@ assert_cc(__NR_pkey_mprotect == systemd_NR_pkey_mprotect);
# define systemd_NR_statx 360
#elif defined __x86_64__
# define systemd_NR_statx systemd_SC_arch_bias(332)
+#elif defined _MIPS_SIM
+# if _MIPS_SIM == _MIPS_SIM_ABI32
+# define systemd_NR_statx systemd_SC_arch_bias(366)
+# elif _MIPS_SIM == _MIPS_SIM_NABI32
+# define systemd_NR_statx systemd_SC_arch_bias(330)
+# elif _MIPS_SIM == _MIPS_SIM_ABI64
+# define systemd_NR_statx systemd_SC_arch_bias(326)
+# endif
#else
# warning "statx() syscall number unknown for your architecture"
#endif
@@ -634,23 +680,7 @@ static inline long missing_get_mempolicy(int *mode, unsigned long *nodemask,
/* ======================================================================= */
/* should be always defined, see kernel 39036cd2727395c3369b1051005da74059a85317 */
-#if defined __alpha__
-# define systemd_NR_pidfd_send_signal 534
-#elif defined _MIPS_SIM
-# if _MIPS_SIM == _MIPS_SIM_ABI32 /* o32 */
-# define systemd_NR_pidfd_send_signal (424 + 4000)
-# endif
-# if _MIPS_SIM == _MIPS_SIM_NABI32 /* n32 */
-# define systemd_NR_pidfd_send_signal (424 + 6000)
-# endif
-# if _MIPS_SIM == _MIPS_SIM_ABI64 /* n64 */
-# define systemd_NR_pidfd_send_signal (424 + 5000)
-# endif
-#elif defined __ia64__
-# define systemd_NR_pidfd_send_signal (424 + 1024)
-#else
-# define systemd_NR_pidfd_send_signal systemd_SC_arch_bias(424)
-#endif
+#define systemd_NR_pidfd_send_signal systemd_SC_arch_bias(424)
/* may be (invalid) negative number due to libseccomp, see PR 13319 */
#if defined __NR_pidfd_send_signal && __NR_pidfd_send_signal >= 0
@@ -678,23 +708,7 @@ static inline int missing_pidfd_send_signal(int fd, int sig, siginfo_t *info, un
#endif
/* should be always defined, see kernel 7615d9e1780e26e0178c93c55b73309a5dc093d7 */
-#if defined __alpha__
-# define systemd_NR_pidfd_open 544
-#elif defined _MIPS_SIM
-# if _MIPS_SIM == _MIPS_SIM_ABI32 /* o32 */
-# define systemd_NR_pidfd_open (434 + 4000)
-# endif
-# if _MIPS_SIM == _MIPS_SIM_NABI32 /* n32 */
-# define systemd_NR_pidfd_open (434 + 6000)
-# endif
-# if _MIPS_SIM == _MIPS_SIM_ABI64 /* n64 */
-# define systemd_NR_pidfd_open (434 + 5000)
-# endif
-#elif defined __ia64__
-# define systemd_NR_pidfd_open (434 + 1024)
-#else
-# define systemd_NR_pidfd_open systemd_SC_arch_bias(434)
-#endif
+#define systemd_NR_pidfd_open systemd_SC_arch_bias(434)
/* may be (invalid) negative number due to libseccomp, see PR 13319 */
#if defined __NR_pidfd_open && __NR_pidfd_open >= 0
diff --git a/src/basic/missing_timerfd.h b/src/basic/missing_timerfd.h
index 6b0404453a..dba3043d22 100644
--- a/src/basic/missing_timerfd.h
+++ b/src/basic/missing_timerfd.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <sys/timerfd.h>
diff --git a/src/basic/missing_type.h b/src/basic/missing_type.h
index bf8a6caa1b..f6233090a9 100644
--- a/src/basic/missing_type.h
+++ b/src/basic/missing_type.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <uchar.h>
diff --git a/src/basic/missing_xfs.h b/src/basic/missing_xfs.h
index 9eac76dd67..ba5fe81288 100644
--- a/src/basic/missing_xfs.h
+++ b/src/basic/missing_xfs.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
/* This is currently not exported in the public kernel headers, but the libxfs library code part of xfsprogs
diff --git a/src/basic/mkdir-label.c b/src/basic/mkdir-label.c
index e844a59806..9565117b92 100644
--- a/src/basic/mkdir-label.c
+++ b/src/basic/mkdir-label.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdio.h>
#include <sys/stat.h>
diff --git a/src/basic/mkdir.c b/src/basic/mkdir.c
index eea8f1c9aa..f91f8f7a08 100644
--- a/src/basic/mkdir.c
+++ b/src/basic/mkdir.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stdbool.h>
diff --git a/src/basic/mkdir.h b/src/basic/mkdir.h
index fc66a7d365..3c53d22db9 100644
--- a/src/basic/mkdir.h
+++ b/src/basic/mkdir.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <sys/types.h>
diff --git a/src/basic/mountpoint-util.c b/src/basic/mountpoint-util.c
index 681da74024..8bed96069f 100644
--- a/src/basic/mountpoint-util.c
+++ b/src/basic/mountpoint-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/basic/mountpoint-util.h b/src/basic/mountpoint-util.h
index ab4ed19394..aadb2123d9 100644
--- a/src/basic/mountpoint-util.h
+++ b/src/basic/mountpoint-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <fcntl.h>
diff --git a/src/basic/namespace-util.c b/src/basic/namespace-util.c
index b34c532604..833a18a204 100644
--- a/src/basic/namespace-util.c
+++ b/src/basic/namespace-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <sys/ioctl.h>
diff --git a/src/basic/namespace-util.h b/src/basic/namespace-util.h
index 99d9b977ed..7f7d066873 100644
--- a/src/basic/namespace-util.h
+++ b/src/basic/namespace-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <sys/types.h>
diff --git a/src/basic/nss-util.h b/src/basic/nss-util.h
index 29cf22676a..dfc0d3fb20 100644
--- a/src/basic/nss-util.h
+++ b/src/basic/nss-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <grp.h>
diff --git a/src/basic/nulstr-util.c b/src/basic/nulstr-util.c
index b12d020232..49fcbb0f03 100644
--- a/src/basic/nulstr-util.c
+++ b/src/basic/nulstr-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "nulstr-util.h"
#include "string-util.h"
diff --git a/src/basic/nulstr-util.h b/src/basic/nulstr-util.h
index 436b271f3c..ee9b632a64 100644
--- a/src/basic/nulstr-util.h
+++ b/src/basic/nulstr-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/basic/ordered-set.c b/src/basic/ordered-set.c
index 83098435b2..58fa8af1b7 100644
--- a/src/basic/ordered-set.c
+++ b/src/basic/ordered-set.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "fileio.h"
#include "ordered-set.h"
diff --git a/src/basic/ordered-set.h b/src/basic/ordered-set.h
index c942aafe81..baf8202088 100644
--- a/src/basic/ordered-set.h
+++ b/src/basic/ordered-set.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdio.h>
diff --git a/src/basic/parse-util.c b/src/basic/parse-util.c
index dca2ef9f92..5d4dafe3a5 100644
--- a/src/basic/parse-util.c
+++ b/src/basic/parse-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <inttypes.h>
diff --git a/src/basic/parse-util.h b/src/basic/parse-util.h
index f22a19c5c6..81478ed059 100644
--- a/src/basic/parse-util.h
+++ b/src/basic/parse-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <inttypes.h>
diff --git a/src/basic/path-lookup.c b/src/basic/path-lookup.c
index e763fd7993..96b82170d0 100644
--- a/src/basic/path-lookup.c
+++ b/src/basic/path-lookup.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stdio.h>
diff --git a/src/basic/path-lookup.h b/src/basic/path-lookup.h
index ee3d8102e0..088bb9b57c 100644
--- a/src/basic/path-lookup.h
+++ b/src/basic/path-lookup.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/basic/path-util.c b/src/basic/path-util.c
index 95c9d5863c..794599a172 100644
--- a/src/basic/path-util.c
+++ b/src/basic/path-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <limits.h>
diff --git a/src/basic/path-util.h b/src/basic/path-util.h
index ced0d2af40..d613709f0b 100644
--- a/src/basic/path-util.h
+++ b/src/basic/path-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <alloca.h>
diff --git a/src/basic/prioq.c b/src/basic/prioq.c
index 76b27fa0a8..559e5d124d 100644
--- a/src/basic/prioq.c
+++ b/src/basic/prioq.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/*
* Priority Queue
diff --git a/src/basic/prioq.h b/src/basic/prioq.h
index 1fb57bfa4c..951576c021 100644
--- a/src/basic/prioq.h
+++ b/src/basic/prioq.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/basic/proc-cmdline.c b/src/basic/proc-cmdline.c
index ba47ca5812..0b6fb137bd 100644
--- a/src/basic/proc-cmdline.c
+++ b/src/basic/proc-cmdline.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdbool.h>
#include <stddef.h>
diff --git a/src/basic/proc-cmdline.h b/src/basic/proc-cmdline.h
index 077d3a99fb..45f3a27f27 100644
--- a/src/basic/proc-cmdline.h
+++ b/src/basic/proc-cmdline.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/basic/process-util.c b/src/basic/process-util.c
index 80f13048c1..0851613fc9 100644
--- a/src/basic/process-util.c
+++ b/src/basic/process-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <ctype.h>
#include <errno.h>
diff --git a/src/basic/process-util.h b/src/basic/process-util.h
index 49bb74ac0f..6144f142c4 100644
--- a/src/basic/process-util.h
+++ b/src/basic/process-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <errno.h>
diff --git a/src/basic/procfs-util.c b/src/basic/procfs-util.c
index 38f9fa1212..ccab71f7d2 100644
--- a/src/basic/procfs-util.c
+++ b/src/basic/procfs-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
diff --git a/src/basic/procfs-util.h b/src/basic/procfs-util.h
index 5a44e9eff7..8258c9e3ea 100644
--- a/src/basic/procfs-util.h
+++ b/src/basic/procfs-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <inttypes.h>
diff --git a/src/basic/pthread-util.h b/src/basic/pthread-util.h
index dc3eaba436..113485d044 100644
--- a/src/basic/pthread-util.h
+++ b/src/basic/pthread-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <pthread.h>
diff --git a/src/basic/quota-util.c b/src/basic/quota-util.c
index 96ea9ee364..fbf8ee5064 100644
--- a/src/basic/quota-util.c
+++ b/src/basic/quota-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/quota.h>
diff --git a/src/basic/quota-util.h b/src/basic/quota-util.h
index ff99e342f9..a61bdcbae6 100644
--- a/src/basic/quota-util.h
+++ b/src/basic/quota-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <inttypes.h>
diff --git a/src/basic/random-util.c b/src/basic/random-util.c
index 2031262389..c8c34a2034 100644
--- a/src/basic/random-util.c
+++ b/src/basic/random-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#if defined(__i386__) || defined(__x86_64__)
#include <cpuid.h>
diff --git a/src/basic/random-util.h b/src/basic/random-util.h
index 7824ffaceb..f661fc093a 100644
--- a/src/basic/random-util.h
+++ b/src/basic/random-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/basic/ratelimit.c b/src/basic/ratelimit.c
index 2e94eed843..bae2ec3ffc 100644
--- a/src/basic/ratelimit.c
+++ b/src/basic/ratelimit.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/time.h>
@@ -19,7 +19,7 @@ bool ratelimit_below(RateLimit *r) {
ts = now(CLOCK_MONOTONIC);
if (r->begin <= 0 ||
- r->begin + r->interval < ts) {
+ ts - r->begin > r->interval) {
r->begin = ts;
/* Reset counter */
diff --git a/src/basic/ratelimit.h b/src/basic/ratelimit.h
index 9d409b04b3..ee1d17c0e7 100644
--- a/src/basic/ratelimit.h
+++ b/src/basic/ratelimit.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/basic/raw-clone.h b/src/basic/raw-clone.h
index b12dea2aef..becf42e70b 100644
--- a/src/basic/raw-clone.h
+++ b/src/basic/raw-clone.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
/***
diff --git a/src/basic/raw-reboot.h b/src/basic/raw-reboot.h
index 8ecefe9e21..e6bff300a5 100644
--- a/src/basic/raw-reboot.h
+++ b/src/basic/raw-reboot.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <linux/reboot.h>
diff --git a/src/basic/replace-var.c b/src/basic/replace-var.c
index 5b4737505c..01c26ce74c 100644
--- a/src/basic/replace-var.c
+++ b/src/basic/replace-var.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stddef.h>
diff --git a/src/basic/replace-var.h b/src/basic/replace-var.h
index e6a489feee..644d9dfce4 100644
--- a/src/basic/replace-var.h
+++ b/src/basic/replace-var.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
char *replace_var(const char *text, char *(*lookup)(const char *variable, void *userdata), void *userdata);
diff --git a/src/basic/rlimit-util.c b/src/basic/rlimit-util.c
index 2dc13eabc3..880976312c 100644
--- a/src/basic/rlimit-util.c
+++ b/src/basic/rlimit-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
diff --git a/src/basic/rlimit-util.h b/src/basic/rlimit-util.h
index d4fca2b855..59bc066798 100644
--- a/src/basic/rlimit-util.h
+++ b/src/basic/rlimit-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <sys/resource.h>
diff --git a/src/basic/rm-rf.c b/src/basic/rm-rf.c
index ab331cd677..b0d682f764 100644
--- a/src/basic/rm-rf.c
+++ b/src/basic/rm-rf.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/basic/rm-rf.h b/src/basic/rm-rf.h
index 0edf01ee1c..ec56232b5d 100644
--- a/src/basic/rm-rf.h
+++ b/src/basic/rm-rf.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <sys/stat.h>
diff --git a/src/basic/selinux-util.c b/src/basic/selinux-util.c
index 1791aeecde..4989f4f37c 100644
--- a/src/basic/selinux-util.c
+++ b/src/basic/selinux-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
@@ -133,6 +133,7 @@ static int open_label_db(void) {
int mac_selinux_init(void) {
#if HAVE_SELINUX
int r;
+ bool have_status_page = false;
if (initialized)
return 0;
@@ -140,9 +141,15 @@ int mac_selinux_init(void) {
if (!mac_selinux_use())
return 0;
- r = selinux_status_open(/* no netlink fallback */ 0);
- if (r < 0)
- return log_enforcing_errno(errno, "Failed to open SELinux status page: %m");
+ r = selinux_status_open(/* netlink fallback */ 1);
+ if (r < 0) {
+ if (!ERRNO_IS_PRIVILEGE(errno))
+ return log_enforcing_errno(errno, "Failed to open SELinux status page: %m");
+ log_warning_errno(errno, "selinux_status_open() with netlink fallback failed, not checking for policy reloads: %m");
+ } else if (r == 1)
+ log_warning("selinux_status_open() failed to open the status page, using the netlink fallback.");
+ else
+ have_status_page = true;
r = open_label_db();
if (r < 0) {
@@ -150,13 +157,14 @@ int mac_selinux_init(void) {
return r;
}
- /* save the current policyload sequence number, so `mac_selinux_maybe_reload()` does
- not trigger on first call without any actual change */
+ /* Save the current policyload sequence number, so mac_selinux_maybe_reload() does not trigger on
+ * first call without any actual change. */
last_policyload = selinux_status_policyload();
- /* now that the SELinux status page has been successfully opened,
- retrieve the enforcing status over it (to avoid system calls in `security_getenforce()`) */
- enforcing_status_func = selinux_status_getenforce;
+ if (have_status_page)
+ /* Now that the SELinux status page has been successfully opened, retrieve the enforcing
+ * status over it (to avoid system calls in security_getenforce()). */
+ enforcing_status_func = selinux_status_getenforce;
initialized = true;
#endif
diff --git a/src/basic/selinux-util.h b/src/basic/selinux-util.h
index 43d22b914f..1236d6efdf 100644
--- a/src/basic/selinux-util.h
+++ b/src/basic/selinux-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/basic/set.h b/src/basic/set.h
index 7749c18c45..20abc8f0dc 100644
--- a/src/basic/set.h
+++ b/src/basic/set.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "extract-word.h"
diff --git a/src/basic/sigbus.c b/src/basic/sigbus.c
index a065a45a8c..4c2e9ec33e 100644
--- a/src/basic/sigbus.c
+++ b/src/basic/sigbus.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <signal.h>
diff --git a/src/basic/sigbus.h b/src/basic/sigbus.h
index 459e19fcaa..a40b1a87aa 100644
--- a/src/basic/sigbus.h
+++ b/src/basic/sigbus.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
void sigbus_install(void);
diff --git a/src/basic/signal-util.c b/src/basic/signal-util.c
index cb59f6ca0f..63b833b218 100644
--- a/src/basic/signal-util.c
+++ b/src/basic/signal-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stdarg.h>
@@ -49,16 +49,7 @@ static int sigaction_many_ap(const struct sigaction *sa, int sig, va_list ap) {
int r = 0;
/* negative signal ends the list. 0 signal is skipped. */
-
- if (sig < 0)
- return 0;
-
- if (sig > 0) {
- if (sigaction(sig, sa, NULL) < 0)
- r = -errno;
- }
-
- while ((sig = va_arg(ap, int)) >= 0) {
+ for (; sig >= 0; sig = va_arg(ap, int)) {
if (sig == 0)
continue;
diff --git a/src/basic/signal-util.h b/src/basic/signal-util.h
index 3909ee341d..bdd39d429d 100644
--- a/src/basic/signal-util.h
+++ b/src/basic/signal-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <signal.h>
diff --git a/src/basic/siphash24.c b/src/basic/siphash24.c
index 61180819b1..7c61eb145d 100644
--- a/src/basic/siphash24.c
+++ b/src/basic/siphash24.c
@@ -1,3 +1,5 @@
+/* SPDX-License-Identifier: CC0-1.0 */
+
/*
SipHash reference C implementation
@@ -10,7 +12,7 @@
worldwide. This software is distributed without any warranty.
You should have received a copy of the CC0 Public Domain Dedication along with
- this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
+ this software. If not, see <https://creativecommons.org/publicdomain/zero/1.0/>.
(Minimal changes made by Lennart Poettering, to make clean for inclusion in systemd)
(Refactored by Tom Gundersen to split up in several functions and follow systemd
diff --git a/src/basic/siphash24.h b/src/basic/siphash24.h
index fe43256882..90a6de00e4 100644
--- a/src/basic/siphash24.h
+++ b/src/basic/siphash24.h
@@ -1,3 +1,5 @@
+/* SPDX-License-Identifier: CC0-1.0 */
+
#pragma once
#include <inttypes.h>
diff --git a/src/basic/smack-util.c b/src/basic/smack-util.c
index 7bb0746b6c..3362ee3924 100644
--- a/src/basic/smack-util.c
+++ b/src/basic/smack-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2013 Intel Corporation
diff --git a/src/basic/smack-util.h b/src/basic/smack-util.h
index df2ce37071..d0b2352428 100644
--- a/src/basic/smack-util.h
+++ b/src/basic/smack-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
/***
diff --git a/src/basic/socket-label.c b/src/basic/socket-label.c
index 718a6953e5..ea78762e65 100644
--- a/src/basic/socket-label.c
+++ b/src/basic/socket-label.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <netinet/in.h>
diff --git a/src/basic/socket-util.c b/src/basic/socket-util.c
index 6f57b2a3c4..48d0718d5d 100644
--- a/src/basic/socket-util.c
+++ b/src/basic/socket-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <arpa/inet.h>
#include <errno.h>
diff --git a/src/basic/socket-util.h b/src/basic/socket-util.h
index c36f90f75f..9f7928040d 100644
--- a/src/basic/socket-util.h
+++ b/src/basic/socket-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <inttypes.h>
diff --git a/src/basic/sort-util.c b/src/basic/sort-util.c
index 5cf0d1d49b..92d7b8588d 100644
--- a/src/basic/sort-util.c
+++ b/src/basic/sort-util.c
@@ -1,3 +1,5 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
#include "sort-util.h"
#include "alloc-util.h"
diff --git a/src/basic/sort-util.h b/src/basic/sort-util.h
index a8dc3bb6ed..1d194a1f04 100644
--- a/src/basic/sort-util.h
+++ b/src/basic/sort-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdlib.h>
diff --git a/src/basic/special.h b/src/basic/special.h
index 19ee30cd41..d55b3289de 100644
--- a/src/basic/special.h
+++ b/src/basic/special.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#define SPECIAL_DEFAULT_TARGET "default.target"
@@ -107,3 +107,8 @@
/* The root directory. */
#define SPECIAL_ROOT_MOUNT "-.mount"
+
+/* Special slices valid for the user instance */
+#define SPECIAL_SESSION_SLICE "session.slice"
+#define SPECIAL_APP_SLICE "app.slice"
+#define SPECIAL_BACKGROUND_SLICE "background.slice"
diff --git a/src/basic/stat-util.c b/src/basic/stat-util.c
index 574815bc43..41c92e69de 100644
--- a/src/basic/stat-util.c
+++ b/src/basic/stat-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
@@ -408,7 +408,8 @@ bool stat_inode_unmodified(const struct stat *a, const struct stat *b) {
return a && b &&
(a->st_mode & S_IFMT) != 0 && /* We use the check for .st_mode if the structure was ever initialized */
((a->st_mode ^ b->st_mode) & S_IFMT) == 0 && /* same inode type */
- a->st_mtime == b->st_mtime &&
+ a->st_mtim.tv_sec == b->st_mtim.tv_sec &&
+ a->st_mtim.tv_nsec == b->st_mtim.tv_nsec &&
(!S_ISREG(a->st_mode) || a->st_size == b->st_size) && /* if regular file, compare file size */
a->st_dev == b->st_dev &&
a->st_ino == b->st_ino &&
diff --git a/src/basic/stat-util.h b/src/basic/stat-util.h
index 26ecd635f1..a566114f7c 100644
--- a/src/basic/stat-util.h
+++ b/src/basic/stat-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <fcntl.h>
diff --git a/src/basic/static-destruct.h b/src/basic/static-destruct.h
index 8fbc07c587..0f961328ee 100644
--- a/src/basic/static-destruct.h
+++ b/src/basic/static-destruct.h
@@ -1,3 +1,5 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
#pragma once
#include "alloc-util.h"
diff --git a/src/basic/stdio-util.h b/src/basic/stdio-util.h
index c3b9448d4f..6dc1e72312 100644
--- a/src/basic/stdio-util.h
+++ b/src/basic/stdio-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <printf.h>
diff --git a/src/basic/strbuf.c b/src/basic/strbuf.c
index 769b22aba0..aee6647e35 100644
--- a/src/basic/strbuf.c
+++ b/src/basic/strbuf.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stdlib.h>
diff --git a/src/basic/strbuf.h b/src/basic/strbuf.h
index a36944ad39..82758d721b 100644
--- a/src/basic/strbuf.h
+++ b/src/basic/strbuf.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stddef.h>
diff --git a/src/basic/string-table.c b/src/basic/string-table.c
index 0168cff886..116021df82 100644
--- a/src/basic/string-table.c
+++ b/src/basic/string-table.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "string-table.h"
#include "string-util.h"
diff --git a/src/basic/string-table.h b/src/basic/string-table.h
index 96924778f5..b6b3611ace 100644
--- a/src/basic/string-table.h
+++ b/src/basic/string-table.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
diff --git a/src/basic/string-util.c b/src/basic/string-util.c
index ab725d0dab..7ab460faa5 100644
--- a/src/basic/string-util.c
+++ b/src/basic/string-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stdarg.h>
@@ -145,57 +145,32 @@ char *strnappend(const char *s, const char *suffix, size_t b) {
char *strjoin_real(const char *x, ...) {
va_list ap;
- size_t l;
+ size_t l = 1;
char *r, *p;
va_start(ap, x);
+ for (const char *t = x; t; t = va_arg(ap, const char *)) {
+ size_t n;
- if (x) {
- l = strlen(x);
-
- for (;;) {
- const char *t;
- size_t n;
-
- t = va_arg(ap, const char *);
- if (!t)
- break;
-
- n = strlen(t);
- if (n > ((size_t) -1) - l) {
- va_end(ap);
- return NULL;
- }
-
- l += n;
+ n = strlen(t);
+ if (n > SIZE_MAX - l) {
+ va_end(ap);
+ return NULL;
}
- } else
- l = 0;
-
+ l += n;
+ }
va_end(ap);
- r = new(char, l+1);
+ p = r = new(char, l);
if (!r)
return NULL;
- if (x) {
- p = stpcpy(r, x);
-
- va_start(ap, x);
-
- for (;;) {
- const char *t;
-
- t = va_arg(ap, const char *);
- if (!t)
- break;
-
- p = stpcpy(p, t);
- }
+ va_start(ap, x);
+ for (const char *t = x; t; t = va_arg(ap, const char *))
+ p = stpcpy(p, t);
+ va_end(ap);
- va_end(ap);
- } else
- r[0] = 0;
+ *p = 0;
return r;
}
diff --git a/src/basic/string-util.h b/src/basic/string-util.h
index bad384a693..fdd3ce7363 100644
--- a/src/basic/string-util.h
+++ b/src/basic/string-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/basic/strv.c b/src/basic/strv.c
index c5e6dd5f21..492dfe4002 100644
--- a/src/basic/strv.c
+++ b/src/basic/strv.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fnmatch.h>
@@ -123,7 +123,6 @@ size_t strv_length(char * const *l) {
}
char **strv_new_ap(const char *x, va_list ap) {
- const char *s;
_cleanup_strv_free_ char **a = NULL;
size_t n = 0, i = 0;
va_list aq;
@@ -133,43 +132,28 @@ char **strv_new_ap(const char *x, va_list ap) {
* STRV_IFNOTNULL() macro to include possibly NULL strings in
* the string list. */
- if (x) {
- n = x == STRV_IGNORE ? 0 : 1;
-
- va_copy(aq, ap);
- while ((s = va_arg(aq, const char*))) {
- if (s == STRV_IGNORE)
- continue;
-
- n++;
- }
+ va_copy(aq, ap);
+ for (const char *s = x; s; s = va_arg(aq, const char*)) {
+ if (s == STRV_IGNORE)
+ continue;
- va_end(aq);
+ n++;
}
+ va_end(aq);
a = new(char*, n+1);
if (!a)
return NULL;
- if (x) {
- if (x != STRV_IGNORE) {
- a[i] = strdup(x);
- if (!a[i])
- return NULL;
- i++;
- }
-
- while ((s = va_arg(ap, const char*))) {
-
- if (s == STRV_IGNORE)
- continue;
+ for (const char *s = x; s; s = va_arg(ap, const char*)) {
+ if (s == STRV_IGNORE)
+ continue;
- a[i] = strdup(s);
- if (!a[i])
- return NULL;
+ a[i] = strdup(s);
+ if (!a[i])
+ return NULL;
- i++;
- }
+ i++;
}
a[i] = NULL;
diff --git a/src/basic/strv.h b/src/basic/strv.h
index a85c289d73..6b3e8e7f86 100644
--- a/src/basic/strv.h
+++ b/src/basic/strv.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <fnmatch.h>
diff --git a/src/basic/strxcpyx.c b/src/basic/strxcpyx.c
index ef6d3fa324..dbbf7d08d2 100644
--- a/src/basic/strxcpyx.c
+++ b/src/basic/strxcpyx.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/*
* Concatenates/copies strings. In any case, terminates in all cases
diff --git a/src/basic/strxcpyx.h b/src/basic/strxcpyx.h
index 9b66841246..cdef492db1 100644
--- a/src/basic/strxcpyx.h
+++ b/src/basic/strxcpyx.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stddef.h>
diff --git a/src/basic/syslog-util.c b/src/basic/syslog-util.c
index caeba46db4..4eb9eba97c 100644
--- a/src/basic/syslog-util.c
+++ b/src/basic/syslog-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <syslog.h>
diff --git a/src/basic/syslog-util.h b/src/basic/syslog-util.h
index 998641fa01..d7aa97fb7d 100644
--- a/src/basic/syslog-util.h
+++ b/src/basic/syslog-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/basic/terminal-util.c b/src/basic/terminal-util.c
index ac83688531..e00e9e8751 100644
--- a/src/basic/terminal-util.c
+++ b/src/basic/terminal-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/basic/terminal-util.h b/src/basic/terminal-util.h
index 42a129c7ac..5cb1e138f3 100644
--- a/src/basic/terminal-util.h
+++ b/src/basic/terminal-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdarg.h>
diff --git a/src/basic/time-util.c b/src/basic/time-util.c
index 7fa3b48623..5318d6378d 100644
--- a/src/basic/time-util.c
+++ b/src/basic/time-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <ctype.h>
#include <errno.h>
diff --git a/src/basic/time-util.h b/src/basic/time-util.h
index 6feda5e155..89ee8b4a96 100644
--- a/src/basic/time-util.h
+++ b/src/basic/time-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <inttypes.h>
diff --git a/src/basic/tmpfile-util.c b/src/basic/tmpfile-util.c
index a49f7eee70..49c343773c 100644
--- a/src/basic/tmpfile-util.c
+++ b/src/basic/tmpfile-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/mman.h>
diff --git a/src/basic/tmpfile-util.h b/src/basic/tmpfile-util.h
index 802c85d6d9..45255fc062 100644
--- a/src/basic/tmpfile-util.h
+++ b/src/basic/tmpfile-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdio.h>
diff --git a/src/basic/umask-util.h b/src/basic/umask-util.h
index cad745170e..bd7c2bdb8c 100644
--- a/src/basic/umask-util.h
+++ b/src/basic/umask-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/basic/unaligned.h b/src/basic/unaligned.h
index 00c17f8769..4100be0803 100644
--- a/src/basic/unaligned.h
+++ b/src/basic/unaligned.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <endian.h>
diff --git a/src/basic/unit-def.c b/src/basic/unit-def.c
index 94ec1f3d19..145399c963 100644
--- a/src/basic/unit-def.c
+++ b/src/basic/unit-def.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "bus-label.h"
diff --git a/src/basic/unit-def.h b/src/basic/unit-def.h
index 1fab6c78ab..8535fbe062 100644
--- a/src/basic/unit-def.h
+++ b/src/basic/unit-def.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/basic/unit-name.c b/src/basic/unit-name.c
index 43d8b3477e..c1529bbeed 100644
--- a/src/basic/unit-name.c
+++ b/src/basic/unit-name.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stddef.h>
diff --git a/src/basic/unit-name.h b/src/basic/unit-name.h
index 1cd33396d8..c25672fad2 100644
--- a/src/basic/unit-name.h
+++ b/src/basic/unit-name.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/basic/user-util.c b/src/basic/user-util.c
index 0e96a75797..933a398e73 100644
--- a/src/basic/user-util.c
+++ b/src/basic/user-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/basic/user-util.h b/src/basic/user-util.h
index 13e2c99e6c..20ff415e2e 100644
--- a/src/basic/user-util.h
+++ b/src/basic/user-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <grp.h>
diff --git a/src/basic/utf8.c b/src/basic/utf8.c
index f0233397ef..59663c0350 100644
--- a/src/basic/utf8.c
+++ b/src/basic/utf8.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/* Parts of this file are based on the GLIB utf8 validation functions. The
* original license text follows. */
diff --git a/src/basic/utf8.h b/src/basic/utf8.h
index f315ea0f1e..a6ea942c62 100644
--- a/src/basic/utf8.h
+++ b/src/basic/utf8.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/basic/util.c b/src/basic/util.c
index 2b3b3918a3..f98ecf3858 100644
--- a/src/basic/util.c
+++ b/src/basic/util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/basic/util.h b/src/basic/util.h
index 6fc7480fcb..942d773ff1 100644
--- a/src/basic/util.h
+++ b/src/basic/util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdint.h>
diff --git a/src/basic/virt.c b/src/basic/virt.c
index bb908847f5..1b90f4b008 100644
--- a/src/basic/virt.c
+++ b/src/basic/virt.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#if defined(__i386__) || defined(__x86_64__)
#include <cpuid.h>
diff --git a/src/basic/virt.h b/src/basic/virt.h
index 2f7f7203d2..42d63d5135 100644
--- a/src/basic/virt.h
+++ b/src/basic/virt.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/basic/xattr-util.c b/src/basic/xattr-util.c
index fe0735ed3d..b9a0dc54c5 100644
--- a/src/basic/xattr-util.c
+++ b/src/basic/xattr-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/basic/xattr-util.h b/src/basic/xattr-util.h
index a69e913b7f..560e34babd 100644
--- a/src/basic/xattr-util.h
+++ b/src/basic/xattr-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/binfmt/binfmt.c b/src/binfmt/binfmt.c
index 06aee22dc0..43ed2f385b 100644
--- a/src/binfmt/binfmt.c
+++ b/src/binfmt/binfmt.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <getopt.h>
diff --git a/src/boot/bless-boot-generator.c b/src/boot/bless-boot-generator.c
index c59d8aed90..001c85a238 100644
--- a/src/boot/bless-boot-generator.c
+++ b/src/boot/bless-boot-generator.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <sys/stat.h>
diff --git a/src/boot/bless-boot.c b/src/boot/bless-boot.c
index 0824266a80..cd34f88bb9 100644
--- a/src/boot/bless-boot.c
+++ b/src/boot/bless-boot.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <getopt.h>
#include <stdlib.h>
diff --git a/src/boot/boot-check-no-failures.c b/src/boot/boot-check-no-failures.c
index 038ce29535..92f3cd4ed0 100644
--- a/src/boot/boot-check-no-failures.c
+++ b/src/boot/boot-check-no-failures.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <getopt.h>
diff --git a/src/boot/bootctl.c b/src/boot/bootctl.c
index bb8c7398f0..511b0105f3 100644
--- a/src/boot/bootctl.c
+++ b/src/boot/bootctl.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <ctype.h>
#include <errno.h>
diff --git a/src/boot/efi/boot.c b/src/boot/efi/boot.c
index 5189d86d1a..938e5645f9 100644
--- a/src/boot/efi/boot.c
+++ b/src/boot/efi/boot.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <efi.h>
#include <efigpt.h>
diff --git a/src/boot/efi/console.c b/src/boot/efi/console.c
index 7f6bad1538..2dd4543d51 100644
--- a/src/boot/efi/console.c
+++ b/src/boot/efi/console.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <efi.h>
#include <efilib.h>
diff --git a/src/boot/efi/console.h b/src/boot/efi/console.h
index b9ed6c70b3..41df3a406e 100644
--- a/src/boot/efi/console.h
+++ b/src/boot/efi/console.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#define EFI_SHIFT_STATE_VALID 0x80000000
diff --git a/src/boot/efi/crc32.c b/src/boot/efi/crc32.c
index 46b9aeea90..5dfd3db265 100644
--- a/src/boot/efi/crc32.c
+++ b/src/boot/efi/crc32.c
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: LicenseRef-crc32-no-restriction */
/* This is copied from util-linux, which in turn copied in the version from Gary S. Brown */
/*
diff --git a/src/boot/efi/crc32.h b/src/boot/efi/crc32.h
index 64150ee948..3af543b84e 100644
--- a/src/boot/efi/crc32.h
+++ b/src/boot/efi/crc32.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LicenseRef-crc32-no-restriction */
#pragma once
#include <efi.h>
diff --git a/src/boot/efi/disk.c b/src/boot/efi/disk.c
index 49ee81b4d7..89508f86de 100644
--- a/src/boot/efi/disk.c
+++ b/src/boot/efi/disk.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <efi.h>
#include <efilib.h>
diff --git a/src/boot/efi/disk.h b/src/boot/efi/disk.h
index 41c4cce434..551a9ae639 100644
--- a/src/boot/efi/disk.h
+++ b/src/boot/efi/disk.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
EFI_STATUS disk_get_part_uuid(EFI_HANDLE *handle, CHAR16 uuid[static 37]);
diff --git a/src/boot/efi/graphics.c b/src/boot/efi/graphics.c
index 9b5003a85d..f36ecb35b5 100644
--- a/src/boot/efi/graphics.c
+++ b/src/boot/efi/graphics.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/*
* Copyright © 2013 Intel Corporation
* Authored by Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
diff --git a/src/boot/efi/graphics.h b/src/boot/efi/graphics.h
index 809e878d16..116aae28c5 100644
--- a/src/boot/efi/graphics.h
+++ b/src/boot/efi/graphics.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/*
* Copyright © 2013 Intel Corporation
* Authored by Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
diff --git a/src/boot/efi/linux.c b/src/boot/efi/linux.c
index 00a3551e09..4d44671315 100644
--- a/src/boot/efi/linux.c
+++ b/src/boot/efi/linux.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <efi.h>
#include <efilib.h>
diff --git a/src/boot/efi/linux.h b/src/boot/efi/linux.h
index ec655ce647..b92c27c8b9 100644
--- a/src/boot/efi/linux.h
+++ b/src/boot/efi/linux.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#define SETUP_MAGIC 0x53726448 /* "HdrS" */
diff --git a/src/boot/efi/loader-features.h b/src/boot/efi/loader-features.h
index b3a1f79dfd..f07dacb859 100644
--- a/src/boot/efi/loader-features.h
+++ b/src/boot/efi/loader-features.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#ifndef UINT64_C
diff --git a/src/boot/efi/measure.c b/src/boot/efi/measure.c
index 4d87117b00..ff876a6c5b 100644
--- a/src/boot/efi/measure.c
+++ b/src/boot/efi/measure.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#if ENABLE_TPM
diff --git a/src/boot/efi/measure.h b/src/boot/efi/measure.h
index ebb6406eca..19e148d922 100644
--- a/src/boot/efi/measure.h
+++ b/src/boot/efi/measure.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
EFI_STATUS tpm_log_event(UINT32 pcrindex, const EFI_PHYSICAL_ADDRESS buffer, UINTN buffer_size, const CHAR16 *description);
diff --git a/src/boot/efi/meson.build b/src/boot/efi/meson.build
index ed81cefcd5..c853f8e951 100644
--- a/src/boot/efi/meson.build
+++ b/src/boot/efi/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
efi_headers = files('''
console.h
diff --git a/src/boot/efi/missing_efi.h b/src/boot/efi/missing_efi.h
index cf301a1342..1b838af2a4 100644
--- a/src/boot/efi/missing_efi.h
+++ b/src/boot/efi/missing_efi.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <efi.h>
diff --git a/src/boot/efi/pe.c b/src/boot/efi/pe.c
index 68f50aec41..f99ecd0eda 100644
--- a/src/boot/efi/pe.c
+++ b/src/boot/efi/pe.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <efi.h>
#include <efilib.h>
diff --git a/src/boot/efi/pe.h b/src/boot/efi/pe.h
index bfbb8d9baf..3e97d43f66 100644
--- a/src/boot/efi/pe.h
+++ b/src/boot/efi/pe.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
EFI_STATUS pe_memory_locate_sections(CHAR8 *base,
diff --git a/src/boot/efi/random-seed.c b/src/boot/efi/random-seed.c
index cc747993b8..eda9260ae0 100644
--- a/src/boot/efi/random-seed.c
+++ b/src/boot/efi/random-seed.c
@@ -1,3 +1,5 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
#include <efi.h>
#include <efilib.h>
diff --git a/src/boot/efi/random-seed.h b/src/boot/efi/random-seed.h
index 0f750716fd..0f443e6a87 100644
--- a/src/boot/efi/random-seed.h
+++ b/src/boot/efi/random-seed.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <efi.h>
diff --git a/src/boot/efi/sha256.c b/src/boot/efi/sha256.c
index 40da636dc7..f23066d0ac 100644
--- a/src/boot/efi/sha256.c
+++ b/src/boot/efi/sha256.c
@@ -1,3 +1,5 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
/* Stolen from glibc and converted to UEFI style. In glibc it comes with the following copyright blurb: */
/* Functions to compute SHA256 message digest of files or memory blocks.
diff --git a/src/boot/efi/sha256.h b/src/boot/efi/sha256.h
index ca9f285937..464be59c25 100644
--- a/src/boot/efi/sha256.h
+++ b/src/boot/efi/sha256.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <efi.h>
diff --git a/src/boot/efi/shim.c b/src/boot/efi/shim.c
index 8db27547cc..3dc10089c6 100644
--- a/src/boot/efi/shim.c
+++ b/src/boot/efi/shim.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/*
* Port to systemd-boot
* Copyright © 2017 Max Resch <resch.max@gmail.com>
diff --git a/src/boot/efi/shim.h b/src/boot/efi/shim.h
index 209c9d4cf0..72ecf2ed97 100644
--- a/src/boot/efi/shim.h
+++ b/src/boot/efi/shim.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/*
* Port to systemd-boot
* Copyright © 2017 Max Resch <resch.max@gmail.com>
diff --git a/src/boot/efi/splash.c b/src/boot/efi/splash.c
index ba4a2c5da0..e166fec57a 100644
--- a/src/boot/efi/splash.c
+++ b/src/boot/efi/splash.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <efi.h>
#include <efilib.h>
diff --git a/src/boot/efi/splash.h b/src/boot/efi/splash.h
index 8928b069a2..0ba45a0370 100644
--- a/src/boot/efi/splash.h
+++ b/src/boot/efi/splash.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
EFI_STATUS graphics_splash(UINT8 *content, UINTN len, const EFI_GRAPHICS_OUTPUT_BLT_PIXEL *background);
diff --git a/src/boot/efi/stub.c b/src/boot/efi/stub.c
index 02aab1ec7f..a09f47c711 100644
--- a/src/boot/efi/stub.c
+++ b/src/boot/efi/stub.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <efi.h>
#include <efilib.h>
diff --git a/src/boot/efi/util.c b/src/boot/efi/util.c
index b44f051d95..2712c2d3f0 100644
--- a/src/boot/efi/util.c
+++ b/src/boot/efi/util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <efi.h>
#include <efilib.h>
diff --git a/src/boot/efi/util.h b/src/boot/efi/util.h
index b13f22476c..916519cdf8 100644
--- a/src/boot/efi/util.h
+++ b/src/boot/efi/util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <efi.h>
diff --git a/src/busctl/busctl-introspect.c b/src/busctl/busctl-introspect.c
index 7016c90ddc..7a5d57f8c8 100644
--- a/src/busctl/busctl-introspect.c
+++ b/src/busctl/busctl-introspect.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "sd-bus.h"
diff --git a/src/busctl/busctl-introspect.h b/src/busctl/busctl-introspect.h
index b17800e83e..1a045bea1d 100644
--- a/src/busctl/busctl-introspect.h
+++ b/src/busctl/busctl-introspect.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/busctl/busctl.c b/src/busctl/busctl.c
index 446e474112..06a15ddd80 100644
--- a/src/busctl/busctl.c
+++ b/src/busctl/busctl.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <getopt.h>
diff --git a/src/cgls/cgls.c b/src/cgls/cgls.c
index e09adb8b5b..693b5047f2 100644
--- a/src/cgls/cgls.c
+++ b/src/cgls/cgls.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <getopt.h>
diff --git a/src/cgroups-agent/cgroups-agent.c b/src/cgroups-agent/cgroups-agent.c
index ace7d6c5ae..eeb4ba80f5 100644
--- a/src/cgroups-agent/cgroups-agent.c
+++ b/src/cgroups-agent/cgroups-agent.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdlib.h>
diff --git a/src/cgtop/cgtop.c b/src/cgtop/cgtop.c
index 0efaf3873e..e9e7ed2734 100644
--- a/src/cgtop/cgtop.c
+++ b/src/cgtop/cgtop.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <getopt.h>
diff --git a/src/core/all-units.h b/src/core/all-units.h
index 23c1999b69..fad814bf20 100644
--- a/src/core/all-units.h
+++ b/src/core/all-units.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "unit.h"
diff --git a/src/core/apparmor-setup.c b/src/core/apparmor-setup.c
index 6cba841a6c..e856f5c183 100644
--- a/src/core/apparmor-setup.c
+++ b/src/core/apparmor-setup.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#if HAVE_APPARMOR
diff --git a/src/core/apparmor-setup.h b/src/core/apparmor-setup.h
index 100680a595..f3b73825ce 100644
--- a/src/core/apparmor-setup.h
+++ b/src/core/apparmor-setup.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int mac_apparmor_setup(void);
diff --git a/src/core/audit-fd.c b/src/core/audit-fd.c
index fdef433923..097bea39b3 100644
--- a/src/core/audit-fd.c
+++ b/src/core/audit-fd.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
diff --git a/src/core/audit-fd.h b/src/core/audit-fd.h
index 8c1e471b96..5cdf61e52d 100644
--- a/src/core/audit-fd.h
+++ b/src/core/audit-fd.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int get_audit_fd(void);
diff --git a/src/core/automount.c b/src/core/automount.c
index 16b9104171..a84cddbdbd 100644
--- a/src/core/automount.c
+++ b/src/core/automount.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
@@ -971,6 +971,12 @@ static int automount_dispatch_io(sd_event_source *s, int fd, uint32_t events, vo
assert(a);
assert(fd == a->pipe_fd);
+ if (events & (EPOLLHUP|EPOLLERR)) {
+ log_unit_error(UNIT(a), "Got hangup/error on autofs pipe from kernel. Likely our automount point has been unmounted by someone or something else?");
+ automount_enter_dead(a, AUTOMOUNT_FAILURE_UNMOUNTED);
+ return 0;
+ }
+
if (events != EPOLLIN) {
log_unit_error(UNIT(a), "Got invalid poll event %"PRIu32" on pipe (fd=%d)", events, fd);
goto fail;
@@ -1070,6 +1076,7 @@ static const char* const automount_result_table[_AUTOMOUNT_RESULT_MAX] = {
[AUTOMOUNT_FAILURE_RESOURCES] = "resources",
[AUTOMOUNT_FAILURE_START_LIMIT_HIT] = "start-limit-hit",
[AUTOMOUNT_FAILURE_MOUNT_START_LIMIT_HIT] = "mount-start-limit-hit",
+ [AUTOMOUNT_FAILURE_UNMOUNTED] = "unmounted",
};
DEFINE_STRING_TABLE_LOOKUP(automount_result, AutomountResult);
diff --git a/src/core/automount.h b/src/core/automount.h
index 21dd1c0774..fe668d9774 100644
--- a/src/core/automount.h
+++ b/src/core/automount.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
typedef struct Automount Automount;
@@ -8,6 +8,7 @@ typedef struct Automount Automount;
typedef enum AutomountResult {
AUTOMOUNT_SUCCESS,
AUTOMOUNT_FAILURE_RESOURCES,
+ AUTOMOUNT_FAILURE_UNMOUNTED,
AUTOMOUNT_FAILURE_START_LIMIT_HIT,
AUTOMOUNT_FAILURE_MOUNT_START_LIMIT_HIT,
_AUTOMOUNT_RESULT_MAX,
diff --git a/src/core/bpf-devices.c b/src/core/bpf-devices.c
index 34320e88fb..1ad7ade306 100644
--- a/src/core/bpf-devices.c
+++ b/src/core/bpf-devices.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fnmatch.h>
#include <linux/bpf_insn.h>
diff --git a/src/core/bpf-devices.h b/src/core/bpf-devices.h
index e2a08016e3..19b4d392cc 100644
--- a/src/core/bpf-devices.h
+++ b/src/core/bpf-devices.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <inttypes.h>
diff --git a/src/core/bpf-firewall.c b/src/core/bpf-firewall.c
index 5da0106a33..31c2dcf37d 100644
--- a/src/core/bpf-firewall.c
+++ b/src/core/bpf-firewall.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <arpa/inet.h>
#include <assert.h>
diff --git a/src/core/bpf-firewall.h b/src/core/bpf-firewall.h
index f1460d982d..08d7742193 100644
--- a/src/core/bpf-firewall.h
+++ b/src/core/bpf-firewall.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <inttypes.h>
diff --git a/src/core/cgroup.c b/src/core/cgroup.c
index 5d31214461..6b34363d9a 100644
--- a/src/core/cgroup.c
+++ b/src/core/cgroup.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
diff --git a/src/core/cgroup.h b/src/core/cgroup.h
index 4a748f6ddd..66f3a63b82 100644
--- a/src/core/cgroup.h
+++ b/src/core/cgroup.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/core/core-varlink.c b/src/core/core-varlink.c
index 411c8557d9..dd6c11ab4d 100644
--- a/src/core/core-varlink.c
+++ b/src/core/core-varlink.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "core-varlink.h"
#include "mkdir.h"
diff --git a/src/core/core-varlink.h b/src/core/core-varlink.h
index 0b191ae6c4..20507a4187 100644
--- a/src/core/core-varlink.h
+++ b/src/core/core-varlink.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "manager.h"
diff --git a/src/core/dbus-automount.c b/src/core/dbus-automount.c
index 70b85d8023..3f74488dad 100644
--- a/src/core/dbus-automount.c
+++ b/src/core/dbus-automount.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "automount.h"
#include "bus-get-properties.h"
diff --git a/src/core/dbus-automount.h b/src/core/dbus-automount.h
index 3e165b0566..cfceaecc04 100644
--- a/src/core/dbus-automount.h
+++ b/src/core/dbus-automount.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/core/dbus-cgroup.c b/src/core/dbus-cgroup.c
index 584d974f1a..37c581fb22 100644
--- a/src/core/dbus-cgroup.c
+++ b/src/core/dbus-cgroup.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <arpa/inet.h>
diff --git a/src/core/dbus-cgroup.h b/src/core/dbus-cgroup.h
index 5ca68a63bf..5bf45eb972 100644
--- a/src/core/dbus-cgroup.h
+++ b/src/core/dbus-cgroup.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/core/dbus-device.c b/src/core/dbus-device.c
index 6cf7f58e02..b5e18d80a4 100644
--- a/src/core/dbus-device.c
+++ b/src/core/dbus-device.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "dbus-device.h"
#include "device.h"
diff --git a/src/core/dbus-device.h b/src/core/dbus-device.h
index 077a2bf128..bfb57707d4 100644
--- a/src/core/dbus-device.h
+++ b/src/core/dbus-device.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus-vtable.h"
diff --git a/src/core/dbus-execute.c b/src/core/dbus-execute.c
index 488af98cd3..abe009c395 100644
--- a/src/core/dbus-execute.c
+++ b/src/core/dbus-execute.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/mount.h>
#include <sys/prctl.h>
diff --git a/src/core/dbus-execute.h b/src/core/dbus-execute.h
index cbb2f97cf1..c53834140e 100644
--- a/src/core/dbus-execute.h
+++ b/src/core/dbus-execute.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/core/dbus-job.c b/src/core/dbus-job.c
index 06443a4be4..1526b316cc 100644
--- a/src/core/dbus-job.c
+++ b/src/core/dbus-job.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "sd-bus.h"
diff --git a/src/core/dbus-job.h b/src/core/dbus-job.h
index 96c5b66309..6f005811cb 100644
--- a/src/core/dbus-job.h
+++ b/src/core/dbus-job.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/core/dbus-kill.c b/src/core/dbus-kill.c
index eda3410375..6333f3bcfe 100644
--- a/src/core/dbus-kill.c
+++ b/src/core/dbus-kill.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "bus-get-properties.h"
#include "dbus-kill.h"
diff --git a/src/core/dbus-kill.h b/src/core/dbus-kill.h
index 8192e94fbb..5a9028795c 100644
--- a/src/core/dbus-kill.h
+++ b/src/core/dbus-kill.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c
index 0ac87b56a8..b37ed7c862 100644
--- a/src/core/dbus-manager.c
+++ b/src/core/dbus-manager.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <sys/prctl.h>
diff --git a/src/core/dbus-manager.h b/src/core/dbus-manager.h
index 83854b0f59..f3862fca83 100644
--- a/src/core/dbus-manager.h
+++ b/src/core/dbus-manager.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus-vtable.h"
diff --git a/src/core/dbus-mount.c b/src/core/dbus-mount.c
index a4fa44dbc9..73702b1a16 100644
--- a/src/core/dbus-mount.c
+++ b/src/core/dbus-mount.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "bus-get-properties.h"
#include "dbus-cgroup.h"
diff --git a/src/core/dbus-mount.h b/src/core/dbus-mount.h
index f7112a9f02..5a848d3104 100644
--- a/src/core/dbus-mount.h
+++ b/src/core/dbus-mount.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/core/dbus-path.c b/src/core/dbus-path.c
index 76cd9d3260..14e77d783d 100644
--- a/src/core/dbus-path.c
+++ b/src/core/dbus-path.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "bus-get-properties.h"
diff --git a/src/core/dbus-path.h b/src/core/dbus-path.h
index ad42b23662..b5018b0116 100644
--- a/src/core/dbus-path.h
+++ b/src/core/dbus-path.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/core/dbus-scope.c b/src/core/dbus-scope.c
index d752cd58aa..1bcb4836f6 100644
--- a/src/core/dbus-scope.c
+++ b/src/core/dbus-scope.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "bus-common-errors.h"
diff --git a/src/core/dbus-scope.h b/src/core/dbus-scope.h
index 702f55898d..8f1bc02e31 100644
--- a/src/core/dbus-scope.h
+++ b/src/core/dbus-scope.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/core/dbus-service.c b/src/core/dbus-service.c
index 73052fac6d..64f9d4ab36 100644
--- a/src/core/dbus-service.c
+++ b/src/core/dbus-service.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
diff --git a/src/core/dbus-service.h b/src/core/dbus-service.h
index 22d2b887b4..69311675c9 100644
--- a/src/core/dbus-service.h
+++ b/src/core/dbus-service.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/core/dbus-slice.c b/src/core/dbus-slice.c
index 28a6a4fe5a..de41d651da 100644
--- a/src/core/dbus-slice.c
+++ b/src/core/dbus-slice.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "dbus-cgroup.h"
#include "dbus-slice.h"
diff --git a/src/core/dbus-slice.h b/src/core/dbus-slice.h
index 88cc48c808..eb71916abd 100644
--- a/src/core/dbus-slice.h
+++ b/src/core/dbus-slice.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/core/dbus-socket.c b/src/core/dbus-socket.c
index a5d15d80cd..2c9da7412a 100644
--- a/src/core/dbus-socket.c
+++ b/src/core/dbus-socket.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "bus-get-properties.h"
diff --git a/src/core/dbus-socket.h b/src/core/dbus-socket.h
index 9aa8133d18..f9f36a2448 100644
--- a/src/core/dbus-socket.h
+++ b/src/core/dbus-socket.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/core/dbus-swap.c b/src/core/dbus-swap.c
index d132c08f0e..0fa8dd10e2 100644
--- a/src/core/dbus-swap.c
+++ b/src/core/dbus-swap.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2010 Maarten Lankhorst
***/
diff --git a/src/core/dbus-swap.h b/src/core/dbus-swap.h
index b114fe04c7..9d651b5654 100644
--- a/src/core/dbus-swap.h
+++ b/src/core/dbus-swap.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
/***
diff --git a/src/core/dbus-target.c b/src/core/dbus-target.c
index ba50113641..e979fb7267 100644
--- a/src/core/dbus-target.c
+++ b/src/core/dbus-target.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "dbus-target.h"
#include "unit.h"
diff --git a/src/core/dbus-target.h b/src/core/dbus-target.h
index ad02a1db74..fedd4a93ea 100644
--- a/src/core/dbus-target.h
+++ b/src/core/dbus-target.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus-vtable.h"
diff --git a/src/core/dbus-timer.c b/src/core/dbus-timer.c
index da35fa8678..8e69c17327 100644
--- a/src/core/dbus-timer.c
+++ b/src/core/dbus-timer.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "bus-get-properties.h"
@@ -131,6 +131,7 @@ const sd_bus_vtable bus_timer_vtable[] = {
SD_BUS_PROPERTY("Result", "s", property_get_result, offsetof(Timer, result), SD_BUS_VTABLE_PROPERTY_EMITS_CHANGE),
SD_BUS_PROPERTY("AccuracyUSec", "t", bus_property_get_usec, offsetof(Timer, accuracy_usec), SD_BUS_VTABLE_PROPERTY_CONST),
SD_BUS_PROPERTY("RandomizedDelayUSec", "t", bus_property_get_usec, offsetof(Timer, random_usec), SD_BUS_VTABLE_PROPERTY_CONST),
+ SD_BUS_PROPERTY("FixedRandomDelay", "b", bus_property_get_bool, offsetof(Timer, fixed_random_delay), SD_BUS_VTABLE_PROPERTY_CONST),
SD_BUS_PROPERTY("Persistent", "b", bus_property_get_bool, offsetof(Timer, persistent), SD_BUS_VTABLE_PROPERTY_CONST),
SD_BUS_PROPERTY("WakeSystem", "b", bus_property_get_bool, offsetof(Timer, wake_system), SD_BUS_VTABLE_PROPERTY_CONST),
SD_BUS_PROPERTY("RemainAfterElapse", "b", bus_property_get_bool, offsetof(Timer, remain_after_elapse), SD_BUS_VTABLE_PROPERTY_CONST),
@@ -232,6 +233,9 @@ static int bus_timer_set_transient_property(
if (streq(name, "RandomizedDelayUSec"))
return bus_set_transient_usec(u, name, &t->random_usec, message, flags, error);
+ if (streq(name, "FixedRandomDelay"))
+ return bus_set_transient_bool(u, name, &t->fixed_random_delay, message, flags, error);
+
if (streq(name, "WakeSystem"))
return bus_set_transient_bool(u, name, &t->wake_system, message, flags, error);
diff --git a/src/core/dbus-timer.h b/src/core/dbus-timer.h
index bb126b22dc..ac436f15aa 100644
--- a/src/core/dbus-timer.h
+++ b/src/core/dbus-timer.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/core/dbus-unit.c b/src/core/dbus-unit.c
index d38c0f0582..427152a757 100644
--- a/src/core/dbus-unit.c
+++ b/src/core/dbus-unit.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "sd-bus.h"
diff --git a/src/core/dbus-unit.h b/src/core/dbus-unit.h
index f21f236025..1da3cfeb96 100644
--- a/src/core/dbus-unit.h
+++ b/src/core/dbus-unit.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/core/dbus-util.c b/src/core/dbus-util.c
index f534001a9c..d6223db305 100644
--- a/src/core/dbus-util.c
+++ b/src/core/dbus-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "bus-util.h"
#include "dbus-util.h"
diff --git a/src/core/dbus-util.h b/src/core/dbus-util.h
index 7781a425be..4e7c68e843 100644
--- a/src/core/dbus-util.h
+++ b/src/core/dbus-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/core/dbus.c b/src/core/dbus.c
index 774ee5632f..3e435c98ca 100644
--- a/src/core/dbus.c
+++ b/src/core/dbus.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <sys/epoll.h>
diff --git a/src/core/dbus.h b/src/core/dbus.h
index 812f56ea2a..369d9f56a2 100644
--- a/src/core/dbus.h
+++ b/src/core/dbus.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/core/device.c b/src/core/device.c
index 134c6ee5bb..9a1d88270d 100644
--- a/src/core/device.c
+++ b/src/core/device.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <sys/epoll.h>
diff --git a/src/core/device.h b/src/core/device.h
index 3062be782d..dfe8a13aff 100644
--- a/src/core/device.h
+++ b/src/core/device.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "unit.h"
diff --git a/src/core/dynamic-user.c b/src/core/dynamic-user.c
index 8388d53dd1..7da87fd818 100644
--- a/src/core/dynamic-user.c
+++ b/src/core/dynamic-user.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/file.h>
#include <sys/stat.h>
diff --git a/src/core/dynamic-user.h b/src/core/dynamic-user.h
index 0a55630ab9..847ef475ca 100644
--- a/src/core/dynamic-user.h
+++ b/src/core/dynamic-user.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
typedef struct DynamicUser DynamicUser;
diff --git a/src/core/efi-random.c b/src/core/efi-random.c
index b6609e63e5..2bc74fab98 100644
--- a/src/core/efi-random.c
+++ b/src/core/efi-random.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <unistd.h>
diff --git a/src/core/efi-random.h b/src/core/efi-random.h
index c1de8671d8..7d20fff57d 100644
--- a/src/core/efi-random.h
+++ b/src/core/efi-random.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int efi_take_random_seed(void);
diff --git a/src/core/emergency-action.c b/src/core/emergency-action.c
index 1565a79927..9e8c79e67a 100644
--- a/src/core/emergency-action.c
+++ b/src/core/emergency-action.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/reboot.h>
diff --git a/src/core/emergency-action.h b/src/core/emergency-action.h
index 706c38a7d7..95d49a8166 100644
--- a/src/core/emergency-action.h
+++ b/src/core/emergency-action.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
typedef enum EmergencyAction {
diff --git a/src/core/execute.c b/src/core/execute.c
index 98e54acf77..c992b8d5d3 100644
--- a/src/core/execute.c
+++ b/src/core/execute.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
@@ -73,6 +73,7 @@
#include "parse-util.h"
#include "path-util.h"
#include "process-util.h"
+#include "random-util.h"
#include "rlimit-util.h"
#include "rm-rf.h"
#if HAVE_SECCOMP
@@ -2509,6 +2510,7 @@ static int write_credential(
static int acquire_credentials(
const ExecContext *context,
const ExecParameters *params,
+ const char *unit,
const char *p,
uid_t uid,
bool ownership_ok) {
@@ -2546,7 +2548,7 @@ static int acquire_credentials(
STRV_FOREACH_PAIR(id, fn, context->load_credentials) {
ReadFullFileFlags flags = READ_FULL_FILE_SECURE;
_cleanup_(erase_and_freep) char *data = NULL;
- _cleanup_free_ char *j = NULL;
+ _cleanup_free_ char *j = NULL, *bindname = NULL;
const char *source;
size_t size, add;
@@ -2554,6 +2556,12 @@ static int acquire_credentials(
/* If this is an absolute path, read the data directly from it, and support AF_UNIX sockets */
source = *fn;
flags |= READ_FULL_FILE_CONNECT_SOCKET;
+
+ /* Pass some minimal info about the unit and the credential name we are looking to acquire
+ * via the source socket address in case we read off an AF_UNIX socket. */
+ if (asprintf(&bindname, "@%" PRIx64"/unit/%s/%s", random_u64(), unit, *id) < 0)
+ return -ENOMEM;
+
} else if (params->received_credentials) {
/* If this is a relative path, take it relative to the credentials we received
* ourselves. We don't support the AF_UNIX stuff in this mode, since we are operating
@@ -2566,8 +2574,9 @@ static int acquire_credentials(
} else
source = NULL;
+
if (source)
- r = read_full_file_full(AT_FDCWD, source, flags, &data, &size);
+ r = read_full_file_full(AT_FDCWD, source, flags, bindname, &data, &size);
else
r = -ENOENT;
if (r == -ENOENT &&
@@ -2613,6 +2622,7 @@ static int acquire_credentials(
static int setup_credentials_internal(
const ExecContext *context,
const ExecParameters *params,
+ const char *unit,
const char *final, /* This is where the credential store shall eventually end up at */
const char *workspace, /* This is where we can prepare it before moving it to the final place */
bool reuse_workspace, /* Whether to reuse any existing workspace mount if it already is a mount */
@@ -2724,7 +2734,7 @@ static int setup_credentials_internal(
assert(!must_mount || workspace_mounted > 0);
where = workspace_mounted ? workspace : final;
- r = acquire_credentials(context, params, where, uid, workspace_mounted);
+ r = acquire_credentials(context, params, unit, where, uid, workspace_mounted);
if (r < 0)
return r;
@@ -2824,6 +2834,7 @@ static int setup_credentials(
r = setup_credentials_internal(
context,
params,
+ unit,
p, /* final mount point */
u, /* temporary workspace to overmount */
true, /* reuse the workspace if it is already a mount */
@@ -2861,6 +2872,7 @@ static int setup_credentials(
r = setup_credentials_internal(
context,
params,
+ unit,
p, /* final mount point */
"/dev/shm", /* temporary workspace to overmount */
false, /* do not reuse /dev/shm if it is already a mount, under no circumstances */
diff --git a/src/core/execute.h b/src/core/execute.h
index 12ea849e1c..33d7e1693d 100644
--- a/src/core/execute.h
+++ b/src/core/execute.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
typedef struct ExecStatus ExecStatus;
diff --git a/src/core/generator-setup.c b/src/core/generator-setup.c
index 78ff590902..9173951735 100644
--- a/src/core/generator-setup.c
+++ b/src/core/generator-setup.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <unistd.h>
diff --git a/src/core/generator-setup.h b/src/core/generator-setup.h
index 9688601a76..1cc816b3f5 100644
--- a/src/core/generator-setup.h
+++ b/src/core/generator-setup.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "path-lookup.h"
diff --git a/src/core/hostname-setup.c b/src/core/hostname-setup.c
index 6d047db838..867ea19905 100644
--- a/src/core/hostname-setup.c
+++ b/src/core/hostname-setup.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stdio.h>
diff --git a/src/core/hostname-setup.h b/src/core/hostname-setup.h
index dc7b9a6262..7fd0a02747 100644
--- a/src/core/hostname-setup.h
+++ b/src/core/hostname-setup.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int hostname_setup(void);
diff --git a/src/core/ima-setup.c b/src/core/ima-setup.c
index 17072b09af..7f517a0909 100644
--- a/src/core/ima-setup.c
+++ b/src/core/ima-setup.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2012 Roberto Sassu - Politecnico di Torino, Italy
TORSEC group — http://security.polito.it
diff --git a/src/core/ima-setup.h b/src/core/ima-setup.h
index cf478795a1..f964c7b1fb 100644
--- a/src/core/ima-setup.h
+++ b/src/core/ima-setup.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
/***
diff --git a/src/core/ip-address-access.c b/src/core/ip-address-access.c
index db87b12a78..a11251e94e 100644
--- a/src/core/ip-address-access.c
+++ b/src/core/ip-address-access.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdio.h>
#include <stdlib.h>
diff --git a/src/core/ip-address-access.h b/src/core/ip-address-access.h
index 8d3ab731f1..71b5459e2a 100644
--- a/src/core/ip-address-access.h
+++ b/src/core/ip-address-access.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "conf-parser.h"
diff --git a/src/core/job.c b/src/core/job.c
index 063f3f7892..f3c1a02831 100644
--- a/src/core/job.c
+++ b/src/core/job.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
diff --git a/src/core/job.h b/src/core/job.h
index 03ad640618..1b3ddc7b4b 100644
--- a/src/core/job.h
+++ b/src/core/job.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/core/kill.c b/src/core/kill.c
index a9f468e29e..e858ae9607 100644
--- a/src/core/kill.c
+++ b/src/core/kill.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "kill.h"
#include "signal-util.h"
diff --git a/src/core/kill.h b/src/core/kill.h
index 1deb0aff9b..012e433b61 100644
--- a/src/core/kill.h
+++ b/src/core/kill.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
typedef struct KillContext KillContext;
diff --git a/src/core/killall.c b/src/core/killall.c
index 2b259985dc..6f60f09c4e 100644
--- a/src/core/killall.c
+++ b/src/core/killall.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2010 ProFUSION embedded systems
***/
diff --git a/src/core/killall.h b/src/core/killall.h
index 08ae28d073..d8ef96f7d1 100644
--- a/src/core/killall.h
+++ b/src/core/killall.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "time-util.h"
diff --git a/src/core/kmod-setup.c b/src/core/kmod-setup.c
index 1286743273..8a7f82812a 100644
--- a/src/core/kmod-setup.c
+++ b/src/core/kmod-setup.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <ftw.h>
#include <unistd.h>
diff --git a/src/core/kmod-setup.h b/src/core/kmod-setup.h
index 801c7bf699..1c842d3617 100644
--- a/src/core/kmod-setup.h
+++ b/src/core/kmod-setup.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int kmod_setup(void);
diff --git a/src/core/load-dropin.c b/src/core/load-dropin.c
index fb3f68561b..d1c85e23bf 100644
--- a/src/core/load-dropin.c
+++ b/src/core/load-dropin.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "conf-parser.h"
#include "fs-util.h"
diff --git a/src/core/load-dropin.h b/src/core/load-dropin.h
index 5e2ec0d80a..f0b87d3e9f 100644
--- a/src/core/load-dropin.h
+++ b/src/core/load-dropin.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "dropin.h"
diff --git a/src/core/load-fragment-gperf.gperf.m4 b/src/core/load-fragment-gperf.gperf.m4
index 063d8ba6b6..946862c398 100644
--- a/src/core/load-fragment-gperf.gperf.m4
+++ b/src/core/load-fragment-gperf.gperf.m4
@@ -481,6 +481,7 @@ Timer.OnTimezoneChange, config_parse_bool,
Timer.Persistent, config_parse_bool, 0, offsetof(Timer, persistent)
Timer.WakeSystem, config_parse_bool, 0, offsetof(Timer, wake_system)
Timer.RemainAfterElapse, config_parse_bool, 0, offsetof(Timer, remain_after_elapse)
+Timer.FixedRandomDelay, config_parse_bool, 0, offsetof(Timer, fixed_random_delay)
Timer.AccuracySec, config_parse_sec, 0, offsetof(Timer, accuracy_usec)
Timer.RandomizedDelaySec, config_parse_sec, 0, offsetof(Timer, random_usec)
Timer.Unit, config_parse_trigger_unit, 0, 0
diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c
index 0ab64e1708..ffc58dde9c 100644
--- a/src/core/load-fragment.c
+++ b/src/core/load-fragment.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2012 Holger Hans Peter Freyther
***/
@@ -5646,9 +5646,7 @@ void unit_dump_config_items(FILE *f) {
NULSTR_FOREACH(i, load_fragment_gperf_nulstr) {
const char *rvalue = "OTHER", *lvalue;
const ConfigPerfItem *p;
- size_t prefix_len;
const char *dot;
- unsigned j;
assert_se(p = load_fragment_gperf_lookup(i, strlen(i)));
@@ -5657,7 +5655,7 @@ void unit_dump_config_items(FILE *f) {
p->ltype == DISABLED_LEGACY)
continue;
- for (j = 0; j < ELEMENTSOF(table); j++)
+ for (size_t j = 0; j < ELEMENTSOF(table); j++)
if (p->parse == table[j].callback) {
rvalue = table[j].rvalue;
break;
@@ -5665,15 +5663,17 @@ void unit_dump_config_items(FILE *f) {
dot = strchr(i, '.');
lvalue = dot ? dot + 1 : i;
- prefix_len = dot-i;
- if (dot)
+ if (dot) {
+ size_t prefix_len = dot - i;
+
if (!prev || !strneq(prev, i, prefix_len+1)) {
if (prev)
fputc('\n', f);
fprintf(f, "[%.*s]\n", (int) prefix_len, i);
}
+ }
fprintf(f, "%s=%s\n", lvalue, rvalue);
prev = i;
diff --git a/src/core/load-fragment.h b/src/core/load-fragment.h
index 47036145c8..6b2175cd2a 100644
--- a/src/core/load-fragment.h
+++ b/src/core/load-fragment.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "conf-parser.h"
diff --git a/src/core/locale-setup.c b/src/core/locale-setup.c
index 33728b0ff2..64761ddb11 100644
--- a/src/core/locale-setup.c
+++ b/src/core/locale-setup.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stdlib.h>
diff --git a/src/core/locale-setup.h b/src/core/locale-setup.h
index 01fadd06c7..d554ad3060 100644
--- a/src/core/locale-setup.h
+++ b/src/core/locale-setup.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int locale_setup(char ***environment);
diff --git a/src/core/loopback-setup.c b/src/core/loopback-setup.c
index 27d5a11d78..76022ce423 100644
--- a/src/core/loopback-setup.c
+++ b/src/core/loopback-setup.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <net/if.h>
#include <stdlib.h>
diff --git a/src/core/loopback-setup.h b/src/core/loopback-setup.h
index c0eea100ed..a7ee2dadb0 100644
--- a/src/core/loopback-setup.h
+++ b/src/core/loopback-setup.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int loopback_setup(void);
diff --git a/src/core/machine-id-setup.c b/src/core/machine-id-setup.c
index c55e0b5321..6d15f9cd09 100644
--- a/src/core/machine-id-setup.c
+++ b/src/core/machine-id-setup.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <sched.h>
diff --git a/src/core/machine-id-setup.h b/src/core/machine-id-setup.h
index e207ccf9c1..cce58192e5 100644
--- a/src/core/machine-id-setup.h
+++ b/src/core/machine-id-setup.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/core/macros.systemd.in b/src/core/macros.systemd.in
index 8832c4a6f4..6988500f4c 100644
--- a/src/core/macros.systemd.in
+++ b/src/core/macros.systemd.in
@@ -1,5 +1,5 @@
# -*- Mode: rpm-spec; indent-tabs-mode: nil -*- */
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
diff --git a/src/core/main.c b/src/core/main.c
index 728e1578b1..a280b756ff 100644
--- a/src/core/main.c
+++ b/src/core/main.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
@@ -1418,9 +1418,8 @@ static int fixup_environment(void) {
return -errno;
/* The kernels sets HOME=/ for init. Let's undo this. */
- if (path_equal_ptr(getenv("HOME"), "/") &&
- unsetenv("HOME") < 0)
- log_warning_errno(errno, "Failed to unset $HOME: %m");
+ if (path_equal_ptr(getenv("HOME"), "/"))
+ assert_se(unsetenv("HOME") == 0);
return 0;
}
diff --git a/src/core/manager.c b/src/core/manager.c
index bf3a3c64f0..1f1450b97c 100644
--- a/src/core/manager.c
+++ b/src/core/manager.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
@@ -2938,7 +2938,7 @@ int manager_loop(Manager *m) {
watchdog_usec = manager_get_watchdog(m, WATCHDOG_RUNTIME);
if (timestamp_is_set(watchdog_usec))
- watchdog_ping();
+ (void) watchdog_ping();
if (!ratelimit_below(&rl)) {
/* Yay, something is going seriously wrong, pause a little */
diff --git a/src/core/manager.h b/src/core/manager.h
index 073cc74a85..d22c801da8 100644
--- a/src/core/manager.h
+++ b/src/core/manager.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/core/meson.build b/src/core/meson.build
index 72a00f1955..77767eb603 100644
--- a/src/core/meson.build
+++ b/src/core/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
libcore_shared_sources = '''
killall.c
@@ -192,12 +192,14 @@ in_files = [['macros.systemd', rpmmacrosdir],
foreach item : in_files
file = item[0]
dir = item[1]
+ if install_sysconfdir or dir != pkgsysconfdir
+ configure_file(
+ input : file + '.in',
+ output : file,
+ configuration : substs,
+ install_dir : dir == 'no' ? '' : dir)
+ endif
- configure_file(
- input : file + '.in',
- output : file,
- configuration : substs,
- install_dir : dir == 'no' ? '' : dir)
endforeach
install_data('org.freedesktop.systemd1.conf',
@@ -217,6 +219,8 @@ meson.add_install_script('sh', '-c', mkdir_p.format(systemsleepdir))
meson.add_install_script('sh', '-c', mkdir_p.format(systemgeneratordir))
meson.add_install_script('sh', '-c', mkdir_p.format(usergeneratordir))
-meson.add_install_script('sh', '-c', mkdir_p.format(join_paths(pkgsysconfdir, 'system')))
-meson.add_install_script('sh', '-c', mkdir_p.format(join_paths(pkgsysconfdir, 'user')))
-meson.add_install_script('sh', '-c', mkdir_p.format(join_paths(sysconfdir, 'xdg/systemd')))
+if install_sysconfdir
+ meson.add_install_script('sh', '-c', mkdir_p.format(join_paths(pkgsysconfdir, 'system')))
+ meson.add_install_script('sh', '-c', mkdir_p.format(join_paths(pkgsysconfdir, 'user')))
+ meson.add_install_script('sh', '-c', mkdir_p.format(join_paths(sysconfdir, 'xdg/systemd')))
+endif
diff --git a/src/core/mount-setup.c b/src/core/mount-setup.c
index f745df7c95..915b1016b8 100644
--- a/src/core/mount-setup.c
+++ b/src/core/mount-setup.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <ftw.h>
diff --git a/src/core/mount-setup.h b/src/core/mount-setup.h
index bccd094961..29bd62f6bf 100644
--- a/src/core/mount-setup.h
+++ b/src/core/mount-setup.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/core/mount.c b/src/core/mount.c
index dbbb73f3d5..8e83de0ba8 100644
--- a/src/core/mount.c
+++ b/src/core/mount.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <signal.h>
@@ -412,8 +412,9 @@ static int mount_add_quota_dependencies(Mount *m) {
return 0;
}
-static bool mount_is_extrinsic(Mount *m) {
+static bool mount_is_extrinsic(Unit *u) {
MountParameters *p;
+ Mount *m = MOUNT(u);
assert(m);
/* Returns true for all units that are "magic" and should be excluded from the usual
@@ -422,10 +423,7 @@ static bool mount_is_extrinsic(Mount *m) {
* ourselves but it's fine if the user operates on them with us. */
/* We only automatically manage mounts if we are in system mode */
- if (!MANAGER_IS_SYSTEM(UNIT(m)->manager))
- return true;
-
- if (UNIT(m)->perpetual) /* All perpetual units never change state */
+ if (MANAGER_IS_USER(u->manager))
return true;
p = get_mount_parameters(m);
@@ -493,7 +491,7 @@ static int mount_add_default_dependencies(Mount *m) {
* guaranteed to stay mounted the whole time, since our system is on it. Also, don't
* bother with anything mounted below virtual file systems, it's also going to be virtual,
* and hence not worth the effort. */
- if (mount_is_extrinsic(m))
+ if (mount_is_extrinsic(UNIT(m)))
return 0;
p = get_mount_parameters(m);
@@ -790,7 +788,7 @@ static void mount_dump(Unit *u, FILE *f, const char *prefix) {
prefix, p ? strna(p->options) : "n/a",
prefix, yes_no(m->from_proc_self_mountinfo),
prefix, yes_no(m->from_fragment),
- prefix, yes_no(mount_is_extrinsic(m)),
+ prefix, yes_no(mount_is_extrinsic(u)),
prefix, m->directory_mode,
prefix, yes_no(m->sloppy_options),
prefix, yes_no(m->lazy_unmount),
@@ -1146,7 +1144,7 @@ static int mount_start(Unit *u) {
return -EAGAIN;
/* Already on it! */
- if (m->state == MOUNT_MOUNTING)
+ if (IN_SET(m->state, MOUNT_MOUNTING, MOUNT_MOUNTING_DONE))
return 0;
assert(IN_SET(m->state, MOUNT_DEAD, MOUNT_FAILED));
@@ -1950,6 +1948,15 @@ static int mount_process_proc_self_mountinfo(Manager *m) {
mount_enter_dead(mount, MOUNT_SUCCESS);
break;
+ case MOUNT_MOUNTING_DONE:
+ /* The mount command may add the corresponding proc mountinfo entry and
+ * then remove it because of an internal error. E.g., fuse.sshfs seems
+ * to do that when the connection fails. See #17617. To handle such the
+ * case, let's once set the state back to mounting. Then, the unit can
+ * correctly enter the failed state later in mount_sigchld(). */
+ mount_set_state(mount, MOUNT_MOUNTING);
+ break;
+
default:
break;
}
@@ -2161,6 +2168,7 @@ const UnitVTable mount_vtable = {
.will_restart = unit_will_restart_default,
.may_gc = mount_may_gc,
+ .is_extrinsic = mount_is_extrinsic,
.sigchld_event = mount_sigchld_event,
diff --git a/src/core/mount.h b/src/core/mount.h
index a1bc2d71a6..ad0e016083 100644
--- a/src/core/mount.h
+++ b/src/core/mount.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
typedef struct Mount Mount;
diff --git a/src/core/namespace.c b/src/core/namespace.c
index 05bd4da154..0d30f17b9a 100644
--- a/src/core/namespace.c
+++ b/src/core/namespace.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <linux/loop.h>
diff --git a/src/core/namespace.h b/src/core/namespace.h
index 908e57c42c..da0861c406 100644
--- a/src/core/namespace.h
+++ b/src/core/namespace.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
/***
diff --git a/src/core/org.freedesktop.systemd1.conf b/src/core/org.freedesktop.systemd1.conf
index 9a5912c10f..8b32379835 100644
--- a/src/core/org.freedesktop.systemd1.conf
+++ b/src/core/org.freedesktop.systemd1.conf
@@ -3,7 +3,7 @@
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<!--
- SPDX-License-Identifier: LGPL-2.1+
+ SPDX-License-Identifier: LGPL-2.1-or-later
This file is part of systemd.
diff --git a/src/core/org.freedesktop.systemd1.policy.in b/src/core/org.freedesktop.systemd1.policy.in
index 001408d34a..a6d40d7e8f 100644
--- a/src/core/org.freedesktop.systemd1.policy.in
+++ b/src/core/org.freedesktop.systemd1.policy.in
@@ -3,7 +3,7 @@
"http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
<!--
- SPDX-License-Identifier: LGPL-2.1+
+ SPDX-License-Identifier: LGPL-2.1-or-later
This file is part of systemd.
diff --git a/src/core/org.freedesktop.systemd1.service b/src/core/org.freedesktop.systemd1.service
index 8bd7302d6c..082125f52e 100644
--- a/src/core/org.freedesktop.systemd1.service
+++ b/src/core/org.freedesktop.systemd1.service
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/src/core/path.c b/src/core/path.c
index 4f4e7100cf..ca3a91df27 100644
--- a/src/core/path.c
+++ b/src/core/path.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <sys/epoll.h>
diff --git a/src/core/path.h b/src/core/path.h
index 4043650fe0..fb33b12ab1 100644
--- a/src/core/path.h
+++ b/src/core/path.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
typedef struct Path Path;
diff --git a/src/core/scope.c b/src/core/scope.c
index 13cd2e6c3c..a372f8d726 100644
--- a/src/core/scope.c
+++ b/src/core/scope.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <unistd.h>
@@ -8,6 +8,7 @@
#include "dbus-unit.h"
#include "load-dropin.h"
#include "log.h"
+#include "process-util.h"
#include "scope.h"
#include "serialize.h"
#include "special.h"
@@ -235,8 +236,18 @@ static int scope_coldplug(Unit *u) {
if (r < 0)
return r;
- if (!IN_SET(s->deserialized_state, SCOPE_DEAD, SCOPE_FAILED))
- (void) unit_enqueue_rewatch_pids(u);
+ if (!IN_SET(s->deserialized_state, SCOPE_DEAD, SCOPE_FAILED)) {
+ if (u->pids) {
+ void *pidp;
+
+ SET_FOREACH(pidp, u->pids) {
+ r = unit_watch_pid(u, PTR_TO_PID(pidp), false);
+ if (r < 0 && r != -EEXIST)
+ return r;
+ }
+ } else
+ (void) unit_enqueue_rewatch_pids(u);
+ }
bus_scope_track_controller(s);
@@ -366,6 +377,10 @@ static int scope_start(Unit *u) {
return r;
}
+ /* Now u->pids have been moved into the scope cgroup, it's not needed
+ * anymore. */
+ u->pids = set_free(u->pids);
+
s->result = SCOPE_SUCCESS;
scope_set_state(s, SCOPE_RUNNING);
@@ -427,6 +442,7 @@ static int scope_get_timeout(Unit *u, usec_t *timeout) {
static int scope_serialize(Unit *u, FILE *f, FDSet *fds) {
Scope *s = SCOPE(u);
+ void *pidp;
assert(s);
assert(f);
@@ -438,6 +454,9 @@ static int scope_serialize(Unit *u, FILE *f, FDSet *fds) {
if (s->controller)
(void) serialize_item(f, "controller", s->controller);
+ SET_FOREACH(pidp, u->pids)
+ serialize_item_format(f, "pids", PID_FMT, PTR_TO_PID(pidp));
+
return 0;
}
@@ -473,6 +492,20 @@ static int scope_deserialize_item(Unit *u, const char *key, const char *value, F
if (r < 0)
return log_oom();
+ } else if (streq(key, "pids")) {
+ pid_t pid;
+
+ if (parse_pid(value, &pid) < 0)
+ log_unit_debug(u, "Failed to parse pids value: %s", value);
+ else {
+ r = set_ensure_allocated(&u->pids, NULL);
+ if (r < 0)
+ return r;
+
+ r = set_put(u->pids, PID_TO_PTR(pid));
+ if (r < 0)
+ return r;
+ }
} else
log_unit_debug(u, "Unknown serialization key: %s", key);
diff --git a/src/core/scope.h b/src/core/scope.h
index ae2bb80e55..5f791b7d19 100644
--- a/src/core/scope.h
+++ b/src/core/scope.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
typedef struct Scope Scope;
diff --git a/src/core/selinux-access.c b/src/core/selinux-access.c
index b81714faa6..18f6fb59bc 100644
--- a/src/core/selinux-access.c
+++ b/src/core/selinux-access.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "selinux-access.h"
diff --git a/src/core/selinux-access.h b/src/core/selinux-access.h
index 58f737de09..c6bfb32544 100644
--- a/src/core/selinux-access.h
+++ b/src/core/selinux-access.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/core/selinux-setup.c b/src/core/selinux-setup.c
index 8c67352ddb..1ac05b81e8 100644
--- a/src/core/selinux-setup.c
+++ b/src/core/selinux-setup.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stdio.h>
diff --git a/src/core/selinux-setup.h b/src/core/selinux-setup.h
index ad0d4f65dc..cdff51d747 100644
--- a/src/core/selinux-setup.h
+++ b/src/core/selinux-setup.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/core/service.c b/src/core/service.c
index af7534546d..d7bdeb7cca 100644
--- a/src/core/service.c
+++ b/src/core/service.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <sys/stat.h>
diff --git a/src/core/service.h b/src/core/service.h
index 4423f893bb..11c3d3f370 100644
--- a/src/core/service.h
+++ b/src/core/service.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
typedef struct Service Service;
diff --git a/src/core/show-status.c b/src/core/show-status.c
index 9d7358a9c1..a74423cb85 100644
--- a/src/core/show-status.c
+++ b/src/core/show-status.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <sys/stat.h>
diff --git a/src/core/show-status.h b/src/core/show-status.h
index 178f624d6c..c37ccd9087 100644
--- a/src/core/show-status.h
+++ b/src/core/show-status.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/core/slice.c b/src/core/slice.c
index 36e5d6a40f..ee5c25932f 100644
--- a/src/core/slice.c
+++ b/src/core/slice.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
diff --git a/src/core/slice.h b/src/core/slice.h
index 4678c085c3..e2f9274655 100644
--- a/src/core/slice.h
+++ b/src/core/slice.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "unit.h"
diff --git a/src/core/smack-setup.c b/src/core/smack-setup.c
index 4427397f27..1fe592af70 100644
--- a/src/core/smack-setup.c
+++ b/src/core/smack-setup.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2013 Intel Corporation
Authors:
diff --git a/src/core/smack-setup.h b/src/core/smack-setup.h
index b65daafcd8..d29370d1e9 100644
--- a/src/core/smack-setup.h
+++ b/src/core/smack-setup.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
/***
diff --git a/src/core/socket.c b/src/core/socket.c
index f045eed5b5..7f8ac4eae9 100644
--- a/src/core/socket.c
+++ b/src/core/socket.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <arpa/inet.h>
#include <errno.h>
@@ -1710,6 +1710,8 @@ static int socket_open_fds(Socket *_s) {
_cleanup_free_ char *ep = NULL;
ep = path_make_absolute("ep0", p->path);
+ if (!ep)
+ return -ENOMEM;
p->fd = usbffs_address_create(ep);
if (p->fd < 0)
diff --git a/src/core/socket.h b/src/core/socket.h
index 90839de9fa..ebe85c2aa4 100644
--- a/src/core/socket.h
+++ b/src/core/socket.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
typedef struct Socket Socket;
diff --git a/src/core/swap.c b/src/core/swap.c
index fa600a9797..76e491ad94 100644
--- a/src/core/swap.c
+++ b/src/core/swap.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <sys/epoll.h>
@@ -56,6 +56,35 @@ static bool SWAP_STATE_WITH_PROCESS(SwapState state) {
SWAP_CLEANING);
}
+_pure_ static UnitActiveState swap_active_state(Unit *u) {
+ assert(u);
+
+ return state_translation_table[SWAP(u)->state];
+}
+
+_pure_ static const char *swap_sub_state_to_string(Unit *u) {
+ assert(u);
+
+ return swap_state_to_string(SWAP(u)->state);
+}
+
+_pure_ static bool swap_may_gc(Unit *u) {
+ Swap *s = SWAP(u);
+
+ assert(s);
+
+ if (s->from_proc_swaps)
+ return false;
+
+ return true;
+}
+
+_pure_ static bool swap_is_extrinsic(Unit *u) {
+ assert(SWAP(u));
+
+ return MANAGER_IS_USER(u->manager);
+}
+
static void swap_unset_proc_swaps(Swap *s) {
assert(s);
@@ -610,13 +639,15 @@ static void swap_dump(Unit *u, FILE *f, const char *prefix) {
"%sClean Result: %s\n"
"%sWhat: %s\n"
"%sFrom /proc/swaps: %s\n"
- "%sFrom fragment: %s\n",
+ "%sFrom fragment: %s\n"
+ "%sExtrinsic: %s\n",
prefix, swap_state_to_string(s->state),
prefix, swap_result_to_string(s->result),
prefix, swap_result_to_string(s->clean_result),
prefix, s->what,
prefix, yes_no(s->from_proc_swaps),
- prefix, yes_no(s->from_fragment));
+ prefix, yes_no(s->from_fragment),
+ prefix, yes_no(swap_is_extrinsic(u)));
if (s->devnode)
fprintf(f, "%sDevice Node: %s\n", prefix, s->devnode);
@@ -1028,29 +1059,6 @@ static int swap_deserialize_item(Unit *u, const char *key, const char *value, FD
return 0;
}
-_pure_ static UnitActiveState swap_active_state(Unit *u) {
- assert(u);
-
- return state_translation_table[SWAP(u)->state];
-}
-
-_pure_ static const char *swap_sub_state_to_string(Unit *u) {
- assert(u);
-
- return swap_state_to_string(SWAP(u)->state);
-}
-
-_pure_ static bool swap_may_gc(Unit *u) {
- Swap *s = SWAP(u);
-
- assert(s);
-
- if (s->from_proc_swaps)
- return false;
-
- return true;
-}
-
static void swap_sigchld_event(Unit *u, pid_t pid, int code, int status) {
Swap *s = SWAP(u);
SwapResult f;
@@ -1649,6 +1657,7 @@ const UnitVTable swap_vtable = {
.will_restart = unit_will_restart_default,
.may_gc = swap_may_gc,
+ .is_extrinsic = swap_is_extrinsic,
.sigchld_event = swap_sigchld_event,
diff --git a/src/core/swap.h b/src/core/swap.h
index cb24cec7aa..6ce9bfd9b4 100644
--- a/src/core/swap.h
+++ b/src/core/swap.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
/***
diff --git a/src/core/systemd.pc.in b/src/core/systemd.pc.in
index c0554649de..f2c045511d 100644
--- a/src/core/systemd.pc.in
+++ b/src/core/systemd.pc.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/src/core/target.c b/src/core/target.c
index 3f85773b24..a422056803 100644
--- a/src/core/target.c
+++ b/src/core/target.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "dbus-target.h"
#include "dbus-unit.h"
diff --git a/src/core/target.h b/src/core/target.h
index 28f78888dc..bb909d664f 100644
--- a/src/core/target.h
+++ b/src/core/target.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "unit.h"
diff --git a/src/core/timer.c b/src/core/timer.c
index 94388f0727..651f18b5a8 100644
--- a/src/core/timer.c
+++ b/src/core/timer.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/stat.h>
#include <sys/types.h>
@@ -169,6 +169,36 @@ static int timer_setup_persistent(Timer *t) {
return 0;
}
+static uint64_t timer_get_fixed_delay_hash(Timer *t) {
+ static const uint8_t hash_key[] = {
+ 0x51, 0x0a, 0xdb, 0x76, 0x29, 0x51, 0x42, 0xc2,
+ 0x80, 0x35, 0xea, 0xe6, 0x8e, 0x3a, 0x37, 0xbd
+ };
+
+ struct siphash state;
+ sd_id128_t machine_id;
+ uid_t uid;
+ int r;
+
+ assert(t);
+
+ uid = getuid();
+ r = sd_id128_get_machine(&machine_id);
+ if (r < 0) {
+ log_unit_debug_errno(UNIT(t), r,
+ "Failed to get machine ID for the fixed delay calculation, proceeding with 0: %m");
+ machine_id = SD_ID128_NULL;
+ }
+
+ siphash24_init(&state, hash_key);
+ siphash24_compress(&machine_id, sizeof(sd_id128_t), &state);
+ siphash24_compress_boolean(MANAGER_IS_SYSTEM(UNIT(t)->manager), &state);
+ siphash24_compress(&uid, sizeof(uid_t), &state);
+ siphash24_compress_string(UNIT(t)->id, &state);
+
+ return siphash24_finalize(&state);
+}
+
static int timer_load(Unit *u) {
Timer *t = TIMER(u);
int r;
@@ -215,6 +245,7 @@ static void timer_dump(Unit *u, FILE *f, const char *prefix) {
"%sWakeSystem: %s\n"
"%sAccuracy: %s\n"
"%sRemainAfterElapse: %s\n"
+ "%sFixedRandomDelay: %s\n"
"%sOnClockChange: %s\n"
"%sOnTimeZoneChange: %s\n",
prefix, timer_state_to_string(t->state),
@@ -224,6 +255,7 @@ static void timer_dump(Unit *u, FILE *f, const char *prefix) {
prefix, yes_no(t->wake_system),
prefix, format_timespan(buf, sizeof(buf), t->accuracy_usec, 1),
prefix, yes_no(t->remain_after_elapse),
+ prefix, yes_no(t->fixed_random_delay),
prefix, yes_no(t->on_clock_change),
prefix, yes_no(t->on_timezone_change));
@@ -332,7 +364,7 @@ static void add_random(Timer *t, usec_t *v) {
if (*v == USEC_INFINITY)
return;
- add = random_u64() % t->random_usec;
+ add = (t->fixed_random_delay ? timer_get_fixed_delay_hash(t) : random_u64()) % t->random_usec;
if (*v + add < *v) /* overflow */
*v = (usec_t) -2; /* Highest possible value, that is not USEC_INFINITY */
diff --git a/src/core/timer.h b/src/core/timer.h
index ab66a201ad..14fa317064 100644
--- a/src/core/timer.h
+++ b/src/core/timer.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
typedef struct Timer Timer;
@@ -59,6 +59,7 @@ struct Timer {
bool remain_after_elapse;
bool on_clock_change;
bool on_timezone_change;
+ bool fixed_random_delay;
char *stamp_path;
};
diff --git a/src/core/transaction.c b/src/core/transaction.c
index f4cdbfe6f5..ae77bae65e 100644
--- a/src/core/transaction.c
+++ b/src/core/transaction.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <unistd.h>
diff --git a/src/core/transaction.h b/src/core/transaction.h
index ba42f58e07..c431271eb2 100644
--- a/src/core/transaction.h
+++ b/src/core/transaction.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
typedef struct Transaction Transaction;
diff --git a/src/core/triggers.systemd.in b/src/core/triggers.systemd.in
index 10b1889b57..2d25db3696 100644
--- a/src/core/triggers.systemd.in
+++ b/src/core/triggers.systemd.in
@@ -1,5 +1,5 @@
# -*- Mode: rpm-spec; indent-tabs-mode: nil -*- */
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
# Copyright © 2018 Neal Gompa
diff --git a/src/core/unit-printf.c b/src/core/unit-printf.c
index 4fee5dc6dc..0c1e20d9ce 100644
--- a/src/core/unit-printf.c
+++ b/src/core/unit-printf.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "cgroup-util.h"
@@ -177,46 +177,23 @@ int unit_name_printf(const Unit *u, const char* format, char **ret) {
* This will use the passed string as format string and replace the following specifiers (which should all be
* safe for inclusion in unit names):
*
- * %n: the full id of the unit (foo@bar.waldo)
- * %N: the id of the unit without the suffix (foo@bar)
- * %p: the prefix (foo)
+ * %n: the full id of the unit (foo-aaa@bar.waldo)
+ * %N: the id of the unit without the suffix (foo-aaa@bar)
+ * %p: the prefix (foo-aaa)
* %i: the instance (bar)
- *
- * %U: the UID of the running user
- * %u: the username of the running user
- *
- * %m: the machine ID of the running system
- * %b: the boot ID of the running system
- * %H: the hostname of the running system
- * %v: the kernel version
- * %a: the native userspace architecture
- * %o: the OS ID according to /etc/os-release
- * %w: the OS version ID, according to /etc/os-release
- * %B: the OS build ID, according to /etc/os-release
- * %W: the OS variant ID, according to /etc/os-release
+ * %j: the last componet of the prefix (aaa)
*/
const Specifier table[] = {
+ { 'i', specifier_string, u->instance },
+ { 'j', specifier_last_component, NULL },
{ 'n', specifier_string, u->id },
{ 'N', specifier_prefix_and_instance, NULL },
{ 'p', specifier_prefix, NULL },
- { 'i', specifier_string, u->instance },
- { 'j', specifier_last_component, NULL },
- { 'g', specifier_group_name, NULL },
- { 'G', specifier_group_id, NULL },
- { 'U', specifier_user_id, NULL },
- { 'u', specifier_user_name, NULL },
-
- { 'm', specifier_machine_id, NULL },
- { 'b', specifier_boot_id, NULL },
- { 'H', specifier_host_name, NULL },
- { 'v', specifier_kernel_release, NULL },
- { 'a', specifier_architecture, NULL },
- { 'o', specifier_os_id, NULL },
- { 'w', specifier_os_version_id, NULL },
- { 'B', specifier_os_build_id, NULL },
- { 'W', specifier_os_variant_id, NULL },
+ COMMON_SYSTEM_SPECIFIERS,
+
+ COMMON_CREDS_SPECIFIERS,
{}
};
@@ -237,19 +214,15 @@ int unit_full_printf(const Unit *u, const char *format, char **ret) {
* %r: where units in this slice are placed in the cgroup tree (deprecated)
* %R: the root of this systemd's instance tree (deprecated)
*
- * %t: the runtime directory root (e.g. /run or $XDG_RUNTIME_DIR)
- * %S: the state directory root (e.g. /var/lib or $XDG_CONFIG_HOME)
* %C: the cache directory root (e.g. /var/cache or $XDG_CACHE_HOME)
- * %L: the log directory root (e.g. /var/log or $XDG_CONFIG_HOME/log)
* %E: the configuration directory root (e.g. /etc or $XDG_CONFIG_HOME)
- * %T: the temporary directory (e.g. /tmp, or $TMPDIR, $TEMP, $TMP)
- * %V: the temporary directory for large, persistent stuff (e.g. /var/tmp, or $TMPDIR, $TEMP, $TMP)
+ * %L: the log directory root (e.g. /var/log or $XDG_CONFIG_HOME/log)
+ * %S: the state directory root (e.g. /var/lib or $XDG_CONFIG_HOME)
+ * %t: the runtime directory root (e.g. /run or $XDG_RUNTIME_DIR)
*
* %h: the homedir of the running user
* %s: the shell of the running user
*
- * %v: `uname -r` of the running system
- *
* NOTICE: When you add new entries here, please be careful: specifiers which depend on settings of the unit
* file itself are broken by design, as they would resolve differently depending on whether they are used
* before or after the relevant configuration setting. Hence: don't add them.
@@ -260,40 +233,35 @@ int unit_full_printf(const Unit *u, const char *format, char **ret) {
assert(ret);
const Specifier table[] = {
- { 'n', specifier_string, u->id },
- { 'N', specifier_prefix_and_instance, NULL },
- { 'p', specifier_prefix, NULL },
- { 'P', specifier_prefix_unescaped, NULL },
{ 'i', specifier_string, u->instance },
{ 'I', specifier_instance_unescaped, NULL },
{ 'j', specifier_last_component, NULL },
{ 'J', specifier_last_component_unescaped, NULL },
+ { 'n', specifier_string, u->id },
+ { 'N', specifier_prefix_and_instance, NULL },
+ { 'p', specifier_prefix, NULL },
+ { 'P', specifier_prefix_unescaped, NULL },
{ 'f', specifier_filename, NULL },
+
{ 'c', specifier_cgroup, NULL },
{ 'r', specifier_cgroup_slice, NULL },
{ 'R', specifier_cgroup_root, NULL },
- { 't', specifier_special_directory, UINT_TO_PTR(EXEC_DIRECTORY_RUNTIME) },
- { 'S', specifier_special_directory, UINT_TO_PTR(EXEC_DIRECTORY_STATE) },
{ 'C', specifier_special_directory, UINT_TO_PTR(EXEC_DIRECTORY_CACHE) },
- { 'L', specifier_special_directory, UINT_TO_PTR(EXEC_DIRECTORY_LOGS) },
{ 'E', specifier_special_directory, UINT_TO_PTR(EXEC_DIRECTORY_CONFIGURATION) },
- { 'T', specifier_tmp_dir, NULL },
- { 'V', specifier_var_tmp_dir, NULL },
+ { 'L', specifier_special_directory, UINT_TO_PTR(EXEC_DIRECTORY_LOGS) },
+ { 'S', specifier_special_directory, UINT_TO_PTR(EXEC_DIRECTORY_STATE) },
+ { 't', specifier_special_directory, UINT_TO_PTR(EXEC_DIRECTORY_RUNTIME) },
- { 'g', specifier_group_name, NULL },
- { 'G', specifier_group_id, NULL },
- { 'U', specifier_user_id, NULL },
- { 'u', specifier_user_name, NULL },
{ 'h', specifier_user_home, NULL },
{ 's', specifier_user_shell, NULL },
- { 'm', specifier_machine_id, NULL },
- { 'H', specifier_host_name, NULL },
- { 'l', specifier_short_host_name, NULL },
- { 'b', specifier_boot_id, NULL },
- { 'v', specifier_kernel_release, NULL },
+ COMMON_SYSTEM_SPECIFIERS,
+
+ COMMON_CREDS_SPECIFIERS,
+
+ COMMON_TMP_SPECIFIERS,
{}
};
diff --git a/src/core/unit-printf.h b/src/core/unit-printf.h
index cb75448ae5..de5183c113 100644
--- a/src/core/unit-printf.h
+++ b/src/core/unit-printf.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "unit.h"
diff --git a/src/core/unit.c b/src/core/unit.c
index 680f4c569b..45a417a090 100644
--- a/src/core/unit.c
+++ b/src/core/unit.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stdlib.h>
@@ -1988,6 +1988,10 @@ int unit_stop(Unit *u) {
bool unit_can_stop(Unit *u) {
assert(u);
+ /* Note: if we return true here, it does not mean that the unit may be successfully stopped.
+ * Extrinsic units follow external state and they may stop following external state changes
+ * (hence we return true here), but an attempt to do this through the manager will fail. */
+
if (!unit_type_supported(u->type))
return false;
@@ -3345,12 +3349,17 @@ int unit_set_default_slice(Unit *u) {
if (MANAGER_IS_SYSTEM(u->manager))
slice_name = strjoina("system-", escaped, ".slice");
else
- slice_name = strjoina(escaped, ".slice");
- } else
- slice_name =
- MANAGER_IS_SYSTEM(u->manager) && !unit_has_name(u, SPECIAL_INIT_SCOPE)
- ? SPECIAL_SYSTEM_SLICE
- : SPECIAL_ROOT_SLICE;
+ slice_name = strjoina("app-", escaped, ".slice");
+
+ } else if (unit_is_extrinsic(u))
+ /* Keep all extrinsic units (e.g. perpetual units and swap and mount units in user mode) in
+ * the root slice. They don't really belong in one of the subslices. */
+ slice_name = SPECIAL_ROOT_SLICE;
+
+ else if (MANAGER_IS_SYSTEM(u->manager))
+ slice_name = SPECIAL_SYSTEM_SLICE;
+ else
+ slice_name = SPECIAL_APP_SLICE;
r = manager_load_unit(u->manager, slice_name, NULL, NULL, &slice);
if (r < 0)
diff --git a/src/core/unit.h b/src/core/unit.h
index 1e6d7ccf6b..02b2b24206 100644
--- a/src/core/unit.h
+++ b/src/core/unit.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
@@ -531,6 +531,9 @@ typedef struct UnitVTable {
* even though nothing references it and it isn't active in any way. */
bool (*may_gc)(Unit *u);
+ /* Return true when the unit is not controlled by the manager (e.g. extrinsic mounts). */
+ bool (*is_extrinsic)(Unit *u);
+
/* When the unit is not running and no job for it queued we shall release its runtime resources */
void (*release_resources)(Unit *u);
@@ -684,6 +687,11 @@ int unit_set_description(Unit *u, const char *description);
bool unit_may_gc(Unit *u);
+static inline bool unit_is_extrinsic(Unit *u) {
+ return u->perpetual ||
+ (UNIT_VTABLE(u)->is_extrinsic && UNIT_VTABLE(u)->is_extrinsic(u));
+}
+
void unit_add_to_load_queue(Unit *u);
void unit_add_to_dbus_queue(Unit *u);
void unit_add_to_cleanup_queue(Unit *u);
diff --git a/src/coredump/coredump-vacuum.c b/src/coredump/coredump-vacuum.c
index 35885dfb47..30c67ffe7c 100644
--- a/src/coredump/coredump-vacuum.c
+++ b/src/coredump/coredump-vacuum.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/statvfs.h>
#include <sys/stat.h>
diff --git a/src/coredump/coredump-vacuum.h b/src/coredump/coredump-vacuum.h
index 0db116736c..8ad5bafc15 100644
--- a/src/coredump/coredump-vacuum.h
+++ b/src/coredump/coredump-vacuum.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <inttypes.h>
diff --git a/src/coredump/coredump.c b/src/coredump/coredump.c
index 104a051688..0a1cb9103a 100644
--- a/src/coredump/coredump.c
+++ b/src/coredump/coredump.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stdio.h>
diff --git a/src/coredump/coredumpctl.c b/src/coredump/coredumpctl.c
index f252c81758..91356ad3c9 100644
--- a/src/coredump/coredumpctl.c
+++ b/src/coredump/coredumpctl.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <getopt.h>
diff --git a/src/coredump/meson.build b/src/coredump/meson.build
index 7fa5942697..ebd99bd379 100644
--- a/src/coredump/meson.build
+++ b/src/coredump/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
systemd_coredump_sources = files('''
coredump.c
@@ -13,7 +13,7 @@ endif
coredumpctl_sources = files('coredumpctl.c')
-if conf.get('ENABLE_COREDUMP') == 1
+if conf.get('ENABLE_COREDUMP') == 1 and install_sysconfdir
install_data('coredump.conf',
install_dir : pkgsysconfdir)
endif
diff --git a/src/coredump/stacktrace.c b/src/coredump/stacktrace.c
index 4e0d3e7698..a29ab1211c 100644
--- a/src/coredump/stacktrace.c
+++ b/src/coredump/stacktrace.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <dwarf.h>
#include <elfutils/libdwfl.h>
diff --git a/src/coredump/stacktrace.h b/src/coredump/stacktrace.h
index 2462c763f9..b935748404 100644
--- a/src/coredump/stacktrace.h
+++ b/src/coredump/stacktrace.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
void coredump_make_stack_trace(int fd, const char *executable, char **ret);
diff --git a/src/coredump/test-coredump-vacuum.c b/src/coredump/test-coredump-vacuum.c
index 75fb442873..ac212ea23b 100644
--- a/src/coredump/test-coredump-vacuum.c
+++ b/src/coredump/test-coredump-vacuum.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdlib.h>
diff --git a/src/cryptsetup/cryptsetup-generator.c b/src/cryptsetup/cryptsetup-generator.c
index df589ec3e4..68c73499ce 100644
--- a/src/cryptsetup/cryptsetup-generator.c
+++ b/src/cryptsetup/cryptsetup-generator.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/cryptsetup/cryptsetup-keyfile.c b/src/cryptsetup/cryptsetup-keyfile.c
index ebf4cb1b6b..f849123563 100644
--- a/src/cryptsetup/cryptsetup-keyfile.c
+++ b/src/cryptsetup/cryptsetup-keyfile.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <unistd.h>
diff --git a/src/cryptsetup/cryptsetup-keyfile.h b/src/cryptsetup/cryptsetup-keyfile.h
index 7bb78227dc..308f5ebd68 100644
--- a/src/cryptsetup/cryptsetup-keyfile.h
+++ b/src/cryptsetup/cryptsetup-keyfile.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <inttypes.h>
diff --git a/src/cryptsetup/cryptsetup-pkcs11.c b/src/cryptsetup/cryptsetup-pkcs11.c
index bbc0122002..50db46f8d1 100644
--- a/src/cryptsetup/cryptsetup-pkcs11.c
+++ b/src/cryptsetup/cryptsetup-pkcs11.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <unistd.h>
diff --git a/src/cryptsetup/cryptsetup-pkcs11.h b/src/cryptsetup/cryptsetup-pkcs11.h
index af2487e75b..266c8e1b3e 100644
--- a/src/cryptsetup/cryptsetup-pkcs11.h
+++ b/src/cryptsetup/cryptsetup-pkcs11.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <sys/types.h>
diff --git a/src/cryptsetup/cryptsetup.c b/src/cryptsetup/cryptsetup.c
index fb08b4a1a0..5f9d7bb3bb 100644
--- a/src/cryptsetup/cryptsetup.c
+++ b/src/cryptsetup/cryptsetup.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <mntent.h>
@@ -353,7 +353,8 @@ static char *disk_mount_point(const char *label) {
/* Yeah, we don't support native systemd unit files here for now */
- if (asprintf(&device, "/dev/mapper/%s", label) < 0)
+ device = strjoin("/dev/mapper/", label);
+ if (!device)
return NULL;
f = setmntent(fstab_path(), "re");
@@ -447,10 +448,9 @@ static int get_password(
assert(strv_length(passwords2) == 1);
- if (!streq(passwords[0], passwords2[0])) {
- log_warning("Passwords did not match, retrying.");
- return -EAGAIN;
- }
+ if (!streq(passwords[0], passwords2[0]))
+ return log_warning_errno(SYNTHETIC_ERRNO(EAGAIN),
+ "Passwords did not match, retrying.");
}
strv_uniq(passwords);
diff --git a/src/debug-generator/debug-generator.c b/src/debug-generator/debug-generator.c
index 4e41eca352..c6e4d79e3a 100644
--- a/src/debug-generator/debug-generator.c
+++ b/src/debug-generator/debug-generator.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <unistd.h>
diff --git a/src/delta/delta.c b/src/delta/delta.c
index a88eed098d..4295abdc30 100644
--- a/src/delta/delta.c
+++ b/src/delta/delta.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <getopt.h>
diff --git a/src/detect-virt/detect-virt.c b/src/detect-virt/detect-virt.c
index 4f38de8e29..14d649c6ed 100644
--- a/src/detect-virt/detect-virt.c
+++ b/src/detect-virt/detect-virt.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <getopt.h>
diff --git a/src/dissect/dissect.c b/src/dissect/dissect.c
index 237395a444..dc7e9dc626 100644
--- a/src/dissect/dissect.c
+++ b/src/dissect/dissect.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <getopt.h>
diff --git a/src/environment-d-generator/environment-d-generator.c b/src/environment-d-generator/environment-d-generator.c
index 4a14c23f11..1c51cf6b2c 100644
--- a/src/environment-d-generator/environment-d-generator.c
+++ b/src/environment-d-generator/environment-d-generator.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "sd-path.h"
diff --git a/src/escape/escape.c b/src/escape/escape.c
index 3f3dc0a894..05d03ad762 100644
--- a/src/escape/escape.c
+++ b/src/escape/escape.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <getopt.h>
#include <stdio.h>
diff --git a/src/firstboot/firstboot.c b/src/firstboot/firstboot.c
index 3109f9cdfc..742b43f9fc 100644
--- a/src/firstboot/firstboot.c
+++ b/src/firstboot/firstboot.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <getopt.h>
diff --git a/src/fsck/fsck.c b/src/fsck/fsck.c
index 472ba6d549..04752fe9dc 100644
--- a/src/fsck/fsck.c
+++ b/src/fsck/fsck.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2014 Holger Hans Peter Freyther
***/
diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c
index 6c560d547b..15f5892228 100644
--- a/src/fstab-generator/fstab-generator.c
+++ b/src/fstab-generator/fstab-generator.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stdio.h>
diff --git a/src/fuzz/fuzz-bus-label.c b/src/fuzz/fuzz-bus-label.c
index 46a3d23dc4..93bac9adf4 100644
--- a/src/fuzz/fuzz-bus-label.c
+++ b/src/fuzz/fuzz-bus-label.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
diff --git a/src/fuzz/fuzz-bus-message.c b/src/fuzz/fuzz-bus-message.c
index 3d1ac7e68a..af3dbf4d57 100644
--- a/src/fuzz/fuzz-bus-message.c
+++ b/src/fuzz/fuzz-bus-message.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "bus-dump.h"
diff --git a/src/fuzz/fuzz-calendarspec.c b/src/fuzz/fuzz-calendarspec.c
index 8f031503e9..80801723fd 100644
--- a/src/fuzz/fuzz-calendarspec.c
+++ b/src/fuzz/fuzz-calendarspec.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "calendarspec.h"
diff --git a/src/fuzz/fuzz-catalog.c b/src/fuzz/fuzz-catalog.c
index ecf25b18d7..f013455730 100644
--- a/src/fuzz/fuzz-catalog.c
+++ b/src/fuzz/fuzz-catalog.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "catalog.h"
#include "fd-util.h"
diff --git a/src/fuzz/fuzz-compress.c b/src/fuzz/fuzz-compress.c
index 9c5dfc92c0..f94fd0673e 100644
--- a/src/fuzz/fuzz-compress.c
+++ b/src/fuzz/fuzz-compress.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
diff --git a/src/fuzz/fuzz-dhcp-server.c b/src/fuzz/fuzz-dhcp-server.c
index 71bb99a381..c854d921c0 100644
--- a/src/fuzz/fuzz-dhcp-server.c
+++ b/src/fuzz/fuzz-dhcp-server.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <sys/stat.h>
diff --git a/src/fuzz/fuzz-dhcp6-client.c b/src/fuzz/fuzz-dhcp6-client.c
index 6d887eaf1f..e5e70dd606 100644
--- a/src/fuzz/fuzz-dhcp6-client.c
+++ b/src/fuzz/fuzz-dhcp6-client.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <unistd.h>
diff --git a/src/fuzz/fuzz-dns-packet.c b/src/fuzz/fuzz-dns-packet.c
index 9bf95b9c76..b9a0aa1216 100644
--- a/src/fuzz/fuzz-dns-packet.c
+++ b/src/fuzz/fuzz-dns-packet.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "fuzz.h"
#include "memory-util.h"
diff --git a/src/fuzz/fuzz-env-file.c b/src/fuzz/fuzz-env-file.c
index d945dfc02c..e0dac260b0 100644
--- a/src/fuzz/fuzz-env-file.c
+++ b/src/fuzz/fuzz-env-file.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdio.h>
diff --git a/src/fuzz/fuzz-hostname-util.c b/src/fuzz/fuzz-hostname-util.c
index 2130a4a811..0a81e74424 100644
--- a/src/fuzz/fuzz-hostname-util.c
+++ b/src/fuzz/fuzz-hostname-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "fd-util.h"
diff --git a/src/fuzz/fuzz-journal-remote.c b/src/fuzz/fuzz-journal-remote.c
index 3ab4eb07fa..9adbd43748 100644
--- a/src/fuzz/fuzz-journal-remote.c
+++ b/src/fuzz/fuzz-journal-remote.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "fuzz.h"
diff --git a/src/fuzz/fuzz-journald-audit.c b/src/fuzz/fuzz-journald-audit.c
index 3f3ce7e8ee..6e8e18048e 100644
--- a/src/fuzz/fuzz-journald-audit.c
+++ b/src/fuzz/fuzz-journald-audit.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "fuzz.h"
#include "fuzz-journald.h"
diff --git a/src/fuzz/fuzz-journald-kmsg.c b/src/fuzz/fuzz-journald-kmsg.c
index f7426c8400..1b423d5cba 100644
--- a/src/fuzz/fuzz-journald-kmsg.c
+++ b/src/fuzz/fuzz-journald-kmsg.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "fuzz.h"
#include "fuzz-journald.h"
diff --git a/src/fuzz/fuzz-journald-native-fd.c b/src/fuzz/fuzz-journald-native-fd.c
index 8e3e850fbb..fcfc5dfaba 100644
--- a/src/fuzz/fuzz-journald-native-fd.c
+++ b/src/fuzz/fuzz-journald-native-fd.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "fd-util.h"
#include "fs-util.h"
diff --git a/src/fuzz/fuzz-journald-native.c b/src/fuzz/fuzz-journald-native.c
index f4de5fd8eb..6531c4f668 100644
--- a/src/fuzz/fuzz-journald-native.c
+++ b/src/fuzz/fuzz-journald-native.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "fuzz.h"
#include "fuzz-journald.h"
diff --git a/src/fuzz/fuzz-journald-stream.c b/src/fuzz/fuzz-journald-stream.c
index 0991b287c9..038b335cb3 100644
--- a/src/fuzz/fuzz-journald-stream.c
+++ b/src/fuzz/fuzz-journald-stream.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <linux/sockios.h>
#include <sys/ioctl.h>
diff --git a/src/fuzz/fuzz-journald-syslog.c b/src/fuzz/fuzz-journald-syslog.c
index 100f0ce691..72ec610fbf 100644
--- a/src/fuzz/fuzz-journald-syslog.c
+++ b/src/fuzz/fuzz-journald-syslog.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "fuzz.h"
#include "fuzz-journald.h"
diff --git a/src/fuzz/fuzz-journald.c b/src/fuzz/fuzz-journald.c
index 950e885cae..e2f73ffa7e 100644
--- a/src/fuzz/fuzz-journald.c
+++ b/src/fuzz/fuzz-journald.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "fuzz-journald.h"
diff --git a/src/fuzz/fuzz-journald.h b/src/fuzz/fuzz-journald.h
index 77e3b0c064..4abb1005ca 100644
--- a/src/fuzz/fuzz-journald.h
+++ b/src/fuzz/fuzz-journald.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "journald-server.h"
diff --git a/src/fuzz/fuzz-json.c b/src/fuzz/fuzz-json.c
index c01e2a570c..f9a0e818c4 100644
--- a/src/fuzz/fuzz-json.c
+++ b/src/fuzz/fuzz-json.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "fileio.h"
diff --git a/src/fuzz/fuzz-lldp.c b/src/fuzz/fuzz-lldp.c
index 7f252309cd..5747135b32 100644
--- a/src/fuzz/fuzz-lldp.c
+++ b/src/fuzz/fuzz-lldp.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <unistd.h>
diff --git a/src/fuzz/fuzz-main.c b/src/fuzz/fuzz-main.c
index d5c9984989..2df2993cbf 100644
--- a/src/fuzz/fuzz-main.c
+++ b/src/fuzz/fuzz-main.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "log.h"
diff --git a/src/fuzz/fuzz-ndisc-rs.c b/src/fuzz/fuzz-ndisc-rs.c
index d8d256d127..d74cd2fffc 100644
--- a/src/fuzz/fuzz-ndisc-rs.c
+++ b/src/fuzz/fuzz-ndisc-rs.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <arpa/inet.h>
#include <netinet/icmp6.h>
diff --git a/src/fuzz/fuzz-nspawn-oci.c b/src/fuzz/fuzz-nspawn-oci.c
index 004230eafe..cfebf65c00 100644
--- a/src/fuzz/fuzz-nspawn-oci.c
+++ b/src/fuzz/fuzz-nspawn-oci.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "fd-util.h"
diff --git a/src/fuzz/fuzz-nspawn-settings.c b/src/fuzz/fuzz-nspawn-settings.c
index aa0a8225b4..bd98ed26e8 100644
--- a/src/fuzz/fuzz-nspawn-settings.c
+++ b/src/fuzz/fuzz-nspawn-settings.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "fd-util.h"
diff --git a/src/fuzz/fuzz-time-util.c b/src/fuzz/fuzz-time-util.c
index 22b2496fcb..bf2a66336c 100644
--- a/src/fuzz/fuzz-time-util.c
+++ b/src/fuzz/fuzz-time-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "fd-util.h"
diff --git a/src/fuzz/fuzz-udev-database.c b/src/fuzz/fuzz-udev-database.c
index 9d7c0fa3e1..2a48c14961 100644
--- a/src/fuzz/fuzz-udev-database.c
+++ b/src/fuzz/fuzz-udev-database.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "device-internal.h"
#include "device-private.h"
diff --git a/src/fuzz/fuzz-udev-rule-parse-value.c b/src/fuzz/fuzz-udev-rule-parse-value.c
new file mode 100644
index 0000000000..404d0cd142
--- /dev/null
+++ b/src/fuzz/fuzz-udev-rule-parse-value.c
@@ -0,0 +1,31 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+#include <string.h>
+
+#include "alloc-util.h"
+#include "fuzz.h"
+#include "udev-util.h"
+
+int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
+ _cleanup_free_ char *str = NULL;
+ int r;
+ char *value = UINT_TO_PTR(0x12345678U);
+ char *endpos = UINT_TO_PTR(0x87654321U);
+
+ assert_se(str = malloc(size + 1));
+ memcpy(str, data, size);
+ str[size] = '\0';
+
+ r = udev_rule_parse_value(str, &value, &endpos);
+
+ if (r < 0) {
+ /* not modified on failure */
+ assert_se(value == UINT_TO_PTR(0x12345678U));
+ assert_se(endpos == UINT_TO_PTR(0x87654321U));
+ } else {
+ assert_se(endpos <= str + size);
+ assert_se(endpos > str + 1);
+ }
+
+ return 0;
+}
diff --git a/src/fuzz/fuzz-udev-rules.c b/src/fuzz/fuzz-udev-rules.c
index 7530d80bef..e1140bc68e 100644
--- a/src/fuzz/fuzz-udev-rules.c
+++ b/src/fuzz/fuzz-udev-rules.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdio.h>
diff --git a/src/fuzz/fuzz-unit-file.c b/src/fuzz/fuzz-unit-file.c
index c0661433a3..e67f6e9199 100644
--- a/src/fuzz/fuzz-unit-file.c
+++ b/src/fuzz/fuzz-unit-file.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "conf-parser.h"
#include "fd-util.h"
diff --git a/src/fuzz/fuzz-varlink.c b/src/fuzz/fuzz-varlink.c
index 31c13e2bea..f26050cf0e 100644
--- a/src/fuzz/fuzz-varlink.c
+++ b/src/fuzz/fuzz-varlink.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <unistd.h>
diff --git a/src/fuzz/fuzz-xdg-desktop.c b/src/fuzz/fuzz-xdg-desktop.c
index f8a1b5b28b..23077e48dc 100644
--- a/src/fuzz/fuzz-xdg-desktop.c
+++ b/src/fuzz/fuzz-xdg-desktop.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "fd-util.h"
diff --git a/src/fuzz/fuzz.h b/src/fuzz/fuzz.h
index 1e56526259..579b0eed73 100644
--- a/src/fuzz/fuzz.h
+++ b/src/fuzz/fuzz.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stddef.h>
diff --git a/src/fuzz/meson.build b/src/fuzz/meson.build
index d984382020..f8f0c386b3 100644
--- a/src/fuzz/meson.build
+++ b/src/fuzz/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
fuzzers += [
[['src/fuzz/fuzz-bus-message.c'],
@@ -151,4 +151,8 @@ fuzzers += [
'src/xdg-autostart-generator/xdg-autostart-service.c'],
[],
[]],
+
+ [['src/fuzz/fuzz-udev-rule-parse-value.c'],
+ [libshared],
+ []],
]
diff --git a/src/getty-generator/getty-generator.c b/src/getty-generator/getty-generator.c
index 04dcacfd59..2f26214ec3 100644
--- a/src/getty-generator/getty-generator.c
+++ b/src/getty-generator/getty-generator.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c
index 0d18c91c62..f9d0ca5421 100644
--- a/src/gpt-auto-generator/gpt-auto-generator.c
+++ b/src/gpt-auto-generator/gpt-auto-generator.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdlib.h>
#include <unistd.h>
diff --git a/src/hibernate-resume/hibernate-resume-generator.c b/src/hibernate-resume/hibernate-resume-generator.c
index 95af8efa7e..04a28c9053 100644
--- a/src/hibernate-resume/hibernate-resume-generator.c
+++ b/src/hibernate-resume/hibernate-resume-generator.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stdio.h>
diff --git a/src/hibernate-resume/hibernate-resume.c b/src/hibernate-resume/hibernate-resume.c
index 17e7cd1a00..d8f91f4e66 100644
--- a/src/hibernate-resume/hibernate-resume.c
+++ b/src/hibernate-resume/hibernate-resume.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stdio.h>
diff --git a/src/home/home-util.c b/src/home/home-util.c
index 8e28e3ab76..cd971b7cda 100644
--- a/src/home/home-util.c
+++ b/src/home/home-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "dns-domain.h"
#include "home-util.h"
diff --git a/src/home/home-util.h b/src/home/home-util.h
index 73602e4f8e..fba1c7d8f1 100644
--- a/src/home/home-util.h
+++ b/src/home/home-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/home/homectl-fido2.c b/src/home/homectl-fido2.c
index 0019f59f0f..5557b70e67 100644
--- a/src/home/homectl-fido2.c
+++ b/src/home/homectl-fido2.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#if HAVE_LIBFIDO2
#include <fido.h>
diff --git a/src/home/homectl-fido2.h b/src/home/homectl-fido2.h
index 0d9faefa81..d0349f5405 100644
--- a/src/home/homectl-fido2.h
+++ b/src/home/homectl-fido2.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "json.h"
diff --git a/src/home/homectl-pkcs11.c b/src/home/homectl-pkcs11.c
index 592a6413e1..4b7f8336aa 100644
--- a/src/home/homectl-pkcs11.c
+++ b/src/home/homectl-pkcs11.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "errno-util.h"
#include "format-table.h"
diff --git a/src/home/homectl-pkcs11.h b/src/home/homectl-pkcs11.h
index 0403c73ea1..5c30feeed4 100644
--- a/src/home/homectl-pkcs11.h
+++ b/src/home/homectl-pkcs11.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "json.h"
diff --git a/src/home/homectl-recovery-key.c b/src/home/homectl-recovery-key.c
index 3311205db5..4a6649d25c 100644
--- a/src/home/homectl-recovery-key.c
+++ b/src/home/homectl-recovery-key.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "errno-util.h"
#include "homectl-recovery-key.h"
diff --git a/src/home/homectl-recovery-key.h b/src/home/homectl-recovery-key.h
index 489d35fa5b..ab195f94db 100644
--- a/src/home/homectl-recovery-key.h
+++ b/src/home/homectl-recovery-key.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "json.h"
diff --git a/src/home/homectl.c b/src/home/homectl.c
index 486aec066d..7cfda7ed2f 100644
--- a/src/home/homectl.c
+++ b/src/home/homectl.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <getopt.h>
@@ -215,9 +215,7 @@ static int acquire_existing_password(const char *user_name, UserRecord *hr, bool
return log_error_errno(r, "Failed to store password: %m");
string_erase(e);
-
- if (unsetenv("PASSWORD") < 0)
- return log_error_errno(errno, "Failed to unset $PASSWORD: %m");
+ assert_se(unsetenv("PASSWORD") == 0);
return 0;
}
@@ -255,9 +253,7 @@ static int acquire_token_pin(const char *user_name, UserRecord *hr) {
return log_error_errno(r, "Failed to store token PIN: %m");
string_erase(e);
-
- if (unsetenv("PIN") < 0)
- return log_error_errno(errno, "Failed to unset $PIN: %m");
+ assert_se(unsetenv("PIN") == 0);
return 0;
}
@@ -997,9 +993,7 @@ static int acquire_new_password(
return log_error_errno(r, "Failed to store password: %m");
string_erase(e);
-
- if (unsetenv("NEWPASSWORD") < 0)
- return log_error_errno(errno, "Failed to unset $NEWPASSWORD: %m");
+ assert_se(unsetenv("NEWPASSWORD") == 0);
if (ret)
*ret = TAKE_PTR(copy);
diff --git a/src/home/homed-bus.c b/src/home/homed-bus.c
index a5627d0a1f..d70fda5f44 100644
--- a/src/home/homed-bus.c
+++ b/src/home/homed-bus.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "homed-bus.h"
#include "strv.h"
diff --git a/src/home/homed-bus.h b/src/home/homed-bus.h
index 20f13b43ad..977679b10a 100644
--- a/src/home/homed-bus.h
+++ b/src/home/homed-bus.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/home/homed-conf.c b/src/home/homed-conf.c
index c6c2e1787f..4f46b0c886 100644
--- a/src/home/homed-conf.c
+++ b/src/home/homed-conf.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "conf-parser.h"
#include "def.h"
diff --git a/src/home/homed-conf.h b/src/home/homed-conf.h
index 00eb3fdb68..1defaa998b 100644
--- a/src/home/homed-conf.h
+++ b/src/home/homed-conf.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "conf-parser.h"
diff --git a/src/home/homed-home-bus.c b/src/home/homed-home-bus.c
index 08f77b4f51..5643a9a6e4 100644
--- a/src/home/homed-home-bus.c
+++ b/src/home/homed-home-bus.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <linux/capability.h>
diff --git a/src/home/homed-home-bus.h b/src/home/homed-home-bus.h
index 8ac7ff9995..5522178055 100644
--- a/src/home/homed-home-bus.h
+++ b/src/home/homed-home-bus.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/home/homed-home.c b/src/home/homed-home.c
index 6d0f0fbd0e..7f4532e0cc 100644
--- a/src/home/homed-home.c
+++ b/src/home/homed-home.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#if HAVE_LINUX_MEMFD_H
#include <linux/memfd.h>
diff --git a/src/home/homed-home.h b/src/home/homed-home.h
index 97879940df..4c24ee72a7 100644
--- a/src/home/homed-home.h
+++ b/src/home/homed-home.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
typedef struct Home Home;
diff --git a/src/home/homed-manager-bus.c b/src/home/homed-manager-bus.c
index a599c58297..d3ac98f901 100644
--- a/src/home/homed-manager-bus.c
+++ b/src/home/homed-manager-bus.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <linux/capability.h>
diff --git a/src/home/homed-manager-bus.h b/src/home/homed-manager-bus.h
index 93bef9df8e..7db29fa88f 100644
--- a/src/home/homed-manager-bus.h
+++ b/src/home/homed-manager-bus.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "bus-util.h"
diff --git a/src/home/homed-manager.c b/src/home/homed-manager.c
index 0490032416..365ea4d234 100644
--- a/src/home/homed-manager.c
+++ b/src/home/homed-manager.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <grp.h>
#include <linux/fs.h>
@@ -159,7 +159,7 @@ static int on_home_inotify(sd_event_source *s, const struct inotify_event *event
(void) bus_manager_emit_auto_login_changed(m);
}
- if ((event->mask & (IN_DELETE|IN_MOVED_FROM|IN_DELETE)) != 0) {
+ if ((event->mask & (IN_DELETE | IN_CLOSE_WRITE | IN_MOVED_FROM)) != 0) {
Home *h;
if (FLAGS_SET(event->mask, IN_DELETE))
diff --git a/src/home/homed-manager.h b/src/home/homed-manager.h
index c86bf4300b..851b302f59 100644
--- a/src/home/homed-manager.h
+++ b/src/home/homed-manager.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <openssl/evp.h>
diff --git a/src/home/homed-operation.c b/src/home/homed-operation.c
index 156a25ec81..3847fc5d68 100644
--- a/src/home/homed-operation.c
+++ b/src/home/homed-operation.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "fd-util.h"
#include "homed-operation.h"
diff --git a/src/home/homed-operation.h b/src/home/homed-operation.h
index 0771dc6be0..6721363b2a 100644
--- a/src/home/homed-operation.h
+++ b/src/home/homed-operation.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <sd-bus.h>
diff --git a/src/home/homed-varlink.c b/src/home/homed-varlink.c
index dfc615a097..c42908349a 100644
--- a/src/home/homed-varlink.c
+++ b/src/home/homed-varlink.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "group-record.h"
#include "homed-varlink.h"
diff --git a/src/home/homed-varlink.h b/src/home/homed-varlink.h
index 4454d23442..2e404f02fa 100644
--- a/src/home/homed-varlink.h
+++ b/src/home/homed-varlink.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "homed-manager.h"
diff --git a/src/home/homed.c b/src/home/homed.c
index eb5a4a2ea5..e4d64bdfda 100644
--- a/src/home/homed.c
+++ b/src/home/homed.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/stat.h>
#include <sys/types.h>
diff --git a/src/home/homework-cifs.c b/src/home/homework-cifs.c
index cfceaed742..2736095f93 100644
--- a/src/home/homework-cifs.c
+++ b/src/home/homework-cifs.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "dirent-util.h"
#include "fd-util.h"
diff --git a/src/home/homework-cifs.h b/src/home/homework-cifs.h
index ee799e2a4b..da2e50a795 100644
--- a/src/home/homework-cifs.h
+++ b/src/home/homework-cifs.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "homework.h"
diff --git a/src/home/homework-directory.c b/src/home/homework-directory.c
index bffeac0a5e..2d800033ee 100644
--- a/src/home/homework-directory.c
+++ b/src/home/homework-directory.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/mount.h>
diff --git a/src/home/homework-directory.h b/src/home/homework-directory.h
index 717837f348..27d640f380 100644
--- a/src/home/homework-directory.h
+++ b/src/home/homework-directory.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "homework.h"
diff --git a/src/home/homework-fido2.c b/src/home/homework-fido2.c
index 36fe059ab3..2f717a5938 100644
--- a/src/home/homework-fido2.c
+++ b/src/home/homework-fido2.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fido.h>
diff --git a/src/home/homework-fido2.h b/src/home/homework-fido2.h
index d3b142a923..a1dcba2d86 100644
--- a/src/home/homework-fido2.h
+++ b/src/home/homework-fido2.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "user-record.h"
diff --git a/src/home/homework-fscrypt.c b/src/home/homework-fscrypt.c
index da9bb64b71..d0676f8ae6 100644
--- a/src/home/homework-fscrypt.c
+++ b/src/home/homework-fscrypt.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <linux/fs.h>
#include <openssl/evp.h>
diff --git a/src/home/homework-fscrypt.h b/src/home/homework-fscrypt.h
index e5cf7baaaa..50b03993e0 100644
--- a/src/home/homework-fscrypt.h
+++ b/src/home/homework-fscrypt.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "homework.h"
diff --git a/src/home/homework-luks.c b/src/home/homework-luks.c
index 947a559c26..b0b2d8029f 100644
--- a/src/home/homework-luks.c
+++ b/src/home/homework-luks.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <libfdisk.h>
#include <linux/loop.h>
diff --git a/src/home/homework-luks.h b/src/home/homework-luks.h
index af0ad4b504..c43bdfcba3 100644
--- a/src/home/homework-luks.h
+++ b/src/home/homework-luks.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "cryptsetup-util.h"
diff --git a/src/home/homework-mount.c b/src/home/homework-mount.c
index 853181b80d..5e737687d1 100644
--- a/src/home/homework-mount.c
+++ b/src/home/homework-mount.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sched.h>
#include <sys/mount.h>
diff --git a/src/home/homework-mount.h b/src/home/homework-mount.h
index cf7c8cfcab..2a4591c1f4 100644
--- a/src/home/homework-mount.h
+++ b/src/home/homework-mount.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/home/homework-pkcs11.c b/src/home/homework-pkcs11.c
index 3a03fb7200..15402b1002 100644
--- a/src/home/homework-pkcs11.c
+++ b/src/home/homework-pkcs11.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "hexdecoct.h"
#include "homework-pkcs11.h"
diff --git a/src/home/homework-pkcs11.h b/src/home/homework-pkcs11.h
index 469ba7152f..c8674e0bc7 100644
--- a/src/home/homework-pkcs11.h
+++ b/src/home/homework-pkcs11.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#if HAVE_P11KIT
diff --git a/src/home/homework-quota.c b/src/home/homework-quota.c
index ba3917b9ce..7001870dfb 100644
--- a/src/home/homework-quota.c
+++ b/src/home/homework-quota.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/quota.h>
#include "blockdev-util.h"
diff --git a/src/home/homework-quota.h b/src/home/homework-quota.h
index e6cc16df50..a21c9ba8b1 100644
--- a/src/home/homework-quota.h
+++ b/src/home/homework-quota.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "user-record.h"
diff --git a/src/home/homework.c b/src/home/homework.c
index 4b924b2a7c..b61f650662 100644
--- a/src/home/homework.c
+++ b/src/home/homework.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stddef.h>
#include <sys/mount.h>
diff --git a/src/home/homework.h b/src/home/homework.h
index c9b0d3b432..fb53fd49b0 100644
--- a/src/home/homework.h
+++ b/src/home/homework.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <linux/fs.h>
diff --git a/src/home/meson.build b/src/home/meson.build
index 69bacacf80..444dc47619 100644
--- a/src/home/meson.build
+++ b/src/home/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
systemd_homework_sources = files('''
home-util.c
@@ -107,8 +107,10 @@ if conf.get('ENABLE_HOMED') == 1
install_data('org.freedesktop.home1.policy',
install_dir : polkitpolicydir)
- install_data('homed.conf',
- install_dir : pkgsysconfdir)
+ if install_sysconfdir
+ install_data('homed.conf',
+ install_dir : pkgsysconfdir)
+ endif
endif
tests += [
diff --git a/src/home/modhex.c b/src/home/modhex.c
index 82a5b20d3f..ae5f895722 100644
--- a/src/home/modhex.c
+++ b/src/home/modhex.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
diff --git a/src/home/modhex.h b/src/home/modhex.h
index e0067ae44b..7776ed0ee1 100644
--- a/src/home/modhex.h
+++ b/src/home/modhex.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
/* 256 bit keys = 32 bytes */
diff --git a/src/home/org.freedesktop.home1.conf b/src/home/org.freedesktop.home1.conf
index d615501054..1975d5f1a2 100644
--- a/src/home/org.freedesktop.home1.conf
+++ b/src/home/org.freedesktop.home1.conf
@@ -2,7 +2,7 @@
<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
-<!-- SPDX-License-Identifier: LGPL-2.1+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<busconfig>
diff --git a/src/home/org.freedesktop.home1.policy b/src/home/org.freedesktop.home1.policy
index 43a373d633..10ad7c283a 100644
--- a/src/home/org.freedesktop.home1.policy
+++ b/src/home/org.freedesktop.home1.policy
@@ -2,7 +2,7 @@
<!DOCTYPE policyconfig PUBLIC "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
"http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
-<!-- SPDX-License-Identifier: LGPL-2.1+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<policyconfig>
diff --git a/src/home/org.freedesktop.home1.service b/src/home/org.freedesktop.home1.service
index cff19b3861..fb03914592 100644
--- a/src/home/org.freedesktop.home1.service
+++ b/src/home/org.freedesktop.home1.service
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
[D-BUS Service]
Name=org.freedesktop.home1
diff --git a/src/home/pam_systemd_home.c b/src/home/pam_systemd_home.c
index 4d7c99733e..a91df91447 100644
--- a/src/home/pam_systemd_home.c
+++ b/src/home/pam_systemd_home.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <security/pam_ext.h>
#include <security/pam_modules.h>
@@ -625,6 +625,15 @@ static int acquire_home(
do_auth = true;
}
+ /* Later PAM modules may need the auth token, but only during pam_authenticate. */
+ if (please_authenticate && !strv_isempty(secret->password)) {
+ r = pam_set_item(handle, PAM_AUTHTOK, *secret->password);
+ if (r < 0) {
+ pam_syslog(handle, LOG_ERR, "Failed to set PAM auth token: %s", pam_strerror(handle, r));
+ return r;
+ }
+ }
+
r = pam_set_data(handle, fd_field, FD_TO_PTR(acquired_fd), cleanup_home_fd);
if (r < 0) {
pam_syslog(handle, LOG_ERR, "Failed to set PAM bus data: %s", pam_strerror(handle, r));
diff --git a/src/home/pam_systemd_home.sym b/src/home/pam_systemd_home.sym
index daec0499e1..293c06fe2c 100644
--- a/src/home/pam_systemd_home.sym
+++ b/src/home/pam_systemd_home.sym
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
{
global:
diff --git a/src/home/test-modhex.c b/src/home/test-modhex.c
index 4eebeeaaea..1bd9061a7b 100644
--- a/src/home/test-modhex.c
+++ b/src/home/test-modhex.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "modhex.h"
#include "alloc-util.h"
diff --git a/src/home/user-record-pwquality.c b/src/home/user-record-pwquality.c
index 08d7dc0169..23c3357836 100644
--- a/src/home/user-record-pwquality.c
+++ b/src/home/user-record-pwquality.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "bus-common-errors.h"
#include "errno-util.h"
diff --git a/src/home/user-record-pwquality.h b/src/home/user-record-pwquality.h
index a37d369181..b3b2690f7e 100644
--- a/src/home/user-record-pwquality.h
+++ b/src/home/user-record-pwquality.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/home/user-record-sign.c b/src/home/user-record-sign.c
index 91f8639997..8cd3a46251 100644
--- a/src/home/user-record-sign.c
+++ b/src/home/user-record-sign.c
@@ -1,3 +1,5 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
#include <openssl/pem.h>
#include "fd-util.h"
diff --git a/src/home/user-record-sign.h b/src/home/user-record-sign.h
index f045c8837b..87c6813e92 100644
--- a/src/home/user-record-sign.h
+++ b/src/home/user-record-sign.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <openssl/evp.h>
diff --git a/src/home/user-record-util.c b/src/home/user-record-util.c
index 3ed64128b2..6bcbb56aac 100644
--- a/src/home/user-record-util.c
+++ b/src/home/user-record-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/xattr.h>
diff --git a/src/home/user-record-util.h b/src/home/user-record-util.h
index f8bae707bc..302e7a5dff 100644
--- a/src/home/user-record-util.h
+++ b/src/home/user-record-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/hostname/hostnamectl.c b/src/hostname/hostnamectl.c
index c38600b9c3..0d39e9176f 100644
--- a/src/hostname/hostnamectl.c
+++ b/src/hostname/hostnamectl.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <getopt.h>
#include <locale.h>
diff --git a/src/hostname/hostnamed.c b/src/hostname/hostnamed.c
index 44c2b9a631..a1794bdab1 100644
--- a/src/hostname/hostnamed.c
+++ b/src/hostname/hostnamed.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <sys/utsname.h>
diff --git a/src/hostname/meson.build b/src/hostname/meson.build
index db66ba5531..718a7bd4f1 100644
--- a/src/hostname/meson.build
+++ b/src/hostname/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
if conf.get('ENABLE_HOSTNAMED') == 1
install_data('org.freedesktop.hostname1.conf',
diff --git a/src/hostname/org.freedesktop.hostname1.conf b/src/hostname/org.freedesktop.hostname1.conf
index e2658c6c95..2f34102e98 100644
--- a/src/hostname/org.freedesktop.hostname1.conf
+++ b/src/hostname/org.freedesktop.hostname1.conf
@@ -3,7 +3,7 @@
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<!--
- SPDX-License-Identifier: LGPL-2.1+
+ SPDX-License-Identifier: LGPL-2.1-or-later
This file is part of systemd.
diff --git a/src/hostname/org.freedesktop.hostname1.policy b/src/hostname/org.freedesktop.hostname1.policy
index 5969a82b29..7d28c395cf 100644
--- a/src/hostname/org.freedesktop.hostname1.policy
+++ b/src/hostname/org.freedesktop.hostname1.policy
@@ -3,7 +3,7 @@
"http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
<!--
- SPDX-License-Identifier: LGPL-2.1+
+ SPDX-License-Identifier: LGPL-2.1-or-later
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
diff --git a/src/hostname/org.freedesktop.hostname1.service b/src/hostname/org.freedesktop.hostname1.service
index 98c7bcbd84..1d6b9c8fe7 100644
--- a/src/hostname/org.freedesktop.hostname1.service
+++ b/src/hostname/org.freedesktop.hostname1.service
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# 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
diff --git a/src/hwdb/hwdb.c b/src/hwdb/hwdb.c
index eb038a8b55..1246d68969 100644
--- a/src/hwdb/hwdb.c
+++ b/src/hwdb/hwdb.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <getopt.h>
diff --git a/src/id128/id128.c b/src/id128/id128.c
index 236043bf8a..086f398108 100644
--- a/src/id128/id128.c
+++ b/src/id128/id128.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <getopt.h>
#include <stdio.h>
diff --git a/src/import/curl-util.c b/src/import/curl-util.c
index a1b3147f65..5e0904379e 100644
--- a/src/import/curl-util.c
+++ b/src/import/curl-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
@@ -50,7 +50,7 @@ static int curl_glue_on_io(sd_event_source *s, int fd, uint32_t revents, void *u
return 0;
}
-static int curl_glue_socket_callback(CURLM *curl, curl_socket_t s, int action, void *userdata, void *socketp) {
+static int curl_glue_socket_callback(CURL *curl, curl_socket_t s, int action, void *userdata, void *socketp) {
sd_event_source *io = socketp;
CurlGlue *g = userdata;
uint32_t events = 0;
@@ -178,7 +178,7 @@ CurlGlue *curl_glue_unref(CurlGlue *g) {
int curl_glue_new(CurlGlue **glue, sd_event *event) {
_cleanup_(curl_glue_unrefp) CurlGlue *g = NULL;
- _cleanup_(curl_multi_cleanupp) CURL *c = NULL;
+ _cleanup_(curl_multi_cleanupp) CURLM *c = NULL;
_cleanup_(sd_event_unrefp) sd_event *e = NULL;
int r;
diff --git a/src/import/curl-util.h b/src/import/curl-util.h
index fa80b23342..4ab52d73a4 100644
--- a/src/import/curl-util.h
+++ b/src/import/curl-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <curl/curl.h>
@@ -35,5 +35,5 @@ int curl_header_strdup(const void *contents, size_t sz, const char *field, char
int curl_parse_http_time(const char *t, usec_t *ret);
DEFINE_TRIVIAL_CLEANUP_FUNC(CURL*, curl_easy_cleanup);
-DEFINE_TRIVIAL_CLEANUP_FUNC(CURL*, curl_multi_cleanup);
+DEFINE_TRIVIAL_CLEANUP_FUNC(CURLM*, curl_multi_cleanup);
DEFINE_TRIVIAL_CLEANUP_FUNC(struct curl_slist*, curl_slist_free_all);
diff --git a/src/import/export-raw.c b/src/import/export-raw.c
index a0ac6bc7f4..3e0348f4c1 100644
--- a/src/import/export-raw.c
+++ b/src/import/export-raw.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/sendfile.h>
diff --git a/src/import/export-raw.h b/src/import/export-raw.h
index 196b8ef28f..27009e4e35 100644
--- a/src/import/export-raw.h
+++ b/src/import/export-raw.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-event.h"
diff --git a/src/import/export-tar.c b/src/import/export-tar.c
index 5f89880ed6..b8b650f01e 100644
--- a/src/import/export-tar.c
+++ b/src/import/export-tar.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "sd-daemon.h"
diff --git a/src/import/export-tar.h b/src/import/export-tar.h
index 6abb7d383a..3b55d12c1f 100644
--- a/src/import/export-tar.h
+++ b/src/import/export-tar.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-event.h"
diff --git a/src/import/export.c b/src/import/export.c
index 77d24b8635..83990df64c 100644
--- a/src/import/export.c
+++ b/src/import/export.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <getopt.h>
#include <locale.h>
diff --git a/src/import/import-common.c b/src/import/import-common.c
index ebd7472892..250270511d 100644
--- a/src/import/import-common.c
+++ b/src/import/import-common.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sched.h>
#include <sys/prctl.h>
diff --git a/src/import/import-common.h b/src/import/import-common.h
index 94d224f412..b27a980839 100644
--- a/src/import/import-common.h
+++ b/src/import/import-common.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <sys/types.h>
diff --git a/src/import/import-compress.c b/src/import/import-compress.c
index 3fbd067790..b89ffb1b2a 100644
--- a/src/import/import-compress.c
+++ b/src/import/import-compress.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "import-compress.h"
#include "string-table.h"
diff --git a/src/import/import-compress.h b/src/import/import-compress.h
index 859bd0e1a4..e40f4dba0a 100644
--- a/src/import/import-compress.h
+++ b/src/import/import-compress.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#if HAVE_BZIP2
diff --git a/src/import/import-fs.c b/src/import/import-fs.c
index f631f857fc..3b43ea112d 100644
--- a/src/import/import-fs.c
+++ b/src/import/import-fs.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <getopt.h>
#include <locale.h>
diff --git a/src/import/import-raw.c b/src/import/import-raw.c
index 7e9f3441f4..9f5c13ba16 100644
--- a/src/import/import-raw.c
+++ b/src/import/import-raw.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <linux/fs.h>
diff --git a/src/import/import-raw.h b/src/import/import-raw.h
index de4c3ea337..4612a9ffef 100644
--- a/src/import/import-raw.h
+++ b/src/import/import-raw.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-event.h"
diff --git a/src/import/import-tar.c b/src/import/import-tar.c
index 5d2bf22fb2..9f68d45eac 100644
--- a/src/import/import-tar.c
+++ b/src/import/import-tar.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <linux/fs.h>
diff --git a/src/import/import-tar.h b/src/import/import-tar.h
index 347f522614..afbe98ad05 100644
--- a/src/import/import-tar.h
+++ b/src/import/import-tar.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-event.h"
diff --git a/src/import/import.c b/src/import/import.c
index 64ec066a8f..eade0f0ec8 100644
--- a/src/import/import.c
+++ b/src/import/import.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <getopt.h>
#include <locale.h>
diff --git a/src/import/importd.c b/src/import/importd.c
index 17944b8dd3..63f80e0e38 100644
--- a/src/import/importd.c
+++ b/src/import/importd.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/prctl.h>
#include <sys/wait.h>
diff --git a/src/import/meson.build b/src/import/meson.build
index 1c15fd883f..2207b8620e 100644
--- a/src/import/meson.build
+++ b/src/import/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
systemd_importd_sources = files('''
importd.c
diff --git a/src/import/org.freedesktop.import1.conf b/src/import/org.freedesktop.import1.conf
index 2fdb2ba77c..4838e79a15 100644
--- a/src/import/org.freedesktop.import1.conf
+++ b/src/import/org.freedesktop.import1.conf
@@ -3,7 +3,7 @@
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<!--
- SPDX-License-Identifier: LGPL-2.1+
+ SPDX-License-Identifier: LGPL-2.1-or-later
This file is part of systemd.
diff --git a/src/import/org.freedesktop.import1.policy b/src/import/org.freedesktop.import1.policy
index beea5fea67..9736816e33 100644
--- a/src/import/org.freedesktop.import1.policy
+++ b/src/import/org.freedesktop.import1.policy
@@ -3,7 +3,7 @@
"http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
<!--
- SPDX-License-Identifier: LGPL-2.1+
+ SPDX-License-Identifier: LGPL-2.1-or-later
This file is part of systemd.
diff --git a/src/import/org.freedesktop.import1.service b/src/import/org.freedesktop.import1.service
index 34d26d0732..4fe921f26e 100644
--- a/src/import/org.freedesktop.import1.service
+++ b/src/import/org.freedesktop.import1.service
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/src/import/pull-common.c b/src/import/pull-common.c
index fdc70447e1..33be609aec 100644
--- a/src/import/pull-common.c
+++ b/src/import/pull-common.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/prctl.h>
diff --git a/src/import/pull-common.h b/src/import/pull-common.h
index 65f239da2e..025bcee2bd 100644
--- a/src/import/pull-common.h
+++ b/src/import/pull-common.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/import/pull-job.c b/src/import/pull-job.c
index 4561794548..eea00380a4 100644
--- a/src/import/pull-job.c
+++ b/src/import/pull-job.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <sys/stat.h>
diff --git a/src/import/pull-job.h b/src/import/pull-job.h
index c907e74060..719196caec 100644
--- a/src/import/pull-job.h
+++ b/src/import/pull-job.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <gcrypt.h>
diff --git a/src/import/pull-raw.c b/src/import/pull-raw.c
index c32b77f14b..7956ef0395 100644
--- a/src/import/pull-raw.c
+++ b/src/import/pull-raw.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <curl/curl.h>
#include <linux/fs.h>
diff --git a/src/import/pull-raw.h b/src/import/pull-raw.h
index 4ccd65b7e6..e1d450d9df 100644
--- a/src/import/pull-raw.h
+++ b/src/import/pull-raw.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-event.h"
diff --git a/src/import/pull-tar.c b/src/import/pull-tar.c
index ede28bee1b..72e5b8be27 100644
--- a/src/import/pull-tar.c
+++ b/src/import/pull-tar.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <curl/curl.h>
#include <sys/prctl.h>
diff --git a/src/import/pull-tar.h b/src/import/pull-tar.h
index 76f920eea9..78d982cf5a 100644
--- a/src/import/pull-tar.h
+++ b/src/import/pull-tar.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-event.h"
diff --git a/src/import/pull.c b/src/import/pull.c
index 9b27ec2630..9aff377b93 100644
--- a/src/import/pull.c
+++ b/src/import/pull.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <getopt.h>
#include <locale.h>
diff --git a/src/import/qcow2-util.c b/src/import/qcow2-util.c
index e927b60fce..5a7232d3ed 100644
--- a/src/import/qcow2-util.c
+++ b/src/import/qcow2-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <zlib.h>
diff --git a/src/import/qcow2-util.h b/src/import/qcow2-util.h
index 7393d9837a..f17c159ee4 100644
--- a/src/import/qcow2-util.h
+++ b/src/import/qcow2-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int qcow2_detect(int fd);
diff --git a/src/import/test-qcow2.c b/src/import/test-qcow2.c
index 1703cfd167..77fed01dd3 100644
--- a/src/import/test-qcow2.c
+++ b/src/import/test-qcow2.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <sys/stat.h>
diff --git a/src/initctl/initctl.c b/src/initctl/initctl.c
index 050424e66c..e0b78334f5 100644
--- a/src/initctl/initctl.c
+++ b/src/initctl/initctl.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <ctype.h>
#include <errno.h>
diff --git a/src/journal-remote/journal-gatewayd.c b/src/journal-remote/journal-gatewayd.c
index c4d4502080..0723f7d8bb 100644
--- a/src/journal-remote/journal-gatewayd.c
+++ b/src/journal-remote/journal-gatewayd.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <getopt.h>
@@ -896,7 +896,7 @@ static int parse_argv(int argc, char *argv[]) {
if (arg_key_pem)
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
"Key file specified twice");
- r = read_full_file_full(AT_FDCWD, optarg, READ_FULL_FILE_CONNECT_SOCKET, &arg_key_pem, NULL);
+ r = read_full_file_full(AT_FDCWD, optarg, READ_FULL_FILE_CONNECT_SOCKET, NULL, &arg_key_pem, NULL);
if (r < 0)
return log_error_errno(r, "Failed to read key file: %m");
assert(arg_key_pem);
@@ -906,7 +906,7 @@ static int parse_argv(int argc, char *argv[]) {
if (arg_cert_pem)
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
"Certificate file specified twice");
- r = read_full_file_full(AT_FDCWD, optarg, READ_FULL_FILE_CONNECT_SOCKET, &arg_cert_pem, NULL);
+ r = read_full_file_full(AT_FDCWD, optarg, READ_FULL_FILE_CONNECT_SOCKET, NULL, &arg_cert_pem, NULL);
if (r < 0)
return log_error_errno(r, "Failed to read certificate file: %m");
assert(arg_cert_pem);
@@ -917,7 +917,7 @@ static int parse_argv(int argc, char *argv[]) {
if (arg_trust_pem)
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
"CA certificate file specified twice");
- r = read_full_file_full(AT_FDCWD, optarg, READ_FULL_FILE_CONNECT_SOCKET, &arg_trust_pem, NULL);
+ r = read_full_file_full(AT_FDCWD, optarg, READ_FULL_FILE_CONNECT_SOCKET, NULL, &arg_trust_pem, NULL);
if (r < 0)
return log_error_errno(r, "Failed to read CA certificate file: %m");
assert(arg_trust_pem);
diff --git a/src/journal-remote/journal-remote-main.c b/src/journal-remote/journal-remote-main.c
index 0e028a9e4a..d2aa1815c2 100644
--- a/src/journal-remote/journal-remote-main.c
+++ b/src/journal-remote/journal-remote-main.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <getopt.h>
#include <unistd.h>
@@ -1077,12 +1077,12 @@ static int parse_argv(int argc, char *argv[]) {
static int load_certificates(char **key, char **cert, char **trust) {
int r;
- r = read_full_file_full(AT_FDCWD, arg_key ?: PRIV_KEY_FILE, READ_FULL_FILE_CONNECT_SOCKET, key, NULL);
+ r = read_full_file_full(AT_FDCWD, arg_key ?: PRIV_KEY_FILE, READ_FULL_FILE_CONNECT_SOCKET, NULL, key, NULL);
if (r < 0)
return log_error_errno(r, "Failed to read key from file '%s': %m",
arg_key ?: PRIV_KEY_FILE);
- r = read_full_file_full(AT_FDCWD, arg_cert ?: CERT_FILE, READ_FULL_FILE_CONNECT_SOCKET, cert, NULL);
+ r = read_full_file_full(AT_FDCWD, arg_cert ?: CERT_FILE, READ_FULL_FILE_CONNECT_SOCKET, NULL, cert, NULL);
if (r < 0)
return log_error_errno(r, "Failed to read certificate from file '%s': %m",
arg_cert ?: CERT_FILE);
@@ -1090,7 +1090,7 @@ static int load_certificates(char **key, char **cert, char **trust) {
if (arg_trust_all)
log_info("Certificate checking disabled.");
else {
- r = read_full_file_full(AT_FDCWD, arg_trust ?: TRUST_FILE, READ_FULL_FILE_CONNECT_SOCKET, trust, NULL);
+ r = read_full_file_full(AT_FDCWD, arg_trust ?: TRUST_FILE, READ_FULL_FILE_CONNECT_SOCKET, NULL, trust, NULL);
if (r < 0)
return log_error_errno(r, "Failed to read CA certificate file '%s': %m",
arg_trust ?: TRUST_FILE);
diff --git a/src/journal-remote/journal-remote-parse.c b/src/journal-remote/journal-remote-parse.c
index dc047b2d49..7bc349c304 100644
--- a/src/journal-remote/journal-remote-parse.c
+++ b/src/journal-remote/journal-remote-parse.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "fd-util.h"
diff --git a/src/journal-remote/journal-remote-parse.h b/src/journal-remote/journal-remote-parse.h
index d6c77360a6..a5b51ad4d1 100644
--- a/src/journal-remote/journal-remote-parse.h
+++ b/src/journal-remote/journal-remote-parse.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-event.h"
diff --git a/src/journal-remote/journal-remote-write.c b/src/journal-remote/journal-remote-write.c
index ab5e03ab5a..764a3ec70b 100644
--- a/src/journal-remote/journal-remote-write.c
+++ b/src/journal-remote/journal-remote-write.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "journal-remote.h"
diff --git a/src/journal-remote/journal-remote-write.h b/src/journal-remote/journal-remote-write.h
index d42256e673..46b55219d7 100644
--- a/src/journal-remote/journal-remote-write.h
+++ b/src/journal-remote/journal-remote-write.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "journal-file.h"
diff --git a/src/journal-remote/journal-remote.c b/src/journal-remote/journal-remote.c
index b241d3355d..0cee844452 100644
--- a/src/journal-remote/journal-remote.c
+++ b/src/journal-remote/journal-remote.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/journal-remote/journal-remote.h b/src/journal-remote/journal-remote.h
index 4c25d43abf..247ffa9765 100644
--- a/src/journal-remote/journal-remote.h
+++ b/src/journal-remote/journal-remote.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-event.h"
diff --git a/src/journal-remote/journal-upload-journal.c b/src/journal-remote/journal-upload-journal.c
index da37b3416f..3296c2268e 100644
--- a/src/journal-remote/journal-upload-journal.c
+++ b/src/journal-remote/journal-upload-journal.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <curl/curl.h>
#include <stdbool.h>
diff --git a/src/journal-remote/journal-upload.c b/src/journal-remote/journal-upload.c
index 13ca90f957..bf362d0919 100644
--- a/src/journal-remote/journal-upload.c
+++ b/src/journal-remote/journal-upload.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <curl/curl.h>
#include <fcntl.h>
diff --git a/src/journal-remote/journal-upload.h b/src/journal-remote/journal-upload.h
index 4994cd8391..9ff5a7ba58 100644
--- a/src/journal-remote/journal-upload.h
+++ b/src/journal-remote/journal-upload.h
@@ -1,3 +1,5 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
#pragma once
#include <inttypes.h>
diff --git a/src/journal-remote/meson.build b/src/journal-remote/meson.build
index 87b8ba6495..4572f4bd1c 100644
--- a/src/journal-remote/meson.build
+++ b/src/journal-remote/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
systemd_journal_upload_sources = files('''
journal-upload.h
@@ -48,8 +48,10 @@ if conf.get('ENABLE_REMOTE') ==1 and conf.get('HAVE_LIBCURL') == 1
input : 'journal-upload.conf.in',
output : 'journal-upload.conf',
configuration : substs)
- install_data(journal_upload_conf,
- install_dir : pkgsysconfdir)
+ if install_sysconfdir
+ install_data(journal_upload_conf,
+ install_dir : pkgsysconfdir)
+ endif
endif
if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
@@ -57,8 +59,10 @@ if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
input : 'journal-remote.conf.in',
output : 'journal-remote.conf',
configuration : substs)
- install_data(journal_remote_conf,
- install_dir : pkgsysconfdir)
+ if install_sysconfdir
+ install_data(journal_remote_conf,
+ install_dir : pkgsysconfdir)
+ endif
install_data('browse.html',
install_dir : join_paths(pkgdatadir, 'gatewayd'))
diff --git a/src/journal-remote/microhttpd-util.c b/src/journal-remote/microhttpd-util.c
index 027f2c8ff5..d3fb0b8b19 100644
--- a/src/journal-remote/microhttpd-util.c
+++ b/src/journal-remote/microhttpd-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stddef.h>
#include <stdio.h>
diff --git a/src/journal-remote/microhttpd-util.h b/src/journal-remote/microhttpd-util.h
index 4ca9a5c4f1..7f90a09c77 100644
--- a/src/journal-remote/microhttpd-util.h
+++ b/src/journal-remote/microhttpd-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <microhttpd.h>
diff --git a/src/journal/audit-type.c b/src/journal/audit-type.c
index 7b3dc1e9ab..122cdf5d3f 100644
--- a/src/journal/audit-type.c
+++ b/src/journal/audit-type.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "audit-type.h"
#include "missing_audit.h"
diff --git a/src/journal/audit-type.h b/src/journal/audit-type.h
index 39d917894e..f2c489856c 100644
--- a/src/journal/audit-type.h
+++ b/src/journal/audit-type.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdio.h>
diff --git a/src/journal/cat.c b/src/journal/cat.c
index 2faaa2e284..bccf615189 100644
--- a/src/journal/cat.c
+++ b/src/journal/cat.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/journal/catalog.c b/src/journal/catalog.c
index b0416da0c6..0f6ad8a29e 100644
--- a/src/journal/catalog.c
+++ b/src/journal/catalog.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/journal/catalog.h b/src/journal/catalog.h
index 092a014651..df27869fb3 100644
--- a/src/journal/catalog.h
+++ b/src/journal/catalog.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/journal/compress.c b/src/journal/compress.c
index a1bd4a379e..aaf186ba69 100644
--- a/src/journal/compress.c
+++ b/src/journal/compress.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <inttypes.h>
#include <stdlib.h>
diff --git a/src/journal/compress.h b/src/journal/compress.h
index ab44ff06ed..db7f3999ed 100644
--- a/src/journal/compress.h
+++ b/src/journal/compress.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <unistd.h>
diff --git a/src/journal/fsprg.c b/src/journal/fsprg.c
index 0ef3df89df..7ea72495ef 100644
--- a/src/journal/fsprg.c
+++ b/src/journal/fsprg.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
*
* fsprg v0.1 - (seekable) forward-secure pseudorandom generator
* Copyright © 2012 B. Poettering
diff --git a/src/journal/fsprg.h b/src/journal/fsprg.h
index 33412675b8..dfe2d79222 100644
--- a/src/journal/fsprg.h
+++ b/src/journal/fsprg.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
/*
diff --git a/src/journal/journal-authenticate.c b/src/journal/journal-authenticate.c
index da275c2512..a5ff987d6e 100644
--- a/src/journal/journal-authenticate.c
+++ b/src/journal/journal-authenticate.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <sys/mman.h>
diff --git a/src/journal/journal-authenticate.h b/src/journal/journal-authenticate.h
index 2ef0133040..e895722865 100644
--- a/src/journal/journal-authenticate.h
+++ b/src/journal/journal-authenticate.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/journal/journal-def.h b/src/journal/journal-def.h
index e9ddbb9dab..bd924bda8a 100644
--- a/src/journal/journal-def.h
+++ b/src/journal/journal-def.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-id128.h"
diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
index feff3bd9f0..1dbe81849c 100644
--- a/src/journal/journal-file.c
+++ b/src/journal/journal-file.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/journal/journal-file.h b/src/journal/journal-file.h
index f80bf5d26b..3bdf551287 100644
--- a/src/journal/journal-file.h
+++ b/src/journal/journal-file.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <inttypes.h>
diff --git a/src/journal/journal-internal.h b/src/journal/journal-internal.h
index d87b0a11e5..c2d29aae78 100644
--- a/src/journal/journal-internal.h
+++ b/src/journal/journal-internal.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <inttypes.h>
diff --git a/src/journal/journal-send.c b/src/journal/journal-send.c
index 64882eb4ee..fd3fd7ef9c 100644
--- a/src/journal/journal-send.c
+++ b/src/journal/journal-send.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/journal/journal-vacuum.c b/src/journal/journal-vacuum.c
index 87d65896c6..c173664146 100644
--- a/src/journal/journal-vacuum.c
+++ b/src/journal/journal-vacuum.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <sys/stat.h>
diff --git a/src/journal/journal-vacuum.h b/src/journal/journal-vacuum.h
index 0b336ac013..d87c847da6 100644
--- a/src/journal/journal-vacuum.h
+++ b/src/journal/journal-vacuum.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <inttypes.h>
diff --git a/src/journal/journal-verify.c b/src/journal/journal-verify.c
index eddb8054bf..6ea2f4c898 100644
--- a/src/journal/journal-verify.c
+++ b/src/journal/journal-verify.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <stddef.h>
diff --git a/src/journal/journal-verify.h b/src/journal/journal-verify.h
index f0ea31abc1..579033069b 100644
--- a/src/journal/journal-verify.h
+++ b/src/journal/journal-verify.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "journal-file.h"
diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c
index 4014b8aad2..bcf2e01d5c 100644
--- a/src/journal/journalctl.c
+++ b/src/journal/journalctl.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
@@ -1779,6 +1779,7 @@ static int add_syslog_identifier(sd_journal *j) {
return 0;
}
+#if HAVE_GCRYPT
static int format_journal_url(
const void *seed,
size_t seed_size,
@@ -1825,6 +1826,7 @@ static int format_journal_url(
*ret_url = TAKE_PTR(url);
return 0;
}
+#endif
static int setup_keys(void) {
#if HAVE_GCRYPT
@@ -2017,13 +2019,12 @@ static int verify(sd_journal *j) {
#endif
k = journal_file_verify(f, arg_verify_key, &first, &validated, &last, true);
- if (k == -EINVAL) {
+ if (k == -EINVAL)
/* If the key was invalid give up right-away. */
return k;
- } else if (k < 0) {
- log_warning_errno(k, "FAIL: %s (%m)", f->path);
- r = k;
- } else {
+ else if (k < 0)
+ r = log_warning_errno(k, "FAIL: %s (%m)", f->path);
+ else {
char a[FORMAT_TIMESTAMP_MAX], b[FORMAT_TIMESTAMP_MAX], c[FORMAT_TIMESPAN_MAX];
log_info("PASS: %s", f->path);
@@ -2372,10 +2373,8 @@ int main(int argc, char *argv[]) {
int q;
q = journal_directory_vacuum(d->path, arg_vacuum_size, arg_vacuum_n_files, arg_vacuum_time, NULL, !arg_quiet);
- if (q < 0) {
- log_error_errno(q, "Failed to vacuum %s: %m", d->path);
- r = q;
- }
+ if (q < 0)
+ r = log_error_errno(q, "Failed to vacuum %s: %m", d->path);
}
goto finish;
@@ -2670,8 +2669,8 @@ int main(int argc, char *argv[]) {
if (r >= 0) {
if (previous_boot_id_valid &&
!sd_id128_equal(boot_id, previous_boot_id))
- printf("%s-- Reboot --%s\n",
- ansi_highlight(), ansi_normal());
+ printf("%s-- Boot "SD_ID128_FORMAT_STR" --%s\n",
+ ansi_highlight(), SD_ID128_FORMAT_VAL(boot_id), ansi_normal());
previous_boot_id = boot_id;
previous_boot_id_valid = true;
diff --git a/src/journal/journald-audit.c b/src/journal/journald-audit.c
index a5a78b7746..744f750ca3 100644
--- a/src/journal/journald-audit.c
+++ b/src/journal/journald-audit.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "audit-type.h"
diff --git a/src/journal/journald-audit.h b/src/journal/journald-audit.h
index df41f81435..79f3da90c1 100644
--- a/src/journal/journald-audit.h
+++ b/src/journal/journald-audit.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "journald-server.h"
diff --git a/src/journal/journald-console.c b/src/journal/journald-console.c
index 9497ef9a4a..2035e2d9b6 100644
--- a/src/journal/journald-console.c
+++ b/src/journal/journald-console.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <sys/socket.h>
diff --git a/src/journal/journald-console.h b/src/journal/journald-console.h
index 3def00ad5d..0a26f9c876 100644
--- a/src/journal/journald-console.h
+++ b/src/journal/journald-console.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "journald-server.h"
diff --git a/src/journal/journald-context.c b/src/journal/journald-context.c
index bac67036b0..8736495a4b 100644
--- a/src/journal/journald-context.c
+++ b/src/journal/journald-context.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#if HAVE_SELINUX
#include <selinux/selinux.h>
diff --git a/src/journal/journald-context.h b/src/journal/journald-context.h
index 91f0302be4..9bf74b2347 100644
--- a/src/journal/journald-context.h
+++ b/src/journal/journald-context.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <inttypes.h>
diff --git a/src/journal/journald-kmsg.c b/src/journal/journald-kmsg.c
index ca60f398c8..e7255b0355 100644
--- a/src/journal/journald-kmsg.c
+++ b/src/journal/journald-kmsg.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <sys/epoll.h>
diff --git a/src/journal/journald-kmsg.h b/src/journal/journald-kmsg.h
index 2326bc8c93..bd288c57a2 100644
--- a/src/journal/journald-kmsg.h
+++ b/src/journal/journald-kmsg.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "journald-server.h"
diff --git a/src/journal/journald-native.c b/src/journal/journald-native.c
index fed81161e0..1c5849ed55 100644
--- a/src/journal/journald-native.c
+++ b/src/journal/journald-native.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stddef.h>
#include <sys/epoll.h>
diff --git a/src/journal/journald-native.h b/src/journal/journald-native.h
index 8d06636262..7bbaaed181 100644
--- a/src/journal/journald-native.h
+++ b/src/journal/journald-native.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "journald-server.h"
diff --git a/src/journal/journald-rate-limit.c b/src/journal/journald-rate-limit.c
index fa21e7da29..f464b6e0d8 100644
--- a/src/journal/journald-rate-limit.c
+++ b/src/journal/journald-rate-limit.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
diff --git a/src/journal/journald-rate-limit.h b/src/journal/journald-rate-limit.h
index 0fff8767ac..8def60f052 100644
--- a/src/journal/journald-rate-limit.h
+++ b/src/journal/journald-rate-limit.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "time-util.h"
diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c
index ab6aadcb78..10ebc3e22e 100644
--- a/src/journal/journald-server.c
+++ b/src/journal/journald-server.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#if HAVE_SELINUX
#include <selinux/selinux.h>
diff --git a/src/journal/journald-server.h b/src/journal/journald-server.h
index b01ade5aee..5fb145e254 100644
--- a/src/journal/journald-server.h
+++ b/src/journal/journald-server.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/journal/journald-stream.c b/src/journal/journald-stream.c
index b1c35a1af2..3241ef2bf7 100644
--- a/src/journal/journald-stream.c
+++ b/src/journal/journald-stream.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stddef.h>
#include <unistd.h>
diff --git a/src/journal/journald-stream.h b/src/journal/journald-stream.h
index 7ab0016618..0a033b4dce 100644
--- a/src/journal/journald-stream.h
+++ b/src/journal/journald-stream.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
typedef struct StdoutStream StdoutStream;
diff --git a/src/journal/journald-syslog.c b/src/journal/journald-syslog.c
index 91ea41fa78..925bd502d3 100644
--- a/src/journal/journald-syslog.c
+++ b/src/journal/journald-syslog.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stddef.h>
#include <sys/epoll.h>
diff --git a/src/journal/journald-syslog.h b/src/journal/journald-syslog.h
index 5ad601001c..3bc3ffddb8 100644
--- a/src/journal/journald-syslog.h
+++ b/src/journal/journald-syslog.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "journald-server.h"
diff --git a/src/journal/journald-wall.c b/src/journal/journald-wall.c
index 6134ba7414..21ec5a785b 100644
--- a/src/journal/journald-wall.c
+++ b/src/journal/journald-wall.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "format-util.h"
diff --git a/src/journal/journald-wall.h b/src/journal/journald-wall.h
index 026649eb7c..3f98c35bde 100644
--- a/src/journal/journald-wall.h
+++ b/src/journal/journald-wall.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <sys/socket.h>
diff --git a/src/journal/journald.c b/src/journal/journald.c
index 9a7cb3e1fc..ef7cebce34 100644
--- a/src/journal/journald.c
+++ b/src/journal/journald.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <unistd.h>
diff --git a/src/journal/lookup3.c b/src/journal/lookup3.c
index 74c80b724d..39967f21cd 100644
--- a/src/journal/lookup3.c
+++ b/src/journal/lookup3.c
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: LicenseRef-lookup3-public-domain */
/* Slightly modified by Lennart Poettering, to avoid name clashes, and
* unexport a few functions. */
diff --git a/src/journal/lookup3.h b/src/journal/lookup3.h
index 0a01269e43..04e493e95e 100644
--- a/src/journal/lookup3.h
+++ b/src/journal/lookup3.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: LicenseRef-lookup3-public-domain */
#pragma once
#include <inttypes.h>
diff --git a/src/journal/meson.build b/src/journal/meson.build
index 215ba949e7..7aea28d129 100644
--- a/src/journal/meson.build
+++ b/src/journal/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
journal_client_sources = files('''
audit-type.c
@@ -107,8 +107,10 @@ journalctl_sources = files('''
pcre2-dlopen.h
'''.split())
-install_data('journald.conf',
- install_dir : pkgsysconfdir)
+if install_sysconfdir
+ install_data('journald.conf',
+ install_dir : pkgsysconfdir)
+endif
if get_option('create-log-dirs')
meson.add_install_script(
diff --git a/src/journal/mmap-cache.c b/src/journal/mmap-cache.c
index f627630c9c..9882016436 100644
--- a/src/journal/mmap-cache.c
+++ b/src/journal/mmap-cache.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stdlib.h>
diff --git a/src/journal/mmap-cache.h b/src/journal/mmap-cache.h
index bf70d32027..28d5ab1a56 100644
--- a/src/journal/mmap-cache.h
+++ b/src/journal/mmap-cache.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/journal/pcre2-dlopen.c b/src/journal/pcre2-dlopen.c
index 1e1108c657..fbe81f99eb 100644
--- a/src/journal/pcre2-dlopen.c
+++ b/src/journal/pcre2-dlopen.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "dlfcn-util.h"
diff --git a/src/journal/pcre2-dlopen.h b/src/journal/pcre2-dlopen.h
index e7cb0a5907..1306334144 100644
--- a/src/journal/pcre2-dlopen.h
+++ b/src/journal/pcre2-dlopen.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#if HAVE_PCRE2
diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c
index 731fc51212..cb1ab88ca5 100644
--- a/src/journal/sd-journal.c
+++ b/src/journal/sd-journal.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
@@ -883,6 +883,7 @@ static int real_journal_next_skip(sd_journal *j, direction_t direction, uint64_t
assert_return(j, -EINVAL);
assert_return(!journal_pid_changed(j), -ECHILD);
+ assert_return(skip <= INT_MAX, -ERANGE);
if (skip == 0) {
/* If this is not a discrete skip, then at least
diff --git a/src/journal/test-audit-type.c b/src/journal/test-audit-type.c
index a8315d0633..5adbf0d5b6 100644
--- a/src/journal/test-audit-type.c
+++ b/src/journal/test-audit-type.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdio.h>
#include <linux/audit.h>
diff --git a/src/journal/test-catalog.c b/src/journal/test-catalog.c
index 0f1447af28..982fec0d8d 100644
--- a/src/journal/test-catalog.c
+++ b/src/journal/test-catalog.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/journal/test-compress-benchmark.c b/src/journal/test-compress-benchmark.c
index 35823a8da5..001976076e 100644
--- a/src/journal/test-compress-benchmark.c
+++ b/src/journal/test-compress-benchmark.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "compress.h"
diff --git a/src/journal/test-compress.c b/src/journal/test-compress.c
index 96a441a5a6..ccd4605016 100644
--- a/src/journal/test-compress.c
+++ b/src/journal/test-compress.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/stat.h>
diff --git a/src/journal/test-journal-config.c b/src/journal/test-journal-config.c
index 1482490411..4f29e1b310 100644
--- a/src/journal/test-journal-config.c
+++ b/src/journal/test-journal-config.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdbool.h>
diff --git a/src/journal/test-journal-enum.c b/src/journal/test-journal-enum.c
index 8e839920b9..03fe8e2b30 100644
--- a/src/journal/test-journal-enum.c
+++ b/src/journal/test-journal-enum.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdio.h>
diff --git a/src/journal/test-journal-flush.c b/src/journal/test-journal-flush.c
index 5fedd3ed20..dad277dd66 100644
--- a/src/journal/test-journal-flush.c
+++ b/src/journal/test-journal-flush.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <unistd.h>
diff --git a/src/journal/test-journal-init.c b/src/journal/test-journal-init.c
index d10e61080d..80aff75bb9 100644
--- a/src/journal/test-journal-init.c
+++ b/src/journal/test-journal-init.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "sd-journal.h"
diff --git a/src/journal/test-journal-interleaving.c b/src/journal/test-journal-interleaving.c
index c0bda68811..8c78c3bbf0 100644
--- a/src/journal/test-journal-interleaving.c
+++ b/src/journal/test-journal-interleaving.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <unistd.h>
diff --git a/src/journal/test-journal-match.c b/src/journal/test-journal-match.c
index b17527916c..ded67563d7 100644
--- a/src/journal/test-journal-match.c
+++ b/src/journal/test-journal-match.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdio.h>
diff --git a/src/journal/test-journal-send.c b/src/journal/test-journal-send.c
index 4265735f0f..75bd8e7b85 100644
--- a/src/journal/test-journal-send.c
+++ b/src/journal/test-journal-send.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stdlib.h>
diff --git a/src/journal/test-journal-stream.c b/src/journal/test-journal-stream.c
index 924d727d97..a121859e08 100644
--- a/src/journal/test-journal-stream.c
+++ b/src/journal/test-journal-stream.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <unistd.h>
diff --git a/src/journal/test-journal-syslog.c b/src/journal/test-journal-syslog.c
index 45be7e5bc4..33f412956b 100644
--- a/src/journal/test-journal-syslog.c
+++ b/src/journal/test-journal-syslog.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "journald-syslog.h"
diff --git a/src/journal/test-journal-verify.c b/src/journal/test-journal-verify.c
index 2893a7c00f..d208e4650c 100644
--- a/src/journal/test-journal-verify.c
+++ b/src/journal/test-journal-verify.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <stdio.h>
diff --git a/src/journal/test-journal.c b/src/journal/test-journal.c
index 5850bb8eaa..f8f08b5afc 100644
--- a/src/journal/test-journal.c
+++ b/src/journal/test-journal.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <unistd.h>
diff --git a/src/journal/test-mmap-cache.c b/src/journal/test-mmap-cache.c
index 8f755efdde..d1d28768f5 100644
--- a/src/journal/test-mmap-cache.c
+++ b/src/journal/test-mmap-cache.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <stdlib.h>
diff --git a/src/kernel-install/90-loaderentry.install b/src/kernel-install/90-loaderentry.install
index 567d2b9f4b..d096745382 100644
--- a/src/kernel-install/90-loaderentry.install
+++ b/src/kernel-install/90-loaderentry.install
@@ -20,7 +20,7 @@ MACHINE_ID=$KERNEL_INSTALL_MACHINE_ID
BOOT_ROOT=${ENTRY_DIR_ABS%/$MACHINE_ID/$KERNEL_VERSION}
BOOT_MNT=$(stat -c %m $BOOT_ROOT)
-ENTRY_DIR=/${ENTRY_DIR_ABS#$BOOT_MNT}
+ENTRY_DIR=${ENTRY_DIR_ABS#$BOOT_MNT}
if [[ $COMMAND == remove ]]; then
rm -f "$BOOT_ROOT/loader/entries/$MACHINE_ID-$KERNEL_VERSION.conf"
diff --git a/src/kernel-install/kernel-install b/src/kernel-install/kernel-install
index 0ae07fcf32..e7457e9d06 100755
--- a/src/kernel-install/kernel-install
+++ b/src/kernel-install/kernel-install
@@ -1,7 +1,7 @@
#!/usr/bin/env bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/src/kernel-install/meson.build b/src/kernel-install/meson.build
index 9ae342dfba..4117188f14 100644
--- a/src/kernel-install/meson.build
+++ b/src/kernel-install/meson.build
@@ -1,18 +1,21 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
want_kernel_install = get_option('kernel-install')
if want_kernel_install
- install_data('kernel-install',
- install_mode : 'rwxr-xr-x',
- install_dir : bindir)
+ install_data('kernel-install',
+ install_mode : 'rwxr-xr-x',
+ install_dir : bindir)
- install_data('00-entry-directory.install',
- '50-depmod.install',
- '90-loaderentry.install',
- install_mode : 'rwxr-xr-x',
- install_dir : kernelinstalldir)
+ install_data('00-entry-directory.install',
+ '50-depmod.install',
+ '90-loaderentry.install',
+ install_mode : 'rwxr-xr-x',
+ install_dir : kernelinstalldir)
+
+ if install_sysconfdir
+ meson.add_install_script('sh', '-c',
+ mkdir_p.format(join_paths(sysconfdir, 'kernel/install.d')))
+ endif
- meson.add_install_script('sh', '-c',
- mkdir_p.format(join_paths(sysconfdir, 'kernel/install.d')))
endif
diff --git a/src/libsystemd-network/arp-util.c b/src/libsystemd-network/arp-util.c
index 4fbf2bbc96..327fb2ff3e 100644
--- a/src/libsystemd-network/arp-util.c
+++ b/src/libsystemd-network/arp-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2014 Axis Communications AB. All rights reserved.
***/
diff --git a/src/libsystemd-network/arp-util.h b/src/libsystemd-network/arp-util.h
index 9a4427e831..2dac8cfbaa 100644
--- a/src/libsystemd-network/arp-util.h
+++ b/src/libsystemd-network/arp-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
/***
diff --git a/src/libsystemd-network/dhcp-client-internal.h b/src/libsystemd-network/dhcp-client-internal.h
index 2c48d095f4..a6f37522d1 100644
--- a/src/libsystemd-network/dhcp-client-internal.h
+++ b/src/libsystemd-network/dhcp-client-internal.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
extern const struct hash_ops dhcp_option_hash_ops;
diff --git a/src/libsystemd-network/dhcp-identifier.c b/src/libsystemd-network/dhcp-identifier.c
index 33e5c00b06..953fef19fa 100644
--- a/src/libsystemd-network/dhcp-identifier.c
+++ b/src/libsystemd-network/dhcp-identifier.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <linux/if_infiniband.h>
#include <net/ethernet.h>
diff --git a/src/libsystemd-network/dhcp-identifier.h b/src/libsystemd-network/dhcp-identifier.h
index 76abd6583e..e9f2ea7e95 100644
--- a/src/libsystemd-network/dhcp-identifier.h
+++ b/src/libsystemd-network/dhcp-identifier.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-id128.h"
diff --git a/src/libsystemd-network/dhcp-internal.h b/src/libsystemd-network/dhcp-internal.h
index 7e8149487a..40e6b1f26f 100644
--- a/src/libsystemd-network/dhcp-internal.h
+++ b/src/libsystemd-network/dhcp-internal.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
/***
@@ -29,10 +29,10 @@ typedef struct DHCPServerData {
extern const struct hash_ops dhcp_option_hash_ops;
-int dhcp_network_bind_raw_socket(int ifindex, union sockaddr_union *link,
- uint32_t xid, const uint8_t *mac_addr,
- size_t mac_addr_len, uint16_t arp_type,
- uint16_t port);
+int dhcp_network_bind_raw_socket(int ifindex, union sockaddr_union *link, uint32_t xid,
+ const uint8_t *mac_addr, size_t mac_addr_len,
+ const uint8_t *bcast_addr, size_t bcast_addr_len,
+ uint16_t arp_type, uint16_t port);
int dhcp_network_bind_udp_socket(int ifindex, be32_t address, uint16_t port, int ip_service_type);
int dhcp_network_send_raw_socket(int s, const union sockaddr_union *link,
const void *packet, size_t len);
diff --git a/src/libsystemd-network/dhcp-lease-internal.h b/src/libsystemd-network/dhcp-lease-internal.h
index 66222eaddb..49392d1bea 100644
--- a/src/libsystemd-network/dhcp-lease-internal.h
+++ b/src/libsystemd-network/dhcp-lease-internal.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
/***
diff --git a/src/libsystemd-network/dhcp-network.c b/src/libsystemd-network/dhcp-network.c
index f48e7c3490..656482bf83 100644
--- a/src/libsystemd-network/dhcp-network.c
+++ b/src/libsystemd-network/dhcp-network.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2013 Intel Corporation. All rights reserved.
***/
@@ -19,9 +19,9 @@
#include "unaligned.h"
static int _bind_raw_socket(int ifindex, union sockaddr_union *link,
- uint32_t xid, const uint8_t *mac_addr,
- size_t mac_addr_len,
+ uint32_t xid,
const uint8_t *bcast_addr,
+ size_t bcast_addr_len,
const struct ether_addr *eth_mac,
uint16_t arp_type, uint8_t dhcp_hlen,
uint16_t port) {
@@ -104,9 +104,9 @@ static int _bind_raw_socket(int ifindex, union sockaddr_union *link,
.sll_protocol = htobe16(ETH_P_IP),
.sll_ifindex = ifindex,
.sll_hatype = htobe16(arp_type),
- .sll_halen = mac_addr_len,
+ .sll_halen = bcast_addr_len,
};
- memcpy(link->ll.sll_addr, bcast_addr, mac_addr_len);
+ memcpy(link->ll.sll_addr, bcast_addr, bcast_addr_len); /* We may overflow link->ll. link->ll_buffer ensures we have enough space. */
r = bind(s, &link->sa, SOCKADDR_LL_LEN(link->ll));
if (r < 0)
@@ -115,34 +115,44 @@ static int _bind_raw_socket(int ifindex, union sockaddr_union *link,
return TAKE_FD(s);
}
-int dhcp_network_bind_raw_socket(int ifindex, union sockaddr_union *link,
- uint32_t xid, const uint8_t *mac_addr,
- size_t mac_addr_len, uint16_t arp_type,
- uint16_t port) {
+int dhcp_network_bind_raw_socket(int ifindex, union sockaddr_union *link, uint32_t xid,
+ const uint8_t *mac_addr, size_t mac_addr_len,
+ const uint8_t *bcast_addr, size_t bcast_addr_len,
+ uint16_t arp_type, uint16_t port) {
static const uint8_t eth_bcast[] = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };
/* Default broadcast address for IPoIB */
static const uint8_t ib_bcast[] = {
0x00, 0xff, 0xff, 0xff, 0xff, 0x12, 0x40, 0x1b,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0xff, 0xff
- };
+ };
struct ether_addr eth_mac = { { 0, 0, 0, 0, 0, 0 } };
- const uint8_t *bcast_addr = NULL;
+ const uint8_t *default_bcast_addr;
+ size_t expected_bcast_addr_len;
uint8_t dhcp_hlen = 0;
if (arp_type == ARPHRD_ETHER) {
assert_return(mac_addr_len == ETH_ALEN, -EINVAL);
memcpy(&eth_mac, mac_addr, ETH_ALEN);
- bcast_addr = eth_bcast;
dhcp_hlen = ETH_ALEN;
+
+ default_bcast_addr = eth_bcast;
+ expected_bcast_addr_len = ETH_ALEN;
} else if (arp_type == ARPHRD_INFINIBAND) {
- assert_return(mac_addr_len == INFINIBAND_ALEN, -EINVAL);
- bcast_addr = ib_bcast;
+ default_bcast_addr = ib_bcast;
+ expected_bcast_addr_len = INFINIBAND_ALEN;
} else
return -EINVAL;
- return _bind_raw_socket(ifindex, link, xid, mac_addr, mac_addr_len,
- bcast_addr, &eth_mac, arp_type, dhcp_hlen, port);
+ if (bcast_addr && bcast_addr_len > 0)
+ assert_return(bcast_addr_len == expected_bcast_addr_len, -EINVAL);
+ else {
+ bcast_addr = default_bcast_addr;
+ bcast_addr_len = expected_bcast_addr_len;
+ }
+
+ return _bind_raw_socket(ifindex, link, xid, bcast_addr, bcast_addr_len,
+ &eth_mac, arp_type, dhcp_hlen, port);
}
int dhcp_network_bind_udp_socket(int ifindex, be32_t address, uint16_t port, int ip_service_type) {
diff --git a/src/libsystemd-network/dhcp-option.c b/src/libsystemd-network/dhcp-option.c
index 6fe8a3779d..70753c68d8 100644
--- a/src/libsystemd-network/dhcp-option.c
+++ b/src/libsystemd-network/dhcp-option.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2013 Intel Corporation. All rights reserved.
***/
diff --git a/src/libsystemd-network/dhcp-packet.c b/src/libsystemd-network/dhcp-packet.c
index fe7d51703b..cace916f44 100644
--- a/src/libsystemd-network/dhcp-packet.c
+++ b/src/libsystemd-network/dhcp-packet.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2013 Intel Corporation. All rights reserved.
***/
diff --git a/src/libsystemd-network/dhcp-protocol.h b/src/libsystemd-network/dhcp-protocol.h
index f03663248a..11f4201ab2 100644
--- a/src/libsystemd-network/dhcp-protocol.h
+++ b/src/libsystemd-network/dhcp-protocol.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
/***
diff --git a/src/libsystemd-network/dhcp-server-internal.h b/src/libsystemd-network/dhcp-server-internal.h
index 64c18ed570..b57737ee25 100644
--- a/src/libsystemd-network/dhcp-server-internal.h
+++ b/src/libsystemd-network/dhcp-server-internal.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
/***
diff --git a/src/libsystemd-network/dhcp6-internal.h b/src/libsystemd-network/dhcp6-internal.h
index 9ce6dcd02c..24d8a314a4 100644
--- a/src/libsystemd-network/dhcp6-internal.h
+++ b/src/libsystemd-network/dhcp6-internal.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
/***
diff --git a/src/libsystemd-network/dhcp6-lease-internal.h b/src/libsystemd-network/dhcp6-lease-internal.h
index df6c95e0b3..e9e2362d6f 100644
--- a/src/libsystemd-network/dhcp6-lease-internal.h
+++ b/src/libsystemd-network/dhcp6-lease-internal.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
/***
diff --git a/src/libsystemd-network/dhcp6-network.c b/src/libsystemd-network/dhcp6-network.c
index e2efa8bbe3..4f7bd53de4 100644
--- a/src/libsystemd-network/dhcp6-network.c
+++ b/src/libsystemd-network/dhcp6-network.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2014 Intel Corporation. All rights reserved.
***/
diff --git a/src/libsystemd-network/dhcp6-option.c b/src/libsystemd-network/dhcp6-option.c
index 030173a58a..e2bf4f7e36 100644
--- a/src/libsystemd-network/dhcp6-option.c
+++ b/src/libsystemd-network/dhcp6-option.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2014-2015 Intel Corporation. All rights reserved.
***/
diff --git a/src/libsystemd-network/dhcp6-protocol.h b/src/libsystemd-network/dhcp6-protocol.h
index f7a2702860..c700363803 100644
--- a/src/libsystemd-network/dhcp6-protocol.h
+++ b/src/libsystemd-network/dhcp6-protocol.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
/***
diff --git a/src/libsystemd-network/icmp6-util.c b/src/libsystemd-network/icmp6-util.c
index d9690293f1..4af012534a 100644
--- a/src/libsystemd-network/icmp6-util.c
+++ b/src/libsystemd-network/icmp6-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2014 Intel Corporation. All rights reserved.
***/
diff --git a/src/libsystemd-network/icmp6-util.h b/src/libsystemd-network/icmp6-util.h
index ac68ded1fe..50d21b5b59 100644
--- a/src/libsystemd-network/icmp6-util.h
+++ b/src/libsystemd-network/icmp6-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
/***
diff --git a/src/libsystemd-network/lldp-internal.h b/src/libsystemd-network/lldp-internal.h
index 9598438dba..f23695f974 100644
--- a/src/libsystemd-network/lldp-internal.h
+++ b/src/libsystemd-network/lldp-internal.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-event.h"
diff --git a/src/libsystemd-network/lldp-neighbor.c b/src/libsystemd-network/lldp-neighbor.c
index 02645b2bcd..546ae1c980 100644
--- a/src/libsystemd-network/lldp-neighbor.c
+++ b/src/libsystemd-network/lldp-neighbor.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "escape.h"
diff --git a/src/libsystemd-network/lldp-neighbor.h b/src/libsystemd-network/lldp-neighbor.h
index 74175edf54..a5718c8c31 100644
--- a/src/libsystemd-network/lldp-neighbor.h
+++ b/src/libsystemd-network/lldp-neighbor.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <inttypes.h>
diff --git a/src/libsystemd-network/lldp-network.c b/src/libsystemd-network/lldp-network.c
index de7e2bf847..9616cb6250 100644
--- a/src/libsystemd-network/lldp-network.c
+++ b/src/libsystemd-network/lldp-network.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <linux/filter.h>
#include <netinet/if_ether.h>
diff --git a/src/libsystemd-network/lldp-network.h b/src/libsystemd-network/lldp-network.h
index e4ed2898a5..bc69b324c2 100644
--- a/src/libsystemd-network/lldp-network.h
+++ b/src/libsystemd-network/lldp-network.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-event.h"
diff --git a/src/libsystemd-network/meson.build b/src/libsystemd-network/meson.build
index a4c74222cb..8c68d74c82 100644
--- a/src/libsystemd-network/meson.build
+++ b/src/libsystemd-network/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
sources = files('''
sd-dhcp-client.c
diff --git a/src/libsystemd-network/ndisc-internal.h b/src/libsystemd-network/ndisc-internal.h
index c66dc3d443..65f9371b20 100644
--- a/src/libsystemd-network/ndisc-internal.h
+++ b/src/libsystemd-network/ndisc-internal.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
/***
diff --git a/src/libsystemd-network/ndisc-router.c b/src/libsystemd-network/ndisc-router.c
index a2a9366338..3cb71dbdac 100644
--- a/src/libsystemd-network/ndisc-router.c
+++ b/src/libsystemd-network/ndisc-router.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2014 Intel Corporation. All rights reserved.
***/
diff --git a/src/libsystemd-network/ndisc-router.h b/src/libsystemd-network/ndisc-router.h
index 2e2c1afd12..cb3a56452b 100644
--- a/src/libsystemd-network/ndisc-router.h
+++ b/src/libsystemd-network/ndisc-router.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
/***
diff --git a/src/libsystemd-network/network-internal.c b/src/libsystemd-network/network-internal.c
index f64c3584ad..12b73cd50d 100644
--- a/src/libsystemd-network/network-internal.c
+++ b/src/libsystemd-network/network-internal.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <arpa/inet.h>
#include <linux/if.h>
diff --git a/src/libsystemd-network/network-internal.h b/src/libsystemd-network/network-internal.h
index c4e89ade9a..e5b853c0cd 100644
--- a/src/libsystemd-network/network-internal.h
+++ b/src/libsystemd-network/network-internal.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/libsystemd-network/radv-internal.h b/src/libsystemd-network/radv-internal.h
index fb6617bedd..3dbeffe0c6 100644
--- a/src/libsystemd-network/radv-internal.h
+++ b/src/libsystemd-network/radv-internal.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
/***
diff --git a/src/libsystemd-network/sd-dhcp-client.c b/src/libsystemd-network/sd-dhcp-client.c
index 2bfe64a81c..3ce45b2b0d 100644
--- a/src/libsystemd-network/sd-dhcp-client.c
+++ b/src/libsystemd-network/sd-dhcp-client.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2013 Intel Corporation. All rights reserved.
***/
@@ -82,6 +82,8 @@ struct sd_dhcp_client {
be32_t last_addr;
uint8_t mac_addr[MAX_MAC_ADDR_LEN];
size_t mac_addr_len;
+ uint8_t bcast_addr[MAX_MAC_ADDR_LEN];
+ size_t bcast_addr_len;
uint16_t arp_type;
sd_dhcp_client_id client_id;
size_t client_id_len;
@@ -277,6 +279,7 @@ int sd_dhcp_client_set_ifindex(sd_dhcp_client *client, int ifindex) {
int sd_dhcp_client_set_mac(
sd_dhcp_client *client,
const uint8_t *addr,
+ const uint8_t *bcast_addr,
size_t addr_len,
uint16_t arp_type) {
@@ -297,7 +300,9 @@ int sd_dhcp_client_set_mac(
return -EINVAL;
if (client->mac_addr_len == addr_len &&
- memcmp(&client->mac_addr, addr, addr_len) == 0)
+ memcmp(&client->mac_addr, addr, addr_len) == 0 &&
+ (client->bcast_addr_len > 0) == !!bcast_addr &&
+ (!bcast_addr || memcmp(&client->bcast_addr, bcast_addr, addr_len) == 0))
return 0;
if (!IN_SET(client->state, DHCP_STATE_INIT, DHCP_STATE_STOPPED)) {
@@ -309,6 +314,12 @@ int sd_dhcp_client_set_mac(
memcpy(&client->mac_addr, addr, addr_len);
client->mac_addr_len = addr_len;
client->arp_type = arp_type;
+ client->bcast_addr_len = 0;
+
+ if (bcast_addr) {
+ memcpy(&client->bcast_addr, bcast_addr, addr_len);
+ client->bcast_addr_len = addr_len;
+ }
if (need_restart && client->state != DHCP_STATE_STOPPED) {
r = sd_dhcp_client_start(client);
@@ -1381,9 +1392,10 @@ static int client_start_delayed(sd_dhcp_client *client) {
client->xid = random_u32();
- r = dhcp_network_bind_raw_socket(client->ifindex, &client->link,
- client->xid, client->mac_addr,
- client->mac_addr_len, client->arp_type, client->port);
+ r = dhcp_network_bind_raw_socket(client->ifindex, &client->link, client->xid,
+ client->mac_addr, client->mac_addr_len,
+ client->bcast_addr, client->bcast_addr_len,
+ client->arp_type, client->port);
if (r < 0) {
client_stop(client, r);
return r;
@@ -1431,10 +1443,10 @@ static int client_timeout_t2(sd_event_source *s, uint64_t usec, void *userdata)
client->state = DHCP_STATE_REBINDING;
client->attempt = 0;
- r = dhcp_network_bind_raw_socket(client->ifindex, &client->link,
- client->xid, client->mac_addr,
- client->mac_addr_len, client->arp_type,
- client->port);
+ r = dhcp_network_bind_raw_socket(client->ifindex, &client->link, client->xid,
+ client->mac_addr, client->mac_addr_len,
+ client->bcast_addr, client->bcast_addr_len,
+ client->arp_type, client->port);
if (r < 0) {
client_stop(client, r);
return 0;
diff --git a/src/libsystemd-network/sd-dhcp-lease.c b/src/libsystemd-network/sd-dhcp-lease.c
index 5f89d00452..8a138ff4b6 100644
--- a/src/libsystemd-network/sd-dhcp-lease.c
+++ b/src/libsystemd-network/sd-dhcp-lease.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2013 Intel Corporation. All rights reserved.
***/
diff --git a/src/libsystemd-network/sd-dhcp-server.c b/src/libsystemd-network/sd-dhcp-server.c
index cab7707017..dfced720c2 100644
--- a/src/libsystemd-network/sd-dhcp-server.c
+++ b/src/libsystemd-network/sd-dhcp-server.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2013 Intel Corporation. All rights reserved.
***/
diff --git a/src/libsystemd-network/sd-dhcp6-client.c b/src/libsystemd-network/sd-dhcp6-client.c
index 38e5bf0366..97fd5fd4fb 100644
--- a/src/libsystemd-network/sd-dhcp6-client.c
+++ b/src/libsystemd-network/sd-dhcp6-client.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2014-2015 Intel Corporation. All rights reserved.
***/
@@ -188,8 +188,7 @@ int sd_dhcp6_client_set_mac(
assert_return(client, -EINVAL);
assert_return(addr, -EINVAL);
- assert_return(addr_len > 0 && addr_len <= MAX_MAC_ADDR_LEN, -EINVAL);
- assert_return(arp_type > 0, -EINVAL);
+ assert_return(addr_len <= MAX_MAC_ADDR_LEN, -EINVAL);
assert_return(IN_SET(client->state, DHCP6_STATE_STOPPED), -EBUSY);
@@ -197,8 +196,11 @@ int sd_dhcp6_client_set_mac(
assert_return(addr_len == ETH_ALEN, -EINVAL);
else if (arp_type == ARPHRD_INFINIBAND)
assert_return(addr_len == INFINIBAND_ALEN, -EINVAL);
- else
- return -EINVAL;
+ else {
+ client->arp_type = ARPHRD_NONE;
+ client->mac_addr_len = 0;
+ return 0;
+ }
if (client->mac_addr_len == addr_len &&
memcmp(&client->mac_addr, addr, addr_len) == 0)
@@ -1743,8 +1745,7 @@ int sd_dhcp6_client_start(sd_dhcp6_client *client) {
}
log_dhcp6_client(client, "Started in %s mode",
- client->information_request? "Information request":
- "Managed");
+ client->information_request ? "Information request" : "Managed");
return client_start(client, state);
}
diff --git a/src/libsystemd-network/sd-dhcp6-lease.c b/src/libsystemd-network/sd-dhcp6-lease.c
index 9aad22124d..d6f0708c94 100644
--- a/src/libsystemd-network/sd-dhcp6-lease.c
+++ b/src/libsystemd-network/sd-dhcp6-lease.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2014-2015 Intel Corporation. All rights reserved.
***/
diff --git a/src/libsystemd-network/sd-ipv4acd.c b/src/libsystemd-network/sd-ipv4acd.c
index ff333914e9..2e1e46c1c5 100644
--- a/src/libsystemd-network/sd-ipv4acd.c
+++ b/src/libsystemd-network/sd-ipv4acd.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2014 Axis Communications AB. All rights reserved.
***/
diff --git a/src/libsystemd-network/sd-ipv4ll.c b/src/libsystemd-network/sd-ipv4ll.c
index 293a4644a2..09f2bda7f0 100644
--- a/src/libsystemd-network/sd-ipv4ll.c
+++ b/src/libsystemd-network/sd-ipv4ll.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2014 Axis Communications AB. All rights reserved.
***/
diff --git a/src/libsystemd-network/sd-lldp.c b/src/libsystemd-network/sd-lldp.c
index e536f90d19..8b666522cb 100644
--- a/src/libsystemd-network/sd-lldp.c
+++ b/src/libsystemd-network/sd-lldp.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <arpa/inet.h>
#include <linux/sockios.h>
diff --git a/src/libsystemd-network/sd-ndisc.c b/src/libsystemd-network/sd-ndisc.c
index 92e772d352..db7ada60a8 100644
--- a/src/libsystemd-network/sd-ndisc.c
+++ b/src/libsystemd-network/sd-ndisc.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2014 Intel Corporation. All rights reserved.
***/
diff --git a/src/libsystemd-network/sd-radv.c b/src/libsystemd-network/sd-radv.c
index 9656d7c969..8beb845d79 100644
--- a/src/libsystemd-network/sd-radv.c
+++ b/src/libsystemd-network/sd-radv.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2017 Intel Corporation. All rights reserved.
***/
@@ -466,14 +466,14 @@ _public_ int sd_radv_set_hop_limit(sd_radv *ra, uint8_t hop_limit) {
return 0;
}
-_public_ int sd_radv_set_router_lifetime(sd_radv *ra, uint32_t router_lifetime) {
+_public_ int sd_radv_set_router_lifetime(sd_radv *ra, uint16_t router_lifetime) {
assert_return(ra, -EINVAL);
if (ra->state != SD_RADV_STATE_IDLE)
return -EBUSY;
- /* RFC 4191, Section 2.2, "...If the Router Lifetime is zero, the
- preference value MUST be set to (00) by the sender..." */
+ /* RFC 4191, Section 2.2, "...If the Router Lifetime is zero, the preference value MUST be set
+ * to (00) by the sender..." */
if (router_lifetime == 0 &&
(ra->flags & (0x3 << 3)) != (SD_NDISC_PREFERENCE_MEDIUM << 3))
return -ETIME;
@@ -506,17 +506,20 @@ _public_ int sd_radv_set_other_information(sd_radv *ra, int other) {
}
_public_ int sd_radv_set_preference(sd_radv *ra, unsigned preference) {
- int r = 0;
-
assert_return(ra, -EINVAL);
assert_return(IN_SET(preference,
SD_NDISC_PREFERENCE_LOW,
SD_NDISC_PREFERENCE_MEDIUM,
SD_NDISC_PREFERENCE_HIGH), -EINVAL);
+ /* RFC 4191, Section 2.2, "...If the Router Lifetime is zero, the preference value MUST be set
+ * to (00) by the sender..." */
+ if (ra->lifetime == 0 && preference != SD_NDISC_PREFERENCE_MEDIUM)
+ return -EINVAL;
+
ra->flags = (ra->flags & ~(0x3 << 3)) | (preference << 3);
- return r;
+ return 0;
}
_public_ int sd_radv_add_prefix(sd_radv *ra, sd_radv_prefix *p, int dynamic) {
diff --git a/src/libsystemd-network/test-acd.c b/src/libsystemd-network/test-acd.c
index 27a1a21400..f4aab85ed4 100644
--- a/src/libsystemd-network/test-acd.c
+++ b/src/libsystemd-network/test-acd.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stdlib.h>
diff --git a/src/libsystemd-network/test-dhcp-client.c b/src/libsystemd-network/test-dhcp-client.c
index 4d748ea66d..d39d1f57a0 100644
--- a/src/libsystemd-network/test-dhcp-client.c
+++ b/src/libsystemd-network/test-dhcp-client.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2013 Intel Corporation. All rights reserved.
***/
@@ -23,6 +23,7 @@
#include "util.h"
static uint8_t mac_addr[] = {'A', 'B', 'C', '1', '2', '3'};
+static uint8_t bcast_addr[] = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };
typedef int (*test_callback_recv_t)(size_t size, DHCPMessage *dhcp);
@@ -247,6 +248,7 @@ int dhcp_network_bind_raw_socket(
union sockaddr_union *link,
uint32_t id,
const uint8_t *addr, size_t addr_len,
+ const uint8_t *bcaddr, size_t bcaddr_len,
uint16_t arp_type, uint16_t port) {
if (socketpair(AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC | SOCK_NONBLOCK, 0, test_fd) < 0)
@@ -296,7 +298,7 @@ static void test_discover_message(sd_event *e) {
assert_se(r >= 0);
assert_se(sd_dhcp_client_set_ifindex(client, 42) >= 0);
- assert_se(sd_dhcp_client_set_mac(client, mac_addr, ETH_ALEN, ARPHRD_ETHER) >= 0);
+ assert_se(sd_dhcp_client_set_mac(client, mac_addr, bcast_addr, ETH_ALEN, ARPHRD_ETHER) >= 0);
assert_se(sd_dhcp_client_set_request_option(client, 248) >= 0);
@@ -513,7 +515,7 @@ static void test_addr_acq(sd_event *e) {
assert_se(r >= 0);
assert_se(sd_dhcp_client_set_ifindex(client, 42) >= 0);
- assert_se(sd_dhcp_client_set_mac(client, mac_addr, ETH_ALEN, ARPHRD_ETHER) >= 0);
+ assert_se(sd_dhcp_client_set_mac(client, mac_addr, bcast_addr, ETH_ALEN, ARPHRD_ETHER) >= 0);
assert_se(sd_dhcp_client_set_callback(client, test_addr_acq_acquired, e) >= 0);
diff --git a/src/libsystemd-network/test-dhcp-option.c b/src/libsystemd-network/test-dhcp-option.c
index 086f8b5fd9..1eebe3a10f 100644
--- a/src/libsystemd-network/test-dhcp-option.c
+++ b/src/libsystemd-network/test-dhcp-option.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <net/if_arp.h>
diff --git a/src/libsystemd-network/test-dhcp-server.c b/src/libsystemd-network/test-dhcp-server.c
index 16a4f16bfa..e91b440fe9 100644
--- a/src/libsystemd-network/test-dhcp-server.c
+++ b/src/libsystemd-network/test-dhcp-server.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2013 Intel Corporation. All rights reserved.
***/
diff --git a/src/libsystemd-network/test-dhcp6-client.c b/src/libsystemd-network/test-dhcp6-client.c
index e198814ba0..e6a43dcd5e 100644
--- a/src/libsystemd-network/test-dhcp6-client.c
+++ b/src/libsystemd-network/test-dhcp6-client.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2014 Intel Corporation. All rights reserved.
***/
diff --git a/src/libsystemd-network/test-ipv4ll-manual.c b/src/libsystemd-network/test-ipv4ll-manual.c
index fd827ff401..a253acbd83 100644
--- a/src/libsystemd-network/test-ipv4ll-manual.c
+++ b/src/libsystemd-network/test-ipv4ll-manual.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <net/if.h>
diff --git a/src/libsystemd-network/test-ipv4ll.c b/src/libsystemd-network/test-ipv4ll.c
index 310b658e18..b213f41889 100644
--- a/src/libsystemd-network/test-ipv4ll.c
+++ b/src/libsystemd-network/test-ipv4ll.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2014 Axis Communications AB. All rights reserved.
***/
diff --git a/src/libsystemd-network/test-lldp.c b/src/libsystemd-network/test-lldp.c
index a2ac65095f..c52d422fce 100644
--- a/src/libsystemd-network/test-lldp.c
+++ b/src/libsystemd-network/test-lldp.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <arpa/inet.h>
#include <errno.h>
diff --git a/src/libsystemd-network/test-ndisc-ra.c b/src/libsystemd-network/test-ndisc-ra.c
index 942a128cae..927e21b3cd 100644
--- a/src/libsystemd-network/test-ndisc-ra.c
+++ b/src/libsystemd-network/test-ndisc-ra.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2017 Intel Corporation. All rights reserved.
***/
diff --git a/src/libsystemd-network/test-ndisc-rs.c b/src/libsystemd-network/test-ndisc-rs.c
index 2c4ffb94dd..1b2bba889d 100644
--- a/src/libsystemd-network/test-ndisc-rs.c
+++ b/src/libsystemd-network/test-ndisc-rs.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2014 Intel Corporation. All rights reserved.
***/
diff --git a/src/libsystemd-network/test-sd-dhcp-lease.c b/src/libsystemd-network/test-sd-dhcp-lease.c
index 534cc78564..9f13226889 100644
--- a/src/libsystemd-network/test-sd-dhcp-lease.c
+++ b/src/libsystemd-network/test-sd-dhcp-lease.c
@@ -1,3 +1,5 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
#include <errno.h>
#include "dhcp-lease-internal.h"
diff --git a/src/libsystemd/disable-mempool.c b/src/libsystemd/disable-mempool.c
index 034bd24dc4..1baf91f05b 100644
--- a/src/libsystemd/disable-mempool.c
+++ b/src/libsystemd/disable-mempool.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "mempool.h"
diff --git a/src/libsystemd/libsystemd.pc.in b/src/libsystemd/libsystemd.pc.in
index a010dea2e9..74f33b70e6 100644
--- a/src/libsystemd/libsystemd.pc.in
+++ b/src/libsystemd/libsystemd.pc.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/src/libsystemd/libsystemd.sym b/src/libsystemd/libsystemd.sym
index 6e7f2eee53..f83b364c96 100644
--- a/src/libsystemd/libsystemd.sym
+++ b/src/libsystemd/libsystemd.sym
@@ -1,5 +1,5 @@
/***
- SPDX-License-Identifier: LGPL-2.1+
+ SPDX-License-Identifier: LGPL-2.1-or-later
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
diff --git a/src/libsystemd/meson.build b/src/libsystemd/meson.build
index aa1ed9b7dd..50716f7b94 100644
--- a/src/libsystemd/meson.build
+++ b/src/libsystemd/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
id128_sources = files('''
sd-id128/id128-util.c
diff --git a/src/libsystemd/sd-bus/bus-common-errors.c b/src/libsystemd/sd-bus/bus-common-errors.c
index dc9a2fdc3a..ef1fa3711b 100644
--- a/src/libsystemd/sd-bus/bus-common-errors.c
+++ b/src/libsystemd/sd-bus/bus-common-errors.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
diff --git a/src/libsystemd/sd-bus/bus-common-errors.h b/src/libsystemd/sd-bus/bus-common-errors.h
index 965f6dd134..7e5be17d53 100644
--- a/src/libsystemd/sd-bus/bus-common-errors.h
+++ b/src/libsystemd/sd-bus/bus-common-errors.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "bus-error.h"
diff --git a/src/libsystemd/sd-bus/bus-container.c b/src/libsystemd/sd-bus/bus-container.c
index e85a9eda2b..f09d5e7fd1 100644
--- a/src/libsystemd/sd-bus/bus-container.c
+++ b/src/libsystemd/sd-bus/bus-container.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <unistd.h>
diff --git a/src/libsystemd/sd-bus/bus-container.h b/src/libsystemd/sd-bus/bus-container.h
index f6ef688032..cb503a5970 100644
--- a/src/libsystemd/sd-bus/bus-container.h
+++ b/src/libsystemd/sd-bus/bus-container.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/libsystemd/sd-bus/bus-control.c b/src/libsystemd/sd-bus/bus-control.c
index b7ca79bb58..a63937e1ce 100644
--- a/src/libsystemd/sd-bus/bus-control.c
+++ b/src/libsystemd/sd-bus/bus-control.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#if HAVE_VALGRIND_MEMCHECK_H
#include <valgrind/memcheck.h>
diff --git a/src/libsystemd/sd-bus/bus-control.h b/src/libsystemd/sd-bus/bus-control.h
index eb1ae75c14..8182b9cd63 100644
--- a/src/libsystemd/sd-bus/bus-control.h
+++ b/src/libsystemd/sd-bus/bus-control.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/libsystemd/sd-bus/bus-convenience.c b/src/libsystemd/sd-bus/bus-convenience.c
index a5672a831f..4bf228b436 100644
--- a/src/libsystemd/sd-bus/bus-convenience.c
+++ b/src/libsystemd/sd-bus/bus-convenience.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <unistd.h>
#include <sys/types.h>
diff --git a/src/libsystemd/sd-bus/bus-creds.c b/src/libsystemd/sd-bus/bus-creds.c
index 88d679f64c..3896d94111 100644
--- a/src/libsystemd/sd-bus/bus-creds.c
+++ b/src/libsystemd/sd-bus/bus-creds.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <linux/capability.h>
#include <stdlib.h>
diff --git a/src/libsystemd/sd-bus/bus-creds.h b/src/libsystemd/sd-bus/bus-creds.h
index 508ef9d352..7806d9e362 100644
--- a/src/libsystemd/sd-bus/bus-creds.h
+++ b/src/libsystemd/sd-bus/bus-creds.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/libsystemd/sd-bus/bus-dump.c b/src/libsystemd/sd-bus/bus-dump.c
index 94107c297f..3ff87be67c 100644
--- a/src/libsystemd/sd-bus/bus-dump.c
+++ b/src/libsystemd/sd-bus/bus-dump.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/time.h>
diff --git a/src/libsystemd/sd-bus/bus-dump.h b/src/libsystemd/sd-bus/bus-dump.h
index f138791c04..aeb4616e9a 100644
--- a/src/libsystemd/sd-bus/bus-dump.h
+++ b/src/libsystemd/sd-bus/bus-dump.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/libsystemd/sd-bus/bus-error.c b/src/libsystemd/sd-bus/bus-error.c
index 83de996b25..8da2024a50 100644
--- a/src/libsystemd/sd-bus/bus-error.c
+++ b/src/libsystemd/sd-bus/bus-error.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stdarg.h>
@@ -581,7 +581,7 @@ const char *bus_error_message(const sd_bus_error *e, int error) {
return e->message;
}
- return strerror_safe(abs(error));
+ return strerror_safe(error);
}
static bool map_ok(const sd_bus_error_map *map) {
diff --git a/src/libsystemd/sd-bus/bus-error.h b/src/libsystemd/sd-bus/bus-error.h
index a6523e57a2..557284faf8 100644
--- a/src/libsystemd/sd-bus/bus-error.h
+++ b/src/libsystemd/sd-bus/bus-error.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/libsystemd/sd-bus/bus-gvariant.c b/src/libsystemd/sd-bus/bus-gvariant.c
index ba503b3213..850540a785 100644
--- a/src/libsystemd/sd-bus/bus-gvariant.c
+++ b/src/libsystemd/sd-bus/bus-gvariant.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <string.h>
diff --git a/src/libsystemd/sd-bus/bus-gvariant.h b/src/libsystemd/sd-bus/bus-gvariant.h
index 644b5f4b20..213fa97083 100644
--- a/src/libsystemd/sd-bus/bus-gvariant.h
+++ b/src/libsystemd/sd-bus/bus-gvariant.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "macro.h"
diff --git a/src/libsystemd/sd-bus/bus-internal.c b/src/libsystemd/sd-bus/bus-internal.c
index 5c3e955c20..3f03ad7c41 100644
--- a/src/libsystemd/sd-bus/bus-internal.c
+++ b/src/libsystemd/sd-bus/bus-internal.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "bus-internal.h"
diff --git a/src/libsystemd/sd-bus/bus-internal.h b/src/libsystemd/sd-bus/bus-internal.h
index ef2c3dbc4f..233a228315 100644
--- a/src/libsystemd/sd-bus/bus-internal.h
+++ b/src/libsystemd/sd-bus/bus-internal.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <pthread.h>
diff --git a/src/libsystemd/sd-bus/bus-introspect.c b/src/libsystemd/sd-bus/bus-introspect.c
index 734abcf3fd..866fca7acb 100644
--- a/src/libsystemd/sd-bus/bus-introspect.c
+++ b/src/libsystemd/sd-bus/bus-introspect.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "bus-internal.h"
#include "bus-introspect.h"
diff --git a/src/libsystemd/sd-bus/bus-introspect.h b/src/libsystemd/sd-bus/bus-introspect.h
index 19d39923e5..34f32a4cf9 100644
--- a/src/libsystemd/sd-bus/bus-introspect.h
+++ b/src/libsystemd/sd-bus/bus-introspect.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdio.h>
diff --git a/src/libsystemd/sd-bus/bus-kernel.c b/src/libsystemd/sd-bus/bus-kernel.c
index b74cfa6ab8..6bba446932 100644
--- a/src/libsystemd/sd-bus/bus-kernel.c
+++ b/src/libsystemd/sd-bus/bus-kernel.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#if HAVE_VALGRIND_MEMCHECK_H
#include <valgrind/memcheck.h>
diff --git a/src/libsystemd/sd-bus/bus-kernel.h b/src/libsystemd/sd-bus/bus-kernel.h
index fbbc43f6fa..be8e0ceb9b 100644
--- a/src/libsystemd/sd-bus/bus-kernel.h
+++ b/src/libsystemd/sd-bus/bus-kernel.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/libsystemd/sd-bus/bus-match.c b/src/libsystemd/sd-bus/bus-match.c
index 20a4b46773..d7da4bf009 100644
--- a/src/libsystemd/sd-bus/bus-match.c
+++ b/src/libsystemd/sd-bus/bus-match.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "bus-internal.h"
diff --git a/src/libsystemd/sd-bus/bus-match.h b/src/libsystemd/sd-bus/bus-match.h
index a6f67ce089..e44e40644e 100644
--- a/src/libsystemd/sd-bus/bus-match.h
+++ b/src/libsystemd/sd-bus/bus-match.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/libsystemd/sd-bus/bus-message.c b/src/libsystemd/sd-bus/bus-message.c
index f966dda229..86ff5bdfa2 100644
--- a/src/libsystemd/sd-bus/bus-message.c
+++ b/src/libsystemd/sd-bus/bus-message.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
@@ -3189,6 +3189,8 @@ static int container_next_item(sd_bus_message *m, struct bus_container *c, size_
int sz;
sz = bus_gvariant_get_size(c->signature);
+ if (sz == 0)
+ return -EBADMSG;
if (sz < 0) {
int alignment;
diff --git a/src/libsystemd/sd-bus/bus-message.h b/src/libsystemd/sd-bus/bus-message.h
index 5d869213ab..3561737e2f 100644
--- a/src/libsystemd/sd-bus/bus-message.h
+++ b/src/libsystemd/sd-bus/bus-message.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <byteswap.h>
diff --git a/src/libsystemd/sd-bus/bus-objects.c b/src/libsystemd/sd-bus/bus-objects.c
index 33284d7301..275c4318a1 100644
--- a/src/libsystemd/sd-bus/bus-objects.c
+++ b/src/libsystemd/sd-bus/bus-objects.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "bus-internal.h"
diff --git a/src/libsystemd/sd-bus/bus-objects.h b/src/libsystemd/sd-bus/bus-objects.h
index f650196a54..20fccfa1d8 100644
--- a/src/libsystemd/sd-bus/bus-objects.h
+++ b/src/libsystemd/sd-bus/bus-objects.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "bus-internal.h"
diff --git a/src/libsystemd/sd-bus/bus-protocol.h b/src/libsystemd/sd-bus/bus-protocol.h
index 7e1cd3c31e..c41ab58faa 100644
--- a/src/libsystemd/sd-bus/bus-protocol.h
+++ b/src/libsystemd/sd-bus/bus-protocol.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <endian.h>
diff --git a/src/libsystemd/sd-bus/bus-signature.c b/src/libsystemd/sd-bus/bus-signature.c
index b420ba3688..bd0842fdbc 100644
--- a/src/libsystemd/sd-bus/bus-signature.c
+++ b/src/libsystemd/sd-bus/bus-signature.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <util.h>
diff --git a/src/libsystemd/sd-bus/bus-signature.h b/src/libsystemd/sd-bus/bus-signature.h
index b87bec8329..314fcc27c5 100644
--- a/src/libsystemd/sd-bus/bus-signature.h
+++ b/src/libsystemd/sd-bus/bus-signature.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/libsystemd/sd-bus/bus-slot.c b/src/libsystemd/sd-bus/bus-slot.c
index f90a7f05cc..a0009a7a87 100644
--- a/src/libsystemd/sd-bus/bus-slot.c
+++ b/src/libsystemd/sd-bus/bus-slot.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "sd-bus.h"
diff --git a/src/libsystemd/sd-bus/bus-slot.h b/src/libsystemd/sd-bus/bus-slot.h
index 48eb0453dc..8116195d4d 100644
--- a/src/libsystemd/sd-bus/bus-slot.h
+++ b/src/libsystemd/sd-bus/bus-slot.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/libsystemd/sd-bus/bus-socket.c b/src/libsystemd/sd-bus/bus-socket.c
index 1a040157f4..4881fd0d32 100644
--- a/src/libsystemd/sd-bus/bus-socket.c
+++ b/src/libsystemd/sd-bus/bus-socket.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <endian.h>
#include <poll.h>
diff --git a/src/libsystemd/sd-bus/bus-socket.h b/src/libsystemd/sd-bus/bus-socket.h
index f8d24556c9..52bc404625 100644
--- a/src/libsystemd/sd-bus/bus-socket.h
+++ b/src/libsystemd/sd-bus/bus-socket.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/libsystemd/sd-bus/bus-track.c b/src/libsystemd/sd-bus/bus-track.c
index 13fd52ffd5..5f8716e2aa 100644
--- a/src/libsystemd/sd-bus/bus-track.c
+++ b/src/libsystemd/sd-bus/bus-track.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "sd-bus.h"
diff --git a/src/libsystemd/sd-bus/bus-track.h b/src/libsystemd/sd-bus/bus-track.h
index 209b989d27..8dae1f3902 100644
--- a/src/libsystemd/sd-bus/bus-track.h
+++ b/src/libsystemd/sd-bus/bus-track.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
void bus_track_dispatch(sd_bus_track *track);
diff --git a/src/libsystemd/sd-bus/bus-type.c b/src/libsystemd/sd-bus/bus-type.c
index 585f8424b3..6a0f53d1d1 100644
--- a/src/libsystemd/sd-bus/bus-type.c
+++ b/src/libsystemd/sd-bus/bus-type.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
diff --git a/src/libsystemd/sd-bus/bus-type.h b/src/libsystemd/sd-bus/bus-type.h
index 0ecd8513fd..490108a2c6 100644
--- a/src/libsystemd/sd-bus/bus-type.h
+++ b/src/libsystemd/sd-bus/bus-type.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/libsystemd/sd-bus/sd-bus.c b/src/libsystemd/sd-bus/sd-bus.c
index 2337a4b3de..b8d4dc8d95 100644
--- a/src/libsystemd/sd-bus/sd-bus.c
+++ b/src/libsystemd/sd-bus/sd-bus.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <endian.h>
#include <netdb.h>
diff --git a/src/libsystemd/sd-bus/test-bus-address.c b/src/libsystemd/sd-bus/test-bus-address.c
index 70a6df10f9..b92558fea9 100644
--- a/src/libsystemd/sd-bus/test-bus-address.c
+++ b/src/libsystemd/sd-bus/test-bus-address.c
@@ -1,3 +1,5 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
#include "sd-bus.h"
#include "bus-internal.h"
diff --git a/src/libsystemd/sd-bus/test-bus-benchmark.c b/src/libsystemd/sd-bus/test-bus-benchmark.c
index 8de0a859ee..8c6711797a 100644
--- a/src/libsystemd/sd-bus/test-bus-benchmark.c
+++ b/src/libsystemd/sd-bus/test-bus-benchmark.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/wait.h>
#include <unistd.h>
diff --git a/src/libsystemd/sd-bus/test-bus-chat.c b/src/libsystemd/sd-bus/test-bus-chat.c
index 1497dc696f..c3c31c65e6 100644
--- a/src/libsystemd/sd-bus/test-bus-chat.c
+++ b/src/libsystemd/sd-bus/test-bus-chat.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <pthread.h>
diff --git a/src/libsystemd/sd-bus/test-bus-cleanup.c b/src/libsystemd/sd-bus/test-bus-cleanup.c
index 86a2407507..ece0a12bab 100644
--- a/src/libsystemd/sd-bus/test-bus-cleanup.c
+++ b/src/libsystemd/sd-bus/test-bus-cleanup.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdio.h>
diff --git a/src/libsystemd/sd-bus/test-bus-creds.c b/src/libsystemd/sd-bus/test-bus-creds.c
index 7f7bc491d2..6551e692f8 100644
--- a/src/libsystemd/sd-bus/test-bus-creds.c
+++ b/src/libsystemd/sd-bus/test-bus-creds.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "sd-bus.h"
diff --git a/src/libsystemd/sd-bus/test-bus-error.c b/src/libsystemd/sd-bus/test-bus-error.c
index 14e3c9c40d..2e3803c9b2 100644
--- a/src/libsystemd/sd-bus/test-bus-error.c
+++ b/src/libsystemd/sd-bus/test-bus-error.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "sd-bus.h"
diff --git a/src/libsystemd/sd-bus/test-bus-gvariant.c b/src/libsystemd/sd-bus/test-bus-gvariant.c
index d248bd4da1..b0033f1d13 100644
--- a/src/libsystemd/sd-bus/test-bus-gvariant.c
+++ b/src/libsystemd/sd-bus/test-bus-gvariant.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#if HAVE_GLIB
#include <glib.h>
diff --git a/src/libsystemd/sd-bus/test-bus-introspect.c b/src/libsystemd/sd-bus/test-bus-introspect.c
index cbc3158924..fb247c4d14 100644
--- a/src/libsystemd/sd-bus/test-bus-introspect.c
+++ b/src/libsystemd/sd-bus/test-bus-introspect.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "bus-introspect.h"
#include "log.h"
diff --git a/src/libsystemd/sd-bus/test-bus-marshal.c b/src/libsystemd/sd-bus/test-bus-marshal.c
index 107eea390e..9feeaf48fd 100644
--- a/src/libsystemd/sd-bus/test-bus-marshal.c
+++ b/src/libsystemd/sd-bus/test-bus-marshal.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <math.h>
#include <stdlib.h>
diff --git a/src/libsystemd/sd-bus/test-bus-match.c b/src/libsystemd/sd-bus/test-bus-match.c
index 47014c403b..aa6ddd336a 100644
--- a/src/libsystemd/sd-bus/test-bus-match.c
+++ b/src/libsystemd/sd-bus/test-bus-match.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "bus-match.h"
#include "bus-message.h"
diff --git a/src/libsystemd/sd-bus/test-bus-objects.c b/src/libsystemd/sd-bus/test-bus-objects.c
index 41cf8c1670..9116211886 100644
--- a/src/libsystemd/sd-bus/test-bus-objects.c
+++ b/src/libsystemd/sd-bus/test-bus-objects.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <pthread.h>
#include <stdlib.h>
diff --git a/src/libsystemd/sd-bus/test-bus-queue-ref-cycle.c b/src/libsystemd/sd-bus/test-bus-queue-ref-cycle.c
index 17598f3d63..7c2fa72e84 100644
--- a/src/libsystemd/sd-bus/test-bus-queue-ref-cycle.c
+++ b/src/libsystemd/sd-bus/test-bus-queue-ref-cycle.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "sd-bus.h"
#include "main-func.h"
diff --git a/src/libsystemd/sd-bus/test-bus-server.c b/src/libsystemd/sd-bus/test-bus-server.c
index 1302fdbb5a..5cb100b2f0 100644
--- a/src/libsystemd/sd-bus/test-bus-server.c
+++ b/src/libsystemd/sd-bus/test-bus-server.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <pthread.h>
#include <stdlib.h>
diff --git a/src/libsystemd/sd-bus/test-bus-signature.c b/src/libsystemd/sd-bus/test-bus-signature.c
index 84648dbc2a..ea7efe68e4 100644
--- a/src/libsystemd/sd-bus/test-bus-signature.c
+++ b/src/libsystemd/sd-bus/test-bus-signature.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "bus-internal.h"
#include "bus-signature.h"
diff --git a/src/libsystemd/sd-bus/test-bus-track.c b/src/libsystemd/sd-bus/test-bus-track.c
index 5adcf948dd..64aa88bb4f 100644
--- a/src/libsystemd/sd-bus/test-bus-track.c
+++ b/src/libsystemd/sd-bus/test-bus-track.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <sys/socket.h>
diff --git a/src/libsystemd/sd-bus/test-bus-vtable.c b/src/libsystemd/sd-bus/test-bus-vtable.c
index b6350027dd..fe122381e7 100644
--- a/src/libsystemd/sd-bus/test-bus-vtable.c
+++ b/src/libsystemd/sd-bus/test-bus-vtable.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdbool.h>
#include <stddef.h>
diff --git a/src/libsystemd/sd-bus/test-bus-watch-bind.c b/src/libsystemd/sd-bus/test-bus-watch-bind.c
index 7ded9386b7..fdc8772f84 100644
--- a/src/libsystemd/sd-bus/test-bus-watch-bind.c
+++ b/src/libsystemd/sd-bus/test-bus-watch-bind.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <pthread.h>
diff --git a/src/libsystemd/sd-bus/test-vtable-data.h b/src/libsystemd/sd-bus/test-vtable-data.h
index bc89893814..7269a49945 100644
--- a/src/libsystemd/sd-bus/test-vtable-data.h
+++ b/src/libsystemd/sd-bus/test-vtable-data.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/* This is meant to be included in other files, hence no headers */
diff --git a/src/libsystemd/sd-daemon/sd-daemon.c b/src/libsystemd/sd-daemon/sd-daemon.c
index bdcbb106ce..6f0b975627 100644
--- a/src/libsystemd/sd-daemon/sd-daemon.c
+++ b/src/libsystemd/sd-daemon/sd-daemon.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <limits.h>
@@ -30,13 +30,12 @@
#define SNDBUF_SIZE (8*1024*1024)
static void unsetenv_all(bool unset_environment) {
-
if (!unset_environment)
return;
- unsetenv("LISTEN_PID");
- unsetenv("LISTEN_FDS");
- unsetenv("LISTEN_FDNAMES");
+ assert_se(unsetenv("LISTEN_PID") == 0);
+ assert_se(unsetenv("LISTEN_FDS") == 0);
+ assert_se(unsetenv("LISTEN_FDNAMES") == 0);
}
_public_ int sd_listen_fds(int unset_environment) {
@@ -548,7 +547,7 @@ _public_ int sd_pid_notify_with_fds(
finish:
if (unset_environment)
- unsetenv("NOTIFY_SOCKET");
+ assert_se(unsetenv("NOTIFY_SOCKET") == 0);
return r;
}
@@ -672,9 +671,9 @@ _public_ int sd_watchdog_enabled(int unset_environment, uint64_t *usec) {
finish:
if (unset_environment && s)
- unsetenv("WATCHDOG_USEC");
+ assert_se(unsetenv("WATCHDOG_USEC") == 0);
if (unset_environment && p)
- unsetenv("WATCHDOG_PID");
+ assert_se(unsetenv("WATCHDOG_PID") == 0);
return r;
}
diff --git a/src/libsystemd/sd-device/device-enumerator-private.h b/src/libsystemd/sd-device/device-enumerator-private.h
index cf2b261482..9c6437dbed 100644
--- a/src/libsystemd/sd-device/device-enumerator-private.h
+++ b/src/libsystemd/sd-device/device-enumerator-private.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-device.h"
diff --git a/src/libsystemd/sd-device/device-enumerator.c b/src/libsystemd/sd-device/device-enumerator.c
index 2d1ce79888..3641348881 100644
--- a/src/libsystemd/sd-device/device-enumerator.c
+++ b/src/libsystemd/sd-device/device-enumerator.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <unistd.h>
@@ -420,7 +420,8 @@ static int enumerator_scan_dir_and_add_devices(sd_device_enumerator *enumerator,
dir = opendir(path);
if (!dir)
- return -errno;
+ /* this is necessarily racey, so ignore missing directories */
+ return (errno == ENOENT && (subdir1 || subdir2)) ? 0 : -errno;
FOREACH_DIRENT_ALL(dent, dir, return -errno) {
_cleanup_(sd_device_unrefp) sd_device *device = NULL;
@@ -743,16 +744,12 @@ static int enumerator_scan_devices_all(sd_device_enumerator *enumerator) {
int k;
k = enumerator_scan_dir(enumerator, "bus", "devices", NULL);
- if (k < 0) {
- log_debug_errno(k, "sd-device-enumerator: Failed to scan /sys/bus: %m");
- r = k;
- }
+ if (k < 0)
+ r = log_debug_errno(k, "sd-device-enumerator: Failed to scan /sys/bus: %m");
k = enumerator_scan_dir(enumerator, "class", NULL, NULL);
- if (k < 0) {
- log_debug_errno(k, "sd-device-enumerator: Failed to scan /sys/class: %m");
- r = k;
- }
+ if (k < 0)
+ r = log_debug_errno(k, "sd-device-enumerator: Failed to scan /sys/class: %m");
}
return r;
@@ -870,10 +867,8 @@ int device_enumerator_scan_subsystems(sd_device_enumerator *enumerator) {
/* modules */
if (match_subsystem(enumerator, "module")) {
k = enumerator_scan_dir_and_add_devices(enumerator, "module", NULL, NULL);
- if (k < 0) {
- log_debug_errno(k, "sd-device-enumerator: Failed to scan modules: %m");
- r = k;
- }
+ if (k < 0)
+ r = log_debug_errno(k, "sd-device-enumerator: Failed to scan modules: %m");
}
if (access("/sys/subsystem", F_OK) >= 0)
@@ -884,19 +879,15 @@ int device_enumerator_scan_subsystems(sd_device_enumerator *enumerator) {
/* subsystems (only buses support coldplug) */
if (match_subsystem(enumerator, "subsystem")) {
k = enumerator_scan_dir_and_add_devices(enumerator, subsysdir, NULL, NULL);
- if (k < 0) {
- log_debug_errno(k, "sd-device-enumerator: Failed to scan subsystems: %m");
- r = k;
- }
+ if (k < 0)
+ r = log_debug_errno(k, "sd-device-enumerator: Failed to scan subsystems: %m");
}
/* subsystem drivers */
if (match_subsystem(enumerator, "drivers")) {
k = enumerator_scan_dir(enumerator, subsysdir, "drivers", "drivers");
- if (k < 0) {
- log_debug_errno(k, "sd-device-enumerator: Failed to scan drivers: %m");
- r = k;
- }
+ if (k < 0)
+ r = log_debug_errno(k, "sd-device-enumerator: Failed to scan drivers: %m");
}
typesafe_qsort(enumerator->devices, enumerator->n_devices, device_compare);
diff --git a/src/libsystemd/sd-device/device-internal.h b/src/libsystemd/sd-device/device-internal.h
index 9c6b8a345f..3321c8e2dc 100644
--- a/src/libsystemd/sd-device/device-internal.h
+++ b/src/libsystemd/sd-device/device-internal.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-device.h"
@@ -8,9 +8,19 @@
#include "set.h"
#include "time-util.h"
+#define LATEST_UDEV_DATABASE_VERSION 1
+
struct sd_device {
unsigned n_ref;
+ /* The database version indicates the supported features by the udev database.
+ * This is saved and parsed in V field.
+ *
+ * 0: None of the following features are supported (systemd version <= 246).
+ * 1: The current tags (Q) and the database version (V) features are implemented (>= 247).
+ */
+ unsigned database_version;
+
int watch_handle;
sd_device *parent;
@@ -88,7 +98,9 @@ struct sd_device {
int device_new_aux(sd_device **ret);
int device_add_property_aux(sd_device *device, const char *key, const char *value, bool db);
-int device_add_property_internal(sd_device *device, const char *key, const char *value);
+static inline int device_add_property_internal(sd_device *device, const char *key, const char *value) {
+ return device_add_property_aux(device, key, value, false);
+}
int device_read_uevent_file(sd_device *device);
int device_set_syspath(sd_device *device, const char *_syspath, bool verify);
diff --git a/src/libsystemd/sd-device/device-monitor-private.h b/src/libsystemd/sd-device/device-monitor-private.h
index 2659cc3c46..2ca3a313b6 100644
--- a/src/libsystemd/sd-device/device-monitor-private.h
+++ b/src/libsystemd/sd-device/device-monitor-private.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-device.h"
diff --git a/src/libsystemd/sd-device/device-monitor.c b/src/libsystemd/sd-device/device-monitor.c
index 43646e1880..fd5900704d 100644
--- a/src/libsystemd/sd-device/device-monitor.c
+++ b/src/libsystemd/sd-device/device-monitor.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <linux/filter.h>
diff --git a/src/libsystemd/sd-device/device-private.c b/src/libsystemd/sd-device/device-private.c
index dc16d555a1..2801ebdcbe 100644
--- a/src/libsystemd/sd-device/device-private.c
+++ b/src/libsystemd/sd-device/device-private.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <ctype.h>
#include <net/if.h>
@@ -468,6 +468,10 @@ int device_new_from_nulstr(sd_device **ret, uint8_t *nulstr, size_t len) {
i += end - key + 1;
+ /* netlink messages for some devices contain an unwanted newline at the end of value.
+ * Let's drop the newline and remaining characters after the newline. */
+ truncate_nl(key);
+
r = device_append(device, key, &major, &minor);
if (r < 0)
return r;
@@ -944,6 +948,10 @@ int device_update_db(sd_device *device) {
SET_FOREACH(tag, device->current_tags)
fprintf(f, "Q:%s\n", tag); /* Current tag */
+
+ /* Always write the latest database version here, instead of the value stored in
+ * device->database_version, as which may be 0. */
+ fputs("V:" STRINGIFY(LATEST_UDEV_DATABASE_VERSION) "\n", f);
}
r = fflush_and_check(f);
diff --git a/src/libsystemd/sd-device/device-private.h b/src/libsystemd/sd-device/device-private.h
index 1f1c4ca107..db81934f32 100644
--- a/src/libsystemd/sd-device/device-private.h
+++ b/src/libsystemd/sd-device/device-private.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <inttypes.h>
diff --git a/src/libsystemd/sd-device/device-util.h b/src/libsystemd/sd-device/device-util.h
index 032d1dc8b8..122620953a 100644
--- a/src/libsystemd/sd-device/device-util.h
+++ b/src/libsystemd/sd-device/device-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#define FOREACH_DEVICE_PROPERTY(device, key, value) \
diff --git a/src/libsystemd/sd-device/sd-device.c b/src/libsystemd/sd-device/sd-device.c
index 634c9a24f8..d06f90ce1d 100644
--- a/src/libsystemd/sd-device/sd-device.c
+++ b/src/libsystemd/sd-device/sd-device.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <ctype.h>
#include <net/if.h>
@@ -128,10 +128,6 @@ int device_add_property_aux(sd_device *device, const char *_key, const char *_va
return 0;
}
-int device_add_property_internal(sd_device *device, const char *key, const char *value) {
- return device_add_property_aux(device, key, value, false);
-}
-
int device_set_syspath(sd_device *device, const char *_syspath, bool verify) {
_cleanup_free_ char *syspath = NULL;
const char *devpath;
@@ -1209,6 +1205,12 @@ static int handle_db_line(sd_device *device, char key, const char *value) {
return r;
break;
+ case 'V':
+ r = safe_atou(value, &device->database_version);
+ if (r < 0)
+ return r;
+
+ break;
default:
log_device_debug(device, "sd-device: Unknown key '%c' in device db, ignoring", key);
}
@@ -1442,11 +1444,26 @@ _public_ const char *sd_device_get_tag_next(sd_device *device) {
return v;
}
+static bool device_database_supports_current_tags(sd_device *device) {
+ assert(device);
+
+ (void) device_read_db(device);
+
+ /* The current tags (saved in Q field) feature is implemented in database version 1.
+ * If the database version is 0, then the tags (NOT current tags, saved in G field) are not
+ * sticky. Thus, we can safely bypass the operations for the current tags (Q) to tags (G). */
+
+ return device->database_version >= 1;
+}
+
_public_ const char *sd_device_get_current_tag_first(sd_device *device) {
void *v;
assert_return(device, NULL);
+ if (!device_database_supports_current_tags(device))
+ return sd_device_get_tag_first(device);
+
(void) device_read_db(device);
device->current_tags_iterator_generation = device->tags_generation;
@@ -1461,6 +1478,9 @@ _public_ const char *sd_device_get_current_tag_next(sd_device *device) {
assert_return(device, NULL);
+ if (!device_database_supports_current_tags(device))
+ return sd_device_get_tag_next(device);
+
(void) device_read_db(device);
if (device->current_tags_iterator_generation != device->tags_generation)
@@ -1763,6 +1783,9 @@ _public_ int sd_device_has_current_tag(sd_device *device, const char *tag) {
assert_return(device, -EINVAL);
assert_return(tag, -EINVAL);
+ if (!device_database_supports_current_tags(device))
+ return sd_device_has_tag(device, tag);
+
(void) device_read_db(device);
return set_contains(device->current_tags, tag);
diff --git a/src/libsystemd/sd-device/test-sd-device-monitor.c b/src/libsystemd/sd-device/test-sd-device-monitor.c
index aa1edaaf3c..fddd1c152c 100644
--- a/src/libsystemd/sd-device/test-sd-device-monitor.c
+++ b/src/libsystemd/sd-device/test-sd-device-monitor.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdbool.h>
#include <unistd.h>
diff --git a/src/libsystemd/sd-device/test-sd-device-thread.c b/src/libsystemd/sd-device/test-sd-device-thread.c
index 9f1c02373f..6f3015515b 100644
--- a/src/libsystemd/sd-device/test-sd-device-thread.c
+++ b/src/libsystemd/sd-device/test-sd-device-thread.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <pthread.h>
#include <stdbool.h>
diff --git a/src/libsystemd/sd-device/test-sd-device.c b/src/libsystemd/sd-device/test-sd-device.c
index ca9662b851..9f48d2bf1e 100644
--- a/src/libsystemd/sd-device/test-sd-device.c
+++ b/src/libsystemd/sd-device/test-sd-device.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "device-enumerator-private.h"
#include "device-private.h"
diff --git a/src/libsystemd/sd-device/test-udev-device-thread.c b/src/libsystemd/sd-device/test-udev-device-thread.c
index 2fc0f59185..a493152d4a 100644
--- a/src/libsystemd/sd-device/test-udev-device-thread.c
+++ b/src/libsystemd/sd-device/test-udev-device-thread.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <pthread.h>
#include <stdbool.h>
diff --git a/src/libsystemd/sd-event/event-source.h b/src/libsystemd/sd-event/event-source.h
index a8a30d825e..62d07187a2 100644
--- a/src/libsystemd/sd-event/event-source.h
+++ b/src/libsystemd/sd-event/event-source.h
@@ -1,5 +1,5 @@
#pragma once
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/epoll.h>
#include <sys/timerfd.h>
diff --git a/src/libsystemd/sd-event/event-util.c b/src/libsystemd/sd-event/event-util.c
index 43e73d55e1..132796fc6c 100644
--- a/src/libsystemd/sd-event/event-util.c
+++ b/src/libsystemd/sd-event/event-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
diff --git a/src/libsystemd/sd-event/event-util.h b/src/libsystemd/sd-event/event-util.h
index 00180955f9..c8f97bc8d6 100644
--- a/src/libsystemd/sd-event/event-util.h
+++ b/src/libsystemd/sd-event/event-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/libsystemd/sd-event/sd-event.c b/src/libsystemd/sd-event/sd-event.c
index 50ee29ae97..7a3f89ed37 100644
--- a/src/libsystemd/sd-event/sd-event.c
+++ b/src/libsystemd/sd-event/sd-event.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/epoll.h>
#include <sys/timerfd.h>
@@ -402,8 +402,7 @@ static int source_io_register(
if (epoll_ctl(s->event->epoll_fd,
s->io.registered ? EPOLL_CTL_MOD : EPOLL_CTL_ADD,
- s->io.fd,
- &ev) < 0)
+ s->io.fd, &ev) < 0)
return -errno;
s->io.registered = true;
@@ -430,8 +429,6 @@ static void source_child_pidfd_unregister(sd_event_source *s) {
}
static int source_child_pidfd_register(sd_event_source *s, int enabled) {
- int r;
-
assert(s);
assert(s->type == SOURCE_CHILD);
assert(enabled != SD_EVENT_OFF);
@@ -442,11 +439,9 @@ static int source_child_pidfd_register(sd_event_source *s, int enabled) {
.data.ptr = s,
};
- if (s->child.registered)
- r = epoll_ctl(s->event->epoll_fd, EPOLL_CTL_MOD, s->child.pidfd, &ev);
- else
- r = epoll_ctl(s->event->epoll_fd, EPOLL_CTL_ADD, s->child.pidfd, &ev);
- if (r < 0)
+ if (epoll_ctl(s->event->epoll_fd,
+ s->child.registered ? EPOLL_CTL_MOD : EPOLL_CTL_ADD,
+ s->child.pidfd, &ev) < 0)
return -errno;
}
@@ -1340,31 +1335,25 @@ _public_ int sd_event_add_child(
if (r < 0)
return r;
- e->n_enabled_child_sources++;
-
if (EVENT_SOURCE_WATCH_PIDFD(s)) {
/* We have a pidfd and we only want to watch for exit */
-
r = source_child_pidfd_register(s, s->enabled);
- if (r < 0) {
- e->n_enabled_child_sources--;
+ if (r < 0)
return r;
- }
+
} else {
/* We have no pidfd or we shall wait for some other event than WEXITED */
-
r = event_make_signal_data(e, SIGCHLD, NULL);
- if (r < 0) {
- e->n_enabled_child_sources--;
+ if (r < 0)
return r;
- }
e->need_process_child = true;
}
+ e->n_enabled_child_sources++;
+
if (ret)
*ret = s;
-
TAKE_PTR(s);
return 0;
}
@@ -1429,31 +1418,24 @@ _public_ int sd_event_add_child_pidfd(
if (r < 0)
return r;
- e->n_enabled_child_sources++;
-
if (EVENT_SOURCE_WATCH_PIDFD(s)) {
/* We only want to watch for WEXITED */
-
r = source_child_pidfd_register(s, s->enabled);
- if (r < 0) {
- e->n_enabled_child_sources--;
+ if (r < 0)
return r;
- }
} else {
/* We shall wait for some other event than WEXITED */
-
r = event_make_signal_data(e, SIGCHLD, NULL);
- if (r < 0) {
- e->n_enabled_child_sources--;
+ if (r < 0)
return r;
- }
e->need_process_child = true;
}
+ e->n_enabled_child_sources++;
+
if (ret)
*ret = s;
-
TAKE_PTR(s);
return 0;
}
@@ -2311,11 +2293,11 @@ static int event_source_disable(sd_event_source *s) {
return 0;
}
-static int event_source_enable(sd_event_source *s, int m) {
+static int event_source_enable(sd_event_source *s, int enable) {
int r;
assert(s);
- assert(IN_SET(m, SD_EVENT_ON, SD_EVENT_ONESHOT));
+ assert(IN_SET(enable, SD_EVENT_ON, SD_EVENT_ONESHOT));
assert(s->enabled == SD_EVENT_OFF);
/* Unset the pending flag when this event source is enabled */
@@ -2325,31 +2307,16 @@ static int event_source_enable(sd_event_source *s, int m) {
return r;
}
- s->enabled = m;
-
switch (s->type) {
-
case SOURCE_IO:
- r = source_io_register(s, m, s->io.events);
- if (r < 0) {
- s->enabled = SD_EVENT_OFF;
+ r = source_io_register(s, enable, s->io.events);
+ if (r < 0)
return r;
- }
-
- break;
-
- case SOURCE_TIME_REALTIME:
- case SOURCE_TIME_BOOTTIME:
- case SOURCE_TIME_MONOTONIC:
- case SOURCE_TIME_REALTIME_ALARM:
- case SOURCE_TIME_BOOTTIME_ALARM:
- event_source_time_prioq_reshuffle(s);
break;
case SOURCE_SIGNAL:
r = event_make_signal_data(s->event, s->signal.sig, NULL);
if (r < 0) {
- s->enabled = SD_EVENT_OFF;
event_gc_signal_data(s->event, &s->priority, s->signal.sig);
return r;
}
@@ -2357,35 +2324,32 @@ static int event_source_enable(sd_event_source *s, int m) {
break;
case SOURCE_CHILD:
- s->event->n_enabled_child_sources++;
-
if (EVENT_SOURCE_WATCH_PIDFD(s)) {
/* yes, we have pidfd */
- r = source_child_pidfd_register(s, s->enabled);
- if (r < 0) {
- s->enabled = SD_EVENT_OFF;
- s->event->n_enabled_child_sources--;
+ r = source_child_pidfd_register(s, enable);
+ if (r < 0)
return r;
- }
} else {
/* no pidfd, or something other to watch for than WEXITED */
r = event_make_signal_data(s->event, SIGCHLD, NULL);
if (r < 0) {
- s->enabled = SD_EVENT_OFF;
- s->event->n_enabled_child_sources--;
event_gc_signal_data(s->event, &s->priority, SIGCHLD);
return r;
}
}
- break;
+ s->event->n_enabled_child_sources++;
- case SOURCE_EXIT:
- prioq_reshuffle(s->event->exit, s, &s->exit.prioq_index);
break;
+ case SOURCE_TIME_REALTIME:
+ case SOURCE_TIME_BOOTTIME:
+ case SOURCE_TIME_MONOTONIC:
+ case SOURCE_TIME_REALTIME_ALARM:
+ case SOURCE_TIME_BOOTTIME_ALARM:
+ case SOURCE_EXIT:
case SOURCE_DEFER:
case SOURCE_POST:
case SOURCE_INOTIFY:
@@ -2395,6 +2359,26 @@ static int event_source_enable(sd_event_source *s, int m) {
assert_not_reached("Wut? I shouldn't exist.");
}
+ s->enabled = enable;
+
+ /* Non-failing operations below */
+ switch (s->type) {
+ case SOURCE_TIME_REALTIME:
+ case SOURCE_TIME_BOOTTIME:
+ case SOURCE_TIME_MONOTONIC:
+ case SOURCE_TIME_REALTIME_ALARM:
+ case SOURCE_TIME_BOOTTIME_ALARM:
+ event_source_time_prioq_reshuffle(s);
+ break;
+
+ case SOURCE_EXIT:
+ prioq_reshuffle(s->event->exit, s, &s->exit.prioq_index);
+ break;
+
+ default:
+ break;
+ }
+
return 0;
}
diff --git a/src/libsystemd/sd-event/test-event.c b/src/libsystemd/sd-event/test-event.c
index b623972365..1c4d0e25ab 100644
--- a/src/libsystemd/sd-event/test-event.c
+++ b/src/libsystemd/sd-event/test-event.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/wait.h>
diff --git a/src/libsystemd/sd-hwdb/hwdb-internal.h b/src/libsystemd/sd-hwdb/hwdb-internal.h
index d82b8c1279..5c20688cd4 100644
--- a/src/libsystemd/sd-hwdb/hwdb-internal.h
+++ b/src/libsystemd/sd-hwdb/hwdb-internal.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdint.h>
diff --git a/src/libsystemd/sd-hwdb/hwdb-util.c b/src/libsystemd/sd-hwdb/hwdb-util.c
index 2266b67adb..4c94ba9c88 100644
--- a/src/libsystemd/sd-hwdb/hwdb-util.c
+++ b/src/libsystemd/sd-hwdb/hwdb-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <ctype.h>
#include <stdio.h>
diff --git a/src/libsystemd/sd-hwdb/hwdb-util.h b/src/libsystemd/sd-hwdb/hwdb-util.h
index 425b4b3e13..5afde74723 100644
--- a/src/libsystemd/sd-hwdb/hwdb-util.h
+++ b/src/libsystemd/sd-hwdb/hwdb-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/libsystemd/sd-hwdb/sd-hwdb.c b/src/libsystemd/sd-hwdb/sd-hwdb.c
index 0e326f3d22..cb3c77ce96 100644
--- a/src/libsystemd/sd-hwdb/sd-hwdb.c
+++ b/src/libsystemd/sd-hwdb/sd-hwdb.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2008 Alan Jenkins <alan.christopher.jenkins@googlemail.com>
***/
diff --git a/src/libsystemd/sd-id128/id128-util.c b/src/libsystemd/sd-id128/id128-util.c
index ebbfb2d32e..a3f6da6381 100644
--- a/src/libsystemd/sd-id128/id128-util.c
+++ b/src/libsystemd/sd-id128/id128-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/libsystemd/sd-id128/id128-util.h b/src/libsystemd/sd-id128/id128-util.h
index 1453c00f2f..6b09bcd96a 100644
--- a/src/libsystemd/sd-id128/id128-util.h
+++ b/src/libsystemd/sd-id128/id128-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/libsystemd/sd-id128/sd-id128.c b/src/libsystemd/sd-id128/sd-id128.c
index 9b38ef0c56..d5de935c77 100644
--- a/src/libsystemd/sd-id128/sd-id128.c
+++ b/src/libsystemd/sd-id128/sd-id128.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/libsystemd/sd-login/sd-login.c b/src/libsystemd/sd-login/sd-login.c
index 939b2a5df4..1fc379512f 100644
--- a/src/libsystemd/sd-login/sd-login.c
+++ b/src/libsystemd/sd-login/sd-login.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <poll.h>
@@ -355,7 +355,7 @@ _public_ int sd_uid_is_on_seat(uid_t uid, int require_active, const char *seat)
char t[DECIMAL_STR_MAX(uid_t)];
xsprintf(t, UID_FMT, uid);
- return string_contains_word(content, ",", t);
+ return string_contains_word(content, NULL, t);
}
static int uid_get_array(uid_t uid, const char *variable, char ***array) {
diff --git a/src/libsystemd/sd-login/test-login.c b/src/libsystemd/sd-login/test-login.c
index 5f61a8f8b6..5b2ff93e1c 100644
--- a/src/libsystemd/sd-login/test-login.c
+++ b/src/libsystemd/sd-login/test-login.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <poll.h>
diff --git a/src/libsystemd/sd-netlink/generic-netlink.c b/src/libsystemd/sd-netlink/generic-netlink.c
index b4971da323..f295fa9e83 100644
--- a/src/libsystemd/sd-netlink/generic-netlink.c
+++ b/src/libsystemd/sd-netlink/generic-netlink.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <linux/genetlink.h>
diff --git a/src/libsystemd/sd-netlink/generic-netlink.h b/src/libsystemd/sd-netlink/generic-netlink.h
index e9ae5591f2..72001e88d2 100644
--- a/src/libsystemd/sd-netlink/generic-netlink.h
+++ b/src/libsystemd/sd-netlink/generic-netlink.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-netlink.h"
diff --git a/src/libsystemd/sd-netlink/netlink-internal.h b/src/libsystemd/sd-netlink/netlink-internal.h
index b14ce435ee..1240f0d66d 100644
--- a/src/libsystemd/sd-netlink/netlink-internal.h
+++ b/src/libsystemd/sd-netlink/netlink-internal.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <linux/netlink.h>
diff --git a/src/libsystemd/sd-netlink/netlink-message.c b/src/libsystemd/sd-netlink/netlink-message.c
index da4f5ba688..bd56536062 100644
--- a/src/libsystemd/sd-netlink/netlink-message.c
+++ b/src/libsystemd/sd-netlink/netlink-message.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <netinet/in.h>
#include <stdbool.h>
@@ -495,6 +495,25 @@ int sd_netlink_message_append_ether_addr(sd_netlink_message *m, unsigned short t
return 0;
}
+int netlink_message_append_hw_addr(sd_netlink_message *m, unsigned short type, const hw_addr_data *data) {
+ int r;
+
+ assert_return(m, -EINVAL);
+ assert_return(!m->sealed, -EPERM);
+ assert_return(data, -EINVAL);
+ assert_return(data->length > 0, -EINVAL);
+
+ r = message_attribute_has_type(m, NULL, type, NETLINK_TYPE_ETHER_ADDR);
+ if (r < 0)
+ return r;
+
+ r = add_rtattr(m, type, data->addr.bytes, data->length);
+ if (r < 0)
+ return r;
+
+ return 0;
+}
+
int sd_netlink_message_append_cache_info(sd_netlink_message *m, unsigned short type, const struct ifa_cacheinfo *info) {
int r;
@@ -864,6 +883,30 @@ int sd_netlink_message_read_ether_addr(sd_netlink_message *m, unsigned short typ
return 0;
}
+int netlink_message_read_hw_addr(sd_netlink_message *m, unsigned short type, hw_addr_data *data) {
+ int r;
+ void *attr_data;
+
+ assert_return(m, -EINVAL);
+
+ r = message_attribute_has_type(m, NULL, type, NETLINK_TYPE_ETHER_ADDR);
+ if (r < 0)
+ return r;
+
+ r = netlink_message_read_internal(m, type, &attr_data, NULL);
+ if (r < 0)
+ return r;
+ else if ((size_t) r > sizeof(union hw_addr_union))
+ return -EIO;
+
+ if (data) {
+ memcpy(data->addr.bytes, attr_data, r);
+ data->length = r;
+ }
+
+ return 0;
+}
+
int sd_netlink_message_read_cache_info(sd_netlink_message *m, unsigned short type, struct ifa_cacheinfo *info) {
int r;
void *attr_data;
diff --git a/src/libsystemd/sd-netlink/netlink-slot.c b/src/libsystemd/sd-netlink/netlink-slot.c
index 94a80a8067..fa951bf941 100644
--- a/src/libsystemd/sd-netlink/netlink-slot.c
+++ b/src/libsystemd/sd-netlink/netlink-slot.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
diff --git a/src/libsystemd/sd-netlink/netlink-slot.h b/src/libsystemd/sd-netlink/netlink-slot.h
index 2641ec6b4a..79de817262 100644
--- a/src/libsystemd/sd-netlink/netlink-slot.h
+++ b/src/libsystemd/sd-netlink/netlink-slot.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-netlink.h"
diff --git a/src/libsystemd/sd-netlink/netlink-socket.c b/src/libsystemd/sd-netlink/netlink-socket.c
index bcd82fe164..228e38df90 100644
--- a/src/libsystemd/sd-netlink/netlink-socket.c
+++ b/src/libsystemd/sd-netlink/netlink-socket.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <netinet/in.h>
#include <stdbool.h>
diff --git a/src/libsystemd/sd-netlink/netlink-types.c b/src/libsystemd/sd-netlink/netlink-types.c
index 5f5a1558a1..6fb6c147d9 100644
--- a/src/libsystemd/sd-netlink/netlink-types.c
+++ b/src/libsystemd/sd-netlink/netlink-types.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <netinet/in.h>
#include <stdint.h>
diff --git a/src/libsystemd/sd-netlink/netlink-types.h b/src/libsystemd/sd-netlink/netlink-types.h
index 959845ccac..b14e66fbb1 100644
--- a/src/libsystemd/sd-netlink/netlink-types.h
+++ b/src/libsystemd/sd-netlink/netlink-types.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "macro.h"
diff --git a/src/libsystemd/sd-netlink/netlink-util.c b/src/libsystemd/sd-netlink/netlink-util.c
index f893400580..09e2158c9e 100644
--- a/src/libsystemd/sd-netlink/netlink-util.c
+++ b/src/libsystemd/sd-netlink/netlink-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "sd-netlink.h"
diff --git a/src/libsystemd/sd-netlink/netlink-util.h b/src/libsystemd/sd-netlink/netlink-util.h
index 2768d5fdc4..d28d07a9f5 100644
--- a/src/libsystemd/sd-netlink/netlink-util.h
+++ b/src/libsystemd/sd-netlink/netlink-util.h
@@ -1,10 +1,11 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <linux/rtnetlink.h>
#include "sd-netlink.h"
+#include "ether-addr-util.h"
#include "in-addr-util.h"
#include "ordered-set.h"
#include "socket-util.h"
@@ -100,9 +101,11 @@ int rtnl_log_create_error(int r);
userdata, description); \
})
+int netlink_message_append_hw_addr(sd_netlink_message *m, unsigned short type, const hw_addr_data *data);
int netlink_message_append_in_addr_union(sd_netlink_message *m, unsigned short type, int family, const union in_addr_union *data);
int netlink_message_append_sockaddr_union(sd_netlink_message *m, unsigned short type, const union sockaddr_union *data);
+int netlink_message_read_hw_addr(sd_netlink_message *m, unsigned short type, hw_addr_data *data);
int netlink_message_read_in_addr_union(sd_netlink_message *m, unsigned short type, int family, union in_addr_union *data);
void rtattr_append_attribute_internal(struct rtattr *rta, unsigned short type, const void *data, size_t data_length);
diff --git a/src/libsystemd/sd-netlink/rtnl-message.c b/src/libsystemd/sd-netlink/rtnl-message.c
index 268150044c..4cabbabba6 100644
--- a/src/libsystemd/sd-netlink/rtnl-message.c
+++ b/src/libsystemd/sd-netlink/rtnl-message.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <netinet/in.h>
#include <linux/if_addrlabel.h>
diff --git a/src/libsystemd/sd-netlink/sd-netlink.c b/src/libsystemd/sd-netlink/sd-netlink.c
index 6f283e31ff..7801101807 100644
--- a/src/libsystemd/sd-netlink/sd-netlink.c
+++ b/src/libsystemd/sd-netlink/sd-netlink.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <poll.h>
diff --git a/src/libsystemd/sd-netlink/test-netlink.c b/src/libsystemd/sd-netlink/test-netlink.c
index be7a4f7835..41787c5a3e 100644
--- a/src/libsystemd/sd-netlink/test-netlink.c
+++ b/src/libsystemd/sd-netlink/test-netlink.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <net/if.h>
#include <netinet/ether.h>
diff --git a/src/libsystemd/sd-network/network-util.c b/src/libsystemd/sd-network/network-util.c
index 7c32a8ead1..acf7500970 100644
--- a/src/libsystemd/sd-network/network-util.c
+++ b/src/libsystemd/sd-network/network-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "sd-id128.h"
diff --git a/src/libsystemd/sd-network/network-util.h b/src/libsystemd/sd-network/network-util.h
index 2d05b666cb..762b15746f 100644
--- a/src/libsystemd/sd-network/network-util.h
+++ b/src/libsystemd/sd-network/network-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <inttypes.h>
diff --git a/src/libsystemd/sd-network/sd-network.c b/src/libsystemd/sd-network/sd-network.c
index 832ec1703e..b9b1099399 100644
--- a/src/libsystemd/sd-network/sd-network.c
+++ b/src/libsystemd/sd-network/sd-network.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <poll.h>
diff --git a/src/libsystemd/sd-path/sd-path.c b/src/libsystemd/sd-path/sd-path.c
index 26d2341c2b..61ed7cb2da 100644
--- a/src/libsystemd/sd-path/sd-path.c
+++ b/src/libsystemd/sd-path/sd-path.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "sd-path.h"
diff --git a/src/libsystemd/sd-resolve/resolve-private.h b/src/libsystemd/sd-resolve/resolve-private.h
index a0feb36f7c..7a339f7a35 100644
--- a/src/libsystemd/sd-resolve/resolve-private.h
+++ b/src/libsystemd/sd-resolve/resolve-private.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-resolve.h"
diff --git a/src/libsystemd/sd-resolve/sd-resolve.c b/src/libsystemd/sd-resolve/sd-resolve.c
index 1dc3203813..2cfa22d280 100644
--- a/src/libsystemd/sd-resolve/sd-resolve.c
+++ b/src/libsystemd/sd-resolve/sd-resolve.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <poll.h>
diff --git a/src/libsystemd/sd-resolve/test-resolve.c b/src/libsystemd/sd-resolve/test-resolve.c
index 627b86b3cb..b973dfd90d 100644
--- a/src/libsystemd/sd-resolve/test-resolve.c
+++ b/src/libsystemd/sd-resolve/test-resolve.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <arpa/inet.h>
#include <errno.h>
diff --git a/src/libsystemd/sd-utf8/sd-utf8.c b/src/libsystemd/sd-utf8/sd-utf8.c
index 78323cf7cb..82fa125ade 100644
--- a/src/libsystemd/sd-utf8/sd-utf8.c
+++ b/src/libsystemd/sd-utf8/sd-utf8.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "sd-utf8.h"
diff --git a/src/libudev/libudev-device-internal.h b/src/libudev/libudev-device-internal.h
index cd6c2a5bc5..437d431c90 100644
--- a/src/libudev/libudev-device-internal.h
+++ b/src/libudev/libudev-device-internal.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "libudev.h"
diff --git a/src/libudev/libudev-device.c b/src/libudev/libudev-device.c
index 704a09d01c..34543a8b2e 100644
--- a/src/libudev/libudev-device.c
+++ b/src/libudev/libudev-device.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <ctype.h>
#include <dirent.h>
diff --git a/src/libudev/libudev-enumerate.c b/src/libudev/libudev-enumerate.c
index a8b3f53572..33bd360188 100644
--- a/src/libudev/libudev-enumerate.c
+++ b/src/libudev/libudev-enumerate.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <dirent.h>
#include <errno.h>
diff --git a/src/libudev/libudev-hwdb.c b/src/libudev/libudev-hwdb.c
index 5299e0a16f..8e9ea97a2d 100644
--- a/src/libudev/libudev-hwdb.c
+++ b/src/libudev/libudev-hwdb.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
diff --git a/src/libudev/libudev-list-internal.h b/src/libudev/libudev-list-internal.h
index a15b385343..c23735e359 100644
--- a/src/libudev/libudev-list-internal.h
+++ b/src/libudev/libudev-list-internal.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "libudev.h"
diff --git a/src/libudev/libudev-list.c b/src/libudev/libudev-list.c
index 3b22976c9f..3b2a2cdee4 100644
--- a/src/libudev/libudev-list.c
+++ b/src/libudev/libudev-list.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "hashmap.h"
diff --git a/src/libudev/libudev-monitor.c b/src/libudev/libudev-monitor.c
index 5bec7418b8..a93adbd7a2 100644
--- a/src/libudev/libudev-monitor.c
+++ b/src/libudev/libudev-monitor.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <poll.h>
diff --git a/src/libudev/libudev-queue.c b/src/libudev/libudev-queue.c
index 4e055bbc37..01b237fde4 100644
--- a/src/libudev/libudev-queue.c
+++ b/src/libudev/libudev-queue.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2009 Alan Jenkins <alan-jenkins@tuffmail.co.uk>
***/
diff --git a/src/libudev/libudev-util.c b/src/libudev/libudev-util.c
index 4a471fb90d..bbb2879764 100644
--- a/src/libudev/libudev-util.c
+++ b/src/libudev/libudev-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <ctype.h>
#include <errno.h>
diff --git a/src/libudev/libudev-util.h b/src/libudev/libudev-util.h
index 32b626ebc9..15e6214b0d 100644
--- a/src/libudev/libudev-util.h
+++ b/src/libudev/libudev-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "libudev.h"
diff --git a/src/libudev/libudev.c b/src/libudev/libudev.c
index aa187b2b4c..73574874ca 100644
--- a/src/libudev/libudev.c
+++ b/src/libudev/libudev.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <ctype.h>
#include <stdarg.h>
diff --git a/src/libudev/libudev.h b/src/libudev/libudev.h
index c9d0bf233e..55036de867 100644
--- a/src/libudev/libudev.h
+++ b/src/libudev/libudev.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#ifndef _LIBUDEV_H_
#define _LIBUDEV_H_
diff --git a/src/libudev/libudev.pc.in b/src/libudev/libudev.pc.in
index 40b340362e..b657b7d068 100644
--- a/src/libudev/libudev.pc.in
+++ b/src/libudev/libudev.pc.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/src/libudev/libudev.sym b/src/libudev/libudev.sym
index bad8313904..6aa6768f2d 100644
--- a/src/libudev/libudev.sym
+++ b/src/libudev/libudev.sym
@@ -1,5 +1,5 @@
/***
- SPDX-License-Identifier: LGPL-2.1+
+ SPDX-License-Identifier: LGPL-2.1-or-later
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
diff --git a/src/libudev/meson.build b/src/libudev/meson.build
index 88189748d3..3bd00ff4cc 100644
--- a/src/libudev/meson.build
+++ b/src/libudev/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
libudev_sources = files('''
libudev.c
diff --git a/src/locale/keymap-util.c b/src/locale/keymap-util.c
index 8e0cb74775..cb8153f4fe 100644
--- a/src/locale/keymap-util.c
+++ b/src/locale/keymap-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <sys/stat.h>
diff --git a/src/locale/keymap-util.h b/src/locale/keymap-util.h
index 6eced84240..49976472ef 100644
--- a/src/locale/keymap-util.h
+++ b/src/locale/keymap-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/locale/localectl.c b/src/locale/localectl.c
index 4895c292e4..7d2e887660 100644
--- a/src/locale/localectl.c
+++ b/src/locale/localectl.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <ftw.h>
#include <getopt.h>
diff --git a/src/locale/localed.c b/src/locale/localed.c
index 715ce5cac7..736dacdee9 100644
--- a/src/locale/localed.c
+++ b/src/locale/localed.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <sys/stat.h>
diff --git a/src/locale/meson.build b/src/locale/meson.build
index 314b0a3d37..6e3500d099 100644
--- a/src/locale/meson.build
+++ b/src/locale/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
systemd_localed_sources = files('''
localed.c
diff --git a/src/locale/org.freedesktop.locale1.conf b/src/locale/org.freedesktop.locale1.conf
index d74cbc11ab..a0905573e1 100644
--- a/src/locale/org.freedesktop.locale1.conf
+++ b/src/locale/org.freedesktop.locale1.conf
@@ -3,7 +3,7 @@
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<!--
- SPDX-License-Identifier: LGPL-2.1+
+ SPDX-License-Identifier: LGPL-2.1-or-later
This file is part of systemd.
diff --git a/src/locale/org.freedesktop.locale1.policy b/src/locale/org.freedesktop.locale1.policy
index f9241749e6..f12ca0970a 100644
--- a/src/locale/org.freedesktop.locale1.policy
+++ b/src/locale/org.freedesktop.locale1.policy
@@ -3,7 +3,7 @@
"http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
<!--
- SPDX-License-Identifier: LGPL-2.1+
+ SPDX-License-Identifier: LGPL-2.1-or-later
This file is part of systemd.
diff --git a/src/locale/org.freedesktop.locale1.service b/src/locale/org.freedesktop.locale1.service
index b15d39540c..2d812cbe39 100644
--- a/src/locale/org.freedesktop.locale1.service
+++ b/src/locale/org.freedesktop.locale1.service
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/src/locale/test-keymap-util.c b/src/locale/test-keymap-util.c
index f96f5b07ec..bded122399 100644
--- a/src/locale/test-keymap-util.c
+++ b/src/locale/test-keymap-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "keymap-util.h"
diff --git a/src/login/70-power-switch.rules b/src/login/70-power-switch.rules
index d69e65b3d5..3fb954a4f0 100644
--- a/src/login/70-power-switch.rules
+++ b/src/login/70-power-switch.rules
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/src/login/70-uaccess.rules.m4 b/src/login/70-uaccess.rules.m4
index 4bb144a93c..45e4adfa0f 100644
--- a/src/login/70-uaccess.rules.m4
+++ b/src/login/70-uaccess.rules.m4
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/src/login/71-seat.rules.in b/src/login/71-seat.rules.in
index 60dd6add60..3ccd52415f 100644
--- a/src/login/71-seat.rules.in
+++ b/src/login/71-seat.rules.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/src/login/73-seat-late.rules.m4 b/src/login/73-seat-late.rules.m4
index 4db8d4dd4c..e56cd61603 100644
--- a/src/login/73-seat-late.rules.m4
+++ b/src/login/73-seat-late.rules.m4
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/src/login/inhibit.c b/src/login/inhibit.c
index 399f70fbc7..e18dbc5132 100644
--- a/src/login/inhibit.c
+++ b/src/login/inhibit.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <getopt.h>
diff --git a/src/login/loginctl.c b/src/login/loginctl.c
index 28afc1bd09..695d18bba5 100644
--- a/src/login/loginctl.c
+++ b/src/login/loginctl.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <getopt.h>
diff --git a/src/login/logind-acl.c b/src/login/logind-acl.c
index 0cb3b0bec3..ed615e23f8 100644
--- a/src/login/logind-acl.c
+++ b/src/login/logind-acl.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
diff --git a/src/login/logind-acl.h b/src/login/logind-acl.h
index 00e286d76d..c88f3c0cf3 100644
--- a/src/login/logind-acl.h
+++ b/src/login/logind-acl.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/login/logind-action.c b/src/login/logind-action.c
index 1aeacfaf2b..1a017c8414 100644
--- a/src/login/logind-action.c
+++ b/src/login/logind-action.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <unistd.h>
diff --git a/src/login/logind-action.h b/src/login/logind-action.h
index a45aab7854..73aa20bbb4 100644
--- a/src/login/logind-action.h
+++ b/src/login/logind-action.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "conf-parser.h"
diff --git a/src/login/logind-brightness.c b/src/login/logind-brightness.c
index 450ec32044..a6a1603396 100644
--- a/src/login/logind-brightness.c
+++ b/src/login/logind-brightness.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "bus-util.h"
#include "device-util.h"
diff --git a/src/login/logind-brightness.h b/src/login/logind-brightness.h
index b22ee37ba7..f1c77757a8 100644
--- a/src/login/logind-brightness.h
+++ b/src/login/logind-brightness.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/login/logind-button.c b/src/login/logind-button.c
index 096cf70c9a..f9e6e43b81 100644
--- a/src/login/logind-button.c
+++ b/src/login/logind-button.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/login/logind-button.h b/src/login/logind-button.h
index d009851cf4..041d66521c 100644
--- a/src/login/logind-button.h
+++ b/src/login/logind-button.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
typedef struct Button Button;
diff --git a/src/login/logind-core.c b/src/login/logind-core.c
index 370604f936..3595d7a773 100644
--- a/src/login/logind-core.c
+++ b/src/login/logind-core.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <sys/ioctl.h>
diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c
index 0f83ed99bc..b95af1a9fd 100644
--- a/src/login/logind-dbus.c
+++ b/src/login/logind-dbus.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <sys/stat.h>
diff --git a/src/login/logind-dbus.h b/src/login/logind-dbus.h
index 3e0f3805ef..6b5d3abcd6 100644
--- a/src/login/logind-dbus.h
+++ b/src/login/logind-dbus.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/login/logind-device.c b/src/login/logind-device.c
index 9a62217290..982a772194 100644
--- a/src/login/logind-device.c
+++ b/src/login/logind-device.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <string.h>
diff --git a/src/login/logind-device.h b/src/login/logind-device.h
index cc6e523675..0d89613d77 100644
--- a/src/login/logind-device.h
+++ b/src/login/logind-device.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
typedef struct Device Device;
diff --git a/src/login/logind-inhibit.c b/src/login/logind-inhibit.c
index f52d5babd7..57198ce652 100644
--- a/src/login/logind-inhibit.c
+++ b/src/login/logind-inhibit.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/login/logind-inhibit.h b/src/login/logind-inhibit.h
index e5d4426191..124bdb662f 100644
--- a/src/login/logind-inhibit.h
+++ b/src/login/logind-inhibit.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
typedef struct Inhibitor Inhibitor;
diff --git a/src/login/logind-seat-dbus.c b/src/login/logind-seat-dbus.c
index a945132284..a60ed2d3c2 100644
--- a/src/login/logind-seat-dbus.c
+++ b/src/login/logind-seat-dbus.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
diff --git a/src/login/logind-seat-dbus.h b/src/login/logind-seat-dbus.h
index 6169cfe1ed..258db91d40 100644
--- a/src/login/logind-seat-dbus.h
+++ b/src/login/logind-seat-dbus.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/login/logind-seat.c b/src/login/logind-seat.c
index 157fc9423c..10cc7d960b 100644
--- a/src/login/logind-seat.c
+++ b/src/login/logind-seat.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/login/logind-seat.h b/src/login/logind-seat.h
index f4b57ce8d2..ddc45f4870 100644
--- a/src/login/logind-seat.h
+++ b/src/login/logind-seat.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
typedef struct Seat Seat;
diff --git a/src/login/logind-session-dbus.c b/src/login/logind-session-dbus.c
index ccc5ac8df2..b5d240be6a 100644
--- a/src/login/logind-session-dbus.c
+++ b/src/login/logind-session-dbus.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
diff --git a/src/login/logind-session-dbus.h b/src/login/logind-session-dbus.h
index 97f7c413cb..751ca86c0d 100644
--- a/src/login/logind-session-dbus.h
+++ b/src/login/logind-session-dbus.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/login/logind-session-device.c b/src/login/logind-session-device.c
index 1a266605be..f2adb969d4 100644
--- a/src/login/logind-session-device.c
+++ b/src/login/logind-session-device.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <string.h>
diff --git a/src/login/logind-session-device.h b/src/login/logind-session-device.h
index 6c20403d12..4da3fe6533 100644
--- a/src/login/logind-session-device.h
+++ b/src/login/logind-session-device.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
typedef enum DeviceType DeviceType;
diff --git a/src/login/logind-session.c b/src/login/logind-session.c
index d1527380ec..34fcde92aa 100644
--- a/src/login/logind-session.c
+++ b/src/login/logind-session.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/login/logind-session.h b/src/login/logind-session.h
index b87c731672..1b59bdbe74 100644
--- a/src/login/logind-session.h
+++ b/src/login/logind-session.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
typedef struct Session Session;
diff --git a/src/login/logind-user-dbus.c b/src/login/logind-user-dbus.c
index 307462f749..414d431217 100644
--- a/src/login/logind-user-dbus.c
+++ b/src/login/logind-user-dbus.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
diff --git a/src/login/logind-user-dbus.h b/src/login/logind-user-dbus.h
index b3f990c5af..d2f24ced63 100644
--- a/src/login/logind-user-dbus.h
+++ b/src/login/logind-user-dbus.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/login/logind-user.c b/src/login/logind-user.c
index 9cb4dce641..9b3ec07906 100644
--- a/src/login/logind-user.c
+++ b/src/login/logind-user.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <unistd.h>
diff --git a/src/login/logind-user.h b/src/login/logind-user.h
index f8f172cb0f..2c5f993faa 100644
--- a/src/login/logind-user.h
+++ b/src/login/logind-user.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
typedef struct User User;
diff --git a/src/login/logind-utmp.c b/src/login/logind-utmp.c
index d2a5890277..dfbbb641f3 100644
--- a/src/login/logind-utmp.c
+++ b/src/login/logind-utmp.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <unistd.h>
diff --git a/src/login/logind.c b/src/login/logind.c
index 82163343d3..3ddc7a074a 100644
--- a/src/login/logind.c
+++ b/src/login/logind.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/login/logind.h b/src/login/logind.h
index 82d319a9a2..49d1f5f957 100644
--- a/src/login/logind.h
+++ b/src/login/logind.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/login/meson.build b/src/login/meson.build
index 0a7d3d5440..e09610960b 100644
--- a/src/login/meson.build
+++ b/src/login/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
systemd_logind_sources = files('''
logind.c
@@ -74,8 +74,10 @@ if conf.get('ENABLE_LOGIND') == 1
input : 'logind.conf.in',
output : 'logind.conf',
configuration : substs)
- install_data(logind_conf,
- install_dir : pkgsysconfdir)
+ if install_sysconfdir
+ install_data(logind_conf,
+ install_dir : pkgsysconfdir)
+ endif
install_data('org.freedesktop.login1.conf',
install_dir : dbuspolicydir)
diff --git a/src/login/org.freedesktop.login1.conf b/src/login/org.freedesktop.login1.conf
index df46e417c8..ac14942ba9 100644
--- a/src/login/org.freedesktop.login1.conf
+++ b/src/login/org.freedesktop.login1.conf
@@ -3,7 +3,7 @@
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<!--
- SPDX-License-Identifier: LGPL-2.1+
+ SPDX-License-Identifier: LGPL-2.1-or-later
This file is part of systemd.
diff --git a/src/login/org.freedesktop.login1.policy b/src/login/org.freedesktop.login1.policy
index 1d269c1070..80ebb39f30 100644
--- a/src/login/org.freedesktop.login1.policy
+++ b/src/login/org.freedesktop.login1.policy
@@ -3,7 +3,7 @@
"http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
<!--
- SPDX-License-Identifier: LGPL-2.1+
+ SPDX-License-Identifier: LGPL-2.1-or-later
This file is part of systemd.
diff --git a/src/login/org.freedesktop.login1.service b/src/login/org.freedesktop.login1.service
index 68f1ed0f48..6d443cf69f 100644
--- a/src/login/org.freedesktop.login1.service
+++ b/src/login/org.freedesktop.login1.service
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/src/login/pam_systemd.c b/src/login/pam_systemd.c
index 16f4289585..8e7a94db55 100644
--- a/src/login/pam_systemd.c
+++ b/src/login/pam_systemd.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <endian.h>
#include <errno.h>
diff --git a/src/login/pam_systemd.sym b/src/login/pam_systemd.sym
index 030a00ecb7..130cf6a971 100644
--- a/src/login/pam_systemd.sym
+++ b/src/login/pam_systemd.sym
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
{
global:
diff --git a/src/login/sysfs-show.c b/src/login/sysfs-show.c
index 9b7fc20396..5a19dbfeff 100644
--- a/src/login/sysfs-show.c
+++ b/src/login/sysfs-show.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
diff --git a/src/login/sysfs-show.h b/src/login/sysfs-show.h
index c05b977532..32ccbf3de4 100644
--- a/src/login/sysfs-show.h
+++ b/src/login/sysfs-show.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <sys/types.h>
diff --git a/src/login/test-inhibit.c b/src/login/test-inhibit.c
index 7f9013bf93..dbe79c7074 100644
--- a/src/login/test-inhibit.c
+++ b/src/login/test-inhibit.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <unistd.h>
#include <fcntl.h>
diff --git a/src/login/test-login-shared.c b/src/login/test-login-shared.c
index 02ff57ab10..d3de9c4958 100644
--- a/src/login/test-login-shared.c
+++ b/src/login/test-login-shared.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "login-util.h"
#include "macro.h"
diff --git a/src/login/test-login-tables.c b/src/login/test-login-tables.c
index 02b871968e..9d16685082 100644
--- a/src/login/test-login-tables.c
+++ b/src/login/test-login-tables.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "logind-action.h"
#include "logind-session.h"
diff --git a/src/login/user-runtime-dir.c b/src/login/user-runtime-dir.c
index 84d8f1e8fd..9b5bdcc3ff 100644
--- a/src/login/user-runtime-dir.c
+++ b/src/login/user-runtime-dir.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdint.h>
#include <sys/mount.h>
diff --git a/src/machine-id-setup/machine-id-setup-main.c b/src/machine-id-setup/machine-id-setup-main.c
index 2bcd99109e..c35da05ffc 100644
--- a/src/machine-id-setup/machine-id-setup-main.c
+++ b/src/machine-id-setup/machine-id-setup-main.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <getopt.h>
diff --git a/src/machine/image-dbus.c b/src/machine/image-dbus.c
index 740684ce33..c157aaf33c 100644
--- a/src/machine/image-dbus.c
+++ b/src/machine/image-dbus.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/file.h>
#include <sys/mount.h>
diff --git a/src/machine/image-dbus.h b/src/machine/image-dbus.h
index d785c10817..4b00203bff 100644
--- a/src/machine/image-dbus.h
+++ b/src/machine/image-dbus.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "bus-object.h"
diff --git a/src/machine/machine-dbus.c b/src/machine/machine-dbus.c
index 931e6d7232..bb67beb665 100644
--- a/src/machine/machine-dbus.c
+++ b/src/machine/machine-dbus.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <sys/mount.h>
diff --git a/src/machine/machine-dbus.h b/src/machine/machine-dbus.h
index 7080092bcf..1c114f47c3 100644
--- a/src/machine/machine-dbus.h
+++ b/src/machine/machine-dbus.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/machine/machine.c b/src/machine/machine.c
index ace84edbb4..537b0cd779 100644
--- a/src/machine/machine.c
+++ b/src/machine/machine.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <unistd.h>
diff --git a/src/machine/machine.h b/src/machine/machine.h
index 634c5fc648..2f627157a3 100644
--- a/src/machine/machine.h
+++ b/src/machine/machine.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
typedef struct Machine Machine;
diff --git a/src/machine/machinectl.c b/src/machine/machinectl.c
index 4869797b1e..4a3279d264 100644
--- a/src/machine/machinectl.c
+++ b/src/machine/machinectl.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <arpa/inet.h>
#include <errno.h>
diff --git a/src/machine/machined-core.c b/src/machine/machined-core.c
index 2ff155d47c..1416fbf823 100644
--- a/src/machine/machined-core.c
+++ b/src/machine/machined-core.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "machined.h"
#include "nscd-flush.h"
diff --git a/src/machine/machined-dbus.c b/src/machine/machined-dbus.c
index 6d4a705c47..494813e334 100644
--- a/src/machine/machined-dbus.c
+++ b/src/machine/machined-dbus.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <unistd.h>
diff --git a/src/machine/machined-varlink.c b/src/machine/machined-varlink.c
index de8cdeb87d..2d6c1991a4 100644
--- a/src/machine/machined-varlink.c
+++ b/src/machine/machined-varlink.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "format-util.h"
#include "machined-varlink.h"
diff --git a/src/machine/machined-varlink.h b/src/machine/machined-varlink.h
index 42e1c3f4a5..f26bbe588c 100644
--- a/src/machine/machined-varlink.h
+++ b/src/machine/machined-varlink.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "machined.h"
diff --git a/src/machine/machined.c b/src/machine/machined.c
index 2828ed61b0..c3c08d181d 100644
--- a/src/machine/machined.c
+++ b/src/machine/machined.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <string.h>
diff --git a/src/machine/machined.h b/src/machine/machined.h
index c83017acb8..6e4182bbd6 100644
--- a/src/machine/machined.h
+++ b/src/machine/machined.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/machine/meson.build b/src/machine/meson.build
index 291630ece9..ebbd46d4f2 100644
--- a/src/machine/meson.build
+++ b/src/machine/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
systemd_machined_sources = files('''
machined.c
diff --git a/src/machine/operation.c b/src/machine/operation.c
index 42c51f3654..34565e3e69 100644
--- a/src/machine/operation.c
+++ b/src/machine/operation.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/wait.h>
diff --git a/src/machine/operation.h b/src/machine/operation.h
index 0e3302856f..fd4828878d 100644
--- a/src/machine/operation.h
+++ b/src/machine/operation.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <sys/types.h>
diff --git a/src/machine/org.freedesktop.machine1.policy b/src/machine/org.freedesktop.machine1.policy
index 039c3d4513..ddf5ec05c6 100644
--- a/src/machine/org.freedesktop.machine1.policy
+++ b/src/machine/org.freedesktop.machine1.policy
@@ -3,7 +3,7 @@
"http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
<!--
- SPDX-License-Identifier: LGPL-2.1+
+ SPDX-License-Identifier: LGPL-2.1-or-later
This file is part of systemd.
diff --git a/src/machine/org.freedesktop.machine1.service b/src/machine/org.freedesktop.machine1.service
index d07bcae6eb..64b73c1f24 100644
--- a/src/machine/org.freedesktop.machine1.service
+++ b/src/machine/org.freedesktop.machine1.service
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/src/machine/test-machine-tables.c b/src/machine/test-machine-tables.c
index 04db7d8259..0e51755087 100644
--- a/src/machine/test-machine-tables.c
+++ b/src/machine/test-machine-tables.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "machine.h"
#include "test-tables.h"
diff --git a/src/modules-load/modules-load.c b/src/modules-load/modules-load.c
index 337a460318..2f0cef5ff9 100644
--- a/src/modules-load/modules-load.c
+++ b/src/modules-load/modules-load.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <getopt.h>
diff --git a/src/mount/mount-tool.c b/src/mount/mount-tool.c
index 9e57033999..673f855198 100644
--- a/src/mount/mount-tool.c
+++ b/src/mount/mount-tool.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <getopt.h>
diff --git a/src/network/fuzz-netdev-parser.c b/src/network/fuzz-netdev-parser.c
index 78c8d0c2b5..ddabe1c27b 100644
--- a/src/network/fuzz-netdev-parser.c
+++ b/src/network/fuzz-netdev-parser.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "fd-util.h"
#include "fs-util.h"
diff --git a/src/network/fuzz-network-parser.c b/src/network/fuzz-network-parser.c
index 732b5b21f4..1292ebacd1 100644
--- a/src/network/fuzz-network-parser.c
+++ b/src/network/fuzz-network-parser.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "fd-util.h"
#include "fs-util.h"
diff --git a/src/network/generator/main.c b/src/network/generator/main.c
index 61a741e5d2..f9cace70f7 100644
--- a/src/network/generator/main.c
+++ b/src/network/generator/main.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <getopt.h>
diff --git a/src/network/generator/network-generator.c b/src/network/generator/network-generator.c
index 465b3eddc2..2fa21a067a 100644
--- a/src/network/generator/network-generator.c
+++ b/src/network/generator/network-generator.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "ether-addr-util.h"
#include "fd-util.h"
diff --git a/src/network/generator/network-generator.h b/src/network/generator/network-generator.h
index 3d75b132de..86bcaec119 100644
--- a/src/network/generator/network-generator.h
+++ b/src/network/generator/network-generator.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <net/ethernet.h>
diff --git a/src/network/generator/test-network-generator.c b/src/network/generator/test-network-generator.c
index efcbdefda0..e658d89333 100644
--- a/src/network/generator/test-network-generator.c
+++ b/src/network/generator/test-network-generator.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "macro.h"
#include "network-generator.h"
diff --git a/src/network/meson.build b/src/network/meson.build
index 86cca329c3..4123873c60 100644
--- a/src/network/meson.build
+++ b/src/network/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
sources = files('''
netdev/bareudp.c
@@ -235,8 +235,10 @@ if conf.get('ENABLE_NETWORKD') == 1
install_dir : polkitpkladir)
endif
- install_data('networkd.conf',
- install_dir : pkgsysconfdir)
+ if install_sysconfdir
+ install_data('networkd.conf',
+ install_dir : pkgsysconfdir)
+ endif
fuzzers += [
[['src/network/fuzz-netdev-parser.c',
diff --git a/src/network/netdev/bareudp.c b/src/network/netdev/bareudp.c
index 03c3ce5311..22c0e49d94 100644
--- a/src/network/netdev/bareudp.c
+++ b/src/network/netdev/bareudp.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright © 2020 VMware, Inc. */
#include "bareudp.h"
diff --git a/src/network/netdev/bareudp.h b/src/network/netdev/bareudp.h
index 105475038d..ea80bbf800 100644
--- a/src/network/netdev/bareudp.h
+++ b/src/network/netdev/bareudp.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright © 2020 VMware, Inc. */
#pragma once
diff --git a/src/network/netdev/bond.c b/src/network/netdev/bond.c
index 3007d6913a..e27f36067b 100644
--- a/src/network/netdev/bond.c
+++ b/src/network/netdev/bond.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "bond.h"
@@ -469,7 +469,7 @@ int config_parse_ad_actor_system(
}
if (ether_addr_is_null(&n) || (n.ether_addr_octet[0] & 0x01)) {
log_syntax(unit, LOG_WARNING, filename, line, 0,
- "Not a valid MAC address %s, can not be null or multicast. Ignoring assignment.",
+ "Not an appropriate MAC address %s, cannot be null or multicast. Ignoring assignment.",
rvalue);
return 0;
}
diff --git a/src/network/netdev/bond.h b/src/network/netdev/bond.h
index 64b2dd04a2..11d3e9ba26 100644
--- a/src/network/netdev/bond.h
+++ b/src/network/netdev/bond.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <netinet/in.h>
diff --git a/src/network/netdev/bridge.c b/src/network/netdev/bridge.c
index 8d822839b4..38432f1578 100644
--- a/src/network/netdev/bridge.c
+++ b/src/network/netdev/bridge.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <net/if.h>
diff --git a/src/network/netdev/bridge.h b/src/network/netdev/bridge.h
index 0316880b12..f3276c5c41 100644
--- a/src/network/netdev/bridge.h
+++ b/src/network/netdev/bridge.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <netinet/in.h>
diff --git a/src/network/netdev/dummy.c b/src/network/netdev/dummy.c
index e06dc02f3a..754ee98952 100644
--- a/src/network/netdev/dummy.c
+++ b/src/network/netdev/dummy.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "dummy.h"
diff --git a/src/network/netdev/dummy.h b/src/network/netdev/dummy.h
index f935414772..eafdf4b5bf 100644
--- a/src/network/netdev/dummy.h
+++ b/src/network/netdev/dummy.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "netdev.h"
diff --git a/src/network/netdev/fou-tunnel.c b/src/network/netdev/fou-tunnel.c
index 832cf57dea..6863257a58 100644
--- a/src/network/netdev/fou-tunnel.c
+++ b/src/network/netdev/fou-tunnel.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <linux/fou.h>
#include <net/if.h>
diff --git a/src/network/netdev/fou-tunnel.h b/src/network/netdev/fou-tunnel.h
index caa3b7600e..a6f10dfca4 100644
--- a/src/network/netdev/fou-tunnel.h
+++ b/src/network/netdev/fou-tunnel.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <netinet/in.h>
diff --git a/src/network/netdev/geneve.c b/src/network/netdev/geneve.c
index b4f865a538..edf92ec93c 100644
--- a/src/network/netdev/geneve.c
+++ b/src/network/netdev/geneve.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <net/if.h>
diff --git a/src/network/netdev/geneve.h b/src/network/netdev/geneve.h
index 2ac3c1e835..b62eb7b76d 100644
--- a/src/network/netdev/geneve.h
+++ b/src/network/netdev/geneve.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
typedef struct Geneve Geneve;
diff --git a/src/network/netdev/ifb.c b/src/network/netdev/ifb.c
index 7736a162f9..16ff49d7f0 100644
--- a/src/network/netdev/ifb.c
+++ b/src/network/netdev/ifb.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright © 2019 VMware, Inc. */
#include "ifb.h"
diff --git a/src/network/netdev/ifb.h b/src/network/netdev/ifb.h
index 761d215894..badfb4ad10 100644
--- a/src/network/netdev/ifb.h
+++ b/src/network/netdev/ifb.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright © 2019 VMware, Inc. */
#pragma once
diff --git a/src/network/netdev/ipvlan.c b/src/network/netdev/ipvlan.c
index bd14f625de..92a8f583e3 100644
--- a/src/network/netdev/ipvlan.c
+++ b/src/network/netdev/ipvlan.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <net/if.h>
diff --git a/src/network/netdev/ipvlan.h b/src/network/netdev/ipvlan.h
index 8e658184ff..633b0bd94f 100644
--- a/src/network/netdev/ipvlan.h
+++ b/src/network/netdev/ipvlan.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <netinet/in.h>
diff --git a/src/network/netdev/l2tp-tunnel.c b/src/network/netdev/l2tp-tunnel.c
index 949f124ccd..eeea19764e 100644
--- a/src/network/netdev/l2tp-tunnel.c
+++ b/src/network/netdev/l2tp-tunnel.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <netinet/in.h>
#include <linux/l2tp.h>
diff --git a/src/network/netdev/l2tp-tunnel.h b/src/network/netdev/l2tp-tunnel.h
index d314b98703..048318d6df 100644
--- a/src/network/netdev/l2tp-tunnel.h
+++ b/src/network/netdev/l2tp-tunnel.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <netinet/in.h>
diff --git a/src/network/netdev/macsec.c b/src/network/netdev/macsec.c
index b6dbc70625..313277ca16 100644
--- a/src/network/netdev/macsec.c
+++ b/src/network/netdev/macsec.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <netinet/in.h>
#include <linux/if_ether.h>
@@ -988,7 +988,7 @@ static int macsec_read_key_file(NetDev *netdev, SecurityAssociation *sa) {
r = read_full_file_full(
AT_FDCWD, sa->key_file,
READ_FULL_FILE_SECURE | READ_FULL_FILE_UNHEX | READ_FULL_FILE_WARN_WORLD_READABLE | READ_FULL_FILE_CONNECT_SOCKET,
- (char **) &key, &key_len);
+ NULL, (char **) &key, &key_len);
if (r < 0)
return log_netdev_error_errno(netdev, r,
"Failed to read key from '%s', ignoring: %m",
diff --git a/src/network/netdev/macsec.h b/src/network/netdev/macsec.h
index 26ad2b7cca..4d88e49514 100644
--- a/src/network/netdev/macsec.h
+++ b/src/network/netdev/macsec.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <netinet/in.h>
diff --git a/src/network/netdev/macvlan.c b/src/network/netdev/macvlan.c
index 8f38217789..9bdcf627b4 100644
--- a/src/network/netdev/macvlan.c
+++ b/src/network/netdev/macvlan.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <net/if.h>
diff --git a/src/network/netdev/macvlan.h b/src/network/netdev/macvlan.h
index 7bc6eef12d..cb7eece67f 100644
--- a/src/network/netdev/macvlan.h
+++ b/src/network/netdev/macvlan.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
typedef struct MacVlan MacVlan;
diff --git a/src/network/netdev/netdev.c b/src/network/netdev/netdev.c
index e03fa7943b..71a4f603be 100644
--- a/src/network/netdev/netdev.c
+++ b/src/network/netdev/netdev.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <net/if.h>
#include <netinet/in.h>
@@ -648,7 +648,7 @@ int netdev_join(NetDev *netdev, Link *link, link_netlink_message_handler_t callb
return r;
break;
default:
- assert_not_reached("Can not join independent netdev");
+ assert_not_reached("Cannot join independent netdev");
}
return 0;
diff --git a/src/network/netdev/netdev.h b/src/network/netdev/netdev.h
index 0ab9a8e3f3..468fae591c 100644
--- a/src/network/netdev/netdev.h
+++ b/src/network/netdev/netdev.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-netlink.h"
diff --git a/src/network/netdev/netdevsim.c b/src/network/netdev/netdevsim.c
index bfd2a16035..b2814284a4 100644
--- a/src/network/netdev/netdevsim.c
+++ b/src/network/netdev/netdevsim.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "netdevsim.h"
diff --git a/src/network/netdev/netdevsim.h b/src/network/netdev/netdevsim.h
index 4622f4a0c5..27adc594ad 100644
--- a/src/network/netdev/netdevsim.h
+++ b/src/network/netdev/netdevsim.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
typedef struct NetDevSim NetDevSim;
diff --git a/src/network/netdev/nlmon.c b/src/network/netdev/nlmon.c
index 30e49a55ab..a8faed5b24 100644
--- a/src/network/netdev/nlmon.c
+++ b/src/network/netdev/nlmon.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "nlmon.h"
diff --git a/src/network/netdev/nlmon.h b/src/network/netdev/nlmon.h
index b5f65f6140..edfc504bca 100644
--- a/src/network/netdev/nlmon.h
+++ b/src/network/netdev/nlmon.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
typedef struct NLMon NLMon;
diff --git a/src/network/netdev/tunnel.c b/src/network/netdev/tunnel.c
index 852aa423b6..66e8868284 100644
--- a/src/network/netdev/tunnel.c
+++ b/src/network/netdev/tunnel.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <netinet/in.h>
#include <linux/fou.h>
diff --git a/src/network/netdev/tunnel.h b/src/network/netdev/tunnel.h
index 6480d93e65..d58ded757d 100644
--- a/src/network/netdev/tunnel.h
+++ b/src/network/netdev/tunnel.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "in-addr-util.h"
diff --git a/src/network/netdev/tuntap.c b/src/network/netdev/tuntap.c
index aef72e7bbb..d9d654495e 100644
--- a/src/network/netdev/tuntap.c
+++ b/src/network/netdev/tuntap.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/network/netdev/tuntap.h b/src/network/netdev/tuntap.h
index 8a80b633da..4d1e643f43 100644
--- a/src/network/netdev/tuntap.h
+++ b/src/network/netdev/tuntap.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
typedef struct TunTap TunTap;
diff --git a/src/network/netdev/vcan.c b/src/network/netdev/vcan.c
index 9a0f87b1e1..3621d4c5d8 100644
--- a/src/network/netdev/vcan.c
+++ b/src/network/netdev/vcan.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "vcan.h"
diff --git a/src/network/netdev/vcan.h b/src/network/netdev/vcan.h
index d8af07e3ce..843984fbee 100644
--- a/src/network/netdev/vcan.h
+++ b/src/network/netdev/vcan.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
typedef struct VCan VCan;
diff --git a/src/network/netdev/veth.c b/src/network/netdev/veth.c
index 8c7c1d053f..840a3277b1 100644
--- a/src/network/netdev/veth.c
+++ b/src/network/netdev/veth.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <net/if.h>
diff --git a/src/network/netdev/veth.h b/src/network/netdev/veth.h
index 6a0728b1c4..643f737a88 100644
--- a/src/network/netdev/veth.h
+++ b/src/network/netdev/veth.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
typedef struct Veth Veth;
diff --git a/src/network/netdev/vlan.c b/src/network/netdev/vlan.c
index a4c7192c7d..e7f03f06f0 100644
--- a/src/network/netdev/vlan.c
+++ b/src/network/netdev/vlan.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <net/if.h>
diff --git a/src/network/netdev/vlan.h b/src/network/netdev/vlan.h
index 7f6cb14787..9dff924cd0 100644
--- a/src/network/netdev/vlan.h
+++ b/src/network/netdev/vlan.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
typedef struct VLan VLan;
diff --git a/src/network/netdev/vrf.c b/src/network/netdev/vrf.c
index a8ed3fadcb..ae71ae916c 100644
--- a/src/network/netdev/vrf.c
+++ b/src/network/netdev/vrf.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <net/if.h>
diff --git a/src/network/netdev/vrf.h b/src/network/netdev/vrf.h
index a0bff913bd..87977e230c 100644
--- a/src/network/netdev/vrf.h
+++ b/src/network/netdev/vrf.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
typedef struct Vrf Vrf;
diff --git a/src/network/netdev/vxcan.c b/src/network/netdev/vxcan.c
index 9614af1068..e4e32ff390 100644
--- a/src/network/netdev/vxcan.c
+++ b/src/network/netdev/vxcan.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <linux/can/vxcan.h>
diff --git a/src/network/netdev/vxcan.h b/src/network/netdev/vxcan.h
index 4531a67370..47be3f017d 100644
--- a/src/network/netdev/vxcan.h
+++ b/src/network/netdev/vxcan.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
typedef struct VxCan VxCan;
diff --git a/src/network/netdev/vxlan.c b/src/network/netdev/vxlan.c
index d941b7d633..6748f67f8f 100644
--- a/src/network/netdev/vxlan.c
+++ b/src/network/netdev/vxlan.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <net/if.h>
diff --git a/src/network/netdev/vxlan.h b/src/network/netdev/vxlan.h
index d836215c46..371653cade 100644
--- a/src/network/netdev/vxlan.h
+++ b/src/network/netdev/vxlan.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
typedef struct VxLan VxLan;
diff --git a/src/network/netdev/wireguard.c b/src/network/netdev/wireguard.c
index f1de5d41de..416e9b92d1 100644
--- a/src/network/netdev/wireguard.c
+++ b/src/network/netdev/wireguard.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2015-2017 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved.
***/
@@ -871,7 +871,7 @@ static int wireguard_read_key_file(const char *filename, uint8_t dest[static WG_
r = read_full_file_full(
AT_FDCWD, filename,
READ_FULL_FILE_SECURE | READ_FULL_FILE_UNBASE64 | READ_FULL_FILE_WARN_WORLD_READABLE | READ_FULL_FILE_CONNECT_SOCKET,
- &key, &key_len);
+ NULL, &key, &key_len);
if (r < 0)
return r;
diff --git a/src/network/netdev/wireguard.h b/src/network/netdev/wireguard.h
index 61113113e4..b9b5ae9871 100644
--- a/src/network/netdev/wireguard.h
+++ b/src/network/netdev/wireguard.h
@@ -1,3 +1,5 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
#pragma once
typedef struct Wireguard Wireguard;
diff --git a/src/network/netdev/xfrm.c b/src/network/netdev/xfrm.c
index ff8ff35689..a407c54da4 100644
--- a/src/network/netdev/xfrm.c
+++ b/src/network/netdev/xfrm.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "missing_network.h"
#include "xfrm.h"
diff --git a/src/network/netdev/xfrm.h b/src/network/netdev/xfrm.h
index 889d3619b1..f56c4f272a 100644
--- a/src/network/netdev/xfrm.h
+++ b/src/network/netdev/xfrm.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "netdev.h"
diff --git a/src/network/networkctl.c b/src/network/networkctl.c
index 476bb0e58d..c415fb1a74 100644
--- a/src/network/networkctl.c
+++ b/src/network/networkctl.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <arpa/inet.h>
#include <getopt.h>
@@ -136,7 +136,7 @@ typedef struct LinkInfo {
sd_device *sd_device;
int ifindex;
unsigned short iftype;
- struct ether_addr mac_address;
+ hw_addr_data hw_address;
struct ether_addr permanent_mac_address;
uint32_t master;
uint32_t mtu;
@@ -417,13 +417,14 @@ static int decode_link(sd_netlink_message *m, LinkInfo *info, char **patterns, b
info->alternative_names = TAKE_PTR(altnames);
info->has_mac_address =
- sd_netlink_message_read_ether_addr(m, IFLA_ADDRESS, &info->mac_address) >= 0 &&
- memcmp(&info->mac_address, &ETHER_ADDR_NULL, sizeof(struct ether_addr)) != 0;
+ netlink_message_read_hw_addr(m, IFLA_ADDRESS, &info->hw_address) >= 0 &&
+ memcmp(&info->hw_address, &HW_ADDR_NULL, sizeof(hw_addr_data)) != 0;
info->has_permanent_mac_address =
ethtool_get_permanent_macaddr(NULL, info->name, &info->permanent_mac_address) >= 0 &&
memcmp(&info->permanent_mac_address, &ETHER_ADDR_NULL, sizeof(struct ether_addr)) != 0 &&
- memcmp(&info->permanent_mac_address, &info->mac_address, sizeof(struct ether_addr)) != 0;
+ (info->hw_address.length != sizeof(struct ether_addr) ||
+ memcmp(&info->permanent_mac_address, info->hw_address.addr.bytes, sizeof(struct ether_addr)) != 0);
(void) sd_netlink_message_read_u32(m, IFLA_MTU, &info->mtu);
(void) sd_netlink_message_read_u32(m, IFLA_MIN_MTU, &info->min_mtu);
@@ -1527,9 +1528,9 @@ static int link_status_one(
if (info->has_mac_address) {
_cleanup_free_ char *description = NULL;
- char ea[ETHER_ADDR_TO_STRING_MAX];
- (void) ieee_oui(hwdb, &info->mac_address, &description);
+ if (info->hw_address.length == ETH_ALEN)
+ (void) ieee_oui(hwdb, &info->hw_address.addr.ether, &description);
r = table_add_many(table,
TABLE_EMPTY,
@@ -1537,7 +1538,7 @@ static int link_status_one(
if (r < 0)
return table_log_add_error(r);
r = table_add_cell_stringf(table, NULL, "%s%s%s%s",
- ether_addr_to_string(&info->mac_address, ea),
+ HW_ADDR_TO_STR(&info->hw_address),
description ? " (" : "",
strempty(description),
description ? ")" : "");
diff --git a/src/network/networkd-address-label.c b/src/network/networkd-address-label.c
index 66b192256e..f933a1da94 100644
--- a/src/network/networkd-address-label.c
+++ b/src/network/networkd-address-label.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <net/if.h>
#include <linux/if_addrlabel.h>
diff --git a/src/network/networkd-address-label.h b/src/network/networkd-address-label.h
index b92828c72e..11fdd9abfe 100644
--- a/src/network/networkd-address-label.h
+++ b/src/network/networkd-address-label.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <inttypes.h>
diff --git a/src/network/networkd-address-pool.c b/src/network/networkd-address-pool.c
index c732b6c56e..7e27db6611 100644
--- a/src/network/networkd-address-pool.c
+++ b/src/network/networkd-address-pool.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "networkd-address-pool.h"
diff --git a/src/network/networkd-address-pool.h b/src/network/networkd-address-pool.h
index c53fe7407f..93bdec82e3 100644
--- a/src/network/networkd-address-pool.h
+++ b/src/network/networkd-address-pool.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "in-addr-util.h"
diff --git a/src/network/networkd-address.c b/src/network/networkd-address.c
index 9130fae778..bc09e3c403 100644
--- a/src/network/networkd-address.c
+++ b/src/network/networkd-address.c
@@ -1,6 +1,7 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <net/if.h>
+#include <net/if_arp.h>
#include "alloc-util.h"
#include "firewall-util.h"
@@ -21,16 +22,24 @@ int generate_ipv6_eui_64_address(const Link *link, struct in6_addr *ret) {
assert(link);
assert(ret);
+ if (link->iftype == ARPHRD_INFINIBAND) {
+ /* see RFC4391 section 8 */
+ memcpy(&ret->s6_addr[8], &link->hw_addr.addr.infiniband[12], 8);
+ ret->s6_addr[8] ^= 1 << 1;
+
+ return 0;
+ }
+
/* see RFC4291 section 2.5.1 */
- ret->s6_addr[8] = link->mac.ether_addr_octet[0];
+ ret->s6_addr[8] = link->hw_addr.addr.ether.ether_addr_octet[0];
ret->s6_addr[8] ^= 1 << 1;
- ret->s6_addr[9] = link->mac.ether_addr_octet[1];
- ret->s6_addr[10] = link->mac.ether_addr_octet[2];
+ ret->s6_addr[9] = link->hw_addr.addr.ether.ether_addr_octet[1];
+ ret->s6_addr[10] = link->hw_addr.addr.ether.ether_addr_octet[2];
ret->s6_addr[11] = 0xff;
ret->s6_addr[12] = 0xfe;
- ret->s6_addr[13] = link->mac.ether_addr_octet[3];
- ret->s6_addr[14] = link->mac.ether_addr_octet[4];
- ret->s6_addr[15] = link->mac.ether_addr_octet[5];
+ ret->s6_addr[13] = link->hw_addr.addr.ether.ether_addr_octet[3];
+ ret->s6_addr[14] = link->hw_addr.addr.ether.ether_addr_octet[4];
+ ret->s6_addr[15] = link->hw_addr.addr.ether.ether_addr_octet[5];
return 0;
}
@@ -1373,7 +1382,7 @@ static int ipv4_dad_configure(Address *address) {
if (r < 0)
return r;
- r = sd_ipv4acd_set_mac(address->acd, &address->link->mac);
+ r = sd_ipv4acd_set_mac(address->acd, &address->link->hw_addr.addr.ether);
if (r < 0)
return r;
@@ -1403,7 +1412,7 @@ static int ipv4_dad_update_mac_one(Address *address) {
if (r < 0)
return r;
- r = sd_ipv4acd_set_mac(address->acd, &address->link->mac);
+ r = sd_ipv4acd_set_mac(address->acd, &address->link->hw_addr.addr.ether);
if (r < 0)
return r;
diff --git a/src/network/networkd-address.h b/src/network/networkd-address.h
index 0104747d9a..56e81da822 100644
--- a/src/network/networkd-address.h
+++ b/src/network/networkd-address.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <inttypes.h>
diff --git a/src/network/networkd-brvlan.c b/src/network/networkd-brvlan.c
index 23ca4f9fac..e53c73c30c 100644
--- a/src/network/networkd-brvlan.c
+++ b/src/network/networkd-brvlan.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2016 BISDN GmbH. All rights reserved.
***/
diff --git a/src/network/networkd-brvlan.h b/src/network/networkd-brvlan.h
index d13ea30151..938b7901f1 100644
--- a/src/network/networkd-brvlan.h
+++ b/src/network/networkd-brvlan.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
/***
diff --git a/src/network/networkd-can.c b/src/network/networkd-can.c
index e5504f7738..7e31d2fc82 100644
--- a/src/network/networkd-can.c
+++ b/src/network/networkd-can.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <net/if.h>
#include <linux/can/netlink.h>
diff --git a/src/network/networkd-can.h b/src/network/networkd-can.h
index 30e99b189d..7a2705bf9a 100644
--- a/src/network/networkd-can.h
+++ b/src/network/networkd-can.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "conf-parser.h"
diff --git a/src/network/networkd-conf.c b/src/network/networkd-conf.c
index 233ef9f4f6..bf51624ec4 100644
--- a/src/network/networkd-conf.c
+++ b/src/network/networkd-conf.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2014 Vinay Kulkarni <kulkarniv@vmware.com>
***/
diff --git a/src/network/networkd-conf.h b/src/network/networkd-conf.h
index 88a2c64031..b485e9e541 100644
--- a/src/network/networkd-conf.h
+++ b/src/network/networkd-conf.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
/***
diff --git a/src/network/networkd-dhcp-common.c b/src/network/networkd-dhcp-common.c
index a41bd348dc..c338c775a7 100644
--- a/src/network/networkd-dhcp-common.c
+++ b/src/network/networkd-dhcp-common.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <netinet/in.h>
#include <linux/if_arp.h>
@@ -58,9 +58,16 @@ void network_adjust_dhcp(Network *network) {
}
}
+static struct DUID fallback_duid = { .type = DUID_TYPE_EN };
DUID* link_get_duid(Link *link) {
if (link->network->duid.type != _DUID_TYPE_INVALID)
return &link->network->duid;
+ else if (link->hw_addr.length == 0 &&
+ (link->manager->duid.type == DUID_TYPE_LLT ||
+ link->manager->duid.type == DUID_TYPE_LL))
+ /* Fallback to DUID that works without mac addresses.
+ * This is useful for tunnel devices without mac address. */
+ return &fallback_duid;
else
return &link->manager->duid;
}
diff --git a/src/network/networkd-dhcp-common.h b/src/network/networkd-dhcp-common.h
index fc84450e5e..78c149ebcc 100644
--- a/src/network/networkd-dhcp-common.h
+++ b/src/network/networkd-dhcp-common.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "conf-parser.h"
diff --git a/src/network/networkd-dhcp-server-bus.c b/src/network/networkd-dhcp-server-bus.c
index 3de8c16d89..32f4baed78 100644
--- a/src/network/networkd-dhcp-server-bus.c
+++ b/src/network/networkd-dhcp-server-bus.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "sd-dhcp-server.h"
diff --git a/src/network/networkd-dhcp-server-bus.h b/src/network/networkd-dhcp-server-bus.h
index 49164ff0bb..7191478200 100644
--- a/src/network/networkd-dhcp-server-bus.h
+++ b/src/network/networkd-dhcp-server-bus.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/network/networkd-dhcp-server.c b/src/network/networkd-dhcp-server.c
index 0155ab2de2..cf279c640d 100644
--- a/src/network/networkd-dhcp-server.c
+++ b/src/network/networkd-dhcp-server.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <netinet/in.h>
#include <linux/if_arp.h>
diff --git a/src/network/networkd-dhcp-server.h b/src/network/networkd-dhcp-server.h
index 2250a30af4..4bd5120ea0 100644
--- a/src/network/networkd-dhcp-server.h
+++ b/src/network/networkd-dhcp-server.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "conf-parser.h"
diff --git a/src/network/networkd-dhcp4.c b/src/network/networkd-dhcp4.c
index 89bc15bb87..3983b33527 100644
--- a/src/network/networkd-dhcp4.c
+++ b/src/network/networkd-dhcp4.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <netinet/in.h>
#include <netinet/ip.h>
@@ -650,7 +650,7 @@ static int dhcp4_configure_dad(Link *link) {
if (r < 0)
return r;
- r = sd_ipv4acd_set_mac(link->dhcp_acd, &link->mac);
+ r = sd_ipv4acd_set_mac(link->dhcp_acd, &link->hw_addr.addr.ether);
if (r < 0)
return r;
@@ -672,7 +672,7 @@ static int dhcp4_dad_update_mac(Link *link) {
if (r < 0)
return r;
- r = sd_ipv4acd_set_mac(link->dhcp_acd, &link->mac);
+ r = sd_ipv4acd_set_mac(link->dhcp_acd, &link->hw_addr.addr.ether);
if (r < 0)
return r;
@@ -1271,14 +1271,24 @@ static int dhcp4_set_client_identifier(Link *link) {
return log_link_error_errno(link, r, "DHCP4 CLIENT: Failed to set DUID: %m");
break;
}
- case DHCP_CLIENT_ID_MAC:
+ case DHCP_CLIENT_ID_MAC: {
+ const uint8_t *hw_addr = link->hw_addr.addr.bytes;
+ size_t hw_addr_len = link->hw_addr.length;
+
+ if (link->iftype == ARPHRD_INFINIBAND && hw_addr_len == INFINIBAND_ALEN) {
+ /* set_client_id expects only last 8 bytes of an IB address */
+ hw_addr += INFINIBAND_ALEN - 8;
+ hw_addr_len -= INFINIBAND_ALEN - 8;
+ }
+
r = sd_dhcp_client_set_client_id(link->dhcp_client,
- ARPHRD_ETHER,
- (const uint8_t *) &link->mac,
- sizeof(link->mac));
+ link->iftype,
+ hw_addr,
+ hw_addr_len);
if (r < 0)
return log_link_error_errno(link, r, "DHCP4 CLIENT: Failed to set client ID: %m");
break;
+ }
default:
assert_not_reached("Unknown client identifier type.");
}
@@ -1325,8 +1335,9 @@ int dhcp4_configure(Link *link) {
return log_link_error_errno(link, r, "DHCP4 CLIENT: Failed to initialize DHCP4 client: %m");
r = sd_dhcp_client_set_mac(link->dhcp_client,
- (const uint8_t *) &link->mac,
- sizeof (link->mac), ARPHRD_ETHER);
+ link->hw_addr.addr.bytes,
+ link->bcast_addr.length > 0 ? link->bcast_addr.addr.bytes : NULL,
+ link->hw_addr.length, link->iftype);
if (r < 0)
return log_link_error_errno(link, r, "DHCP4 CLIENT: Failed to set MAC address: %m");
@@ -1484,7 +1495,9 @@ int dhcp4_update_mac(Link *link) {
if (!link->dhcp_client)
return 0;
- r = sd_dhcp_client_set_mac(link->dhcp_client, (const uint8_t *) &link->mac, sizeof (link->mac), ARPHRD_ETHER);
+ r = sd_dhcp_client_set_mac(link->dhcp_client, link->hw_addr.addr.bytes,
+ link->bcast_addr.length > 0 ? link->bcast_addr.addr.bytes : NULL,
+ link->hw_addr.length, link->iftype);
if (r < 0)
return r;
diff --git a/src/network/networkd-dhcp4.h b/src/network/networkd-dhcp4.h
index 8aa6ac9453..daab5b1d7d 100644
--- a/src/network/networkd-dhcp4.h
+++ b/src/network/networkd-dhcp4.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "conf-parser.h"
diff --git a/src/network/networkd-dhcp6.c b/src/network/networkd-dhcp6.c
index f72c56ac5e..95025acbfd 100644
--- a/src/network/networkd-dhcp6.c
+++ b/src/network/networkd-dhcp6.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2014 Intel Corporation. All rights reserved.
***/
@@ -1356,7 +1356,7 @@ static int dhcp6_set_identifier(Link *link, sd_dhcp6_client *client) {
assert(link->network);
assert(client);
- r = sd_dhcp6_client_set_mac(client, (const uint8_t *) &link->mac, sizeof (link->mac), ARPHRD_ETHER);
+ r = sd_dhcp6_client_set_mac(client, link->hw_addr.addr.bytes, link->hw_addr.length, link->iftype);
if (r < 0)
return r;
diff --git a/src/network/networkd-dhcp6.h b/src/network/networkd-dhcp6.h
index 4956c90915..65b35fd1e8 100644
--- a/src/network/networkd-dhcp6.h
+++ b/src/network/networkd-dhcp6.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-dhcp6-client.h"
diff --git a/src/network/networkd-fdb.c b/src/network/networkd-fdb.c
index 2e35f7d1bf..283dece04f 100644
--- a/src/network/networkd-fdb.c
+++ b/src/network/networkd-fdb.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2014 Intel Corporation. All rights reserved.
***/
diff --git a/src/network/networkd-fdb.h b/src/network/networkd-fdb.h
index 935406e022..48f4e40b37 100644
--- a/src/network/networkd-fdb.h
+++ b/src/network/networkd-fdb.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
/***
diff --git a/src/network/networkd-ipv4ll.c b/src/network/networkd-ipv4ll.c
index 3be395e1ad..295abe866e 100644
--- a/src/network/networkd-ipv4ll.c
+++ b/src/network/networkd-ipv4ll.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <netinet/in.h>
#include <linux/if.h>
@@ -181,7 +181,7 @@ int ipv4ll_configure(Link *link) {
return r;
}
- r = sd_ipv4ll_set_mac(link->ipv4ll, &link->mac);
+ r = sd_ipv4ll_set_mac(link->ipv4ll, &link->hw_addr.addr.ether);
if (r < 0)
return r;
@@ -211,7 +211,7 @@ int ipv4ll_update_mac(Link *link) {
if (r < 0)
return r;
- r = sd_ipv4ll_set_mac(link->ipv4ll, &link->mac);
+ r = sd_ipv4ll_set_mac(link->ipv4ll, &link->hw_addr.addr.ether);
if (r < 0)
return r;
diff --git a/src/network/networkd-ipv4ll.h b/src/network/networkd-ipv4ll.h
index 4833e304b6..fae48cd921 100644
--- a/src/network/networkd-ipv4ll.h
+++ b/src/network/networkd-ipv4ll.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "conf-parser.h"
diff --git a/src/network/networkd-ipv6-proxy-ndp.c b/src/network/networkd-ipv6-proxy-ndp.c
index ce193c0e50..0b57c6c4db 100644
--- a/src/network/networkd-ipv6-proxy-ndp.c
+++ b/src/network/networkd-ipv6-proxy-ndp.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <netinet/in.h>
#include <linux/if.h>
diff --git a/src/network/networkd-ipv6-proxy-ndp.h b/src/network/networkd-ipv6-proxy-ndp.h
index e58b17ec94..27313efa0c 100644
--- a/src/network/networkd-ipv6-proxy-ndp.h
+++ b/src/network/networkd-ipv6-proxy-ndp.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "conf-parser.h"
diff --git a/src/network/networkd-link-bus.c b/src/network/networkd-link-bus.c
index 072dfac93d..9f4c719e31 100644
--- a/src/network/networkd-link-bus.c
+++ b/src/network/networkd-link-bus.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <net/if.h>
#include <netinet/in.h>
diff --git a/src/network/networkd-link-bus.h b/src/network/networkd-link-bus.h
index 94474f22ff..45594dfac9 100644
--- a/src/network/networkd-link-bus.h
+++ b/src/network/networkd-link-bus.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c
index 9dd29bb203..ced18de425 100644
--- a/src/network/networkd-link.c
+++ b/src/network/networkd-link.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <netinet/in.h>
#include <linux/if.h>
@@ -421,9 +421,13 @@ static int link_new(Manager *manager, sd_netlink_message *message, Link **ret) {
if (r < 0)
log_link_debug_errno(link, r, "New device has no master, continuing without");
- r = sd_netlink_message_read_ether_addr(message, IFLA_ADDRESS, &link->mac);
+ r = netlink_message_read_hw_addr(message, IFLA_ADDRESS, &link->hw_addr);
if (r < 0)
- log_link_debug_errno(link, r, "MAC address not found for new device, continuing without");
+ log_link_debug_errno(link, r, "Hardware address not found for new device, continuing without");
+
+ r = netlink_message_read_hw_addr(message, IFLA_BROADCAST, &link->bcast_addr);
+ if (r < 0)
+ log_link_debug_errno(link, r, "Broadcast address not found for new device, continuing without");
r = ethtool_get_permanent_macaddr(&manager->ethtool_fd, link->ifname, &link->permanent_mac);
if (r < 0)
@@ -2167,7 +2171,7 @@ static int link_reconfigure_internal(Link *link, sd_netlink_message *m, bool for
r = network_get(link->manager, link->iftype, link->sd_device,
link->ifname, link->alternative_names, link->driver,
- &link->mac, &link->permanent_mac,
+ &link->hw_addr.addr.ether, &link->permanent_mac,
link->wlan_iftype, link->ssid, &link->bssid, &network);
if (r == -ENOENT) {
link_enter_unmanaged(link);
@@ -2302,7 +2306,7 @@ static int link_initialized_and_synced(Link *link) {
r = network_get(link->manager, link->iftype, link->sd_device,
link->ifname, link->alternative_names, link->driver,
- &link->mac, &link->permanent_mac,
+ &link->hw_addr.addr.ether, &link->permanent_mac,
link->wlan_iftype, link->ssid, &link->bssid, &network);
if (r == -ENOENT) {
link_enter_unmanaged(link);
@@ -2697,7 +2701,7 @@ static int link_admin_state_up(Link *link) {
int link_update(Link *link, sd_netlink_message *m) {
_cleanup_strv_free_ char **s = NULL;
- struct ether_addr mac;
+ hw_addr_data hw_addr;
const char *ifname;
uint32_t mtu;
bool had_carrier, carrier_gained, carrier_lost, link_was_admin_up;
@@ -2756,19 +2760,13 @@ int link_update(Link *link, sd_netlink_message *m) {
/* The kernel may broadcast NEWLINK messages without the MAC address
set, simply ignore them. */
- r = sd_netlink_message_read_ether_addr(m, IFLA_ADDRESS, &mac);
- if (r >= 0 && memcmp(link->mac.ether_addr_octet, mac.ether_addr_octet, ETH_ALEN) != 0) {
+ r = netlink_message_read_hw_addr(m, IFLA_ADDRESS, &hw_addr);
+ if (r >= 0 && (link->hw_addr.length != hw_addr.length ||
+ memcmp(link->hw_addr.addr.bytes, hw_addr.addr.bytes, hw_addr.length) != 0)) {
- memcpy(link->mac.ether_addr_octet, mac.ether_addr_octet, ETH_ALEN);
+ memcpy(link->hw_addr.addr.bytes, hw_addr.addr.bytes, hw_addr.length);
- log_link_debug(link, "Gained new MAC address: "
- "%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx",
- mac.ether_addr_octet[0],
- mac.ether_addr_octet[1],
- mac.ether_addr_octet[2],
- mac.ether_addr_octet[3],
- mac.ether_addr_octet[4],
- mac.ether_addr_octet[5]);
+ log_link_debug(link, "Gained new hardware address: %s", HW_ADDR_TO_STR(&hw_addr));
r = ipv4ll_update_mac(link);
if (r < 0)
@@ -2787,7 +2785,7 @@ int link_update(Link *link, sd_netlink_message *m) {
return log_link_warning_errno(link, r, "Could not update MAC address for Router Advertisement: %m");
if (link->ndisc) {
- r = sd_ndisc_set_mac(link->ndisc, &link->mac);
+ r = sd_ndisc_set_mac(link->ndisc, &link->hw_addr.addr.ether);
if (r < 0)
return log_link_warning_errno(link, r, "Could not update MAC for NDisc: %m");
}
diff --git a/src/network/networkd-link.h b/src/network/networkd-link.h
index a7ae2645f9..cd541920cb 100644
--- a/src/network/networkd-link.h
+++ b/src/network/networkd-link.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <endian.h>
@@ -16,6 +16,7 @@
#include "sd-radv.h"
#include "sd-netlink.h"
+#include "ether-addr-util.h"
#include "log-link.h"
#include "network-util.h"
#include "networkd-util.h"
@@ -52,7 +53,8 @@ typedef struct Link {
char *kind;
unsigned short iftype;
char *state_file;
- struct ether_addr mac;
+ hw_addr_data hw_addr;
+ hw_addr_data bcast_addr;
struct ether_addr permanent_mac;
struct in6_addr ipv6ll_address;
uint32_t mtu;
diff --git a/src/network/networkd-lldp-rx.c b/src/network/networkd-lldp-rx.c
index 65a8a314d6..c22852ff50 100644
--- a/src/network/networkd-lldp-rx.c
+++ b/src/network/networkd-lldp-rx.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <net/if.h>
#include <net/if_arp.h>
@@ -93,7 +93,7 @@ int link_lldp_rx_configure(Link *link) {
if (r < 0)
return r;
- r = sd_lldp_set_filter_address(link->lldp, &link->mac);
+ r = sd_lldp_set_filter_address(link->lldp, &link->hw_addr.addr.ether);
if (r < 0)
return r;
diff --git a/src/network/networkd-lldp-rx.h b/src/network/networkd-lldp-rx.h
index 8e1a6a0b62..78c522893b 100644
--- a/src/network/networkd-lldp-rx.h
+++ b/src/network/networkd-lldp-rx.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "conf-parser.h"
diff --git a/src/network/networkd-lldp-tx.c b/src/network/networkd-lldp-tx.c
index c8e56a5fec..b03d948bd8 100644
--- a/src/network/networkd-lldp-tx.c
+++ b/src/network/networkd-lldp-tx.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <endian.h>
#include <inttypes.h>
@@ -313,7 +313,7 @@ static int link_send_lldp(Link *link) {
SD_LLDP_SYSTEM_CAPABILITIES_STATION;
r = lldp_make_packet(link->network->lldp_emit,
- &link->mac,
+ &link->hw_addr.addr.ether,
sd_id128_to_string(machine_id, machine_id_string),
link->ifname,
(uint16_t) ttl,
diff --git a/src/network/networkd-lldp-tx.h b/src/network/networkd-lldp-tx.h
index 1409984ac0..aae30cba0f 100644
--- a/src/network/networkd-lldp-tx.h
+++ b/src/network/networkd-lldp-tx.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/network/networkd-manager-bus.c b/src/network/networkd-manager-bus.c
index 8dbcdff826..a0ac8b51fb 100644
--- a/src/network/networkd-manager-bus.c
+++ b/src/network/networkd-manager-bus.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <net/if.h>
#include <netinet/in.h>
diff --git a/src/network/networkd-manager-bus.h b/src/network/networkd-manager-bus.h
index e19d706927..08ddfbdb73 100644
--- a/src/network/networkd-manager-bus.h
+++ b/src/network/networkd-manager-bus.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/network/networkd-manager.c b/src/network/networkd-manager.c
index b5aba1f1dc..e8b6615afa 100644
--- a/src/network/networkd-manager.c
+++ b/src/network/networkd-manager.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <netinet/in.h>
#include <sys/socket.h>
@@ -38,6 +38,7 @@
#include "ordered-set.h"
#include "path-lookup.h"
#include "path-util.h"
+#include "selinux-util.h"
#include "set.h"
#include "signal-util.h"
#include "stat-util.h"
@@ -971,7 +972,7 @@ static int manager_enumerate_internal(
r = sd_netlink_call(m->rtnl, req, 0, &reply);
if (r < 0) {
- if (r == -EOPNOTSUPP && name) {
+ if (name && (r == -EOPNOTSUPP || (r == -EINVAL && mac_selinux_enforcing()))) {
log_debug_errno(r, "%s are not supported by the kernel. Ignoring.", name);
return 0;
}
diff --git a/src/network/networkd-manager.h b/src/network/networkd-manager.h
index ac7de58c64..b67116be59 100644
--- a/src/network/networkd-manager.h
+++ b/src/network/networkd-manager.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/network/networkd-mdb.c b/src/network/networkd-mdb.c
index bca3e620dd..0300dced62 100644
--- a/src/network/networkd-mdb.c
+++ b/src/network/networkd-mdb.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <net/if.h>
diff --git a/src/network/networkd-mdb.h b/src/network/networkd-mdb.h
index 563a9e6d99..ea8841275e 100644
--- a/src/network/networkd-mdb.h
+++ b/src/network/networkd-mdb.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <inttypes.h>
diff --git a/src/network/networkd-ndisc.c b/src/network/networkd-ndisc.c
index 6fde8fe239..d2aa3db175 100644
--- a/src/network/networkd-ndisc.c
+++ b/src/network/networkd-ndisc.c
@@ -1,10 +1,11 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2014 Intel Corporation. All rights reserved.
***/
#include <arpa/inet.h>
#include <netinet/icmp6.h>
+#include <net/if_arp.h>
#include <linux/if.h>
#include "sd-ndisc.h"
@@ -593,7 +594,11 @@ static int make_stableprivate_address(Link *link, const struct in6_addr *prefix,
l = MAX(DIV_ROUND_UP(prefix_len, 8), 8);
siphash24_compress(prefix, l, &state);
siphash24_compress_string(link->ifname, &state);
- siphash24_compress(&link->mac, sizeof(struct ether_addr), &state);
+ /* Only last 8 bytes of IB MAC are stable */
+ if (link->iftype == ARPHRD_INFINIBAND)
+ siphash24_compress(&link->hw_addr.addr.infiniband[12], 8, &state);
+ else
+ siphash24_compress(link->hw_addr.addr.bytes, link->hw_addr.length, &state);
siphash24_compress(&dad_counter, sizeof(uint8_t), &state);
rid = htole64(siphash24_finalize(&state));
@@ -1158,13 +1163,17 @@ static int ndisc_router_handler(Link *link, sd_ndisc_router *rt) {
if (r < 0)
return log_link_error_errno(link, r, "Failed to get RA flags: %m");
- if ((flags & (ND_RA_FLAG_MANAGED | ND_RA_FLAG_OTHER) && link->network->ipv6_accept_ra_start_dhcp6_client)) {
+ if ((flags & (ND_RA_FLAG_MANAGED | ND_RA_FLAG_OTHER) &&
+ link->network->ipv6_accept_ra_start_dhcp6_client != IPV6_ACCEPT_RA_START_DHCP6_CLIENT_NO) ||
+ link->network->ipv6_accept_ra_start_dhcp6_client == IPV6_ACCEPT_RA_START_DHCP6_CLIENT_ALWAYS) {
- if (link->network->ipv6_accept_ra_start_dhcp6_client == IPV6_ACCEPT_RA_START_DHCP6_CLIENT_ALWAYS)
- r = dhcp6_request_address(link, false);
- else
+ if (flags & (ND_RA_FLAG_MANAGED | ND_RA_FLAG_OTHER))
/* (re)start DHCPv6 client in stateful or stateless mode according to RA flags */
r = dhcp6_request_address(link, !(flags & ND_RA_FLAG_MANAGED));
+ else
+ /* When IPv6AcceptRA.DHCPv6Client=always, start dhcp6 client in managed mode
+ * even if router does not have M or O flag. */
+ r = dhcp6_request_address(link, false);
if (r < 0 && r != -EBUSY)
return log_link_error_errno(link, r, "Could not acquire DHCPv6 lease on NDisc request: %m");
else
@@ -1257,7 +1266,7 @@ int ndisc_configure(Link *link) {
return r;
}
- r = sd_ndisc_set_mac(link->ndisc, &link->mac);
+ r = sd_ndisc_set_mac(link->ndisc, &link->hw_addr.addr.ether);
if (r < 0)
return r;
diff --git a/src/network/networkd-ndisc.h b/src/network/networkd-ndisc.h
index 4e9a704995..1562411224 100644
--- a/src/network/networkd-ndisc.h
+++ b/src/network/networkd-ndisc.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "conf-parser.h"
diff --git a/src/network/networkd-neighbor.c b/src/network/networkd-neighbor.c
index b553f1707e..c805d52cf3 100644
--- a/src/network/networkd-neighbor.c
+++ b/src/network/networkd-neighbor.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "hashmap.h"
diff --git a/src/network/networkd-neighbor.h b/src/network/networkd-neighbor.h
index bb403ef2da..8ad790be2d 100644
--- a/src/network/networkd-neighbor.h
+++ b/src/network/networkd-neighbor.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/network/networkd-network-bus.c b/src/network/networkd-network-bus.c
index d8be6ee3ee..8c52faf185 100644
--- a/src/network/networkd-network-bus.c
+++ b/src/network/networkd-network-bus.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "ether-addr-util.h"
diff --git a/src/network/networkd-network-bus.h b/src/network/networkd-network-bus.h
index 650e145d42..cca1e0af33 100644
--- a/src/network/networkd-network-bus.h
+++ b/src/network/networkd-network-bus.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/network/networkd-network.c b/src/network/networkd-network.c
index c3ba604c4e..195bf3aaae 100644
--- a/src/network/networkd-network.c
+++ b/src/network/networkd-network.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <net/if.h>
#include <netinet/in.h>
@@ -375,6 +375,7 @@ int network_load_one(Manager *manager, OrderedHashmap **networks, const char *fi
.dhcp_server_emit_router = true,
.dhcp_server_emit_timezone = true,
+ .router_lifetime_usec = 30 * USEC_PER_MINUTE,
.router_emit_dns = true,
.router_emit_domains = true,
@@ -417,7 +418,7 @@ int network_load_one(Manager *manager, OrderedHashmap **networks, const char *fi
.ipv6_accept_ra_use_onlink_prefix = true,
.ipv6_accept_ra_route_table = RT_TABLE_MAIN,
.ipv6_accept_ra_route_table_set = false,
- .ipv6_accept_ra_start_dhcp6_client = true,
+ .ipv6_accept_ra_start_dhcp6_client = IPV6_ACCEPT_RA_START_DHCP6_CLIENT_YES,
.can_triple_sampling = -1,
.can_termination = -1,
diff --git a/src/network/networkd-network.h b/src/network/networkd-network.h
index c51dd34a57..17e7d432c9 100644
--- a/src/network/networkd-network.h
+++ b/src/network/networkd-network.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <linux/nl80211.h>
diff --git a/src/network/networkd-nexthop.c b/src/network/networkd-nexthop.c
index 6edeaabf88..4a09b4c912 100644
--- a/src/network/networkd-nexthop.c
+++ b/src/network/networkd-nexthop.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright © 2019 VMware, Inc.
*/
diff --git a/src/network/networkd-nexthop.h b/src/network/networkd-nexthop.h
index 3cdb068efd..75714e7ef5 100644
--- a/src/network/networkd-nexthop.h
+++ b/src/network/networkd-nexthop.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright © 2019 VMware, Inc.
*/
diff --git a/src/network/networkd-radv.c b/src/network/networkd-radv.c
index eb10f21cbd..a8e1b2b489 100644
--- a/src/network/networkd-radv.c
+++ b/src/network/networkd-radv.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2017 Intel Corporation. All rights reserved.
***/
@@ -641,6 +641,7 @@ static bool link_radv_enabled(Link *link) {
}
int radv_configure(Link *link) {
+ uint16_t router_lifetime;
RoutePrefix *q;
Prefix *p;
int r;
@@ -659,7 +660,7 @@ int radv_configure(Link *link) {
if (r < 0)
return r;
- r = sd_radv_set_mac(link->radv, &link->mac);
+ r = sd_radv_set_mac(link->radv, &link->hw_addr.addr.ether);
if (r < 0)
return r;
@@ -675,16 +676,20 @@ int radv_configure(Link *link) {
if (r < 0)
return r;
- /* a value of 0xffffffff represents infinity, 0x0 means this host is
- not a router */
- r = sd_radv_set_router_lifetime(link->radv,
- DIV_ROUND_UP(link->network->router_lifetime_usec, USEC_PER_SEC));
+ /* a value of UINT16_MAX represents infinity, 0x0 means this host is not a router */
+ if (link->network->router_lifetime_usec == USEC_INFINITY)
+ router_lifetime = UINT16_MAX;
+ else if (link->network->router_lifetime_usec > (UINT16_MAX - 1) * USEC_PER_SEC)
+ router_lifetime = UINT16_MAX - 1;
+ else
+ router_lifetime = DIV_ROUND_UP(link->network->router_lifetime_usec, USEC_PER_SEC);
+
+ r = sd_radv_set_router_lifetime(link->radv, router_lifetime);
if (r < 0)
return r;
- if (link->network->router_lifetime_usec > 0) {
- r = sd_radv_set_preference(link->radv,
- link->network->router_preference);
+ if (router_lifetime > 0) {
+ r = sd_radv_set_preference(link->radv, link->network->router_preference);
if (r < 0)
return r;
}
@@ -727,7 +732,7 @@ int radv_update_mac(Link *link) {
if (r < 0)
return r;
- r = sd_radv_set_mac(link->radv, &link->mac);
+ r = sd_radv_set_mac(link->radv, &link->hw_addr.addr.ether);
if (r < 0)
return r;
diff --git a/src/network/networkd-radv.h b/src/network/networkd-radv.h
index 75c606d15e..4dfbefef95 100644
--- a/src/network/networkd-radv.h
+++ b/src/network/networkd-radv.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
/***
diff --git a/src/network/networkd-route.c b/src/network/networkd-route.c
index cd0f0aa707..10f30c1a7e 100644
--- a/src/network/networkd-route.c
+++ b/src/network/networkd-route.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <linux/icmpv6.h>
#include <linux/ipv6_route.h>
diff --git a/src/network/networkd-route.h b/src/network/networkd-route.h
index e896719e13..f59369392f 100644
--- a/src/network/networkd-route.h
+++ b/src/network/networkd-route.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <inttypes.h>
diff --git a/src/network/networkd-routing-policy-rule.c b/src/network/networkd-routing-policy-rule.c
index de60bd9555..a31fb31fa4 100644
--- a/src/network/networkd-routing-policy-rule.c
+++ b/src/network/networkd-routing-policy-rule.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <net/if.h>
#include <linux/fib_rules.h>
diff --git a/src/network/networkd-routing-policy-rule.h b/src/network/networkd-routing-policy-rule.h
index bc1193a111..baf086f25e 100644
--- a/src/network/networkd-routing-policy-rule.h
+++ b/src/network/networkd-routing-policy-rule.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <inttypes.h>
diff --git a/src/network/networkd-speed-meter.c b/src/network/networkd-speed-meter.c
index ecf0346344..e7f0682c3e 100644
--- a/src/network/networkd-speed-meter.c
+++ b/src/network/networkd-speed-meter.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
diff --git a/src/network/networkd-speed-meter.h b/src/network/networkd-speed-meter.h
index f5727784a9..4dd024b62a 100644
--- a/src/network/networkd-speed-meter.h
+++ b/src/network/networkd-speed-meter.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
/* Default interval is 10sec. The speed meter periodically make networkd
diff --git a/src/network/networkd-sriov.c b/src/network/networkd-sriov.c
index 61382a8993..68f43b5ce6 100644
--- a/src/network/networkd-sriov.c
+++ b/src/network/networkd-sriov.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright © 2020 VMware, Inc. */
#include "alloc-util.h"
diff --git a/src/network/networkd-sriov.h b/src/network/networkd-sriov.h
index 8a48545d64..dae5ff0306 100644
--- a/src/network/networkd-sriov.h
+++ b/src/network/networkd-sriov.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright © 2020 VMware, Inc. */
#pragma once
diff --git a/src/network/networkd-sysctl.c b/src/network/networkd-sysctl.c
index b6839f86ee..518fe8e131 100644
--- a/src/network/networkd-sysctl.c
+++ b/src/network/networkd-sysctl.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <netinet/in.h>
#include <linux/if.h>
diff --git a/src/network/networkd-sysctl.h b/src/network/networkd-sysctl.h
index 552b55226a..3568900a1f 100644
--- a/src/network/networkd-sysctl.h
+++ b/src/network/networkd-sysctl.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/network/networkd-util.c b/src/network/networkd-util.c
index bae4ee5cba..8ddcbb2fce 100644
--- a/src/network/networkd-util.c
+++ b/src/network/networkd-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "condition.h"
#include "conf-parser.h"
diff --git a/src/network/networkd-util.h b/src/network/networkd-util.h
index ce169fa731..6100a0031c 100644
--- a/src/network/networkd-util.h
+++ b/src/network/networkd-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-dhcp-lease.h"
diff --git a/src/network/networkd-wifi.c b/src/network/networkd-wifi.c
index 53b65286b3..0f2def7a16 100644
--- a/src/network/networkd-wifi.c
+++ b/src/network/networkd-wifi.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <net/ethernet.h>
#include <linux/nl80211.h>
diff --git a/src/network/networkd-wifi.h b/src/network/networkd-wifi.h
index 57aa153370..ab868eba27 100644
--- a/src/network/networkd-wifi.h
+++ b/src/network/networkd-wifi.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/network/networkd.c b/src/network/networkd.c
index f78ff9db54..b448d9b011 100644
--- a/src/network/networkd.c
+++ b/src/network/networkd.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <netinet/in.h>
#include <sys/stat.h>
diff --git a/src/network/org.freedesktop.network1.policy b/src/network/org.freedesktop.network1.policy
index 50b0ef0814..9e27f728bc 100644
--- a/src/network/org.freedesktop.network1.policy
+++ b/src/network/org.freedesktop.network1.policy
@@ -3,7 +3,7 @@
"http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
<!--
- SPDX-License-Identifier: LGPL-2.1+
+ SPDX-License-Identifier: LGPL-2.1-or-later
This file is part of systemd.
diff --git a/src/network/org.freedesktop.network1.service b/src/network/org.freedesktop.network1.service
index 641a1a5cc1..ddbf3eb4ee 100644
--- a/src/network/org.freedesktop.network1.service
+++ b/src/network/org.freedesktop.network1.service
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/src/network/tc/cake.c b/src/network/tc/cake.c
index 1da1ec40c3..76fb718f9c 100644
--- a/src/network/tc/cake.c
+++ b/src/network/tc/cake.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright © 2020 VMware, Inc. */
#include <linux/pkt_sched.h>
diff --git a/src/network/tc/cake.h b/src/network/tc/cake.h
index 36de5110dd..1da28b7d20 100644
--- a/src/network/tc/cake.h
+++ b/src/network/tc/cake.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright © 2020 VMware, Inc. */
#pragma once
diff --git a/src/network/tc/codel.c b/src/network/tc/codel.c
index cba6faf376..807c247b57 100644
--- a/src/network/tc/codel.c
+++ b/src/network/tc/codel.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright © 2019 VMware, Inc. */
#include <linux/pkt_sched.h>
diff --git a/src/network/tc/codel.h b/src/network/tc/codel.h
index 4023a7dee5..4fe52831a0 100644
--- a/src/network/tc/codel.h
+++ b/src/network/tc/codel.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright © 2019 VMware, Inc. */
#pragma once
diff --git a/src/network/tc/drr.c b/src/network/tc/drr.c
index 9810a120d1..86b7f43311 100644
--- a/src/network/tc/drr.c
+++ b/src/network/tc/drr.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright © 2020 VMware, Inc. */
#include <linux/pkt_sched.h>
diff --git a/src/network/tc/drr.h b/src/network/tc/drr.h
index ff2b658acc..c96cc4db00 100644
--- a/src/network/tc/drr.h
+++ b/src/network/tc/drr.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright © 2020 VMware, Inc. */
#pragma once
diff --git a/src/network/tc/ets.c b/src/network/tc/ets.c
index ece1f369d5..8214a575bf 100644
--- a/src/network/tc/ets.c
+++ b/src/network/tc/ets.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <linux/pkt_sched.h>
diff --git a/src/network/tc/ets.h b/src/network/tc/ets.h
index c35d5976d8..b6dd42811c 100644
--- a/src/network/tc/ets.h
+++ b/src/network/tc/ets.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <linux/pkt_sched.h>
diff --git a/src/network/tc/fifo.c b/src/network/tc/fifo.c
index e955223a89..8b1fa6ee40 100644
--- a/src/network/tc/fifo.c
+++ b/src/network/tc/fifo.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright © 2020 VMware, Inc. */
#include <linux/pkt_sched.h>
diff --git a/src/network/tc/fifo.h b/src/network/tc/fifo.h
index e4c976b942..b9bbd0994c 100644
--- a/src/network/tc/fifo.h
+++ b/src/network/tc/fifo.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright © 2020 VMware, Inc. */
#pragma once
diff --git a/src/network/tc/fq-codel.c b/src/network/tc/fq-codel.c
index 17a2915143..958f65a28b 100644
--- a/src/network/tc/fq-codel.c
+++ b/src/network/tc/fq-codel.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright © 2019 VMware, Inc. */
#include <linux/pkt_sched.h>
diff --git a/src/network/tc/fq-codel.h b/src/network/tc/fq-codel.h
index 1a80963df6..2553c59886 100644
--- a/src/network/tc/fq-codel.h
+++ b/src/network/tc/fq-codel.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright © 2019 VMware, Inc. */
#pragma once
diff --git a/src/network/tc/fq-pie.c b/src/network/tc/fq-pie.c
index 3065ac0150..c7d7623b47 100644
--- a/src/network/tc/fq-pie.c
+++ b/src/network/tc/fq-pie.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright © 2020 VMware, Inc. */
#include <linux/pkt_sched.h>
diff --git a/src/network/tc/fq-pie.h b/src/network/tc/fq-pie.h
index 8de9593c44..51fb626a7a 100644
--- a/src/network/tc/fq-pie.h
+++ b/src/network/tc/fq-pie.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright © 2020 VMware, Inc. */
#pragma once
diff --git a/src/network/tc/fq.c b/src/network/tc/fq.c
index d3218203b9..d48aea86fb 100644
--- a/src/network/tc/fq.c
+++ b/src/network/tc/fq.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright © 2019 VMware, Inc. */
#include <linux/pkt_sched.h>
diff --git a/src/network/tc/fq.h b/src/network/tc/fq.h
index 5a8ed6d651..77469c4103 100644
--- a/src/network/tc/fq.h
+++ b/src/network/tc/fq.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright © 2019 VMware, Inc. */
#pragma once
diff --git a/src/network/tc/gred.c b/src/network/tc/gred.c
index 7c9e01aba7..46a9eadf87 100644
--- a/src/network/tc/gred.c
+++ b/src/network/tc/gred.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright © 2020 VMware, Inc. */
#include <linux/pkt_sched.h>
diff --git a/src/network/tc/gred.h b/src/network/tc/gred.h
index 4fb2b37c11..c084ff12ec 100644
--- a/src/network/tc/gred.h
+++ b/src/network/tc/gred.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright © 2020 VMware, Inc. */
#pragma once
diff --git a/src/network/tc/hhf.c b/src/network/tc/hhf.c
index 324a975aa8..69c02f4810 100644
--- a/src/network/tc/hhf.c
+++ b/src/network/tc/hhf.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright © 2020 VMware, Inc. */
#include <linux/pkt_sched.h>
diff --git a/src/network/tc/hhf.h b/src/network/tc/hhf.h
index a555998eee..04caaa8aa4 100644
--- a/src/network/tc/hhf.h
+++ b/src/network/tc/hhf.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright © 2020 VMware, Inc. */
#pragma once
diff --git a/src/network/tc/htb.c b/src/network/tc/htb.c
index 65481a76bc..0969587c40 100644
--- a/src/network/tc/htb.c
+++ b/src/network/tc/htb.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <linux/pkt_sched.h>
diff --git a/src/network/tc/htb.h b/src/network/tc/htb.h
index b385872e0a..55644dbdd2 100644
--- a/src/network/tc/htb.h
+++ b/src/network/tc/htb.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "conf-parser.h"
diff --git a/src/network/tc/netem.c b/src/network/tc/netem.c
index a94a9a369e..454e556d2e 100644
--- a/src/network/tc/netem.c
+++ b/src/network/tc/netem.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright © 2019 VMware, Inc. */
#include <linux/pkt_sched.h>
diff --git a/src/network/tc/netem.h b/src/network/tc/netem.h
index 6319c72521..d58d5ac765 100644
--- a/src/network/tc/netem.h
+++ b/src/network/tc/netem.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright © 2019 VMware, Inc. */
#pragma once
diff --git a/src/network/tc/pie.c b/src/network/tc/pie.c
index eccbaa2cf5..695a38171d 100644
--- a/src/network/tc/pie.c
+++ b/src/network/tc/pie.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright © 2020 VMware, Inc. */
#include <linux/pkt_sched.h>
diff --git a/src/network/tc/pie.h b/src/network/tc/pie.h
index 7c764742ad..40a114e7d1 100644
--- a/src/network/tc/pie.h
+++ b/src/network/tc/pie.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright © 2020 VMware, Inc. */
#pragma once
diff --git a/src/network/tc/qdisc.c b/src/network/tc/qdisc.c
index 619a2f4b98..2add12816a 100644
--- a/src/network/tc/qdisc.c
+++ b/src/network/tc/qdisc.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright © 2019 VMware, Inc. */
#include <linux/pkt_sched.h>
diff --git a/src/network/tc/qdisc.h b/src/network/tc/qdisc.h
index a92460faf9..f9a9954861 100644
--- a/src/network/tc/qdisc.h
+++ b/src/network/tc/qdisc.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright © 2019 VMware, Inc. */
#pragma once
diff --git a/src/network/tc/qfq.c b/src/network/tc/qfq.c
index 2104067f3b..320f2c1c52 100644
--- a/src/network/tc/qfq.c
+++ b/src/network/tc/qfq.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright © 2020 VMware, Inc. */
#include <linux/pkt_sched.h>
diff --git a/src/network/tc/qfq.h b/src/network/tc/qfq.h
index 10bab3e642..0f013a9863 100644
--- a/src/network/tc/qfq.h
+++ b/src/network/tc/qfq.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright © 2020 VMware, Inc. */
#pragma once
diff --git a/src/network/tc/sfb.c b/src/network/tc/sfb.c
index 3692a50ed8..674fdf6ac7 100644
--- a/src/network/tc/sfb.c
+++ b/src/network/tc/sfb.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright © 2020 VMware, Inc. */
#include <linux/pkt_sched.h>
diff --git a/src/network/tc/sfb.h b/src/network/tc/sfb.h
index 3cc87d7373..628df358e8 100644
--- a/src/network/tc/sfb.h
+++ b/src/network/tc/sfb.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright © 2020 VMware, Inc. */
#pragma once
diff --git a/src/network/tc/sfq.c b/src/network/tc/sfq.c
index d671281c46..387be83a99 100644
--- a/src/network/tc/sfq.c
+++ b/src/network/tc/sfq.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright © 2019 VMware, Inc. */
#include <linux/pkt_sched.h>
diff --git a/src/network/tc/sfq.h b/src/network/tc/sfq.h
index 19c8decf13..1626775d63 100644
--- a/src/network/tc/sfq.h
+++ b/src/network/tc/sfq.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright © 2019 VMware, Inc. */
#pragma once
diff --git a/src/network/tc/tbf.c b/src/network/tc/tbf.c
index cb3c3bcc15..2d84c5a833 100644
--- a/src/network/tc/tbf.c
+++ b/src/network/tc/tbf.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright © 2019 VMware, Inc. */
#include <linux/pkt_sched.h>
diff --git a/src/network/tc/tbf.h b/src/network/tc/tbf.h
index a785be25e0..6b4b017c7c 100644
--- a/src/network/tc/tbf.h
+++ b/src/network/tc/tbf.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright © 2019 VMware, Inc. */
#pragma once
diff --git a/src/network/tc/tc-util.c b/src/network/tc/tc-util.c
index 8a5afeab2d..3e10b50c96 100644
--- a/src/network/tc/tc-util.c
+++ b/src/network/tc/tc-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright © 2019 VMware, Inc. */
#include "alloc-util.h"
diff --git a/src/network/tc/tc-util.h b/src/network/tc/tc-util.h
index 6287b35a76..83bad8e3b7 100644
--- a/src/network/tc/tc-util.h
+++ b/src/network/tc/tc-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright © 2019 VMware, Inc. */
#pragma once
diff --git a/src/network/tc/tc.c b/src/network/tc/tc.c
index 974bb8c822..c32b040919 100644
--- a/src/network/tc/tc.c
+++ b/src/network/tc/tc.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "macro.h"
#include "qdisc.h"
diff --git a/src/network/tc/tc.h b/src/network/tc/tc.h
index 916ad3300a..7fbd744142 100644
--- a/src/network/tc/tc.h
+++ b/src/network/tc/tc.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "networkd-link.h"
diff --git a/src/network/tc/tclass.c b/src/network/tc/tclass.c
index 9a39713b32..21b26b01a0 100644
--- a/src/network/tc/tclass.c
+++ b/src/network/tc/tclass.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright © 2019 VMware, Inc. */
#include <linux/pkt_sched.h>
diff --git a/src/network/tc/tclass.h b/src/network/tc/tclass.h
index dc6886ac3f..f02a6a734a 100644
--- a/src/network/tc/tclass.h
+++ b/src/network/tc/tclass.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright © 2019 VMware, Inc. */
#pragma once
diff --git a/src/network/tc/teql.c b/src/network/tc/teql.c
index f727d14341..0da2fc357e 100644
--- a/src/network/tc/teql.c
+++ b/src/network/tc/teql.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "macro.h"
#include "netlink-util.h"
diff --git a/src/network/tc/teql.h b/src/network/tc/teql.h
index 5b091aaf0f..8d0085ea54 100644
--- a/src/network/tc/teql.h
+++ b/src/network/tc/teql.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "conf-parser.h"
diff --git a/src/network/test-network-tables.c b/src/network/test-network-tables.c
index 25b9396397..475cac7527 100644
--- a/src/network/test-network-tables.c
+++ b/src/network/test-network-tables.c
@@ -1,3 +1,5 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
#include "bond.h"
#include "dhcp6-internal.h"
#include "dhcp6-protocol.h"
diff --git a/src/network/test-network.c b/src/network/test-network.c
index f6168fc3fa..bb67c74e9b 100644
--- a/src/network/test-network.c
+++ b/src/network/test-network.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <arpa/inet.h>
#include <sys/param.h>
diff --git a/src/network/test-networkd-conf.c b/src/network/test-networkd-conf.c
index 08ebf30bb9..d068a4644d 100644
--- a/src/network/test-networkd-conf.c
+++ b/src/network/test-networkd-conf.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "hexdecoct.h"
#include "log.h"
diff --git a/src/network/test-routing-policy-rule.c b/src/network/test-routing-policy-rule.c
index 40341d6073..8d87cdf9c9 100644
--- a/src/network/test-routing-policy-rule.c
+++ b/src/network/test-routing-policy-rule.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "fd-util.h"
#include "fileio.h"
diff --git a/src/network/wait-online/link.c b/src/network/wait-online/link.c
index 69b0057707..529fc9f22a 100644
--- a/src/network/wait-online/link.c
+++ b/src/network/wait-online/link.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "sd-network.h"
diff --git a/src/network/wait-online/link.h b/src/network/wait-online/link.h
index 73d9f9cc3e..3aa8357293 100644
--- a/src/network/wait-online/link.h
+++ b/src/network/wait-online/link.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-netlink.h"
diff --git a/src/network/wait-online/manager.c b/src/network/wait-online/manager.c
index 3264fa57d9..e3b350f526 100644
--- a/src/network/wait-online/manager.c
+++ b/src/network/wait-online/manager.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <netinet/ether.h>
#include <linux/if.h>
diff --git a/src/network/wait-online/manager.h b/src/network/wait-online/manager.h
index 7398783df7..f5e83532ae 100644
--- a/src/network/wait-online/manager.h
+++ b/src/network/wait-online/manager.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-event.h"
diff --git a/src/network/wait-online/wait-online.c b/src/network/wait-online/wait-online.c
index cfd9093f1a..c2bdcd4907 100644
--- a/src/network/wait-online/wait-online.c
+++ b/src/network/wait-online/wait-online.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <getopt.h>
#include <sys/stat.h>
diff --git a/src/notify/notify.c b/src/notify/notify.c
index 69d473401d..6a506db3a4 100644
--- a/src/notify/notify.c
+++ b/src/notify/notify.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <getopt.h>
diff --git a/src/nspawn/meson.build b/src/nspawn/meson.build
index ae3d72faca..539ed56c36 100644
--- a/src/nspawn/meson.build
+++ b/src/nspawn/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
libnspawn_core_sources = files('''
nspawn-cgroup.c
diff --git a/src/nspawn/nspawn-cgroup.c b/src/nspawn/nspawn-cgroup.c
index f7b34ccc58..cb01b25bc6 100644
--- a/src/nspawn/nspawn-cgroup.c
+++ b/src/nspawn/nspawn-cgroup.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/mount.h>
diff --git a/src/nspawn/nspawn-cgroup.h b/src/nspawn/nspawn-cgroup.h
index 035e8fbd0f..3f5ba622d8 100644
--- a/src/nspawn/nspawn-cgroup.h
+++ b/src/nspawn/nspawn-cgroup.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/nspawn/nspawn-creds.c b/src/nspawn/nspawn-creds.c
index 41a38d37ea..0900d8c211 100644
--- a/src/nspawn/nspawn-creds.c
+++ b/src/nspawn/nspawn-creds.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "macro.h"
diff --git a/src/nspawn/nspawn-creds.h b/src/nspawn/nspawn-creds.h
index b3c90bb17a..de0661b204 100644
--- a/src/nspawn/nspawn-creds.h
+++ b/src/nspawn/nspawn-creds.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <sys/types.h>
diff --git a/src/nspawn/nspawn-def.h b/src/nspawn/nspawn-def.h
index ac3a1a02c4..32a20aabd5 100644
--- a/src/nspawn/nspawn-def.h
+++ b/src/nspawn/nspawn-def.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <sys/types.h>
diff --git a/src/nspawn/nspawn-expose-ports.c b/src/nspawn/nspawn-expose-ports.c
index 69f36691fb..d8a37a3399 100644
--- a/src/nspawn/nspawn-expose-ports.c
+++ b/src/nspawn/nspawn-expose-ports.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "sd-netlink.h"
diff --git a/src/nspawn/nspawn-expose-ports.h b/src/nspawn/nspawn-expose-ports.h
index 7ed7bee03f..cc834a4197 100644
--- a/src/nspawn/nspawn-expose-ports.h
+++ b/src/nspawn/nspawn-expose-ports.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <inttypes.h>
diff --git a/src/nspawn/nspawn-mount.c b/src/nspawn/nspawn-mount.c
index 065099cf39..2ea1bed361 100644
--- a/src/nspawn/nspawn-mount.c
+++ b/src/nspawn/nspawn-mount.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/mount.h>
#include <linux/magic.h>
diff --git a/src/nspawn/nspawn-mount.h b/src/nspawn/nspawn-mount.h
index 8f9d094fae..e8b75fba60 100644
--- a/src/nspawn/nspawn-mount.h
+++ b/src/nspawn/nspawn-mount.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/nspawn/nspawn-network.c b/src/nspawn/nspawn-network.c
index a9aff9a67f..d6b7d8e1d8 100644
--- a/src/nspawn/nspawn-network.c
+++ b/src/nspawn/nspawn-network.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <net/if.h>
#include <linux/if.h>
diff --git a/src/nspawn/nspawn-network.h b/src/nspawn/nspawn-network.h
index 4999b172c4..5c2d983418 100644
--- a/src/nspawn/nspawn-network.h
+++ b/src/nspawn/nspawn-network.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <net/if.h>
diff --git a/src/nspawn/nspawn-oci.c b/src/nspawn/nspawn-oci.c
index 9445dc5b0e..ca708be755 100644
--- a/src/nspawn/nspawn-oci.c
+++ b/src/nspawn/nspawn-oci.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <linux/oom.h>
#if HAVE_SECCOMP
diff --git a/src/nspawn/nspawn-oci.h b/src/nspawn/nspawn-oci.h
index d23a2f3dae..ee72c91732 100644
--- a/src/nspawn/nspawn-oci.h
+++ b/src/nspawn/nspawn-oci.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "nspawn-settings.h"
diff --git a/src/nspawn/nspawn-patch-uid.c b/src/nspawn/nspawn-patch-uid.c
index 112c3562ac..785332e091 100644
--- a/src/nspawn/nspawn-patch-uid.c
+++ b/src/nspawn/nspawn-patch-uid.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <sys/statvfs.h>
diff --git a/src/nspawn/nspawn-patch-uid.h b/src/nspawn/nspawn-patch-uid.h
index b7c6ce2b73..5c7349bc73 100644
--- a/src/nspawn/nspawn-patch-uid.h
+++ b/src/nspawn/nspawn-patch-uid.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
diff --git a/src/nspawn/nspawn-register.c b/src/nspawn/nspawn-register.c
index 50867f3843..2e6c12b3b7 100644
--- a/src/nspawn/nspawn-register.c
+++ b/src/nspawn/nspawn-register.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "sd-bus.h"
diff --git a/src/nspawn/nspawn-register.h b/src/nspawn/nspawn-register.h
index 07cca7fadc..59fdd1bd61 100644
--- a/src/nspawn/nspawn-register.h
+++ b/src/nspawn/nspawn-register.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <sys/types.h>
diff --git a/src/nspawn/nspawn-seccomp.c b/src/nspawn/nspawn-seccomp.c
index 1ab50553a9..1da719124c 100644
--- a/src/nspawn/nspawn-seccomp.c
+++ b/src/nspawn/nspawn-seccomp.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <linux/netlink.h>
@@ -186,7 +186,7 @@ int setup_seccomp(uint64_t cap_list_retain, char **syscall_allow_list, char **sy
int r;
if (!is_seccomp_available()) {
- log_debug("SECCOMP features not detected in the kernel, disabling SECCOMP filterering");
+ log_debug("SECCOMP features not detected in the kernel or disabled at runtime, disabling SECCOMP filtering");
return 0;
}
diff --git a/src/nspawn/nspawn-seccomp.h b/src/nspawn/nspawn-seccomp.h
index 6a48e6459b..2690fba686 100644
--- a/src/nspawn/nspawn-seccomp.h
+++ b/src/nspawn/nspawn-seccomp.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <sys/types.h>
diff --git a/src/nspawn/nspawn-settings.c b/src/nspawn/nspawn-settings.c
index bd8062d3ec..92bb5120ab 100644
--- a/src/nspawn/nspawn-settings.c
+++ b/src/nspawn/nspawn-settings.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "cap-list.h"
diff --git a/src/nspawn/nspawn-settings.h b/src/nspawn/nspawn-settings.h
index b8fa145f77..4a83e55202 100644
--- a/src/nspawn/nspawn-settings.h
+++ b/src/nspawn/nspawn-settings.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <sched.h>
diff --git a/src/nspawn/nspawn-setuid.c b/src/nspawn/nspawn-setuid.c
index 62b949f58c..c224fd0b2f 100644
--- a/src/nspawn/nspawn-setuid.c
+++ b/src/nspawn/nspawn-setuid.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <sys/types.h>
diff --git a/src/nspawn/nspawn-setuid.h b/src/nspawn/nspawn-setuid.h
index c82d50bdf1..192471143f 100644
--- a/src/nspawn/nspawn-setuid.h
+++ b/src/nspawn/nspawn-setuid.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int change_uid_gid_raw(uid_t uid, gid_t gid, const gid_t *supplementary_gids, size_t n_supplementary_gids, bool chown_stdio);
diff --git a/src/nspawn/nspawn-stub-pid1.c b/src/nspawn/nspawn-stub-pid1.c
index 60d7439fb1..3cbe4ef5a6 100644
--- a/src/nspawn/nspawn-stub-pid1.c
+++ b/src/nspawn/nspawn-stub-pid1.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/ioctl.h>
#include <sys/reboot.h>
diff --git a/src/nspawn/nspawn-stub-pid1.h b/src/nspawn/nspawn-stub-pid1.h
index 8982d5034e..e0810fee12 100644
--- a/src/nspawn/nspawn-stub-pid1.h
+++ b/src/nspawn/nspawn-stub-pid1.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-id128.h"
diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
index 5db08cb5b3..0842731c18 100644
--- a/src/nspawn/nspawn.c
+++ b/src/nspawn/nspawn.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#if HAVE_BLKID
#endif
@@ -1589,7 +1589,7 @@ static int parse_argv(int argc, char *argv[]) {
return log_oom();
}
- r = read_full_file_full(AT_FDCWD, j ?: p, flags, &data, &size);
+ r = read_full_file_full(AT_FDCWD, j ?: p, flags, NULL, &data, &size);
if (r < 0)
return log_error_errno(r, "Failed to read credential '%s': %m", j ?: p);
diff --git a/src/nspawn/test-nspawn-tables.c b/src/nspawn/test-nspawn-tables.c
index 2c5f2ef6db..3baf5d301f 100644
--- a/src/nspawn/test-nspawn-tables.c
+++ b/src/nspawn/test-nspawn-tables.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "nspawn-settings.h"
#include "test-tables.h"
diff --git a/src/nspawn/test-patch-uid.c b/src/nspawn/test-patch-uid.c
index a6829629b4..f8f44b0b0b 100644
--- a/src/nspawn/test-patch-uid.c
+++ b/src/nspawn/test-patch-uid.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdlib.h>
diff --git a/src/nss-myhostname/nss-myhostname.c b/src/nss-myhostname/nss-myhostname.c
index 9aa6debc16..ffabc60c70 100644
--- a/src/nss-myhostname/nss-myhostname.c
+++ b/src/nss-myhostname/nss-myhostname.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <net/if.h>
diff --git a/src/nss-myhostname/nss-myhostname.sym b/src/nss-myhostname/nss-myhostname.sym
index fc7aa99574..21ab637eca 100644
--- a/src/nss-myhostname/nss-myhostname.sym
+++ b/src/nss-myhostname/nss-myhostname.sym
@@ -1,5 +1,5 @@
/***
- SPDX-License-Identifier: LGPL-2.1+
+ SPDX-License-Identifier: LGPL-2.1-or-later
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
diff --git a/src/nss-mymachines/nss-mymachines.c b/src/nss-mymachines/nss-mymachines.c
index 5db0dcef76..53f0492116 100644
--- a/src/nss-mymachines/nss-mymachines.c
+++ b/src/nss-mymachines/nss-mymachines.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <netdb.h>
#include <nss.h>
diff --git a/src/nss-mymachines/nss-mymachines.sym b/src/nss-mymachines/nss-mymachines.sym
index ade64474a2..258244e765 100644
--- a/src/nss-mymachines/nss-mymachines.sym
+++ b/src/nss-mymachines/nss-mymachines.sym
@@ -1,5 +1,5 @@
/***
- SPDX-License-Identifier: LGPL-2.1+
+ SPDX-License-Identifier: LGPL-2.1-or-later
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
diff --git a/src/nss-resolve/nss-resolve.c b/src/nss-resolve/nss-resolve.c
index a8e6ce97a1..566b319484 100644
--- a/src/nss-resolve/nss-resolve.c
+++ b/src/nss-resolve/nss-resolve.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <netdb.h>
diff --git a/src/nss-resolve/nss-resolve.sym b/src/nss-resolve/nss-resolve.sym
index e690a0092f..ecc958ed6a 100644
--- a/src/nss-resolve/nss-resolve.sym
+++ b/src/nss-resolve/nss-resolve.sym
@@ -1,5 +1,5 @@
/***
- SPDX-License-Identifier: LGPL-2.1+
+ SPDX-License-Identifier: LGPL-2.1-or-later
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
diff --git a/src/nss-systemd/nss-systemd.c b/src/nss-systemd/nss-systemd.c
index 06ac335b29..758f3816e0 100644
--- a/src/nss-systemd/nss-systemd.c
+++ b/src/nss-systemd/nss-systemd.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <nss.h>
#include <pthread.h>
diff --git a/src/nss-systemd/nss-systemd.h b/src/nss-systemd/nss-systemd.h
index ffa75c12c4..e97b801575 100644
--- a/src/nss-systemd/nss-systemd.h
+++ b/src/nss-systemd/nss-systemd.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/nss-systemd/nss-systemd.sym b/src/nss-systemd/nss-systemd.sym
index f86d7643d1..7caf217144 100644
--- a/src/nss-systemd/nss-systemd.sym
+++ b/src/nss-systemd/nss-systemd.sym
@@ -1,5 +1,5 @@
/***
- SPDX-License-Identifier: LGPL-2.1+
+ SPDX-License-Identifier: LGPL-2.1-or-later
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
diff --git a/src/nss-systemd/userdb-glue.c b/src/nss-systemd/userdb-glue.c
index 2ac299d9a7..22af0fde60 100644
--- a/src/nss-systemd/userdb-glue.c
+++ b/src/nss-systemd/userdb-glue.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "env-util.h"
#include "fd-util.h"
diff --git a/src/nss-systemd/userdb-glue.h b/src/nss-systemd/userdb-glue.h
index 02add24b6b..cb0dcb9302 100644
--- a/src/nss-systemd/userdb-glue.h
+++ b/src/nss-systemd/userdb-glue.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <nss.h>
diff --git a/src/oom/meson.build b/src/oom/meson.build
index 78c92deff3..1ea6766d1a 100644
--- a/src/oom/meson.build
+++ b/src/oom/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
systemd_oomd_sources = files('''
oomd-manager-bus.c
@@ -29,6 +29,8 @@ if conf.get('ENABLE_OOMD') == 1
install_data('org.freedesktop.oom1.service',
install_dir : dbussystemservicedir)
- install_data('oomd.conf',
- install_dir : pkgsysconfdir)
+ if install_sysconfdir
+ install_data('oomd.conf',
+ install_dir : pkgsysconfdir)
+ endif
endif
diff --git a/src/oom/oomctl.c b/src/oom/oomctl.c
index 01e43d3560..dd393fcac9 100644
--- a/src/oom/oomctl.c
+++ b/src/oom/oomctl.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <getopt.h>
#include <unistd.h>
diff --git a/src/oom/oomd-manager-bus.c b/src/oom/oomd-manager-bus.c
index 0f39a60d9e..4ea2a338fc 100644
--- a/src/oom/oomd-manager-bus.c
+++ b/src/oom/oomd-manager-bus.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <linux/capability.h>
diff --git a/src/oom/oomd-manager-bus.h b/src/oom/oomd-manager-bus.h
index 6dd576d5af..7935b357a4 100644
--- a/src/oom/oomd-manager-bus.h
+++ b/src/oom/oomd-manager-bus.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "bus-object.h"
diff --git a/src/oom/oomd-manager.c b/src/oom/oomd-manager.c
index 6b75fc326d..fec96519e0 100644
--- a/src/oom/oomd-manager.c
+++ b/src/oom/oomd-manager.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "bus-log-control-api.h"
#include "bus-util.h"
diff --git a/src/oom/oomd-manager.h b/src/oom/oomd-manager.h
index b5c249799b..3f3eb5aa4b 100644
--- a/src/oom/oomd-manager.h
+++ b/src/oom/oomd-manager.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "conf-parser.h"
diff --git a/src/oom/oomd-util.c b/src/oom/oomd-util.c
index 6cd4ba4f93..cec656f6fa 100644
--- a/src/oom/oomd-util.c
+++ b/src/oom/oomd-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/xattr.h>
#include <unistd.h>
diff --git a/src/oom/oomd-util.h b/src/oom/oomd-util.h
index cfd717a018..87ecda80fb 100644
--- a/src/oom/oomd-util.h
+++ b/src/oom/oomd-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/oom/oomd.c b/src/oom/oomd.c
index 203395c1e7..8cf776ec0f 100644
--- a/src/oom/oomd.c
+++ b/src/oom/oomd.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <getopt.h>
diff --git a/src/oom/org.freedesktop.oom1.conf b/src/oom/org.freedesktop.oom1.conf
index 48b526f0aa..cc1143aa15 100644
--- a/src/oom/org.freedesktop.oom1.conf
+++ b/src/oom/org.freedesktop.oom1.conf
@@ -2,7 +2,7 @@
<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
-<!-- SPDX-License-Identifier: LGPL-2.1+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<busconfig>
diff --git a/src/oom/org.freedesktop.oom1.service b/src/oom/org.freedesktop.oom1.service
index 78150716ed..4fd5138d31 100644
--- a/src/oom/org.freedesktop.oom1.service
+++ b/src/oom/org.freedesktop.oom1.service
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/src/oom/test-oomd-util.c b/src/oom/test-oomd-util.c
index 5e7c187154..5df57107f9 100644
--- a/src/oom/test-oomd-util.c
+++ b/src/oom/test-oomd-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <unistd.h>
@@ -104,10 +104,6 @@ static void test_oomd_cgroup_context_acquire_and_insert(void) {
assert_se(oomd_cgroup_context_acquire(cgroup, &ctx) == 0);
assert_se(streq(ctx->path, cgroup));
- assert_se(ctx->memory_pressure.avg10 == 0);
- assert_se(ctx->memory_pressure.avg60 == 0);
- assert_se(ctx->memory_pressure.avg300 == 0);
- assert_se(ctx->memory_pressure.total == 0);
assert_se(ctx->current_memory_usage > 0);
assert_se(ctx->memory_min == 0);
assert_se(ctx->memory_low == 0);
diff --git a/src/partition/growfs.c b/src/partition/growfs.c
index 3f34ad3f7c..9406ae8373 100644
--- a/src/partition/growfs.c
+++ b/src/partition/growfs.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/partition/makefs.c b/src/partition/makefs.c
index 30dcef2075..fd924d2231 100644
--- a/src/partition/makefs.c
+++ b/src/partition/makefs.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <sys/file.h>
diff --git a/src/partition/meson.build b/src/partition/meson.build
index 3a75d5712d..d2729daba4 100644
--- a/src/partition/meson.build
+++ b/src/partition/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
systemd_repart_sources = files('''
repart.c
diff --git a/src/partition/repart.c b/src/partition/repart.c
index 4cf6a5fe3a..6db413ed5e 100644
--- a/src/partition/repart.c
+++ b/src/partition/repart.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#if HAVE_VALGRIND_MEMCHECK_H
#include <valgrind/memcheck.h>
@@ -918,16 +918,7 @@ static int config_parse_type(
}
static const Specifier specifier_table[] = {
- { 'm', specifier_machine_id, NULL },
- { 'b', specifier_boot_id, NULL },
- { 'H', specifier_host_name, NULL },
- { 'l', specifier_short_host_name, NULL },
- { 'v', specifier_kernel_release, NULL },
- { 'a', specifier_architecture, NULL },
- { 'o', specifier_os_id, NULL },
- { 'w', specifier_os_version_id, NULL },
- { 'B', specifier_os_build_id, NULL },
- { 'W', specifier_os_variant_id, NULL },
+ COMMON_SYSTEM_SPECIFIERS,
{}
};
@@ -3630,7 +3621,7 @@ static int parse_argv(int argc, char *argv[]) {
_cleanup_(erase_and_freep) char *k = NULL;
size_t n = 0;
- r = read_full_file_full(AT_FDCWD, optarg, READ_FULL_FILE_SECURE|READ_FULL_FILE_CONNECT_SOCKET, &k, &n);
+ r = read_full_file_full(AT_FDCWD, optarg, READ_FULL_FILE_SECURE|READ_FULL_FILE_CONNECT_SOCKET, NULL, &k, &n);
if (r < 0)
return log_error_errno(r, "Failed to read key file '%s': %m", optarg);
diff --git a/src/path/path.c b/src/path/path.c
index 33018999bf..5f1bb14e45 100644
--- a/src/path/path.c
+++ b/src/path/path.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <getopt.h>
diff --git a/src/portable/meson.build b/src/portable/meson.build
index dc57163460..8f866f57e4 100644
--- a/src/portable/meson.build
+++ b/src/portable/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
systemd_portabled_sources = files('''
portable.c
diff --git a/src/portable/org.freedesktop.portable1.conf b/src/portable/org.freedesktop.portable1.conf
index 31d41af12a..1343e1d544 100644
--- a/src/portable/org.freedesktop.portable1.conf
+++ b/src/portable/org.freedesktop.portable1.conf
@@ -2,7 +2,7 @@
<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
-<!-- SPDX-License-Identifier: LGPL-2.1+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<busconfig>
diff --git a/src/portable/org.freedesktop.portable1.policy b/src/portable/org.freedesktop.portable1.policy
index 50bb44c4a4..17e22b0155 100644
--- a/src/portable/org.freedesktop.portable1.policy
+++ b/src/portable/org.freedesktop.portable1.policy
@@ -2,7 +2,7 @@
<!DOCTYPE policyconfig PUBLIC "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
"http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
-<!-- SPDX-License-Identifier: LGPL-2.1+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<policyconfig>
diff --git a/src/portable/org.freedesktop.portable1.service b/src/portable/org.freedesktop.portable1.service
index eff37b0183..873746e2d8 100644
--- a/src/portable/org.freedesktop.portable1.service
+++ b/src/portable/org.freedesktop.portable1.service
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
[D-BUS Service]
Name=org.freedesktop.portable1
diff --git a/src/portable/portable.c b/src/portable/portable.c
index 55ea6759e9..ed7eac0291 100644
--- a/src/portable/portable.c
+++ b/src/portable/portable.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <linux/loop.h>
diff --git a/src/portable/portable.h b/src/portable/portable.h
index ad81b584a5..fd9605ed84 100644
--- a/src/portable/portable.h
+++ b/src/portable/portable.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/portable/portablectl.c b/src/portable/portablectl.c
index 7a4f60163e..457170e684 100644
--- a/src/portable/portablectl.c
+++ b/src/portable/portablectl.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <getopt.h>
diff --git a/src/portable/portabled-bus.c b/src/portable/portabled-bus.c
index 0169dcb463..cf50d58c71 100644
--- a/src/portable/portabled-bus.c
+++ b/src/portable/portabled-bus.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "btrfs-util.h"
diff --git a/src/portable/portabled-bus.h b/src/portable/portabled-bus.h
index 5810517ca3..e8e4c3a600 100644
--- a/src/portable/portabled-bus.h
+++ b/src/portable/portabled-bus.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/portable/portabled-image-bus.c b/src/portable/portabled-image-bus.c
index b9914f5940..eb0786e4bb 100644
--- a/src/portable/portabled-image-bus.c
+++ b/src/portable/portabled-image-bus.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <sys/stat.h>
diff --git a/src/portable/portabled-image-bus.h b/src/portable/portabled-image-bus.h
index 825dea2682..aa2a3ade77 100644
--- a/src/portable/portabled-image-bus.h
+++ b/src/portable/portabled-image-bus.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/portable/portabled-image.c b/src/portable/portabled-image.c
index e498ba318e..b025c20549 100644
--- a/src/portable/portabled-image.c
+++ b/src/portable/portabled-image.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "portable.h"
#include "portabled-image.h"
diff --git a/src/portable/portabled-image.h b/src/portable/portabled-image.h
index 26ce2f6b59..eeefffee64 100644
--- a/src/portable/portabled-image.h
+++ b/src/portable/portabled-image.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "hashmap.h"
diff --git a/src/portable/portabled-operation.c b/src/portable/portabled-operation.c
index 305c96ca6f..848b784908 100644
--- a/src/portable/portabled-operation.c
+++ b/src/portable/portabled-operation.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "fd-util.h"
diff --git a/src/portable/portabled-operation.h b/src/portable/portabled-operation.h
index 701f399bbb..f64740e9b8 100644
--- a/src/portable/portabled-operation.h
+++ b/src/portable/portabled-operation.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <sys/types.h>
diff --git a/src/portable/portabled.c b/src/portable/portabled.c
index 265f7a7440..f008f84e53 100644
--- a/src/portable/portabled.c
+++ b/src/portable/portabled.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/stat.h>
#include <sys/types.h>
diff --git a/src/portable/portabled.h b/src/portable/portabled.h
index 00461edfca..03a9996916 100644
--- a/src/portable/portabled.h
+++ b/src/portable/portabled.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/pstore/meson.build b/src/pstore/meson.build
index adbac24b54..6c0ab0563b 100644
--- a/src/pstore/meson.build
+++ b/src/pstore/meson.build
@@ -1,10 +1,10 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
systemd_pstore_sources = files('''
pstore.c
'''.split())
-if conf.get('ENABLE_PSTORE') == 1
+if conf.get('ENABLE_PSTORE') == 1 and install_sysconfdir
install_data('pstore.conf',
install_dir : pkgsysconfdir)
endif
diff --git a/src/pstore/pstore.c b/src/pstore/pstore.c
index 9b888a2baa..db8a71fbab 100644
--- a/src/pstore/pstore.c
+++ b/src/pstore/pstore.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/* Copyright © 2019 Oracle and/or its affiliates. */
@@ -304,7 +304,7 @@ static void process_dmesg_files(PStoreList *list) {
* output either. */
size_t needed = strlen(pe->dirent.d_name) + strlen(":\n") + pe->content_size + 1;
if (!GREEDY_REALLOC(dmesg, dmesg_allocated, dmesg_size + needed)) {
- log_warning_errno(ENOMEM, "Failed to write dmesg file: %m");
+ log_oom();
dmesg_bad = true;
continue;
}
diff --git a/src/quotacheck/quotacheck.c b/src/quotacheck/quotacheck.c
index 4e83fc83d5..d617b0bf3d 100644
--- a/src/quotacheck/quotacheck.c
+++ b/src/quotacheck/quotacheck.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stdbool.h>
diff --git a/src/random-seed/random-seed.c b/src/random-seed/random-seed.c
index 63ad977514..8f8766cdd7 100644
--- a/src/random-seed/random-seed.c
+++ b/src/random-seed/random-seed.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/rc-local-generator/rc-local-generator.c b/src/rc-local-generator/rc-local-generator.c
index 75bb875b79..ad8dfabb54 100644
--- a/src/rc-local-generator/rc-local-generator.c
+++ b/src/rc-local-generator/rc-local-generator.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stdio.h>
diff --git a/src/remount-fs/remount-fs.c b/src/remount-fs/remount-fs.c
index 7386f70529..19f5bd0d11 100644
--- a/src/remount-fs/remount-fs.c
+++ b/src/remount-fs/remount-fs.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <mntent.h>
diff --git a/src/reply-password/reply-password.c b/src/reply-password/reply-password.c
index 3a0eb5c4b8..a73334e2b8 100644
--- a/src/reply-password/reply-password.c
+++ b/src/reply-password/reply-password.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stddef.h>
diff --git a/src/resolve/dns-type.c b/src/resolve/dns-type.c
index c96f60a064..1f7334723e 100644
--- a/src/resolve/dns-type.c
+++ b/src/resolve/dns-type.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/socket.h>
#include <errno.h>
diff --git a/src/resolve/dns-type.h b/src/resolve/dns-type.h
index 8721536b5d..4370db9cff 100644
--- a/src/resolve/dns-type.h
+++ b/src/resolve/dns-type.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "macro.h"
diff --git a/src/resolve/meson.build b/src/resolve/meson.build
index a145117efd..8e7bad0659 100644
--- a/src/resolve/meson.build
+++ b/src/resolve/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
basic_dns_sources = files('''
resolved-dns-dnssec.c
@@ -169,8 +169,10 @@ if conf.get('ENABLE_RESOLVE') == 1
input : 'resolved.conf.in',
output : 'resolved.conf',
configuration : substs)
- install_data(resolved_conf,
- install_dir : pkgsysconfdir)
+ if install_sysconfdir
+ install_data(resolved_conf,
+ install_dir : pkgsysconfdir)
+ endif
install_data('resolv.conf',
install_dir : rootlibexecdir)
diff --git a/src/resolve/org.freedesktop.resolve1.policy b/src/resolve/org.freedesktop.resolve1.policy
index fd27327f48..08615ec6a4 100644
--- a/src/resolve/org.freedesktop.resolve1.policy
+++ b/src/resolve/org.freedesktop.resolve1.policy
@@ -3,7 +3,7 @@
"http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
<!--
- SPDX-License-Identifier: LGPL-2.1+
+ SPDX-License-Identifier: LGPL-2.1-or-later
This file is part of systemd.
diff --git a/src/resolve/org.freedesktop.resolve1.service b/src/resolve/org.freedesktop.resolve1.service
index 2c25a6129c..32a04f3b81 100644
--- a/src/resolve/org.freedesktop.resolve1.service
+++ b/src/resolve/org.freedesktop.resolve1.service
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/src/resolve/resolvconf-compat.c b/src/resolve/resolvconf-compat.c
index 8cd14711df..5bc936faa7 100644
--- a/src/resolve/resolvconf-compat.c
+++ b/src/resolve/resolvconf-compat.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <getopt.h>
#include <net/if.h>
diff --git a/src/resolve/resolvconf-compat.h b/src/resolve/resolvconf-compat.h
index 872add1d56..33a5318139 100644
--- a/src/resolve/resolvconf-compat.h
+++ b/src/resolve/resolvconf-compat.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int resolvconf_parse_argv(int argc, char *argv[]);
diff --git a/src/resolve/resolvectl.c b/src/resolve/resolvectl.c
index a2c5dcb418..b479335769 100644
--- a/src/resolve/resolvectl.c
+++ b/src/resolve/resolvectl.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <getopt.h>
#include <locale.h>
@@ -145,13 +145,12 @@ static void print_source(uint64_t flags, usec_t rtt) {
printf("\n%s-- Information acquired via", ansi_grey());
- if (flags != 0)
- printf(" protocol%s%s%s%s%s",
- flags & SD_RESOLVED_DNS ? " DNS" :"",
- flags & SD_RESOLVED_LLMNR_IPV4 ? " LLMNR/IPv4" : "",
- flags & SD_RESOLVED_LLMNR_IPV6 ? " LLMNR/IPv6" : "",
- flags & SD_RESOLVED_MDNS_IPV4 ? " mDNS/IPv4" : "",
- flags & SD_RESOLVED_MDNS_IPV6 ? " mDNS/IPv6" : "");
+ printf(" protocol%s%s%s%s%s",
+ flags & SD_RESOLVED_DNS ? " DNS" :"",
+ flags & SD_RESOLVED_LLMNR_IPV4 ? " LLMNR/IPv4" : "",
+ flags & SD_RESOLVED_LLMNR_IPV6 ? " LLMNR/IPv6" : "",
+ flags & SD_RESOLVED_MDNS_IPV4 ? " mDNS/IPv4" : "",
+ flags & SD_RESOLVED_MDNS_IPV6 ? " mDNS/IPv6" : "");
assert_se(format_timespan(rtt_str, sizeof(rtt_str), rtt, 100));
diff --git a/src/resolve/resolvectl.h b/src/resolve/resolvectl.h
index 6b3a1f8445..830c81d692 100644
--- a/src/resolve/resolvectl.h
+++ b/src/resolve/resolvectl.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <in-addr-util.h>
diff --git a/src/resolve/resolved-bus.c b/src/resolve/resolved-bus.c
index 724c3d4a6a..dca9b885fe 100644
--- a/src/resolve/resolved-bus.c
+++ b/src/resolve/resolved-bus.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "bus-common-errors.h"
@@ -1795,6 +1795,7 @@ static int bus_method_register_service(sd_bus_message *message, void *userdata,
_cleanup_(dnssd_service_freep) DnssdService *service = NULL;
_cleanup_(sd_bus_track_unrefp) sd_bus_track *bus_track = NULL;
_cleanup_free_ char *path = NULL;
+ _cleanup_free_ char *instance_name = NULL;
Manager *m = userdata;
DnssdService *s = NULL;
const char *name;
@@ -1835,10 +1836,6 @@ static int bus_method_register_service(sd_bus_message *message, void *userdata,
if (!dnssd_srv_type_is_valid(type))
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "DNS-SD service type '%s' is invalid", type);
- r = dnssd_render_instance_name(name_template, NULL);
- if (r < 0)
- return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "DNS-SD service name '%s' is invalid", name_template);
-
service->name = strdup(name);
if (!service->name)
return log_oom();
@@ -1851,6 +1848,10 @@ static int bus_method_register_service(sd_bus_message *message, void *userdata,
if (!service->type)
return log_oom();
+ r = dnssd_render_instance_name(service, &instance_name);
+ if (r < 0)
+ return r;
+
r = sd_bus_message_enter_container(message, SD_BUS_TYPE_ARRAY, "a{say}");
if (r < 0)
return r;
diff --git a/src/resolve/resolved-bus.h b/src/resolve/resolved-bus.h
index 28caa64a6b..8628d8ba6f 100644
--- a/src/resolve/resolved-bus.h
+++ b/src/resolve/resolved-bus.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "bus-object.h"
diff --git a/src/resolve/resolved-conf.c b/src/resolve/resolved-conf.c
index 0b7c5c8fc9..f2a3316251 100644
--- a/src/resolve/resolved-conf.c
+++ b/src/resolve/resolved-conf.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "conf-parser.h"
@@ -229,7 +229,20 @@ int config_parse_dnssd_service_name(
void *data,
void *userdata) {
+ static const Specifier specifier_table[] = {
+ { 'a', specifier_architecture, NULL },
+ { 'b', specifier_boot_id, NULL },
+ { 'B', specifier_os_build_id, NULL },
+ { 'H', specifier_host_name, NULL }, /* We will use specifier_dnssd_host_name(). */
+ { 'm', specifier_machine_id, NULL },
+ { 'o', specifier_os_id, NULL },
+ { 'v', specifier_kernel_release, NULL },
+ { 'w', specifier_os_version_id, NULL },
+ { 'W', specifier_os_variant_id, NULL },
+ {}
+ };
DnssdService *s = userdata;
+ _cleanup_free_ char *name = NULL;
int r;
assert(filename);
@@ -242,20 +255,21 @@ int config_parse_dnssd_service_name(
return 0;
}
- r = dnssd_render_instance_name(rvalue, NULL);
- if (r == -ENOMEM)
- return log_oom();
+ r = specifier_printf(rvalue, specifier_table, NULL, &name);
if (r < 0) {
log_syntax(unit, LOG_WARNING, filename, line, r,
- "Invalid service instance name template '%s', ignoring: %m", rvalue);
+ "Invalid service instance name template '%s', ignoring assignment: %m", rvalue);
return 0;
}
- r = free_and_strdup(&s->name_template, rvalue);
- if (r < 0)
- return log_oom();
+ if (!dns_service_name_is_valid(name)) {
+ log_syntax(unit, LOG_WARNING, filename, line, 0,
+ "Service instance name template '%s' renders to invalid name '%s'. Ignoring assignment.",
+ rvalue, name);
+ return 0;
+ }
- return 0;
+ return free_and_strdup_warn(&s->name_template, rvalue);
}
int config_parse_dnssd_service_type(
diff --git a/src/resolve/resolved-conf.h b/src/resolve/resolved-conf.h
index 09ae8d7a5b..07ce2591a9 100644
--- a/src/resolve/resolved-conf.h
+++ b/src/resolve/resolved-conf.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "conf-parser.h"
diff --git a/src/resolve/resolved-def.h b/src/resolve/resolved-def.h
index 63c24a023f..21eb6994e6 100644
--- a/src/resolve/resolved-def.h
+++ b/src/resolve/resolved-def.h
@@ -1,24 +1,34 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <inttypes.h>
#include "time-util.h"
-#define SD_RESOLVED_DNS (UINT64_C(1) << 0)
-#define SD_RESOLVED_LLMNR_IPV4 (UINT64_C(1) << 1)
-#define SD_RESOLVED_LLMNR_IPV6 (UINT64_C(1) << 2)
-#define SD_RESOLVED_MDNS_IPV4 (UINT64_C(1) << 3)
-#define SD_RESOLVED_MDNS_IPV6 (UINT64_C(1) << 4)
-#define SD_RESOLVED_NO_CNAME (UINT64_C(1) << 5)
-#define SD_RESOLVED_NO_TXT (UINT64_C(1) << 6)
-#define SD_RESOLVED_NO_ADDRESS (UINT64_C(1) << 7)
-#define SD_RESOLVED_NO_SEARCH (UINT64_C(1) << 8)
-#define SD_RESOLVED_AUTHENTICATED (UINT64_C(1) << 9)
-
-#define SD_RESOLVED_LLMNR (SD_RESOLVED_LLMNR_IPV4|SD_RESOLVED_LLMNR_IPV6)
-#define SD_RESOLVED_MDNS (SD_RESOLVED_MDNS_IPV4|SD_RESOLVED_MDNS_IPV6)
-
-#define SD_RESOLVED_PROTOCOLS_ALL (SD_RESOLVED_MDNS|SD_RESOLVED_LLMNR|SD_RESOLVED_DNS)
+/* Input + Output: The various protocols we can use */
+#define SD_RESOLVED_DNS (UINT64_C(1) << 0)
+#define SD_RESOLVED_LLMNR_IPV4 (UINT64_C(1) << 1)
+#define SD_RESOLVED_LLMNR_IPV6 (UINT64_C(1) << 2)
+#define SD_RESOLVED_MDNS_IPV4 (UINT64_C(1) << 3)
+#define SD_RESOLVED_MDNS_IPV6 (UINT64_C(1) << 4)
+
+/* Input: Don't follow CNAMEs/DNAMEs */
+#define SD_RESOLVED_NO_CNAME (UINT64_C(1) << 5)
+
+/* Input: When doing service (SRV) resolving, don't resolve associated mDNS-style TXT records */
+#define SD_RESOLVED_NO_TXT (UINT64_C(1) << 6)
+
+/* Input: When doing service (SRV) resolving, don't resolve A/AAA RR for included hostname */
+#define SD_RESOLVED_NO_ADDRESS (UINT64_C(1) << 7)
+
+/* Input: Don't apply search domain logic to request */
+#define SD_RESOLVED_NO_SEARCH (UINT64_C(1) << 8)
+
+/* Output: Result is authenticated */
+#define SD_RESOLVED_AUTHENTICATED (UINT64_C(1) << 9)
+
+#define SD_RESOLVED_LLMNR (SD_RESOLVED_LLMNR_IPV4|SD_RESOLVED_LLMNR_IPV6)
+#define SD_RESOLVED_MDNS (SD_RESOLVED_MDNS_IPV4|SD_RESOLVED_MDNS_IPV6)
+#define SD_RESOLVED_PROTOCOLS_ALL (SD_RESOLVED_MDNS|SD_RESOLVED_LLMNR|SD_RESOLVED_DNS)
#define SD_RESOLVED_QUERY_TIMEOUT_USEC (120 * USEC_PER_SEC)
diff --git a/src/resolve/resolved-dns-answer.c b/src/resolve/resolved-dns-answer.c
index d6fba7ead0..5b762a82e8 100644
--- a/src/resolve/resolved-dns-answer.c
+++ b/src/resolve/resolved-dns-answer.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdio.h>
@@ -11,6 +11,9 @@
DnsAnswer *dns_answer_new(size_t n) {
DnsAnswer *a;
+ if (n > UINT16_MAX) /* We can only place 64K RRs in an answer at max */
+ n = UINT16_MAX;
+
a = malloc0(offsetof(DnsAnswer, items) + sizeof(DnsAnswerItem) * n);
if (!a)
return NULL;
@@ -318,6 +321,11 @@ int dns_answer_merge(DnsAnswer *a, DnsAnswer *b, DnsAnswer **ret) {
assert(ret);
+ if (a == b) {
+ *ret = dns_answer_ref(a);
+ return 0;
+ }
+
if (dns_answer_size(a) <= 0) {
*ret = dns_answer_ref(b);
return 0;
@@ -624,12 +632,16 @@ int dns_answer_reserve(DnsAnswer **a, size_t n_free) {
return -EBUSY;
ns = (*a)->n_rrs + n_free;
+ if (ns > UINT16_MAX) /* Maximum number of RRs we can stick into a DNS packet section */
+ ns = UINT16_MAX;
if ((*a)->n_allocated >= ns)
return 0;
/* Allocate more than we need */
ns *= 2;
+ if (ns > UINT16_MAX)
+ ns = UINT16_MAX;
n = realloc(*a, offsetof(DnsAnswer, items) + sizeof(DnsAnswerItem) * ns);
if (!n)
@@ -702,17 +714,21 @@ void dns_answer_dump(DnsAnswer *answer, FILE *f) {
fputs(t, f);
- if (ifindex != 0 || flags & (DNS_ANSWER_AUTHENTICATED|DNS_ANSWER_CACHEABLE|DNS_ANSWER_SHARED_OWNER))
+ if (ifindex != 0 || flags != 0)
fputs("\t;", f);
if (ifindex != 0)
- printf(" ifindex=%i", ifindex);
+ fprintf(f, " ifindex=%i", ifindex);
if (flags & DNS_ANSWER_AUTHENTICATED)
fputs(" authenticated", f);
if (flags & DNS_ANSWER_CACHEABLE)
fputs(" cacheable", f);
if (flags & DNS_ANSWER_SHARED_OWNER)
fputs(" shared-owner", f);
+ if (flags & DNS_ANSWER_CACHE_FLUSH)
+ fputs(" cache-flush", f);
+ if (flags & DNS_ANSWER_GOODBYE)
+ fputs(" goodbye", f);
fputc('\n', f);
}
diff --git a/src/resolve/resolved-dns-answer.h b/src/resolve/resolved-dns-answer.h
index 47fc80e2b0..fd94c516de 100644
--- a/src/resolve/resolved-dns-answer.h
+++ b/src/resolve/resolved-dns-answer.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
typedef struct DnsAnswer DnsAnswer;
diff --git a/src/resolve/resolved-dns-cache.c b/src/resolve/resolved-dns-cache.c
index 683f113751..2407887f90 100644
--- a/src/resolve/resolved-dns-cache.c
+++ b/src/resolve/resolved-dns-cache.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <net/if.h>
@@ -436,20 +436,22 @@ static int dns_cache_put_positive(
dns_cache_make_space(c, 1);
- i = new0(DnsCacheItem, 1);
+ i = new(DnsCacheItem, 1);
if (!i)
return -ENOMEM;
- i->type = DNS_CACHE_POSITIVE;
- i->key = dns_resource_key_ref(rr->key);
- i->rr = dns_resource_record_ref(rr);
- i->until = calculate_until(rr, (uint32_t) -1, timestamp, false);
- i->authenticated = authenticated;
- i->shared_owner = shared_owner;
- i->ifindex = ifindex;
- i->owner_family = owner_family;
- i->owner_address = *owner_address;
- i->prioq_idx = PRIOQ_IDX_NULL;
+ *i = (DnsCacheItem) {
+ .type = DNS_CACHE_POSITIVE,
+ .key = dns_resource_key_ref(rr->key),
+ .rr = dns_resource_record_ref(rr),
+ .until = calculate_until(rr, (uint32_t) -1, timestamp, false),
+ .authenticated = authenticated,
+ .shared_owner = shared_owner,
+ .ifindex = ifindex,
+ .owner_family = owner_family,
+ .owner_address = *owner_address,
+ .prioq_idx = PRIOQ_IDX_NULL,
+ };
r = dns_cache_link_item(c, i);
if (r < 0)
@@ -521,21 +523,24 @@ static int dns_cache_put_negative(
dns_cache_make_space(c, 1);
- i = new0(DnsCacheItem, 1);
+ i = new(DnsCacheItem, 1);
if (!i)
return -ENOMEM;
- i->type =
- rcode == DNS_RCODE_SUCCESS ? DNS_CACHE_NODATA :
- rcode == DNS_RCODE_NXDOMAIN ? DNS_CACHE_NXDOMAIN : DNS_CACHE_RCODE;
+ *i = (DnsCacheItem) {
+ .type =
+ rcode == DNS_RCODE_SUCCESS ? DNS_CACHE_NODATA :
+ rcode == DNS_RCODE_NXDOMAIN ? DNS_CACHE_NXDOMAIN : DNS_CACHE_RCODE,
+ .authenticated = authenticated,
+ .owner_family = owner_family,
+ .owner_address = *owner_address,
+ .prioq_idx = PRIOQ_IDX_NULL,
+ .rcode = rcode,
+ };
+
i->until =
i->type == DNS_CACHE_RCODE ? timestamp + CACHE_TTL_STRANGE_RCODE_USEC :
calculate_until(soa, nsec_ttl, timestamp, true);
- i->authenticated = authenticated;
- i->owner_family = owner_family;
- i->owner_address = *owner_address;
- i->prioq_idx = PRIOQ_IDX_NULL;
- i->rcode = rcode;
if (i->type == DNS_CACHE_NXDOMAIN) {
/* NXDOMAIN entries should apply equally to all types, so we use ANY as
diff --git a/src/resolve/resolved-dns-cache.h b/src/resolve/resolved-dns-cache.h
index afd7d45db6..4ab213dc9c 100644
--- a/src/resolve/resolved-dns-cache.h
+++ b/src/resolve/resolved-dns-cache.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "hashmap.h"
diff --git a/src/resolve/resolved-dns-dnssec.c b/src/resolve/resolved-dns-dnssec.c
index 5a4f5c58b6..2f5776b5ed 100644
--- a/src/resolve/resolved-dns-dnssec.c
+++ b/src/resolve/resolved-dns-dnssec.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "dns-domain.h"
@@ -1380,7 +1380,7 @@ static int nsec3_hashed_domain_make(DnsResourceRecord *nsec3, const char *domain
* matches the wildcard domain.
*
* Based on this we can prove either the existence of the record in @key, or NXDOMAIN or NODATA, or
- * that there is no proof either way. The latter is the case if a the proof of non-existence of a given
+ * that there is no proof either way. The latter is the case if a proof of non-existence of a given
* name uses an NSEC3 record with the opt-out bit set. Lastly, if we are given insufficient NSEC3 records
* to conclude anything we indicate this by returning NO_RR. */
static int dnssec_test_nsec3(DnsAnswer *answer, DnsResourceKey *key, DnssecNsecResult *result, bool *authenticated, uint32_t *ttl) {
@@ -1813,6 +1813,8 @@ int dnssec_nsec_test(DnsAnswer *answer, DnsResourceKey *key, DnssecNsecResult *r
/* The following checks only make sense for NSEC RRs that are not expanded from a wildcard */
r = dns_resource_record_is_synthetic(rr);
+ if (r == -ENODATA) /* No signing RR known. */
+ continue;
if (r < 0)
return r;
if (r > 0)
diff --git a/src/resolve/resolved-dns-dnssec.h b/src/resolve/resolved-dns-dnssec.h
index 1f70861cd0..9c3c0dcfc9 100644
--- a/src/resolve/resolved-dns-dnssec.h
+++ b/src/resolve/resolved-dns-dnssec.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
typedef enum DnssecResult DnssecResult;
diff --git a/src/resolve/resolved-dns-packet.c b/src/resolve/resolved-dns-packet.c
index 6224039992..b4eb5efae7 100644
--- a/src/resolve/resolved-dns-packet.c
+++ b/src/resolve/resolved-dns-packet.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#if HAVE_GCRYPT
#include <gcrypt.h>
@@ -75,12 +75,16 @@ int dns_packet_new(
if (!p)
return -ENOMEM;
- p->size = p->rindex = DNS_PACKET_HEADER_SIZE;
- p->allocated = a;
- p->max_size = max_size;
- p->protocol = protocol;
- p->opt_start = p->opt_size = (size_t) -1;
- p->n_ref = 1;
+ *p = (DnsPacket) {
+ .n_ref = 1,
+ .protocol = protocol,
+ .size = DNS_PACKET_HEADER_SIZE,
+ .rindex = DNS_PACKET_HEADER_SIZE,
+ .allocated = a,
+ .max_size = max_size,
+ .opt_start = (size_t) -1,
+ .opt_size = (size_t) -1,
+ };
*ret = p;
diff --git a/src/resolve/resolved-dns-packet.h b/src/resolve/resolved-dns-packet.h
index 964aff38c4..0c804d6d2b 100644
--- a/src/resolve/resolved-dns-packet.h
+++ b/src/resolve/resolved-dns-packet.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <netinet/ip.h>
@@ -221,14 +221,6 @@ void dns_packet_rewind(DnsPacket *p, size_t idx);
int dns_packet_skip_question(DnsPacket *p);
int dns_packet_extract(DnsPacket *p);
-static inline bool DNS_PACKET_SHALL_CACHE(DnsPacket *p) {
- /* Never cache data originating from localhost, under the
- * assumption, that it's coming from a locally DNS forwarder
- * or server, that is caching on its own. */
-
- return in_addr_is_localhost(p->family, &p->sender) == 0;
-}
-
/* https://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml#dns-parameters-6 */
enum {
DNS_RCODE_SUCCESS = 0,
diff --git a/src/resolve/resolved-dns-query.c b/src/resolve/resolved-dns-query.c
index 1eff893b21..c4d620ac8b 100644
--- a/src/resolve/resolved-dns-query.c
+++ b/src/resolve/resolved-dns-query.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "dns-domain.h"
@@ -21,12 +21,14 @@ static int dns_query_candidate_new(DnsQueryCandidate **ret, DnsQuery *q, DnsScop
assert(q);
assert(s);
- c = new0(DnsQueryCandidate, 1);
+ c = new(DnsQueryCandidate, 1);
if (!c)
return -ENOMEM;
- c->query = q;
- c->scope = s;
+ *c = (DnsQueryCandidate) {
+ .query = q,
+ .scope = s,
+ };
LIST_PREPEND(candidates_by_query, q->candidates, c);
LIST_PREPEND(candidates_by_scope, s->query_candidates, c);
@@ -280,8 +282,7 @@ void dns_query_candidate_notify(DnsQueryCandidate *c) {
return;
fail:
- log_warning_errno(r, "Failed to follow search domains: %m");
- c->error_code = r;
+ c->error_code = log_warning_errno(r, "Failed to follow search domains: %m");
dns_query_ready(c->query);
}
@@ -413,17 +414,19 @@ int dns_query_new(
if (m->n_dns_queries >= QUERIES_MAX)
return -EBUSY;
- q = new0(DnsQuery, 1);
+ q = new(DnsQuery, 1);
if (!q)
return -ENOMEM;
- q->question_utf8 = dns_question_ref(question_utf8);
- q->question_idna = dns_question_ref(question_idna);
- q->ifindex = ifindex;
- q->flags = flags;
- q->answer_dnssec_result = _DNSSEC_RESULT_INVALID;
- q->answer_protocol = _DNS_PROTOCOL_INVALID;
- q->answer_family = AF_UNSPEC;
+ *q = (DnsQuery) {
+ .question_utf8 = dns_question_ref(question_utf8),
+ .question_idna = dns_question_ref(question_idna),
+ .ifindex = ifindex,
+ .flags = flags,
+ .answer_dnssec_result = _DNSSEC_RESULT_INVALID,
+ .answer_protocol = _DNS_PROTOCOL_INVALID,
+ .answer_family = AF_UNSPEC,
+ };
/* First dump UTF8 question */
DNS_QUESTION_FOREACH(key, question_utf8)
diff --git a/src/resolve/resolved-dns-query.h b/src/resolve/resolved-dns-query.h
index 36a9b7be8f..8056aa3727 100644
--- a/src/resolve/resolved-dns-query.h
+++ b/src/resolve/resolved-dns-query.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/resolve/resolved-dns-question.c b/src/resolve/resolved-dns-question.c
index 62833efa0e..047170899d 100644
--- a/src/resolve/resolved-dns-question.c
+++ b/src/resolve/resolved-dns-question.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "dns-domain.h"
@@ -8,7 +8,8 @@
DnsQuestion *dns_question_new(size_t n) {
DnsQuestion *q;
- assert(n > 0);
+ if (n > UINT16_MAX) /* We can only place 64K key in an question section at max */
+ n = UINT16_MAX;
q = malloc0(offsetof(DnsQuestion, keys) + sizeof(DnsResourceKey*) * n);
if (!q)
diff --git a/src/resolve/resolved-dns-question.h b/src/resolve/resolved-dns-question.h
index 0803f49b8b..a6444b0baf 100644
--- a/src/resolve/resolved-dns-question.h
+++ b/src/resolve/resolved-dns-question.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
typedef struct DnsQuestion DnsQuestion;
diff --git a/src/resolve/resolved-dns-rr.c b/src/resolve/resolved-dns-rr.c
index 63ed9ebf10..219f66451a 100644
--- a/src/resolve/resolved-dns-rr.c
+++ b/src/resolve/resolved-dns-rr.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <math.h>
@@ -97,14 +97,16 @@ DnsResourceKey* dns_resource_key_new_consume(uint16_t class, uint16_t type, char
assert(name);
- k = new0(DnsResourceKey, 1);
+ k = new(DnsResourceKey, 1);
if (!k)
return NULL;
- k->n_ref = 1;
- k->class = class;
- k->type = type;
- k->_name = name;
+ *k = (DnsResourceKey) {
+ .n_ref = 1,
+ .class = class,
+ .type = type,
+ ._name = name,
+ };
return k;
}
@@ -372,14 +374,17 @@ bool dns_resource_key_reduce(DnsResourceKey **a, DnsResourceKey **b) {
DnsResourceRecord* dns_resource_record_new(DnsResourceKey *key) {
DnsResourceRecord *rr;
- rr = new0(DnsResourceRecord, 1);
+ rr = new(DnsResourceRecord, 1);
if (!rr)
return NULL;
- rr->n_ref = 1;
- rr->key = dns_resource_key_ref(key);
- rr->expiry = USEC_INFINITY;
- rr->n_skip_labels_signer = rr->n_skip_labels_source = (unsigned) -1;
+ *rr = (DnsResourceRecord) {
+ .n_ref = 1,
+ .key = dns_resource_key_ref(key),
+ .expiry = USEC_INFINITY,
+ .n_skip_labels_signer = (unsigned) -1,
+ .n_skip_labels_source = (unsigned) -1,
+ };
return rr;
}
@@ -1645,7 +1650,7 @@ DnsResourceRecord *dns_resource_record_copy(DnsResourceRecord *rr) {
return NULL;
copy->nsec3.salt_size = rr->nsec3.salt_size;
copy->nsec3.next_hashed_name = memdup(rr->nsec3.next_hashed_name, rr->nsec3.next_hashed_name_size);
- if (!copy->nsec3.next_hashed_name_size)
+ if (!copy->nsec3.next_hashed_name)
return NULL;
copy->nsec3.next_hashed_name_size = rr->nsec3.next_hashed_name_size;
copy->nsec3.types = bitmap_copy(rr->nsec3.types);
diff --git a/src/resolve/resolved-dns-rr.h b/src/resolve/resolved-dns-rr.h
index 6c824f7962..59b3a70179 100644
--- a/src/resolve/resolved-dns-rr.h
+++ b/src/resolve/resolved-dns-rr.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <netinet/in.h>
diff --git a/src/resolve/resolved-dns-scope.c b/src/resolve/resolved-dns-scope.c
index 2ad4544002..3e2fc16f10 100644
--- a/src/resolve/resolved-dns-scope.c
+++ b/src/resolve/resolved-dns-scope.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <netinet/tcp.h>
@@ -589,6 +589,7 @@ DnsScopeMatch dns_scope_good_domain(
if ((dns_name_is_single_label(domain) && /* only resolve single label names via LLMNR */
!is_gateway_hostname(domain) && /* don't resolve "gateway" with LLMNR, let nss-myhostname handle this */
+ dns_name_equal(domain, "local") == 0 && /* don't resolve "local" with LLMNR, it's the top-level domain of mDNS after all, see above */
manager_is_own_hostname(s->manager, domain) <= 0)) /* never resolve the local hostname via LLMNR */
return DNS_SCOPE_YES_BASE + 1; /* Return +1, as we consider ourselves authoritative
* for single-label names, i.e. one label. This is
@@ -1156,12 +1157,16 @@ bool dns_scope_name_wants_search_domain(DnsScope *s, const char *name) {
bool dns_scope_network_good(DnsScope *s) {
/* Checks whether the network is in good state for lookups on this scope. For mDNS/LLMNR/Classic DNS scopes
* bound to links this is easy, as they don't even exist if the link isn't in a suitable state. For the global
- * DNS scope we check whether there are any links that are up and have an address. */
+ * DNS scope we check whether there are any links that are up and have an address.
+ *
+ * Note that Linux routing is complex and even systems that superficially have no IPv4 address might
+ * be able to route IPv4 (and similar for IPv6), hence let's make a check here independent of address
+ * family. */
if (s->link)
return true;
- return manager_routable(s->manager, AF_UNSPEC);
+ return manager_routable(s->manager);
}
int dns_scope_ifindex(DnsScope *s) {
diff --git a/src/resolve/resolved-dns-scope.h b/src/resolve/resolved-dns-scope.h
index 8b1a958551..de05c0838f 100644
--- a/src/resolve/resolved-dns-scope.h
+++ b/src/resolve/resolved-dns-scope.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "list.h"
diff --git a/src/resolve/resolved-dns-search-domain.c b/src/resolve/resolved-dns-search-domain.c
index 425a463349..a01f3dced9 100644
--- a/src/resolve/resolved-dns-search-domain.c
+++ b/src/resolve/resolved-dns-search-domain.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "dns-domain.h"
@@ -33,14 +33,16 @@ int dns_search_domain_new(
return -E2BIG;
}
- d = new0(DnsSearchDomain, 1);
+ d = new(DnsSearchDomain, 1);
if (!d)
return -ENOMEM;
- d->n_ref = 1;
- d->manager = m;
- d->type = type;
- d->name = TAKE_PTR(normalized);
+ *d = (DnsSearchDomain) {
+ .n_ref = 1,
+ .manager = m,
+ .type = type,
+ .name = TAKE_PTR(normalized),
+ };
switch (type) {
diff --git a/src/resolve/resolved-dns-search-domain.h b/src/resolve/resolved-dns-search-domain.h
index df0b2f1404..ea91a4e2a4 100644
--- a/src/resolve/resolved-dns-search-domain.h
+++ b/src/resolve/resolved-dns-search-domain.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "list.h"
diff --git a/src/resolve/resolved-dns-server.c b/src/resolve/resolved-dns-server.c
index d9ac44f9b5..8112374062 100644
--- a/src/resolve/resolved-dns-server.c
+++ b/src/resolve/resolved-dns-server.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "sd-messages.h"
diff --git a/src/resolve/resolved-dns-server.h b/src/resolve/resolved-dns-server.h
index 464e8dc251..20afee74ac 100644
--- a/src/resolve/resolved-dns-server.h
+++ b/src/resolve/resolved-dns-server.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "in-addr-util.h"
diff --git a/src/resolve/resolved-dns-stream.c b/src/resolve/resolved-dns-stream.c
index e6f72f00b4..1aab089934 100644
--- a/src/resolve/resolved-dns-stream.c
+++ b/src/resolve/resolved-dns-stream.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <netinet/tcp.h>
#include <unistd.h>
diff --git a/src/resolve/resolved-dns-stream.h b/src/resolve/resolved-dns-stream.h
index de193931c1..dba06447cf 100644
--- a/src/resolve/resolved-dns-stream.h
+++ b/src/resolve/resolved-dns-stream.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-event.h"
diff --git a/src/resolve/resolved-dns-stub.c b/src/resolve/resolved-dns-stub.c
index 445fa86dd1..086d3d9d18 100644
--- a/src/resolve/resolved-dns-stub.c
+++ b/src/resolve/resolved-dns-stub.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <net/if_arp.h>
@@ -15,6 +15,9 @@
* IP and UDP header sizes */
#define ADVERTISE_DATAGRAM_SIZE_MAX (65536U-14U-20U-8U)
+/* On the extra stubs, use a more conservative choice */
+#define ADVERTISE_EXTRA_DATAGRAM_SIZE_MAX DNS_PACKET_UNICAST_SIZE_LARGE_MAX
+
static int manager_dns_stub_fd_extra(Manager *m, DnsStubListenerExtra *l, int type);
static void dns_stub_listener_extra_hash_func(const DnsStubListenerExtra *a, struct siphash *state) {
@@ -155,14 +158,15 @@ static int dns_stub_finish_reply_packet(
bool tc, /* set the Truncated bit? */
bool add_opt, /* add an OPT RR to this packet? */
bool edns0_do, /* set the EDNS0 DNSSEC OK bit? */
- bool ad) { /* set the DNSSEC authenticated data bit? */
+ bool ad, /* set the DNSSEC authenticated data bit? */
+ uint16_t max_udp_size) { /* The maximum UDP datagram size to advertise to clients */
int r;
assert(p);
if (add_opt) {
- r = dns_packet_append_opt(p, ADVERTISE_DATAGRAM_SIZE_MAX, edns0_do, /* include_rfc6975 = */ false, rcode, NULL);
+ r = dns_packet_append_opt(p, max_udp_size, edns0_do, /* include_rfc6975 = */ false, rcode, NULL);
if (r == -EMSGSIZE) /* Hit the size limit? then indicate truncation */
tc = true;
else if (r < 0)
@@ -245,7 +249,15 @@ static int dns_stub_send_failure(
if (r < 0)
return log_debug_errno(r, "Failed to make failure packet: %m");
- r = dns_stub_finish_reply_packet(reply, DNS_PACKET_ID(p), rcode, false, !!p->opt, DNS_PACKET_DO(p), authenticated);
+ r = dns_stub_finish_reply_packet(
+ reply,
+ DNS_PACKET_ID(p),
+ rcode,
+ /* truncated = */ false,
+ !!p->opt,
+ DNS_PACKET_DO(p),
+ authenticated,
+ l ? ADVERTISE_EXTRA_DATAGRAM_SIZE_MAX : ADVERTISE_DATAGRAM_SIZE_MAX);
if (r < 0)
return log_debug_errno(r, "Failed to build failure packet: %m");
@@ -290,7 +302,8 @@ static void dns_stub_query_complete(DnsQuery *q) {
truncated,
!!q->request_dns_packet->opt,
DNS_PACKET_DO(q->request_dns_packet),
- dns_query_fully_authenticated(q));
+ dns_query_fully_authenticated(q),
+ q->stub_listener_extra ? ADVERTISE_EXTRA_DATAGRAM_SIZE_MAX : ADVERTISE_DATAGRAM_SIZE_MAX);
if (r < 0) {
log_debug_errno(r, "Failed to finish reply packet: %m");
break;
diff --git a/src/resolve/resolved-dns-stub.h b/src/resolve/resolved-dns-stub.h
index 6686de5e58..072f2130e5 100644
--- a/src/resolve/resolved-dns-stub.h
+++ b/src/resolve/resolved-dns-stub.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "hash-funcs.h"
diff --git a/src/resolve/resolved-dns-synthesize.c b/src/resolve/resolved-dns-synthesize.c
index f65116c3b4..67f0dda246 100644
--- a/src/resolve/resolved-dns-synthesize.c
+++ b/src/resolve/resolved-dns-synthesize.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "hostname-util.h"
diff --git a/src/resolve/resolved-dns-synthesize.h b/src/resolve/resolved-dns-synthesize.h
index 0d9d17bac7..fb624589d7 100644
--- a/src/resolve/resolved-dns-synthesize.h
+++ b/src/resolve/resolved-dns-synthesize.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "resolved-dns-answer.h"
diff --git a/src/resolve/resolved-dns-transaction.c b/src/resolve/resolved-dns-transaction.c
index 36f57eae62..7a2d8723a0 100644
--- a/src/resolve/resolved-dns-transaction.c
+++ b/src/resolve/resolved-dns-transaction.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "sd-messages.h"
@@ -194,19 +194,20 @@ int dns_transaction_new(DnsTransaction **ret, DnsScope *s, DnsResourceKey *key)
if (r < 0)
return r;
- t = new0(DnsTransaction, 1);
+ t = new(DnsTransaction, 1);
if (!t)
return -ENOMEM;
- t->dns_udp_fd = -1;
- t->answer_source = _DNS_TRANSACTION_SOURCE_INVALID;
- t->answer_dnssec_result = _DNSSEC_RESULT_INVALID;
- t->answer_nsec_ttl = (uint32_t) -1;
- t->key = dns_resource_key_ref(key);
- t->current_feature_level = _DNS_SERVER_FEATURE_LEVEL_INVALID;
- t->clamp_feature_level = _DNS_SERVER_FEATURE_LEVEL_INVALID;
-
- t->id = pick_new_id(s->manager);
+ *t = (DnsTransaction) {
+ .dns_udp_fd = -1,
+ .answer_source = _DNS_TRANSACTION_SOURCE_INVALID,
+ .answer_dnssec_result = _DNSSEC_RESULT_INVALID,
+ .answer_nsec_ttl = (uint32_t) -1,
+ .key = dns_resource_key_ref(key),
+ .current_feature_level = _DNS_SERVER_FEATURE_LEVEL_INVALID,
+ .clamp_feature_level = _DNS_SERVER_FEATURE_LEVEL_INVALID,
+ .id = pick_new_id(s->manager),
+ };
r = hashmap_put(s->manager->dns_transactions, UINT_TO_PTR(t->id), t);
if (r < 0) {
@@ -681,11 +682,9 @@ static void dns_transaction_cache_answer(DnsTransaction *t) {
if (t->scope->manager->enable_cache == DNS_CACHE_MODE_NO)
return;
- /* We never cache if this packet is from the local host, under
- * the assumption that a locally running DNS server would
- * cache this anyway, and probably knows better when to flush
- * the cache then we could. */
- if (!DNS_PACKET_SHALL_CACHE(t->received))
+ /* Packet from localhost? */
+ if (!t->scope->manager->cache_from_localhost &&
+ in_addr_is_localhost(t->received->family, &t->received->sender) != 0)
return;
dns_cache_put(&t->scope->cache,
@@ -1112,58 +1111,52 @@ void dns_transaction_process_reply(DnsTransaction *t, DnsPacket *p) {
if (r > 0) /* Transaction got restarted... */
return;
- if (IN_SET(t->scope->protocol, DNS_PROTOCOL_DNS, DNS_PROTOCOL_LLMNR, DNS_PROTOCOL_MDNS)) {
-
- /* When dealing with protocols other than mDNS only consider responses with
- * equivalent query section to the request. For mDNS this check doesn't make
- * sense, because the section 6 of RFC6762 states that "Multicast DNS responses MUST NOT
- * contain any questions in the Question Section". */
- if (t->scope->protocol != DNS_PROTOCOL_MDNS) {
- r = dns_packet_is_reply_for(p, t->key);
- if (r < 0)
- goto fail;
- if (r == 0) {
- dns_transaction_complete(t, DNS_TRANSACTION_INVALID_REPLY);
- return;
- }
+ /* When dealing with protocols other than mDNS only consider responses with equivalent query section
+ * to the request. For mDNS this check doesn't make sense, because the section 6 of RFC6762 states
+ * that "Multicast DNS responses MUST NOT contain any questions in the Question Section". */
+ if (t->scope->protocol != DNS_PROTOCOL_MDNS) {
+ r = dns_packet_is_reply_for(p, t->key);
+ if (r < 0)
+ goto fail;
+ if (r == 0) {
+ dns_transaction_complete(t, DNS_TRANSACTION_INVALID_REPLY);
+ return;
}
+ }
- /* Install the answer as answer to the transaction */
- dns_answer_unref(t->answer);
- t->answer = dns_answer_ref(p->answer);
- t->answer_rcode = DNS_PACKET_RCODE(p);
- t->answer_dnssec_result = _DNSSEC_RESULT_INVALID;
- t->answer_authenticated = false;
+ /* Install the answer as answer to the transaction */
+ dns_answer_unref(t->answer);
+ t->answer = dns_answer_ref(p->answer);
+ t->answer_rcode = DNS_PACKET_RCODE(p);
+ t->answer_dnssec_result = _DNSSEC_RESULT_INVALID;
+ t->answer_authenticated = false;
- r = dns_transaction_fix_rcode(t);
- if (r < 0)
- goto fail;
+ r = dns_transaction_fix_rcode(t);
+ if (r < 0)
+ goto fail;
- /* Block GC while starting requests for additional DNSSEC RRs */
- t->block_gc++;
- r = dns_transaction_request_dnssec_keys(t);
- t->block_gc--;
+ /* Block GC while starting requests for additional DNSSEC RRs */
+ t->block_gc++;
+ r = dns_transaction_request_dnssec_keys(t);
+ t->block_gc--;
- /* Maybe the transaction is ready for GC'ing now? If so, free it and return. */
- if (!dns_transaction_gc(t))
- return;
+ /* Maybe the transaction is ready for GC'ing now? If so, free it and return. */
+ if (!dns_transaction_gc(t))
+ return;
- /* Requesting additional keys might have resulted in
- * this transaction to fail, since the auxiliary
- * request failed for some reason. If so, we are not
- * in pending state anymore, and we should exit
- * quickly. */
- if (t->state != DNS_TRANSACTION_PENDING)
- return;
- if (r < 0)
- goto fail;
- if (r > 0) {
- /* There are DNSSEC transactions pending now. Update the state accordingly. */
- t->state = DNS_TRANSACTION_VALIDATING;
- dns_transaction_close_connection(t);
- dns_transaction_stop_timeout(t);
- return;
- }
+ /* Requesting additional keys might have resulted in this transaction to fail, since the auxiliary
+ * request failed for some reason. If so, we are not in pending state anymore, and we should exit
+ * quickly. */
+ if (t->state != DNS_TRANSACTION_PENDING)
+ return;
+ if (r < 0)
+ goto fail;
+ if (r > 0) {
+ /* There are DNSSEC transactions pending now. Update the state accordingly. */
+ t->state = DNS_TRANSACTION_VALIDATING;
+ dns_transaction_close_connection(t);
+ dns_transaction_stop_timeout(t);
+ return;
}
dns_transaction_process_dnssec(t);
@@ -2122,7 +2115,7 @@ int dns_transaction_request_dnssec_keys(DnsTransaction *t) {
return r;
if (r == 0) {
/* Hmm, so this SOA RR doesn't match our original question. In this case, maybe this is
- * a negative reply, and we need the a SOA RR's TTL in order to cache a negative entry?
+ * a negative reply, and we need the SOA RR's TTL in order to cache a negative entry?
* If so, we need to validate it, too. */
r = dns_answer_match_key(t->answer, t->key, NULL);
diff --git a/src/resolve/resolved-dns-transaction.h b/src/resolve/resolved-dns-transaction.h
index 167541806a..7f0b8e7847 100644
--- a/src/resolve/resolved-dns-transaction.h
+++ b/src/resolve/resolved-dns-transaction.h
@@ -1,7 +1,8 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-event.h"
+#include "in-addr-util.h"
typedef struct DnsTransaction DnsTransaction;
typedef enum DnsTransactionState DnsTransactionState;
diff --git a/src/resolve/resolved-dns-trust-anchor.c b/src/resolve/resolved-dns-trust-anchor.c
index ad5061c2bd..3e5d25586c 100644
--- a/src/resolve/resolved-dns-trust-anchor.c
+++ b/src/resolve/resolved-dns-trust-anchor.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "sd-messages.h"
diff --git a/src/resolve/resolved-dns-trust-anchor.h b/src/resolve/resolved-dns-trust-anchor.h
index df49777e26..14047ec7eb 100644
--- a/src/resolve/resolved-dns-trust-anchor.h
+++ b/src/resolve/resolved-dns-trust-anchor.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
typedef struct DnsTrustAnchor DnsTrustAnchor;
diff --git a/src/resolve/resolved-dns-zone.c b/src/resolve/resolved-dns-zone.c
index f8e1491f8b..00eb6725f9 100644
--- a/src/resolve/resolved-dns-zone.c
+++ b/src/resolve/resolved-dns-zone.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "dns-domain.h"
@@ -231,13 +231,15 @@ int dns_zone_put(DnsZone *z, DnsScope *s, DnsResourceRecord *rr, bool probe) {
if (r < 0)
return r;
- i = new0(DnsZoneItem, 1);
+ i = new(DnsZoneItem, 1);
if (!i)
return -ENOMEM;
- i->scope = s;
- i->rr = dns_resource_record_ref(rr);
- i->probing_enabled = probe;
+ *i = (DnsZoneItem) {
+ .scope = s,
+ .rr = dns_resource_record_ref(rr),
+ .probing_enabled = probe,
+ };
r = dns_zone_link_item(z, i);
if (r < 0)
diff --git a/src/resolve/resolved-dns-zone.h b/src/resolve/resolved-dns-zone.h
index 2719b2188a..1f5a6e0571 100644
--- a/src/resolve/resolved-dns-zone.h
+++ b/src/resolve/resolved-dns-zone.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "hashmap.h"
diff --git a/src/resolve/resolved-dnssd-bus.c b/src/resolve/resolved-dnssd-bus.c
index 7798746e67..d908cc64e6 100644
--- a/src/resolve/resolved-dnssd-bus.c
+++ b/src/resolve/resolved-dnssd-bus.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "bus-polkit.h"
diff --git a/src/resolve/resolved-dnssd-bus.h b/src/resolve/resolved-dnssd-bus.h
index 403455e89f..f396e23cd7 100644
--- a/src/resolve/resolved-dnssd-bus.h
+++ b/src/resolve/resolved-dnssd-bus.h
@@ -1,3 +1,5 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
#pragma once
#include "sd-bus.h"
diff --git a/src/resolve/resolved-dnssd.c b/src/resolve/resolved-dnssd.c
index d7f3a5adef..8b40639728 100644
--- a/src/resolve/resolved-dnssd.c
+++ b/src/resolve/resolved-dnssd.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "conf-files.h"
#include "conf-parser.h"
@@ -155,33 +155,35 @@ static int specifier_dnssd_host_name(char specifier, const void *data, const voi
return 0;
}
-int dnssd_render_instance_name(const char *name_template, char **ret_name) {
+int dnssd_render_instance_name(DnssdService *s, char **ret_name) {
static const Specifier specifier_table[] = {
- { 'm', specifier_machine_id, NULL },
+ { 'a', specifier_architecture, NULL },
{ 'b', specifier_boot_id, NULL },
+ { 'B', specifier_os_build_id, NULL },
{ 'H', specifier_dnssd_host_name, NULL },
- { 'v', specifier_kernel_release, NULL },
- { 'a', specifier_architecture, NULL },
+ { 'm', specifier_machine_id, NULL },
{ 'o', specifier_os_id, NULL },
+ { 'v', specifier_kernel_release, NULL },
{ 'w', specifier_os_version_id, NULL },
- { 'B', specifier_os_build_id, NULL },
{ 'W', specifier_os_variant_id, NULL },
{}
};
_cleanup_free_ char *name = NULL;
int r;
- assert(name_template);
+ assert(s);
+ assert(s->name_template);
- r = specifier_printf(name_template, specifier_table, NULL, &name);
+ r = specifier_printf(s->name_template, specifier_table, s, &name);
if (r < 0)
- return r;
+ return log_debug_errno(r, "Failed to replace specifiers: %m");
if (!dns_service_name_is_valid(name))
- return -EINVAL;
+ return log_debug_errno(SYNTHETIC_ERRNO(EINVAL),
+ "Service instance name '%s' is invalid.",
+ name);
- if (ret_name)
- *ret_name = TAKE_PTR(name);
+ *ret_name = TAKE_PTR(name);
return 0;
}
@@ -225,7 +227,7 @@ int dnssd_update_rrs(DnssdService *s) {
LIST_FOREACH(items, txt_data, s->txt_data_items)
txt_data->rr = dns_resource_record_unref(txt_data->rr);
- r = dnssd_render_instance_name(s->name_template, &n);
+ r = dnssd_render_instance_name(s, &n);
if (r < 0)
return r;
diff --git a/src/resolve/resolved-dnssd.h b/src/resolve/resolved-dnssd.h
index 304bd890c9..8fe755687e 100644
--- a/src/resolve/resolved-dnssd.h
+++ b/src/resolve/resolved-dnssd.h
@@ -1,3 +1,5 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
#pragma once
#include "list.h"
@@ -51,7 +53,7 @@ DnssdTxtData *dnssd_txtdata_free_all(DnssdTxtData *txt_data);
DEFINE_TRIVIAL_CLEANUP_FUNC(DnssdService*, dnssd_service_free);
DEFINE_TRIVIAL_CLEANUP_FUNC(DnssdTxtData*, dnssd_txtdata_free);
-int dnssd_render_instance_name(const char *name_template, char **ret_name);
+int dnssd_render_instance_name(DnssdService *s, char **ret_name);
int dnssd_load(Manager *manager);
int dnssd_txt_item_new_from_string(const char *key, const char *value, DnsTxtItem **ret_item);
int dnssd_txt_item_new_from_data(const char *key, const void *value, const size_t size, DnsTxtItem **ret_item);
diff --git a/src/resolve/resolved-dnstls-gnutls.c b/src/resolve/resolved-dnstls-gnutls.c
index 6b7db7ef8c..d3edd350b3 100644
--- a/src/resolve/resolved-dnstls-gnutls.c
+++ b/src/resolve/resolved-dnstls-gnutls.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#if !ENABLE_DNS_OVER_TLS || !DNS_OVER_TLS_USE_GNUTLS
#error This source file requires DNS-over-TLS to be enabled and GnuTLS to be available.
diff --git a/src/resolve/resolved-dnstls-gnutls.h b/src/resolve/resolved-dnstls-gnutls.h
index d4da2017c3..dc1255fbb9 100644
--- a/src/resolve/resolved-dnstls-gnutls.h
+++ b/src/resolve/resolved-dnstls-gnutls.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#if !ENABLE_DNS_OVER_TLS || !DNS_OVER_TLS_USE_GNUTLS
diff --git a/src/resolve/resolved-dnstls-openssl.c b/src/resolve/resolved-dnstls-openssl.c
index f95738649d..defddb5237 100644
--- a/src/resolve/resolved-dnstls-openssl.c
+++ b/src/resolve/resolved-dnstls-openssl.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#if !ENABLE_DNS_OVER_TLS || !DNS_OVER_TLS_USE_OPENSSL
#error This source file requires DNS-over-TLS to be enabled and OpenSSL to be available.
diff --git a/src/resolve/resolved-dnstls-openssl.h b/src/resolve/resolved-dnstls-openssl.h
index 8100d2ba6b..a73b77bb58 100644
--- a/src/resolve/resolved-dnstls-openssl.h
+++ b/src/resolve/resolved-dnstls-openssl.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#if !ENABLE_DNS_OVER_TLS || !DNS_OVER_TLS_USE_OPENSSL
diff --git a/src/resolve/resolved-dnstls.h b/src/resolve/resolved-dnstls.h
index 6199335b70..b638d61ec7 100644
--- a/src/resolve/resolved-dnstls.h
+++ b/src/resolve/resolved-dnstls.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#if ENABLE_DNS_OVER_TLS
diff --git a/src/resolve/resolved-etc-hosts.c b/src/resolve/resolved-etc-hosts.c
index 6a7f749957..e784213e91 100644
--- a/src/resolve/resolved-etc-hosts.c
+++ b/src/resolve/resolved-etc-hosts.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/stat.h>
#include <sys/types.h>
@@ -80,11 +80,13 @@ static int parse_line(EtcHosts *hosts, unsigned nr, const char *line) {
if (r < 0)
return log_oom();
- item = new0(EtcHostsItem, 1);
+ item = new(EtcHostsItem, 1);
if (!item)
return log_oom();
- item->address = address;
+ *item = (EtcHostsItem) {
+ .address = address,
+ };
r = hashmap_put(hosts->by_address, &item->address, item);
if (r < 0) {
diff --git a/src/resolve/resolved-etc-hosts.h b/src/resolve/resolved-etc-hosts.h
index caf32a53dd..459b310185 100644
--- a/src/resolve/resolved-etc-hosts.h
+++ b/src/resolve/resolved-etc-hosts.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "resolved-manager.h"
diff --git a/src/resolve/resolved-gperf.gperf b/src/resolve/resolved-gperf.gperf
index b54fa1ba99..2da273ab1e 100644
--- a/src/resolve/resolved-gperf.gperf
+++ b/src/resolve/resolved-gperf.gperf
@@ -30,3 +30,4 @@ Resolve.DNSStubListener, config_parse_dns_stub_listener_mode, 0,
Resolve.ReadEtcHosts, config_parse_bool, 0, offsetof(Manager, read_etc_hosts)
Resolve.ResolveUnicastSingleLabel, config_parse_bool, 0, offsetof(Manager, resolve_unicast_single_label)
Resolve.DNSStubListenerExtra, config_parse_dns_stub_listener_extra, 0, offsetof(Manager, dns_extra_stub_listeners)
+Resolve.CacheFromLocalhost, config_parse_bool, 0, offsetof(Manager, cache_from_localhost)
diff --git a/src/resolve/resolved-link-bus.c b/src/resolve/resolved-link-bus.c
index 3665d69f3c..6a693ffe7b 100644
--- a/src/resolve/resolved-link-bus.c
+++ b/src/resolve/resolved-link-bus.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <net/if.h>
#include <netinet/in.h>
diff --git a/src/resolve/resolved-link-bus.h b/src/resolve/resolved-link-bus.h
index fc85ff855c..b882df5c40 100644
--- a/src/resolve/resolved-link-bus.h
+++ b/src/resolve/resolved-link-bus.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/resolve/resolved-link.c b/src/resolve/resolved-link.c
index 79d84dde1f..cb5be90c75 100644
--- a/src/resolve/resolved-link.c
+++ b/src/resolve/resolved-link.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <linux/if.h>
#include <unistd.h>
@@ -818,14 +818,16 @@ int link_address_new(Link *l, LinkAddress **ret, int family, const union in_addr
assert(l);
assert(in_addr);
- a = new0(LinkAddress, 1);
+ a = new(LinkAddress, 1);
if (!a)
return -ENOMEM;
- a->family = family;
- a->in_addr = *in_addr;
+ *a = (LinkAddress) {
+ .family = family,
+ .in_addr = *in_addr,
+ .link = l,
+ };
- a->link = l;
LIST_PREPEND(addresses, l->addresses, a);
l->n_addresses++;
diff --git a/src/resolve/resolved-link.h b/src/resolve/resolved-link.h
index 44d489ce47..3f08e98351 100644
--- a/src/resolve/resolved-link.h
+++ b/src/resolve/resolved-link.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-netlink.h"
diff --git a/src/resolve/resolved-llmnr.c b/src/resolve/resolved-llmnr.c
index 03f2764d58..2ddf08815a 100644
--- a/src/resolve/resolved-llmnr.c
+++ b/src/resolve/resolved-llmnr.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <netinet/in.h>
#include <resolv.h>
diff --git a/src/resolve/resolved-llmnr.h b/src/resolve/resolved-llmnr.h
index a3b12cf38c..4cdd2606e6 100644
--- a/src/resolve/resolved-llmnr.h
+++ b/src/resolve/resolved-llmnr.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "resolved-manager.h"
diff --git a/src/resolve/resolved-manager.c b/src/resolve/resolved-manager.c
index e2d8d285e8..0331922124 100644
--- a/src/resolve/resolved-manager.c
+++ b/src/resolve/resolved-manager.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <netinet/in.h>
@@ -918,7 +918,11 @@ static int write_loop(int fd, void *message, size_t length) {
int manager_write(Manager *m, int fd, DnsPacket *p) {
int r;
- log_debug("Sending %s packet with id %" PRIu16 ".", DNS_PACKET_QR(p) ? "response" : "query", DNS_PACKET_ID(p));
+ log_debug("Sending %s%s packet with id %" PRIu16 " of size %zu.",
+ DNS_PACKET_TC(p) ? "truncated (!) " : "",
+ DNS_PACKET_QR(p) ? "response" : "query",
+ DNS_PACKET_ID(p),
+ p->size);
r = write_loop(fd, DNS_PACKET_DATA(p), p->size);
if (r < 0)
@@ -1054,7 +1058,12 @@ int manager_send(
assert(port > 0);
assert(p);
- log_debug("Sending %s packet with id %" PRIu16 " on interface %i/%s.", DNS_PACKET_QR(p) ? "response" : "query", DNS_PACKET_ID(p), ifindex, af_to_name(family));
+ log_debug("Sending %s%s packet with id %" PRIu16 " on interface %i/%s of size %zu.",
+ DNS_PACKET_TC(p) ? "truncated (!) " : "",
+ DNS_PACKET_QR(p) ? "response" : "query",
+ DNS_PACKET_ID(p),
+ ifindex, af_to_name(family),
+ p->size);
if (family == AF_INET)
return manager_ipv4_send(m, fd, ifindex, &destination->in, port, source ? &source->in : NULL, p);
@@ -1417,15 +1426,15 @@ void manager_dnssec_verdict(Manager *m, DnssecVerdict verdict, const DnsResource
m->n_dnssec_verdict[verdict]++;
}
-bool manager_routable(Manager *m, int family) {
+bool manager_routable(Manager *m) {
Link *l;
assert(m);
- /* Returns true if the host has at least one interface with a routable address of the specified type */
+ /* Returns true if the host has at least one interface with a routable address (regardless if IPv4 or IPv6) */
HASHMAP_FOREACH(l, m->links)
- if (link_relevant(l, family, false))
+ if (link_relevant(l, AF_UNSPEC, false))
return true;
return false;
diff --git a/src/resolve/resolved-manager.h b/src/resolve/resolved-manager.h
index c30052195a..739683cbb5 100644
--- a/src/resolve/resolved-manager.h
+++ b/src/resolve/resolved-manager.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <sys/stat.h>
@@ -39,6 +39,7 @@ struct Manager {
DnssecMode dnssec_mode;
DnsOverTlsMode dns_over_tls_mode;
DnsCacheMode enable_cache;
+ bool cache_from_localhost;
DnsStubListenerMode dns_stub_listener_mode;
#if ENABLE_DNS_OVER_TLS
@@ -185,7 +186,7 @@ DnsOverTlsMode manager_get_dns_over_tls_mode(Manager *m);
void manager_dnssec_verdict(Manager *m, DnssecVerdict verdict, const DnsResourceKey *key);
-bool manager_routable(Manager *m, int family);
+bool manager_routable(Manager *m);
void manager_flush_caches(Manager *m);
void manager_reset_server_features(Manager *m);
diff --git a/src/resolve/resolved-mdns.c b/src/resolve/resolved-mdns.c
index 921720febf..a093747198 100644
--- a/src/resolve/resolved-mdns.c
+++ b/src/resolve/resolved-mdns.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <resolv.h>
#include <netinet/in.h>
diff --git a/src/resolve/resolved-mdns.h b/src/resolve/resolved-mdns.h
index 2f69478681..38ef1808df 100644
--- a/src/resolve/resolved-mdns.h
+++ b/src/resolve/resolved-mdns.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "resolved-manager.h"
diff --git a/src/resolve/resolved-resolv-conf.c b/src/resolve/resolved-resolv-conf.c
index ba8f18f82d..6fd9959daf 100644
--- a/src/resolve/resolved-resolv-conf.c
+++ b/src/resolve/resolved-resolv-conf.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <resolv.h>
#include <sys/stat.h>
@@ -156,6 +156,8 @@ int manager_read_resolv_conf(Manager *m) {
r = manager_parse_search_domains_and_warn(m, a);
if (r < 0)
log_warning_errno(r, "Failed to parse search domain string '%s', ignoring.", a);
+
+ continue;
}
log_syntax(NULL, LOG_DEBUG, "/etc/resolv.conf", n, 0, "Ignoring resolv.conf line: %s", l);
diff --git a/src/resolve/resolved-resolv-conf.h b/src/resolve/resolved-resolv-conf.h
index 584d25c0f7..3734e28a99 100644
--- a/src/resolve/resolved-resolv-conf.h
+++ b/src/resolve/resolved-resolv-conf.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "resolved-manager.h"
diff --git a/src/resolve/resolved-varlink.c b/src/resolve/resolved-varlink.c
index 2f11a78091..70d6f9056d 100644
--- a/src/resolve/resolved-varlink.c
+++ b/src/resolve/resolved-varlink.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "in-addr-util.h"
#include "resolved-dns-synthesize.h"
diff --git a/src/resolve/resolved-varlink.h b/src/resolve/resolved-varlink.h
index cfb90e5e5e..57fdfe909b 100644
--- a/src/resolve/resolved-varlink.h
+++ b/src/resolve/resolved-varlink.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "resolved-manager.h"
diff --git a/src/resolve/resolved.c b/src/resolve/resolved.c
index 16477f28d6..fd9be30dcf 100644
--- a/src/resolve/resolved.c
+++ b/src/resolve/resolved.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/stat.h>
#include <sys/types.h>
diff --git a/src/resolve/resolved.conf.in b/src/resolve/resolved.conf.in
index 93279b3dff..e1d06c0fb1 100644
--- a/src/resolve/resolved.conf.in
+++ b/src/resolve/resolved.conf.in
@@ -24,6 +24,7 @@
#MulticastDNS=@DEFAULT_MDNS_MODE@
#LLMNR=@DEFAULT_LLMNR_MODE@
#Cache=yes
+#CacheFromLocalhost=no
#DNSStubListener=yes
#DNSStubListenerExtra=
#ReadEtcHosts=yes
diff --git a/src/resolve/test-dns-packet.c b/src/resolve/test-dns-packet.c
index bdd96aa9a2..47c7d671cd 100644
--- a/src/resolve/test-dns-packet.c
+++ b/src/resolve/test-dns-packet.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <net/if.h>
diff --git a/src/resolve/test-dnssec-complex.c b/src/resolve/test-dnssec-complex.c
index ccd62a14d1..e21eb86756 100644
--- a/src/resolve/test-dnssec-complex.c
+++ b/src/resolve/test-dnssec-complex.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <netinet/ip.h>
diff --git a/src/resolve/test-dnssec.c b/src/resolve/test-dnssec.c
index 213177d4da..0275d0eb94 100644
--- a/src/resolve/test-dnssec.c
+++ b/src/resolve/test-dnssec.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <arpa/inet.h>
#if HAVE_GCRYPT
diff --git a/src/resolve/test-resolve-tables.c b/src/resolve/test-resolve-tables.c
index 2230a66ef5..e4f4e14cc3 100644
--- a/src/resolve/test-resolve-tables.c
+++ b/src/resolve/test-resolve-tables.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "dns-type.h"
#include "resolved-dns-dnssec.h"
diff --git a/src/resolve/test-resolved-etc-hosts.c b/src/resolve/test-resolved-etc-hosts.c
index 721bf8732e..045952e825 100644
--- a/src/resolve/test-resolved-etc-hosts.c
+++ b/src/resolve/test-resolved-etc-hosts.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <arpa/inet.h>
#include <netinet/in.h>
diff --git a/src/resolve/test-resolved-packet.c b/src/resolve/test-resolved-packet.c
index c9a511beba..cd93b1c23d 100644
--- a/src/resolve/test-resolved-packet.c
+++ b/src/resolve/test-resolved-packet.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "log.h"
#include "resolved-dns-packet.h"
diff --git a/src/rfkill/rfkill.c b/src/rfkill/rfkill.c
index 501982819a..c38716842b 100644
--- a/src/rfkill/rfkill.c
+++ b/src/rfkill/rfkill.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <linux/rfkill.h>
diff --git a/src/run-generator/run-generator.c b/src/run-generator/run-generator.c
index a149b9c9c2..11e7d9e831 100644
--- a/src/run-generator/run-generator.c
+++ b/src/run-generator/run-generator.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <unistd.h>
diff --git a/src/run/run.c b/src/run/run.c
index 4179624313..b4cc6fe7f8 100644
--- a/src/run/run.c
+++ b/src/run/run.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <getopt.h>
#include <stdio.h>
diff --git a/src/shared/acl-util.c b/src/shared/acl-util.c
index 7a2767c37b..ef4b88361f 100644
--- a/src/shared/acl-util.c
+++ b/src/shared/acl-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stdbool.h>
diff --git a/src/shared/acl-util.h b/src/shared/acl-util.h
index b6a6f480f8..837e8699ee 100644
--- a/src/shared/acl-util.h
+++ b/src/shared/acl-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <errno.h>
diff --git a/src/shared/acpi-fpdt.c b/src/shared/acpi-fpdt.c
index 38c464c912..1124453799 100644
--- a/src/shared/acpi-fpdt.c
+++ b/src/shared/acpi-fpdt.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/shared/acpi-fpdt.h b/src/shared/acpi-fpdt.h
index 8d288937ef..9eef92bc35 100644
--- a/src/shared/acpi-fpdt.h
+++ b/src/shared/acpi-fpdt.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <time-util.h>
diff --git a/src/shared/apparmor-util.c b/src/shared/apparmor-util.c
index c4a4b04d22..68e1c557c0 100644
--- a/src/shared/apparmor-util.c
+++ b/src/shared/apparmor-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stddef.h>
diff --git a/src/shared/apparmor-util.h b/src/shared/apparmor-util.h
index 7fbaf90dcc..8007aeb695 100644
--- a/src/shared/apparmor-util.h
+++ b/src/shared/apparmor-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/shared/ask-password-api.c b/src/shared/ask-password-api.c
index a727b98e7c..eea1434be9 100644
--- a/src/shared/ask-password-api.c
+++ b/src/shared/ask-password-api.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
@@ -334,9 +334,6 @@ int ask_password_plymouth(
p += k;
- if (p < 1)
- continue;
-
if (buffer[0] == 5) {
if (flags & ASK_PASSWORD_ACCEPT_CACHED) {
diff --git a/src/shared/ask-password-api.h b/src/shared/ask-password-api.h
index 528e3d0197..7aac5e5976 100644
--- a/src/shared/ask-password-api.h
+++ b/src/shared/ask-password-api.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/shared/barrier.c b/src/shared/barrier.c
index 80b597b5ca..9c93d61a3c 100644
--- a/src/shared/barrier.c
+++ b/src/shared/barrier.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/shared/barrier.h b/src/shared/barrier.h
index 0eb3d2792e..b11dce4fc0 100644
--- a/src/shared/barrier.h
+++ b/src/shared/barrier.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/shared/base-filesystem.c b/src/shared/base-filesystem.c
index 657407da2d..1d05409086 100644
--- a/src/shared/base-filesystem.c
+++ b/src/shared/base-filesystem.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/shared/base-filesystem.h b/src/shared/base-filesystem.h
index 39d970811d..a33975f3b5 100644
--- a/src/shared/base-filesystem.h
+++ b/src/shared/base-filesystem.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <sys/types.h>
diff --git a/src/shared/binfmt-util.c b/src/shared/binfmt-util.c
index 0229726b42..724d7f27d9 100644
--- a/src/shared/binfmt-util.c
+++ b/src/shared/binfmt-util.c
@@ -1,3 +1,5 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
#include <sys/stat.h>
#include <sys/statvfs.h>
#include <sys/vfs.h>
diff --git a/src/shared/binfmt-util.h b/src/shared/binfmt-util.h
index 70feaad314..2f008d12ff 100644
--- a/src/shared/binfmt-util.h
+++ b/src/shared/binfmt-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int disable_binfmt(void);
diff --git a/src/shared/bitmap.c b/src/shared/bitmap.c
index 2eba72dd59..5d450c8832 100644
--- a/src/shared/bitmap.c
+++ b/src/shared/bitmap.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stddef.h>
diff --git a/src/shared/bitmap.h b/src/shared/bitmap.h
index 312cee9ce7..1c305a2c41 100644
--- a/src/shared/bitmap.h
+++ b/src/shared/bitmap.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/shared/blkid-util.h b/src/shared/blkid-util.h
index eb07a88ba9..3f38e9b308 100644
--- a/src/shared/blkid-util.h
+++ b/src/shared/blkid-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#if HAVE_BLKID
diff --git a/src/shared/bond-util.c b/src/shared/bond-util.c
index 2296ecd9de..e04b201155 100644
--- a/src/shared/bond-util.c
+++ b/src/shared/bond-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "bond-util.h"
#include "string-table.h"
diff --git a/src/shared/bond-util.h b/src/shared/bond-util.h
index 66f86e77fa..a8f9ecb454 100644
--- a/src/shared/bond-util.h
+++ b/src/shared/bond-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <netinet/in.h>
diff --git a/src/shared/boot-timestamps.c b/src/shared/boot-timestamps.c
index 4ce146033d..8786e89c0e 100644
--- a/src/shared/boot-timestamps.c
+++ b/src/shared/boot-timestamps.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "acpi-fpdt.h"
#include "boot-timestamps.h"
diff --git a/src/shared/boot-timestamps.h b/src/shared/boot-timestamps.h
index 4e648f18e2..55b7ad19aa 100644
--- a/src/shared/boot-timestamps.h
+++ b/src/shared/boot-timestamps.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <time-util.h>
diff --git a/src/shared/bootspec.c b/src/shared/bootspec.c
index 189fa25639..e50408ab53 100644
--- a/src/shared/bootspec.c
+++ b/src/shared/bootspec.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdio.h>
#include <linux/magic.h>
diff --git a/src/shared/bootspec.h b/src/shared/bootspec.h
index 1075a41d54..1557bd0680 100644
--- a/src/shared/bootspec.h
+++ b/src/shared/bootspec.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
diff --git a/src/shared/bpf-program.c b/src/shared/bpf-program.c
index e5c9df4004..067f26d2f0 100644
--- a/src/shared/bpf-program.c
+++ b/src/shared/bpf-program.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <sys/stat.h>
@@ -8,7 +8,6 @@
#include "alloc-util.h"
#include "bpf-program.h"
#include "fd-util.h"
-#include "log.h"
#include "memory-util.h"
#include "missing_syscall.h"
#include "path-util.h"
@@ -18,7 +17,7 @@ int bpf_program_new(uint32_t prog_type, BPFProgram **ret) {
p = new0(BPFProgram, 1);
if (!p)
- return log_oom();
+ return -ENOMEM;
p->n_ref = 1;
p->prog_type = prog_type;
diff --git a/src/shared/bpf-program.h b/src/shared/bpf-program.h
index a21589eb1f..eef77f9d8e 100644
--- a/src/shared/bpf-program.h
+++ b/src/shared/bpf-program.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <linux/bpf.h>
diff --git a/src/shared/bridge-util.c b/src/shared/bridge-util.c
index 83a94ef104..e1a8bcb680 100644
--- a/src/shared/bridge-util.c
+++ b/src/shared/bridge-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "bridge-util.h"
#include "string-table.h"
diff --git a/src/shared/bridge-util.h b/src/shared/bridge-util.h
index 5b1c3e9ea9..c9b02d822f 100644
--- a/src/shared/bridge-util.h
+++ b/src/shared/bridge-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <netinet/in.h>
diff --git a/src/shared/bus-get-properties.c b/src/shared/bus-get-properties.c
index 5a123bb8f3..32f68d5e6a 100644
--- a/src/shared/bus-get-properties.c
+++ b/src/shared/bus-get-properties.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "bus-get-properties.h"
#include "rlimit-util.h"
diff --git a/src/shared/bus-get-properties.h b/src/shared/bus-get-properties.h
index f3934a86a2..9832c0d067 100644
--- a/src/shared/bus-get-properties.h
+++ b/src/shared/bus-get-properties.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/shared/bus-locator.c b/src/shared/bus-locator.c
index 2a5aa74677..3754d1dd68 100644
--- a/src/shared/bus-locator.c
+++ b/src/shared/bus-locator.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "bus-locator.h"
#include "macro.h"
diff --git a/src/shared/bus-locator.h b/src/shared/bus-locator.h
index 2b892360b8..fe3b876527 100644
--- a/src/shared/bus-locator.h
+++ b/src/shared/bus-locator.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/shared/bus-log-control-api.c b/src/shared/bus-log-control-api.c
index 7c487ada9f..06e6697a33 100644
--- a/src/shared/bus-log-control-api.c
+++ b/src/shared/bus-log-control-api.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "bus-get-properties.h"
diff --git a/src/shared/bus-log-control-api.h b/src/shared/bus-log-control-api.h
index 64eaa540f4..85f60a7a2f 100644
--- a/src/shared/bus-log-control-api.h
+++ b/src/shared/bus-log-control-api.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/shared/bus-map-properties.c b/src/shared/bus-map-properties.c
index 5cc8ce222d..84608567aa 100644
--- a/src/shared/bus-map-properties.c
+++ b/src/shared/bus-map-properties.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "bus-map-properties.h"
#include "alloc-util.h"
diff --git a/src/shared/bus-map-properties.h b/src/shared/bus-map-properties.h
index 94242ecc3f..2a766e3cc0 100644
--- a/src/shared/bus-map-properties.h
+++ b/src/shared/bus-map-properties.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/shared/bus-message-util.c b/src/shared/bus-message-util.c
index 85e1e98e19..19500a552d 100644
--- a/src/shared/bus-message-util.c
+++ b/src/shared/bus-message-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "bus-message-util.h"
diff --git a/src/shared/bus-message-util.h b/src/shared/bus-message-util.h
index 98ad035ee4..b82c0830a0 100644
--- a/src/shared/bus-message-util.h
+++ b/src/shared/bus-message-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/shared/bus-object.c b/src/shared/bus-object.c
index 217d43d333..f2e53913fb 100644
--- a/src/shared/bus-object.c
+++ b/src/shared/bus-object.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "bus-introspect.h"
#include "bus-object.h"
diff --git a/src/shared/bus-object.h b/src/shared/bus-object.h
index 8add854e59..145bbd268f 100644
--- a/src/shared/bus-object.h
+++ b/src/shared/bus-object.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/shared/bus-polkit.c b/src/shared/bus-polkit.c
index 0722b1a118..14122e0876 100644
--- a/src/shared/bus-polkit.c
+++ b/src/shared/bus-polkit.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "bus-internal.h"
#include "bus-message.h"
diff --git a/src/shared/bus-polkit.h b/src/shared/bus-polkit.h
index 29b3923047..91a88a2807 100644
--- a/src/shared/bus-polkit.h
+++ b/src/shared/bus-polkit.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/shared/bus-print-properties.c b/src/shared/bus-print-properties.c
index bf7d050fa3..4cea25073d 100644
--- a/src/shared/bus-print-properties.c
+++ b/src/shared/bus-print-properties.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "bus-print-properties.h"
#include "cap-list.h"
diff --git a/src/shared/bus-print-properties.h b/src/shared/bus-print-properties.h
index 1c21dff2c8..a4574758e5 100644
--- a/src/shared/bus-print-properties.h
+++ b/src/shared/bus-print-properties.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/shared/bus-unit-procs.c b/src/shared/bus-unit-procs.c
index 5ae54efb19..3e97be9671 100644
--- a/src/shared/bus-unit-procs.c
+++ b/src/shared/bus-unit-procs.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "bus-unit-procs.h"
#include "hashmap.h"
diff --git a/src/shared/bus-unit-procs.h b/src/shared/bus-unit-procs.h
index 1cb5ca6271..78c55697ae 100644
--- a/src/shared/bus-unit-procs.h
+++ b/src/shared/bus-unit-procs.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/shared/bus-unit-util.c b/src/shared/bus-unit-util.c
index 79c2e0cf19..2bab2299fb 100644
--- a/src/shared/bus-unit-util.c
+++ b/src/shared/bus-unit-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "bus-error.h"
@@ -2074,7 +2074,8 @@ static int bus_append_timer_property(sd_bus_message *m, const char *field, const
"RemainAfterElapse",
"Persistent",
"OnTimezoneChange",
- "OnClockChange"))
+ "OnClockChange",
+ "FixedRandomDelay"))
return bus_append_parse_boolean(m, field, eq);
if (STR_IN_SET(field, "AccuracySec",
diff --git a/src/shared/bus-unit-util.h b/src/shared/bus-unit-util.h
index 544767b033..999caf65cd 100644
--- a/src/shared/bus-unit-util.h
+++ b/src/shared/bus-unit-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/shared/bus-util.c b/src/shared/bus-util.c
index aa5dadba45..fbda218b3b 100644
--- a/src/shared/bus-util.c
+++ b/src/shared/bus-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/shared/bus-util.h b/src/shared/bus-util.h
index 1a1389fd1e..a02d82a52e 100644
--- a/src/shared/bus-util.h
+++ b/src/shared/bus-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/shared/bus-wait-for-jobs.c b/src/shared/bus-wait-for-jobs.c
index eb33ba2340..b2a9e031ce 100644
--- a/src/shared/bus-wait-for-jobs.c
+++ b/src/shared/bus-wait-for-jobs.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "bus-wait-for-jobs.h"
diff --git a/src/shared/bus-wait-for-jobs.h b/src/shared/bus-wait-for-jobs.h
index 614a2c9de9..0155887455 100644
--- a/src/shared/bus-wait-for-jobs.h
+++ b/src/shared/bus-wait-for-jobs.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/shared/bus-wait-for-units.c b/src/shared/bus-wait-for-units.c
index 7592dcf18d..4f1c505bd3 100644
--- a/src/shared/bus-wait-for-units.c
+++ b/src/shared/bus-wait-for-units.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "bus-map-properties.h"
#include "bus-wait-for-units.h"
diff --git a/src/shared/bus-wait-for-units.h b/src/shared/bus-wait-for-units.h
index a20f3d8fd7..f7ab666f15 100644
--- a/src/shared/bus-wait-for-units.h
+++ b/src/shared/bus-wait-for-units.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "macro.h"
diff --git a/src/shared/calendarspec.c b/src/shared/calendarspec.c
index bcc51f973c..7162592fbf 100644
--- a/src/shared/calendarspec.c
+++ b/src/shared/calendarspec.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <ctype.h>
#include <errno.h>
diff --git a/src/shared/calendarspec.h b/src/shared/calendarspec.h
index 0a5d95b4b1..3bfe82d7f6 100644
--- a/src/shared/calendarspec.h
+++ b/src/shared/calendarspec.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
/* A structure for specifying (possibly repetitive) points in calendar
diff --git a/src/shared/cgroup-setup.c b/src/shared/cgroup-setup.c
index e9995645eb..f197f715c7 100644
--- a/src/shared/cgroup-setup.c
+++ b/src/shared/cgroup-setup.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <ftw.h>
#include <unistd.h>
diff --git a/src/shared/cgroup-setup.h b/src/shared/cgroup-setup.h
index 43ce32e30d..7eabce2451 100644
--- a/src/shared/cgroup-setup.h
+++ b/src/shared/cgroup-setup.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/shared/cgroup-show.c b/src/shared/cgroup-show.c
index b8bf3c2726..f7c24f8860 100644
--- a/src/shared/cgroup-show.c
+++ b/src/shared/cgroup-show.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <dirent.h>
#include <errno.h>
diff --git a/src/shared/cgroup-show.h b/src/shared/cgroup-show.h
index dfb26f8291..fbbf7663b3 100644
--- a/src/shared/cgroup-show.h
+++ b/src/shared/cgroup-show.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/shared/chown-recursive.c b/src/shared/chown-recursive.c
index cb75d9a11b..4563729b7c 100644
--- a/src/shared/chown-recursive.c
+++ b/src/shared/chown-recursive.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <sys/stat.h>
diff --git a/src/shared/chown-recursive.h b/src/shared/chown-recursive.h
index 14a79733f5..00038c3b32 100644
--- a/src/shared/chown-recursive.h
+++ b/src/shared/chown-recursive.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <sys/types.h>
diff --git a/src/shared/clean-ipc.c b/src/shared/clean-ipc.c
index 5d8f66c602..77fe227e36 100644
--- a/src/shared/clean-ipc.c
+++ b/src/shared/clean-ipc.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/shared/clean-ipc.h b/src/shared/clean-ipc.h
index eaff47d4b7..ed348fb601 100644
--- a/src/shared/clean-ipc.h
+++ b/src/shared/clean-ipc.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <sys/types.h>
diff --git a/src/shared/clock-util.c b/src/shared/clock-util.c
index 8669547c13..2caa70fa52 100644
--- a/src/shared/clock-util.c
+++ b/src/shared/clock-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/shared/clock-util.h b/src/shared/clock-util.h
index b9db54eac9..3f1ae7abfc 100644
--- a/src/shared/clock-util.h
+++ b/src/shared/clock-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <time.h>
diff --git a/src/shared/condition.c b/src/shared/condition.c
index af5d48f55b..b2ec690bc3 100644
--- a/src/shared/condition.c
+++ b/src/shared/condition.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/shared/condition.h b/src/shared/condition.h
index e5ad43f945..0d9754eb85 100644
--- a/src/shared/condition.h
+++ b/src/shared/condition.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/shared/conf-parser.c b/src/shared/conf-parser.c
index a39a2cd3c7..e8b3dc78f9 100644
--- a/src/shared/conf-parser.c
+++ b/src/shared/conf-parser.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <limits.h>
diff --git a/src/shared/conf-parser.h b/src/shared/conf-parser.h
index f32f4b74ee..b194821937 100644
--- a/src/shared/conf-parser.h
+++ b/src/shared/conf-parser.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <errno.h>
@@ -35,7 +35,7 @@ typedef enum ConfigParseFlags {
/* Prototype for a parser for a specific configuration setting */
typedef int (*ConfigParserCallback)(CONFIG_PARSER_ARGUMENTS);
-/* A macro declaring the a function prototype, following the typedef above, simply because it's so cumbersomely long
+/* A macro declaring a function prototype, following the typedef above, simply because it's so cumbersomely long
* otherwise. (And current emacs gets irritatingly slow when editing files that contain lots of very long function
* prototypes on the same screen…) */
#define CONFIG_PARSER_PROTOTYPE(name) int name(CONFIG_PARSER_ARGUMENTS)
diff --git a/src/shared/coredump-util.c b/src/shared/coredump-util.c
index 67897414bc..a0b648bf79 100644
--- a/src/shared/coredump-util.c
+++ b/src/shared/coredump-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "coredump-util.h"
#include "extract-word.h"
diff --git a/src/shared/coredump-util.h b/src/shared/coredump-util.h
index ff2e511bf1..a7f3c0e86c 100644
--- a/src/shared/coredump-util.h
+++ b/src/shared/coredump-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "macro.h"
diff --git a/src/shared/cpu-set-util.c b/src/shared/cpu-set-util.c
index 8779d1d4d3..2c3b5bb034 100644
--- a/src/shared/cpu-set-util.c
+++ b/src/shared/cpu-set-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stddef.h>
diff --git a/src/shared/cpu-set-util.h b/src/shared/cpu-set-util.h
index 9ec83f6930..3c63a58826 100644
--- a/src/shared/cpu-set-util.h
+++ b/src/shared/cpu-set-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <sched.h>
diff --git a/src/shared/cryptsetup-util.c b/src/shared/cryptsetup-util.c
index 9d86478b06..34a078e7e7 100644
--- a/src/shared/cryptsetup-util.c
+++ b/src/shared/cryptsetup-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#if HAVE_LIBCRYPTSETUP
#include "alloc-util.h"
diff --git a/src/shared/cryptsetup-util.h b/src/shared/cryptsetup-util.h
index 046953b8cc..b96ffc74e3 100644
--- a/src/shared/cryptsetup-util.h
+++ b/src/shared/cryptsetup-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "macro.h"
diff --git a/src/shared/daemon-util.h b/src/shared/daemon-util.h
index 04b8245310..585e4894a0 100644
--- a/src/shared/daemon-util.h
+++ b/src/shared/daemon-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/shared/dev-setup.c b/src/shared/dev-setup.c
index d970640993..b788b06913 100644
--- a/src/shared/dev-setup.c
+++ b/src/shared/dev-setup.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stdlib.h>
diff --git a/src/shared/dev-setup.h b/src/shared/dev-setup.h
index 437c0e96e6..92ba6cf764 100644
--- a/src/shared/dev-setup.h
+++ b/src/shared/dev-setup.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <sys/types.h>
diff --git a/src/shared/dissect-image.c b/src/shared/dissect-image.c
index 1820b81e11..b32a8bc4e4 100644
--- a/src/shared/dissect-image.c
+++ b/src/shared/dissect-image.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#if HAVE_VALGRIND_MEMCHECK_H
#include <valgrind/memcheck.h>
@@ -2115,7 +2115,7 @@ int verity_settings_load(
if (verity->root_hash && !verity->root_hash_sig) {
if (root_hash_sig_path) {
- r = read_full_file_full(AT_FDCWD, root_hash_sig_path, 0, (char**) &root_hash_sig, &root_hash_sig_size);
+ r = read_full_file_full(AT_FDCWD, root_hash_sig_path, 0, NULL, (char**) &root_hash_sig, &root_hash_sig_size);
if (r < 0 && r != -ENOENT)
return r;
@@ -2131,7 +2131,7 @@ int verity_settings_load(
if (!p)
return -ENOMEM;
- r = read_full_file_full(AT_FDCWD, p, 0, (char**) &root_hash_sig, &root_hash_sig_size);
+ r = read_full_file_full(AT_FDCWD, p, 0, NULL, (char**) &root_hash_sig, &root_hash_sig_size);
if (r < 0 && r != -ENOENT)
return r;
if (r >= 0)
@@ -2145,7 +2145,7 @@ int verity_settings_load(
if (!p)
return -ENOMEM;
- r = read_full_file_full(AT_FDCWD, p, 0, (char**) &root_hash_sig, &root_hash_sig_size);
+ r = read_full_file_full(AT_FDCWD, p, 0, NULL, (char**) &root_hash_sig, &root_hash_sig_size);
if (r < 0 && r != -ENOENT)
return r;
if (r >= 0)
diff --git a/src/shared/dissect-image.h b/src/shared/dissect-image.h
index f5db7327bd..3b30e08f90 100644
--- a/src/shared/dissect-image.h
+++ b/src/shared/dissect-image.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/shared/dm-util.c b/src/shared/dm-util.c
index 7efcb6b2aa..b48b9b5cbc 100644
--- a/src/shared/dm-util.c
+++ b/src/shared/dm-util.c
@@ -1,3 +1,5 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
#include <fcntl.h>
#include <linux/dm-ioctl.h>
#include <sys/ioctl.h>
diff --git a/src/shared/dm-util.h b/src/shared/dm-util.h
index 997963c042..e6e3d7d8c5 100644
--- a/src/shared/dm-util.h
+++ b/src/shared/dm-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int dm_deferred_remove_cancel(const char *name);
diff --git a/src/shared/dns-domain.c b/src/shared/dns-domain.c
index 35d2eaa9f1..8bd1e3a6ac 100644
--- a/src/shared/dns-domain.c
+++ b/src/shared/dns-domain.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <endian.h>
#include <netinet/in.h>
diff --git a/src/shared/dns-domain.h b/src/shared/dns-domain.h
index 60de7af227..77f596294d 100644
--- a/src/shared/dns-domain.h
+++ b/src/shared/dns-domain.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <errno.h>
diff --git a/src/shared/dropin.c b/src/shared/dropin.c
index 6c614b5c0a..89f4b8ad89 100644
--- a/src/shared/dropin.c
+++ b/src/shared/dropin.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stdarg.h>
diff --git a/src/shared/dropin.h b/src/shared/dropin.h
index addf1dab14..54cceaff1a 100644
--- a/src/shared/dropin.h
+++ b/src/shared/dropin.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "hashmap.h"
diff --git a/src/shared/efi-loader.c b/src/shared/efi-loader.c
index 9411fc8cef..20f70da31a 100644
--- a/src/shared/efi-loader.c
+++ b/src/shared/efi-loader.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdlib.h>
#include <sys/stat.h>
diff --git a/src/shared/efi-loader.h b/src/shared/efi-loader.h
index 171274a0e3..34476f4ced 100644
--- a/src/shared/efi-loader.h
+++ b/src/shared/efi-loader.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "efivars.h"
diff --git a/src/shared/enable-mempool.c b/src/shared/enable-mempool.c
index a571b43f57..1abfccbd81 100644
--- a/src/shared/enable-mempool.c
+++ b/src/shared/enable-mempool.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "mempool.h"
diff --git a/src/shared/env-file-label.c b/src/shared/env-file-label.c
index add68d224d..468afce2ba 100644
--- a/src/shared/env-file-label.c
+++ b/src/shared/env-file-label.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/stat.h>
diff --git a/src/shared/env-file-label.h b/src/shared/env-file-label.h
index 158fc4ec0b..d68058ab2e 100644
--- a/src/shared/env-file-label.h
+++ b/src/shared/env-file-label.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
/* These functions are split out of fileio.h (and not for example just flags to the functions they wrap) in order to
diff --git a/src/shared/ethtool-util.c b/src/shared/ethtool-util.c
index e36b4090ad..e6fab262f2 100644
--- a/src/shared/ethtool-util.c
+++ b/src/shared/ethtool-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <net/if.h>
#include <sys/ioctl.h>
@@ -173,14 +173,18 @@ static int ethtool_connect_or_warn(int *ret, bool warn) {
int ethtool_get_driver(int *ethtool_fd, const char *ifname, char **ret) {
struct ethtool_drvinfo ecmd = {
- .cmd = ETHTOOL_GDRVINFO
+ .cmd = ETHTOOL_GDRVINFO,
};
struct ifreq ifr = {
- .ifr_data = (void*) &ecmd
+ .ifr_data = (void*) &ecmd,
};
char *d;
int r;
+ assert(ethtool_fd);
+ assert(ifname);
+ assert(ret);
+
if (*ethtool_fd < 0) {
r = ethtool_connect_or_warn(ethtool_fd, true);
if (r < 0)
@@ -193,6 +197,9 @@ int ethtool_get_driver(int *ethtool_fd, const char *ifname, char **ret) {
if (r < 0)
return -errno;
+ if (isempty(ecmd.driver))
+ return -ENODATA;
+
d = strdup(ecmd.driver);
if (!d)
return -ENOMEM;
@@ -201,9 +208,14 @@ int ethtool_get_driver(int *ethtool_fd, const char *ifname, char **ret) {
return 0;
}
-int ethtool_get_link_info(int *ethtool_fd, const char *ifname,
- int *ret_autonegotiation, uint64_t *ret_speed,
- Duplex *ret_duplex, NetDevPort *ret_port) {
+int ethtool_get_link_info(
+ int *ethtool_fd,
+ const char *ifname,
+ int *ret_autonegotiation,
+ uint64_t *ret_speed,
+ Duplex *ret_duplex,
+ NetDevPort *ret_port) {
+
struct ethtool_cmd ecmd = {
.cmd = ETHTOOL_GSET,
};
@@ -212,6 +224,9 @@ int ethtool_get_link_info(int *ethtool_fd, const char *ifname,
};
int r;
+ assert(ethtool_fd);
+ assert(ifname);
+
if (*ethtool_fd < 0) {
r = ethtool_connect_or_warn(ethtool_fd, false);
if (r < 0)
@@ -292,14 +307,17 @@ int ethtool_get_permanent_macaddr(int *ethtool_fd, const char *ifname, struct et
int ethtool_set_speed(int *ethtool_fd, const char *ifname, unsigned speed, Duplex duplex) {
struct ethtool_cmd ecmd = {
- .cmd = ETHTOOL_GSET
+ .cmd = ETHTOOL_GSET,
};
struct ifreq ifr = {
- .ifr_data = (void*) &ecmd
+ .ifr_data = (void*) &ecmd,
};
bool need_update = false;
int r;
+ assert(ethtool_fd);
+ assert(ifname);
+
if (speed == 0 && duplex == _DUP_INVALID)
return 0;
@@ -350,14 +368,17 @@ int ethtool_set_speed(int *ethtool_fd, const char *ifname, unsigned speed, Duple
int ethtool_set_wol(int *ethtool_fd, const char *ifname, WakeOnLan wol) {
struct ethtool_wolinfo ecmd = {
- .cmd = ETHTOOL_GWOL
+ .cmd = ETHTOOL_GWOL,
};
struct ifreq ifr = {
- .ifr_data = (void*) &ecmd
+ .ifr_data = (void*) &ecmd,
};
bool need_update = false;
int r;
+ assert(ethtool_fd);
+ assert(ifname);
+
if (wol == _WOL_INVALID)
return 0;
@@ -439,14 +460,18 @@ int ethtool_set_wol(int *ethtool_fd, const char *ifname, WakeOnLan wol) {
int ethtool_set_nic_buffer_size(int *ethtool_fd, const char *ifname, const netdev_ring_param *ring) {
struct ethtool_ringparam ecmd = {
- .cmd = ETHTOOL_GRINGPARAM
+ .cmd = ETHTOOL_GRINGPARAM,
};
struct ifreq ifr = {
- .ifr_data = (void*) &ecmd
+ .ifr_data = (void*) &ecmd,
};
bool need_update = false;
int r;
+ assert(ethtool_fd);
+ assert(ifname);
+ assert(ring);
+
if (*ethtool_fd < 0) {
r = ethtool_connect_or_warn(ethtool_fd, true);
if (r < 0)
@@ -490,7 +515,7 @@ int ethtool_set_nic_buffer_size(int *ethtool_fd, const char *ifname, const netde
return 0;
}
-static int get_stringset(int ethtool_fd, struct ifreq *ifr, int stringset_id, struct ethtool_gstrings **gstrings) {
+static int get_stringset(int ethtool_fd, struct ifreq *ifr, int stringset_id, struct ethtool_gstrings **ret) {
_cleanup_free_ struct ethtool_gstrings *strings = NULL;
struct {
struct ethtool_sset_info info;
@@ -504,6 +529,10 @@ static int get_stringset(int ethtool_fd, struct ifreq *ifr, int stringset_id, st
unsigned len;
int r;
+ assert(ethtool_fd >= 0);
+ assert(ifr);
+ assert(ret);
+
ifr->ifr_data = (void *) &buffer.info;
r = ioctl(ethtool_fd, SIOCETHTOOL, ifr);
@@ -534,7 +563,7 @@ static int get_stringset(int ethtool_fd, struct ifreq *ifr, int stringset_id, st
if (r < 0)
return -errno;
- *gstrings = TAKE_PTR(strings);
+ *ret = TAKE_PTR(strings);
return 0;
}
@@ -572,6 +601,10 @@ int ethtool_set_features(int *ethtool_fd, const char *ifname, const int *feature
struct ifreq ifr = {};
int i, r;
+ assert(ethtool_fd);
+ assert(ifname);
+ assert(features);
+
if (*ethtool_fd < 0) {
r = ethtool_connect_or_warn(ethtool_fd, true);
if (r < 0)
@@ -606,7 +639,7 @@ int ethtool_set_features(int *ethtool_fd, const char *ifname, const int *feature
return 0;
}
-static int get_glinksettings(int fd, struct ifreq *ifr, struct ethtool_link_usettings **g) {
+static int get_glinksettings(int fd, struct ifreq *ifr, struct ethtool_link_usettings **ret) {
struct ecmd {
struct ethtool_link_settings req;
__u32 link_mode_data[3 * ETHTOOL_LINK_MODE_MASK_MAX_KERNEL_NU32];
@@ -617,6 +650,10 @@ static int get_glinksettings(int fd, struct ifreq *ifr, struct ethtool_link_uset
unsigned offset;
int r;
+ assert(fd >= 0);
+ assert(ifr);
+ assert(ret);
+
/* The interaction user/kernel via the new API requires a small ETHTOOL_GLINKSETTINGS
handshake first to agree on the length of the link mode bitmaps. If kernel doesn't
agree with user, it returns the bitmap length it is expecting from user as a negative
@@ -662,18 +699,22 @@ static int get_glinksettings(int fd, struct ifreq *ifr, struct ethtool_link_uset
offset += ecmd.req.link_mode_masks_nwords;
memcpy(u->link_modes.lp_advertising, &ecmd.link_mode_data[offset], 4 * ecmd.req.link_mode_masks_nwords);
- *g = u;
+ *ret = u;
return 0;
}
-static int get_gset(int fd, struct ifreq *ifr, struct ethtool_link_usettings **u) {
+static int get_gset(int fd, struct ifreq *ifr, struct ethtool_link_usettings **ret) {
struct ethtool_link_usettings *e;
struct ethtool_cmd ecmd = {
.cmd = ETHTOOL_GSET,
};
int r;
+ assert(fd >= 0);
+ assert(ifr);
+ assert(ret);
+
ifr->ifr_data = (void *) &ecmd;
r = ioctl(fd, SIOCETHTOOL, ifr);
@@ -699,7 +740,7 @@ static int get_gset(int fd, struct ifreq *ifr, struct ethtool_link_usettings **u
.link_modes.lp_advertising[0] = ecmd.lp_advertising,
};
- *u = e;
+ *ret = e;
return 0;
}
@@ -712,6 +753,10 @@ static int set_slinksettings(int fd, struct ifreq *ifr, const struct ethtool_lin
unsigned offset;
int r;
+ assert(fd >= 0);
+ assert(ifr);
+ assert(u);
+
if (u->base.cmd != ETHTOOL_GLINKSETTINGS || u->base.link_mode_masks_nwords <= 0)
return -EINVAL;
@@ -741,6 +786,10 @@ static int set_sset(int fd, struct ifreq *ifr, const struct ethtool_link_usettin
};
int r;
+ assert(fd >= 0);
+ assert(ifr);
+ assert(u);
+
if (u->base.cmd != ETHTOOL_GSET || u->base.link_mode_masks_nwords <= 0)
return -EINVAL;
@@ -781,10 +830,13 @@ int ethtool_set_glinksettings(
uint64_t speed,
Duplex duplex,
NetDevPort port) {
+
_cleanup_free_ struct ethtool_link_usettings *u = NULL;
struct ifreq ifr = {};
int r;
+ assert(fd);
+ assert(ifname);
assert(advertise);
if (autonegotiation != AUTONEG_DISABLE && memeqzero(advertise, sizeof(uint32_t) * N_ADVERTISE)) {
@@ -838,15 +890,18 @@ int ethtool_set_glinksettings(
int ethtool_set_channels(int *fd, const char *ifname, const netdev_channels *channels) {
struct ethtool_channels ecmd = {
- .cmd = ETHTOOL_GCHANNELS
+ .cmd = ETHTOOL_GCHANNELS,
};
struct ifreq ifr = {
- .ifr_data = (void*) &ecmd
+ .ifr_data = (void*) &ecmd,
};
-
bool need_update = false;
int r;
+ assert(fd);
+ assert(ifname);
+ assert(channels);
+
if (*fd < 0) {
r = ethtool_connect_or_warn(fd, true);
if (r < 0)
@@ -892,15 +947,17 @@ int ethtool_set_channels(int *fd, const char *ifname, const netdev_channels *cha
int ethtool_set_flow_control(int *fd, const char *ifname, int rx, int tx, int autoneg) {
struct ethtool_pauseparam ecmd = {
- .cmd = ETHTOOL_GPAUSEPARAM
+ .cmd = ETHTOOL_GPAUSEPARAM,
};
struct ifreq ifr = {
- .ifr_data = (void*) &ecmd
+ .ifr_data = (void*) &ecmd,
};
-
bool need_update = false;
int r;
+ assert(fd);
+ assert(ifname);
+
if (*fd < 0) {
r = ethtool_connect_or_warn(fd, true);
if (r < 0)
diff --git a/src/shared/ethtool-util.h b/src/shared/ethtool-util.h
index 9e3f1ed51a..f94b3e15bf 100644
--- a/src/shared/ethtool-util.h
+++ b/src/shared/ethtool-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <macro.h>
diff --git a/src/shared/exec-util.c b/src/shared/exec-util.c
index 8fb936dcce..61ee3b18d5 100644
--- a/src/shared/exec-util.c
+++ b/src/shared/exec-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <dirent.h>
#include <errno.h>
diff --git a/src/shared/exec-util.h b/src/shared/exec-util.h
index 9fe9012516..a69d57c7ae 100644
--- a/src/shared/exec-util.h
+++ b/src/shared/exec-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/shared/exit-status.c b/src/shared/exit-status.c
index e2b6c67953..b71dd7afd5 100644
--- a/src/shared/exit-status.c
+++ b/src/shared/exit-status.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <signal.h>
#include <stdlib.h>
diff --git a/src/shared/exit-status.h b/src/shared/exit-status.h
index 7ac99a4810..05707bf722 100644
--- a/src/shared/exit-status.h
+++ b/src/shared/exit-status.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/shared/fdset.c b/src/shared/fdset.c
index dfe8242fc4..679e4aad22 100644
--- a/src/shared/fdset.c
+++ b/src/shared/fdset.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/shared/fdset.h b/src/shared/fdset.h
index ceabb82311..39d15ee4aa 100644
--- a/src/shared/fdset.h
+++ b/src/shared/fdset.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/shared/fileio-label.c b/src/shared/fileio-label.c
index 49ab29720b..d03b0548ec 100644
--- a/src/shared/fileio-label.c
+++ b/src/shared/fileio-label.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/stat.h>
diff --git a/src/shared/fileio-label.h b/src/shared/fileio-label.h
index 8f88955d81..03b4a16417 100644
--- a/src/shared/fileio-label.h
+++ b/src/shared/fileio-label.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdio.h>
diff --git a/src/shared/firewall-util.c b/src/shared/firewall-util.c
index 4d4d615bb7..007d2cb39b 100644
--- a/src/shared/firewall-util.c
+++ b/src/shared/firewall-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/* Temporary work-around for broken glibc vs. linux kernel header definitions
* This is already fixed upstream, remove this when distributions have updated.
diff --git a/src/shared/firewall-util.h b/src/shared/firewall-util.h
index 4fc71dade2..0a51a3c692 100644
--- a/src/shared/firewall-util.h
+++ b/src/shared/firewall-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/shared/format-table.c b/src/shared/format-table.c
index 1063baba52..a13a198b7a 100644
--- a/src/shared/format-table.c
+++ b/src/shared/format-table.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <ctype.h>
#include <net/if.h>
diff --git a/src/shared/format-table.h b/src/shared/format-table.h
index 0d7b7c48c5..965549b60a 100644
--- a/src/shared/format-table.h
+++ b/src/shared/format-table.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/shared/fsck-util.h b/src/shared/fsck-util.h
index 78ec18dd07..855137c99a 100644
--- a/src/shared/fsck-util.h
+++ b/src/shared/fsck-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
/* exit codes as defined in fsck(8) */
diff --git a/src/shared/fstab-util.c b/src/shared/fstab-util.c
index ca88813602..292b97cd69 100644
--- a/src/shared/fstab-util.c
+++ b/src/shared/fstab-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stdio.h>
diff --git a/src/shared/fstab-util.h b/src/shared/fstab-util.h
index a73575e95c..1a602cb56b 100644
--- a/src/shared/fstab-util.h
+++ b/src/shared/fstab-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/shared/generator.c b/src/shared/generator.c
index d61b367d33..4d49b7d52b 100644
--- a/src/shared/generator.c
+++ b/src/shared/generator.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <unistd.h>
diff --git a/src/shared/generator.h b/src/shared/generator.h
index 579e291fe8..ff6072f53d 100644
--- a/src/shared/generator.h
+++ b/src/shared/generator.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdio.h>
diff --git a/src/shared/geneve-util.c b/src/shared/geneve-util.c
index fad01e208b..36ef9c83c7 100644
--- a/src/shared/geneve-util.c
+++ b/src/shared/geneve-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "geneve-util.h"
#include "string-table.h"
diff --git a/src/shared/geneve-util.h b/src/shared/geneve-util.h
index 63c03ae02a..3865f805a4 100644
--- a/src/shared/geneve-util.h
+++ b/src/shared/geneve-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <linux/if_link.h>
diff --git a/src/shared/gpt.c b/src/shared/gpt.c
index 53a3f4bfe6..15ea2f0a1f 100644
--- a/src/shared/gpt.c
+++ b/src/shared/gpt.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "gpt.h"
#include "string-util.h"
@@ -14,6 +14,10 @@ const GptPartitionType gpt_partition_type_table[] = {
{ GPT_ROOT_ARM_64_VERITY, "root-arm64-verity" },
{ GPT_ROOT_IA64, "root-ia64" },
{ GPT_ROOT_IA64_VERITY, "root-ia64-verity" },
+ { GPT_ROOT_RISCV32, "root-riscv32" },
+ { GPT_ROOT_RISCV32_VERITY, "root-riscv32-verity" },
+ { GPT_ROOT_RISCV64, "root-riscv64" },
+ { GPT_ROOT_RISCV64_VERITY, "root-riscv64-verity" },
#ifdef GPT_ROOT_NATIVE
{ GPT_ROOT_NATIVE, "root" },
{ GPT_ROOT_NATIVE_VERITY, "root-verity" },
@@ -32,6 +36,10 @@ const GptPartitionType gpt_partition_type_table[] = {
{ GPT_USR_ARM_64_VERITY, "usr-arm64-verity" },
{ GPT_USR_IA64, "usr-ia64" },
{ GPT_USR_IA64_VERITY, "usr-ia64-verity" },
+ { GPT_USR_RISCV32, "usr-riscv32" },
+ { GPT_USR_RISCV32_VERITY, "usr-riscv32-verity" },
+ { GPT_USR_RISCV64, "usr-riscv64" },
+ { GPT_USR_RISCV64_VERITY, "usr-riscv64-verity" },
#ifdef GPT_USR_NATIVE
{ GPT_USR_NATIVE, "usr" },
{ GPT_USR_NATIVE_VERITY, "usr-verity" },
diff --git a/src/shared/gpt.h b/src/shared/gpt.h
index b162eb9d0d..241ff035c6 100644
--- a/src/shared/gpt.h
+++ b/src/shared/gpt.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <endian.h>
@@ -15,11 +15,15 @@
#define GPT_ROOT_ARM SD_ID128_MAKE(69,da,d7,10,2c,e4,4e,3c,b1,6c,21,a1,d4,9a,be,d3)
#define GPT_ROOT_ARM_64 SD_ID128_MAKE(b9,21,b0,45,1d,f0,41,c3,af,44,4c,6f,28,0d,3f,ae)
#define GPT_ROOT_IA64 SD_ID128_MAKE(99,3d,8d,3d,f8,0e,42,25,85,5a,9d,af,8e,d7,ea,97)
+#define GPT_ROOT_RISCV32 SD_ID128_MAKE(60,d5,a7,fe,8e,7d,43,5c,b7,14,3d,d8,16,21,44,e1)
+#define GPT_ROOT_RISCV64 SD_ID128_MAKE(72,ec,70,a6,cf,74,40,e6,bd,49,4b,da,08,e8,f2,24)
#define GPT_USR_X86 SD_ID128_MAKE(75,25,0d,76,8c,c6,45,8e,bd,66,bd,47,cc,81,a8,12)
#define GPT_USR_X86_64 SD_ID128_MAKE(84,84,68,0c,95,21,48,c6,9c,11,b0,72,06,56,f6,9e)
#define GPT_USR_ARM SD_ID128_MAKE(7d,03,59,a3,02,b3,4f,0a,86,5c,65,44,03,e7,06,25)
#define GPT_USR_ARM_64 SD_ID128_MAKE(b0,e0,10,50,ee,5f,43,90,94,9a,91,01,b1,71,04,e9)
#define GPT_USR_IA64 SD_ID128_MAKE(43,01,d2,a6,4e,3b,4b,2a,bb,94,9e,0b,2c,42,25,ea)
+#define GPT_USR_RISCV32 SD_ID128_MAKE(b9,33,fb,22,5c,3f,4f,91,af,90,e2,bb,0f,a5,07,02)
+#define GPT_USR_RISCV64 SD_ID128_MAKE(be,ae,c3,4b,84,42,43,9b,a4,0b,98,43,81,ed,09,7d)
#define GPT_ESP SD_ID128_MAKE(c1,2a,73,28,f8,1f,11,d2,ba,4b,00,a0,c9,3e,c9,3b)
#define GPT_XBOOTLDR SD_ID128_MAKE(bc,13,c2,ff,59,e6,42,62,a3,52,b2,75,fd,6f,71,72)
#define GPT_SWAP SD_ID128_MAKE(06,57,fd,6d,a4,ab,43,c4,84,e5,09,33,c8,4b,4f,4f)
@@ -37,11 +41,15 @@
#define GPT_ROOT_ARM_VERITY SD_ID128_MAKE(73,86,cd,f2,20,3c,47,a9,a4,98,f2,ec,ce,45,a2,d6)
#define GPT_ROOT_ARM_64_VERITY SD_ID128_MAKE(df,33,00,ce,d6,9f,4c,92,97,8c,9b,fb,0f,38,d8,20)
#define GPT_ROOT_IA64_VERITY SD_ID128_MAKE(86,ed,10,d5,b6,07,45,bb,89,57,d3,50,f2,3d,05,71)
+#define GPT_ROOT_RISCV32_VERITY SD_ID128_MAKE(ae,02,53,be,11,67,40,07,ac,68,43,92,6c,14,c5,de)
+#define GPT_ROOT_RISCV64_VERITY SD_ID128_MAKE(b6,ed,55,82,44,0b,42,09,b8,da,5f,f7,c4,19,ea,3d)
#define GPT_USR_X86_VERITY SD_ID128_MAKE(8f,46,1b,0d,14,ee,4e,81,9a,a9,04,9b,6f,b9,7a,bd)
#define GPT_USR_X86_64_VERITY SD_ID128_MAKE(77,ff,5f,63,e7,b6,46,33,ac,f4,15,65,b8,64,c0,e6)
#define GPT_USR_ARM_VERITY SD_ID128_MAKE(c2,15,d7,51,7b,cd,46,49,be,90,66,27,49,0a,4c,05)
#define GPT_USR_ARM_64_VERITY SD_ID128_MAKE(6e,11,a4,e7,fb,ca,4d,ed,b9,e9,e1,a5,12,bb,66,4e)
#define GPT_USR_IA64_VERITY SD_ID128_MAKE(6a,49,1e,03,3b,e7,45,45,8e,38,83,32,0e,0e,a8,80)
+#define GPT_USR_RISCV32_VERITY SD_ID128_MAKE(cb,1e,e4,e3,8c,d0,41,36,a0,a4,aa,61,a3,2e,87,30)
+#define GPT_USR_RISCV64_VERITY SD_ID128_MAKE(8f,10,56,be,9b,05,47,c4,81,d6,be,53,12,8e,5b,54)
#if defined(__x86_64__)
# define GPT_ROOT_NATIVE GPT_ROOT_X86_64
@@ -82,6 +90,20 @@
# define GPT_USR_NATIVE_VERITY GPT_USR_ARM_VERITY
#endif
+#if defined(__riscv)
+#if (__riscv_xlen == 32)
+# define GPT_ROOT_NATIVE GPT_ROOT_RISCV32
+# define GPT_ROOT_NATIVE_VERITY GPT_ROOT_RISCV32_VERITY
+# define GPT_USR_NATIVE GPT_USR_RISCV32
+# define GPT_USR_NATIVE_VERITY GPT_USR_RISCV32_VERITY
+#elif (__riscv_xlen == 64)
+# define GPT_ROOT_NATIVE GPT_ROOT_RISCV64
+# define GPT_ROOT_NATIVE_VERITY GPT_ROOT_RISCV64_VERITY
+# define GPT_USR_NATIVE GPT_USR_RISCV64
+# define GPT_USR_NATIVE_VERITY GPT_USR_RISCV64_VERITY
+#endif
+#endif
+
#define GPT_FLAG_REQUIRED_PARTITION (1ULL << 0)
#define GPT_FLAG_NO_BLOCK_IO_PROTOCOL (1ULL << 1)
#define GPT_FLAG_LEGACY_BIOS_BOOTABLE (1ULL << 2)
diff --git a/src/shared/group-record.c b/src/shared/group-record.c
index d999ff95f8..da3ed0a850 100644
--- a/src/shared/group-record.c
+++ b/src/shared/group-record.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "group-record.h"
#include "strv.h"
diff --git a/src/shared/group-record.h b/src/shared/group-record.h
index 85c91eb1f5..f81020437c 100644
--- a/src/shared/group-record.h
+++ b/src/shared/group-record.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "json.h"
diff --git a/src/shared/id128-print.c b/src/shared/id128-print.c
index 6237424e82..f232767adf 100644
--- a/src/shared/id128-print.c
+++ b/src/shared/id128-print.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdio.h>
diff --git a/src/shared/id128-print.h b/src/shared/id128-print.h
index 247558231c..d69cb9b551 100644
--- a/src/shared/id128-print.h
+++ b/src/shared/id128-print.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
diff --git a/src/shared/idn-util.c b/src/shared/idn-util.c
index 75d815df38..83c4b3c530 100644
--- a/src/shared/idn-util.c
+++ b/src/shared/idn-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#if HAVE_LIBIDN2
# include <idn2.h>
diff --git a/src/shared/idn-util.h b/src/shared/idn-util.h
index d958559ec9..4698eed3b8 100644
--- a/src/shared/idn-util.h
+++ b/src/shared/idn-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#if HAVE_LIBIDN2
diff --git a/src/shared/ima-util.c b/src/shared/ima-util.c
index 0d4ce3cafc..e37c9ad226 100644
--- a/src/shared/ima-util.c
+++ b/src/shared/ima-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <unistd.h>
diff --git a/src/shared/ima-util.h b/src/shared/ima-util.h
index 8f20741c33..922db786e6 100644
--- a/src/shared/ima-util.h
+++ b/src/shared/ima-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/shared/import-util.c b/src/shared/import-util.c
index 0a57c08990..298c066dff 100644
--- a/src/shared/import-util.c
+++ b/src/shared/import-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
diff --git a/src/shared/import-util.h b/src/shared/import-util.h
index d85aa565cc..8d017f61d1 100644
--- a/src/shared/import-util.h
+++ b/src/shared/import-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/shared/initreq.h b/src/shared/initreq.h
index 1d7ff81df1..1bf5b8edd7 100644
--- a/src/shared/initreq.h
+++ b/src/shared/initreq.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: LGPL-2+ */
/*
* initreq.h Interface to talk to init through /dev/initctl.
*
diff --git a/src/shared/install-printf.c b/src/shared/install-printf.c
index 9267d52b96..6bc3f15def 100644
--- a/src/shared/install-printf.c
+++ b/src/shared/install-printf.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stdio.h>
@@ -104,43 +104,18 @@ static int specifier_last_component(char specifier, const void *data, const void
}
int install_full_printf(const UnitFileInstallInfo *i, const char *format, char **ret) {
- /* This is similar to unit_full_printf() but does not support
- * anything path-related.
- *
- * %n: the full id of the unit (foo@bar.waldo)
- * %N: the id of the unit without the suffix (foo@bar)
- * %p: the prefix (foo)
- * %i: the instance (bar)
-
- * %U the UID of the running user
- * %u the username of running user
- * %m the machine ID of the running system
- * %H the hostname of the running system
- * %b the boot ID of the running system
- * %v `uname -r` of the running system
- */
+ /* This is similar to unit_name_printf() */
const Specifier table[] = {
+ { 'i', specifier_instance, NULL },
+ { 'j', specifier_last_component, NULL },
{ 'n', specifier_name, NULL },
{ 'N', specifier_prefix_and_instance, NULL },
{ 'p', specifier_prefix, NULL },
- { 'i', specifier_instance, NULL },
- { 'j', specifier_last_component, NULL },
- { 'g', specifier_group_name, NULL },
- { 'G', specifier_group_id, NULL },
- { 'U', specifier_user_id, NULL },
- { 'u', specifier_user_name, NULL },
-
- { 'm', specifier_machine_id, NULL },
- { 'b', specifier_boot_id, NULL },
- { 'H', specifier_host_name, NULL },
- { 'v', specifier_kernel_release, NULL },
- { 'a', specifier_architecture, NULL },
- { 'o', specifier_os_id, NULL },
- { 'w', specifier_os_version_id, NULL },
- { 'B', specifier_os_build_id, NULL },
- { 'W', specifier_os_variant_id, NULL },
+ COMMON_SYSTEM_SPECIFIERS,
+
+ COMMON_CREDS_SPECIFIERS,
{}
};
diff --git a/src/shared/install-printf.h b/src/shared/install-printf.h
index fa8ea7ef81..34e129413e 100644
--- a/src/shared/install-printf.h
+++ b/src/shared/install-printf.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "install.h"
diff --git a/src/shared/install.c b/src/shared/install.c
index cd14b2c4be..302497a965 100644
--- a/src/shared/install.c
+++ b/src/shared/install.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/shared/install.h b/src/shared/install.h
index 23ac995332..84bf1f59d2 100644
--- a/src/shared/install.h
+++ b/src/shared/install.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
typedef enum UnitFilePresetMode UnitFilePresetMode;
diff --git a/src/shared/ip-protocol-list.c b/src/shared/ip-protocol-list.c
index aa675ea10b..0623d5e9be 100644
--- a/src/shared/ip-protocol-list.c
+++ b/src/shared/ip-protocol-list.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <netinet/in.h>
diff --git a/src/shared/ip-protocol-list.h b/src/shared/ip-protocol-list.h
index 5c94969695..abe3f5fc28 100644
--- a/src/shared/ip-protocol-list.h
+++ b/src/shared/ip-protocol-list.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
const char *ip_protocol_to_name(int id);
diff --git a/src/shared/ipvlan-util.c b/src/shared/ipvlan-util.c
index da6be76789..1f2e2ffe7b 100644
--- a/src/shared/ipvlan-util.c
+++ b/src/shared/ipvlan-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <net/if.h>
diff --git a/src/shared/ipvlan-util.h b/src/shared/ipvlan-util.h
index dda659d42d..90f755b472 100644
--- a/src/shared/ipvlan-util.h
+++ b/src/shared/ipvlan-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <netinet/in.h>
diff --git a/src/shared/journal-importer.c b/src/shared/journal-importer.c
index 7c4fc7021d..e95b638f4d 100644
--- a/src/shared/journal-importer.c
+++ b/src/shared/journal-importer.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <unistd.h>
diff --git a/src/shared/journal-importer.h b/src/shared/journal-importer.h
index 783edff5d3..e0073fcea8 100644
--- a/src/shared/journal-importer.h
+++ b/src/shared/journal-importer.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
diff --git a/src/shared/journal-util.c b/src/shared/journal-util.c
index 4d0edbb7d0..29659aa6b7 100644
--- a/src/shared/journal-util.c
+++ b/src/shared/journal-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "acl-util.h"
#include "fs-util.h"
diff --git a/src/shared/journal-util.h b/src/shared/journal-util.h
index 34ad1bfc8e..db7000ffef 100644
--- a/src/shared/journal-util.h
+++ b/src/shared/journal-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/shared/json-internal.h b/src/shared/json-internal.h
index fabff0c860..63afd22417 100644
--- a/src/shared/json-internal.h
+++ b/src/shared/json-internal.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
diff --git a/src/shared/json.c b/src/shared/json.c
index 1d2cbc8aed..ddf6dcb663 100644
--- a/src/shared/json.c
+++ b/src/shared/json.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <locale.h>
@@ -3195,7 +3195,7 @@ int json_parse_file_at(FILE *f, int dir_fd, const char *path, JsonParseFlags fla
if (f)
r = read_full_stream(f, &text, NULL);
else if (path)
- r = read_full_file_full(dir_fd, path, 0, &text, NULL);
+ r = read_full_file_full(dir_fd, path, 0, NULL, &text, NULL);
else
return -EINVAL;
if (r < 0)
diff --git a/src/shared/json.h b/src/shared/json.h
index 1d6fec67b6..0809f3187e 100644
--- a/src/shared/json.h
+++ b/src/shared/json.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <fcntl.h>
diff --git a/src/shared/libcrypt-util.c b/src/shared/libcrypt-util.c
index 8a46ace205..5b315413aa 100644
--- a/src/shared/libcrypt-util.c
+++ b/src/shared/libcrypt-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#if HAVE_CRYPT_H
/* libxcrypt is a replacement for glibc's libcrypt, and libcrypt might be
diff --git a/src/shared/libcrypt-util.h b/src/shared/libcrypt-util.h
index 924a35d3e1..5b9b945629 100644
--- a/src/shared/libcrypt-util.h
+++ b/src/shared/libcrypt-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/shared/libmount-util.h b/src/shared/libmount-util.h
index 7c3b855df5..db9728c332 100644
--- a/src/shared/libmount-util.h
+++ b/src/shared/libmount-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdio.h>
diff --git a/src/shared/linux/nl80211.h b/src/shared/linux/nl80211.h
index b065c1fe4d..65edfff1ca 100644
--- a/src/shared/linux/nl80211.h
+++ b/src/shared/linux/nl80211.h
@@ -1,3 +1,5 @@
+/* SPDX-License-Identifier: MIT */
+
#ifndef __LINUX_NL80211_H
#define __LINUX_NL80211_H
/*
diff --git a/src/shared/local-addresses.c b/src/shared/local-addresses.c
index aaad0d9ff0..7be6b945f2 100644
--- a/src/shared/local-addresses.c
+++ b/src/shared/local-addresses.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "sd-netlink.h"
diff --git a/src/shared/local-addresses.h b/src/shared/local-addresses.h
index e88c5e5d21..c633995dc9 100644
--- a/src/shared/local-addresses.h
+++ b/src/shared/local-addresses.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-netlink.h"
diff --git a/src/shared/lockfile-util.c b/src/shared/lockfile-util.c
index 260c2088d5..6f059abfff 100644
--- a/src/shared/lockfile-util.c
+++ b/src/shared/lockfile-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/shared/lockfile-util.h b/src/shared/lockfile-util.h
index e0eef34cdc..36063270dd 100644
--- a/src/shared/lockfile-util.h
+++ b/src/shared/lockfile-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
typedef struct LockFile {
diff --git a/src/shared/log-link.h b/src/shared/log-link.h
index b844f9ef81..bb692e0518 100644
--- a/src/shared/log-link.h
+++ b/src/shared/log-link.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "log.h"
diff --git a/src/shared/logs-show.c b/src/shared/logs-show.c
index f7d3e01b49..bf574d32a5 100644
--- a/src/shared/logs-show.c
+++ b/src/shared/logs-show.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
@@ -348,10 +348,7 @@ static int output_timestamp_monotonic(FILE *f, sd_journal *j, const char *monoto
static int output_timestamp_realtime(FILE *f, sd_journal *j, OutputMode mode, OutputFlags flags, const char *realtime) {
char buf[MAX(FORMAT_TIMESTAMP_MAX, 64U)];
- struct tm *(*gettime_r)(const time_t *, struct tm *);
- struct tm tm;
uint64_t x;
- time_t t;
int r;
assert(f);
@@ -376,9 +373,9 @@ static int output_timestamp_realtime(FILE *f, sd_journal *j, OutputMode mode, Ou
"Failed to format timestamp: %" PRIu64, x);
} else {
- char usec[7];
+ struct tm tm;
+ time_t t;
- gettime_r = (flags & OUTPUT_UTC) ? gmtime_r : localtime_r;
t = (time_t) (x / USEC_PER_SEC);
switch (mode) {
@@ -388,24 +385,29 @@ static int output_timestamp_realtime(FILE *f, sd_journal *j, OutputMode mode, Ou
break;
case OUTPUT_SHORT_ISO:
- if (strftime(buf, sizeof(buf), "%Y-%m-%dT%H:%M:%S%z", gettime_r(&t, &tm)) <= 0)
+ if (strftime(buf, sizeof(buf), "%Y-%m-%dT%H:%M:%S%z",
+ localtime_or_gmtime_r(&t, &tm, flags & OUTPUT_UTC)) <= 0)
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
"Failed to format ISO time");
break;
- case OUTPUT_SHORT_ISO_PRECISE:
+ case OUTPUT_SHORT_ISO_PRECISE: {
+ char usec[7];
+
/* No usec in strftime, so we leave space and copy over */
- if (strftime(buf, sizeof(buf), "%Y-%m-%dT%H:%M:%S.xxxxxx%z", gettime_r(&t, &tm)) <= 0)
+ if (strftime(buf, sizeof(buf), "%Y-%m-%dT%H:%M:%S.xxxxxx%z",
+ 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, x % USEC_PER_SEC);
memcpy(buf + 20, usec, 6);
break;
-
+ }
case OUTPUT_SHORT:
case OUTPUT_SHORT_PRECISE:
- if (strftime(buf, sizeof(buf), "%b %d %H:%M:%S", gettime_r(&t, &tm)) <= 0)
+ if (strftime(buf, sizeof(buf), "%b %d %H:%M:%S",
+ localtime_or_gmtime_r(&t, &tm, flags & OUTPUT_UTC)) <= 0)
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
"Failed to format syslog time");
diff --git a/src/shared/logs-show.h b/src/shared/logs-show.h
index 345efa4b2b..71ebe13573 100644
--- a/src/shared/logs-show.h
+++ b/src/shared/logs-show.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/shared/loop-util.c b/src/shared/loop-util.c
index 740dccb935..84f415aa61 100644
--- a/src/shared/loop-util.c
+++ b/src/shared/loop-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#if HAVE_VALGRIND_MEMCHECK_H
#include <valgrind/memcheck.h>
@@ -232,7 +232,7 @@ static int loop_configure(
* ioctl can return EAGAIN in case we change the lo_offset field, if someone else is accessing the
* block device while we try to reconfigure it. This is a pretty common case, since udev might
* instantly start probing the device as soon as we attach an fd to it. Hence handle it in two ways:
- * first, let's take the BSD lock that that ensures that udev will not step in between the point in
+ * first, let's take the BSD lock to ensure that udev will not step in between the point in
* time where we attach the fd and where we reconfigure the device. Secondly, let's wait 50ms on
* EAGAIN and retry. The former should be an efficient mechanism to avoid we have to wait 50ms
* needlessly if we are just racing against udev. The latter is protection against all other cases,
diff --git a/src/shared/loop-util.h b/src/shared/loop-util.h
index 16f215b059..9538daea31 100644
--- a/src/shared/loop-util.h
+++ b/src/shared/loop-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "macro.h"
diff --git a/src/shared/machine-image.c b/src/shared/machine-image.c
index 71d6a2c80b..671a56b9e9 100644
--- a/src/shared/machine-image.c
+++ b/src/shared/machine-image.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/shared/machine-image.h b/src/shared/machine-image.h
index 9fd45899c8..95a8f5cfbd 100644
--- a/src/shared/machine-image.h
+++ b/src/shared/machine-image.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/shared/machine-pool.c b/src/shared/machine-pool.c
index 7e3312835d..1f0b0b4730 100644
--- a/src/shared/machine-pool.c
+++ b/src/shared/machine-pool.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
diff --git a/src/shared/machine-pool.h b/src/shared/machine-pool.h
index 6f59a18fb6..3f528ab060 100644
--- a/src/shared/machine-pool.h
+++ b/src/shared/machine-pool.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdint.h>
diff --git a/src/shared/macvlan-util.c b/src/shared/macvlan-util.c
index 926b4d42a0..11dffe99b2 100644
--- a/src/shared/macvlan-util.c
+++ b/src/shared/macvlan-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "conf-parser.h"
#include "macvlan-util.h"
diff --git a/src/shared/macvlan-util.h b/src/shared/macvlan-util.h
index 7670bbf402..0d3a5f4050 100644
--- a/src/shared/macvlan-util.h
+++ b/src/shared/macvlan-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <linux/if_link.h>
diff --git a/src/shared/main-func.h b/src/shared/main-func.h
index cf23ad450c..05cdffeec0 100644
--- a/src/shared/main-func.h
+++ b/src/shared/main-func.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdlib.h>
diff --git a/src/shared/meson.build b/src/shared/meson.build
index aa3c915f33..53165541ac 100644
--- a/src/shared/meson.build
+++ b/src/shared/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
shared_sources = files('''
acl-util.h
diff --git a/src/shared/mkfs-util.c b/src/shared/mkfs-util.c
index 6289a73399..ce10e60bb6 100644
--- a/src/shared/mkfs-util.c
+++ b/src/shared/mkfs-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "id128-util.h"
#include "mkfs-util.h"
diff --git a/src/shared/mkfs-util.h b/src/shared/mkfs-util.h
index 54e9b931e6..7647afbfc7 100644
--- a/src/shared/mkfs-util.h
+++ b/src/shared/mkfs-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/shared/module-util.c b/src/shared/module-util.c
index e1d394c0e1..587e6369fb 100644
--- a/src/shared/module-util.c
+++ b/src/shared/module-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
diff --git a/src/shared/module-util.h b/src/shared/module-util.h
index c386c5b459..4db8c5f04e 100644
--- a/src/shared/module-util.h
+++ b/src/shared/module-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <libkmod.h>
diff --git a/src/shared/mount-util.c b/src/shared/mount-util.c
index 83ce749d12..b19b3849aa 100644
--- a/src/shared/mount-util.c
+++ b/src/shared/mount-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stdlib.h>
diff --git a/src/shared/mount-util.h b/src/shared/mount-util.h
index 63de2c7dff..6202008a81 100644
--- a/src/shared/mount-util.h
+++ b/src/shared/mount-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <mntent.h>
diff --git a/src/shared/netif-naming-scheme.c b/src/shared/netif-naming-scheme.c
index 0a701b0e92..df520ab89e 100644
--- a/src/shared/netif-naming-scheme.c
+++ b/src/shared/netif-naming-scheme.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "netif-naming-scheme.h"
diff --git a/src/shared/netif-naming-scheme.h b/src/shared/netif-naming-scheme.h
index db47d2909e..503a74ea33 100644
--- a/src/shared/netif-naming-scheme.h
+++ b/src/shared/netif-naming-scheme.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/shared/nscd-flush.c b/src/shared/nscd-flush.c
index 10fdbaf326..dfc47c4234 100644
--- a/src/shared/nscd-flush.c
+++ b/src/shared/nscd-flush.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/poll.h>
#include "fd-util.h"
diff --git a/src/shared/nscd-flush.h b/src/shared/nscd-flush.h
index 22774bf4b7..5aafa9a24e 100644
--- a/src/shared/nscd-flush.h
+++ b/src/shared/nscd-flush.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int nscd_flush_cache(char **databases);
diff --git a/src/shared/nsflags.c b/src/shared/nsflags.c
index 4dbd18b868..2845041cf4 100644
--- a/src/shared/nsflags.c
+++ b/src/shared/nsflags.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
diff --git a/src/shared/nsflags.h b/src/shared/nsflags.h
index 0aeb0bc891..3d774c755c 100644
--- a/src/shared/nsflags.h
+++ b/src/shared/nsflags.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "missing_sched.h"
diff --git a/src/shared/numa-util.c b/src/shared/numa-util.c
index 3ec8ffc5b2..7e41d68662 100644
--- a/src/shared/numa-util.c
+++ b/src/shared/numa-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <sched.h>
diff --git a/src/shared/numa-util.h b/src/shared/numa-util.h
index 2a9ced74e8..2f736c9c35 100644
--- a/src/shared/numa-util.h
+++ b/src/shared/numa-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "cpu-set-util.h"
diff --git a/src/shared/offline-passwd.c b/src/shared/offline-passwd.c
index 2d14a38dfe..b607aacf57 100644
--- a/src/shared/offline-passwd.c
+++ b/src/shared/offline-passwd.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "fd-util.h"
#include "fs-util.h"
diff --git a/src/shared/offline-passwd.h b/src/shared/offline-passwd.h
index 90bdfc79be..587af7b01c 100644
--- a/src/shared/offline-passwd.h
+++ b/src/shared/offline-passwd.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <sys/types.h>
diff --git a/src/shared/openssl-util.h b/src/shared/openssl-util.h
index a7dab530e4..1b49834dd8 100644
--- a/src/shared/openssl-util.h
+++ b/src/shared/openssl-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#if HAVE_OPENSSL
diff --git a/src/shared/os-util.c b/src/shared/os-util.c
index 042e77c8c7..3b7e495846 100644
--- a/src/shared/os-util.c
+++ b/src/shared/os-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "env-file.h"
diff --git a/src/shared/os-util.h b/src/shared/os-util.h
index b54bb0916d..1d9b0b146b 100644
--- a/src/shared/os-util.h
+++ b/src/shared/os-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdio.h>
diff --git a/src/shared/output-mode.c b/src/shared/output-mode.c
index 107b345538..1645b756df 100644
--- a/src/shared/output-mode.c
+++ b/src/shared/output-mode.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "output-mode.h"
#include "string-table.h"
diff --git a/src/shared/output-mode.h b/src/shared/output-mode.h
index 1b4765b3ec..a879054b67 100644
--- a/src/shared/output-mode.h
+++ b/src/shared/output-mode.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "json.h"
diff --git a/src/shared/pager.c b/src/shared/pager.c
index 9af7009b3f..f689d9f28f 100644
--- a/src/shared/pager.c
+++ b/src/shared/pager.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stddef.h>
@@ -189,12 +189,9 @@ int pager_open(PagerFlags flags) {
/* We generally always set variables used by less, even if we end up using a different pager.
* They shouldn't hurt in any case, and ideally other pagers would look at them too. */
- if (use_secure_mode)
- r = setenv("LESSSECURE", "1", 1);
- else
- r = unsetenv("LESSSECURE");
+ r = set_unset_env("LESSSECURE", use_secure_mode ? "1" : NULL, true);
if (r < 0) {
- log_error_errno(errno, "Failed to adjust environment variable LESSSECURE: %m");
+ log_error_errno(r, "Failed to adjust environment variable LESSSECURE: %m");
_exit(EXIT_FAILURE);
}
diff --git a/src/shared/pager.h b/src/shared/pager.h
index 8299e23856..b3b1b4f6b0 100644
--- a/src/shared/pager.h
+++ b/src/shared/pager.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/shared/pam-util.c b/src/shared/pam-util.c
index f000798ce0..621e7fe802 100644
--- a/src/shared/pam-util.c
+++ b/src/shared/pam-util.c
@@ -1,3 +1,5 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
#include <security/pam_ext.h>
#include <syslog.h>
#include <stdlib.h>
diff --git a/src/shared/pam-util.h b/src/shared/pam-util.h
index 26d07b7f0c..41f1835b3c 100644
--- a/src/shared/pam-util.h
+++ b/src/shared/pam-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <security/pam_modules.h>
diff --git a/src/shared/pe-header.h b/src/shared/pe-header.h
index a362917523..54433c79b8 100644
--- a/src/shared/pe-header.h
+++ b/src/shared/pe-header.h
@@ -1,3 +1,5 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
#pragma once
#include <inttypes.h>
diff --git a/src/shared/pkcs11-util.c b/src/shared/pkcs11-util.c
index 400cebb66f..e74f0be260 100644
--- a/src/shared/pkcs11-util.c
+++ b/src/shared/pkcs11-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
diff --git a/src/shared/pkcs11-util.h b/src/shared/pkcs11-util.h
index 959e7c3e0d..f14607de84 100644
--- a/src/shared/pkcs11-util.h
+++ b/src/shared/pkcs11-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/shared/pretty-print.c b/src/shared/pretty-print.c
index f690f334a2..ca5b25a7ab 100644
--- a/src/shared/pretty-print.c
+++ b/src/shared/pretty-print.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/utsname.h>
#include <errno.h>
diff --git a/src/shared/pretty-print.h b/src/shared/pretty-print.h
index b3057ae6b8..4619f4e4d7 100644
--- a/src/shared/pretty-print.h
+++ b/src/shared/pretty-print.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
void print_separator(void);
diff --git a/src/shared/psi-util.c b/src/shared/psi-util.c
index 21e965b04b..7a184d53f7 100644
--- a/src/shared/psi-util.c
+++ b/src/shared/psi-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdio.h>
#include <unistd.h>
diff --git a/src/shared/psi-util.h b/src/shared/psi-util.h
index 9810dbec6e..415fbbdd47 100644
--- a/src/shared/psi-util.h
+++ b/src/shared/psi-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/shared/ptyfwd.c b/src/shared/ptyfwd.c
index 6bcdfff41a..754b4f5a94 100644
--- a/src/shared/ptyfwd.c
+++ b/src/shared/ptyfwd.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/shared/ptyfwd.h b/src/shared/ptyfwd.h
index 887d3cba53..f0ae6e949d 100644
--- a/src/shared/ptyfwd.h
+++ b/src/shared/ptyfwd.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/shared/pwquality-util.c b/src/shared/pwquality-util.c
index 67332833a5..4000bef89e 100644
--- a/src/shared/pwquality-util.c
+++ b/src/shared/pwquality-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <unistd.h>
diff --git a/src/shared/pwquality-util.h b/src/shared/pwquality-util.h
index a49de07990..de288bb017 100644
--- a/src/shared/pwquality-util.h
+++ b/src/shared/pwquality-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "macro.h"
diff --git a/src/shared/qrcode-util.c b/src/shared/qrcode-util.c
index 4094c4ff3b..7050e186b7 100644
--- a/src/shared/qrcode-util.c
+++ b/src/shared/qrcode-util.c
@@ -1,3 +1,5 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
#include "qrcode-util.h"
#if HAVE_QRENCODE
diff --git a/src/shared/qrcode-util.h b/src/shared/qrcode-util.h
index 036c3f7f90..6fc45c93d1 100644
--- a/src/shared/qrcode-util.h
+++ b/src/shared/qrcode-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdio.h>
diff --git a/src/shared/reboot-util.c b/src/shared/reboot-util.c
index 888f685aed..756f9d30e0 100644
--- a/src/shared/reboot-util.c
+++ b/src/shared/reboot-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <unistd.h>
diff --git a/src/shared/reboot-util.h b/src/shared/reboot-util.h
index 1e98ee1dba..bbca8b858d 100644
--- a/src/shared/reboot-util.h
+++ b/src/shared/reboot-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int update_reboot_parameter_and_warn(const char *parameter, bool keep);
diff --git a/src/shared/resize-fs.c b/src/shared/resize-fs.c
index 24a17a2ffe..33cb78babf 100644
--- a/src/shared/resize-fs.c
+++ b/src/shared/resize-fs.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <linux/btrfs.h>
#include <linux/magic.h>
diff --git a/src/shared/resize-fs.h b/src/shared/resize-fs.h
index 92b41d318c..8831fd8b40 100644
--- a/src/shared/resize-fs.h
+++ b/src/shared/resize-fs.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <inttypes.h>
diff --git a/src/shared/resolve-util.c b/src/shared/resolve-util.c
index 615cb6d852..1023b62499 100644
--- a/src/shared/resolve-util.c
+++ b/src/shared/resolve-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "conf-parser.h"
#include "resolve-util.h"
diff --git a/src/shared/resolve-util.h b/src/shared/resolve-util.h
index a7a9c77bdf..4ea24a60b3 100644
--- a/src/shared/resolve-util.h
+++ b/src/shared/resolve-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "conf-parser.h"
diff --git a/src/shared/seccomp-util.c b/src/shared/seccomp-util.c
index 4a541111f9..ccae9d4f14 100644
--- a/src/shared/seccomp-util.c
+++ b/src/shared/seccomp-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
@@ -259,10 +259,20 @@ static bool is_seccomp_filter_available(void) {
bool is_seccomp_available(void) {
static int cached_enabled = -1;
- if (cached_enabled < 0)
- cached_enabled =
- is_basic_seccomp_available() &&
- is_seccomp_filter_available();
+ if (cached_enabled < 0) {
+ int b;
+
+ b = getenv_bool_secure("SYSTEMD_SECCOMP");
+ if (b != 0) {
+ if (b < 0 && b != -ENXIO) /* ENXIO: env var unset */
+ log_debug_errno(b, "Failed to parse $SYSTEMD_SECCOMP value, ignoring.");
+
+ cached_enabled =
+ is_basic_seccomp_available() &&
+ is_seccomp_filter_available();
+ } else
+ cached_enabled = false;
+ }
return cached_enabled;
}
@@ -272,6 +282,7 @@ const SyscallFilterSet syscall_filter_sets[_SYSCALL_FILTER_SET_MAX] = {
.name = "@default",
.help = "System calls that are always permitted",
.value =
+ "brk\0"
"cacheflush\0"
"clock_getres\0"
"clock_getres_time64\0"
@@ -309,6 +320,9 @@ const SyscallFilterSet syscall_filter_sets[_SYSCALL_FILTER_SET_MAX] = {
"getuid\0"
"getuid32\0"
"membarrier\0"
+ "mmap\0"
+ "mmap2\0"
+ "munmap\0"
"nanosleep\0"
"pause\0"
"prlimit64\0"
@@ -383,7 +397,6 @@ const SyscallFilterSet syscall_filter_sets[_SYSCALL_FILTER_SET_MAX] = {
"clock_settime\0"
"clock_settime64\0"
"settimeofday\0"
- "stime\0"
},
[SYSCALL_FILTER_SET_CPU_EMULATION] = {
.name = "@cpu-emulation",
@@ -459,9 +472,6 @@ const SyscallFilterSet syscall_filter_sets[_SYSCALL_FILTER_SET_MAX] = {
"mkdirat\0"
"mknod\0"
"mknodat\0"
- "mmap\0"
- "mmap2\0"
- "munmap\0"
"newfstatat\0"
"oldfstat\0"
"oldlstat\0"
@@ -639,6 +649,7 @@ const SyscallFilterSet syscall_filter_sets[_SYSCALL_FILTER_SET_MAX] = {
"security\0"
"sgetmask\0"
"ssetmask\0"
+ "stime\0"
"stty\0"
"sysfs\0"
"tuxcall\0"
@@ -834,7 +845,6 @@ const SyscallFilterSet syscall_filter_sets[_SYSCALL_FILTER_SET_MAX] = {
"@signal\0"
"@sync\0"
"@timer\0"
- "brk\0"
"capget\0"
"capset\0"
"copy_file_range\0"
@@ -1384,9 +1394,6 @@ int seccomp_restrict_address_families(Set *address_families, bool allow_list) {
case SCMP_ARCH_X32:
case SCMP_ARCH_ARM:
case SCMP_ARCH_AARCH64:
- case SCMP_ARCH_PPC:
- case SCMP_ARCH_PPC64:
- case SCMP_ARCH_PPC64LE:
case SCMP_ARCH_MIPSEL64N32:
case SCMP_ARCH_MIPS64N32:
case SCMP_ARCH_MIPSEL64:
@@ -1403,6 +1410,9 @@ int seccomp_restrict_address_families(Set *address_families, bool allow_list) {
case SCMP_ARCH_X86:
case SCMP_ARCH_MIPSEL:
case SCMP_ARCH_MIPS:
+ case SCMP_ARCH_PPC:
+ case SCMP_ARCH_PPC64:
+ case SCMP_ARCH_PPC64LE:
default:
/* These we either know we don't support (i.e. are the ones that do use socketcall()), or we
* don't know */
diff --git a/src/shared/seccomp-util.h b/src/shared/seccomp-util.h
index ff3b96df4b..610597127e 100644
--- a/src/shared/seccomp-util.h
+++ b/src/shared/seccomp-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <seccomp.h>
diff --git a/src/shared/securebits-util.c b/src/shared/securebits-util.c
index b2abaf4f52..c867807bec 100644
--- a/src/shared/securebits-util.c
+++ b/src/shared/securebits-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stdio.h>
diff --git a/src/shared/securebits-util.h b/src/shared/securebits-util.h
index b5ec6ee0e6..f2e65cfcb0 100644
--- a/src/shared/securebits-util.h
+++ b/src/shared/securebits-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "missing_securebits.h"
diff --git a/src/shared/serialize.c b/src/shared/serialize.c
index 00b70a777e..45f57d6a53 100644
--- a/src/shared/serialize.c
+++ b/src/shared/serialize.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
diff --git a/src/shared/serialize.h b/src/shared/serialize.h
index 9e61c825aa..6d4f1ef418 100644
--- a/src/shared/serialize.h
+++ b/src/shared/serialize.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdio.h>
diff --git a/src/shared/service-util.c b/src/shared/service-util.c
index c9b684fc05..092be6ee7f 100644
--- a/src/shared/service-util.c
+++ b/src/shared/service-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <getopt.h>
#include <stdio.h>
diff --git a/src/shared/service-util.h b/src/shared/service-util.h
index 928c5961e7..360341fb2f 100644
--- a/src/shared/service-util.h
+++ b/src/shared/service-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "bus-object.h"
diff --git a/src/shared/sleep-config.c b/src/shared/sleep-config.c
index 134cedaf8b..cea51482de 100644
--- a/src/shared/sleep-config.c
+++ b/src/shared/sleep-config.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2018 Dell Inc.
***/
diff --git a/src/shared/sleep-config.h b/src/shared/sleep-config.h
index 86dfbf19be..4b30e6db53 100644
--- a/src/shared/sleep-config.h
+++ b/src/shared/sleep-config.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <linux/fiemap.h>
diff --git a/src/shared/socket-netlink.c b/src/shared/socket-netlink.c
index 23970dbe55..4a7007d06e 100644
--- a/src/shared/socket-netlink.c
+++ b/src/shared/socket-netlink.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <arpa/inet.h>
#include <errno.h>
diff --git a/src/shared/socket-netlink.h b/src/shared/socket-netlink.h
index e6cd7d9bf1..eac599159d 100644
--- a/src/shared/socket-netlink.h
+++ b/src/shared/socket-netlink.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-netlink.h"
diff --git a/src/shared/spawn-ask-password-agent.c b/src/shared/spawn-ask-password-agent.c
index ddaebf0f61..1f07b198fa 100644
--- a/src/shared/spawn-ask-password-agent.c
+++ b/src/shared/spawn-ask-password-agent.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <signal.h>
#include <stdlib.h>
diff --git a/src/shared/spawn-ask-password-agent.h b/src/shared/spawn-ask-password-agent.h
index 97b12fe268..a76cdb11fe 100644
--- a/src/shared/spawn-ask-password-agent.h
+++ b/src/shared/spawn-ask-password-agent.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/shared/spawn-polkit-agent.c b/src/shared/spawn-polkit-agent.c
index 4d6c0cae6c..a0024eb2ea 100644
--- a/src/shared/spawn-polkit-agent.c
+++ b/src/shared/spawn-polkit-agent.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <poll.h>
diff --git a/src/shared/spawn-polkit-agent.h b/src/shared/spawn-polkit-agent.h
index 56b0175944..325dfdde46 100644
--- a/src/shared/spawn-polkit-agent.h
+++ b/src/shared/spawn-polkit-agent.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/shared/specifier.c b/src/shared/specifier.c
index 112cf6f8fb..86731f8cd2 100644
--- a/src/shared/specifier.c
+++ b/src/shared/specifier.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stdbool.h>
diff --git a/src/shared/specifier.h b/src/shared/specifier.h
index 50c6cbd6ab..1323b41d98 100644
--- a/src/shared/specifier.h
+++ b/src/shared/specifier.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "string-util.h"
@@ -36,6 +36,54 @@ int specifier_user_shell(char specifier, const void *data, const void *userdata,
int specifier_tmp_dir(char specifier, const void *data, const void *userdata, char **ret);
int specifier_var_tmp_dir(char specifier, const void *data, const void *userdata, char **ret);
+/* Typically, in places where one of the above specifier is to be resolved the other similar ones are to be
+ * resolved, too. Hence let's define common macros for the relevant array entries.
+ *
+ * COMMON_SYSTEM_SPECIFIERS:
+ * %a: the native userspace architecture
+ * %b: the boot ID of the running system
+ * %B: the OS build ID, according to /etc/os-release
+ * %H: the hostname of the running system
+ * %l: the short hostname of the running system
+ * %m: the machine ID of the running system
+ * %o: the OS ID according to /etc/os-release
+ * %v: the kernel version
+ * %w: the OS version ID, according to /etc/os-release
+ * %W: the OS variant ID, according to /etc/os-release
+ *
+ * COMMON_CREDS_SPECIFIERS:
+ * %g: the groupname of the running user
+ * %G: the GID of the running user
+ * %u: the username of the running user
+ * %U: the UID of the running user
+ *
+ * COMMON_TMP_SPECIFIERS:
+ * %T: the temporary directory (e.g. /tmp, or $TMPDIR, $TEMP, $TMP)
+ * %V: the temporary directory for large, persistent stuff (e.g. /var/tmp, or $TMPDIR, $TEMP, $TMP)
+ */
+
+#define COMMON_SYSTEM_SPECIFIERS \
+ { 'a', specifier_architecture, NULL }, \
+ { 'b', specifier_boot_id, NULL }, \
+ { 'B', specifier_os_build_id, NULL }, \
+ { 'H', specifier_host_name, NULL }, \
+ { 'l', specifier_short_host_name, NULL }, \
+ { 'm', specifier_machine_id, NULL }, \
+ { 'o', specifier_os_id, NULL }, \
+ { 'v', specifier_kernel_release, NULL }, \
+ { 'w', specifier_os_version_id, NULL }, \
+ { 'W', specifier_os_variant_id, NULL }
+
+#define COMMON_CREDS_SPECIFIERS \
+ { 'g', specifier_group_name, NULL }, \
+ { 'G', specifier_group_id, NULL }, \
+ { 'u', specifier_user_name, NULL }, \
+ { 'U', specifier_user_id, NULL }
+
+#define COMMON_TMP_SPECIFIERS \
+ { 'T', specifier_tmp_dir, NULL }, \
+ { 'V', specifier_var_tmp_dir, NULL }
+
static inline char* specifier_escape(const char *string) {
return strreplace(string, "%", "%%");
}
diff --git a/src/shared/switch-root.c b/src/shared/switch-root.c
index bd89cb4ef1..e0dd17a2f8 100644
--- a/src/shared/switch-root.c
+++ b/src/shared/switch-root.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/shared/switch-root.h b/src/shared/switch-root.h
index f4d48cb431..4e04283e53 100644
--- a/src/shared/switch-root.h
+++ b/src/shared/switch-root.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/shared/sysctl-util.c b/src/shared/sysctl-util.c
index 8543dbd2d0..670c33108b 100644
--- a/src/shared/sysctl-util.c
+++ b/src/shared/sysctl-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/shared/sysctl-util.h b/src/shared/sysctl-util.h
index 316cfcccf9..32364196f9 100644
--- a/src/shared/sysctl-util.h
+++ b/src/shared/sysctl-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/shared/test-tables.h b/src/shared/test-tables.h
index 4eeda3b1bb..bb8177b649 100644
--- a/src/shared/test-tables.h
+++ b/src/shared/test-tables.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdio.h>
#include <stdlib.h>
diff --git a/src/shared/tests.c b/src/shared/tests.c
index 808e2e6040..ab7d799029 100644
--- a/src/shared/tests.c
+++ b/src/shared/tests.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sched.h>
#include <signal.h>
diff --git a/src/shared/tests.h b/src/shared/tests.h
index 552e0f2c22..c1350763ad 100644
--- a/src/shared/tests.h
+++ b/src/shared/tests.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/shared/tmpfile-util-label.c b/src/shared/tmpfile-util-label.c
index c12d7c1375..d37c0b0845 100644
--- a/src/shared/tmpfile-util-label.c
+++ b/src/shared/tmpfile-util-label.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/stat.h>
diff --git a/src/shared/tmpfile-util-label.h b/src/shared/tmpfile-util-label.h
index 97a875161b..01afc0658d 100644
--- a/src/shared/tmpfile-util-label.h
+++ b/src/shared/tmpfile-util-label.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdio.h>
diff --git a/src/shared/tomoyo-util.c b/src/shared/tomoyo-util.c
index 75c24d8007..2347179cbc 100644
--- a/src/shared/tomoyo-util.c
+++ b/src/shared/tomoyo-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <unistd.h>
diff --git a/src/shared/tomoyo-util.h b/src/shared/tomoyo-util.h
index 06e8227857..a6ee7d4b26 100644
--- a/src/shared/tomoyo-util.h
+++ b/src/shared/tomoyo-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/shared/udev-util.c b/src/shared/udev-util.c
index 33272de4bc..030922eca9 100644
--- a/src/shared/udev-util.c
+++ b/src/shared/udev-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <unistd.h>
@@ -6,13 +6,16 @@
#include "alloc-util.h"
#include "device-util.h"
#include "env-file.h"
+#include "escape.h"
#include "log.h"
+#include "macro.h"
#include "parse-util.h"
#include "path-util.h"
#include "signal-util.h"
#include "string-table.h"
#include "string-util.h"
#include "udev-util.h"
+#include "utf8.h"
static const char* const resolve_name_timing_table[_RESOLVE_NAME_TIMING_MAX] = {
[RESOLVE_NAME_NEVER] = "never",
@@ -320,3 +323,49 @@ bool device_for_action(sd_device *dev, DeviceAction action) {
return a == action;
}
+
+int udev_rule_parse_value(char *str, char **ret_value, char **ret_endpos) {
+ char *i, *j;
+ int r;
+ bool is_escaped;
+
+ /* value must be double quotated */
+ is_escaped = str[0] == 'e';
+ str += is_escaped;
+ if (str[0] != '"')
+ return -EINVAL;
+ str++;
+
+ if (!is_escaped) {
+ /* unescape double quotation '\"'->'"' */
+ for (i = j = str; *i != '"'; i++, j++) {
+ if (*i == '\0')
+ return -EINVAL;
+ if (i[0] == '\\' && i[1] == '"')
+ i++;
+ *j = *i;
+ }
+ j[0] = '\0';
+ } else {
+ _cleanup_free_ char *unescaped = NULL;
+
+ /* find the end position of value */
+ for (i = str; *i != '"'; i++) {
+ if (i[0] == '\\')
+ i++;
+ if (*i == '\0')
+ return -EINVAL;
+ }
+ i[0] = '\0';
+
+ r = cunescape_length(str, i - str, 0, &unescaped);
+ if (r < 0)
+ return r;
+ assert(r <= i - str);
+ memcpy(str, unescaped, r + 1);
+ }
+
+ *ret_value = str;
+ *ret_endpos = i + 1;
+ return 0;
+}
diff --git a/src/shared/udev-util.h b/src/shared/udev-util.h
index 58803ea522..270861e55e 100644
--- a/src/shared/udev-util.h
+++ b/src/shared/udev-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-device.h"
@@ -32,3 +32,5 @@ int device_wait_for_initialization(sd_device *device, const char *subsystem, use
int device_wait_for_devlink(const char *path, const char *subsystem, usec_t deadline, sd_device **ret);
int device_is_renaming(sd_device *dev);
bool device_for_action(sd_device *dev, DeviceAction action);
+
+int udev_rule_parse_value(char *str, char **ret_value, char **ret_endpos);
diff --git a/src/shared/uid-range.c b/src/shared/uid-range.c
index 201d27ab63..5d5bf7f21d 100644
--- a/src/shared/uid-range.c
+++ b/src/shared/uid-range.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stdlib.h>
diff --git a/src/shared/uid-range.h b/src/shared/uid-range.h
index 49ba38287e..ef168cdb33 100644
--- a/src/shared/uid-range.h
+++ b/src/shared/uid-range.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/shared/unit-file.c b/src/shared/unit-file.c
index 3b51c7c998..4c307199e6 100644
--- a/src/shared/unit-file.c
+++ b/src/shared/unit-file.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "sd-id128.h"
diff --git a/src/shared/unit-file.h b/src/shared/unit-file.h
index d36bb07cc2..5463b0ab13 100644
--- a/src/shared/unit-file.h
+++ b/src/shared/unit-file.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/shared/user-record-nss.c b/src/shared/user-record-nss.c
index d06c8abdbe..88b8fc2f8f 100644
--- a/src/shared/user-record-nss.c
+++ b/src/shared/user-record-nss.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "errno-util.h"
#include "format-util.h"
diff --git a/src/shared/user-record-nss.h b/src/shared/user-record-nss.h
index e2a87f664c..22ab04d6ee 100644
--- a/src/shared/user-record-nss.h
+++ b/src/shared/user-record-nss.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <grp.h>
diff --git a/src/shared/user-record-show.c b/src/shared/user-record-show.c
index 9046fafcb2..29790282b4 100644
--- a/src/shared/user-record-show.c
+++ b/src/shared/user-record-show.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "format-util.h"
#include "fs-util.h"
diff --git a/src/shared/user-record-show.h b/src/shared/user-record-show.h
index 4dcee180a2..dcef065d92 100644
--- a/src/shared/user-record-show.h
+++ b/src/shared/user-record-show.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "user-record.h"
diff --git a/src/shared/user-record.c b/src/shared/user-record.c
index 7e7b28eb55..6c48c56a2a 100644
--- a/src/shared/user-record.c
+++ b/src/shared/user-record.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/mount.h>
@@ -2062,7 +2062,7 @@ bool user_record_compatible(UserRecord *a, UserRecord *b) {
assert(a);
assert(b);
- /* If either lacks a the regular section, we can't really decide, let's hence say they are
+ /* If either lacks the regular section, we can't really decide, let's hence say they are
* incompatible. */
if (!(a->mask & b->mask & USER_RECORD_REGULAR))
return false;
diff --git a/src/shared/user-record.h b/src/shared/user-record.h
index 2e74b910c2..542a0dc84a 100644
--- a/src/shared/user-record.h
+++ b/src/shared/user-record.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <inttypes.h>
diff --git a/src/shared/userdb.c b/src/shared/userdb.c
index 57e58a61a9..2d480283d1 100644
--- a/src/shared/userdb.c
+++ b/src/shared/userdb.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/auxv.h>
diff --git a/src/shared/userdb.h b/src/shared/userdb.h
index 2464f54c3e..ee207b518e 100644
--- a/src/shared/userdb.h
+++ b/src/shared/userdb.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <sys/socket.h>
diff --git a/src/shared/utmp-wtmp.c b/src/shared/utmp-wtmp.c
index 9edcd8302a..b36bc20512 100644
--- a/src/shared/utmp-wtmp.c
+++ b/src/shared/utmp-wtmp.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/shared/utmp-wtmp.h b/src/shared/utmp-wtmp.h
index fe55bad12d..3e71f76b27 100644
--- a/src/shared/utmp-wtmp.h
+++ b/src/shared/utmp-wtmp.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/shared/varlink.c b/src/shared/varlink.c
index fabfe78280..e7be33ca70 100644
--- a/src/shared/varlink.c
+++ b/src/shared/varlink.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/poll.h>
diff --git a/src/shared/varlink.h b/src/shared/varlink.h
index 030db39b2f..7ea1f9113f 100644
--- a/src/shared/varlink.h
+++ b/src/shared/varlink.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-event.h"
diff --git a/src/shared/verbs.c b/src/shared/verbs.c
index d2744b6918..2d19172c6f 100644
--- a/src/shared/verbs.c
+++ b/src/shared/verbs.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <getopt.h>
diff --git a/src/shared/verbs.h b/src/shared/verbs.h
index b6a1afcdee..245bb37ae4 100644
--- a/src/shared/verbs.h
+++ b/src/shared/verbs.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/shared/vlan-util.c b/src/shared/vlan-util.c
index 180f56ede8..cb43d50220 100644
--- a/src/shared/vlan-util.c
+++ b/src/shared/vlan-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "conf-parser.h"
#include "parse-util.h"
diff --git a/src/shared/vlan-util.h b/src/shared/vlan-util.h
index c55adee3c0..0336908bf3 100644
--- a/src/shared/vlan-util.h
+++ b/src/shared/vlan-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/shared/volatile-util.c b/src/shared/volatile-util.c
index 5ca6ab3376..3323897a4c 100644
--- a/src/shared/volatile-util.c
+++ b/src/shared/volatile-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
diff --git a/src/shared/volatile-util.h b/src/shared/volatile-util.h
index 2d31bb1174..9a1bb384e9 100644
--- a/src/shared/volatile-util.h
+++ b/src/shared/volatile-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
typedef enum VolatileMode {
diff --git a/src/shared/watchdog.c b/src/shared/watchdog.c
index 4d3d8828f5..d33acafe64 100644
--- a/src/shared/watchdog.c
+++ b/src/shared/watchdog.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
@@ -7,6 +7,7 @@
#include <unistd.h>
#include <linux/watchdog.h>
+#include "errno-util.h"
#include "fd-util.h"
#include "log.h"
#include "string-util.h"
@@ -19,44 +20,40 @@ static usec_t watchdog_timeout = USEC_INFINITY;
static usec_t watchdog_last_ping = USEC_INFINITY;
static int update_timeout(void) {
- int r;
-
if (watchdog_fd < 0)
return 0;
-
if (watchdog_timeout == USEC_INFINITY)
return 0;
- else if (watchdog_timeout == 0) {
+
+ if (watchdog_timeout == 0) {
int flags;
flags = WDIOS_DISABLECARD;
- r = ioctl(watchdog_fd, WDIOC_SETOPTIONS, &flags);
- if (r < 0)
+ if (ioctl(watchdog_fd, WDIOC_SETOPTIONS, &flags) < 0)
return log_warning_errno(errno, "Failed to disable hardware watchdog: %m");
} else {
- int sec, flags;
char buf[FORMAT_TIMESPAN_MAX];
+ int sec, flags;
+ usec_t t;
- sec = (int) DIV_ROUND_UP(watchdog_timeout, USEC_PER_SEC);
- r = ioctl(watchdog_fd, WDIOC_SETTIMEOUT, &sec);
- if (r < 0)
+ t = DIV_ROUND_UP(watchdog_timeout, USEC_PER_SEC);
+ sec = (int) t >= INT_MAX ? INT_MAX : t; /* Saturate */
+ if (ioctl(watchdog_fd, WDIOC_SETTIMEOUT, &sec) < 0)
return log_warning_errno(errno, "Failed to set timeout to %is: %m", sec);
watchdog_timeout = (usec_t) sec * USEC_PER_SEC;
log_info("Set hardware watchdog to %s.", format_timespan(buf, sizeof(buf), watchdog_timeout, 0));
flags = WDIOS_ENABLECARD;
- r = ioctl(watchdog_fd, WDIOC_SETOPTIONS, &flags);
- if (r < 0) {
+ if (ioctl(watchdog_fd, WDIOC_SETOPTIONS, &flags) < 0) {
/* ENOTTY means the watchdog is always enabled so we're fine */
- log_full(errno == ENOTTY ? LOG_DEBUG : LOG_WARNING,
+ log_full(ERRNO_IS_NOT_SUPPORTED(errno) ? LOG_DEBUG : LOG_WARNING,
"Failed to enable hardware watchdog: %m");
- if (errno != ENOTTY)
+ if (!ERRNO_IS_NOT_SUPPORTED(errno))
return -errno;
}
- r = ioctl(watchdog_fd, WDIOC_KEEPALIVE, 0);
- if (r < 0)
+ if (ioctl(watchdog_fd, WDIOC_KEEPALIVE, 0) < 0)
return log_warning_errno(errno, "Failed to ping hardware watchdog: %m");
watchdog_last_ping = now(clock_boottime_or_monotonic());
@@ -67,19 +64,23 @@ static int update_timeout(void) {
static int open_watchdog(void) {
struct watchdog_info ident;
+ const char *fn;
if (watchdog_fd >= 0)
return 0;
- watchdog_fd = open(watchdog_device ?: "/dev/watchdog",
- O_WRONLY|O_CLOEXEC);
+ fn = watchdog_device ?: "/dev/watchdog";
+ watchdog_fd = open(fn, O_WRONLY|O_CLOEXEC);
if (watchdog_fd < 0)
- return -errno;
+ return log_debug_errno(errno, "Failed to open watchdog device %s: %m", fn);
- if (ioctl(watchdog_fd, WDIOC_GETSUPPORT, &ident) >= 0)
- log_info("Hardware watchdog '%s', version %x",
+ if (ioctl(watchdog_fd, WDIOC_GETSUPPORT, &ident) < 0)
+ log_debug_errno(errno, "Hardware watchdog %s does not support WDIOC_GETSUPPORT ioctl: %m", fn);
+ else
+ log_info("Using hardware watchdog '%s', version %x, device %s",
ident.identity,
- ident.firmware_version);
+ ident.firmware_version,
+ fn);
return update_timeout();
}
@@ -102,8 +103,8 @@ int watchdog_set_timeout(usec_t *usec) {
watchdog_timeout = *usec;
- /* If we didn't open the watchdog yet and didn't get any
- * explicit timeout value set, don't do anything */
+ /* If we didn't open the watchdog yet and didn't get any explicit timeout value set, don't do
+ * anything */
if (watchdog_fd < 0 && watchdog_timeout == USEC_INFINITY)
return 0;
@@ -113,13 +114,11 @@ int watchdog_set_timeout(usec_t *usec) {
r = update_timeout();
*usec = watchdog_timeout;
-
return r;
}
usec_t watchdog_runtime_wait(void) {
- usec_t rtwait;
- usec_t ntime;
+ usec_t rtwait, ntime;
if (!timestamp_is_set(watchdog_timeout))
return USEC_INFINITY;
@@ -155,18 +154,14 @@ int watchdog_ping(void) {
return r;
}
- r = ioctl(watchdog_fd, WDIOC_KEEPALIVE, 0);
- if (r < 0)
+ if (ioctl(watchdog_fd, WDIOC_KEEPALIVE, 0) < 0)
return log_warning_errno(errno, "Failed to ping hardware watchdog: %m");
watchdog_last_ping = ntime;
-
return 0;
}
void watchdog_close(bool disarm) {
- int r;
-
if (watchdog_fd < 0)
return;
@@ -175,8 +170,7 @@ void watchdog_close(bool disarm) {
/* Explicitly disarm it */
flags = WDIOS_DISABLECARD;
- r = ioctl(watchdog_fd, WDIOC_SETOPTIONS, &flags);
- if (r < 0)
+ if (ioctl(watchdog_fd, WDIOC_SETOPTIONS, &flags) < 0)
log_warning_errno(errno, "Failed to disable hardware watchdog: %m");
/* To be sure, use magic close logic, too */
diff --git a/src/shared/watchdog.h b/src/shared/watchdog.h
index ce739fd8a3..b7587db3ab 100644
--- a/src/shared/watchdog.h
+++ b/src/shared/watchdog.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/shared/web-util.c b/src/shared/web-util.c
index edf650d200..82cd5fbd6b 100644
--- a/src/shared/web-util.c
+++ b/src/shared/web-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdbool.h>
diff --git a/src/shared/web-util.h b/src/shared/web-util.h
index c9e67e5c0a..ec54669f50 100644
--- a/src/shared/web-util.h
+++ b/src/shared/web-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/shared/wifi-util.c b/src/shared/wifi-util.c
index 22bb3041fb..ae5cecc25d 100644
--- a/src/shared/wifi-util.c
+++ b/src/shared/wifi-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <net/ethernet.h>
#include <linux/nl80211.h>
diff --git a/src/shared/wifi-util.h b/src/shared/wifi-util.h
index c7553fafde..01b0c3c635 100644
--- a/src/shared/wifi-util.h
+++ b/src/shared/wifi-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
diff --git a/src/shared/xml.c b/src/shared/xml.c
index 78ac42f080..8ff3feafe4 100644
--- a/src/shared/xml.c
+++ b/src/shared/xml.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stddef.h>
diff --git a/src/shared/xml.h b/src/shared/xml.h
index 8da2ff5f75..217b3b0e40 100644
--- a/src/shared/xml.h
+++ b/src/shared/xml.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
enum {
diff --git a/src/shutdown/shutdown.c b/src/shutdown/shutdown.c
index 83c4bf4b3d..0d07865542 100644
--- a/src/shutdown/shutdown.c
+++ b/src/shutdown/shutdown.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2010 ProFUSION embedded systems
***/
@@ -232,8 +232,8 @@ static void sync_with_progress(void) {
BLOCK_SIGNALS(SIGCHLD);
- /* Due to the possibility of the sync operation hanging, we fork a child process and monitor the progress. If
- * the timeout lapses, the assumption is that that particular sync stalled. */
+ /* Due to the possibility of the sync operation hanging, we fork a child process and monitor
+ * the progress. If the timeout lapses, the assumption is that the particular sync stalled. */
r = asynchronous_sync(&pid);
if (r < 0) {
diff --git a/src/shutdown/umount.c b/src/shutdown/umount.c
index 6eebaf7abc..3a72a13e1a 100644
--- a/src/shutdown/umount.c
+++ b/src/shutdown/umount.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2010 ProFUSION embedded systems
***/
@@ -514,10 +514,8 @@ static int remount_with_timeout(MountPoint *m, int umount_log_level) {
assert(m);
- /* Due to the possibility of a remount operation hanging, we
- * fork a child process and set a timeout. If the timeout
- * lapses, the assumption is that that particular remount
- * failed. */
+ /* Due to the possibility of a remount operation hanging, we fork a child process and set a
+ * timeout. If the timeout lapses, the assumption is that the particular remount failed. */
r = safe_fork("(sd-remount)", FORK_RESET_SIGNALS|FORK_CLOSE_ALL_FDS|FORK_LOG|FORK_REOPEN_LOG, &pid);
if (r < 0)
return r;
@@ -552,10 +550,8 @@ static int umount_with_timeout(MountPoint *m, int umount_log_level) {
assert(m);
- /* Due to the possibility of a umount operation hanging, we
- * fork a child process and set a timeout. If the timeout
- * lapses, the assumption is that that particular umount
- * failed. */
+ /* Due to the possibility of a umount operation hanging, we fork a child process and set a
+ * timeout. If the timeout lapses, the assumption is that the particular umount failed. */
r = safe_fork("(sd-umount)", FORK_RESET_SIGNALS|FORK_CLOSE_ALL_FDS|FORK_LOG|FORK_REOPEN_LOG, &pid);
if (r < 0)
return r;
diff --git a/src/shutdown/umount.h b/src/shutdown/umount.h
index b01062484f..fac1a12406 100644
--- a/src/shutdown/umount.h
+++ b/src/shutdown/umount.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
/***
diff --git a/src/sleep/sleep.c b/src/sleep/sleep.c
index 6bb1a04793..39ab554290 100644
--- a/src/sleep/sleep.c
+++ b/src/sleep/sleep.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2010-2017 Canonical
Copyright © 2018 Dell Inc.
diff --git a/src/socket-proxy/socket-proxyd.c b/src/socket-proxy/socket-proxyd.c
index 64dd623c80..4391d9f1f5 100644
--- a/src/socket-proxy/socket-proxyd.c
+++ b/src/socket-proxy/socket-proxyd.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/stdio-bridge/stdio-bridge.c b/src/stdio-bridge/stdio-bridge.c
index ca145aebf9..81d50717b2 100644
--- a/src/stdio-bridge/stdio-bridge.c
+++ b/src/stdio-bridge/stdio-bridge.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <getopt.h>
diff --git a/src/sulogin-shell/sulogin-shell.c b/src/sulogin-shell/sulogin-shell.c
index 4cf9d22c87..b0d71ff580 100644
--- a/src/sulogin-shell/sulogin-shell.c
+++ b/src/sulogin-shell/sulogin-shell.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2017 Felipe Sateler
***/
diff --git a/src/sysctl/sysctl.c b/src/sysctl/sysctl.c
index e44a0433b1..e263d459a8 100644
--- a/src/sysctl/sysctl.c
+++ b/src/sysctl/sysctl.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <getopt.h>
diff --git a/src/system-update-generator/system-update-generator.c b/src/system-update-generator/system-update-generator.c
index 666affca19..26874cf877 100644
--- a/src/system-update-generator/system-update-generator.c
+++ b/src/system-update-generator/system-update-generator.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <unistd.h>
diff --git a/src/systemctl/systemctl-add-dependency.c b/src/systemctl/systemctl-add-dependency.c
index 049719acdf..2a0290de7f 100644
--- a/src/systemctl/systemctl-add-dependency.c
+++ b/src/systemctl/systemctl-add-dependency.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "bus-error.h"
#include "bus-locator.h"
diff --git a/src/systemctl/systemctl-add-dependency.h b/src/systemctl/systemctl-add-dependency.h
index 14572d520e..deb0da4f30 100644
--- a/src/systemctl/systemctl-add-dependency.h
+++ b/src/systemctl/systemctl-add-dependency.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int add_dependency(int argc, char *argv[], void *userdata);
diff --git a/src/systemctl/systemctl-cancel-job.c b/src/systemctl/systemctl-cancel-job.c
index ff211f3a08..4c5203c1f9 100644
--- a/src/systemctl/systemctl-cancel-job.c
+++ b/src/systemctl/systemctl-cancel-job.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "bus-error.h"
#include "bus-locator.h"
diff --git a/src/systemctl/systemctl-cancel-job.h b/src/systemctl/systemctl-cancel-job.h
index f337beac46..75151d67fc 100644
--- a/src/systemctl/systemctl-cancel-job.h
+++ b/src/systemctl/systemctl-cancel-job.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int cancel_job(int argc, char *argv[], void *userdata);
diff --git a/src/systemctl/systemctl-clean-or-freeze.c b/src/systemctl/systemctl-clean-or-freeze.c
index ca15f75146..eca3a6d354 100644
--- a/src/systemctl/systemctl-clean-or-freeze.c
+++ b/src/systemctl/systemctl-clean-or-freeze.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "bus-error.h"
#include "bus-locator.h"
diff --git a/src/systemctl/systemctl-clean-or-freeze.h b/src/systemctl/systemctl-clean-or-freeze.h
index 5db9871e51..8e73f4efbe 100644
--- a/src/systemctl/systemctl-clean-or-freeze.h
+++ b/src/systemctl/systemctl-clean-or-freeze.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int clean_or_freeze_unit(int argc, char *argv[], void *userdata);
diff --git a/src/systemctl/systemctl-compat-halt.c b/src/systemctl/systemctl-compat-halt.c
index dd76d8ee34..8e41bd6cb8 100644
--- a/src/systemctl/systemctl-compat-halt.c
+++ b/src/systemctl/systemctl-compat-halt.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <getopt.h>
#include <unistd.h>
diff --git a/src/systemctl/systemctl-compat-halt.h b/src/systemctl/systemctl-compat-halt.h
index da89aa5763..85b9dda0e4 100644
--- a/src/systemctl/systemctl-compat-halt.h
+++ b/src/systemctl/systemctl-compat-halt.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int halt_parse_argv(int argc, char *argv[]);
diff --git a/src/systemctl/systemctl-compat-runlevel.c b/src/systemctl/systemctl-compat-runlevel.c
index 39dbba861e..e05b1b4705 100644
--- a/src/systemctl/systemctl-compat-runlevel.c
+++ b/src/systemctl/systemctl-compat-runlevel.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <getopt.h>
diff --git a/src/systemctl/systemctl-compat-runlevel.h b/src/systemctl/systemctl-compat-runlevel.h
index 5c89f3decc..658524bf1e 100644
--- a/src/systemctl/systemctl-compat-runlevel.h
+++ b/src/systemctl/systemctl-compat-runlevel.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int runlevel_parse_argv(int argc, char *argv[]);
diff --git a/src/systemctl/systemctl-compat-shutdown.c b/src/systemctl/systemctl-compat-shutdown.c
index aca90c93c2..0c7d18b6d4 100644
--- a/src/systemctl/systemctl-compat-shutdown.c
+++ b/src/systemctl/systemctl-compat-shutdown.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <getopt.h>
diff --git a/src/systemctl/systemctl-compat-shutdown.h b/src/systemctl/systemctl-compat-shutdown.h
index 79a317d053..7acf9414c9 100644
--- a/src/systemctl/systemctl-compat-shutdown.h
+++ b/src/systemctl/systemctl-compat-shutdown.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int shutdown_parse_argv(int argc, char *argv[]);
diff --git a/src/systemctl/systemctl-compat-telinit.c b/src/systemctl/systemctl-compat-telinit.c
index 35437ab4c1..148574d52c 100644
--- a/src/systemctl/systemctl-compat-telinit.c
+++ b/src/systemctl/systemctl-compat-telinit.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <getopt.h>
diff --git a/src/systemctl/systemctl-compat-telinit.h b/src/systemctl/systemctl-compat-telinit.h
index ed3e08ef9b..1a2bcd4405 100644
--- a/src/systemctl/systemctl-compat-telinit.h
+++ b/src/systemctl/systemctl-compat-telinit.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int telinit_parse_argv(int argc, char *argv[]);
diff --git a/src/systemctl/systemctl-daemon-reload.c b/src/systemctl/systemctl-daemon-reload.c
index 6730877e6d..03ba908383 100644
--- a/src/systemctl/systemctl-daemon-reload.c
+++ b/src/systemctl/systemctl-daemon-reload.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "bus-error.h"
#include "bus-locator.h"
diff --git a/src/systemctl/systemctl-daemon-reload.h b/src/systemctl/systemctl-daemon-reload.h
index 01fd500bf6..a9fc00770a 100644
--- a/src/systemctl/systemctl-daemon-reload.h
+++ b/src/systemctl/systemctl-daemon-reload.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int daemon_reload(int argc, char *argv[], void *userdata);
diff --git a/src/systemctl/systemctl-edit.c b/src/systemctl/systemctl-edit.c
index d6f595d477..f6e8671a38 100644
--- a/src/systemctl/systemctl-edit.c
+++ b/src/systemctl/systemctl-edit.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "bus-error.h"
#include "copy.h"
diff --git a/src/systemctl/systemctl-edit.h b/src/systemctl/systemctl-edit.h
index 98cb942688..fe7e4dc757 100644
--- a/src/systemctl/systemctl-edit.h
+++ b/src/systemctl/systemctl-edit.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int cat(int argc, char *argv[], void *userdata);
diff --git a/src/systemctl/systemctl-enable.c b/src/systemctl/systemctl-enable.c
index c9daeb15ba..8f053ca649 100644
--- a/src/systemctl/systemctl-enable.c
+++ b/src/systemctl/systemctl-enable.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "bus-error.h"
#include "bus-locator.h"
diff --git a/src/systemctl/systemctl-enable.h b/src/systemctl/systemctl-enable.h
index 33802b437b..43f60e78e3 100644
--- a/src/systemctl/systemctl-enable.h
+++ b/src/systemctl/systemctl-enable.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int enable_unit(int argc, char *argv[], void *userdata);
diff --git a/src/systemctl/systemctl-is-active.c b/src/systemctl/systemctl-is-active.c
index 18eba2d82e..3d99b0deb6 100644
--- a/src/systemctl/systemctl-is-active.c
+++ b/src/systemctl/systemctl-is-active.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "bus-error.h"
#include "bus-locator.h"
diff --git a/src/systemctl/systemctl-is-active.h b/src/systemctl/systemctl-is-active.h
index 18b0e1d9aa..9a5238e8c0 100644
--- a/src/systemctl/systemctl-is-active.h
+++ b/src/systemctl/systemctl-is-active.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int check_unit_active(int argc, char *argv[], void *userdata);
diff --git a/src/systemctl/systemctl-is-enabled.c b/src/systemctl/systemctl-is-enabled.c
index dd64d2e8be..02ef8df86e 100644
--- a/src/systemctl/systemctl-is-enabled.c
+++ b/src/systemctl/systemctl-is-enabled.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "bus-error.h"
#include "bus-locator.h"
diff --git a/src/systemctl/systemctl-is-enabled.h b/src/systemctl/systemctl-is-enabled.h
index 860153e420..5cb9e5c537 100644
--- a/src/systemctl/systemctl-is-enabled.h
+++ b/src/systemctl/systemctl-is-enabled.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int unit_is_enabled(int argc, char *argv[], void *userdata);
diff --git a/src/systemctl/systemctl-is-system-running.c b/src/systemctl/systemctl-is-system-running.c
index 96186ee6e6..ecebf0d114 100644
--- a/src/systemctl/systemctl-is-system-running.c
+++ b/src/systemctl/systemctl-is-system-running.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "sd-event.h"
#include "sd-daemon.h"
diff --git a/src/systemctl/systemctl-is-system-running.h b/src/systemctl/systemctl-is-system-running.h
index c955f32e2d..3d7e9fb83d 100644
--- a/src/systemctl/systemctl-is-system-running.h
+++ b/src/systemctl/systemctl-is-system-running.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int is_system_running(int argc, char *argv[], void *userdata);
diff --git a/src/systemctl/systemctl-kill.c b/src/systemctl/systemctl-kill.c
index 258546f7c1..810aad108a 100644
--- a/src/systemctl/systemctl-kill.c
+++ b/src/systemctl/systemctl-kill.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "bus-error.h"
#include "bus-locator.h"
diff --git a/src/systemctl/systemctl-kill.h b/src/systemctl/systemctl-kill.h
index d904612e4e..a42d4f1f90 100644
--- a/src/systemctl/systemctl-kill.h
+++ b/src/systemctl/systemctl-kill.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int kill_unit(int argc, char *argv[], void *userdata);
diff --git a/src/systemctl/systemctl-list-dependencies.c b/src/systemctl/systemctl-list-dependencies.c
index 9aedcc530f..821998eb4f 100644
--- a/src/systemctl/systemctl-list-dependencies.c
+++ b/src/systemctl/systemctl-list-dependencies.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "locale-util.h"
#include "sort-util.h"
diff --git a/src/systemctl/systemctl-list-dependencies.h b/src/systemctl/systemctl-list-dependencies.h
index cdc7fc2f64..7246570144 100644
--- a/src/systemctl/systemctl-list-dependencies.h
+++ b/src/systemctl/systemctl-list-dependencies.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int list_dependencies(int argc, char *argv[], void *userdata);
diff --git a/src/systemctl/systemctl-list-jobs.c b/src/systemctl/systemctl-list-jobs.c
index 64a8d6779c..8b028c013a 100644
--- a/src/systemctl/systemctl-list-jobs.c
+++ b/src/systemctl/systemctl-list-jobs.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "bus-error.h"
#include "bus-locator.h"
diff --git a/src/systemctl/systemctl-list-jobs.h b/src/systemctl/systemctl-list-jobs.h
index 40d6e83108..aa49696394 100644
--- a/src/systemctl/systemctl-list-jobs.h
+++ b/src/systemctl/systemctl-list-jobs.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int list_jobs(int argc, char *argv[], void *userdata);
diff --git a/src/systemctl/systemctl-list-machines.c b/src/systemctl/systemctl-list-machines.c
index 424778c803..48d0e8bde4 100644
--- a/src/systemctl/systemctl-list-machines.c
+++ b/src/systemctl/systemctl-list-machines.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <unistd.h>
diff --git a/src/systemctl/systemctl-list-machines.h b/src/systemctl/systemctl-list-machines.h
index c20b0e9086..4a33e2b27c 100644
--- a/src/systemctl/systemctl-list-machines.h
+++ b/src/systemctl/systemctl-list-machines.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <inttypes.h>
diff --git a/src/systemctl/systemctl-list-unit-files.c b/src/systemctl/systemctl-list-unit-files.c
index 508909a373..e1bf876620 100644
--- a/src/systemctl/systemctl-list-unit-files.c
+++ b/src/systemctl/systemctl-list-unit-files.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "bus-error.h"
#include "bus-locator.h"
diff --git a/src/systemctl/systemctl-list-unit-files.h b/src/systemctl/systemctl-list-unit-files.h
index 12f84923a4..387233e01c 100644
--- a/src/systemctl/systemctl-list-unit-files.h
+++ b/src/systemctl/systemctl-list-unit-files.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int list_unit_files(int argc, char *argv[], void *userdata);
diff --git a/src/systemctl/systemctl-list-units.c b/src/systemctl/systemctl-list-units.c
index 15d8e4b234..c7a91ba4f8 100644
--- a/src/systemctl/systemctl-list-units.c
+++ b/src/systemctl/systemctl-list-units.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "sd-login.h"
@@ -90,6 +90,7 @@ static int get_unit_list_recursive(
static int output_units_list(const UnitInfo *unit_infos, unsigned c) {
_cleanup_(table_unrefp) Table *table = NULL;
+ unsigned job_count = 0;
int r;
table = table_new("", "unit", "load", "active", "sub", "job", "description");
@@ -108,8 +109,7 @@ static int output_units_list(const UnitInfo *unit_infos, unsigned c) {
(void) table_set_empty_string(table, "-");
- int job_count = 0;
- for (const UnitInfo *u = unit_infos; unit_infos && u < unit_infos + c; u++) {
+ for (const UnitInfo *u = unit_infos; unit_infos && u - unit_infos < c; u++) {
_cleanup_free_ char *j = NULL;
const char *on_underline = "", *on_loaded = "", *on_active = "";
const char *on_circle = "", *id;
@@ -156,7 +156,7 @@ static int output_units_list(const UnitInfo *unit_infos, unsigned c) {
TABLE_STRING, u->sub_state,
TABLE_SET_BOTH_COLORS, on_active,
TABLE_STRING, u->job_id ? u->job_type: "",
- TABLE_SET_BOTH_COLORS, u->job_id ? on_underline : "",
+ TABLE_SET_BOTH_COLORS, on_underline,
TABLE_STRING, u->description,
TABLE_SET_BOTH_COLORS, on_underline);
if (r < 0)
@@ -186,7 +186,8 @@ static int output_units_list(const UnitInfo *unit_infos, unsigned c) {
"LOAD = Reflects whether the unit definition was properly loaded.\n"
"ACTIVE = The high-level unit activation state, i.e. generalization of SUB.\n"
"SUB = The low-level unit activation state, values depend on unit type.");
- puts(job_count ? "JOB = Pending job for the unit.\n" : "");
+ if (job_count > 0)
+ puts("JOB = Pending job for the unit.\n");
on = ansi_highlight();
off = ansi_normal();
} else {
diff --git a/src/systemctl/systemctl-list-units.h b/src/systemctl/systemctl-list-units.h
index a4c9775837..ef27627712 100644
--- a/src/systemctl/systemctl-list-units.h
+++ b/src/systemctl/systemctl-list-units.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int list_units(int argc, char *argv[], void *userdata);
diff --git a/src/systemctl/systemctl-log-setting.c b/src/systemctl/systemctl-log-setting.c
index 435ab0e480..64984e4a81 100644
--- a/src/systemctl/systemctl-log-setting.c
+++ b/src/systemctl/systemctl-log-setting.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "bus-error.h"
#include "bus-locator.h"
diff --git a/src/systemctl/systemctl-log-setting.h b/src/systemctl/systemctl-log-setting.h
index 7e134a1060..9a2e793f03 100644
--- a/src/systemctl/systemctl-log-setting.h
+++ b/src/systemctl/systemctl-log-setting.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int log_setting(int argc, char *argv[], void *userdata);
diff --git a/src/systemctl/systemctl-logind.c b/src/systemctl/systemctl-logind.c
index 7cd727986b..405f12a33d 100644
--- a/src/systemctl/systemctl-logind.c
+++ b/src/systemctl/systemctl-logind.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <unistd.h>
diff --git a/src/systemctl/systemctl-logind.h b/src/systemctl/systemctl-logind.h
index a9399e611e..144056b939 100644
--- a/src/systemctl/systemctl-logind.h
+++ b/src/systemctl/systemctl-logind.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "systemctl.h"
diff --git a/src/systemctl/systemctl-preset-all.c b/src/systemctl/systemctl-preset-all.c
index 2fada83958..b5eb199f4a 100644
--- a/src/systemctl/systemctl-preset-all.c
+++ b/src/systemctl/systemctl-preset-all.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "bus-error.h"
#include "bus-locator.h"
diff --git a/src/systemctl/systemctl-preset-all.h b/src/systemctl/systemctl-preset-all.h
index 408e43b599..f4f6790404 100644
--- a/src/systemctl/systemctl-preset-all.h
+++ b/src/systemctl/systemctl-preset-all.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int preset_all(int argc, char *argv[], void *userdata);
diff --git a/src/systemctl/systemctl-reset-failed.c b/src/systemctl/systemctl-reset-failed.c
index bf7e26dcb7..eee7586465 100644
--- a/src/systemctl/systemctl-reset-failed.c
+++ b/src/systemctl/systemctl-reset-failed.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "bus-error.h"
#include "bus-locator.h"
diff --git a/src/systemctl/systemctl-reset-failed.h b/src/systemctl/systemctl-reset-failed.h
index b7902ce716..956bb469df 100644
--- a/src/systemctl/systemctl-reset-failed.h
+++ b/src/systemctl/systemctl-reset-failed.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int reset_failed(int argc, char *argv[], void *userdata);
diff --git a/src/systemctl/systemctl-service-watchdogs.c b/src/systemctl/systemctl-service-watchdogs.c
index 6a954bfa43..e579851097 100644
--- a/src/systemctl/systemctl-service-watchdogs.c
+++ b/src/systemctl/systemctl-service-watchdogs.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "bus-error.h"
#include "bus-locator.h"
diff --git a/src/systemctl/systemctl-service-watchdogs.h b/src/systemctl/systemctl-service-watchdogs.h
index 8189376f1d..11a53dbbf1 100644
--- a/src/systemctl/systemctl-service-watchdogs.h
+++ b/src/systemctl/systemctl-service-watchdogs.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int service_watchdogs(int argc, char *argv[], void *userdata);
diff --git a/src/systemctl/systemctl-set-default.c b/src/systemctl/systemctl-set-default.c
index 423d881dac..05c1894b1d 100644
--- a/src/systemctl/systemctl-set-default.c
+++ b/src/systemctl/systemctl-set-default.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "bus-error.h"
#include "bus-locator.h"
diff --git a/src/systemctl/systemctl-set-default.h b/src/systemctl/systemctl-set-default.h
index 2067c8c0d0..839b2c9b9f 100644
--- a/src/systemctl/systemctl-set-default.h
+++ b/src/systemctl/systemctl-set-default.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int get_default(int argc, char *argv[], void *userdata);
diff --git a/src/systemctl/systemctl-set-environment.c b/src/systemctl/systemctl-set-environment.c
index 4d17c91df2..b68e6f6f66 100644
--- a/src/systemctl/systemctl-set-environment.c
+++ b/src/systemctl/systemctl-set-environment.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "bus-error.h"
#include "bus-locator.h"
diff --git a/src/systemctl/systemctl-set-environment.h b/src/systemctl/systemctl-set-environment.h
index 57e51d483c..bd05e318ad 100644
--- a/src/systemctl/systemctl-set-environment.h
+++ b/src/systemctl/systemctl-set-environment.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int show_environment(int argc, char *argv[], void *userdata);
diff --git a/src/systemctl/systemctl-set-property.c b/src/systemctl/systemctl-set-property.c
index 891b67eae7..183a7b6a8a 100644
--- a/src/systemctl/systemctl-set-property.c
+++ b/src/systemctl/systemctl-set-property.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "bus-error.h"
#include "bus-locator.h"
diff --git a/src/systemctl/systemctl-set-property.h b/src/systemctl/systemctl-set-property.h
index e431de5533..74990e7cba 100644
--- a/src/systemctl/systemctl-set-property.h
+++ b/src/systemctl/systemctl-set-property.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int set_property(int argc, char *argv[], void *userdata);
diff --git a/src/systemctl/systemctl-show.c b/src/systemctl/systemctl-show.c
index 119825f86e..fabaa545e1 100644
--- a/src/systemctl/systemctl-show.c
+++ b/src/systemctl/systemctl-show.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/mount.h>
diff --git a/src/systemctl/systemctl-show.h b/src/systemctl/systemctl-show.h
index b4e5dda5b7..d778bebb43 100644
--- a/src/systemctl/systemctl-show.h
+++ b/src/systemctl/systemctl-show.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int show(int argc, char *argv[], void *userdata);
diff --git a/src/systemctl/systemctl-start-special.c b/src/systemctl/systemctl-start-special.c
index 46f58ff921..15d2ea7941 100644
--- a/src/systemctl/systemctl-start-special.c
+++ b/src/systemctl/systemctl-start-special.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "bootspec.h"
#include "bus-error.h"
diff --git a/src/systemctl/systemctl-start-special.h b/src/systemctl/systemctl-start-special.h
index 43a31ba287..06875e9c63 100644
--- a/src/systemctl/systemctl-start-special.h
+++ b/src/systemctl/systemctl-start-special.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int start_special(int argc, char *argv[], void *userdata);
diff --git a/src/systemctl/systemctl-start-unit.c b/src/systemctl/systemctl-start-unit.c
index bd78568a2d..b398e77eb2 100644
--- a/src/systemctl/systemctl-start-unit.c
+++ b/src/systemctl/systemctl-start-unit.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "sd-bus.h"
diff --git a/src/systemctl/systemctl-start-unit.h b/src/systemctl/systemctl-start-unit.h
index 3f827405cc..915c6fa7fb 100644
--- a/src/systemctl/systemctl-start-unit.h
+++ b/src/systemctl/systemctl-start-unit.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "systemctl.h"
diff --git a/src/systemctl/systemctl-switch-root.c b/src/systemctl/systemctl-switch-root.c
index ebcc66a30d..9ed40e6ec3 100644
--- a/src/systemctl/systemctl-switch-root.c
+++ b/src/systemctl/systemctl-switch-root.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "bus-error.h"
#include "bus-locator.h"
diff --git a/src/systemctl/systemctl-switch-root.h b/src/systemctl/systemctl-switch-root.h
index 47ed852c63..6e13961ab7 100644
--- a/src/systemctl/systemctl-switch-root.h
+++ b/src/systemctl/systemctl-switch-root.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int switch_root(int argc, char *argv[], void *userdata);
diff --git a/src/systemctl/systemctl-sysv-compat.c b/src/systemctl/systemctl-sysv-compat.c
index 2dca9e480f..a78fa1e04c 100644
--- a/src/systemctl/systemctl-sysv-compat.c
+++ b/src/systemctl/systemctl-sysv-compat.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <sys/stat.h>
diff --git a/src/systemctl/systemctl-sysv-compat.h b/src/systemctl/systemctl-sysv-compat.h
index 9a3b84deda..86fd3ec186 100644
--- a/src/systemctl/systemctl-sysv-compat.h
+++ b/src/systemctl/systemctl-sysv-compat.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "time-util.h"
diff --git a/src/systemctl/systemctl-trivial-method.c b/src/systemctl/systemctl-trivial-method.c
index 1f1181f213..c0b4d489a2 100644
--- a/src/systemctl/systemctl-trivial-method.c
+++ b/src/systemctl/systemctl-trivial-method.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "bus-error.h"
#include "bus-locator.h"
diff --git a/src/systemctl/systemctl-trivial-method.h b/src/systemctl/systemctl-trivial-method.h
index 044540bd90..6dcd152845 100644
--- a/src/systemctl/systemctl-trivial-method.h
+++ b/src/systemctl/systemctl-trivial-method.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int trivial_method(int argc, char *argv[], void *userdata);
diff --git a/src/systemctl/systemctl-util.c b/src/systemctl/systemctl-util.c
index 603b1ea4fc..9713fce7af 100644
--- a/src/systemctl/systemctl-util.c
+++ b/src/systemctl/systemctl-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/reboot.h>
#include <unistd.h>
diff --git a/src/systemctl/systemctl-util.h b/src/systemctl/systemctl-util.h
index 3693f1d678..6445bb4887 100644
--- a/src/systemctl/systemctl-util.h
+++ b/src/systemctl/systemctl-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
index 075159ea57..d002d933ae 100644
--- a/src/systemctl/systemctl.c
+++ b/src/systemctl/systemctl.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <getopt.h>
#include <locale.h>
diff --git a/src/systemctl/systemctl.h b/src/systemctl/systemctl.h
index 079c108d7d..f8cefc9b01 100644
--- a/src/systemctl/systemctl.h
+++ b/src/systemctl/systemctl.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/systemd/_sd-common.h b/src/systemd/_sd-common.h
index 1055b00d07..e3de2ae562 100644
--- a/src/systemd/_sd-common.h
+++ b/src/systemd/_sd-common.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#ifndef foosdcommonhfoo
#define foosdcommonhfoo
diff --git a/src/systemd/meson.build b/src/systemd/meson.build
index 62baf7784e..c9c484b411 100644
--- a/src/systemd/meson.build
+++ b/src/systemd/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
_systemd_headers = '''
sd-bus.h
@@ -58,17 +58,21 @@ if add_languages('cpp', required : false)
opts += [['c++'],
['c++', '-std=c++98'],
['c++', '-std=c++11']]
- if cc.has_argument('-std=c++14')
+ if cxx.has_argument('-std=c++14')
opts += [['c++', '-std=c++14']]
endif
- if cc.has_argument('-std=c++17')
+ if cxx.has_argument('-std=c++17')
opts += [['c++', '-std=c++17']]
endif
+ if cxx.has_argument('-std=c++20')
+ opts += [['c++', '-std=c++20']]
+ endif
endif
-foreach header : _systemd_headers + _not_installed_headers + ['../libudev/libudev.h']
+foreach header : _systemd_headers + _not_installed_headers + [libudev_h_path]
foreach opt : opts
- name = ''.join(['cc-', header.split('/')[-1], ':'] + opt)
+ std_name = opt.length() == 2 ? '_'.join(opt[1].split(':')) : ''
+ name = ''.join(['cc-', header.split('/')[-1], '_', opt[0], std_name])
if want_tests != 'false'
test(name,
check_compilation_sh,
diff --git a/src/systemd/sd-bus-protocol.h b/src/systemd/sd-bus-protocol.h
index 8883ec62b9..ed96cdbab1 100644
--- a/src/systemd/sd-bus-protocol.h
+++ b/src/systemd/sd-bus-protocol.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#ifndef foosdbusprotocolhfoo
#define foosdbusprotocolhfoo
diff --git a/src/systemd/sd-bus-vtable.h b/src/systemd/sd-bus-vtable.h
index b10a3e04bc..ef57efd595 100644
--- a/src/systemd/sd-bus-vtable.h
+++ b/src/systemd/sd-bus-vtable.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#ifndef foosdbusvtablehfoo
#define foosdbusvtablehfoo
diff --git a/src/systemd/sd-bus.h b/src/systemd/sd-bus.h
index 9c37e7e6c9..87fbcf366e 100644
--- a/src/systemd/sd-bus.h
+++ b/src/systemd/sd-bus.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#ifndef foosdbushfoo
#define foosdbushfoo
diff --git a/src/systemd/sd-daemon.h b/src/systemd/sd-daemon.h
index b47b15a445..f42a5d8966 100644
--- a/src/systemd/sd-daemon.h
+++ b/src/systemd/sd-daemon.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#ifndef foosddaemonhfoo
#define foosddaemonhfoo
diff --git a/src/systemd/sd-device.h b/src/systemd/sd-device.h
index 53092d28f9..78fe584160 100644
--- a/src/systemd/sd-device.h
+++ b/src/systemd/sd-device.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#ifndef foosddevicehfoo
#define foosddevicehfoo
diff --git a/src/systemd/sd-dhcp-client.h b/src/systemd/sd-dhcp-client.h
index ac3b5b369c..44bafe6df5 100644
--- a/src/systemd/sd-dhcp-client.h
+++ b/src/systemd/sd-dhcp-client.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#ifndef foosddhcpclienthfoo
#define foosddhcpclienthfoo
@@ -126,6 +126,7 @@ int sd_dhcp_client_set_ifindex(
int sd_dhcp_client_set_mac(
sd_dhcp_client *client,
const uint8_t *addr,
+ const uint8_t *bcast_addr,
size_t addr_len,
uint16_t arp_type);
int sd_dhcp_client_set_client_id(
diff --git a/src/systemd/sd-dhcp-lease.h b/src/systemd/sd-dhcp-lease.h
index 17bd491819..c255a1f912 100644
--- a/src/systemd/sd-dhcp-lease.h
+++ b/src/systemd/sd-dhcp-lease.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#ifndef foosddhcpleasehfoo
#define foosddhcpleasehfoo
diff --git a/src/systemd/sd-dhcp-option.h b/src/systemd/sd-dhcp-option.h
index 45dbd27985..71aa479b5e 100644
--- a/src/systemd/sd-dhcp-option.h
+++ b/src/systemd/sd-dhcp-option.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#ifndef foosddhcpoptionhfoo
#define foosddhcpoptionhfoo
diff --git a/src/systemd/sd-dhcp-server.h b/src/systemd/sd-dhcp-server.h
index b6a5e9db84..f42c3dbb8b 100644
--- a/src/systemd/sd-dhcp-server.h
+++ b/src/systemd/sd-dhcp-server.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#ifndef foosddhcpserverhfoo
#define foosddhcpserverhfoo
diff --git a/src/systemd/sd-dhcp6-client.h b/src/systemd/sd-dhcp6-client.h
index 2b0d63a527..75ee27d68b 100644
--- a/src/systemd/sd-dhcp6-client.h
+++ b/src/systemd/sd-dhcp6-client.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#ifndef foosddhcp6clienthfoo
#define foosddhcp6clienthfoo
diff --git a/src/systemd/sd-dhcp6-lease.h b/src/systemd/sd-dhcp6-lease.h
index 240df74af8..f77b31acf9 100644
--- a/src/systemd/sd-dhcp6-lease.h
+++ b/src/systemd/sd-dhcp6-lease.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#ifndef foosddhcp6leasehfoo
#define foosddhcp6leasehfoo
diff --git a/src/systemd/sd-dhcp6-option.h b/src/systemd/sd-dhcp6-option.h
index 88a4986315..ddb2c7cecd 100644
--- a/src/systemd/sd-dhcp6-option.h
+++ b/src/systemd/sd-dhcp6-option.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#ifndef foosddhcp6optionhfoo
#define foosddhcp6optionhfoo
diff --git a/src/systemd/sd-event.h b/src/systemd/sd-event.h
index 3a53c3d27d..937c9bd460 100644
--- a/src/systemd/sd-event.h
+++ b/src/systemd/sd-event.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#ifndef foosdeventhfoo
#define foosdeventhfoo
diff --git a/src/systemd/sd-hwdb.h b/src/systemd/sd-hwdb.h
index 2b0cd7f5e7..9380759e07 100644
--- a/src/systemd/sd-hwdb.h
+++ b/src/systemd/sd-hwdb.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#ifndef foosdhwdbhfoo
#define foosdhwdbhfoo
diff --git a/src/systemd/sd-id128.h b/src/systemd/sd-id128.h
index 9b00b76ea6..02aa318a06 100644
--- a/src/systemd/sd-id128.h
+++ b/src/systemd/sd-id128.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#ifndef foosdid128hfoo
#define foosdid128hfoo
diff --git a/src/systemd/sd-ipv4acd.h b/src/systemd/sd-ipv4acd.h
index ebf723fc22..d900018f42 100644
--- a/src/systemd/sd-ipv4acd.h
+++ b/src/systemd/sd-ipv4acd.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#ifndef foosdipv4acdfoo
#define foosdipv4acdfoo
diff --git a/src/systemd/sd-ipv4ll.h b/src/systemd/sd-ipv4ll.h
index 71bd4cfe48..a0682232e3 100644
--- a/src/systemd/sd-ipv4ll.h
+++ b/src/systemd/sd-ipv4ll.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#ifndef foosdipv4llfoo
#define foosdipv4llfoo
diff --git a/src/systemd/sd-journal.h b/src/systemd/sd-journal.h
index d220f21aa2..03696eb1af 100644
--- a/src/systemd/sd-journal.h
+++ b/src/systemd/sd-journal.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#ifndef foosdjournalhfoo
#define foosdjournalhfoo
diff --git a/src/systemd/sd-lldp.h b/src/systemd/sd-lldp.h
index c2abc20121..f551f6b4fa 100644
--- a/src/systemd/sd-lldp.h
+++ b/src/systemd/sd-lldp.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#ifndef foosdlldphfoo
#define foosdlldphfoo
diff --git a/src/systemd/sd-login.h b/src/systemd/sd-login.h
index 6a8c206259..6958d99a1e 100644
--- a/src/systemd/sd-login.h
+++ b/src/systemd/sd-login.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#ifndef foosdloginhfoo
#define foosdloginhfoo
diff --git a/src/systemd/sd-messages.h b/src/systemd/sd-messages.h
index eea8c2c900..97ba02ffa8 100644
--- a/src/systemd/sd-messages.h
+++ b/src/systemd/sd-messages.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#ifndef foosdmessageshfoo
#define foosdmessageshfoo
diff --git a/src/systemd/sd-ndisc.h b/src/systemd/sd-ndisc.h
index 3ddfc8cb6d..c0e37899a7 100644
--- a/src/systemd/sd-ndisc.h
+++ b/src/systemd/sd-ndisc.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#ifndef foosdndiscfoo
#define foosdndiscfoo
diff --git a/src/systemd/sd-netlink.h b/src/systemd/sd-netlink.h
index e01d960e37..bf6d1e47ff 100644
--- a/src/systemd/sd-netlink.h
+++ b/src/systemd/sd-netlink.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#ifndef foosdnetlinkhfoo
#define foosdnetlinkhfoo
diff --git a/src/systemd/sd-network.h b/src/systemd/sd-network.h
index 42bcd74b74..7e06251418 100644
--- a/src/systemd/sd-network.h
+++ b/src/systemd/sd-network.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#ifndef foosdnetworkhfoo
#define foosdnetworkhfoo
diff --git a/src/systemd/sd-path.h b/src/systemd/sd-path.h
index e13e67db8f..5f2f03c27b 100644
--- a/src/systemd/sd-path.h
+++ b/src/systemd/sd-path.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#ifndef foosdpathhfoo
#define foosdpathhfoo
diff --git a/src/systemd/sd-radv.h b/src/systemd/sd-radv.h
index 0f1437829d..3f6c149d5e 100644
--- a/src/systemd/sd-radv.h
+++ b/src/systemd/sd-radv.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#ifndef foosdradvfoo
#define foosdradvfoo
@@ -56,7 +56,7 @@ int sd_radv_set_ifindex(sd_radv *ra, int interface_index);
int sd_radv_set_mac(sd_radv *ra, const struct ether_addr *mac_addr);
int sd_radv_set_mtu(sd_radv *ra, uint32_t mtu);
int sd_radv_set_hop_limit(sd_radv *ra, uint8_t hop_limit);
-int sd_radv_set_router_lifetime(sd_radv *ra, uint32_t router_lifetime);
+int sd_radv_set_router_lifetime(sd_radv *ra, uint16_t router_lifetime);
int sd_radv_set_managed_information(sd_radv *ra, int managed);
int sd_radv_set_other_information(sd_radv *ra, int other);
int sd_radv_set_preference(sd_radv *ra, unsigned preference);
diff --git a/src/systemd/sd-resolve.h b/src/systemd/sd-resolve.h
index d78e8db257..ee58d18137 100644
--- a/src/systemd/sd-resolve.h
+++ b/src/systemd/sd-resolve.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#ifndef foosdresolvehfoo
#define foosdresolvehfoo
diff --git a/src/systemd/sd-utf8.h b/src/systemd/sd-utf8.h
index 151b423d51..57013d011f 100644
--- a/src/systemd/sd-utf8.h
+++ b/src/systemd/sd-utf8.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#ifndef foosdutf8hfoo
#define foosdutf8hfoo
diff --git a/src/sysusers/sysusers.c b/src/sysusers/sysusers.c
index b91f32bbf3..6b0acd529e 100644
--- a/src/sysusers/sysusers.c
+++ b/src/sysusers/sysusers.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <getopt.h>
#include <utmp.h>
@@ -1391,18 +1391,8 @@ static bool item_equal(Item *a, Item *b) {
static int parse_line(const char *fname, unsigned line, const char *buffer) {
static const Specifier specifier_table[] = {
- { 'm', specifier_machine_id, NULL },
- { 'b', specifier_boot_id, NULL },
- { 'H', specifier_host_name, NULL },
- { 'l', specifier_short_host_name, NULL },
- { 'v', specifier_kernel_release, NULL },
- { 'a', specifier_architecture, NULL },
- { 'o', specifier_os_id, NULL },
- { 'w', specifier_os_version_id, NULL },
- { 'B', specifier_os_build_id, NULL },
- { 'W', specifier_os_variant_id, NULL },
- { 'T', specifier_tmp_dir, NULL },
- { 'V', specifier_var_tmp_dir, NULL },
+ COMMON_SYSTEM_SPECIFIERS,
+ COMMON_TMP_SPECIFIERS,
{}
};
diff --git a/src/sysv-generator/sysv-generator.c b/src/sysv-generator/sysv-generator.c
index 7d6be31742..008a8250bb 100644
--- a/src/sysv-generator/sysv-generator.c
+++ b/src/sysv-generator/sysv-generator.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stdio.h>
diff --git a/src/test/meson.build b/src/test/meson.build
index 11bb3db23a..12bcf35708 100644
--- a/src/test/meson.build
+++ b/src/test/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
awkscript = 'test-hashmap-ordered.awk'
test_hashmap_ordered_c = custom_target(
@@ -302,7 +302,8 @@ tests += [
[['src/test/test-libcrypt-util.c'],
[],
- []],
+ [],
+ '', 'timeout=120'],
[['src/test/test-offline-passwd.c',
'src/shared/offline-passwd.c',
@@ -772,6 +773,10 @@ tests += [
libselinux],
'', 'manual', '-DLOG_REALM=LOG_REALM_UDEV'],
+ [['src/test/test-udev-util.c'],
+ [],
+ []],
+
[['src/test/test-id128.c'],
[],
[]],
diff --git a/src/test/test-acl-util.c b/src/test/test-acl-util.c
index 08764faa4f..37c8265268 100644
--- a/src/test/test-acl-util.c
+++ b/src/test/test-acl-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <stdlib.h>
diff --git a/src/test/test-af-list.c b/src/test/test-af-list.c
index 884372e60e..672dc68be9 100644
--- a/src/test/test-af-list.c
+++ b/src/test/test-af-list.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/socket.h>
diff --git a/src/test/test-alloc-util.c b/src/test/test-alloc-util.c
index 72356aeaa4..b4319f9c7d 100644
--- a/src/test/test-alloc-util.c
+++ b/src/test/test-alloc-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <malloc.h>
#include <stdint.h>
diff --git a/src/test/test-architecture.c b/src/test/test-architecture.c
index 8c43bfc750..798c95c0e9 100644
--- a/src/test/test-architecture.c
+++ b/src/test/test-architecture.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "architecture.h"
#include "log.h"
diff --git a/src/test/test-arphrd-list.c b/src/test/test-arphrd-list.c
index d7352b54e0..9e21f32189 100644
--- a/src/test/test-arphrd-list.c
+++ b/src/test/test-arphrd-list.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <linux/if_arp.h>
diff --git a/src/test/test-ask-password-api.c b/src/test/test-ask-password-api.c
index 098bb35bce..06158acf12 100644
--- a/src/test/test-ask-password-api.c
+++ b/src/test/test-ask-password-api.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "ask-password-api.h"
#include "strv.h"
diff --git a/src/test/test-async.c b/src/test/test-async.c
index 7d8accc2fc..8eefad5044 100644
--- a/src/test/test-async.c
+++ b/src/test/test-async.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <unistd.h>
diff --git a/src/test/test-barrier.c b/src/test/test-barrier.c
index 10417f662f..6ef2998a56 100644
--- a/src/test/test-barrier.c
+++ b/src/test/test-barrier.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/*
* IPC barrier tests
diff --git a/src/test/test-bitmap.c b/src/test/test-bitmap.c
index b281c1ae74..9c5d551d27 100644
--- a/src/test/test-bitmap.c
+++ b/src/test/test-bitmap.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "bitmap.h"
diff --git a/src/test/test-boot-timestamps.c b/src/test/test-boot-timestamps.c
index 29074ecccd..ae5b5821f0 100644
--- a/src/test/test-boot-timestamps.c
+++ b/src/test/test-boot-timestamps.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/types.h>
#include <unistd.h>
diff --git a/src/test/test-bpf-devices.c b/src/test/test-bpf-devices.c
index d2740bca73..2c5eb7313b 100644
--- a/src/test/test-bpf-devices.c
+++ b/src/test/test-bpf-devices.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/resource.h>
#include <sys/time.h>
diff --git a/src/test/test-bpf-firewall.c b/src/test/test-bpf-firewall.c
index 71aed12558..cb7d8398a8 100644
--- a/src/test/test-bpf-firewall.c
+++ b/src/test/test-bpf-firewall.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <linux/bpf_insn.h>
#include <string.h>
diff --git a/src/test/test-btrfs.c b/src/test/test-btrfs.c
index 9dbe4dccd1..e840536d4b 100644
--- a/src/test/test-btrfs.c
+++ b/src/test/test-btrfs.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
diff --git a/src/test/test-bus-util.c b/src/test/test-bus-util.c
index a536608ce0..0381ba1ee4 100644
--- a/src/test/test-bus-util.c
+++ b/src/test/test-bus-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "bus-util.h"
#include "log.h"
diff --git a/src/test/test-calendarspec.c b/src/test/test-calendarspec.c
index d566638d5d..e0b7f22808 100644
--- a/src/test/test-calendarspec.c
+++ b/src/test/test-calendarspec.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "calendarspec.h"
diff --git a/src/test/test-cap-list.c b/src/test/test-cap-list.c
index 81d5c456d7..c4b40f34fa 100644
--- a/src/test/test-cap-list.c
+++ b/src/test/test-cap-list.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdio.h>
#include <sys/prctl.h>
@@ -55,7 +55,7 @@ static void test_cap_list(void) {
static void test_capability_set_one(uint64_t c, const char *t) {
_cleanup_free_ char *t1 = NULL;
- uint64_t c1, c_masked = c & ((UINT64_C(1) << capability_list_length()) - 1);
+ uint64_t c1, c_masked = c & all_capabilities();
assert_se(capability_set_to_string_alloc(c, &t1) == 0);
assert_se(streq(t1, t));
@@ -70,7 +70,7 @@ static void test_capability_set_one(uint64_t c, const char *t) {
assert_se(c1 == c_masked);
}
-static void test_capability_set(void) {
+static void test_capability_set_from_string(void) {
uint64_t c;
assert_se(capability_set_from_string(NULL, &c) == 0);
@@ -87,38 +87,42 @@ static void test_capability_set(void) {
assert_se(capability_set_from_string("0 1 2 3", &c) == 0);
assert_se(c == (UINT64_C(1) << 4) - 1);
+}
+
+static void test_capability_set_to_string(uint64_t invalid_cap_set) {
+ uint64_t c;
- test_capability_set_one(0, "");
- test_capability_set_one(
- UINT64_C(1) << CAP_DAC_OVERRIDE,
- "cap_dac_override");
- test_capability_set_one(
- UINT64_C(1) << CAP_DAC_OVERRIDE |
- UINT64_C(1) << capability_list_length(),
- "cap_dac_override");
- test_capability_set_one(
- UINT64_C(1) << capability_list_length(), "");
- test_capability_set_one(
- UINT64_C(1) << CAP_CHOWN |
- UINT64_C(1) << CAP_DAC_OVERRIDE |
- UINT64_C(1) << CAP_DAC_READ_SEARCH |
- UINT64_C(1) << CAP_FOWNER |
- UINT64_C(1) << CAP_SETGID |
- UINT64_C(1) << CAP_SETUID |
- UINT64_C(1) << CAP_SYS_PTRACE |
- UINT64_C(1) << CAP_SYS_ADMIN |
- UINT64_C(1) << CAP_AUDIT_CONTROL |
- UINT64_C(1) << CAP_MAC_OVERRIDE |
- UINT64_C(1) << CAP_SYSLOG |
- UINT64_C(1) << (capability_list_length() + 1),
- "cap_chown cap_dac_override cap_dac_read_search cap_fowner "
- "cap_setgid cap_setuid cap_sys_ptrace cap_sys_admin "
- "cap_audit_control cap_mac_override cap_syslog");
+ test_capability_set_one(invalid_cap_set, "");
+
+ c = (UINT64_C(1) << CAP_DAC_OVERRIDE | invalid_cap_set);
+ test_capability_set_one(c, "cap_dac_override");
+
+ c = (UINT64_C(1) << CAP_CHOWN |
+ UINT64_C(1) << CAP_DAC_OVERRIDE |
+ UINT64_C(1) << CAP_DAC_READ_SEARCH |
+ UINT64_C(1) << CAP_FOWNER |
+ UINT64_C(1) << CAP_SETGID |
+ UINT64_C(1) << CAP_SETUID |
+ UINT64_C(1) << CAP_SYS_PTRACE |
+ UINT64_C(1) << CAP_SYS_ADMIN |
+ UINT64_C(1) << CAP_AUDIT_CONTROL |
+ UINT64_C(1) << CAP_MAC_OVERRIDE |
+ UINT64_C(1) << CAP_SYSLOG |
+ invalid_cap_set);
+ test_capability_set_one(c, ("cap_chown cap_dac_override cap_dac_read_search cap_fowner "
+ "cap_setgid cap_setuid cap_sys_ptrace cap_sys_admin "
+ "cap_audit_control cap_mac_override cap_syslog"));
}
int main(int argc, char *argv[]) {
test_cap_list();
- test_capability_set();
+ test_capability_set_from_string();
+ test_capability_set_to_string(0);
+
+ /* once the kernel supports 63 caps, there are no 'invalid' numbers
+ * for us to test with */
+ if (cap_last_cap() < 63)
+ test_capability_set_to_string(all_capabilities() + 1);
return 0;
}
diff --git a/src/test/test-capability.c b/src/test/test-capability.c
index 2d47c77f46..0ff56070b1 100644
--- a/src/test/test-capability.c
+++ b/src/test/test-capability.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <netinet/in.h>
#include <pwd.h>
diff --git a/src/test/test-cgroup-cpu.c b/src/test/test-cgroup-cpu.c
index a445acc955..be73be83f8 100644
--- a/src/test/test-cgroup-cpu.c
+++ b/src/test/test-cgroup-cpu.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "cgroup.h"
#include "log.h"
diff --git a/src/test/test-cgroup-mask.c b/src/test/test-cgroup-mask.c
index 27bfcdc17f..b53e327c63 100644
--- a/src/test/test-cgroup-mask.c
+++ b/src/test/test-cgroup-mask.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdio.h>
diff --git a/src/test/test-cgroup-setup.c b/src/test/test-cgroup-setup.c
index 25fa0d75df..72726ca595 100644
--- a/src/test/test-cgroup-setup.c
+++ b/src/test/test-cgroup-setup.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <unistd.h>
diff --git a/src/test/test-cgroup-unit-default.c b/src/test/test-cgroup-unit-default.c
index f4843374ea..b03f6ff12e 100644
--- a/src/test/test-cgroup-unit-default.c
+++ b/src/test/test-cgroup-unit-default.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdio.h>
diff --git a/src/test/test-cgroup-util.c b/src/test/test-cgroup-util.c
index eff586a2e1..41b1df117e 100644
--- a/src/test/test-cgroup-util.c
+++ b/src/test/test-cgroup-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "build.h"
diff --git a/src/test/test-cgroup.c b/src/test/test-cgroup.c
index 4fbb186f52..722e11a0c0 100644
--- a/src/test/test-cgroup.c
+++ b/src/test/test-cgroup.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <unistd.h>
diff --git a/src/test/test-chase-symlinks.c b/src/test/test-chase-symlinks.c
index f7b3dd5e00..d9b9b62dc5 100644
--- a/src/test/test-chase-symlinks.c
+++ b/src/test/test-chase-symlinks.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <getopt.h>
#include "fd-util.h"
diff --git a/src/test/test-chown-rec.c b/src/test/test-chown-rec.c
index aa11bd270f..66c6fd97d1 100644
--- a/src/test/test-chown-rec.c
+++ b/src/test/test-chown-rec.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/xattr.h>
#include <unistd.h>
diff --git a/src/test/test-clock.c b/src/test/test-clock.c
index 271d465546..714935cb81 100644
--- a/src/test/test-clock.c
+++ b/src/test/test-clock.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2016 Canonical Ltd.
***/
diff --git a/src/test/test-condition.c b/src/test/test-condition.c
index b42de61200..15099d8df8 100644
--- a/src/test/test-condition.c
+++ b/src/test/test-condition.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdio.h>
#include <sys/types.h>
diff --git a/src/test/test-conf-files.c b/src/test/test-conf-files.c
index f37f32f1b5..ee7bbd1002 100644
--- a/src/test/test-conf-files.c
+++ b/src/test/test-conf-files.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2014 Michael Marineau
***/
diff --git a/src/test/test-conf-parser.c b/src/test/test-conf-parser.c
index 07edc17f92..04b610c6f1 100644
--- a/src/test/test-conf-parser.c
+++ b/src/test/test-conf-parser.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "conf-parser.h"
#include "fd-util.h"
diff --git a/src/test/test-copy.c b/src/test/test-copy.c
index 6ed655a358..ffa9297889 100644
--- a/src/test/test-copy.c
+++ b/src/test/test-copy.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/xattr.h>
#include <unistd.h>
diff --git a/src/test/test-coredump-util.c b/src/test/test-coredump-util.c
index 14a78007e3..f9a44b2c65 100644
--- a/src/test/test-coredump-util.c
+++ b/src/test/test-coredump-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "coredump-util.h"
diff --git a/src/test/test-cpu-set-util.c b/src/test/test-cpu-set-util.c
index 450e19e06f..0cfc883d66 100644
--- a/src/test/test-cpu-set-util.c
+++ b/src/test/test-cpu-set-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "cpu-set-util.h"
diff --git a/src/test/test-daemon.c b/src/test/test-daemon.c
index 6ca821581f..e6dd29a0a7 100644
--- a/src/test/test-daemon.c
+++ b/src/test/test-daemon.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <unistd.h>
diff --git a/src/test/test-date.c b/src/test/test-date.c
index f39eca6176..47b7096738 100644
--- a/src/test/test-date.c
+++ b/src/test/test-date.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "string-util.h"
diff --git a/src/test/test-dev-setup.c b/src/test/test-dev-setup.c
index 11196cd4d6..ea9df56aeb 100644
--- a/src/test/test-dev-setup.c
+++ b/src/test/test-dev-setup.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "capability-util.h"
#include "dev-setup.h"
diff --git a/src/test/test-device-nodes.c b/src/test/test-device-nodes.c
index ad8d9ace16..9efb3fe3b3 100644
--- a/src/test/test-device-nodes.c
+++ b/src/test/test-device-nodes.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/types.h>
diff --git a/src/test/test-dlopen.c b/src/test/test-dlopen.c
index 148ebaa4d0..35981ebc3b 100644
--- a/src/test/test-dlopen.c
+++ b/src/test/test-dlopen.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <dlfcn.h>
#include <stdlib.h>
diff --git a/src/test/test-dns-domain.c b/src/test/test-dns-domain.c
index b73dc56465..2df2380de4 100644
--- a/src/test/test-dns-domain.c
+++ b/src/test/test-dns-domain.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "dns-domain.h"
diff --git a/src/test/test-ellipsize.c b/src/test/test-ellipsize.c
index 92692bd487..a25c0b57bd 100644
--- a/src/test/test-ellipsize.c
+++ b/src/test/test-ellipsize.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdio.h>
diff --git a/src/test/test-emergency-action.c b/src/test/test-emergency-action.c
index 8ce28ed9f5..88214aa7a6 100644
--- a/src/test/test-emergency-action.c
+++ b/src/test/test-emergency-action.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "emergency-action.h"
#include "tests.h"
diff --git a/src/test/test-engine.c b/src/test/test-engine.c
index 6465151b27..cd7cfd9f09 100644
--- a/src/test/test-engine.c
+++ b/src/test/test-engine.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stdio.h>
diff --git a/src/test/test-env-file.c b/src/test/test-env-file.c
index 23779b9b87..a3acde17ba 100644
--- a/src/test/test-env-file.c
+++ b/src/test/test-env-file.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "env-file.h"
#include "fd-util.h"
diff --git a/src/test/test-env-util.c b/src/test/test-env-util.c
index 7c418209a9..dd150b3068 100644
--- a/src/test/test-env-util.c
+++ b/src/test/test-env-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "env-util.h"
#include "fd-util.h"
diff --git a/src/test/test-escape.c b/src/test/test-escape.c
index 699747fcc3..3e410ca299 100644
--- a/src/test/test-escape.c
+++ b/src/test/test-escape.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "escape.h"
diff --git a/src/test/test-exec-util.c b/src/test/test-exec-util.c
index f5d640a690..e9e8e21040 100644
--- a/src/test/test-exec-util.c
+++ b/src/test/test-exec-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <sys/stat.h>
@@ -372,10 +372,7 @@ static void test_environment_gathering(void) {
assert_se(streq(strv_env_get(env, "PATH"), DEFAULT_PATH ":/no/such/file"));
/* reset environ PATH */
- if (old)
- (void) setenv("PATH", old, 1);
- else
- (void) unsetenv("PATH");
+ assert_se(set_unset_env("PATH", old, true) == 0);
}
static void test_error_catching(void) {
diff --git a/src/test/test-execute.c b/src/test/test-execute.c
index 0bc2a45c30..3b6a4be260 100644
--- a/src/test/test-execute.c
+++ b/src/test/test-execute.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdio.h>
#include <sys/prctl.h>
@@ -898,11 +898,11 @@ int main(int argc, char *argv[]) {
}
#endif
- (void) unsetenv("USER");
- (void) unsetenv("LOGNAME");
- (void) unsetenv("SHELL");
- (void) unsetenv("HOME");
- (void) unsetenv("TMPDIR");
+ assert_se(unsetenv("USER") == 0);
+ assert_se(unsetenv("LOGNAME") == 0);
+ assert_se(unsetenv("SHELL") == 0);
+ assert_se(unsetenv("HOME") == 0);
+ assert_se(unsetenv("TMPDIR") == 0);
can_unshare = have_namespaces();
diff --git a/src/test/test-exit-status.c b/src/test/test-exit-status.c
index e90375f6bd..4dc197301d 100644
--- a/src/test/test-exit-status.c
+++ b/src/test/test-exit-status.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "exit-status.h"
#include "string-util.h"
diff --git a/src/test/test-extract-word.c b/src/test/test-extract-word.c
index cc1f29385f..56b516fe40 100644
--- a/src/test/test-extract-word.c
+++ b/src/test/test-extract-word.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stdlib.h>
diff --git a/src/test/test-fd-util.c b/src/test/test-fd-util.c
index 5351fdb9e9..bece89aef2 100644
--- a/src/test/test-fd-util.c
+++ b/src/test/test-fd-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <unistd.h>
diff --git a/src/test/test-fdset.c b/src/test/test-fdset.c
index 212fe0dbd4..c77d7ffe83 100644
--- a/src/test/test-fdset.c
+++ b/src/test/test-fdset.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <unistd.h>
diff --git a/src/test/test-fileio.c b/src/test/test-fileio.c
index ce5af43db5..431aea07ef 100644
--- a/src/test/test-fileio.c
+++ b/src/test/test-fileio.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <limits.h>
@@ -15,6 +15,7 @@
#include "io-util.h"
#include "parse-util.h"
#include "process-util.h"
+#include "random-util.h"
#include "rm-rf.h"
#include "socket-util.h"
#include "string-util.h"
@@ -863,7 +864,7 @@ static void test_read_nul_string(void) {
static void test_read_full_file_socket(void) {
_cleanup_(rm_rf_physical_and_freep) char *z = NULL;
_cleanup_close_ int listener = -1;
- _cleanup_free_ char *data = NULL;
+ _cleanup_free_ char *data = NULL, *clientname = NULL;
union sockaddr_union sa;
const char *j;
size_t size;
@@ -883,23 +884,35 @@ static void test_read_full_file_socket(void) {
assert_se(bind(listener, &sa.sa, SOCKADDR_UN_LEN(sa.un)) >= 0);
assert_se(listen(listener, 1) >= 0);
+ /* Bind the *client* socket to some randomized name, to verify that this works correctly. */
+ assert_se(asprintf(&clientname, "@%" PRIx64 "/test-bindname", random_u64()) >= 0);
+
r = safe_fork("(server)", FORK_DEATHSIG|FORK_LOG, &pid);
assert_se(r >= 0);
if (r == 0) {
+ union sockaddr_union peer = {};
+ socklen_t peerlen = sizeof(peer);
_cleanup_close_ int rfd = -1;
/* child */
rfd = accept4(listener, NULL, 0, SOCK_CLOEXEC);
assert_se(rfd >= 0);
+ assert_se(getpeername(rfd, &peer.sa, &peerlen) >= 0);
+
+ assert_se(peer.un.sun_family == AF_UNIX);
+ assert_se(peerlen > offsetof(struct sockaddr_un, sun_path));
+ assert_se(peer.un.sun_path[0] == 0);
+ assert_se(streq(peer.un.sun_path + 1, clientname + 1));
+
#define TEST_STR "This is a test\nreally."
assert_se(write(rfd, TEST_STR, strlen(TEST_STR)) == strlen(TEST_STR));
_exit(EXIT_SUCCESS);
}
- assert_se(read_full_file_full(AT_FDCWD, j, 0, &data, &size) == -ENXIO);
- assert_se(read_full_file_full(AT_FDCWD, j, READ_FULL_FILE_CONNECT_SOCKET, &data, &size) >= 0);
+ assert_se(read_full_file_full(AT_FDCWD, j, 0, NULL, &data, &size) == -ENXIO);
+ assert_se(read_full_file_full(AT_FDCWD, j, READ_FULL_FILE_CONNECT_SOCKET, clientname, &data, &size) >= 0);
assert_se(size == strlen(TEST_STR));
assert_se(streq(data, TEST_STR));
diff --git a/src/test/test-firewall-util.c b/src/test/test-firewall-util.c
index 1788e8d1ca..64616e4391 100644
--- a/src/test/test-firewall-util.c
+++ b/src/test/test-firewall-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "firewall-util.h"
#include "log.h"
diff --git a/src/test/test-format-table.c b/src/test/test-format-table.c
index cf2e34dc9d..24ee1df953 100644
--- a/src/test/test-format-table.c
+++ b/src/test/test-format-table.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <unistd.h>
diff --git a/src/test/test-format-util.c b/src/test/test-format-util.c
index 6558ee2b0a..5562ac8761 100644
--- a/src/test/test-format-util.c
+++ b/src/test/test-format-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "format-util.h"
#include "macro.h"
diff --git a/src/test/test-fs-util.c b/src/test/test-fs-util.c
index f63b1f5d5f..d1f9252521 100644
--- a/src/test/test-fs-util.c
+++ b/src/test/test-fs-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <unistd.h>
diff --git a/src/test/test-fstab-util.c b/src/test/test-fstab-util.c
index f3506045a1..222ffbb2a7 100644
--- a/src/test/test-fstab-util.c
+++ b/src/test/test-fstab-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdio.h>
diff --git a/src/test/test-gcrypt-util.c b/src/test/test-gcrypt-util.c
index b28b4eb5a2..2af040b63a 100644
--- a/src/test/test-gcrypt-util.c
+++ b/src/test/test-gcrypt-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "gcrypt-util.h"
diff --git a/src/test/test-glob-util.c b/src/test/test-glob-util.c
index 667d15335f..df6444c433 100644
--- a/src/test/test-glob-util.c
+++ b/src/test/test-glob-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <sys/stat.h>
diff --git a/src/test/test-hash.c b/src/test/test-hash.c
index 44d1044bf3..270fcd0df4 100644
--- a/src/test/test-hash.c
+++ b/src/test/test-hash.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stdio.h>
diff --git a/src/test/test-hashmap-plain.c b/src/test/test-hashmap-plain.c
index 5ff5d096a6..9ed6bee9da 100644
--- a/src/test/test-hashmap-plain.c
+++ b/src/test/test-hashmap-plain.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "hashmap.h"
diff --git a/src/test/test-hashmap.c b/src/test/test-hashmap.c
index 852712844f..20bc97ce58 100644
--- a/src/test/test-hashmap.c
+++ b/src/test/test-hashmap.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "hashmap.h"
#include "string-util.h"
diff --git a/src/test/test-hexdecoct.c b/src/test/test-hexdecoct.c
index 52217429b1..f0f9679769 100644
--- a/src/test/test-hexdecoct.c
+++ b/src/test/test-hexdecoct.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
diff --git a/src/test/test-hostname-util.c b/src/test/test-hostname-util.c
index 5ab82bba61..73839b3115 100644
--- a/src/test/test-hostname-util.c
+++ b/src/test/test-hostname-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <unistd.h>
diff --git a/src/test/test-hostname.c b/src/test/test-hostname.c
index 710c0572e6..1a925f253c 100644
--- a/src/test/test-hostname.c
+++ b/src/test/test-hostname.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "hostname-setup.h"
#include "util.h"
diff --git a/src/test/test-id128.c b/src/test/test-id128.c
index 66eedddce8..a0649b9deb 100644
--- a/src/test/test-id128.c
+++ b/src/test/test-id128.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <sys/types.h>
diff --git a/src/test/test-in-addr-util.c b/src/test/test-in-addr-util.c
index a9ecd0627b..2b6364566b 100644
--- a/src/test/test-in-addr-util.c
+++ b/src/test/test-in-addr-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fnmatch.h>
#include <netinet/in.h>
diff --git a/src/test/test-install-root.c b/src/test/test-install-root.c
index 6fb2fd4298..aedec54a7f 100644
--- a/src/test/test-install-root.c
+++ b/src/test/test-install-root.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <unistd.h>
diff --git a/src/test/test-install.c b/src/test/test-install.c
index f1423fb635..7cd91efcb7 100644
--- a/src/test/test-install.c
+++ b/src/test/test-install.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdio.h>
#include <string.h>
diff --git a/src/test/test-io-util.c b/src/test/test-io-util.c
index 42e632a8a2..104c022cb4 100644
--- a/src/test/test-io-util.c
+++ b/src/test/test-io-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <stdlib.h>
diff --git a/src/test/test-ip-protocol-list.c b/src/test/test-ip-protocol-list.c
index 79390e5289..15bbbdeb72 100644
--- a/src/test/test-ip-protocol-list.c
+++ b/src/test/test-ip-protocol-list.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <netinet/in.h>
diff --git a/src/test/test-ipcrm.c b/src/test/test-ipcrm.c
index 4565d65676..238f0bf666 100644
--- a/src/test/test-ipcrm.c
+++ b/src/test/test-ipcrm.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "clean-ipc.h"
#include "errno-util.h"
diff --git a/src/test/test-job-type.c b/src/test/test-job-type.c
index 33a95c6b52..024d976a75 100644
--- a/src/test/test-job-type.c
+++ b/src/test/test-job-type.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdio.h>
diff --git a/src/test/test-journal-importer.c b/src/test/test-journal-importer.c
index 4883356956..da266d92ac 100644
--- a/src/test/test-journal-importer.c
+++ b/src/test/test-journal-importer.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/types.h>
#include <sys/stat.h>
diff --git a/src/test/test-json.c b/src/test/test-json.c
index 6da93d6aed..1d4b11945e 100644
--- a/src/test/test-json.c
+++ b/src/test/test-json.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <math.h>
diff --git a/src/test/test-libcrypt-util.c b/src/test/test-libcrypt-util.c
index 58b83b6866..cd296d698e 100644
--- a/src/test/test-libcrypt-util.c
+++ b/src/test/test-libcrypt-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#if HAVE_CRYPT_H
# include <crypt.h>
diff --git a/src/test/test-libmount.c b/src/test/test-libmount.c
index c3395493d4..bd2381f38e 100644
--- a/src/test/test-libmount.c
+++ b/src/test/test-libmount.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "fd-util.h"
diff --git a/src/test/test-libudev.c b/src/test/test-libudev.c
index 2cc679f42e..d162abaea0 100644
--- a/src/test/test-libudev.c
+++ b/src/test/test-libudev.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <getopt.h>
diff --git a/src/test/test-list.c b/src/test/test-list.c
index ca5361adb9..fc6e1c8cd1 100644
--- a/src/test/test-list.c
+++ b/src/test/test-list.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2013 Jan Janssen
***/
diff --git a/src/test/test-load-fragment.c b/src/test/test-load-fragment.c
index 96be244b6b..40c1fd0532 100644
--- a/src/test/test-load-fragment.c
+++ b/src/test/test-load-fragment.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <stddef.h>
diff --git a/src/test/test-local-addresses.c b/src/test/test-local-addresses.c
index 37505ea783..7eeddd28f4 100644
--- a/src/test/test-local-addresses.c
+++ b/src/test/test-local-addresses.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdio.h>
diff --git a/src/test/test-locale-util.c b/src/test/test-locale-util.c
index 347982dd52..62f82200a0 100644
--- a/src/test/test-locale-util.c
+++ b/src/test/test-locale-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "kbd-util.h"
#include "locale-util.h"
diff --git a/src/test/test-log.c b/src/test/test-log.c
index c1f2f8b09d..a2a53730ef 100644
--- a/src/test/test-log.c
+++ b/src/test/test-log.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stddef.h>
#include <unistd.h>
diff --git a/src/test/test-loop-block.c b/src/test/test-loop-block.c
index b9533fc16a..298ded94df 100644
--- a/src/test/test-loop-block.c
+++ b/src/test/test-loop-block.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <linux/loop.h>
diff --git a/src/test/test-loopback.c b/src/test/test-loopback.c
index 89b760fae4..58d8c29dbb 100644
--- a/src/test/test-loopback.c
+++ b/src/test/test-loopback.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdio.h>
#include <string.h>
diff --git a/src/test/test-mount-util.c b/src/test/test-mount-util.c
index 6986405dc6..41df5588d0 100644
--- a/src/test/test-mount-util.c
+++ b/src/test/test-mount-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/mount.h>
diff --git a/src/test/test-mountpoint-util.c b/src/test/test-mountpoint-util.c
index ada5b1712c..287488b7c1 100644
--- a/src/test/test-mountpoint-util.c
+++ b/src/test/test-mountpoint-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sched.h>
#include <sys/mount.h>
diff --git a/src/test/test-namespace.c b/src/test/test-namespace.c
index 7571e609a2..e234f54dee 100644
--- a/src/test/test-namespace.c
+++ b/src/test/test-namespace.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <sys/socket.h>
diff --git a/src/test/test-netlink-manual.c b/src/test/test-netlink-manual.c
index a734524eeb..49aca68c49 100644
--- a/src/test/test-netlink-manual.c
+++ b/src/test/test-netlink-manual.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <arpa/inet.h>
#include <linux/if_tunnel.h>
diff --git a/src/test/test-ns.c b/src/test/test-ns.c
index 5d7931f619..6ec1cff28a 100644
--- a/src/test/test-ns.c
+++ b/src/test/test-ns.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stdlib.h>
diff --git a/src/test/test-nscd-flush.c b/src/test/test-nscd-flush.c
index 97c219596d..1a5a8082f3 100644
--- a/src/test/test-nscd-flush.c
+++ b/src/test/test-nscd-flush.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "main-func.h"
#include "nscd-flush.h"
diff --git a/src/test/test-nss.c b/src/test/test-nss.c
index 293d7a8468..2e9414d16d 100644
--- a/src/test/test-nss.c
+++ b/src/test/test-nss.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <dlfcn.h>
#include <net/if.h>
diff --git a/src/test/test-offline-passwd.c b/src/test/test-offline-passwd.c
index 5933ec28a3..1a961d125b 100644
--- a/src/test/test-offline-passwd.c
+++ b/src/test/test-offline-passwd.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <getopt.h>
diff --git a/src/test/test-ordered-set.c b/src/test/test-ordered-set.c
index 268c54fccc..0fbdd9706f 100644
--- a/src/test/test-ordered-set.c
+++ b/src/test/test-ordered-set.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdio.h>
diff --git a/src/test/test-os-util.c b/src/test/test-os-util.c
index c215a2e99e..ef63026945 100644
--- a/src/test/test-os-util.c
+++ b/src/test/test-os-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
diff --git a/src/test/test-parse-util.c b/src/test/test-parse-util.c
index d4f908f5d4..1c969091ef 100644
--- a/src/test/test-parse-util.c
+++ b/src/test/test-parse-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <linux/loadavg.h>
diff --git a/src/test/test-path-lookup.c b/src/test/test-path-lookup.c
index b9111e9259..da146aac2a 100644
--- a/src/test/test-path-lookup.c
+++ b/src/test/test-path-lookup.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdlib.h>
#include <sys/stat.h>
diff --git a/src/test/test-path-util.c b/src/test/test-path-util.c
index e98c19dd6c..f4f8d0550b 100644
--- a/src/test/test-path-util.c
+++ b/src/test/test-path-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdio.h>
#include <unistd.h>
@@ -184,7 +184,7 @@ static void test_find_executable_full(void) {
if (p)
assert_se(oldpath = strdup(p));
- assert_se(unsetenv("PATH") >= 0);
+ assert_se(unsetenv("PATH") == 0);
assert_se(find_executable_full("sh", true, &p) == 0);
puts(p);
@@ -347,7 +347,7 @@ static void test_fsck_exists(void) {
log_info("/* %s */", __func__);
/* Ensure we use a sane default for PATH. */
- unsetenv("PATH");
+ assert_se(unsetenv("PATH") == 0);
/* fsck.minix is provided by util-linux and will probably exist. */
assert_se(fsck_exists("minix") == 1);
diff --git a/src/test/test-path.c b/src/test/test-path.c
index 2e20674c2f..490fb136a7 100644
--- a/src/test/test-path.c
+++ b/src/test/test-path.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdbool.h>
#include <sys/stat.h>
diff --git a/src/test/test-pretty-print.c b/src/test/test-pretty-print.c
index 9236eb1315..dbae34e73e 100644
--- a/src/test/test-pretty-print.c
+++ b/src/test/test-pretty-print.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdio.h>
#include <sys/stat.h>
diff --git a/src/test/test-prioq.c b/src/test/test-prioq.c
index 50f66cb970..4bfa18195e 100644
--- a/src/test/test-prioq.c
+++ b/src/test/test-prioq.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdlib.h>
diff --git a/src/test/test-proc-cmdline.c b/src/test/test-proc-cmdline.c
index 4a9b111a20..1f5ee7d768 100644
--- a/src/test/test-proc-cmdline.c
+++ b/src/test/test-proc-cmdline.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "env-util.h"
diff --git a/src/test/test-process-util.c b/src/test/test-process-util.c
index b00dd4a980..a87cdf8747 100644
--- a/src/test/test-process-util.c
+++ b/src/test/test-process-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <sys/mount.h>
diff --git a/src/test/test-procfs-util.c b/src/test/test-procfs-util.c
index 61434578b0..b2679e30fb 100644
--- a/src/test/test-procfs-util.c
+++ b/src/test/test-procfs-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
diff --git a/src/test/test-psi-util.c b/src/test/test-psi-util.c
index bde8ef80b1..0b5a30cf57 100644
--- a/src/test/test-psi-util.c
+++ b/src/test/test-psi-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <linux/loadavg.h>
diff --git a/src/test/test-qrcode-util.c b/src/test/test-qrcode-util.c
index c4e2894eb7..221ad854c2 100644
--- a/src/test/test-qrcode-util.c
+++ b/src/test/test-qrcode-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "locale-util.h"
#include "main-func.h"
diff --git a/src/test/test-random-util.c b/src/test/test-random-util.c
index ad5bc72a4e..02a73ecdb2 100644
--- a/src/test/test-random-util.c
+++ b/src/test/test-random-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "hexdecoct.h"
#include "random-util.h"
diff --git a/src/test/test-ratelimit.c b/src/test/test-ratelimit.c
index 56a6fa2d76..af60572e05 100644
--- a/src/test/test-ratelimit.c
+++ b/src/test/test-ratelimit.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <unistd.h>
diff --git a/src/test/test-replace-var.c b/src/test/test-replace-var.c
index 8620e72b2b..4d699b92f0 100644
--- a/src/test/test-replace-var.c
+++ b/src/test/test-replace-var.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdio.h>
diff --git a/src/test/test-rlimit-util.c b/src/test/test-rlimit-util.c
index 90eda96a73..057ae6b2bc 100644
--- a/src/test/test-rlimit-util.c
+++ b/src/test/test-rlimit-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/resource.h>
diff --git a/src/test/test-rm-rf.c b/src/test/test-rm-rf.c
index d6e426c0fb..38aa100e0b 100644
--- a/src/test/test-rm-rf.c
+++ b/src/test/test-rm-rf.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <unistd.h>
diff --git a/src/test/test-sched-prio.c b/src/test/test-sched-prio.c
index da6d2a21e6..1f125b1d1e 100644
--- a/src/test/test-sched-prio.c
+++ b/src/test/test-sched-prio.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2012 Holger Hans Peter Freyther
***/
diff --git a/src/test/test-sd-hwdb.c b/src/test/test-sd-hwdb.c
index eb34d8eab2..7e1512a97d 100644
--- a/src/test/test-sd-hwdb.c
+++ b/src/test/test-sd-hwdb.c
@@ -1,3 +1,5 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
#include "sd-hwdb.h"
#include "alloc-util.h"
diff --git a/src/test/test-sd-path.c b/src/test/test-sd-path.c
index 9260db5ace..75436ab1ce 100644
--- a/src/test/test-sd-path.c
+++ b/src/test/test-sd-path.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "sd-path.h"
diff --git a/src/test/test-seccomp.c b/src/test/test-seccomp.c
index 8831d87fe7..10393b6a7c 100644
--- a/src/test/test-seccomp.c
+++ b/src/test/test-seccomp.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <poll.h>
@@ -10,6 +10,9 @@
#include <sys/syscall.h>
#include <sys/types.h>
#include <unistd.h>
+#if HAVE_VALGRIND_VALGRIND_H
+#include <valgrind/valgrind.h>
+#endif
#include "alloc-util.h"
#include "fd-util.h"
@@ -30,7 +33,7 @@
#include "virt.h"
/* __NR_socket may be invalid due to libseccomp */
-#if !defined(__NR_socket) || __NR_socket < 0 || defined(__i386__) || defined(__s390x__) || defined(__s390__)
+#if !defined(__NR_socket) || __NR_socket < 0 || defined(__i386__) || defined(__s390x__) || defined(__s390__) || defined(__powerpc64__) || defined(__powerpc__)
/* On these archs, socket() is implemented via the socketcall() syscall multiplexer,
* and we can't restrict it hence via seccomp. */
# define SECCOMP_RESTRICT_ADDRESS_FAMILIES_BROKEN 1
@@ -115,6 +118,21 @@ static void test_filter_sets(void) {
for (unsigned i = 0; i < _SYSCALL_FILTER_SET_MAX; i++) {
pid_t pid;
+#if HAVE_VALGRIND_VALGRIND_H
+ if (RUNNING_ON_VALGRIND && IN_SET(i, SYSCALL_FILTER_SET_DEFAULT, SYSCALL_FILTER_SET_BASIC_IO, SYSCALL_FILTER_SET_SIGNAL)) {
+ /* valgrind at least requires rt_sigprocmask(), read(), write(). */
+ log_info("Running on valgrind, skipping %s", syscall_filter_sets[i].name);
+ continue;
+ }
+#endif
+#if HAS_FEATURE_ADDRESS_SANITIZER
+ if (IN_SET(i, SYSCALL_FILTER_SET_DEFAULT, SYSCALL_FILTER_SET_BASIC_IO, SYSCALL_FILTER_SET_SIGNAL)) {
+ /* ASAN at least requires sigaltstack(), read(), write(). */
+ log_info("Running on address sanitizer, skipping %s", syscall_filter_sets[i].name);
+ continue;
+ }
+#endif
+
log_info("Testing %s", syscall_filter_sets[i].name);
pid = fork();
@@ -323,6 +341,13 @@ static void test_protect_sysctl(void) {
assert_se(seccomp_protect_sysctl() >= 0);
+#if HAVE_VALGRIND_VALGRIND_H
+ if (RUNNING_ON_VALGRIND) {
+ log_info("Running on valgrind, skipping syscall/EPERM test");
+ _exit(EXIT_SUCCESS);
+ }
+#endif
+
#if defined __NR__sysctl && __NR__sysctl >= 0
assert_se(syscall(__NR__sysctl, 0, 0, 0) < 0);
assert_se(errno == EPERM);
@@ -525,6 +550,16 @@ static void test_memory_deny_write_execute_mmap(void) {
log_notice("Not root, skipping %s", __func__);
return;
}
+#if HAVE_VALGRIND_VALGRIND_H
+ if (RUNNING_ON_VALGRIND) {
+ log_notice("Running on valgrind, skipping %s", __func__);
+ return;
+ }
+#endif
+#if HAS_FEATURE_ADDRESS_SANITIZER
+ log_notice("Running on address sanitizer, skipping %s", __func__);
+ return;
+#endif
pid = fork();
assert_se(pid >= 0);
@@ -585,6 +620,16 @@ static void test_memory_deny_write_execute_shmat(void) {
log_notice("Not root, skipping %s", __func__);
return;
}
+#if HAVE_VALGRIND_VALGRIND_H
+ if (RUNNING_ON_VALGRIND) {
+ log_notice("Running on valgrind, skipping %s", __func__);
+ return;
+ }
+#endif
+#if HAS_FEATURE_ADDRESS_SANITIZER
+ log_notice("Running on address sanitizer, skipping %s", __func__);
+ return;
+#endif
shmid = shmget(IPC_PRIVATE, page_size(), 0);
assert_se(shmid >= 0);
diff --git a/src/test/test-selinux.c b/src/test/test-selinux.c
index 59b4f71946..3eb7ad30cf 100644
--- a/src/test/test-selinux.c
+++ b/src/test/test-selinux.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/stat.h>
diff --git a/src/test/test-serialize.c b/src/test/test-serialize.c
index a57d5db2b1..7bd53a861d 100644
--- a/src/test/test-serialize.c
+++ b/src/test/test-serialize.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "escape.h"
#include "fd-util.h"
diff --git a/src/test/test-set-disable-mempool.c b/src/test/test-set-disable-mempool.c
index aea83d2679..ae36fac102 100644
--- a/src/test/test-set-disable-mempool.c
+++ b/src/test/test-set-disable-mempool.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <pthread.h>
diff --git a/src/test/test-set.c b/src/test/test-set.c
index d3e6de7978..16314d051b 100644
--- a/src/test/test-set.c
+++ b/src/test/test-set.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "set.h"
#include "strv.h"
diff --git a/src/test/test-sigbus.c b/src/test/test-sigbus.c
index f753e3836e..d141735320 100644
--- a/src/test/test-sigbus.c
+++ b/src/test/test-sigbus.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <sys/mman.h>
diff --git a/src/test/test-signal-util.c b/src/test/test-signal-util.c
index 1a8c60ad42..e5096a8c00 100644
--- a/src/test/test-signal-util.c
+++ b/src/test/test-signal-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <unistd.h>
diff --git a/src/test/test-siphash24.c b/src/test/test-siphash24.c
index 6ae272fa94..4a1672fb95 100644
--- a/src/test/test-siphash24.c
+++ b/src/test/test-siphash24.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "memory-util.h"
#include "siphash24.h"
diff --git a/src/test/test-sizeof.c b/src/test/test-sizeof.c
index 6dee2022e8..3c9dc180fa 100644
--- a/src/test/test-sizeof.c
+++ b/src/test/test-sizeof.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sched.h>
#include <stdio.h>
diff --git a/src/test/test-sleep.c b/src/test/test-sleep.c
index 8b4fa82640..d916254cc9 100644
--- a/src/test/test-sleep.c
+++ b/src/test/test-sleep.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <inttypes.h>
diff --git a/src/test/test-socket-netlink.c b/src/test/test-socket-netlink.c
index afb7038621..704cc01e6f 100644
--- a/src/test/test-socket-netlink.c
+++ b/src/test/test-socket-netlink.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "missing_network.h"
diff --git a/src/test/test-socket-util.c b/src/test/test-socket-util.c
index 1bb186655d..4ff7d714f8 100644
--- a/src/test/test-socket-util.c
+++ b/src/test/test-socket-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <grp.h>
diff --git a/src/test/test-specifier.c b/src/test/test-specifier.c
index e81b12b418..2648c1c3f5 100644
--- a/src/test/test-specifier.c
+++ b/src/test/test-specifier.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "log.h"
@@ -47,25 +47,12 @@ static void test_specifier_escape_strv(void) {
/* Any specifier functions which don't need an argument. */
static const Specifier specifier_table[] = {
- { 'm', specifier_machine_id, NULL },
- { 'b', specifier_boot_id, NULL },
- { 'H', specifier_host_name, NULL },
- { 'l', specifier_short_host_name, NULL },
- { 'v', specifier_kernel_release, NULL },
- { 'a', specifier_architecture, NULL },
- { 'o', specifier_os_id, NULL },
- { 'w', specifier_os_version_id, NULL },
- { 'B', specifier_os_build_id, NULL },
- { 'W', specifier_os_variant_id, NULL },
-
- { 'g', specifier_group_name, NULL },
- { 'G', specifier_group_id, NULL },
- { 'U', specifier_user_id, NULL },
- { 'u', specifier_user_name, NULL },
+ COMMON_SYSTEM_SPECIFIERS,
+
+ COMMON_CREDS_SPECIFIERS,
{ 'h', specifier_user_home, NULL },
- { 'T', specifier_tmp_dir, NULL },
- { 'V', specifier_var_tmp_dir, NULL },
+ COMMON_TMP_SPECIFIERS,
{}
};
diff --git a/src/test/test-stat-util.c b/src/test/test-stat-util.c
index 13a66dfb17..9aca09c4de 100644
--- a/src/test/test-stat-util.c
+++ b/src/test/test-stat-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <linux/magic.h>
diff --git a/src/test/test-static-destruct.c b/src/test/test-static-destruct.c
index eb0523d87a..904a9bbf5d 100644
--- a/src/test/test-static-destruct.c
+++ b/src/test/test-static-destruct.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "static-destruct.h"
diff --git a/src/test/test-strbuf.c b/src/test/test-strbuf.c
index 483ba44caa..867be19c86 100644
--- a/src/test/test-strbuf.c
+++ b/src/test/test-strbuf.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdlib.h>
diff --git a/src/test/test-string-util.c b/src/test/test-string-util.c
index 196c96aa8c..b74eb180f3 100644
--- a/src/test/test-string-util.c
+++ b/src/test/test-string-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "locale-util.h"
diff --git a/src/test/test-strip-tab-ansi.c b/src/test/test-strip-tab-ansi.c
index 8e305f3791..be54b0d4d6 100644
--- a/src/test/test-strip-tab-ansi.c
+++ b/src/test/test-strip-tab-ansi.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdio.h>
diff --git a/src/test/test-strv.c b/src/test/test-strv.c
index f681795ebe..6b5005f9fc 100644
--- a/src/test/test-strv.c
+++ b/src/test/test-strv.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "escape.h"
@@ -11,15 +11,7 @@ static void test_specifier_printf(void) {
static const Specifier table[] = {
{ 'X', specifier_string, (char*) "AAAA" },
{ 'Y', specifier_string, (char*) "BBBB" },
- { 'm', specifier_machine_id, NULL },
- { 'b', specifier_boot_id, NULL },
- { 'H', specifier_host_name, NULL },
- { 'v', specifier_kernel_release, NULL },
- { 'a', specifier_architecture, NULL },
- { 'o', specifier_os_id, NULL },
- { 'w', specifier_os_version_id, NULL },
- { 'B', specifier_os_build_id, NULL },
- { 'W', specifier_os_variant_id, NULL },
+ COMMON_SYSTEM_SPECIFIERS,
{}
};
diff --git a/src/test/test-strxcpyx.c b/src/test/test-strxcpyx.c
index 749aa46d75..4b6d8ebce3 100644
--- a/src/test/test-strxcpyx.c
+++ b/src/test/test-strxcpyx.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdio.h>
diff --git a/src/test/test-sysctl-util.c b/src/test/test-sysctl-util.c
index 2b957dd4d6..a6f449b764 100644
--- a/src/test/test-sysctl-util.c
+++ b/src/test/test-sysctl-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "strv.h"
#include "sysctl-util.h"
diff --git a/src/test/test-systemd-tmpfiles.py b/src/test/test-systemd-tmpfiles.py
index 7f4af38940..255922d05b 100755
--- a/src/test/test-systemd-tmpfiles.py
+++ b/src/test/test-systemd-tmpfiles.py
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# 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
diff --git a/src/test/test-tables.c b/src/test/test-tables.c
index 7273611143..e25cf9e5d9 100644
--- a/src/test/test-tables.c
+++ b/src/test/test-tables.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "architecture.h"
#include "automount.h"
diff --git a/src/test/test-terminal-util.c b/src/test/test-terminal-util.c
index 003257111a..508f0c03ee 100644
--- a/src/test/test-terminal-util.c
+++ b/src/test/test-terminal-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <stdbool.h>
diff --git a/src/test/test-time-util.c b/src/test/test-time-util.c
index 64242951ac..cc391e81a0 100644
--- a/src/test/test-time-util.c
+++ b/src/test/test-time-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "random-util.h"
#include "serialize.h"
@@ -480,7 +480,7 @@ static void test_in_utc_timezone(void) {
assert_se(streq(tzname[0], "CET"));
assert_se(streq(tzname[1], "CEST"));
- assert_se(unsetenv("TZ") >= 0);
+ assert_se(unsetenv("TZ") == 0);
}
static void test_map_clock_usec(void) {
diff --git a/src/test/test-tmpfiles.c b/src/test/test-tmpfiles.c
index b526871655..4c3389af8c 100644
--- a/src/test/test-tmpfiles.c
+++ b/src/test/test-tmpfiles.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <stdio.h>
diff --git a/src/test/test-udev-util.c b/src/test/test-udev-util.c
new file mode 100644
index 0000000000..b0213f8c39
--- /dev/null
+++ b/src/test/test-udev-util.c
@@ -0,0 +1,202 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "macro.h"
+#include "string-util.h"
+#include "udev-util.h"
+
+static void test_udev_rule_parse_value_one(const char *in, const char *expected_value, int expected_retval) {
+ _cleanup_free_ char *str = NULL;
+ char *value = UINT_TO_PTR(0x12345678U);
+ char *endpos = UINT_TO_PTR(0x87654321U);
+
+ assert_se(str = strdup(in));
+ assert_se(udev_rule_parse_value(str, &value, &endpos) == expected_retval);
+ if (expected_retval < 0) {
+ /* not modified on failure */
+ assert_se(value == UINT_TO_PTR(0x12345678U));
+ assert_se(endpos == UINT_TO_PTR(0x87654321U));
+ } else {
+ assert_se(streq_ptr(value, expected_value));
+ assert_se(endpos == str + strlen(in));
+ }
+}
+
+static void test_parse_value(void) {
+ /* input: "valid operand"
+ * parsed: valid operand
+ * use the following command to help generate textual C strings:
+ * python3 -c 'import json; print(json.dumps(input()))' */
+ test_udev_rule_parse_value_one(
+ "\"valid operand\"",
+ "valid operand",
+ 0
+ );
+}
+
+static void test_parse_value_with_backslashes(void) {
+ /* input: "va'l\'id\"op\"erand"
+ * parsed: va'l\'id"op"erand */
+ test_udev_rule_parse_value_one(
+ "\"va'l\\'id\\\"op\\\"erand\"",
+ "va'l\\'id\"op\"erand",
+ 0
+ );
+}
+
+static void test_parse_value_no_quotes(void) {
+ test_udev_rule_parse_value_one(
+ "no quotes",
+ 0,
+ -EINVAL
+ );
+}
+
+static void test_parse_value_noescape(void) {
+ test_udev_rule_parse_value_one(
+ "\"\\\\a\\b\\x\\y\"",
+ "\\\\a\\b\\x\\y",
+ 0
+ );
+}
+
+static void test_parse_value_nul(void) {
+ test_udev_rule_parse_value_one(
+ "\"reject\0nul\"",
+ 0,
+ -EINVAL
+ );
+}
+
+static void test_parse_value_escape_nothing(void) {
+ /* input: e"" */
+ test_udev_rule_parse_value_one(
+ "e\"\"",
+ "",
+ 0
+ );
+}
+
+static void test_parse_value_escape_nothing2(void) {
+ /* input: e"1234" */
+ test_udev_rule_parse_value_one(
+ "e\"1234\"",
+ "1234",
+ 0
+ );
+}
+
+static void test_parse_value_escape_double_quote(void) {
+ /* input: e"\"" */
+ test_udev_rule_parse_value_one(
+ "e\"\\\"\"",
+ "\"",
+ 0
+ );
+}
+
+static void test_parse_value_escape_backslash(void) {
+ /* input: e"\ */
+ test_udev_rule_parse_value_one(
+ "e\"\\",
+ 0,
+ -EINVAL
+ );
+ /* input: e"\" */
+ test_udev_rule_parse_value_one(
+ "e\"\\\"",
+ 0,
+ -EINVAL
+ );
+ /* input: e"\\" */
+ test_udev_rule_parse_value_one(
+ "e\"\\\\\"",
+ "\\",
+ 0
+ );
+ /* input: e"\\\" */
+ test_udev_rule_parse_value_one(
+ "e\"\\\\\\\"",
+ 0,
+ -EINVAL
+ );
+ /* input: e"\\\"" */
+ test_udev_rule_parse_value_one(
+ "e\"\\\\\\\"\"",
+ "\\\"",
+ 0
+ );
+ /* input: e"\\\\" */
+ test_udev_rule_parse_value_one(
+ "e\"\\\\\\\\\"",
+ "\\\\",
+ 0
+ );
+}
+
+static void test_parse_value_newline(void) {
+ /* input: e"operand with newline\n" */
+ test_udev_rule_parse_value_one(
+ "e\"operand with newline\\n\"",
+ "operand with newline\n",
+ 0
+ );
+}
+
+static void test_parse_value_escaped(void) {
+ /* input: e"single\rcharacter\t\aescape\bsequence" */
+ test_udev_rule_parse_value_one(
+ "e\"single\\rcharacter\\t\\aescape\\bsequence\"",
+ "single\rcharacter\t\aescape\bsequence",
+ 0
+ );
+}
+
+static void test_parse_value_invalid_escape(void) {
+ /* input: e"reject\invalid escape sequence" */
+ test_udev_rule_parse_value_one(
+ "e\"reject\\invalid escape sequence",
+ 0,
+ -EINVAL
+ );
+}
+
+static void test_parse_value_invalid_termination(void) {
+ /* input: e"\ */
+ test_udev_rule_parse_value_one(
+ "e\"\\",
+ 0,
+ -EINVAL
+ );
+}
+
+static void test_parse_value_unicode(void) {
+ /* input: "s\u1d1c\u1d04\u029c \u1d1c\u0274\u026a\u1d04\u1d0f\u1d05\u1d07 \U0001d568\U0001d560\U0001d568" */
+ test_udev_rule_parse_value_one(
+ "e\"s\\u1d1c\\u1d04\\u029c \\u1d1c\\u0274\\u026a\\u1d04\\u1d0f\\u1d05\\u1d07 \\U0001d568\\U0001d560\\U0001d568\"",
+ "s\xe1\xb4\x9c\xe1\xb4\x84\xca\x9c \xe1\xb4\x9c\xc9\xb4\xc9\xaa\xe1\xb4\x84\xe1\xb4\x8f\xe1\xb4\x85\xe1\xb4\x87 \xf0\x9d\x95\xa8\xf0\x9d\x95\xa0\xf0\x9d\x95\xa8",
+ 0
+ );
+}
+
+int main(int argc, char **argv) {
+ test_parse_value();
+ test_parse_value_with_backslashes();
+ test_parse_value_no_quotes();
+ test_parse_value_nul();
+ test_parse_value_noescape();
+
+ test_parse_value_escape_nothing();
+ test_parse_value_escape_nothing2();
+ test_parse_value_escape_double_quote();
+ test_parse_value_escape_backslash();
+ test_parse_value_newline();
+ test_parse_value_escaped();
+ test_parse_value_invalid_escape();
+ test_parse_value_invalid_termination();
+ test_parse_value_unicode();
+
+ return EXIT_SUCCESS;
+}
diff --git a/src/test/test-udev.c b/src/test/test-udev.c
index 00cab7bb45..8acf86da37 100644
--- a/src/test/test-udev.c
+++ b/src/test/test-udev.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2003-2004 Greg Kroah-Hartman <greg@kroah.com>
***/
diff --git a/src/test/test-uid-range.c b/src/test/test-uid-range.c
index 65a556c9c6..16cbab07d6 100644
--- a/src/test/test-uid-range.c
+++ b/src/test/test-uid-range.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stddef.h>
diff --git a/src/test/test-umask-util.c b/src/test/test-umask-util.c
index 27f6b56541..df3ae98f50 100644
--- a/src/test/test-umask-util.c
+++ b/src/test/test-umask-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "tests.h"
#include "umask-util.h"
diff --git a/src/test/test-umount.c b/src/test/test-umount.c
index 02852bc089..676c6dd862 100644
--- a/src/test/test-umount.c
+++ b/src/test/test-umount.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "errno-util.h"
diff --git a/src/test/test-unaligned.c b/src/test/test-unaligned.c
index 3d6f9a03b4..b4d380b529 100644
--- a/src/test/test-unaligned.c
+++ b/src/test/test-unaligned.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "memory-util.h"
#include "sparse-endian.h"
diff --git a/src/test/test-unit-file.c b/src/test/test-unit-file.c
index d1f85a7f26..8f9679051d 100644
--- a/src/test/test-unit-file.c
+++ b/src/test/test-unit-file.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "path-lookup.h"
#include "set.h"
diff --git a/src/test/test-unit-name.c b/src/test/test-unit-name.c
index 0d524f9a56..ece78aa548 100644
--- a/src/test/test-unit-name.c
+++ b/src/test/test-unit-name.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdio.h>
#include <stdlib.h>
diff --git a/src/test/test-user-record.c b/src/test/test-user-record.c
index d623706648..c9182e382b 100644
--- a/src/test/test-user-record.c
+++ b/src/test/test-user-record.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <unistd.h>
#include <sys/types.h>
diff --git a/src/test/test-user-util.c b/src/test/test-user-util.c
index 306d08a282..8924b5f95a 100644
--- a/src/test/test-user-util.c
+++ b/src/test/test-user-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "format-util.h"
diff --git a/src/test/test-utf8.c b/src/test/test-utf8.c
index 66003ac13e..c7b6d8dd53 100644
--- a/src/test/test-utf8.c
+++ b/src/test/test-utf8.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "string-util.h"
diff --git a/src/test/test-util.c b/src/test/test-util.c
index cfbafcc5ca..0fe7a381c7 100644
--- a/src/test/test-util.c
+++ b/src/test/test-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <sys/wait.h>
diff --git a/src/test/test-varlink.c b/src/test/test-varlink.c
index fbfc72cd81..9a5fbc6c8e 100644
--- a/src/test/test-varlink.c
+++ b/src/test/test-varlink.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <poll.h>
diff --git a/src/test/test-verbs.c b/src/test/test-verbs.c
index 24593c75d9..b7a0cbf527 100644
--- a/src/test/test-verbs.c
+++ b/src/test/test-verbs.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <getopt.h>
diff --git a/src/test/test-watch-pid.c b/src/test/test-watch-pid.c
index 28ecffb0c0..4afc46f10f 100644
--- a/src/test/test-watch-pid.c
+++ b/src/test/test-watch-pid.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "log.h"
#include "manager.h"
diff --git a/src/test/test-watchdog.c b/src/test/test-watchdog.c
index ab66d5c49d..cbef75fe07 100644
--- a/src/test/test-watchdog.c
+++ b/src/test/test-watchdog.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <string.h>
#include <unistd.h>
diff --git a/src/test/test-web-util.c b/src/test/test-web-util.c
index dd1df8c247..853ea9c291 100644
--- a/src/test/test-web-util.c
+++ b/src/test/test-web-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "macro.h"
#include "web-util.h"
diff --git a/src/test/test-xattr-util.c b/src/test/test-xattr-util.c
index 3e6df96c5d..f93aca68f0 100644
--- a/src/test/test-xattr-util.c
+++ b/src/test/test-xattr-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/test/test-xdg-autostart.c b/src/test/test-xdg-autostart.c
index 70287b3c55..a437e2cfed 100644
--- a/src/test/test-xdg-autostart.c
+++ b/src/test/test-xdg-autostart.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "fd-util.h"
diff --git a/src/test/test-xml.c b/src/test/test-xml.c
index 63e7a10e7b..e69d6d0fe4 100644
--- a/src/test/test-xml.c
+++ b/src/test/test-xml.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdarg.h>
diff --git a/src/time-wait-sync/time-wait-sync.c b/src/time-wait-sync/time-wait-sync.c
index 96072445f6..df34541bf7 100644
--- a/src/time-wait-sync/time-wait-sync.c
+++ b/src/time-wait-sync/time-wait-sync.c
@@ -1,11 +1,5 @@
-/*
- * systemd service to wait until kernel realtime clock is synchronized
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+/* systemd service to wait until kernel realtime clock is synchronized */
#include <errno.h>
#include <stdbool.h>
diff --git a/src/timedate/meson.build b/src/timedate/meson.build
index 46c7360da3..6eb9607e08 100644
--- a/src/timedate/meson.build
+++ b/src/timedate/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
if conf.get('ENABLE_TIMEDATED') == 1
install_data('org.freedesktop.timedate1.conf',
diff --git a/src/timedate/org.freedesktop.timedate1.conf b/src/timedate/org.freedesktop.timedate1.conf
index 53f6c8435d..4567082281 100644
--- a/src/timedate/org.freedesktop.timedate1.conf
+++ b/src/timedate/org.freedesktop.timedate1.conf
@@ -3,7 +3,7 @@
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<!--
- SPDX-License-Identifier: LGPL-2.1+
+ SPDX-License-Identifier: LGPL-2.1-or-later
This file is part of systemd.
diff --git a/src/timedate/org.freedesktop.timedate1.policy b/src/timedate/org.freedesktop.timedate1.policy
index b6303ba1dd..c4e71b0753 100644
--- a/src/timedate/org.freedesktop.timedate1.policy
+++ b/src/timedate/org.freedesktop.timedate1.policy
@@ -3,7 +3,7 @@
"http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
<!--
- SPDX-License-Identifier: LGPL-2.1+
+ SPDX-License-Identifier: LGPL-2.1-or-later
This file is part of systemd.
diff --git a/src/timedate/org.freedesktop.timedate1.service b/src/timedate/org.freedesktop.timedate1.service
index d5f3a6e30d..6b82d700f9 100644
--- a/src/timedate/org.freedesktop.timedate1.service
+++ b/src/timedate/org.freedesktop.timedate1.service
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/src/timedate/timedatectl.c b/src/timedate/timedatectl.c
index 0131bbed8c..abc792a452 100644
--- a/src/timedate/timedatectl.c
+++ b/src/timedate/timedatectl.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <getopt.h>
#include <locale.h>
@@ -12,6 +12,7 @@
#include "bus-locator.h"
#include "bus-map-properties.h"
#include "bus-print-properties.h"
+#include "env-util.h"
#include "format-table.h"
#include "in-addr-util.h"
#include "main-func.h"
@@ -139,12 +140,9 @@ static int print_status_info(const StatusInfo *i) {
/* Restore the $TZ */
- if (old_tz)
- r = setenv("TZ", old_tz, true);
- else
- r = unsetenv("TZ");
+ r = set_unset_env("TZ", old_tz, true);
if (r < 0)
- log_warning_errno(errno, "Failed to set TZ environment variable, ignoring: %m");
+ log_warning_errno(r, "Failed to set TZ environment variable, ignoring: %m");
else
tzset();
diff --git a/src/timedate/timedated.c b/src/timedate/timedated.c
index c467b85477..8bfcfd5cdc 100644
--- a/src/timedate/timedated.c
+++ b/src/timedate/timedated.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <sys/stat.h>
@@ -763,10 +763,7 @@ static int method_set_local_rtc(sd_bus_message *m, void *userdata, sd_bus_error
struct tm tm;
/* Sync system clock from RTC; first, initialize the timezone fields of struct tm. */
- if (c->local_rtc)
- localtime_r(&ts.tv_sec, &tm);
- else
- gmtime_r(&ts.tv_sec, &tm);
+ localtime_or_gmtime_r(&ts.tv_sec, &tm, !c->local_rtc);
/* Override the main fields of struct tm, but not the timezone fields */
r = clock_get_hwclock(&tm);
@@ -774,10 +771,7 @@ static int method_set_local_rtc(sd_bus_message *m, void *userdata, sd_bus_error
log_debug_errno(r, "Failed to get hardware clock, ignoring: %m");
else {
/* And set the system clock with this */
- if (c->local_rtc)
- ts.tv_sec = mktime(&tm);
- else
- ts.tv_sec = timegm(&tm);
+ mktime_or_timegm(&tm, !c->local_rtc);
if (clock_settime(CLOCK_REALTIME, &ts) < 0)
log_debug_errno(errno, "Failed to update system clock, ignoring: %m");
@@ -787,10 +781,7 @@ static int method_set_local_rtc(sd_bus_message *m, void *userdata, sd_bus_error
struct tm tm;
/* Sync RTC from system clock */
- if (c->local_rtc)
- localtime_r(&ts.tv_sec, &tm);
- else
- gmtime_r(&ts.tv_sec, &tm);
+ localtime_or_gmtime_r(&ts.tv_sec, &tm, !c->local_rtc);
r = clock_set_hwclock(&tm);
if (r < 0)
@@ -884,10 +875,7 @@ static int method_set_time(sd_bus_message *m, void *userdata, sd_bus_error *erro
}
/* Sync down to RTC */
- if (c->local_rtc)
- localtime_r(&ts.tv_sec, &tm);
- else
- gmtime_r(&ts.tv_sec, &tm);
+ localtime_or_gmtime_r(&ts.tv_sec, &tm, !c->local_rtc);
r = clock_set_hwclock(&tm);
if (r < 0)
diff --git a/src/timesync/meson.build b/src/timesync/meson.build
index e5c118c8db..571e3fc7ef 100644
--- a/src/timesync/meson.build
+++ b/src/timesync/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
systemd_timesyncd_sources = files('''
timesyncd.c
@@ -26,8 +26,10 @@ if conf.get('ENABLE_TIMESYNCD') == 1
input : 'timesyncd.conf.in',
output : 'timesyncd.conf',
configuration : substs)
- install_data(timesyncd_conf,
- install_dir : pkgsysconfdir)
+ if install_sysconfdir
+ install_data(timesyncd_conf,
+ install_dir : pkgsysconfdir)
+ endif
install_data('org.freedesktop.timesync1.conf',
install_dir : dbuspolicydir)
install_data('org.freedesktop.timesync1.service',
diff --git a/src/timesync/org.freedesktop.timesync1.service b/src/timesync/org.freedesktop.timesync1.service
index 84b4b4f973..98878d6ac9 100644
--- a/src/timesync/org.freedesktop.timesync1.service
+++ b/src/timesync/org.freedesktop.timesync1.service
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/src/timesync/test-timesync.c b/src/timesync/test-timesync.c
index bd03a1dd90..31e91e7b7b 100644
--- a/src/timesync/test-timesync.c
+++ b/src/timesync/test-timesync.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/* Some unit tests for the helper functions in timesyncd. */
diff --git a/src/timesync/timesyncd-bus.c b/src/timesync/timesyncd-bus.c
index 6effdfc325..c5ad5feb95 100644
--- a/src/timesync/timesyncd-bus.c
+++ b/src/timesync/timesyncd-bus.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "sd-bus.h"
diff --git a/src/timesync/timesyncd-bus.h b/src/timesync/timesyncd-bus.h
index 6670ffbc36..83db2167e2 100644
--- a/src/timesync/timesyncd-bus.h
+++ b/src/timesync/timesyncd-bus.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "timesyncd-manager.h"
diff --git a/src/timesync/timesyncd-conf.c b/src/timesync/timesyncd-conf.c
index d7ec94e487..2c3114613b 100644
--- a/src/timesync/timesyncd-conf.c
+++ b/src/timesync/timesyncd-conf.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "def.h"
diff --git a/src/timesync/timesyncd-conf.h b/src/timesync/timesyncd-conf.h
index bbe27cf2ac..d6b9060401 100644
--- a/src/timesync/timesyncd-conf.h
+++ b/src/timesync/timesyncd-conf.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "conf-parser.h"
diff --git a/src/timesync/timesyncd-manager.c b/src/timesync/timesyncd-manager.c
index 0fab37d783..93ba4ef87d 100644
--- a/src/timesync/timesyncd-manager.c
+++ b/src/timesync/timesyncd-manager.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <math.h>
diff --git a/src/timesync/timesyncd-manager.h b/src/timesync/timesyncd-manager.h
index d74521c9cf..940a88ed7b 100644
--- a/src/timesync/timesyncd-manager.h
+++ b/src/timesync/timesyncd-manager.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include <sys/timex.h>
diff --git a/src/timesync/timesyncd-ntp-message.h b/src/timesync/timesyncd-ntp-message.h
index 14fba6d2cc..76ed9ecac6 100644
--- a/src/timesync/timesyncd-ntp-message.h
+++ b/src/timesync/timesyncd-ntp-message.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sparse-endian.h"
diff --git a/src/timesync/timesyncd-server.c b/src/timesync/timesyncd-server.c
index aadecb6a1c..f7ec317f41 100644
--- a/src/timesync/timesyncd-server.c
+++ b/src/timesync/timesyncd-server.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "timesyncd-server.h"
diff --git a/src/timesync/timesyncd-server.h b/src/timesync/timesyncd-server.h
index d30bd2a3ce..8e9e408ecc 100644
--- a/src/timesync/timesyncd-server.h
+++ b/src/timesync/timesyncd-server.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "list.h"
diff --git a/src/timesync/timesyncd.c b/src/timesync/timesyncd.c
index 4f514d536d..1f59bf14e1 100644
--- a/src/timesync/timesyncd.c
+++ b/src/timesync/timesyncd.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/stat.h>
#include <sys/types.h>
diff --git a/src/tmpfiles/meson.build b/src/tmpfiles/meson.build
index 434dcf800d..2d61568c66 100644
--- a/src/tmpfiles/meson.build
+++ b/src/tmpfiles/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
systemd_tmpfiles_sources = [
'src/tmpfiles/tmpfiles.c',
diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
index b42bc78934..9906c70eef 100644
--- a/src/tmpfiles/tmpfiles.c
+++ b/src/tmpfiles/tmpfiles.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
@@ -188,29 +188,27 @@ static int specifier_machine_id_safe(char specifier, const void *data, const voi
static int specifier_directory(char specifier, const void *data, const void *userdata, char **ret);
static const Specifier specifier_table[] = {
- { 'm', specifier_machine_id_safe, NULL },
+ { 'a', specifier_architecture, NULL },
{ 'b', specifier_boot_id, NULL },
+ { 'B', specifier_os_build_id, NULL },
{ 'H', specifier_host_name, NULL },
{ 'l', specifier_short_host_name, NULL },
- { 'v', specifier_kernel_release, NULL },
- { 'a', specifier_architecture, NULL },
+ { 'm', specifier_machine_id_safe, NULL },
{ 'o', specifier_os_id, NULL },
+ { 'v', specifier_kernel_release, NULL },
{ 'w', specifier_os_version_id, NULL },
- { 'B', specifier_os_build_id, NULL },
{ 'W', specifier_os_variant_id, NULL },
- { 'g', specifier_group_name, NULL },
- { 'G', specifier_group_id, NULL },
- { 'U', specifier_user_id, NULL },
- { 'u', specifier_user_name, NULL },
{ 'h', specifier_user_home, NULL },
- { 't', specifier_directory, UINT_TO_PTR(DIRECTORY_RUNTIME) },
- { 'S', specifier_directory, UINT_TO_PTR(DIRECTORY_STATE) },
{ 'C', specifier_directory, UINT_TO_PTR(DIRECTORY_CACHE) },
{ 'L', specifier_directory, UINT_TO_PTR(DIRECTORY_LOGS) },
- { 'T', specifier_tmp_dir, NULL },
- { 'V', specifier_var_tmp_dir, NULL },
+ { 'S', specifier_directory, UINT_TO_PTR(DIRECTORY_STATE) },
+ { 't', specifier_directory, UINT_TO_PTR(DIRECTORY_RUNTIME) },
+
+ COMMON_CREDS_SPECIFIERS,
+
+ COMMON_TMP_SPECIFIERS,
{}
};
diff --git a/src/tty-ask-password-agent/tty-ask-password-agent.c b/src/tty-ask-password-agent/tty-ask-password-agent.c
index 932f6e18b2..1940792b9d 100644
--- a/src/tty-ask-password-agent/tty-ask-password-agent.c
+++ b/src/tty-ask-password-agent/tty-ask-password-agent.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2015 Werner Fink
***/
diff --git a/src/udev/ata_id/ata_id.c b/src/udev/ata_id/ata_id.c
index b5e14922a2..ce0bf5d24b 100644
--- a/src/udev/ata_id/ata_id.c
+++ b/src/udev/ata_id/ata_id.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
* ata_id - reads product/serial number from ATA drives
*
diff --git a/src/udev/cdrom_id/cdrom_id.c b/src/udev/cdrom_id/cdrom_id.c
index 13b947beb1..804cc7c5aa 100644
--- a/src/udev/cdrom_id/cdrom_id.c
+++ b/src/udev/cdrom_id/cdrom_id.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
* cdrom_id - optical drive and media information prober
*/
diff --git a/src/udev/fido_id/fido_id.c b/src/udev/fido_id/fido_id.c
index 83761d72b4..f14b81d30d 100644
--- a/src/udev/fido_id/fido_id.c
+++ b/src/udev/fido_id/fido_id.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/*
* Identifies FIDO CTAP1 ("U2F")/CTAP2 security tokens based on the usage declared in their report
* descriptor and outputs suitable environment variables.
diff --git a/src/udev/fido_id/fido_id_desc.c b/src/udev/fido_id/fido_id_desc.c
index bbfcf93709..2dfa759032 100644
--- a/src/udev/fido_id/fido_id_desc.c
+++ b/src/udev/fido_id/fido_id_desc.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/* Inspired by Andrew Lutomirski's 'u2f-hidraw-policy.c' */
#include <errno.h>
diff --git a/src/udev/fido_id/fido_id_desc.h b/src/udev/fido_id/fido_id_desc.h
index c813a3a454..57af57e889 100644
--- a/src/udev/fido_id/fido_id_desc.h
+++ b/src/udev/fido_id/fido_id_desc.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
diff --git a/src/udev/fido_id/fuzz-fido-id-desc.c b/src/udev/fido_id/fuzz-fido-id-desc.c
index 45a4879e82..44d66df1a0 100644
--- a/src/udev/fido_id/fuzz-fido-id-desc.c
+++ b/src/udev/fido_id/fuzz-fido-id-desc.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <linux/hid.h>
#include <stdbool.h>
diff --git a/src/udev/fido_id/test-fido-id-desc.c b/src/udev/fido_id/test-fido-id-desc.c
index 38eec2bc28..6836bca28d 100644
--- a/src/udev/fido_id/test-fido-id-desc.c
+++ b/src/udev/fido_id/test-fido-id-desc.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdint.h>
#include <stdlib.h>
diff --git a/src/udev/meson.build b/src/udev/meson.build
index f8431b3da4..d67b459388 100644
--- a/src/udev/meson.build
+++ b/src/udev/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
udevadm_sources = files('''
udevadm.c
@@ -185,8 +185,10 @@ foreach prog : [['ata_id/ata_id.c'],
install_dir : udevlibexecdir)
endforeach
-install_data('udev.conf',
- install_dir : join_paths(sysconfdir, 'udev'))
+if install_sysconfdir
+ install_data('udev.conf',
+ install_dir : join_paths(sysconfdir, 'udev'))
+endif
configure_file(
input : 'udev.pc.in',
@@ -194,8 +196,10 @@ configure_file(
configuration : substs,
install_dir : pkgconfigdatadir == 'no' ? '' : pkgconfigdatadir)
-meson.add_install_script('sh', '-c',
- mkdir_p.format(join_paths(sysconfdir, 'udev/rules.d')))
+if install_sysconfdir
+ meson.add_install_script('sh', '-c',
+ mkdir_p.format(join_paths(sysconfdir, 'udev/rules.d')))
+endif
fuzzers += [
[['src/udev/net/fuzz-link-parser.c',
diff --git a/src/udev/mtd_probe/mtd_probe.c b/src/udev/mtd_probe/mtd_probe.c
index f47b13378c..df1f1c173a 100644
--- a/src/udev/mtd_probe/mtd_probe.c
+++ b/src/udev/mtd_probe/mtd_probe.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
* Copyright © 2010 - Maxim Levitsky
*
diff --git a/src/udev/mtd_probe/mtd_probe.h b/src/udev/mtd_probe/mtd_probe.h
index 1d8c93b7fd..ae03a7d2f7 100644
--- a/src/udev/mtd_probe/mtd_probe.h
+++ b/src/udev/mtd_probe/mtd_probe.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once
/*
diff --git a/src/udev/mtd_probe/probe_smartmedia.c b/src/udev/mtd_probe/probe_smartmedia.c
index f8e1b140f5..f4612ba4f9 100644
--- a/src/udev/mtd_probe/probe_smartmedia.c
+++ b/src/udev/mtd_probe/probe_smartmedia.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
* Copyright © 2010 - Maxim Levitsky
*
diff --git a/src/udev/net/fuzz-link-parser.c b/src/udev/net/fuzz-link-parser.c
index e0dacc732a..6f3469c5b8 100644
--- a/src/udev/net/fuzz-link-parser.c
+++ b/src/udev/net/fuzz-link-parser.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "fd-util.h"
#include "fs-util.h"
diff --git a/src/udev/net/link-config.c b/src/udev/net/link-config.c
index f885ff6a64..cbeaad9ccc 100644
--- a/src/udev/net/link-config.c
+++ b/src/udev/net/link-config.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <linux/netdevice.h>
#include <netinet/ether.h>
@@ -175,6 +175,13 @@ int link_load_one(link_config_ctx *ctx, const char *filename) {
return 0;
}
+ if (IN_SET(link->mac_address_policy, MAC_ADDRESS_POLICY_PERSISTENT, MAC_ADDRESS_POLICY_RANDOM) && link->mac) {
+ log_warning("%s: MACAddress= in [Link] section will be ignored when MACAddressPolicy= "
+ "is set to \"persistent\" or \"random\".",
+ filename);
+ link->mac = mfree(link->mac);
+ }
+
log_debug("Parsed configuration file %s", filename);
LIST_PREPEND(links, ctx->links, TAKE_PTR(link));
@@ -701,8 +708,12 @@ static const char* const mac_address_policy_table[_MAC_ADDRESS_POLICY_MAX] = {
};
DEFINE_STRING_TABLE_LOOKUP(mac_address_policy, MACAddressPolicy);
-DEFINE_CONFIG_PARSE_ENUM(config_parse_mac_address_policy, mac_address_policy, MACAddressPolicy,
- "Failed to parse MAC address policy");
+DEFINE_CONFIG_PARSE_ENUM_WITH_DEFAULT(
+ config_parse_mac_address_policy,
+ mac_address_policy,
+ MACAddressPolicy,
+ MAC_ADDRESS_POLICY_NONE,
+ "Failed to parse MAC address policy");
static const char* const name_policy_table[_NAMEPOLICY_MAX] = {
[NAMEPOLICY_KERNEL] = "kernel",
diff --git a/src/udev/net/link-config.h b/src/udev/net/link-config.h
index 2874c506c9..1beecb10ea 100644
--- a/src/udev/net/link-config.h
+++ b/src/udev/net/link-config.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-device.h"
diff --git a/src/udev/scsi_id/scsi.h b/src/udev/scsi_id/scsi.h
index 208b3e72ab..ee3e401b7a 100644
--- a/src/udev/scsi_id/scsi.h
+++ b/src/udev/scsi_id/scsi.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once
/*
diff --git a/src/udev/scsi_id/scsi_id.c b/src/udev/scsi_id/scsi_id.c
index 9c33a560a8..57202564da 100644
--- a/src/udev/scsi_id/scsi_id.c
+++ b/src/udev/scsi_id/scsi_id.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
* Copyright © IBM Corp. 2003
* Copyright © SUSE Linux Products GmbH, 2006
diff --git a/src/udev/scsi_id/scsi_id.h b/src/udev/scsi_id/scsi_id.h
index 70e804fb75..2fe64f45f2 100644
--- a/src/udev/scsi_id/scsi_id.h
+++ b/src/udev/scsi_id/scsi_id.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once
/*
diff --git a/src/udev/scsi_id/scsi_serial.c b/src/udev/scsi_id/scsi_serial.c
index 7f25824df3..4fe725477f 100644
--- a/src/udev/scsi_id/scsi_serial.c
+++ b/src/udev/scsi_id/scsi_serial.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
* Copyright © IBM Corp. 2003
*
diff --git a/src/udev/udev-builtin-blkid.c b/src/udev/udev-builtin-blkid.c
index 1df41dab36..3f64548ad0 100644
--- a/src/udev/udev-builtin-blkid.c
+++ b/src/udev/udev-builtin-blkid.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
* probe disks for filesystems and partitions
*
diff --git a/src/udev/udev-builtin-btrfs.c b/src/udev/udev-builtin-btrfs.c
index 1f0073e5cd..9079d1b8e9 100644
--- a/src/udev/udev-builtin-btrfs.c
+++ b/src/udev/udev-builtin-btrfs.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <fcntl.h>
#include <linux/btrfs.h>
diff --git a/src/udev/udev-builtin-hwdb.c b/src/udev/udev-builtin-hwdb.c
index 59ae6c7ad4..78835185b0 100644
--- a/src/udev/udev-builtin-hwdb.c
+++ b/src/udev/udev-builtin-hwdb.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fnmatch.h>
diff --git a/src/udev/udev-builtin-input_id.c b/src/udev/udev-builtin-input_id.c
index 81dd03e4c5..6a4911ca34 100644
--- a/src/udev/udev-builtin-input_id.c
+++ b/src/udev/udev-builtin-input_id.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
* expose input properties via udev
*
diff --git a/src/udev/udev-builtin-keyboard.c b/src/udev/udev-builtin-keyboard.c
index 48146105e0..cd766a8b6a 100644
--- a/src/udev/udev-builtin-keyboard.c
+++ b/src/udev/udev-builtin-keyboard.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/udev/udev-builtin-kmod.c b/src/udev/udev-builtin-kmod.c
index b3daddcdd5..3be8bd56f4 100644
--- a/src/udev/udev-builtin-kmod.c
+++ b/src/udev/udev-builtin-kmod.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
* load kernel modules
*
diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c
index d3db37a8e0..d06a8c7156 100644
--- a/src/udev/udev-builtin-net_id.c
+++ b/src/udev/udev-builtin-net_id.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/*
* Predictable network interface device names based on:
diff --git a/src/udev/udev-builtin-net_setup_link.c b/src/udev/udev-builtin-net_setup_link.c
index ee3ca9fa38..cb12b943fe 100644
--- a/src/udev/udev-builtin-net_setup_link.c
+++ b/src/udev/udev-builtin-net_setup_link.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "device-util.h"
#include "alloc-util.h"
@@ -19,7 +19,10 @@ static int builtin_net_setup_link(sd_device *dev, int argc, char **argv, bool te
return log_device_error_errno(dev, SYNTHETIC_ERRNO(EINVAL), "This program takes no arguments.");
r = link_get_driver(ctx, dev, &driver);
- if (r >= 0)
+ if (r < 0)
+ log_device_full_errno(dev, r == -EOPNOTSUPP ? LOG_DEBUG : LOG_WARNING,
+ r, "Failed to query device driver: %m");
+ else
udev_builtin_add_property(dev, test, "ID_NET_DRIVER", driver);
r = link_config_get(ctx, dev, &link);
diff --git a/src/udev/udev-builtin-path_id.c b/src/udev/udev-builtin-path_id.c
index 6c020ac0ed..0da59e2c75 100644
--- a/src/udev/udev-builtin-path_id.c
+++ b/src/udev/udev-builtin-path_id.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
* compose persistent device path
*
diff --git a/src/udev/udev-builtin-uaccess.c b/src/udev/udev-builtin-uaccess.c
index d552316eee..cfdf130f12 100644
--- a/src/udev/udev-builtin-uaccess.c
+++ b/src/udev/udev-builtin-uaccess.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
* manage device node user ACL
*/
diff --git a/src/udev/udev-builtin-usb_id.c b/src/udev/udev-builtin-usb_id.c
index 758b5ed7e2..fa554e740f 100644
--- a/src/udev/udev-builtin-usb_id.c
+++ b/src/udev/udev-builtin-usb_id.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
* USB device properties and persistent device path
*
diff --git a/src/udev/udev-builtin.c b/src/udev/udev-builtin.c
index b13c1bffe5..80d17662b2 100644
--- a/src/udev/udev-builtin.c
+++ b/src/udev/udev-builtin.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <getopt.h>
#include <stdio.h>
diff --git a/src/udev/udev-builtin.h b/src/udev/udev-builtin.h
index 99af505551..14d6406d2b 100644
--- a/src/udev/udev-builtin.h
+++ b/src/udev/udev-builtin.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/udev/udev-ctrl.c b/src/udev/udev-ctrl.c
index 8401691659..48355aa50c 100644
--- a/src/udev/udev-ctrl.c
+++ b/src/udev/udev-ctrl.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1-or-later
*
* libudev - interface to udev device information
*
diff --git a/src/udev/udev-ctrl.h b/src/udev/udev-ctrl.h
index 2c84a8b16d..680fbf7bff 100644
--- a/src/udev/udev-ctrl.h
+++ b/src/udev/udev-ctrl.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once
#include "sd-event.h"
diff --git a/src/udev/udev-event.c b/src/udev/udev-event.c
index ede8e3aef7..5159d19a38 100644
--- a/src/udev/udev-event.c
+++ b/src/udev/udev-event.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
#include <ctype.h>
#include <errno.h>
@@ -960,7 +960,7 @@ static int copy_all_tags(sd_device *d, sd_device *s) {
if (!s)
return 0;
- for (tag = sd_device_get_tag_first(s); tag; tag = sd_device_get_tag_next(s)) {
+ FOREACH_DEVICE_TAG(s, tag) {
r = device_add_tag(d, tag, false);
if (r < 0)
return r;
@@ -1041,6 +1041,13 @@ int udev_event_execute_rules(UdevEvent *event,
if (r < 0)
return log_device_debug_errno(dev, r, "Failed to update database under /run/udev/data/: %m");
+ /* Yes, we run update_devnode() twice, because in the first invocation, that is before update of udev database,
+ * it could happen that two contenders are replacing each other's symlink. Hence we run it again to make sure
+ * symlinks point to devices that claim them with the highest priority. */
+ r = update_devnode(event);
+ if (r < 0)
+ return r;
+
device_set_is_initialized(dev);
return 0;
diff --git a/src/udev/udev-event.h b/src/udev/udev-event.h
index a0193ffef3..864782822c 100644
--- a/src/udev/udev-event.h
+++ b/src/udev/udev-event.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once
/*
diff --git a/src/udev/udev-node.c b/src/udev/udev-node.c
index 2cc26d29fa..bde18f756e 100644
--- a/src/udev/udev-node.c
+++ b/src/udev/udev-node.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
#include <errno.h>
#include <fcntl.h>
@@ -20,12 +20,15 @@
#include "path-util.h"
#include "selinux-util.h"
#include "smack-util.h"
+#include "stat-util.h"
#include "stdio-util.h"
#include "string-util.h"
#include "strxcpyx.h"
#include "udev-node.h"
#include "user-util.h"
+#define LINK_UPDATE_MAX_RETRIES 128
+
static int node_symlink(sd_device *dev, const char *node, const char *slink) {
_cleanup_free_ char *slink_dirname = NULL, *target = NULL;
const char *id_filename, *slink_tmp;
@@ -99,7 +102,9 @@ static int node_symlink(sd_device *dev, const char *node, const char *slink) {
if (rename(slink_tmp, slink) < 0) {
r = log_device_error_errno(dev, errno, "Failed to rename '%s' to '%s': %m", slink_tmp, slink);
(void) unlink(slink_tmp);
- }
+ } else
+ /* Tell caller that we replaced already existing symlink. */
+ r = 1;
return r;
}
@@ -192,7 +197,7 @@ static int link_update(sd_device *dev, const char *slink, bool add) {
_cleanup_free_ char *target = NULL, *filename = NULL, *dirname = NULL;
char name_enc[PATH_MAX];
const char *id_filename;
- int r;
+ int i, r, retries;
assert(dev);
assert(slink);
@@ -212,14 +217,6 @@ static int link_update(sd_device *dev, const char *slink, bool add) {
if (!add && unlink(filename) == 0)
(void) rmdir(dirname);
- r = link_find_prioritized(dev, add, dirname, &target);
- if (r < 0) {
- log_device_debug(dev, "No reference left, removing '%s'", slink);
- if (unlink(slink) == 0)
- (void) rmdir_parents(slink, "/");
- } else
- (void) node_symlink(dev, target, slink);
-
if (add)
do {
_cleanup_close_ int fd = -1;
@@ -232,7 +229,49 @@ static int link_update(sd_device *dev, const char *slink, bool add) {
r = -errno;
} while (r == -ENOENT);
- return r;
+ /* If the database entry is not written yet we will just do one iteration and possibly wrong symlink
+ * will be fixed in the second invocation. */
+ retries = sd_device_get_is_initialized(dev) > 0 ? LINK_UPDATE_MAX_RETRIES : 1;
+
+ for (i = 0; i < retries; i++) {
+ struct stat st1 = {}, st2 = {};
+
+ r = stat(dirname, &st1);
+ if (r < 0 && errno != ENOENT)
+ return -errno;
+
+ r = link_find_prioritized(dev, add, dirname, &target);
+ if (r == -ENOENT) {
+ log_device_debug(dev, "No reference left, removing '%s'", slink);
+ if (unlink(slink) == 0)
+ (void) rmdir_parents(slink, "/");
+
+ break;
+ } else if (r < 0)
+ return log_device_error_errno(dev, r, "Failed to determine highest priority symlink: %m");
+
+ r = node_symlink(dev, target, slink);
+ if (r < 0) {
+ (void) unlink(filename);
+ break;
+ } else if (r == 1)
+ /* We have replaced already existing symlink, possibly there is some other device trying
+ * to claim the same symlink. Let's do one more iteration to give us a chance to fix
+ * the error if other device actually claims the symlink with higher priority. */
+ continue;
+
+ /* Skip the second stat() if the first failed, stat_inode_unmodified() would return false regardless. */
+ if ((st1.st_mode & S_IFMT) != 0) {
+ r = stat(dirname, &st2);
+ if (r < 0 && errno != ENOENT)
+ return -errno;
+
+ if (stat_inode_unmodified(&st1, &st2))
+ break;
+ }
+ }
+
+ return i < LINK_UPDATE_MAX_RETRIES ? 0 : -ELOOP;
}
int udev_node_update_old_links(sd_device *dev, sd_device *dev_old) {
@@ -451,8 +490,11 @@ int udev_node_add(sd_device *dev, bool apply,
(void) node_symlink(dev, devnode, filename);
/* create/update symlinks, add symlinks to name index */
- FOREACH_DEVICE_DEVLINK(dev, devlink)
- (void) link_update(dev, devlink, true);
+ FOREACH_DEVICE_DEVLINK(dev, devlink) {
+ r = link_update(dev, devlink, true);
+ if (r < 0)
+ log_device_info_errno(dev, r, "Failed to update device symlinks: %m");
+ }
return 0;
}
@@ -465,8 +507,11 @@ int udev_node_remove(sd_device *dev) {
assert(dev);
/* remove/update symlinks, remove symlinks from name index */
- FOREACH_DEVICE_DEVLINK(dev, devlink)
- (void) link_update(dev, devlink, false);
+ FOREACH_DEVICE_DEVLINK(dev, devlink) {
+ r = link_update(dev, devlink, false);
+ if (r < 0)
+ log_device_info_errno(dev, r, "Failed to update device symlinks: %m");
+ }
r = xsprintf_dev_num_path_from_sd_device(dev, &filename);
if (r < 0)
diff --git a/src/udev/udev-node.h b/src/udev/udev-node.h
index 5ae816d66f..84c7e4567f 100644
--- a/src/udev/udev-node.h
+++ b/src/udev/udev-node.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once
#include <stdbool.h>
diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c
index 7e029927fd..ef6a0c112c 100644
--- a/src/udev/udev-rules.c
+++ b/src/udev/udev-rules.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
#include <ctype.h>
@@ -990,8 +990,9 @@ static UdevRuleOperatorType parse_operator(const char *op) {
}
static int parse_line(char **line, char **ret_key, char **ret_attr, UdevRuleOperatorType *ret_op, char **ret_value) {
- char *key_begin, *key_end, *attr, *tmp, *value, *i, *j;
+ char *key_begin, *key_end, *attr, *tmp;
UdevRuleOperatorType op;
+ int r;
assert(line);
assert(*line);
@@ -1031,30 +1032,14 @@ static int parse_line(char **line, char **ret_key, char **ret_attr, UdevRuleOper
key_end[0] = '\0';
tmp += op == OP_ASSIGN ? 1 : 2;
- value = skip_leading_chars(tmp, NULL);
-
- /* value must be double quotated */
- if (value[0] != '"')
- return -EINVAL;
- value++;
-
- /* unescape double quotation '\"' -> '"' */
- for (i = j = value; ; i++, j++) {
- if (*i == '"')
- break;
- if (*i == '\0')
- return -EINVAL;
- if (i[0] == '\\' && i[1] == '"')
- i++;
- *j = *i;
- }
- j[0] = '\0';
+ tmp = skip_leading_chars(tmp, NULL);
+ r = udev_rule_parse_value(tmp, ret_value, line);
+ if (r < 0)
+ return r;
- *line = i+1;
*ret_key = key_begin;
*ret_attr = attr;
*ret_op = op;
- *ret_value = value;
return 1;
}
diff --git a/src/udev/udev-rules.h b/src/udev/udev-rules.h
index cdb98e8cec..3f40a5395e 100644
--- a/src/udev/udev-rules.h
+++ b/src/udev/udev-rules.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once
#include "hashmap.h"
diff --git a/src/udev/udev-watch.c b/src/udev/udev-watch.c
index d87a43537c..8656fb0076 100644
--- a/src/udev/udev-watch.c
+++ b/src/udev/udev-watch.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
* Copyright © 2009 Canonical Ltd.
* Copyright © 2009 Scott James Remnant <scott@netsplit.com>
diff --git a/src/udev/udev-watch.h b/src/udev/udev-watch.h
index 24a136d261..a15fa2767e 100644
--- a/src/udev/udev-watch.h
+++ b/src/udev/udev-watch.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once
#include "sd-device.h"
diff --git a/src/udev/udevadm-control.c b/src/udev/udevadm-control.c
index 6096dcbe78..ef23a6c9f6 100644
--- a/src/udev/udevadm-control.c
+++ b/src/udev/udevadm-control.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/udev/udevadm-hwdb.c b/src/udev/udevadm-hwdb.c
index 7f8960f549..3d219222b9 100644
--- a/src/udev/udevadm-hwdb.c
+++ b/src/udev/udevadm-hwdb.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <getopt.h>
diff --git a/src/udev/udevadm-info.c b/src/udev/udevadm-info.c
index 27e9a226cb..5ff6256dfa 100644
--- a/src/udev/udevadm-info.c
+++ b/src/udev/udevadm-info.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
#include <ctype.h>
#include <errno.h>
diff --git a/src/udev/udevadm-monitor.c b/src/udev/udevadm-monitor.c
index 52f27ed941..cae7f1bbb8 100644
--- a/src/udev/udevadm-monitor.c
+++ b/src/udev/udevadm-monitor.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
#include <errno.h>
#include <getopt.h>
diff --git a/src/udev/udevadm-settle.c b/src/udev/udevadm-settle.c
index 66c7103d78..2bd5853553 100644
--- a/src/udev/udevadm-settle.c
+++ b/src/udev/udevadm-settle.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
* Copyright © 2009 Canonical Ltd.
* Copyright © 2009 Scott James Remnant <scott@netsplit.com>
diff --git a/src/udev/udevadm-test-builtin.c b/src/udev/udevadm-test-builtin.c
index eb5d3e2b90..8995e5ccae 100644
--- a/src/udev/udevadm-test-builtin.c
+++ b/src/udev/udevadm-test-builtin.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
#include <errno.h>
#include <getopt.h>
diff --git a/src/udev/udevadm-test.c b/src/udev/udevadm-test.c
index 0d84b31ff0..a029622af9 100644
--- a/src/udev/udevadm-test.c
+++ b/src/udev/udevadm-test.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
* Copyright © 2003-2004 Greg Kroah-Hartman <greg@kroah.com>
*/
diff --git a/src/udev/udevadm-trigger.c b/src/udev/udevadm-trigger.c
index a588d18fd1..5c74184c33 100644
--- a/src/udev/udevadm-trigger.c
+++ b/src/udev/udevadm-trigger.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
#include <errno.h>
#include <getopt.h>
diff --git a/src/udev/udevadm-util.c b/src/udev/udevadm-util.c
index bc21115ebd..39d0c7eb3f 100644
--- a/src/udev/udevadm-util.c
+++ b/src/udev/udevadm-util.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
#include <errno.h>
diff --git a/src/udev/udevadm-util.h b/src/udev/udevadm-util.h
index 59e89022a0..91587c5492 100644
--- a/src/udev/udevadm-util.h
+++ b/src/udev/udevadm-util.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once
#include "sd-device.h"
diff --git a/src/udev/udevadm.c b/src/udev/udevadm.c
index e476f88f00..408e4a3467 100644
--- a/src/udev/udevadm.c
+++ b/src/udev/udevadm.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
#include <errno.h>
#include <getopt.h>
diff --git a/src/udev/udevadm.h b/src/udev/udevadm.h
index 86b24af086..162bbb9a43 100644
--- a/src/udev/udevadm.h
+++ b/src/udev/udevadm.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once
#include <stdio.h>
diff --git a/src/udev/udevd.c b/src/udev/udevd.c
index 18079d363d..d24b8d4398 100644
--- a/src/udev/udevd.c
+++ b/src/udev/udevd.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
* Copyright © 2004 Chris Friesen <chris_friesen@sympatico.ca>
* Copyright © 2009 Canonical Ltd.
@@ -565,7 +565,7 @@ static int worker_main(Manager *_manager, sd_device_monitor *monitor, sd_device
assert(monitor);
assert(dev);
- unsetenv("NOTIFY_SOCKET");
+ assert_se(unsetenv("NOTIFY_SOCKET") == 0);
assert_se(sigprocmask_many(SIG_BLOCK, NULL, SIGTERM, -1) >= 0);
diff --git a/src/udev/udevd.h b/src/udev/udevd.h
index 848ffc245b..583e895225 100644
--- a/src/udev/udevd.h
+++ b/src/udev/udevd.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once
int run_udevd(int argc, char *argv[]);
diff --git a/src/udev/v4l_id/v4l_id.c b/src/udev/v4l_id/v4l_id.c
index 5de26b8062..932446b766 100644
--- a/src/udev/v4l_id/v4l_id.c
+++ b/src/udev/v4l_id/v4l_id.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
* Copyright (c) 2009 Filippo Argiolas <filippo.argiolas@gmail.com>
*
diff --git a/src/update-done/update-done.c b/src/update-done/update-done.c
index 92c348d83b..212892527e 100644
--- a/src/update-done/update-done.c
+++ b/src/update-done/update-done.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/stat.h>
#include <sys/types.h>
diff --git a/src/update-utmp/update-utmp.c b/src/update-utmp/update-utmp.c
index 4ab90a63ed..59c49f2a80 100644
--- a/src/update-utmp/update-utmp.c
+++ b/src/update-utmp/update-utmp.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <sys/stat.h>
@@ -133,10 +133,8 @@ static int on_reboot(Context *c) {
t = get_startup_time(c);
q = utmp_put_reboot(t);
- if (q < 0) {
- log_error_errno(q, "Failed to write utmp record: %m");
- r = q;
- }
+ if (q < 0)
+ r = log_error_errno(q, "Failed to write utmp record: %m");
return r;
}
@@ -157,10 +155,8 @@ static int on_shutdown(Context *c) {
#endif
q = utmp_put_shutdown();
- if (q < 0) {
- log_error_errno(q, "Failed to write utmp record: %m");
- r = q;
- }
+ if (q < 0)
+ r = log_error_errno(q, "Failed to write utmp record: %m");
return r;
}
diff --git a/src/user-sessions/user-sessions.c b/src/user-sessions/user-sessions.c
index cd92b696c0..d1b8176714 100644
--- a/src/user-sessions/user-sessions.c
+++ b/src/user-sessions/user-sessions.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <fcntl.h>
diff --git a/src/userdb/meson.build b/src/userdb/meson.build
index 2f7e1accbf..3a6225e01e 100644
--- a/src/userdb/meson.build
+++ b/src/userdb/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
systemd_userwork_sources = files('''
userwork.c
diff --git a/src/userdb/userdbctl.c b/src/userdb/userdbctl.c
index 0c135fae14..a0e22dff55 100644
--- a/src/userdb/userdbctl.c
+++ b/src/userdb/userdbctl.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <getopt.h>
#include <utmp.h>
@@ -780,10 +780,8 @@ static int run(int argc, char *argv[]) {
return log_error_errno(r, "Failed to set $SYSTEMD_ONLY_USERDB: %m");
log_info("Enabled services: %s", e);
- } else {
- if (unsetenv("SYSTEMD_ONLY_USERDB") < 0)
- return log_error_errno(r, "Failed to unset $SYSTEMD_ONLY_USERDB: %m");
- }
+ } else
+ assert_se(unsetenv("SYSTEMD_ONLY_USERDB") == 0);
return dispatch_verb(argc, argv, verbs, NULL);
}
diff --git a/src/userdb/userdbd-manager.c b/src/userdb/userdbd-manager.c
index 060285783f..f8d315ce2d 100644
--- a/src/userdb/userdbd-manager.c
+++ b/src/userdb/userdbd-manager.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/wait.h>
diff --git a/src/userdb/userdbd-manager.h b/src/userdb/userdbd-manager.h
index 0bf67fe55b..b81615aca1 100644
--- a/src/userdb/userdbd-manager.h
+++ b/src/userdb/userdbd-manager.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "sd-bus.h"
diff --git a/src/userdb/userdbd.c b/src/userdb/userdbd.c
index e456104dd7..6f2c807843 100644
--- a/src/userdb/userdbd.c
+++ b/src/userdb/userdbd.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/stat.h>
#include <sys/types.h>
diff --git a/src/userdb/userwork.c b/src/userdb/userwork.c
index a68011b3fc..d525a6e05a 100644
--- a/src/userdb/userwork.c
+++ b/src/userdb/userwork.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <poll.h>
#include <sys/wait.h>
diff --git a/src/vconsole/90-vconsole.rules.in b/src/vconsole/90-vconsole.rules.in
index 70679b6dd2..a16988c38c 100644
--- a/src/vconsole/90-vconsole.rules.in
+++ b/src/vconsole/90-vconsole.rules.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/src/vconsole/meson.build b/src/vconsole/meson.build
index 03065ec26c..695ef0239d 100644
--- a/src/vconsole/meson.build
+++ b/src/vconsole/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
if conf.get('ENABLE_VCONSOLE') == 1
vconsole_rules = configure_file(
diff --git a/src/vconsole/vconsole-setup.c b/src/vconsole/vconsole-setup.c
index a2fe7e9099..b28e2853e1 100644
--- a/src/vconsole/vconsole-setup.c
+++ b/src/vconsole/vconsole-setup.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
/***
Copyright © 2016 Michal Soltys <soltys@ziu.info>
***/
diff --git a/src/veritysetup/veritysetup-generator.c b/src/veritysetup/veritysetup-generator.c
index ea1d056600..4682a7b04c 100644
--- a/src/veritysetup/veritysetup-generator.c
+++ b/src/veritysetup/veritysetup-generator.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stdbool.h>
diff --git a/src/veritysetup/veritysetup.c b/src/veritysetup/veritysetup.c
index 8294951759..558e9510ff 100644
--- a/src/veritysetup/veritysetup.c
+++ b/src/veritysetup/veritysetup.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stdio.h>
@@ -100,7 +100,7 @@ static int run(int argc, char *argv[]) {
if (r < 0)
return log_error_errno(r, "Failed to parse root hash signature '%s': %m", argv[6]);
} else {
- r = read_full_file_full(AT_FDCWD, argv[6], READ_FULL_FILE_CONNECT_SOCKET, &hash_sig, &hash_sig_size);
+ r = read_full_file_full(AT_FDCWD, argv[6], READ_FULL_FILE_CONNECT_SOCKET, NULL, &hash_sig, &hash_sig_size);
if (r < 0)
return log_error_errno(r, "Failed to read root hash signature: %m");
}
diff --git a/src/volatile-root/volatile-root.c b/src/volatile-root/volatile-root.c
index 04c371077a..ee3532cc02 100644
--- a/src/volatile-root/volatile-root.c
+++ b/src/volatile-root/volatile-root.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <sys/mount.h>
diff --git a/src/xdg-autostart-generator/xdg-autostart-condition.c b/src/xdg-autostart-generator/xdg-autostart-condition.c
index 84a3561654..c4485cf625 100644
--- a/src/xdg-autostart-generator/xdg-autostart-condition.c
+++ b/src/xdg-autostart-generator/xdg-autostart-condition.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "main-func.h"
#include "strv.h"
diff --git a/src/xdg-autostart-generator/xdg-autostart-generator.c b/src/xdg-autostart-generator/xdg-autostart-generator.c
index 6cec28e622..7b441a9a12 100644
--- a/src/xdg-autostart-generator/xdg-autostart-generator.c
+++ b/src/xdg-autostart-generator/xdg-autostart-generator.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stdio.h>
diff --git a/src/xdg-autostart-generator/xdg-autostart-service.c b/src/xdg-autostart-generator/xdg-autostart-service.c
index da5e79dcff..671d16d2d9 100644
--- a/src/xdg-autostart-generator/xdg-autostart-service.c
+++ b/src/xdg-autostart-generator/xdg-autostart-service.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <errno.h>
#include <stdio.h>
diff --git a/src/xdg-autostart-generator/xdg-autostart-service.h b/src/xdg-autostart-generator/xdg-autostart-service.h
index 8cf07ef64a..2641718899 100644
--- a/src/xdg-autostart-generator/xdg-autostart-service.h
+++ b/src/xdg-autostart-generator/xdg-autostart-service.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: LGPL-2.1+ */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "macro.h"
diff --git a/sysctl.d/meson.build b/sysctl.d/meson.build
index 3f072e3db7..e8d8fc8c53 100644
--- a/sysctl.d/meson.build
+++ b/sysctl.d/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
install_data(
'50-default.conf',
@@ -26,5 +26,7 @@ foreach file : in_files
install_dir : sysctldir)
endforeach
-meson.add_install_script('sh', '-c',
- mkdir_p.format(join_paths(sysconfdir, 'sysctl.d')))
+if install_sysconfdir
+ meson.add_install_script('sh', '-c',
+ mkdir_p.format(join_paths(sysconfdir, 'sysctl.d')))
+endif
diff --git a/sysusers.d/meson.build b/sysusers.d/meson.build
index 146f922bed..93a61f0d9a 100644
--- a/sysusers.d/meson.build
+++ b/sysusers.d/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
in_files = ['basic.conf']
diff --git a/test/create-sys-script.py b/test/create-sys-script.py
index d03ca2cbf9..11ed185de0 100755
--- a/test/create-sys-script.py
+++ b/test/create-sys-script.py
@@ -1,8 +1,8 @@
#!/usr/bin/env python3
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
OUTFILE_HEADER = """#!/usr/bin/env python3
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# create-sys-script.py
#
diff --git a/test/fuzz/fuzz-catalog/systemd.pl.catalog b/test/fuzz/fuzz-catalog/systemd.pl.catalog
index e0b582d4f2..043627c739 100644
--- a/test/fuzz/fuzz-catalog/systemd.pl.catalog
+++ b/test/fuzz/fuzz-catalog/systemd.pl.catalog
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
# Message catalog for systemd's own messages
# Polish translation
diff --git a/test/fuzz/fuzz-link-parser/99-default.link b/test/fuzz/fuzz-link-parser/99-default.link
index 92fcbe83ea..feb5b1fbb0 100644
--- a/test/fuzz/fuzz-link-parser/99-default.link
+++ b/test/fuzz/fuzz-link-parser/99-default.link
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/test/fuzz/fuzz-udev-rules/99-systemd.rules b/test/fuzz/fuzz-udev-rules/99-systemd.rules
index 6ae9898103..b6a5c5ad55 100644
--- a/test/fuzz/fuzz-udev-rules/99-systemd.rules
+++ b/test/fuzz/fuzz-udev-rules/99-systemd.rules
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/test/fuzz/fuzz-unit-file/directives.service b/test/fuzz/fuzz-unit-file/directives.service
index eebc89f5c2..464496e257 100644
--- a/test/fuzz/fuzz-unit-file/directives.service
+++ b/test/fuzz/fuzz-unit-file/directives.service
@@ -175,6 +175,7 @@ PipeSize=
Priority=
PropagatesReloadTo=
RandomizedDelaySec=
+FixedRandomDelay=
RebootArgument=
ReceiveBuffer=
RefuseManualStart=
@@ -373,6 +374,7 @@ Bond=
Bridge=
Broadcast=
Cache=
+CacheFromLocalhost=
ClientIdentifier=
ConfigureWithoutCarrier=
CopyDSCP=
diff --git a/test/fuzz/fuzz-unit-file/machine.slice b/test/fuzz/fuzz-unit-file/machine.slice
index bf8c6bfc3e..3fad2da42e 100644
--- a/test/fuzz/fuzz-unit-file/machine.slice
+++ b/test/fuzz/fuzz-unit-file/machine.slice
@@ -1,5 +1,5 @@
slice
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/test/fuzz/fuzz-unit-file/proc-sys-fs-binfmt_misc.automount b/test/fuzz/fuzz-unit-file/proc-sys-fs-binfmt_misc.automount
index 777a123ef4..371469d832 100644
--- a/test/fuzz/fuzz-unit-file/proc-sys-fs-binfmt_misc.automount
+++ b/test/fuzz/fuzz-unit-file/proc-sys-fs-binfmt_misc.automount
@@ -1,5 +1,5 @@
automount
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/test/fuzz/fuzz-unit-file/syslog.socket b/test/fuzz/fuzz-unit-file/syslog.socket
index 2eb316fcaa..969ee428fa 100644
--- a/test/fuzz/fuzz-unit-file/syslog.socket
+++ b/test/fuzz/fuzz-unit-file/syslog.socket
@@ -1,5 +1,5 @@
socket
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/test/fuzz/fuzz-unit-file/systemd-ask-password-console.path b/test/fuzz/fuzz-unit-file/systemd-ask-password-console.path
index 3e12c752de..7eca92d219 100644
--- a/test/fuzz/fuzz-unit-file/systemd-ask-password-console.path
+++ b/test/fuzz/fuzz-unit-file/systemd-ask-password-console.path
@@ -1,5 +1,5 @@
path
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/test/fuzz/fuzz-unit-file/systemd-machined.service b/test/fuzz/fuzz-unit-file/systemd-machined.service
index 79ee9861d8..45c64bae1c 100644
--- a/test/fuzz/fuzz-unit-file/systemd-machined.service
+++ b/test/fuzz/fuzz-unit-file/systemd-machined.service
@@ -1,5 +1,5 @@
service
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/test/fuzz/fuzz-unit-file/systemd-resolved.service b/test/fuzz/fuzz-unit-file/systemd-resolved.service
index 0854c5f841..42c5c9a067 100644
--- a/test/fuzz/fuzz-unit-file/systemd-resolved.service
+++ b/test/fuzz/fuzz-unit-file/systemd-resolved.service
@@ -1,5 +1,5 @@
service
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/test/fuzz/fuzz-unit-file/systemd-tmpfiles-clean.timer b/test/fuzz/fuzz-unit-file/systemd-tmpfiles-clean.timer
index 7db361cd69..5bf91b9f4c 100644
--- a/test/fuzz/fuzz-unit-file/systemd-tmpfiles-clean.timer
+++ b/test/fuzz/fuzz-unit-file/systemd-tmpfiles-clean.timer
@@ -1,5 +1,5 @@
timer
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
[Unit]
Description=Daily Cleanup of Temporary Directories
Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)
@@ -32,6 +32,7 @@ OnCalendar=Fri 2012-11-23 11:12:13
Persistent=true
AccuracySec=24h
RandomizedDelaySec=234234234
+FixedRandomDelay=true
Persistent=no
Unit=foo.service
diff --git a/test/fuzz/fuzz-unit-file/timers.target b/test/fuzz/fuzz-unit-file/timers.target
index 171226c680..29d04c0f4c 100644
--- a/test/fuzz/fuzz-unit-file/timers.target
+++ b/test/fuzz/fuzz-unit-file/timers.target
@@ -1,5 +1,5 @@
target
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/test/fuzz/fuzz-unit-file/var-lib-machines.mount b/test/fuzz/fuzz-unit-file/var-lib-machines.mount
index 9c257d1191..b2a491d447 100644
--- a/test/fuzz/fuzz-unit-file/var-lib-machines.mount
+++ b/test/fuzz/fuzz-unit-file/var-lib-machines.mount
@@ -1,5 +1,5 @@
mount
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/test/fuzz/meson.build b/test/fuzz/meson.build
index 99584c144b..7a83961d11 100644
--- a/test/fuzz/meson.build
+++ b/test/fuzz/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
# The 'optimization' option was introduced in meson 0.48.0, so let's keep
# the code compatible with older versions as well
@@ -15,7 +15,7 @@ sanitize_address_undefined = custom_target(
project_source_root,
'@OUTPUT@',
'fuzzers',
- '-Db_lundef=false -Db_sanitize=address,undefined @0@'.format(optimization),
+ '-Dfuzz-tests=true -Db_lundef=false -Db_sanitize=address,undefined @0@'.format(optimization),
' '.join(cc.cmd_array()),
cxx_cmd])
diff --git a/test/hwdb-test.sh b/test/hwdb-test.sh
index 8b909f7d80..2b54a0e70f 100755
--- a/test/hwdb-test.sh
+++ b/test/hwdb-test.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# Call built systemd-hwdb update on our hwdb files to ensure that they parse
# without error
diff --git a/test/meson.build b/test/meson.build
index 5656abdf72..cc461febf1 100644
--- a/test/meson.build
+++ b/test/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
if install_tests
testdata_dir = testsdir + '/testdata/'
diff --git a/test/mkosi.default.networkd-test b/test/mkosi.default.networkd-test
index c4fa569d41..e728e16aa5 100644
--- a/test/mkosi.default.networkd-test
+++ b/test/mkosi.default.networkd-test
@@ -8,7 +8,7 @@
[Distribution]
Distribution=fedora
-Release=32
+Release=33
[Output]
Format=raw_btrfs
@@ -57,6 +57,8 @@ BuildPackages=
ninja-build
pam-devel
pcre2-devel
+ perl(IPC::SysV)
+ perl(Time::HiRes)
pkgconfig
python3-devel
python3-lxml
diff --git a/test/networkd-test.py b/test/networkd-test.py
index 4116995f8c..8496ec881c 100755
--- a/test/networkd-test.py
+++ b/test/networkd-test.py
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# networkd integration test
# This uses temporary configuration in /run and temporary veth devices, and
diff --git a/test/rule-syntax-check.py b/test/rule-syntax-check.py
index 658b9459a9..9a9e4d1658 100755
--- a/test/rule-syntax-check.py
+++ b/test/rule-syntax-check.py
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# Simple udev rules syntax checker
#
diff --git a/test/sd-script.py b/test/sd-script.py
new file mode 100644
index 0000000000..c695c2e2cd
--- /dev/null
+++ b/test/sd-script.py
@@ -0,0 +1,342 @@
+#!/usr/bin/env python3
+# SPDX-License-Identifier: LGPL-2.1-or-later
+#
+# sd-script.py: create LOTS of sd device entries in fake sysfs
+#
+# (C) 2018 Martin Wilck, SUSE Linux GmbH
+#
+# Run after sys-script.py
+# Usage: sd-script.py <directory> <num>
+# <num> is the number of device nodes (disks + partititions)
+# to create in addition to what sys-script.py already did.
+# The script can be run several times in a row if <num> is increased,
+# adding yet more device entries.
+# Tested up to 1000 entries, more are possible.
+# Note that sys-script.py already creates 10 sd device nodes
+# (sda+sdb and partitions). This script starts with sdc.
+
+import re
+import os
+import errno
+import sys
+
+def d(path, mode):
+ os.mkdir(path, mode)
+
+def l(path, src):
+ os.symlink(src, path)
+
+def f(path, mode, contents):
+ with open(path, "wb") as f:
+ f.write(contents)
+ os.chmod(path, mode)
+
+class SD(object):
+
+ sd_major = [8] + list(range(65, 72)) + list(range(128, 136))
+ _name_re = re.compile(r'sd(?P<f>[a-z]*)$')
+
+ def _init_from_name(self, name):
+ mt = self._name_re.match(name)
+ if mt is None:
+ raise RuntimeError("invalid name %s" % name)
+ nm = mt.group("f")
+ base = 1
+ ls = nm[-1]
+ nm = nm[:-1]
+ n = base * (ord(ls)-ord('a'))
+ while len(nm) > 0:
+ ls = nm[-1]
+ nm = nm[:-1]
+ base *= 26
+ n += base * (1 + ord(ls)-ord('a'))
+ self._num = n
+
+ def _init_from_dev(self, dev):
+ maj, min = dev.split(":")
+ maj = self.sd_major.index(int(maj, 10))
+ min = int(min, 10)
+ num = int(min / 16)
+ self._num = 16*maj + num%16 + 256*int(num/16)
+
+ @staticmethod
+ def _disk_num(a, b):
+ n = ord(a)-ord('a')
+ if b != '':
+ n = 26 * (n+1) + ord(b)-ord('a')
+ return n
+
+ @staticmethod
+ def _get_major(n):
+ return SD.sd_major[(n%256)//16]
+ @staticmethod
+ def _get_minor(n):
+ return 16 * (n % 16 + 16 * n//256)
+
+ @staticmethod
+ def _get_name(n):
+ # see sd_format_disk_name() (sd.c)
+ s = chr(n % 26 + ord('a'))
+ n = n // 26 - 1
+ while n >= 0:
+ s = chr(n % 26 + ord('a')) + s
+ n = n // 26 - 1
+ return "sd" + s
+
+ @staticmethod
+ def _get_dev_t(n):
+ maj = SD._get_major(n)
+ min = SD._get_minor(n)
+ return (maj << 20) + min
+
+ def __init__(self, arg):
+ if type(arg) is type(0):
+ self._num = arg
+ elif arg.startswith("sd"):
+ self._init_from_name(arg)
+ else:
+ self._init_from_dev(arg)
+
+ def __cmp__(self, other):
+ return cmp(self._num, other._num)
+
+ def __hash__(self):
+ return hash(self._num)
+
+ def __str__(self):
+ return "%s/%s" % (
+ self.devstr(),
+ self._get_name(self._num))
+
+ def major(self):
+ return self._get_major(self._num)
+
+ def minor(self):
+ return self._get_minor(self._num)
+
+ def devstr(self):
+ return "%d:%d" % (self._get_major(self._num),
+ self._get_minor(self._num))
+
+ def namestr(self):
+ return self._get_name(self._num)
+
+ def longstr(self):
+ return "%d\t%s\t%s\t%08x" % (self._num,
+ self.devstr(),
+ self.namestr(),
+ self._get_dev_t(self._num))
+
+class MySD(SD):
+ def subst(self, first_sg):
+ disk = {
+ "lun": self._num,
+ "major": self.major(),
+ "devnode": self.namestr(),
+ "disk_minor": self.minor(),
+ "sg_minor": first_sg + self._num,
+ }
+ return disk
+
+disk_template = r"""\
+l('sys/bus/scsi/drivers/sd/7:0:0:{lun}', '../../../../devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}')
+l('sys/bus/scsi/devices/7:0:0:{lun}', '../../../devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}')
+l('sys/dev/char/254:{sg_minor}', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/bsg/7:0:0:{lun}')
+l('sys/dev/char/21:{sg_minor}', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/scsi_generic/sg{sg_minor}')
+l('sys/class/scsi_disk/7:0:0:{lun}', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/scsi_disk/7:0:0:{lun}')
+l('sys/class/scsi_generic/sg{sg_minor}', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/scsi_generic/sg{sg_minor}')
+l('sys/class/bsg/7:0:0:{lun}', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/bsg/7:0:0:{lun}')
+l('sys/class/scsi_device/7:0:0:{lun}', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/scsi_device/7:0:0:{lun}')
+d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}', 0o755)
+l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/generic', 'scsi_generic/sg{sg_minor}')
+l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/subsystem', '../../../../../../../../../bus/scsi')
+l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/driver', '../../../../../../../../../bus/scsi/drivers/sd')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/iodone_cnt', 0o644, b'0xc3\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/device_blocked', 0o644, b'0\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/max_sectors', 0o644, b'240\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/modalias', 0o644, b'scsi:t-0x00\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/scsi_level', 0o644, b'3\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/queue_depth', 0o644, b'1\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/rev', 0o644, b'1.00\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/type', 0o644, b'0\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/iocounterbits', 0o644, b'32\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/vendor', 0o644, b'Generic \n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/state', 0o644, b'running\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/queue_type', 0o644, b'none\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/iorequest_cnt', 0o644, b'0xc3\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/evt_media_change', 0o644, b'0\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/model', 0o644, b'USB Flash Drive \n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/ioerr_cnt', 0o644, b'0x2\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/uevent', 0o644, b'''DEVTYPE=scsi_device
+DRIVER=sd
+MODALIAS=scsi:t-0x00
+''')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/timeout', 0o644, b'60\n')
+d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/scsi_disk', 0o755)
+d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/scsi_disk/7:0:0:{lun}', 0o755)
+l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/scsi_disk/7:0:0:{lun}/subsystem', '../../../../../../../../../../../class/scsi_disk')
+l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/scsi_disk/7:0:0:{lun}/device', '../../../7:0:0:{lun}')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/scsi_disk/7:0:0:{lun}/app_tag_own', 0o644, b'0\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/scsi_disk/7:0:0:{lun}/FUA', 0o644, b'0\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/scsi_disk/7:0:0:{lun}/cache_type', 0o644, b'write through\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/scsi_disk/7:0:0:{lun}/protection_type', 0o644, b'0\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/scsi_disk/7:0:0:{lun}/manage_start_stop', 0o644, b'0\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/scsi_disk/7:0:0:{lun}/allow_restart', 0o644, b'1\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/scsi_disk/7:0:0:{lun}/uevent', 0o644, b'')
+d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/scsi_disk/7:0:0:{lun}/power', 0o755)
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/scsi_disk/7:0:0:{lun}/power/wakeup', 0o644, b'\n')
+d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/power', 0o755)
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/power/wakeup', 0o644, b'\n')
+d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/scsi_generic', 0o755)
+d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/scsi_generic/sg{sg_minor}', 0o755)
+l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/scsi_generic/sg{sg_minor}/subsystem', '../../../../../../../../../../../class/scsi_generic')
+l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/scsi_generic/sg{sg_minor}/device', '../../../7:0:0:{lun}')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/scsi_generic/sg{sg_minor}/dev', 0o644, b'21:{sg_minor}\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/scsi_generic/sg{sg_minor}/uevent', 0o644, b'''MAJOR=21
+MINOR={sg_minor}
+''')
+d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/scsi_generic/sg{sg_minor}/power', 0o755)
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/scsi_generic/sg{sg_minor}/power/wakeup', 0o644, b'\n')
+d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/bsg', 0o755)
+d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/bsg/7:0:0:{lun}', 0o755)
+l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/bsg/7:0:0:{lun}/subsystem', '../../../../../../../../../../../class/bsg')
+l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/bsg/7:0:0:{lun}/device', '../../../7:0:0:{lun}')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/bsg/7:0:0:{lun}/dev', 0o644, b'254:{sg_minor}\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/bsg/7:0:0:{lun}/uevent', 0o644, b'''MAJOR=254
+MINOR={sg_minor}
+''')
+d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/bsg/7:0:0:{lun}/power', 0o755)
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/bsg/7:0:0:{lun}/power/wakeup', 0o644, b'\n')
+d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block', 0o755)
+d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/scsi_device', 0o755)
+d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/scsi_device/7:0:0:{lun}', 0o755)
+l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/scsi_device/7:0:0:{lun}/subsystem', '../../../../../../../../../../../class/scsi_device')
+l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/scsi_device/7:0:0:{lun}/device', '../../../7:0:0:{lun}')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/scsi_device/7:0:0:{lun}/uevent', 0o644, b'')
+d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/scsi_device/7:0:0:{lun}/power', 0o755)
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/scsi_device/7:0:0:{lun}/power/wakeup', 0o644, b'\n')
+l('sys/dev/block/{major}:{disk_minor}', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}')
+l('sys/class/block/{devnode}', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}')
+l('sys/block/{devnode}', '../devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}')
+d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}', 0o755)
+l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}/subsystem', '../../../../../../../../../../../class/block')
+l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}/bdi', '../../../../../../../../../../virtual/bdi/{major}:{disk_minor}')
+l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}/device', '../../../7:0:0:{lun}')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}/capability', 0o644, b'13\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}/ro', 0o644, b'0\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}/make-it-fail', 0o644, b'0\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}/size', 0o644, b'257024\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}/dev', 0o644, b'{major}:{disk_minor}\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}/range', 0o644, b'16\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}/removable', 0o644, b'1\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}/stat', 0o644, b' 117 409 2103 272 0 0 0 0 0 194 272\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}/uevent', 0o644, b'''MAJOR={major}
+MINOR={disk_minor}
+DEVTYPE=disk
+DEVNAME={devnode}
+''')
+d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}/queue', 0o755)
+l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}/queue/bsg', '../../../bsg/7:0:0:{lun}')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}/queue/nr_requests', 0o644, b'128\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}/queue/nomerges', 0o644, b'0\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}/queue/scheduler', 0o644, b'noop anticipatory deadline [cfq] \n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}/queue/hw_sector_size', 0o644, b'512\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}/queue/max_hw_sectors_kb', 0o644, b'120\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}/queue/read_ahead_kb', 0o644, b'128\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}/queue/max_sectors_kb', 0o644, b'120\n')
+d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}/queue/iosched', 0o755)
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}/queue/iosched/slice_async_rq', 0o644, b'2\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}/queue/iosched/back_seek_max', 0o644, b'16384\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}/queue/iosched/slice_sync', 0o644, b'100\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}/queue/iosched/slice_async', 0o644, b'40\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}/queue/iosched/fifo_expire_sync', 0o644, b'125\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}/queue/iosched/slice_idle', 0o644, b'8\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}/queue/iosched/back_seek_penalty', 0o644, b'2\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}/queue/iosched/fifo_expire_async', 0o644, b'250\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}/queue/iosched/quantum', 0o644, b'4\n')
+d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}/power', 0o755)
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}/power/wakeup', 0o644, b'\n')
+"""
+
+part_template = r"""\
+l('sys/dev/block/{major}:{part_minor}', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}/{devnode}{part_num}')
+l('sys/class/block/{devnode}{part_num}', '../../devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}/{devnode}{part_num}')
+d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}/{devnode}{part_num}', 0o755)
+l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}/{devnode}{part_num}/subsystem', '../../../../../../../../../../../../class/block')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}/{devnode}{part_num}/start', 0o644, b'32\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}/{devnode}{part_num}/make-it-fail', 0o644, b'0\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}/{devnode}{part_num}/size', 0o644, b'256992\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}/{devnode}{part_num}/dev', 0o644, b'{major}:{part_minor}\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}/{devnode}{part_num}/stat', 0o644, b' 109 392 1903 246 0 0 0 0 0 169 246\n')
+f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:{lun}/block/{devnode}/{devnode}{part_num}/uevent', 0o644, b'''MAJOR={major}
+MINOR={part_minor}
+DEVTYPE=partition
+DEVNAME={devnode}{part_num}
+''')
+"""
+
+if len(sys.argv) != 3:
+ exit("Usage: {} <target dir> <number>".format(sys.argv[0]))
+
+if not os.path.isdir(sys.argv[1]):
+ exit("Target dir {} not found".format(sys.argv[1]))
+
+def create_part_sysfs(disk, sd, prt):
+ part = disk
+ part.update ({
+ "part_num": prt,
+ "part_minor": disk["disk_minor"] + prt,
+ })
+
+ try:
+ exec(part_template.format(**part))
+ except OSError:
+ si = sys.exc_info()[1]
+ if (si.errno == errno.EEXIST):
+ print("sysfs structures for %s%d exist" % (sd.namestr(), prt))
+ else:
+ print("error for %s%d: %s" % (sd.namestr(), prt, si[1]))
+ raise
+ else:
+ print("sysfs structures for %s%d created" % (sd.namestr(), prt))
+
+def create_disk_sysfs(dsk, first_sg, n):
+ sd = MySD(dsk)
+ disk = sd.subst(first_sg)
+
+ try:
+ exec(disk_template.format(**disk))
+ except OSError:
+ si = sys.exc_info()[1]
+ if (si.errno == errno.EEXIST):
+ print("sysfs structures for %s exist" % sd.namestr())
+ elif (si.errno == errno.ENOENT):
+ print("error for %s: %s - have you run sys-script py first?" %
+ (sd.namestr(), si.strerror))
+ return -1
+ else:
+ print("error for %s: %s" % (sd.namestr(), si.strerror))
+ raise
+ else:
+ print("sysfs structures for %s created" % sd.namestr())
+
+ n += 1
+ if n >= last:
+ return n
+
+ for prt in range(1, 16):
+ create_part_sysfs(disk, sd, prt)
+ n += 1
+ if n >= last:
+ return n
+
+ return n
+
+os.chdir(sys.argv[1])
+n = 0
+last = int(sys.argv[2])
+first_sg = 2
+for dsk in range(2, 1000):
+ n = create_disk_sysfs(dsk, first_sg, n)
+ if n >= last or n == -1:
+ break
diff --git a/test/sys-script.py b/test/sys-script.py
index a51112603e..e9ce665313 100755
--- a/test/sys-script.py
+++ b/test/sys-script.py
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# sys-script.py
#
@@ -11677,6 +11677,7 @@ f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:
f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/uevent', 0o644, b'''MAJOR=8
MINOR=16
DEVTYPE=disk
+DEVNAME=sdb
''')
d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/queue', 0o755)
l('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/queue/bsg', '../../../bsg/7:0:0:0')
@@ -11709,6 +11710,7 @@ f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:
f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/sdb1/uevent', 0o644, b'''MAJOR=8
MINOR=17
DEVTYPE=partition
+DEVNAME=sdb1
''')
d('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/sdb1/power', 0o755)
f('sys/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/host7/target7:0:0/7:0:0:0/block/sdb/sdb1/power/wakeup', 0o644, b'\n')
@@ -13150,6 +13152,7 @@ f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda10
f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda10/uevent', 0o644, b'''MAJOR=8
MINOR=10
DEVTYPE=partition
+DEVNAME=sda10
''')
d('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda10/power', 0o755)
f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda10/power/wakeup', 0o644, b'\n')
@@ -13163,6 +13166,7 @@ f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda9/
f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda9/uevent', 0o644, b'''MAJOR=8
MINOR=9
DEVTYPE=partition
+DEVNAME=sda9
''')
d('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda9/holders', 0o755)
l('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda9/holders/md0', '../../../../../../../../../virtual/block/md0')
@@ -13178,6 +13182,7 @@ f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda7/
f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda7/uevent', 0o644, b'''MAJOR=8
MINOR=7
DEVTYPE=partition
+DEVNAME=sda7
''')
d('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda7/power', 0o755)
f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda7/power/wakeup', 0o644, b'\n')
@@ -13205,6 +13210,7 @@ f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda8/
f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda8/uevent', 0o644, b'''MAJOR=8
MINOR=8
DEVTYPE=partition
+DEVNAME=sda8
''')
d('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda8/power', 0o755)
f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda8/power/wakeup', 0o644, b'\n')
@@ -13232,6 +13238,7 @@ f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda6/
f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda6/uevent', 0o644, b'''MAJOR=8
MINOR=6
DEVTYPE=partition
+DEVNAME=sda6
''')
d('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda6/power', 0o755)
f('sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda6/power/wakeup', 0o644, b'\n')
diff --git a/test/sysv-generator-test.py b/test/sysv-generator-test.py
index 3d9c1ddb87..484b610a02 100755
--- a/test/sysv-generator-test.py
+++ b/test/sysv-generator-test.py
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# systemd-sysv-generator integration test
#
diff --git a/test/test-exec-deserialization.py b/test/test-exec-deserialization.py
index 8aa16fb7f9..9491e4081e 100755
--- a/test/test-exec-deserialization.py
+++ b/test/test-exec-deserialization.py
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# Copyright © 2017 Michal Sekletar <msekleta@redhat.com>
diff --git a/test/test-functions b/test/test-functions
index a2cb28c380..d5da8e0ea5 100644
--- a/test/test-functions
+++ b/test/test-functions
@@ -1058,7 +1058,9 @@ install_pam() {
else
find /lib*/security -xtype f
fi
- find /etc/pam.d /etc/security -xtype f
+ for d in /etc/pam.d /etc/security /usr/lib/pam.d; do
+ [ -d "$d" ] && find $d -xtype f
+ done
) | while read file; do
inst $file
done
@@ -1067,9 +1069,6 @@ install_pam() {
# see http://www.linux-pam.org/Linux-PAM-html/sag-pam_unix.html
dracut_install -o unix_chkpwd
- [[ "$LOOKS_LIKE_DEBIAN" ]] &&
- cp /etc/pam.d/systemd-user $initdir/etc/pam.d/
-
# set empty root password for easy debugging
sed -i 's/^root:x:/root::/' $initdir/etc/passwd
}
diff --git a/test/test-network/systemd-networkd-tests.py b/test/test-network/systemd-networkd-tests.py
index 46c4bb7a95..1062f93e55 100755
--- a/test/test-network/systemd-networkd-tests.py
+++ b/test/test-network/systemd-networkd-tests.py
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
# systemd-networkd tests
import argparse
diff --git a/test/test-path/basic.target b/test/test-path/basic.target
index 4f44292249..d8cdd5ac14 100644
--- a/test/test-path/basic.target
+++ b/test/test-path/basic.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/test/test-path/paths.target b/test/test-path/paths.target
index 9b6ed1c13f..1bec148bee 100644
--- a/test/test-path/paths.target
+++ b/test/test-path/paths.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/test/test-path/sysinit.target b/test/test-path/sysinit.target
index b6c16a1412..eed3d16b45 100644
--- a/test/test-path/sysinit.target
+++ b/test/test-path/sysinit.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/test/udev-test.pl b/test/udev-test.pl
index 1ab6828d71..5b1e33504e 100755
--- a/test/udev-test.pl
+++ b/test/udev-test.pl
@@ -19,6 +19,19 @@
use warnings;
use strict;
+BEGIN {
+ my $EXIT_TEST_SKIP = 77;
+
+ unless (eval "use POSIX qw(WIFEXITED WEXITSTATUS);
+ use Cwd qw(getcwd abs_path);
+ use IPC::Semaphore;
+ use IPC::SysV qw(IPC_PRIVATE S_IRUSR S_IWUSR IPC_CREAT);
+ use Time::HiRes qw(usleep); 1") {
+ warn "Failed to import dependencies, skipping the test: $@";
+ exit($EXIT_TEST_SKIP);
+ }
+}
+
my $udev_bin = "./test-udev";
my $valgrind = 0;
my $gdb = 0;
@@ -45,20 +58,73 @@ for (my $i = 1; $i < 10000; ++$i) {
}
$rules_10k_tags_continuation .= "TAG+=\"test10000\"\\n";
+# Create a device list with all block devices under /sys
+# (except virtual devices and cd-roms)
+# the optional argument exp_func returns expected and non-expected
+# symlinks for the device.
+sub all_block_devs {
+ my ($exp_func) = @_;
+ my @devices;
+
+ foreach my $bd (glob "$udev_sys/dev/block/*") {
+ my $tgt = readlink($bd);
+ my ($exp, $notexp) = (undef, undef);
+
+ next if ($tgt =~ m!/virtual/! || $tgt =~ m!/sr[0-9]*$!);
+
+ $tgt =~ s!^\.\./\.\.!!;
+ ($exp, $notexp) = $exp_func->($tgt) if defined($exp_func);
+ my $device = {
+ devpath => $tgt,
+ exp_links => $exp,
+ not_exp_links => $notexp,
+ };
+ push(@devices, $device);
+ }
+ return \@devices;
+}
+
+# This generator returns a suitable exp_func for use with
+# all_block_devs().
+sub expect_for_some {
+ my ($pattern, $links, $donot) = @_;
+ my $_expect = sub {
+ my ($name) = @_;
+
+ if ($name =~ /$pattern/) {
+ return ($links, undef);
+ } elsif ($donot) {
+ return (undef, $links);
+ } else {
+ return (undef, undef);
+ }
+ };
+ return $_expect;
+}
+
my @tests = (
{
desc => "no rules",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "sda",
- exp_rem_error => "yes",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_rem_error => "yes",
+ },
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
+ exp_rem_error => "yes",
+ }],
rules => <<EOF
#
EOF
},
{
desc => "label test of scsi disc",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "boot_disk",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["boot_disk"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", ATTRS{vendor}=="ATA", SYMLINK+="boot_disk%n"
KERNEL=="ttyACM0", SYMLINK+="modem"
@@ -66,8 +132,11 @@ EOF
},
{
desc => "label test of scsi disc",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "boot_disk",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["boot_disk"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", ATTRS{vendor}=="ATA", SYMLINK+="boot_disk%n"
KERNEL=="ttyACM0", SYMLINK+="modem"
@@ -75,8 +144,11 @@ EOF
},
{
desc => "label test of scsi disc",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "boot_disk",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["boot_disk"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", ATTRS{vendor}=="ATA", SYMLINK+="boot_disk%n"
KERNEL=="ttyACM0", SYMLINK+="modem"
@@ -84,27 +156,40 @@ EOF
},
{
desc => "label test of scsi partition",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
- exp_name => "boot_disk1",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
+ exp_links => ["boot_disk1"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", ATTRS{vendor}=="ATA", SYMLINK+="boot_disk%n"
EOF
},
{
desc => "label test of pattern match",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
- exp_name => "boot_disk1",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
+ exp_links => ["boot_disk1", "boot_disk1-4", "boot_disk1-5"],
+ not_exp_links => ["boot_disk1-1", "boot_disk1-2", "boot_disk1-3"]
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", ATTRS{vendor}=="?ATA", SYMLINK+="boot_disk%n-1"
SUBSYSTEMS=="scsi", ATTRS{vendor}=="ATA?", SYMLINK+="boot_disk%n-2"
SUBSYSTEMS=="scsi", ATTRS{vendor}=="A??", SYMLINK+="boot_disk%n"
SUBSYSTEMS=="scsi", ATTRS{vendor}=="ATAS", SYMLINK+="boot_disk%n-3"
+SUBSYSTEMS=="scsi", ATTRS{vendor}=="AT?", SYMLINK+="boot_disk%n-4"
+SUBSYSTEMS=="scsi", ATTRS{vendor}=="??A", SYMLINK+="boot_disk%n-5"
EOF
},
{
desc => "label test of multiple sysfs files",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
- exp_name => "boot_disk1",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
+ exp_links => ["boot_disk1"],
+ not_exp_links => ["boot_diskX1"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", ATTRS{vendor}=="ATA", ATTRS{model}=="ST910021AS X ", SYMLINK+="boot_diskX%n"
SUBSYSTEMS=="scsi", ATTRS{vendor}=="ATA", ATTRS{model}=="ST910021AS", SYMLINK+="boot_disk%n"
@@ -112,25 +197,39 @@ EOF
},
{
desc => "label test of max sysfs files (skip invalid rule)",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
- exp_name => "boot_disk1",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
+ exp_links => ["boot_disk1", "boot_diskXY1"],
+ not_exp_links => ["boot_diskXX1"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", ATTRS{vendor}=="ATA", ATTRS{model}=="ST910021AS", ATTRS{scsi_level}=="6", ATTRS{rev}=="4.06", ATTRS{type}=="0", ATTRS{queue_depth}=="32", SYMLINK+="boot_diskXX%n"
+SUBSYSTEMS=="scsi", ATTRS{vendor}=="ATA", ATTRS{model}=="ST910021AS", ATTRS{scsi_level}=="6", ATTRS{rev}=="4.06", ATTRS{type}=="0", ATTRS{queue_depth}=="1", SYMLINK+="boot_diskXY%n"
SUBSYSTEMS=="scsi", ATTRS{vendor}=="ATA", ATTRS{model}=="ST910021AS", ATTRS{scsi_level}=="6", ATTRS{rev}=="4.06", ATTRS{type}=="0", SYMLINK+="boot_disk%n"
EOF
},
{
desc => "catch device by *",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "modem/0",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
+ exp_links => ["modem/0", "catch-all"],
+ }],
rules => <<EOF
KERNEL=="ttyACM*", SYMLINK+="modem/%n"
+KERNEL=="*", SYMLINK+="catch-all"
EOF
},
+ # 10
{
desc => "catch device by * - take 2",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "modem/0",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
+ exp_links => ["modem/0"],
+ not_exp_links => ["bad"],
+ }],
rules => <<EOF
KERNEL=="*ACM1", SYMLINK+="bad"
KERNEL=="*ACM0", SYMLINK+="modem/%n"
@@ -138,8 +237,12 @@ EOF
},
{
desc => "catch device by ?",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "modem/0",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
+ exp_links => ["modem/0"],
+ not_exp_links => ["modem/0-1", "modem/0-2"],
+ }],
rules => <<EOF
KERNEL=="ttyACM??*", SYMLINK+="modem/%n-1"
KERNEL=="ttyACM??", SYMLINK+="modem/%n-2"
@@ -148,8 +251,12 @@ EOF
},
{
desc => "catch device by character class",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "modem/0",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
+ exp_links => ["modem/0"],
+ not_exp_links => ["modem/0-1", "modem/0-2"],
+ }],
rules => <<EOF
KERNEL=="ttyACM[A-Z]*", SYMLINK+="modem/%n-1"
KERNEL=="ttyACM?[0-9]", SYMLINK+="modem/%n-2"
@@ -157,17 +264,23 @@ KERNEL=="ttyACM[0-9]*", SYMLINK+="modem/%n"
EOF
},
{
- desc => "replace kernel name",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "modem",
+ desc => "don't replace kernel name",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
+ exp_links => ["modem"],
+ }],
rules => <<EOF
KERNEL=="ttyACM0", SYMLINK+="modem"
EOF
},
{
- desc => "Handle comment lines in config file (and replace kernel name)",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "modem",
+ desc => "Handle comment lines in config file (and don't replace kernel name)",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
+ exp_links => ["modem"],
+ }],
rules => <<EOF
# this is a comment
KERNEL=="ttyACM0", SYMLINK+="modem"
@@ -175,9 +288,12 @@ KERNEL=="ttyACM0", SYMLINK+="modem"
EOF
},
{
- desc => "Handle comment lines in config file with whitespace (and replace kernel name)",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "modem",
+ desc => "Handle comment lines in config file with whitespace (and don't replace kernel name)",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
+ exp_links => ["modem"],
+ }],
rules => <<EOF
# this is a comment with whitespace before the comment
KERNEL=="ttyACM0", SYMLINK+="modem"
@@ -185,9 +301,12 @@ KERNEL=="ttyACM0", SYMLINK+="modem"
EOF
},
{
- desc => "Handle whitespace only lines (and replace kernel name)",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "whitespace",
+ desc => "Handle whitespace only lines (and don't replace kernel name)",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
+ exp_links => ["whitespace"],
+ }],
rules => <<EOF
@@ -200,9 +319,12 @@ KERNEL=="ttyACM0", SYMLINK+="whitespace"
EOF
},
{
- desc => "Handle empty lines in config file (and replace kernel name)",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "modem",
+ desc => "Handle empty lines in config file (and don't replace kernel name)",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
+ exp_links => ["modem"],
+ }],
rules => <<EOF
KERNEL=="ttyACM0", SYMLINK+="modem"
@@ -210,9 +332,12 @@ KERNEL=="ttyACM0", SYMLINK+="modem"
EOF
},
{
- desc => "Handle backslashed multi lines in config file (and replace kernel name)",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "modem",
+ desc => "Handle backslashed multi lines in config file (and don't replace kernel name)",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
+ exp_links => ["modem"],
+ }],
rules => <<EOF
KERNEL=="ttyACM0", \\
SYMLINK+="modem"
@@ -221,16 +346,23 @@ EOF
},
{
desc => "preserve backslashes, if they are not for a newline",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "aaa",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
+ exp_links => ["aaa"],
+ }],
rules => <<EOF
KERNEL=="ttyACM0", PROGRAM=="/bin/echo -e \\101", RESULT=="A", SYMLINK+="aaa"
EOF
},
+ # 20
{
- desc => "Handle stupid backslashed multi lines in config file (and replace kernel name)",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "modem",
+ desc => "Handle stupid backslashed multi lines in config file (and don't replace kernel name)",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
+ exp_links => ["modem"],
+ }],
rules => <<EOF
#
@@ -247,32 +379,44 @@ EOF
},
{
desc => "subdirectory handling",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "sub/direct/ory/modem",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
+ exp_links => ["sub/direct/ory/modem"],
+ }],
rules => <<EOF
KERNEL=="ttyACM0", SYMLINK+="sub/direct/ory/modem"
EOF
},
{
desc => "parent device name match of scsi partition",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5",
- exp_name => "first_disk5",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5",
+ exp_links => ["first_disk5"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", KERNELS=="0:0:0:0", SYMLINK+="first_disk%n"
EOF
},
{
desc => "test substitution chars",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5",
- exp_name => "Major:8:minor:5:kernelnumber:5:id:0:0:0:0",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5",
+ exp_links => ["Major:8:minor:5:kernelnumber:5:id:0:0:0:0"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", KERNELS=="0:0:0:0", SYMLINK+="Major:%M:minor:%m:kernelnumber:%n:id:%b"
EOF
},
{
desc => "import of shell-value returned from program",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "node12345678",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["node12345678"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", IMPORT{program}="/bin/echo -e \' TEST_KEY=12345678\\n TEST_key2=98765\'", SYMLINK+="node\$env{TEST_KEY}"
KERNEL=="ttyACM0", SYMLINK+="modem"
@@ -280,8 +424,12 @@ EOF
},
{
desc => "substitution of sysfs value (%s{file})",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "disk-ATA-sda",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["disk-ATA-sda"],
+ not_exp_links => ["modem"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", ATTRS{vendor}=="ATA", SYMLINK+="disk-%s{vendor}-%k"
KERNEL=="ttyACM0", SYMLINK+="modem"
@@ -289,9 +437,12 @@ EOF
},
{
desc => "program result substitution",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5",
- exp_name => "special-device-5",
- not_exp_name => "not",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5",
+ exp_links => ["special-device-5"],
+ not_exp_links => ["not"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", PROGRAM=="/bin/echo -n special-device", RESULT=="-special-*", SYMLINK+="not"
SUBSYSTEMS=="scsi", PROGRAM=="/bin/echo -n special-device", RESULT=="special-*", SYMLINK+="%c-%n"
@@ -299,128 +450,184 @@ EOF
},
{
desc => "program result substitution (newline removal)",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5",
- exp_name => "newline_removed",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5",
+ exp_links => ["newline_removed"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", PROGRAM=="/bin/echo test", RESULT=="test", SYMLINK+="newline_removed"
EOF
},
{
desc => "program result substitution",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5",
- exp_name => "test-0:0:0:0",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5",
+ exp_links => ["test-0:0:0:0"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", PROGRAM=="/bin/echo -n test-%b", RESULT=="test-0:0*", SYMLINK+="%c"
EOF
},
{
desc => "program with lots of arguments",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5",
- exp_name => "foo9",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5",
+ exp_links => ["foo9"],
+ not_exp_links => ["foo3", "foo4", "foo5", "foo6", "foo7", "foo8"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", PROGRAM=="/bin/echo -n foo3 foo4 foo5 foo6 foo7 foo8 foo9", KERNEL=="sda5", SYMLINK+="%c{7}"
EOF
},
{
desc => "program with subshell",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5",
- exp_name => "bar9",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5",
+ exp_links => ["bar9"],
+ not_exp_links => ["foo3", "foo4", "foo5", "foo6", "foo7", "foo8"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", PROGRAM=="/bin/sh -c 'echo foo3 foo4 foo5 foo6 foo7 foo8 foo9 | sed s/foo9/bar9/'", KERNEL=="sda5", SYMLINK+="%c{7}"
EOF
},
{
desc => "program arguments combined with apostrophes",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5",
- exp_name => "foo7",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5",
+ exp_links => ["foo7"],
+ not_exp_links => ["foo3", "foo4", "foo5", "foo6", "foo8"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", PROGRAM=="/bin/echo -n 'foo3 foo4' 'foo5 foo6 foo7 foo8'", KERNEL=="sda5", SYMLINK+="%c{5}"
EOF
},
{
desc => "program arguments combined with escaped double quotes, part 1",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5",
- exp_name => "foo2",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5",
+ exp_links => ["foo2"],
+ not_exp_links => ["foo1"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", PROGRAM=="/bin/sh -c 'printf %%s \\\"foo1 foo2\\\" | grep \\\"foo1 foo2\\\"'", KERNEL=="sda5", SYMLINK+="%c{2}"
EOF
},
{
desc => "program arguments combined with escaped double quotes, part 2",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5",
- exp_name => "foo2",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5",
+ exp_links => ["foo2"],
+ not_exp_links => ["foo1"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", PROGRAM=="/bin/sh -c \\\"printf %%s 'foo1 foo2' | grep 'foo1 foo2'\\\"", KERNEL=="sda5", SYMLINK+="%c{2}"
EOF
},
{
desc => "program arguments combined with escaped double quotes, part 3",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5",
- exp_name => "foo2",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5",
+ exp_links => ["foo2"],
+ not_exp_links => ["foo1", "foo3"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", PROGRAM=="/bin/sh -c 'printf \\\"%%s %%s\\\" \\\"foo1 foo2\\\" \\\"foo3\\\"| grep \\\"foo1 foo2\\\"'", KERNEL=="sda5", SYMLINK+="%c{2}"
EOF
},
{
desc => "characters before the %c{N} substitution",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5",
- exp_name => "my-foo9",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5",
+ exp_links => ["my-foo9"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", PROGRAM=="/bin/echo -n foo3 foo4 foo5 foo6 foo7 foo8 foo9", KERNEL=="sda5", SYMLINK+="my-%c{7}"
EOF
},
{
desc => "substitute the second to last argument",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5",
- exp_name => "my-foo8",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5",
+ exp_links => ["my-foo8"],
+ not_exp_links => ["my-foo3", "my-foo4", "my-foo5", "my-foo6", "my-foo7", "my-foo9"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", PROGRAM=="/bin/echo -n foo3 foo4 foo5 foo6 foo7 foo8 foo9", KERNEL=="sda5", SYMLINK+="my-%c{6}"
EOF
},
{
desc => "test substitution by variable name",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5",
- exp_name => "Major:8-minor:5-kernelnumber:5-id:0:0:0:0",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5",
+ exp_links => ["Major:8-minor:5-kernelnumber:5-id:0:0:0:0"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", KERNELS=="0:0:0:0", SYMLINK+="Major:\$major-minor:\$minor-kernelnumber:\$number-id:\$id"
EOF
},
{
desc => "test substitution by variable name 2",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5",
- exp_name => "Major:8-minor:5-kernelnumber:5-id:0:0:0:0",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5",
+ exp_links => ["Major:8-minor:5-kernelnumber:5-id:0:0:0:0"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", KERNELS=="0:0:0:0", DEVPATH=="*/sda/*", SYMLINK+="Major:\$major-minor:%m-kernelnumber:\$number-id:\$id"
EOF
},
{
desc => "test substitution by variable name 3",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5",
- exp_name => "850:0:0:05",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5",
+ exp_links => ["850:0:0:05"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", KERNELS=="0:0:0:0", DEVPATH=="*/sda/*", SYMLINK+="%M%m%b%n"
EOF
},
{
desc => "test substitution by variable name 4",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5",
- exp_name => "855",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5",
+ exp_links => ["855"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", KERNELS=="0:0:0:0", DEVPATH=="*/sda/*", SYMLINK+="\$major\$minor\$number"
EOF
},
{
desc => "test substitution by variable name 5",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5",
- exp_name => "8550:0:0:0",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5",
+ exp_links => ["8550:0:0:0"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", KERNELS=="0:0:0:0", DEVPATH=="*/sda/*", SYMLINK+="\$major%m%n\$id"
EOF
},
{
desc => "non matching SUBSYSTEMS for device with no parent",
- devpath => "/devices/virtual/tty/console",
- exp_name => "TTY",
+ devices => [
+ {
+ devpath => "/devices/virtual/tty/console",
+ exp_links => ["TTY"],
+ not_exp_links => ["foo"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", PROGRAM=="/bin/echo -n foo", RESULT=="foo", SYMLINK+="foo"
KERNEL=="console", SYMLINK+="TTY"
@@ -428,8 +635,12 @@ EOF
},
{
desc => "non matching SUBSYSTEMS",
- devpath => "/devices/virtual/tty/console",
- exp_name => "TTY",
+ devices => [
+ {
+ devpath => "/devices/virtual/tty/console",
+ exp_links => ["TTY"],
+ not_exp_links => ["foo"],
+ }],
rules => <<EOF
SUBSYSTEMS=="foo", ATTRS{dev}=="5:1", SYMLINK+="foo"
KERNEL=="console", SYMLINK+="TTY"
@@ -437,8 +648,11 @@ EOF
},
{
desc => "ATTRS match",
- devpath => "/devices/virtual/tty/console",
- exp_name => "foo",
+ devices => [
+ {
+ devpath => "/devices/virtual/tty/console",
+ exp_links => ["foo", "TTY"],
+ }],
rules => <<EOF
KERNEL=="console", SYMLINK+="TTY"
ATTRS{dev}=="5:1", SYMLINK+="foo"
@@ -446,8 +660,12 @@ EOF
},
{
desc => "ATTR (empty file)",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "empty",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["empty", "not-something"],
+ not_exp_links => ["something", "not-empty"],
+ }],
rules => <<EOF
KERNEL=="sda", ATTR{test_empty_file}=="?*", SYMLINK+="something"
KERNEL=="sda", ATTR{test_empty_file}!="", SYMLINK+="not-empty"
@@ -457,8 +675,13 @@ EOF
},
{
desc => "ATTR (non-existent file)",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "non-existent",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["non-existent", "wrong"],
+ not_exp_links => ["something", "empty", "not-empty",
+ "not-something", "something"],
+ }],
rules => <<EOF
KERNEL=="sda", ATTR{nofile}=="?*", SYMLINK+="something"
KERNEL=="sda", ATTR{nofile}!="", SYMLINK+="not-empty"
@@ -470,8 +693,11 @@ EOF
},
{
desc => "program and bus type match",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "scsi-0:0:0:0",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["scsi-0:0:0:0"],
+ }],
rules => <<EOF
SUBSYSTEMS=="usb", PROGRAM=="/bin/echo -n usb-%b", SYMLINK+="%c"
SUBSYSTEMS=="scsi", PROGRAM=="/bin/echo -n scsi-%b", SYMLINK+="%c"
@@ -480,16 +706,24 @@ EOF
},
{
desc => "sysfs parent hierarchy",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "modem",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
+ exp_links => ["modem"],
+ }],
rules => <<EOF
ATTRS{idProduct}=="007b", SYMLINK+="modem"
EOF
},
{
desc => "name test with ! in the name",
- devpath => "/devices/virtual/block/fake!blockdev0",
- exp_name => "is/a/fake/blockdev0",
+ devices => [
+ {
+ devpath => "/devices/virtual/block/fake!blockdev0",
+ devnode => "fake/blockdev0",
+ exp_links => ["is/a/fake/blockdev0"],
+ not_exp_links => ["is/not/a/fake/blockdev0", "modem"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", SYMLINK+="is/not/a/%k"
SUBSYSTEM=="block", SYMLINK+="is/a/%k"
@@ -498,17 +732,24 @@ EOF
},
{
desc => "name test with ! in the name, but no matching rule",
- devpath => "/devices/virtual/block/fake!blockdev0",
- exp_name => "fake/blockdev0",
- exp_rem_error => "yes",
+ devices => [
+ {
+ devpath => "/devices/virtual/block/fake!blockdev0",
+ devnode => "fake/blockdev0",
+ not_exp_links => ["modem"],
+ }],
rules => <<EOF
KERNEL=="ttyACM0", SYMLINK+="modem"
EOF
},
{
desc => "KERNELS rule",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "scsi-0:0:0:0",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["scsi-0:0:0:0"],
+ not_exp_links => ["no-match", "short-id", "not-scsi"],
+ }],
rules => <<EOF
SUBSYSTEMS=="usb", KERNELS=="0:0:0:0", SYMLINK+="not-scsi"
SUBSYSTEMS=="scsi", KERNELS=="0:0:0:1", SYMLINK+="no-match"
@@ -519,8 +760,12 @@ EOF
},
{
desc => "KERNELS wildcard all",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "scsi-0:0:0:0",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["scsi-0:0:0:0"],
+ not_exp_links => ["no-match", "before"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", KERNELS=="*:1", SYMLINK+="no-match"
SUBSYSTEMS=="scsi", KERNELS=="*:0:1", SYMLINK+="no-match"
@@ -531,8 +776,11 @@ EOF
},
{
desc => "KERNELS wildcard partial",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "scsi-0:0:0:0",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["scsi-0:0:0:0", "before"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", KERNELS=="0:0:0:0", SYMLINK+="before"
SUBSYSTEMS=="scsi", KERNELS=="*:0", SYMLINK+="scsi-0:0:0:0"
@@ -540,41 +788,57 @@ EOF
},
{
desc => "KERNELS wildcard partial 2",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "scsi-0:0:0:0",
- rules => <<EOF
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["scsi-0:0:0:0", "before"],
+ }],
+ rules => <<EOF
SUBSYSTEMS=="scsi", KERNELS=="0:0:0:0", SYMLINK+="before"
SUBSYSTEMS=="scsi", KERNELS=="*:0:0:0", SYMLINK+="scsi-0:0:0:0"
EOF
},
{
desc => "substitute attr with link target value (first match)",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "driver-is-sd",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["driver-is-sd"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", SYMLINK+="driver-is-\$attr{driver}"
EOF
},
{
desc => "substitute attr with link target value (currently selected device)",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "driver-is-ahci",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["driver-is-ahci"],
+ }],
rules => <<EOF
SUBSYSTEMS=="pci", SYMLINK+="driver-is-\$attr{driver}"
EOF
},
{
desc => "ignore ATTRS attribute whitespace",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "ignored",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["ignored"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", ATTRS{whitespace_test}=="WHITE SPACE", SYMLINK+="ignored"
EOF
},
{
desc => "do not ignore ATTRS attribute whitespace",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "matched-with-space",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["matched-with-space"],
+ not_exp_links => ["wrong-to-ignore"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", ATTRS{whitespace_test}=="WHITE SPACE ", SYMLINK+="wrong-to-ignore"
SUBSYSTEMS=="scsi", ATTRS{whitespace_test}=="WHITE SPACE ", SYMLINK+="matched-with-space"
@@ -582,117 +846,150 @@ EOF
},
{
desc => "permissions USER=bad GROUP=name",
- devpath => "/devices/virtual/tty/tty33",
- exp_name => "tty33",
- exp_perms => "0:0:0600",
+ devices => [
+ {
+ devpath => "/devices/virtual/tty/tty33",
+ exp_perms => "0:0:0600",
+ }],
rules => <<EOF
KERNEL=="tty33", OWNER="bad", GROUP="name"
EOF
},
{
desc => "permissions OWNER=1",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "node",
- exp_perms => "1::0600",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["node"],
+ exp_perms => "1::0600",
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", KERNEL=="sda", SYMLINK+="node", OWNER="1"
EOF
},
{
desc => "permissions GROUP=1",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "node",
- exp_perms => ":1:0660",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["node"],
+ exp_perms => ":1:0660",
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", KERNEL=="sda", SYMLINK+="node", GROUP="1"
EOF
},
{
desc => "textual user id",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "node",
- exp_perms => "daemon::0600",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["node"],
+ exp_perms => "daemon::0600",
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", KERNEL=="sda", SYMLINK+="node", OWNER="daemon"
EOF
},
{
desc => "textual group id",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "node",
- exp_perms => ":daemon:0660",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["node"],
+ exp_perms => ":daemon:0660",
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", KERNEL=="sda", SYMLINK+="node", GROUP="daemon"
EOF
},
{
desc => "textual user/group id",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "node",
- exp_perms => "root:audio:0660",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["node"],
+ exp_perms => "root:audio:0660",
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", KERNEL=="sda", SYMLINK+="node", OWNER="root", GROUP="audio"
EOF
},
{
desc => "permissions MODE=0777",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "node",
- exp_perms => "::0777",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["node"],
+ exp_perms => "::0777",
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", KERNEL=="sda", SYMLINK+="node", MODE="0777"
EOF
},
{
desc => "permissions OWNER=1 GROUP=1 MODE=0777",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "node",
- exp_perms => "1:1:0777",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["node"],
+ exp_perms => "1:1:0777",
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", KERNEL=="sda", SYMLINK+="node", OWNER="1", GROUP="1", MODE="0777"
EOF
},
{
desc => "permissions OWNER to 1",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "ttyACM0",
- exp_perms => "1::",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
+ exp_perms => "1::",
+ }],
rules => <<EOF
KERNEL=="ttyACM[0-9]*", SYMLINK+="ttyACM%n", OWNER="1"
EOF
},
{
desc => "permissions GROUP to 1",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "ttyACM0",
- exp_perms => ":1:0660",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
+ exp_perms => ":1:0660",
+ }],
rules => <<EOF
KERNEL=="ttyACM[0-9]*", SYMLINK+="ttyACM%n", GROUP="1"
EOF
},
{
desc => "permissions MODE to 0060",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "ttyACM0",
- exp_perms => "::0060",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
+ exp_perms => "::0060",
+ }],
rules => <<EOF
KERNEL=="ttyACM[0-9]*", SYMLINK+="ttyACM%n", MODE="0060"
EOF
},
{
desc => "permissions OWNER, GROUP, MODE",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "ttyACM0",
- exp_perms => "1:1:0777",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
+ exp_perms => "1:1:0777",
+ }],
rules => <<EOF
KERNEL=="ttyACM[0-9]*", SYMLINK+="ttyACM%n", OWNER="1", GROUP="1", MODE="0777"
EOF
},
{
desc => "permissions only rule",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "ttyACM0",
- exp_perms => "1:1:0777",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
+ exp_perms => "1:1:0777",
+ }],
rules => <<EOF
KERNEL=="ttyACM[0-9]*", OWNER="1", GROUP="1", MODE="0777"
KERNEL=="ttyUSX[0-9]*", OWNER="2", GROUP="2", MODE="0444"
@@ -701,9 +998,11 @@ EOF
},
{
desc => "multiple permissions only rule",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "ttyACM0",
- exp_perms => "1:1:0777",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
+ exp_perms => "1:1:0777",
+ }],
rules => <<EOF
SUBSYSTEM=="tty", OWNER="1"
SUBSYSTEM=="tty", GROUP="1"
@@ -714,9 +1013,11 @@ EOF
},
{
desc => "permissions only rule with override at SYMLINK+ rule",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "ttyACM0",
- exp_perms => "1:2:0777",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
+ exp_perms => "1:2:0777",
+ }],
rules => <<EOF
SUBSYSTEM=="tty", OWNER="1"
SUBSYSTEM=="tty", GROUP="1"
@@ -727,53 +1028,71 @@ EOF
},
{
desc => "major/minor number test",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "node",
- exp_majorminor => "8:0",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["node"],
+ exp_majorminor => "8:0",
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", KERNEL=="sda", SYMLINK+="node"
EOF
},
{
desc => "big major number test",
- devpath => "/devices/virtual/misc/misc-fake1",
- exp_name => "node",
- exp_majorminor => "4095:1",
- rules => <<EOF
+ devices => [
+ {
+ devpath => "/devices/virtual/misc/misc-fake1",
+ exp_links => ["node"],
+ exp_majorminor => "4095:1",
+ }],
+ rules => <<EOF
KERNEL=="misc-fake1", SYMLINK+="node"
EOF
},
{
desc => "big major and big minor number test",
- devpath => "/devices/virtual/misc/misc-fake89999",
- exp_name => "node",
- exp_majorminor => "4095:89999",
+ devices => [
+ {
+ devpath => "/devices/virtual/misc/misc-fake89999",
+ exp_links => ["node"],
+ exp_majorminor => "4095:89999",
+ }],
rules => <<EOF
KERNEL=="misc-fake89999", SYMLINK+="node"
EOF
},
{
desc => "multiple symlinks with format char",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "symlink2-ttyACM0",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
+ exp_links => ["symlink1-0", "symlink2-ttyACM0", "symlink3-"],
+ }],
rules => <<EOF
KERNEL=="ttyACM[0-9]*", SYMLINK="symlink1-%n symlink2-%k symlink3-%b"
EOF
},
{
desc => "multiple symlinks with a lot of s p a c e s",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "one",
- not_exp_name => " ",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
+ exp_links => ["one", "two"],
+ not_exp_links => [" "],
+ }],
rules => <<EOF
KERNEL=="ttyACM[0-9]*", SYMLINK=" one two "
EOF
},
{
desc => "symlink with spaces in substituted variable",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "name-one_two_three-end",
- not_exp_name => " ",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
+ exp_links => ["name-one_two_three-end"],
+ not_exp_links => [" "],
+ }],
rules => <<EOF
ENV{WITH_WS}="one two three"
SYMLINK="name-\$env{WITH_WS}-end"
@@ -781,9 +1100,12 @@ EOF
},
{
desc => "symlink with leading space in substituted variable",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "name-one_two_three-end",
- not_exp_name => " ",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
+ exp_links => ["name-one_two_three-end"],
+ not_exp_links => [" "],
+ }],
rules => <<EOF
ENV{WITH_WS}=" one two three"
SYMLINK="name-\$env{WITH_WS}-end"
@@ -791,9 +1113,12 @@ EOF
},
{
desc => "symlink with trailing space in substituted variable",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "name-one_two_three-end",
- not_exp_name => " ",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
+ exp_links => ["name-one_two_three-end"],
+ not_exp_links => [" "],
+ }],
rules => <<EOF
ENV{WITH_WS}="one two three "
SYMLINK="name-\$env{WITH_WS}-end"
@@ -801,9 +1126,12 @@ EOF
},
{
desc => "symlink with lots of space in substituted variable",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "name-one_two_three-end",
- not_exp_name => " ",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
+ exp_links => ["name-one_two_three-end"],
+ not_exp_links => [" "],
+ }],
rules => <<EOF
ENV{WITH_WS}=" one two three "
SYMLINK="name-\$env{WITH_WS}-end"
@@ -811,39 +1139,26 @@ EOF
},
{
desc => "symlink with multiple spaces in substituted variable",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "name-one_two_three-end",
- not_exp_name => " ",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
+ exp_links => ["name-one_two_three-end"],
+ not_exp_links => [" "],
+ }],
rules => <<EOF
ENV{WITH_WS}=" one two three "
SYMLINK="name-\$env{WITH_WS}-end"
EOF
},
{
- desc => "symlink with space and var with space, part 1",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "first",
- not_exp_name => " ",
- rules => <<EOF
-ENV{WITH_WS}=" one two three "
-SYMLINK=" first name-\$env{WITH_WS}-end another_symlink a b c "
-EOF
- },
- {
- desc => "symlink with space and var with space, part 2",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "name-one_two_three-end",
- not_exp_name => " ",
- rules => <<EOF
-ENV{WITH_WS}=" one two three "
-SYMLINK=" first name-\$env{WITH_WS}-end another_symlink a b c "
-EOF
- },
- {
- desc => "symlink with space and var with space, part 3",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "another_symlink",
- not_exp_name => " ",
+ desc => "symlink with space and var with space",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
+ exp_links => ["first", "name-one_two_three-end",
+ "another_symlink", "a", "b", "c"],
+ not_exp_links => [" "],
+ }],
rules => <<EOF
ENV{WITH_WS}=" one two three "
SYMLINK=" first name-\$env{WITH_WS}-end another_symlink a b c "
@@ -851,133 +1166,187 @@ EOF
},
{
desc => "symlink creation (same directory)",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "modem0",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
+ exp_links => ["modem0"],
+ }],
rules => <<EOF
KERNEL=="ttyACM[0-9]*", SYMLINK+="ttyACM%n", SYMLINK="modem%n"
EOF
},
{
desc => "multiple symlinks",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "second-0",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
+ exp_links => ["first-0", "second-0", "third-0"],
+ }],
rules => <<EOF
KERNEL=="ttyACM0", SYMLINK="first-%n second-%n third-%n"
EOF
},
{
desc => "symlink name '.'",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => ".",
- exp_add_error => "yes",
- exp_rem_error => "yes",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["."],
+ exp_add_error => "yes",
+ exp_rem_error => "yes",
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", KERNEL=="sda", SYMLINK+="."
EOF
},
{
desc => "symlink node to itself",
- devpath => "/devices/virtual/tty/tty0",
- exp_name => "link",
- exp_add_error => "yes",
- exp_rem_error => "yes",
- option => "clean",
+ devices => [
+ {
+ devpath => "/devices/virtual/tty/tty0",
+ exp_links => ["link"],
+ exp_add_error => "yes",
+ exp_rem_error => "yes",
+ }],
+ option => "clean",
rules => <<EOF
KERNEL=="tty0", SYMLINK+="tty0"
EOF
},
{
desc => "symlink %n substitution",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "symlink0",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
+ exp_links => ["symlink0"],
+ }],
rules => <<EOF
KERNEL=="ttyACM[0-9]*", SYMLINK+="ttyACM%n", SYMLINK+="symlink%n"
EOF
},
{
desc => "symlink %k substitution",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "symlink-ttyACM0",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
+ exp_links => ["symlink-ttyACM0"],
+ }],
rules => <<EOF
KERNEL=="ttyACM[0-9]*", SYMLINK+="ttyACM%n", SYMLINK+="symlink-%k"
EOF
},
{
desc => "symlink %M:%m substitution",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "major-166:0",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
+ exp_links => ["major-166:0"],
+ }],
rules => <<EOF
KERNEL=="ttyACM[0-9]*", SYMLINK+="ttyACM%n", SYMLINK+="major-%M:%m"
EOF
},
{
desc => "symlink %b substitution",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "symlink-0:0:0:0",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["symlink-0:0:0:0"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", KERNEL=="sda", SYMLINK+="symlink-%b"
EOF
},
{
desc => "symlink %c substitution",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "test",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
+ exp_links => ["test"],
+ }],
rules => <<EOF
KERNEL=="ttyACM[0-9]*", PROGRAM=="/bin/echo test", SYMLINK+="%c"
EOF
},
{
desc => "symlink %c{N} substitution",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "test",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
+ exp_links => ["test"],
+ not_exp_links => ["symlink", "this"],
+ }],
rules => <<EOF
KERNEL=="ttyACM[0-9]*", PROGRAM=="/bin/echo symlink test this", SYMLINK+="%c{2}"
EOF
},
{
desc => "symlink %c{N+} substitution",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "this",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
+ exp_links => ["test", "this"],
+ not_exp_links => ["symlink"],
+ }],
rules => <<EOF
KERNEL=="ttyACM[0-9]*", PROGRAM=="/bin/echo symlink test this", SYMLINK+="%c{2+}"
EOF
},
{
desc => "symlink only rule with %c{N+}",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "test",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["test", "this"],
+ not_exp_links => ["symlink"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", KERNEL=="sda", PROGRAM=="/bin/echo link test this" SYMLINK+="%c{2+}"
EOF
},
{
desc => "symlink %s{filename} substitution",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "166:0",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
+ exp_links => ["166:0"],
+ }],
rules => <<EOF
KERNEL=="ttyACM[0-9]*", SYMLINK+="%s{dev}"
EOF
},
{
desc => "program result substitution (numbered part of)",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5",
- exp_name => "link1",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5",
+ exp_links => ["link1", "link2"],
+ not_exp_links => ["node"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", PROGRAM=="/bin/echo -n node link1 link2", RESULT=="node *", SYMLINK+="%c{2} %c{3}"
EOF
},
{
desc => "program result substitution (numbered part of+)",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5",
- exp_name => "link4",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5",
+ exp_links => ["link1", "link2", "link3", "link4"],
+ not_exp_links => ["node"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", PROGRAM=="/bin/echo -n node link1 link2 link3 link4", RESULT=="node *", SYMLINK+="%c{2+}"
EOF
},
{
desc => "SUBSYSTEM match test",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "node",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["node"],
+ not_exp_links => ["should_not_match", "should_not_match2"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", KERNEL=="sda", SYMLINK+="should_not_match", SUBSYSTEM=="vc"
SUBSYSTEMS=="scsi", KERNEL=="sda", SYMLINK+="node", SUBSYSTEM=="block"
@@ -986,8 +1355,12 @@ EOF
},
{
desc => "DRIVERS match test",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "node",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["node"],
+ not_exp_links => ["should_not_match"]
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", KERNEL=="sda", SYMLINK+="should_not_match", DRIVERS=="sd-wrong"
SUBSYSTEMS=="scsi", KERNEL=="sda", SYMLINK+="node", DRIVERS=="sd"
@@ -995,32 +1368,47 @@ EOF
},
{
desc => "devnode substitution test",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "node",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["node"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", KERNEL=="sda", PROGRAM=="/usr/bin/test -b %N" SYMLINK+="node"
EOF
},
{
desc => "parent node name substitution test",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
- exp_name => "sda-part-1",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
+ exp_links => ["sda-part-1"],
+ }],
rules => <<EOF
-SUBSYSTEMS=="scsi", KERNEL=="sda1", SYMLINK+="%P-part-1"
+SUBSYSTEMS=="scsi", KERNEL=="sda1", SYMLINK+="%P-part-%n"
EOF
},
{
desc => "udev_root substitution",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
- exp_name => "start-/dev-end",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
+ exp_links => ["start-/dev-end"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", KERNEL=="sda1", SYMLINK+="start-%r-end"
EOF
},
{
+ # This is not supported any more
desc => "last_rule option",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
- exp_name => "last",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
+ exp_links => ["last"],
+ not_exp_links => ["very-last"],
+ exp_nodev_error => "yes",
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", KERNEL=="sda1", SYMLINK+="last", OPTIONS="last_rule"
SUBSYSTEMS=="scsi", KERNEL=="sda1", SYMLINK+="very-last"
@@ -1028,8 +1416,12 @@ EOF
},
{
desc => "negation KERNEL!=",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
- exp_name => "match",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
+ exp_links => ["match", "before"],
+ not_exp_links => ["matches-but-is-negated"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", KERNEL!="sda1", SYMLINK+="matches-but-is-negated"
SUBSYSTEMS=="scsi", KERNEL=="sda1", SYMLINK+="before"
@@ -1038,8 +1430,12 @@ EOF
},
{
desc => "negation SUBSYSTEM!=",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
- exp_name => "not-anything",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
+ exp_links => ["before", "not-anything"],
+ not_exp_links => ["matches-but-is-negated"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", SUBSYSTEM=="block", KERNEL!="sda1", SYMLINK+="matches-but-is-negated"
SUBSYSTEMS=="scsi", KERNEL=="sda1", SYMLINK+="before"
@@ -1048,8 +1444,11 @@ EOF
},
{
desc => "negation PROGRAM!= exit code",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
- exp_name => "nonzero-program",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
+ exp_links => ["before", "nonzero-program"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", KERNEL=="sda1", SYMLINK+="before"
KERNEL=="sda1", PROGRAM!="/bin/false", SYMLINK+="nonzero-program"
@@ -1057,8 +1456,12 @@ EOF
},
{
desc => "ENV{} test",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
- exp_name => "true",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
+ exp_links => ["true"],
+ not_exp_links => ["bad", "wrong"],
+ }],
rules => <<EOF
ENV{ENV_KEY_TEST}="test"
SUBSYSTEMS=="scsi", KERNEL=="sda1", ENV{ENV_KEY_TEST}=="go", SYMLINK+="wrong"
@@ -1068,8 +1471,12 @@ EOF
},
{
desc => "ENV{} test",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
- exp_name => "true",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
+ exp_links => ["true"],
+ not_exp_links => ["bad", "wrong", "no"],
+ }],
rules => <<EOF
ENV{ENV_KEY_TEST}="test"
SUBSYSTEMS=="scsi", KERNEL=="sda1", ENV{ENV_KEY_TEST}=="go", SYMLINK+="wrong"
@@ -1080,8 +1487,12 @@ EOF
},
{
desc => "ENV{} test (assign)",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
- exp_name => "true",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
+ exp_links => ["true", "before"],
+ not_exp_links => ["no"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", KERNEL=="sda1", ENV{ASSIGN}="true"
SUBSYSTEMS=="scsi", KERNEL=="sda1", ENV{ASSIGN}=="yes", SYMLINK+="no"
@@ -1091,20 +1502,35 @@ EOF
},
{
desc => "ENV{} test (assign 2 times)",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
- exp_name => "true",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
+ exp_links => ["true", "before"],
+ not_exp_links => ["no", "bad"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", KERNEL=="sda1", ENV{ASSIGN}="true"
SUBSYSTEMS=="scsi", KERNEL=="sda1", ENV{ASSIGN}="absolutely-\$env{ASSIGN}"
SUBSYSTEMS=="scsi", KERNEL=="sda1", SYMLINK+="before"
SUBSYSTEMS=="scsi", KERNEL=="sda1", ENV{ASSIGN}=="yes", SYMLINK+="no"
+SUBSYSTEMS=="scsi", KERNEL=="sda1", ENV{ASSIGN}=="true", SYMLINK+="bad"
SUBSYSTEMS=="scsi", KERNEL=="sda1", ENV{ASSIGN}=="absolutely-true", SYMLINK+="true"
EOF
},
{
desc => "ENV{} test (assign2)",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
- exp_name => "part",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
+ exp_links => ["part"],
+ not_exp_links => ["disk"],
+ },
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["disk"],
+ not_exp_links => ["part"],
+ },
+ ],
rules => <<EOF
SUBSYSTEM=="block", KERNEL=="*[0-9]", ENV{PARTITION}="true", ENV{MAINDEVICE}="false"
SUBSYSTEM=="block", KERNEL=="*[!0-9]", ENV{PARTITION}="false", ENV{MAINDEVICE}="true"
@@ -1115,40 +1541,56 @@ EOF
},
{
desc => "untrusted string sanitize",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
- exp_name => "sane",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
+ exp_links => ["sane"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", KERNEL=="sda1", PROGRAM=="/bin/echo -e name; (/usr/bin/badprogram)", RESULT=="name_ _/usr/bin/badprogram_", SYMLINK+="sane"
EOF
},
{
desc => "untrusted string sanitize (don't replace utf8)",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
- exp_name => "uber",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
+ exp_links => ["uber"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", KERNEL=="sda1", PROGRAM=="/bin/echo -e \\xc3\\xbcber" RESULT=="\xc3\xbcber", SYMLINK+="uber"
EOF
},
{
desc => "untrusted string sanitize (replace invalid utf8)",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
- exp_name => "replaced",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
+ exp_links => ["replaced"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", KERNEL=="sda1", PROGRAM=="/bin/echo -e \\xef\\xe8garbage", RESULT=="__garbage", SYMLINK+="replaced"
EOF
},
{
desc => "read sysfs value from parent device",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "serial-354172020305000",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
+ exp_links => ["serial-354172020305000"],
+ }],
rules => <<EOF
KERNEL=="ttyACM*", ATTRS{serial}=="?*", SYMLINK+="serial-%s{serial}"
EOF
},
{
desc => "match against empty key string",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "ok",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["ok"],
+ not_exp_links => ["not-1-ok", "not-2-ok", "not-3-ok"],
+ }],
rules => <<EOF
KERNEL=="sda", ATTRS{nothing}!="", SYMLINK+="not-1-ok"
KERNEL=="sda", ATTRS{nothing}=="", SYMLINK+="not-2-ok"
@@ -1158,8 +1600,12 @@ EOF
},
{
desc => "check ACTION value",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "ok",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["ok"],
+ not_exp_links => ["unknown-not-ok"],
+ }],
rules => <<EOF
ACTION=="unknown", KERNEL=="sda", SYMLINK+="unknown-not-ok"
ACTION=="add", KERNEL=="sda", SYMLINK+="ok"
@@ -1167,38 +1613,50 @@ EOF
},
{
desc => "final assignment",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "ok",
- exp_perms => "root:tty:0640",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["ok"],
+ exp_perms => "root:tty:0640",
+ }],
rules => <<EOF
KERNEL=="sda", GROUP:="tty"
-KERNEL=="sda", GROUP="not-ok", MODE="0640", SYMLINK+="ok"
+KERNEL=="sda", GROUP="root", MODE="0640", SYMLINK+="ok"
EOF
},
{
desc => "final assignment 2",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "ok",
- exp_perms => "root:tty:0640",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["ok"],
+ exp_perms => "root:tty:0640",
+ }],
rules => <<EOF
KERNEL=="sda", GROUP:="tty"
SUBSYSTEM=="block", MODE:="640"
-KERNEL=="sda", GROUP="not-ok", MODE="0666", SYMLINK+="ok"
+KERNEL=="sda", GROUP="root", MODE="0666", SYMLINK+="ok"
EOF
},
{
desc => "env substitution",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "node-add-me",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["node-add-me"],
+ }],
rules => <<EOF
KERNEL=="sda", MODE="0666", SYMLINK+="node-\$env{ACTION}-me"
EOF
},
{
desc => "reset list to current value",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "three",
- not_exp_name => "two",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
+ exp_links => ["three"],
+ not_exp_links => ["two", "one"],
+ }],
rules => <<EOF
KERNEL=="ttyACM[0-9]*", SYMLINK+="one"
KERNEL=="ttyACM[0-9]*", SYMLINK+="two"
@@ -1207,9 +1665,12 @@ EOF
},
{
desc => "test empty SYMLINK+ (empty override)",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "right",
- not_exp_name => "wrong",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
+ exp_links => ["right"],
+ not_exp_links => ["wrong"],
+ }],
rules => <<EOF
KERNEL=="ttyACM[0-9]*", SYMLINK+="wrong"
KERNEL=="ttyACM[0-9]*", SYMLINK=""
@@ -1218,8 +1679,11 @@ EOF
},
{
desc => "test multi matches",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "right",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
+ exp_links => ["right", "before"],
+ }],
rules => <<EOF
KERNEL=="ttyACM*", SYMLINK+="before"
KERNEL=="ttyACM*|nothing", SYMLINK+="right"
@@ -1227,8 +1691,12 @@ EOF
},
{
desc => "test multi matches 2",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "right",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
+ exp_links => ["right", "before"],
+ not_exp_links => ["nomatch"],
+ }],
rules => <<EOF
KERNEL=="dontknow*|*nothing", SYMLINK+="nomatch"
KERNEL=="ttyACM*", SYMLINK+="before"
@@ -1237,8 +1705,12 @@ EOF
},
{
desc => "test multi matches 3",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "right",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
+ exp_links => ["right"],
+ not_exp_links => ["nomatch", "wrong1", "wrong2"],
+ }],
rules => <<EOF
KERNEL=="dontknow|nothing", SYMLINK+="nomatch"
KERNEL=="dontknow|ttyACM0a|nothing|attyACM0", SYMLINK+="wrong1"
@@ -1248,8 +1720,12 @@ EOF
},
{
desc => "test multi matches 4",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
- exp_name => "right",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
+ exp_links => ["right"],
+ not_exp_links => ["nomatch", "wrong1", "wrong2", "wrong3"],
+ }],
rules => <<EOF
KERNEL=="dontknow|nothing", SYMLINK+="nomatch"
KERNEL=="dontknow|ttyACM0a|nothing|attyACM0", SYMLINK+="wrong1"
@@ -1259,10 +1735,13 @@ KERNEL=="ttyACM0a|nothing", SYMLINK+="wrong3"
EOF
},
{
- desc => "test multi matches 5",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "found",
- not_exp_name => "bad",
+ desc => "test multi matches 5",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["found"],
+ not_exp_name => "bad",
+ }],
rules => <<EOF
KERNEL=="sda", TAG="foo"
TAGS=="|foo", SYMLINK+="found"
@@ -1271,9 +1750,12 @@ EOF
},
{
desc => "test multi matches 6",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "found",
- not_exp_name => "bad",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["found"],
+ not_exp_name => "bad",
+ }],
rules => <<EOF
KERNEL=="sda", TAG=""
TAGS=="|foo", SYMLINK+="found"
@@ -1282,9 +1764,12 @@ EOF
},
{
desc => "test multi matches 7",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "found",
- not_exp_name => "bad",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["found"],
+ not_exp_name => "bad",
+ }],
rules => <<EOF
KERNEL=="sda", TAG="foo"
TAGS=="foo||bar", SYMLINK+="found"
@@ -1293,9 +1778,12 @@ EOF
},
{
desc => "test multi matches 8",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "found",
- not_exp_name => "bad",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["found"],
+ not_exp_name => "bad",
+ }],
rules => <<EOF
KERNEL=="sda", TAG=""
TAGS=="foo||bar", SYMLINK+="found"
@@ -1304,9 +1792,12 @@ EOF
},
{
desc => "test multi matches 9",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "found",
- not_exp_name => "bad",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["found"],
+ not_exp_name => "bad",
+ }],
rules => <<EOF
KERNEL=="sda", TAG="foo"
TAGS=="foo|", SYMLINK+="found"
@@ -1315,9 +1806,12 @@ EOF
},
{
desc => "test multi matches 10",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "found",
- not_exp_name => "bad",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["found"],
+ not_exp_name => "bad",
+ }],
rules => <<EOF
KERNEL=="sda", TAG=""
TAGS=="foo|", SYMLINK+="found"
@@ -1326,9 +1820,12 @@ EOF
},
{
desc => "test multi matches 11",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "found",
- not_exp_name => "bad",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["found"],
+ not_exp_name => "bad",
+ }],
rules => <<EOF
KERNEL=="sda", TAG="c"
TAGS=="foo||bar||c", SYMLINK+="found"
@@ -1336,28 +1833,31 @@ TAGS=="aaa||bbb||ccc", SYMLINK+="bad"
EOF
},
{
- desc => "IMPORT parent test sequence 1/2 (keep)",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "parent",
- option => "keep",
+ desc => "IMPORT parent test",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["parent"],
+ },
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
+ exp_links => ["parentenv-parent_right"],
+ }],
+ sleep_us => 500000, # Serialized! We need to sleep here after adding sda
rules => <<EOF
+KERNEL=="sda1", IMPORT{parent}="PARENT*", SYMLINK+="parentenv-\$env{PARENT_KEY}\$env{WRONG_PARENT_KEY}"
KERNEL=="sda", IMPORT{program}="/bin/echo -e \'PARENT_KEY=parent_right\\nWRONG_PARENT_KEY=parent_wrong'"
KERNEL=="sda", SYMLINK+="parent"
EOF
},
{
- desc => "IMPORT parent test sequence 2/2 (keep)",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
- exp_name => "parentenv-parent_right",
- option => "clean",
- rules => <<EOF
-KERNEL=="sda1", IMPORT{parent}="PARENT*", SYMLINK+="parentenv-\$env{PARENT_KEY}\$env{WRONG_PARENT_KEY}"
-EOF
- },
- {
desc => "GOTO test",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
- exp_name => "right",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
+ exp_links => ["right"],
+ not_exp_test => ["wrong", "wrong2"],
+ }],
rules => <<EOF
KERNEL=="sda1", GOTO="TEST"
KERNEL=="sda1", SYMLINK+="wrong"
@@ -1370,8 +1870,11 @@ EOF
},
{
desc => "GOTO label does not exist",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
- exp_name => "right",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
+ exp_links => ["right"],
+ }],
rules => <<EOF
KERNEL=="sda1", GOTO="does-not-exist"
KERNEL=="sda1", SYMLINK+="right",
@@ -1380,9 +1883,12 @@ EOF
},
{
desc => "SYMLINK+ compare test",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
- exp_name => "right",
- not_exp_name => "wrong",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
+ exp_links => ["right", "link"],
+ not_exp_links => ["wrong"],
+ }],
rules => <<EOF
KERNEL=="sda1", SYMLINK+="link"
KERNEL=="sda1", SYMLINK=="link*", SYMLINK+="right"
@@ -1391,8 +1897,12 @@ EOF
},
{
desc => "invalid key operation",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
- exp_name => "yes",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
+ exp_links => ["yes"],
+ not_exp_links => ["no"],
+ }],
rules => <<EOF
KERNEL="sda1", SYMLINK+="no"
KERNEL=="sda1", SYMLINK+="yes"
@@ -1400,16 +1910,23 @@ EOF
},
{
desc => "operator chars in attribute",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "yes",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["yes"],
+ }],
rules => <<EOF
KERNEL=="sda", ATTR{test:colon+plus}=="?*", SYMLINK+="yes"
EOF
},
{
desc => "overlong comment line",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
- exp_name => "yes",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
+ exp_links => ["yes"],
+ not_exp_links => ["no"],
+ }],
rules => <<EOF
# 012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
# 012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
@@ -1419,16 +1936,23 @@ EOF
},
{
desc => "magic subsys/kernel lookup",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "00:16:41:e2:8d:ff",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["00:16:41:e2:8d:ff"],
+ }],
rules => <<EOF
KERNEL=="sda", SYMLINK+="\$attr{[net/eth0]address}"
EOF
},
{
desc => "TEST absolute path",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "there",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["there"],
+ not_exp_links => ["notthere"],
+ }],
rules => <<EOF
TEST=="/etc/machine-id", SYMLINK+="there"
TEST!="/etc/machine-id", SYMLINK+="notthere"
@@ -1436,44 +1960,56 @@ EOF
},
{
desc => "TEST subsys/kernel lookup",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "yes",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["yes"],
+ }],
rules => <<EOF
KERNEL=="sda", TEST=="[net/eth0]", SYMLINK+="yes"
EOF
},
{
desc => "TEST relative path",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "relative",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["relative"],
+ }],
rules => <<EOF
KERNEL=="sda", TEST=="size", SYMLINK+="relative"
EOF
},
{
desc => "TEST wildcard substitution (find queue/nr_requests)",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "found-subdir",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["found-subdir"],
+ }],
rules => <<EOF
KERNEL=="sda", TEST=="*/nr_requests", SYMLINK+="found-subdir"
EOF
},
{
desc => "TEST MODE=0000",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "sda",
- exp_perms => "0:0:0000",
- exp_rem_error => "yes",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_perms => "0:0:0000",
+ exp_rem_error => "yes",
+ }],
rules => <<EOF
KERNEL=="sda", MODE="0000"
EOF
},
{
desc => "TEST PROGRAM feeds OWNER, GROUP, MODE",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "sda",
- exp_perms => "1:1:0400",
- exp_rem_error => "yes",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_perms => "1:1:0400",
+ }],
rules => <<EOF
KERNEL=="sda", MODE="666"
KERNEL=="sda", PROGRAM=="/bin/echo 1 1 0400", OWNER="%c{1}", GROUP="%c{2}", MODE="%c{3}"
@@ -1481,10 +2017,12 @@ EOF
},
{
desc => "TEST PROGRAM feeds MODE with overflow",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "sda",
- exp_perms => "0:0:0440",
- exp_rem_error => "yes",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_perms => "0:0:0440",
+ exp_rem_error => "yes",
+ }],
rules => <<EOF
KERNEL=="sda", MODE="440"
KERNEL=="sda", PROGRAM=="/bin/echo 0 0 0400letsdoabuffferoverflow0123456789012345789012345678901234567890", OWNER="%c{1}", GROUP="%c{2}", MODE="%c{3}"
@@ -1492,19 +2030,23 @@ EOF
},
{
desc => "magic [subsys/sysname] attribute substitution",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "sda-8741C4G-end",
- exp_perms => "0:0:0600",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["sda-8741C4G-end"],
+ exp_perms => "0:0:0600",
+ }],
rules => <<EOF
-KERNEL=="sda", PROGRAM="/bin/true create-envp"
-KERNEL=="sda", ENV{TESTENV}="change-envp"
KERNEL=="sda", SYMLINK+="%k-%s{[dmi/id]product_name}-end"
EOF
},
{
desc => "builtin path_id",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0"],
+ }],
rules => <<EOF
KERNEL=="sda", IMPORT{builtin}="path_id"
KERNEL=="sda", ENV{ID_PATH}=="?*", SYMLINK+="disk/by-path/\$env{ID_PATH}"
@@ -1512,9 +2054,12 @@ EOF
},
{
desc => "add and match tag",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "found",
- not_exp_name => "bad",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["found"],
+ not_exp_links => ["bad"],
+ }],
rules => <<EOF
SUBSYSTEMS=="scsi", ATTRS{vendor}=="ATA", TAG+="green"
TAGS=="green", SYMLINK+="found"
@@ -1523,17 +2068,23 @@ EOF
},
{
desc => "don't crash with lots of tags",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "found",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["found"],
+ }],
rules => $rules_10k_tags . <<EOF
TAGS=="test1", TAGS=="test500", TAGS=="test1234", TAGS=="test9999", TAGS=="test10000", SYMLINK+="found"
EOF
},
{
desc => "continuations",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "found",
- not_exp_name => "bad",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["found"],
+ not_exp_name => "bad",
+ }],
rules => $rules_10k_tags_continuation . <<EOF
TAGS=="test1", TAGS=="test500", TAGS=="test1234", TAGS=="test9999", TAGS=="test10000", SYMLINK+="bad"
KERNEL=="sda",\\
@@ -1551,9 +2102,13 @@ EOF
},
{
desc => "continuations with empty line",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "found",
- not_exp_name => "bad",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["found"],
+ not_exp_name => "bad",
+
+ }],
rules => <<EOF
# empty line finishes continuation
KERNEL=="sda", TAG+="foo" \\
@@ -1563,13 +2118,16 @@ KERNEL=="sda", TAG+="aaa" \\
KERNEL=="sdb", TAG+="bbb"
TAGS=="foo", SYMLINK+="found"
TAGS=="aaa", SYMLINK+="bad"
-EOF
+ EOF
},
{
desc => "continuations with white only line",
- devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
- exp_name => "found",
- not_exp_name => "bad",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_links => ["found"],
+ not_exp_name => "bad",
+ }],
rules => <<EOF
# space only line finishes continuation
KERNEL=="sda", TAG+="foo" \\
@@ -1581,16 +2139,199 @@ TAGS=="foo", SYMLINK+="found"
TAGS=="aaa", SYMLINK+="bad"
EOF
},
+ {
+ desc => "multiple devices",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
+ exp_links => ["part-1"],
+ },
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5",
+ exp_links => ["part-5"],
+ },
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda6",
+ exp_links => ["part-6"],
+ },
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda7",
+ exp_links => ["part-7"],
+ },
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda8",
+ exp_links => ["part-8"],
+ },
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda9",
+ exp_links => ["part-9"],
+ },
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda10",
+ exp_links => ["part-10"],
+ },
+ ],
+ rules => <<EOF
+SUBSYSTEM=="block", SUBSYSTEMS=="scsi", KERNEL=="sda?*", ENV{DEVTYPE}=="partition", SYMLINK+="part-%n"
+EOF
+ },
+ {
+ desc => "multiple devices, same link name, positive prio",
+ repeat => 100,
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
+ exp_links => ["part-1"],
+ not_exp_links => ["partition"],
+ },
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5",
+ exp_links => ["part-5"],
+ not_exp_links => ["partition"],
+ },
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda6",
+ not_exp_links => ["partition"],
+ exp_links => ["part-6"],
+ },
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda7",
+ exp_links => ["part-7", "partition"],
+ },
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda8",
+ not_exp_links => ["partition"],
+ exp_links => ["part-8"],
+ },
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda9",
+ not_exp_links => ["partition"],
+ exp_links => ["part-9"],
+ },
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda10",
+ not_exp_links => ["partition"],
+ exp_links => ["part-10"],
+ },
+ ],
+ rules => <<EOF
+SUBSYSTEM=="block", SUBSYSTEMS=="scsi", KERNEL=="sda?*", ENV{DEVTYPE}=="partition", SYMLINK+="part-%n"
+SUBSYSTEM=="block", SUBSYSTEMS=="scsi", KERNEL=="sda?*", ENV{DEVTYPE}=="partition", SYMLINK+="partition"
+KERNEL=="*7", OPTIONS+="link_priority=10"
+EOF
+ },
+ {
+ desc => "multiple devices, same link name, negative prio",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
+ exp_links => ["part-1"],
+ not_exp_links => ["partition"],
+ },
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5",
+ exp_links => ["part-5"],
+ not_exp_links => ["partition"],
+ },
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda6",
+ not_exp_links => ["partition"],
+ exp_links => ["part-6"],
+ },
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda7",
+ exp_links => ["part-7", "partition"],
+ },
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda8",
+ not_exp_links => ["partition"],
+ exp_links => ["part-8"],
+ },
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda9",
+ not_exp_links => ["partition"],
+ exp_links => ["part-9"],
+ },
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda10",
+ not_exp_links => ["partition"],
+ exp_links => ["part-10"],
+ },
+ ],
+ rules => <<EOF
+SUBSYSTEM=="block", SUBSYSTEMS=="scsi", KERNEL=="sda?*", ENV{DEVTYPE}=="partition", SYMLINK+="part-%n"
+SUBSYSTEM=="block", SUBSYSTEMS=="scsi", KERNEL=="sda?*", ENV{DEVTYPE}=="partition", SYMLINK+="partition"
+KERNEL!="*7", OPTIONS+="link_priority=-10"
+EOF
+ },
+ {
+ desc => "multiple devices, same link name, positive prio, sleep",
+ devices => [
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
+ exp_links => ["part-1"],
+ not_exp_links => ["partition"],
+ },
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda5",
+ exp_links => ["part-5"],
+ not_exp_links => ["partition"],
+ },
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda6",
+ not_exp_links => ["partition"],
+ exp_links => ["part-6"],
+ },
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda7",
+ exp_links => ["part-7", "partition"],
+ },
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda8",
+ not_exp_links => ["partition"],
+ exp_links => ["part-8"],
+ },
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda9",
+ not_exp_links => ["partition"],
+ exp_links => ["part-9"],
+ },
+ {
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda10",
+ not_exp_links => ["partition"],
+ exp_links => ["part-10"],
+ },
+ ],
+ sleep_us => 10000,
+ rules => <<EOF
+SUBSYSTEM=="block", SUBSYSTEMS=="scsi", KERNEL=="sda?*", ENV{DEVTYPE}=="partition", SYMLINK+="part-%n"
+SUBSYSTEM=="block", SUBSYSTEMS=="scsi", KERNEL=="sda?*", ENV{DEVTYPE}=="partition", SYMLINK+="partition"
+KERNEL=="*7", OPTIONS+="link_priority=10"
+EOF
+ },
+ {
+ desc => 'all_block_devs',
+ generator => expect_for_some("\\/sda6\$", ["blockdev"]),
+ repeat => 10,
+ rules => <<EOF
+SUBSYSTEM=="block", SUBSYSTEMS=="scsi", KERNEL=="sd*", SYMLINK+="blockdev"
+KERNEL=="sda6", OPTIONS+="link_priority=10"
+EOF
+ }
);
-sub udev {
- my ($action, $devpath, $rules) = @_;
+sub create_rules {
+ my ($rules) = @_;
# create temporary rules
system("mkdir", "-p", "$udev_rules_dir");
open CONF, ">$udev_rules" || die "unable to create rules file: $udev_rules";
print CONF $$rules;
close CONF;
+}
+
+sub udev {
+ my ($action, $devpath) = @_;
if ($valgrind > 0) {
return system("$udev_bin_valgrind $action $devpath");
@@ -1604,6 +2345,8 @@ sub udev {
}
my $error = 0;
+my $good = 0;
+my $exp_good = 0;
sub permissions_test {
my($rules, $uid, $gid, $mode) = @_;
@@ -1634,6 +2377,7 @@ sub permissions_test {
}
if ($wrong == 0) {
print "permissions: ok\n";
+ $good++;
} else {
printf " expected permissions are: %s:%s:%#o\n", $1, $2, oct($3);
printf " created permissions are : %i:%i:%#o\n", $uid, $gid, $mode & 07777;
@@ -1659,6 +2403,7 @@ sub major_minor_test {
}
if ($wrong == 0) {
print "major:minor: ok\n";
+ $good++;
} else {
printf " expected major:minor is: %i:%i\n", $1, $2;
printf " created major:minor is : %i:%i\n", $major, $minor;
@@ -1669,7 +2414,7 @@ sub major_minor_test {
}
sub udev_setup {
- system("umount", $udev_tmpfs);
+ system("umount \"$udev_tmpfs\" 2>/dev/null");
rmdir($udev_tmpfs);
mkdir($udev_tmpfs) || die "unable to create udev_tmpfs: $udev_tmpfs\n";
@@ -1709,44 +2454,77 @@ sub udev_setup {
return 1;
}
-sub run_test {
- my ($rules, $number) = @_;
- my $rc;
+sub get_devnode {
+ my ($device) = @_;
+ my $devnode;
- print "TEST $number: $rules->{desc}\n";
- print "device \'$rules->{devpath}\' expecting node/link \'$rules->{exp_name}\'\n";
+ if (defined($device->{devnode})) {
+ $devnode = "$udev_dev/$device->{devnode}";
+ } else {
+ $devnode = "$device->{devpath}";
+ $devnode =~ s!.*/!$udev_dev/!;
+ }
+ return $devnode;
+}
- $rc = udev("add", $rules->{devpath}, \$rules->{rules});
- if ($rc != 0) {
- print "$udev_bin add failed with code $rc\n";
+sub check_devnode {
+ my ($device) = @_;
+ my $devnode = get_devnode($device);
+
+ my @st = lstat("$devnode");
+ if (! (-b _ || -c _)) {
+ print "add $devnode: error\n";
+ system("tree", "$udev_dev");
$error++;
+ return undef;
}
- if (defined($rules->{not_exp_name})) {
- if ((-e "$udev_dev/$rules->{not_exp_name}") ||
- (-l "$udev_dev/$rules->{not_exp_name}")) {
- print "nonexistent: error \'$rules->{not_exp_name}\' not expected to be there\n";
- $error++;
- sleep(1);
- }
+
+ my ($dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size,
+ $atime, $mtime, $ctime, $blksize, $blocks) = @st;
+
+ if (defined($device->{exp_perms})) {
+ permissions_test($device, $uid, $gid, $mode);
}
+ if (defined($device->{exp_majorminor})) {
+ major_minor_test($device, $rdev);
+ }
+ print "add $devnode: ok\n";
+ $good++;
+ return $devnode;
+}
- if ((-e "$udev_dev/$rules->{exp_name}") ||
- (-l "$udev_dev/$rules->{exp_name}")) {
+sub get_link_target {
+ my ($link) = @_;
- my ($dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size,
- $atime, $mtime, $ctime, $blksize, $blocks) = stat("$udev_dev/$rules->{exp_name}");
+ my $cwd = getcwd();
+ my $dir = "$udev_dev/$link";
+ my $tgt = readlink("$udev_dev/$link");
+ $dir =~ s!/[^/]*$!!;
+ $tgt = abs_path("$dir/$tgt");
+ $tgt =~ s!^$cwd/!!;
+ return $tgt;
+}
- if (defined($rules->{exp_perms})) {
- permissions_test($rules, $uid, $gid, $mode);
- }
- if (defined($rules->{exp_majorminor})) {
- major_minor_test($rules, $rdev);
+sub check_link_add {
+ my ($link, $devnode, $err_expected) = @_;
+
+ my @st = lstat("$udev_dev/$link");
+ if (-l _) {
+ my $tgt = get_link_target($link);
+
+ if ($tgt ne $devnode) {
+ print "symlink $link: error, found -> $tgt\n";
+ $error++;
+ system("tree", "$udev_dev");
+ } else {
+ print "symlink $link: ok\n";
+ $good++;
}
- print "add: ok\n";
} else {
- print "add: error";
- if ($rules->{exp_add_error}) {
+ print "symlink $link: error";
+ if ($err_expected) {
print " as expected\n";
+ $good++;
} else {
print "\n";
system("tree", "$udev_dev");
@@ -1755,22 +2533,80 @@ sub run_test {
sleep(1);
}
}
+}
- if (defined($rules->{option}) && $rules->{option} eq "keep") {
- print "\n\n";
- return;
+sub check_link_nonexistent {
+ my ($link, $devnode, $err_expected) = @_;
+
+ if ((-e "$udev_dev/$link") || (-l "$udev_dev/$link")) {
+ my $tgt = get_link_target($link);
+
+ if ($tgt ne $devnode) {
+ print "nonexistent: '$link' points to other device (ok)\n";
+ $good++;
+ } else {
+ print "nonexistent: error \'$link\' should not be there";
+ if ($err_expected) {
+ print " (as expected)\n";
+ $good++;
+ } else {
+ print "\n";
+ system("tree", "$udev_dev");
+ print "\n";
+ $error++;
+ sleep(1);
+ }
+ }
+ } else {
+ print "nonexistent $link: ok\n";
+ $good++;
+ }
+}
+
+sub check_add {
+ my ($device) = @_;
+ my $devnode = check_devnode($device);
+
+ if (defined($device->{exp_links})) {
+ foreach my $link (@{$device->{exp_links}}) {
+ check_link_add($link, $devnode,
+ $device->{exp_add_error});
+ }
+ }
+ if (defined $device->{not_exp_links}) {
+ foreach my $link (@{$device->{not_exp_links}}) {
+ check_link_nonexistent($link, $devnode,
+ $device->{exp_nodev_error});
+ }
}
+}
- $rc = udev("remove", $rules->{devpath}, \$rules->{rules});
- if ($rc != 0) {
- print "$udev_bin remove failed with code $rc\n";
+sub check_remove_devnode {
+ my ($device) = @_;
+ my $devnode = get_devnode($device);
+
+ if (-e "$devnode") {
+ print "remove $devnode: error";
+ print "\n";
+ system("tree", "$udev_dev");
+ print "\n";
$error++;
+ sleep(1);
+ } else {
+ print "remove $devnode: ok\n";
+ $good++;
}
- if ((-e "$udev_dev/$rules->{exp_name}") ||
- (-l "$udev_dev/$rules->{exp_name}")) {
- print "remove: error";
- if ($rules->{exp_rem_error}) {
+}
+
+sub check_link_remove {
+ my ($link, $err_expected) = @_;
+
+ if ((-e "$udev_dev/$link") ||
+ (-l "$udev_dev/$link")) {
+ print "remove $link: error";
+ if ($err_expected) {
print " as expected\n";
+ $good++;
} else {
print "\n";
system("tree", "$udev_dev");
@@ -1779,10 +2615,132 @@ sub run_test {
sleep(1);
}
} else {
- print "remove: ok\n";
+ print "remove $link: ok\n";
+ $good++;
+ }
+}
+
+sub check_remove {
+ my ($device) = @_;
+
+ check_remove_devnode($device);
+
+ return if (!defined($device->{exp_links}));
+
+ foreach my $link (@{$device->{exp_links}}) {
+ check_link_remove($link, $device->{exp_rem_error});
+ }
+}
+
+sub run_udev {
+ my ($action, $dev, $sleep_us, $sema) = @_;
+
+ # Notify main process that this worker has started
+ $sema->op(0, 1, 0);
+
+ # Wait for start
+ $sema->op(0, 0, 0);
+ usleep($sleep_us) if defined ($sleep_us);
+ my $rc = udev($action, $dev->{devpath});
+ exit $rc;
+}
+
+sub fork_and_run_udev {
+ my ($action, $rules, $sema) = @_;
+ my @devices = @{$rules->{devices}};
+ my $dev;
+ my $k = 0;
+
+ $sema->setval(0, 1);
+ foreach $dev (@devices) {
+ my $pid = fork();
+
+ if (!$pid) {
+ run_udev($action, $dev,
+ defined($rules->{sleep_us}) ? $k * $rules->{sleep_us} : undef,
+ $sema);
+ } else {
+ $dev->{pid} = $pid;
+ }
+ $k++;
+ }
+
+ # This operation waits for all workers to become ready, and
+ # starts them off when that's the case.
+ $sema->op(0, -($#devices + 2), 0);
+
+ foreach $dev (@devices) {
+ my $rc;
+ my $pid;
+
+ $pid = waitpid($dev->{pid}, 0);
+ if ($pid == -1) {
+ print "error waiting for pid dev->{pid}\n";
+ }
+ if (WIFEXITED($?)) {
+ $rc = WEXITSTATUS($?);
+
+ if ($rc) {
+ print "$udev_bin $action for $dev->{devpath} failed with code $rc\n";
+ $error += 1;
+ } else {
+ $good++;
+ }
+ }
+ }
+}
+
+sub run_test {
+ my ($rules, $number, $sema) = @_;
+ my $rc;
+ my @devices;
+ my $ntests;
+ my $cur_good = $good;
+ my $cur_error = $error;
+
+ if (!defined $rules->{devices}) {
+ $rules->{devices} = all_block_devs($rules->{generator});
+ }
+ @devices = @{$rules->{devices}};
+ # For each device: exit status and devnode test for add & remove
+ $ntests += 4 * ($#devices + 1);
+
+ foreach my $dev (@devices) {
+ $ntests += 2 * ($#{$dev->{exp_links}} + 1)
+ + ($#{$dev->{not_exp_links}} + 1)
+ + (defined $dev->{exp_perms} ? 1 : 0)
+ + (defined $dev->{exp_majorminor} ? 1 : 0);
+ }
+ if (defined $rules->{repeat}) {
+ $ntests *= $rules->{repeat};
+ }
+ $exp_good += $ntests;
+ print "TEST $number: $rules->{desc}\n";
+ create_rules(\$rules->{rules});
+
+ REPEAT:
+ fork_and_run_udev("add", $rules, $sema);
+
+ foreach my $dev (@devices) {
+ check_add($dev);
+ }
+
+ if (defined($rules->{option}) && $rules->{option} eq "keep") {
+ print "\n\n";
+ return;
}
- print "\n";
+ fork_and_run_udev("remove", $rules, $sema);
+
+ foreach my $dev (@devices) {
+ check_remove($dev);
+ }
+
+ if (defined($rules->{repeat}) && --($rules->{repeat}) > 0) {
+ goto REPEAT;
+ }
+ printf "TEST $number: errors: %d good: %d/%d\n\n", $error-$cur_error,
+ $good-$cur_good, $ntests;
if (defined($rules->{option}) && $rules->{option} eq "clean") {
udev_setup();
@@ -1839,12 +2797,13 @@ foreach my $arg (@ARGV) {
push(@list, $arg);
}
}
+my $sema = IPC::Semaphore->new(IPC_PRIVATE, 1, S_IRUSR | S_IWUSR | IPC_CREAT);
if ($list[0]) {
foreach my $arg (@list) {
if (defined($tests[$arg-1]->{desc})) {
print "udev-test will run test number $arg:\n\n";
- run_test($tests[$arg-1], $arg);
+ run_test($tests[$arg-1], $arg, $sema);
} else {
print "test does not exist.\n";
}
@@ -1854,12 +2813,13 @@ if ($list[0]) {
print "\nudev-test will run ".($#tests + 1)." tests:\n\n";
foreach my $rules (@tests) {
- run_test($rules, $test_num);
+ run_test($rules, $test_num, $sema);
$test_num++;
}
}
-print "$error errors occurred\n\n";
+$sema->remove;
+print "$error errors occurred. $good/$exp_good good results.\n\n";
cleanup();
diff --git a/test/units/basic.target b/test/units/basic.target
index 4f44292249..d8cdd5ac14 100644
--- a/test/units/basic.target
+++ b/test/units/basic.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/test/units/shutdown.target b/test/units/shutdown.target
index d48e6d6494..582ae6ba27 100644
--- a/test/units/shutdown.target
+++ b/test/units/shutdown.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/test/units/sockets.target b/test/units/sockets.target
index 9af67fdb1f..c6e20d7760 100644
--- a/test/units/sockets.target
+++ b/test/units/sockets.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/test/units/sysinit.target b/test/units/sysinit.target
index b6c16a1412..eed3d16b45 100644
--- a/test/units/sysinit.target
+++ b/test/units/sysinit.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/test/units/timers.target b/test/units/timers.target
index b1aa8c797c..99f82e3b80 100644
--- a/test/units/timers.target
+++ b/test/units/timers.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/tmpfiles.d/meson.build b/tmpfiles.d/meson.build
index 0a9582d8b9..7322460dba 100644
--- a/tmpfiles.d/meson.build
+++ b/tmpfiles.d/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
enable_tmpfiles = conf.get('ENABLE_TMPFILES') == 1
@@ -55,7 +55,7 @@ foreach file : m4_files
endif
endforeach
-if enable_tmpfiles
+if enable_tmpfiles and install_sysconfdir
meson.add_install_script(
'sh', '-c',
mkdir_p.format(join_paths(sysconfdir, 'tmpfiles.d')))
diff --git a/tmpfiles.d/portables.conf b/tmpfiles.d/portables.conf
index b8ddf7f4b7..3fd0c7d302 100644
--- a/tmpfiles.d/portables.conf
+++ b/tmpfiles.d/portables.conf
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
# See tmpfiles.d(5) for details
Q /var/lib/portables 0700
diff --git a/tmpfiles.d/systemd-pstore.conf b/tmpfiles.d/systemd-pstore.conf
index e8e9ed48ae..e6540b5de4 100644
--- a/tmpfiles.d/systemd-pstore.conf
+++ b/tmpfiles.d/systemd-pstore.conf
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# The systemd-pstore.service(1) archives the contents of /sys/fs/pstore
# upon boot so that there is room for a subsequent dump. This service
diff --git a/tools/chromiumos/gen_autosuspend_rules.py b/tools/chromiumos/gen_autosuspend_rules.py
index b6367f3c3e..8bb25a1ccf 100644
--- a/tools/chromiumos/gen_autosuspend_rules.py
+++ b/tools/chromiumos/gen_autosuspend_rules.py
@@ -134,6 +134,8 @@ USB_IDS += [
'12d1:15bb',
# Fibocom (L850-GL) (coral, nautilus, sarien)
'2cb7:0007',
+ # Fibocom (NL668, NL652)
+ '2cb7:01a0',
]
# Mass Storage
diff --git a/tools/find-double-newline.sh b/tools/find-double-newline.sh
index 51204eb7c9..7ea6de8311 100755
--- a/tools/find-double-newline.sh
+++ b/tools/find-double-newline.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
TOP=`git rev-parse --show-toplevel`
diff --git a/tools/find-tabs.sh b/tools/find-tabs.sh
index 95249f9c9c..54d922975c 100755
--- a/tools/find-tabs.sh
+++ b/tools/find-tabs.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
TOP=`git rev-parse --show-toplevel`
diff --git a/tools/gdb-sd_dump_hashmaps.py b/tools/gdb-sd_dump_hashmaps.py
index 66018a54fd..d2388b7171 100644
--- a/tools/gdb-sd_dump_hashmaps.py
+++ b/tools/gdb-sd_dump_hashmaps.py
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
import gdb
diff --git a/tools/generate-gperfs.py b/tools/generate-gperfs.py
index 5392df0ebb..d240b2c383 100755
--- a/tools/generate-gperfs.py
+++ b/tools/generate-gperfs.py
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
"""
Generate %-from-name.gperf from %-list.txt
diff --git a/tools/git-contrib.sh b/tools/git-contrib.sh
index cc0f99169c..f6fccd6046 100755
--- a/tools/git-contrib.sh
+++ b/tools/git-contrib.sh
@@ -1,6 +1,6 @@
#!/bin/sh
set -eu
-git shortlog -s `git describe --abbrev=0`.. | \
+git shortlog -s `git describe --abbrev=0 --match 'v[0-9][0-9][0-9]'`.. | \
awk '{ $1=""; print $0 "," }' | \
sort -u
diff --git a/tools/make-autosuspend-rules.py b/tools/make-autosuspend-rules.py
index 8114522a1c..633b7711d1 100755
--- a/tools/make-autosuspend-rules.py
+++ b/tools/make-autosuspend-rules.py
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
# Generate autosuspend rules for devices that have been tested to work properly
# with autosuspend by the Chromium OS team. Based on
@@ -7,18 +7,18 @@
import chromiumos.gen_autosuspend_rules
-print('# pci:v<00VENDOR>d<00DEVICE>:* (8 uppercase hexadecimal digits twice)')
+print('# pci:v<00VENDOR>d<00DEVICE> (8 uppercase hexadecimal digits twice)')
for entry in chromiumos.gen_autosuspend_rules.PCI_IDS:
vendor, device = entry.split(':')
vendor = int(vendor, 16)
device = int(device, 16)
- print('pci:v{:08X}d{:08X}:*'.format(vendor, device))
+ print('pci:v{:08X}d{:08X}*'.format(vendor, device))
-print('# usb:v<VEND>p<PROD>:* (4 uppercase hexadecimal digits twice)')
+print('# usb:v<VEND>p<PROD> (4 uppercase hexadecimal digits twice)')
for entry in chromiumos.gen_autosuspend_rules.USB_IDS:
vendor, product = entry.split(':')
vendor = int(vendor, 16)
product = int(product, 16)
- print('usb:v{:04X}p{:04X}:*'.format(vendor, product))
+ print('usb:v{:04X}p{:04X}*'.format(vendor, product))
print(' ID_AUTOSUSPEND=1')
diff --git a/tools/make-directive-index.py b/tools/make-directive-index.py
index b04281490d..bbdc5572f5 100755
--- a/tools/make-directive-index.py
+++ b/tools/make-directive-index.py
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
import sys
import collections
diff --git a/tools/make-man-index.py b/tools/make-man-index.py
index 37c708d81d..bae36fbabf 100755
--- a/tools/make-man-index.py
+++ b/tools/make-man-index.py
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
import collections
import sys
diff --git a/tools/oss-fuzz.sh b/tools/oss-fuzz.sh
index 5b8690b687..491246b32b 100755
--- a/tools/oss-fuzz.sh
+++ b/tools/oss-fuzz.sh
@@ -1,5 +1,5 @@
#!/usr/bin/env bash
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
set -ex
diff --git a/tools/update-dbus-docs.py b/tools/update-dbus-docs.py
index 14ae30f33c..8fea0b8a00 100755
--- a/tools/update-dbus-docs.py
+++ b/tools/update-dbus-docs.py
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
import argparse
import collections
@@ -125,8 +125,7 @@ def document_has_elem_with_text(document, elem, item_repr):
for loc in document.findall(predicate):
if loc.text == item_repr:
return True
- else:
- return False
+ return False
def check_documented(document, declarations, stats):
missing = []
diff --git a/tools/update-man-rules.py b/tools/update-man-rules.py
index f5db691f3e..9e1660c123 100755
--- a/tools/update-man-rules.py
+++ b/tools/update-man-rules.py
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
from __future__ import print_function
import collections
diff --git a/tools/xml_helper.py b/tools/xml_helper.py
index f399e7493c..0361358bec 100755
--- a/tools/xml_helper.py
+++ b/tools/xml_helper.py
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
from lxml import etree as tree
diff --git a/travis-ci/managers/debian.sh b/travis-ci/managers/debian.sh
index ab8a5b5fb8..558a55a0a1 100755
--- a/travis-ci/managers/debian.sh
+++ b/travis-ci/managers/debian.sh
@@ -61,7 +61,7 @@ for phase in "${PHASES[@]}"; do
ENV_VARS="-e CC=clang -e CXX=clang++"
MESON_ARGS="--optimization=1"
fi
- docker exec $ENV_VARS -it $CONT_NAME meson --werror -Dtests=unsafe -Dslow-tests=true -Dsplit-usr=true -Dman=true $MESON_ARGS build
+ docker exec $ENV_VARS -it $CONT_NAME meson --werror -Dtests=unsafe -Dslow-tests=true -Dfuzz-tests=true -Dsplit-usr=true -Dman=true $MESON_ARGS build
$DOCKER_EXEC ninja -v -C build
docker exec -e "TRAVIS=$TRAVIS" -it $CONT_NAME ninja -C build test
;;
diff --git a/travis-ci/managers/fedora.sh b/travis-ci/managers/fedora.sh
index 3a917564ed..463696a32e 100755
--- a/travis-ci/managers/fedora.sh
+++ b/travis-ci/managers/fedora.sh
@@ -83,12 +83,12 @@ for phase in "${PHASES[@]}"; do
RUN)
info "Run phase"
# Build systemd
- $DOCKER_EXEC meson --werror -Dtests=unsafe -Dslow-tests=true build
+ $DOCKER_EXEC meson --werror -Dtests=unsafe -Dslow-tests=true -Dfuzz-tests=true build
$DOCKER_EXEC ninja -v -C build
$DOCKER_EXEC ninja -C build test
;;
RUN_CLANG)
- docker exec -e CC=clang -e CXX=clang++ -it $CONT_NAME meson --werror -Dtests=unsafe -Dslow-tests=true -Dman=true build
+ docker exec -e CC=clang -e CXX=clang++ -it $CONT_NAME meson --werror -Dtests=unsafe -Dslow-tests=true -Dfuzz-tests=true -Dman=true build
$DOCKER_EXEC ninja -v -C build
$DOCKER_EXEC ninja -C build test
;;
diff --git a/units/basic.target b/units/basic.target
index 4f44292249..d8cdd5ac14 100644
--- a/units/basic.target
+++ b/units/basic.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/blockdev@.target b/units/blockdev@.target
index 22a9a5bb2b..ddc85bf890 100644
--- a/units/blockdev@.target
+++ b/units/blockdev@.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/bluetooth.target b/units/bluetooth.target
index 62407d363e..8333c2332f 100644
--- a/units/bluetooth.target
+++ b/units/bluetooth.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/boot-complete.target b/units/boot-complete.target
index f0b9e57e7c..f302384dc4 100644
--- a/units/boot-complete.target
+++ b/units/boot-complete.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/console-getty.service.m4 b/units/console-getty.service.m4
index 7c3992e8e0..d61a490be3 100644
--- a/units/console-getty.service.m4
+++ b/units/console-getty.service.m4
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/container-getty@.service.m4 b/units/container-getty@.service.m4
index e4f9ae5791..92307a3ccb 100644
--- a/units/container-getty@.service.m4
+++ b/units/container-getty@.service.m4
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/cryptsetup-pre.target b/units/cryptsetup-pre.target
index 12e4107f60..6bb8ff75cc 100644
--- a/units/cryptsetup-pre.target
+++ b/units/cryptsetup-pre.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/cryptsetup.target b/units/cryptsetup.target
index fdb572bc70..b8eecbdcc1 100644
--- a/units/cryptsetup.target
+++ b/units/cryptsetup.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/debug-shell.service.in b/units/debug-shell.service.in
index 9f3868e106..5b4de84eac 100644
--- a/units/debug-shell.service.in
+++ b/units/debug-shell.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/dev-hugepages.mount b/units/dev-hugepages.mount
index 278ed9b610..517437784c 100644
--- a/units/dev-hugepages.mount
+++ b/units/dev-hugepages.mount
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/dev-mqueue.mount b/units/dev-mqueue.mount
index 0114ad31f0..02683a9e1e 100644
--- a/units/dev-mqueue.mount
+++ b/units/dev-mqueue.mount
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/emergency.service.in b/units/emergency.service.in
index 180d9e6a57..9418f5e717 100644
--- a/units/emergency.service.in
+++ b/units/emergency.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/emergency.target b/units/emergency.target
index a4e954e857..e7f34beb3e 100644
--- a/units/emergency.target
+++ b/units/emergency.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/exit.target b/units/exit.target
index 0a79533a9e..d7a1472a2b 100644
--- a/units/exit.target
+++ b/units/exit.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/final.target b/units/final.target
index 0e12386d4d..34f6069dd1 100644
--- a/units/final.target
+++ b/units/final.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/first-boot-complete.target b/units/first-boot-complete.target
index 98b236e9ff..b971496100 100644
--- a/units/first-boot-complete.target
+++ b/units/first-boot-complete.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/getty-pre.target b/units/getty-pre.target
index adb98bf92c..5cf0875fae 100644
--- a/units/getty-pre.target
+++ b/units/getty-pre.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/getty.target b/units/getty.target
index b3110179bf..7e9aac2023 100644
--- a/units/getty.target
+++ b/units/getty.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/getty@.service.m4 b/units/getty@.service.m4
index 087d686666..4c21002619 100644
--- a/units/getty@.service.m4
+++ b/units/getty@.service.m4
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/graphical.target b/units/graphical.target
index f3e30e9756..4b2087fa1b 100644
--- a/units/graphical.target
+++ b/units/graphical.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/halt.target b/units/halt.target
index 87c33745f2..b06758bf95 100644
--- a/units/halt.target
+++ b/units/halt.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/hibernate.target b/units/hibernate.target
index 8580c658e6..9ec6f2a6b1 100644
--- a/units/hibernate.target
+++ b/units/hibernate.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/hybrid-sleep.target b/units/hybrid-sleep.target
index e5e22b8187..4ed0b35146 100644
--- a/units/hybrid-sleep.target
+++ b/units/hybrid-sleep.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/initrd-cleanup.service b/units/initrd-cleanup.service
index 1120ef3eff..08ab503962 100644
--- a/units/initrd-cleanup.service
+++ b/units/initrd-cleanup.service
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/initrd-fs.target b/units/initrd-fs.target
index 49577c364f..8c6bdf35f5 100644
--- a/units/initrd-fs.target
+++ b/units/initrd-fs.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/initrd-parse-etc.service b/units/initrd-parse-etc.service
index 94a9719b50..38df728355 100644
--- a/units/initrd-parse-etc.service
+++ b/units/initrd-parse-etc.service
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/initrd-root-device.target b/units/initrd-root-device.target
index bcb6909320..f3c3d79a2b 100644
--- a/units/initrd-root-device.target
+++ b/units/initrd-root-device.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/initrd-root-fs.target b/units/initrd-root-fs.target
index f5a8855b6c..4037ac4126 100644
--- a/units/initrd-root-fs.target
+++ b/units/initrd-root-fs.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/initrd-switch-root.service b/units/initrd-switch-root.service
index 682b8af875..e3d6926711 100644
--- a/units/initrd-switch-root.service
+++ b/units/initrd-switch-root.service
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/initrd-switch-root.target b/units/initrd-switch-root.target
index 32ff40a3f6..1e32ec57dd 100644
--- a/units/initrd-switch-root.target
+++ b/units/initrd-switch-root.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/initrd-udevadm-cleanup-db.service b/units/initrd-udevadm-cleanup-db.service
index 0d66080de7..bc444736fd 100644
--- a/units/initrd-udevadm-cleanup-db.service
+++ b/units/initrd-udevadm-cleanup-db.service
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/initrd.target b/units/initrd.target
index bfd497ecc3..655158a58b 100644
--- a/units/initrd.target
+++ b/units/initrd.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/kexec.target b/units/kexec.target
index 706cd7065c..5d8f8cdc52 100644
--- a/units/kexec.target
+++ b/units/kexec.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/kmod-static-nodes.service.in b/units/kmod-static-nodes.service.in
index 0971edf9ec..f4170d6a99 100644
--- a/units/kmod-static-nodes.service.in
+++ b/units/kmod-static-nodes.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/ldconfig.service b/units/ldconfig.service
index 3c3cbf5607..33824d4d4f 100644
--- a/units/ldconfig.service
+++ b/units/ldconfig.service
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/local-fs-pre.target b/units/local-fs-pre.target
index 9aca15b953..bffa7e95dd 100644
--- a/units/local-fs-pre.target
+++ b/units/local-fs-pre.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/local-fs.target b/units/local-fs.target
index 6ba4930087..02797953a5 100644
--- a/units/local-fs.target
+++ b/units/local-fs.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/machine.slice b/units/machine.slice
index b4e4c17d88..501d3530c0 100644
--- a/units/machine.slice
+++ b/units/machine.slice
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/machines.target b/units/machines.target
index 224765aa90..165839aeb1 100644
--- a/units/machines.target
+++ b/units/machines.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/meson.build b/units/meson.build
index 2f09590736..ba60eb7fc1 100644
--- a/units/meson.build
+++ b/units/meson.build
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
with_runlevels = conf.get('HAVE_SYSV_COMPAT') == 1
@@ -326,9 +326,11 @@ install_data('user-.slice.d/10-defaults.conf',
############################################################
-meson.add_install_script(meson_make_symlink,
- join_paths(pkgsysconfdir, 'user'),
- join_paths(sysconfdir, 'xdg/systemd/user'))
+if install_sysconfdir
+ meson.add_install_script(meson_make_symlink,
+ join_paths(pkgsysconfdir, 'user'),
+ join_paths(sysconfdir, 'xdg/systemd/user'))
+endif
meson.add_install_script(meson_make_symlink,
join_paths(dbussystemservicedir, 'org.freedesktop.systemd1.service'),
join_paths(dbussessionservicedir, 'org.freedesktop.systemd1.service'))
diff --git a/units/modprobe@.service b/units/modprobe@.service
index 34a0557735..cf8baf6084 100644
--- a/units/modprobe@.service
+++ b/units/modprobe@.service
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
@@ -13,7 +13,6 @@ DefaultDependencies=no
Before=sysinit.target
Documentation=man:modprobe(8)
ConditionCapability=CAP_SYS_MODULE
-ConditionPathExists=!/sys/module/%I
[Service]
Type=oneshot
diff --git a/units/multi-user.target b/units/multi-user.target
index 386e1b547d..53eb2b7ed0 100644
--- a/units/multi-user.target
+++ b/units/multi-user.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/network-online.target b/units/network-online.target
index 8b8c7851e2..c3edfeb4f9 100644
--- a/units/network-online.target
+++ b/units/network-online.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/network-pre.target b/units/network-pre.target
index 806eb720f8..70279dacdb 100644
--- a/units/network-pre.target
+++ b/units/network-pre.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/network.target b/units/network.target
index 3e4fdff144..08baf126b4 100644
--- a/units/network.target
+++ b/units/network.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/nss-lookup.target b/units/nss-lookup.target
index 8d56c8ea36..53e7a31d0e 100644
--- a/units/nss-lookup.target
+++ b/units/nss-lookup.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/nss-user-lookup.target b/units/nss-user-lookup.target
index 7436b6c80d..9f0d6192fb 100644
--- a/units/nss-user-lookup.target
+++ b/units/nss-user-lookup.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/paths.target b/units/paths.target
index 9b6ed1c13f..1bec148bee 100644
--- a/units/paths.target
+++ b/units/paths.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/poweroff.target b/units/poweroff.target
index 47c109ceed..e97f058fdc 100644
--- a/units/poweroff.target
+++ b/units/poweroff.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/printer.target b/units/printer.target
index e1fb0d4e34..c695669c5c 100644
--- a/units/printer.target
+++ b/units/printer.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/proc-sys-fs-binfmt_misc.automount b/units/proc-sys-fs-binfmt_misc.automount
index 30a6bc9918..a71e249976 100644
--- a/units/proc-sys-fs-binfmt_misc.automount
+++ b/units/proc-sys-fs-binfmt_misc.automount
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/proc-sys-fs-binfmt_misc.mount b/units/proc-sys-fs-binfmt_misc.mount
index 1587853e1e..919271b3e2 100644
--- a/units/proc-sys-fs-binfmt_misc.mount
+++ b/units/proc-sys-fs-binfmt_misc.mount
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/quotaon.service.in b/units/quotaon.service.in
index 25c747439a..fa6b4c8239 100644
--- a/units/quotaon.service.in
+++ b/units/quotaon.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/rc-local.service.in b/units/rc-local.service.in
index d4aaaf09d4..f7ce98f18e 100644
--- a/units/rc-local.service.in
+++ b/units/rc-local.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/reboot.target b/units/reboot.target
index c2782db631..a900c90dcf 100644
--- a/units/reboot.target
+++ b/units/reboot.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/remote-cryptsetup.target b/units/remote-cryptsetup.target
index 4445d5defe..0a689bfa2d 100644
--- a/units/remote-cryptsetup.target
+++ b/units/remote-cryptsetup.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/remote-fs-pre.target b/units/remote-fs-pre.target
index 3f22605c8c..bba5e0ce7c 100644
--- a/units/remote-fs-pre.target
+++ b/units/remote-fs-pre.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/remote-fs.target b/units/remote-fs.target
index 0d44348e75..74011d8aec 100644
--- a/units/remote-fs.target
+++ b/units/remote-fs.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/rescue.service.in b/units/rescue.service.in
index 4106e2d9f7..2018516003 100644
--- a/units/rescue.service.in
+++ b/units/rescue.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/rescue.target b/units/rescue.target
index 0e04a94f39..112808358e 100644
--- a/units/rescue.target
+++ b/units/rescue.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/rpcbind.target b/units/rpcbind.target
index 801ee4d6ef..8bd853baa5 100644
--- a/units/rpcbind.target
+++ b/units/rpcbind.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/serial-getty@.service.m4 b/units/serial-getty@.service.m4
index 4b72bef84e..72c1df590d 100644
--- a/units/serial-getty@.service.m4
+++ b/units/serial-getty@.service.m4
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/shutdown.target b/units/shutdown.target
index d48e6d6494..582ae6ba27 100644
--- a/units/shutdown.target
+++ b/units/shutdown.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/sigpwr.target b/units/sigpwr.target
index 8228541dac..beda318c34 100644
--- a/units/sigpwr.target
+++ b/units/sigpwr.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/sleep.target b/units/sleep.target
index 9409dc6707..a38a4319ff 100644
--- a/units/sleep.target
+++ b/units/sleep.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/slices.target b/units/slices.target
index 84a04d6385..4517e35fc5 100644
--- a/units/slices.target
+++ b/units/slices.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/smartcard.target b/units/smartcard.target
index 717ea2311d..0c3fe7210e 100644
--- a/units/smartcard.target
+++ b/units/smartcard.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/sockets.target b/units/sockets.target
index 9af67fdb1f..c6e20d7760 100644
--- a/units/sockets.target
+++ b/units/sockets.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/sound.target b/units/sound.target
index 19afc2a637..99e68af008 100644
--- a/units/sound.target
+++ b/units/sound.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/suspend-then-hibernate.target b/units/suspend-then-hibernate.target
index 999c0a9c86..e998763366 100644
--- a/units/suspend-then-hibernate.target
+++ b/units/suspend-then-hibernate.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/suspend.target b/units/suspend.target
index 1a156b4147..bf228f933f 100644
--- a/units/suspend.target
+++ b/units/suspend.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/swap.target b/units/swap.target
index 8cef5b6489..bcdd98815b 100644
--- a/units/swap.target
+++ b/units/swap.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/sys-fs-fuse-connections.mount b/units/sys-fs-fuse-connections.mount
index 7bbc342be8..ca48fd5f4f 100644
--- a/units/sys-fs-fuse-connections.mount
+++ b/units/sys-fs-fuse-connections.mount
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
@@ -15,9 +15,16 @@ DefaultDependencies=no
ConditionPathExists=/sys/fs/fuse/connections
ConditionCapability=CAP_SYS_ADMIN
ConditionVirtualization=!private-users
-After=systemd-modules-load.service
Before=sysinit.target
+# These dependencies are used to make certain that the module is fully
+# loaded. Indeed udev starts this unit when it receives an uevent for the
+# module but the kernel sends it too early, ie before the init() of the module
+# is fully operational and /sys/fs/fuse/connections is created, see issue#17586.
+
+After=modprobe@fuse.service
+Requires=modprobe@fuse.service
+
[Mount]
What=fusectl
Where=/sys/fs/fuse/connections
diff --git a/units/sys-kernel-config.mount b/units/sys-kernel-config.mount
index e6997884dc..b99b4f4b7e 100644
--- a/units/sys-kernel-config.mount
+++ b/units/sys-kernel-config.mount
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
@@ -14,9 +14,16 @@ Documentation=https://www.freedesktop.org/wiki/Software/systemd/APIFileSystems
DefaultDependencies=no
ConditionPathExists=/sys/kernel/config
ConditionCapability=CAP_SYS_RAWIO
-After=systemd-modules-load.service
Before=sysinit.target
+# These dependencies are used to make certain that the module is fully
+# loaded. Indeed udev starts this unit when it receives an uevent for the
+# module but the kernel sends it too early, ie before the init() of the module
+# is fully operational and /sys/kernel/config is created, see issue#17586.
+
+After=modprobe@configfs.service
+Requires=modprobe@configfs.service
+
[Mount]
What=configfs
Where=/sys/kernel/config
diff --git a/units/sys-kernel-debug.mount b/units/sys-kernel-debug.mount
index 618270ddae..d03837bafb 100644
--- a/units/sys-kernel-debug.mount
+++ b/units/sys-kernel-debug.mount
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/sys-kernel-tracing.mount b/units/sys-kernel-tracing.mount
index e29b258a47..8800c96bcd 100644
--- a/units/sys-kernel-tracing.mount
+++ b/units/sys-kernel-tracing.mount
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/sysinit.target b/units/sysinit.target
index b6c16a1412..eed3d16b45 100644
--- a/units/sysinit.target
+++ b/units/sysinit.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/syslog.socket b/units/syslog.socket
index c4b1cea2d6..ff76bc5a6f 100644
--- a/units/syslog.socket
+++ b/units/syslog.socket
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/system-systemd\x2dcryptsetup.slice b/units/system-systemd\x2dcryptsetup.slice
index 83310900a7..9369b73ae2 100644
--- a/units/system-systemd\x2dcryptsetup.slice
+++ b/units/system-systemd\x2dcryptsetup.slice
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/system-update-cleanup.service b/units/system-update-cleanup.service
index 41abcd631c..d0878dcb0b 100644
--- a/units/system-update-cleanup.service
+++ b/units/system-update-cleanup.service
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/system-update-pre.target b/units/system-update-pre.target
index 163b75c220..04101389eb 100644
--- a/units/system-update-pre.target
+++ b/units/system-update-pre.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/system-update.target b/units/system-update.target
index 29812edf92..dcddfc2ea5 100644
--- a/units/system-update.target
+++ b/units/system-update.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-ask-password-console.path b/units/systemd-ask-password-console.path
index 248d597540..a7aac83787 100644
--- a/units/systemd-ask-password-console.path
+++ b/units/systemd-ask-password-console.path
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-ask-password-console.service b/units/systemd-ask-password-console.service
index 6ee4c253a3..d31f3fa70f 100644
--- a/units/systemd-ask-password-console.service
+++ b/units/systemd-ask-password-console.service
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-ask-password-wall.path b/units/systemd-ask-password-wall.path
index 193a9b311e..c82cfd26c7 100644
--- a/units/systemd-ask-password-wall.path
+++ b/units/systemd-ask-password-wall.path
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-ask-password-wall.service b/units/systemd-ask-password-wall.service
index 52a3037cd4..6a70b58cef 100644
--- a/units/systemd-ask-password-wall.service
+++ b/units/systemd-ask-password-wall.service
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-backlight@.service.in b/units/systemd-backlight@.service.in
index 6f7967fd00..317aa38745 100644
--- a/units/systemd-backlight@.service.in
+++ b/units/systemd-backlight@.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-binfmt.service.in b/units/systemd-binfmt.service.in
index e54e95e11d..ca76750c0a 100644
--- a/units/systemd-binfmt.service.in
+++ b/units/systemd-binfmt.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-bless-boot.service.in b/units/systemd-bless-boot.service.in
index 511d991d3b..601588fc61 100644
--- a/units/systemd-bless-boot.service.in
+++ b/units/systemd-bless-boot.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-boot-check-no-failures.service.in b/units/systemd-boot-check-no-failures.service.in
index 27e898b85b..1bf74c2129 100644
--- a/units/systemd-boot-check-no-failures.service.in
+++ b/units/systemd-boot-check-no-failures.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-boot-system-token.service b/units/systemd-boot-system-token.service
index 8aead02417..55f05ec8d8 100644
--- a/units/systemd-boot-system-token.service
+++ b/units/systemd-boot-system-token.service
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-coredump.socket b/units/systemd-coredump.socket
index c9971b9199..922358fe5d 100644
--- a/units/systemd-coredump.socket
+++ b/units/systemd-coredump.socket
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-coredump@.service.in b/units/systemd-coredump@.service.in
index d1ece27074..219f207835 100644
--- a/units/systemd-coredump@.service.in
+++ b/units/systemd-coredump@.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-exit.service b/units/systemd-exit.service
index 773c400b47..df6e671e84 100644
--- a/units/systemd-exit.service
+++ b/units/systemd-exit.service
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-firstboot.service b/units/systemd-firstboot.service
index e17fef7b36..2fea88384f 100644
--- a/units/systemd-firstboot.service
+++ b/units/systemd-firstboot.service
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-fsck-root.service.in b/units/systemd-fsck-root.service.in
index 042081ccee..c4a2948120 100644
--- a/units/systemd-fsck-root.service.in
+++ b/units/systemd-fsck-root.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-fsck@.service.in b/units/systemd-fsck@.service.in
index 332208352d..6d9c9aba69 100644
--- a/units/systemd-fsck@.service.in
+++ b/units/systemd-fsck@.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-halt.service b/units/systemd-halt.service
index cd16d1de20..37bfe285c0 100644
--- a/units/systemd-halt.service
+++ b/units/systemd-halt.service
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-hibernate-resume@.service.in b/units/systemd-hibernate-resume@.service.in
index a2db06b031..85e0c88169 100644
--- a/units/systemd-hibernate-resume@.service.in
+++ b/units/systemd-hibernate-resume@.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-hibernate.service.in b/units/systemd-hibernate.service.in
index 963b257ab8..30965411ff 100644
--- a/units/systemd-hibernate.service.in
+++ b/units/systemd-hibernate.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-homed-activate.service b/units/systemd-homed-activate.service
index 3a5057d3aa..b16fedb4ce 100644
--- a/units/systemd-homed-activate.service
+++ b/units/systemd-homed-activate.service
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-homed.service.in b/units/systemd-homed.service.in
index 4b6a91c984..5ac53ca9dc 100644
--- a/units/systemd-homed.service.in
+++ b/units/systemd-homed.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-hostnamed.service.in b/units/systemd-hostnamed.service.in
index 017441f9da..d3d0efebd0 100644
--- a/units/systemd-hostnamed.service.in
+++ b/units/systemd-hostnamed.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-hwdb-update.service.in b/units/systemd-hwdb-update.service.in
index 9887018a1f..57398e5214 100644
--- a/units/systemd-hwdb-update.service.in
+++ b/units/systemd-hwdb-update.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-hybrid-sleep.service.in b/units/systemd-hybrid-sleep.service.in
index 466ade974c..6fe37daacd 100644
--- a/units/systemd-hybrid-sleep.service.in
+++ b/units/systemd-hybrid-sleep.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-importd.service.in b/units/systemd-importd.service.in
index 58a7b47259..afe395687d 100644
--- a/units/systemd-importd.service.in
+++ b/units/systemd-importd.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-initctl.service.in b/units/systemd-initctl.service.in
index c276283908..6367433682 100644
--- a/units/systemd-initctl.service.in
+++ b/units/systemd-initctl.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-initctl.socket b/units/systemd-initctl.socket
index 9d97579908..598a67f0e4 100644
--- a/units/systemd-initctl.socket
+++ b/units/systemd-initctl.socket
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-journal-catalog-update.service b/units/systemd-journal-catalog-update.service
index 6db55a5490..477925685a 100644
--- a/units/systemd-journal-catalog-update.service
+++ b/units/systemd-journal-catalog-update.service
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-journal-flush.service b/units/systemd-journal-flush.service
index 0f45743fa0..1a71592b93 100644
--- a/units/systemd-journal-flush.service
+++ b/units/systemd-journal-flush.service
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-journal-gatewayd.service.in b/units/systemd-journal-gatewayd.service.in
index 2436f2a2cf..7944d6fd9a 100644
--- a/units/systemd-journal-gatewayd.service.in
+++ b/units/systemd-journal-gatewayd.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-journal-gatewayd.socket b/units/systemd-journal-gatewayd.socket
index 7c3632b323..30e74e3223 100644
--- a/units/systemd-journal-gatewayd.socket
+++ b/units/systemd-journal-gatewayd.socket
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-journal-remote.service.in b/units/systemd-journal-remote.service.in
index 82befc9912..e48df81e70 100644
--- a/units/systemd-journal-remote.service.in
+++ b/units/systemd-journal-remote.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-journal-remote.socket b/units/systemd-journal-remote.socket
index 48d0a656ba..2956819038 100644
--- a/units/systemd-journal-remote.socket
+++ b/units/systemd-journal-remote.socket
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-journal-upload.service.in b/units/systemd-journal-upload.service.in
index 8b9a9ebdfb..ba6b6e7344 100644
--- a/units/systemd-journal-upload.service.in
+++ b/units/systemd-journal-upload.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-journald-audit.socket b/units/systemd-journald-audit.socket
index cb8b774963..f0c0aebc86 100644
--- a/units/systemd-journald-audit.socket
+++ b/units/systemd-journald-audit.socket
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-journald-dev-log.socket b/units/systemd-journald-dev-log.socket
index 7cec55440d..93e8b252b2 100644
--- a/units/systemd-journald-dev-log.socket
+++ b/units/systemd-journald-dev-log.socket
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-journald-varlink@.socket b/units/systemd-journald-varlink@.socket
index b6730c2fa5..05d8cf6ce4 100644
--- a/units/systemd-journald-varlink@.socket
+++ b/units/systemd-journald-varlink@.socket
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-journald.service.in b/units/systemd-journald.service.in
index 0cb1bfa3ca..c743254137 100644
--- a/units/systemd-journald.service.in
+++ b/units/systemd-journald.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
@@ -16,7 +16,6 @@ After=systemd-journald.socket systemd-journald-dev-log.socket systemd-journald-a
Before=sysinit.target
[Service]
-CapabilityBoundingSet=CAP_SYS_ADMIN CAP_DAC_OVERRIDE CAP_SYS_PTRACE CAP_SYSLOG CAP_AUDIT_CONTROL CAP_AUDIT_READ CAP_CHOWN CAP_DAC_READ_SEARCH CAP_FOWNER CAP_SETUID CAP_SETGID CAP_MAC_OVERRIDE
DeviceAllow=char-* rw
ExecStart=@rootlibexecdir@/systemd-journald
FileDescriptorStoreMax=4224
@@ -42,6 +41,11 @@ SystemCallFilter=@system-service
Type=notify
@SERVICE_WATCHDOG@
+# In case you're wondering why CAP_SYS_PTRACE is needed, access to
+# /proc/<pid>/exe requires this capability. Thus if this capability is missing
+# the _EXE=/OBJECT_EXE= fields will be missing from the journal entries.
+CapabilityBoundingSet=CAP_SYS_ADMIN CAP_DAC_OVERRIDE CAP_SYS_PTRACE CAP_SYSLOG CAP_AUDIT_CONTROL CAP_AUDIT_READ CAP_CHOWN CAP_DAC_READ_SEARCH CAP_FOWNER CAP_SETUID CAP_SETGID CAP_MAC_OVERRIDE
+
# If there are many split up journal files we need a lot of fds to access them
# all in parallel.
LimitNOFILE=@HIGH_RLIMIT_NOFILE@
diff --git a/units/systemd-journald.socket b/units/systemd-journald.socket
index 95d5f21964..ada3520ad1 100644
--- a/units/systemd-journald.socket
+++ b/units/systemd-journald.socket
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-journald@.service.in b/units/systemd-journald@.service.in
index e7ea919328..14a217d025 100644
--- a/units/systemd-journald@.service.in
+++ b/units/systemd-journald@.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-journald@.socket b/units/systemd-journald@.socket
index 3badd7842a..60c025fcc3 100644
--- a/units/systemd-journald@.socket
+++ b/units/systemd-journald@.socket
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-kexec.service b/units/systemd-kexec.service
index 7413e1d6b1..0aa7933be4 100644
--- a/units/systemd-kexec.service
+++ b/units/systemd-kexec.service
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-localed.service.in b/units/systemd-localed.service.in
index 47f147956b..652b956a34 100644
--- a/units/systemd-localed.service.in
+++ b/units/systemd-localed.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-logind.service.in b/units/systemd-logind.service.in
index cb44ccbae6..f131b60d4f 100644
--- a/units/systemd-logind.service.in
+++ b/units/systemd-logind.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-machine-id-commit.service b/units/systemd-machine-id-commit.service
index 5616a35701..89e0613955 100644
--- a/units/systemd-machine-id-commit.service
+++ b/units/systemd-machine-id-commit.service
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-machined.service.in b/units/systemd-machined.service.in
index 0e452ddcab..56c9532659 100644
--- a/units/systemd-machined.service.in
+++ b/units/systemd-machined.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-modules-load.service.in b/units/systemd-modules-load.service.in
index 26abe21d1b..fdb5b3a41e 100644
--- a/units/systemd-modules-load.service.in
+++ b/units/systemd-modules-load.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-network-generator.service.in b/units/systemd-network-generator.service.in
index 248a8dc64e..bda8426191 100644
--- a/units/systemd-network-generator.service.in
+++ b/units/systemd-network-generator.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-networkd-wait-online.service.in b/units/systemd-networkd-wait-online.service.in
index 7666e16669..d868e77775 100644
--- a/units/systemd-networkd-wait-online.service.in
+++ b/units/systemd-networkd-wait-online.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-networkd.service.in b/units/systemd-networkd.service.in
index c8ff9be3e5..9834b06a43 100644
--- a/units/systemd-networkd.service.in
+++ b/units/systemd-networkd.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-networkd.socket b/units/systemd-networkd.socket
index bc049e5ade..aa9ad7e02c 100644
--- a/units/systemd-networkd.socket
+++ b/units/systemd-networkd.socket
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-nspawn@.service.in b/units/systemd-nspawn@.service.in
index c91c92707e..a6551f9152 100644
--- a/units/systemd-nspawn@.service.in
+++ b/units/systemd-nspawn@.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-oomd.service.in b/units/systemd-oomd.service.in
index 67bd117c95..fd7c8d213d 100644
--- a/units/systemd-oomd.service.in
+++ b/units/systemd-oomd.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-portabled.service.in b/units/systemd-portabled.service.in
index 3051fbd3d0..e00a0065e3 100644
--- a/units/systemd-portabled.service.in
+++ b/units/systemd-portabled.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-poweroff.service b/units/systemd-poweroff.service
index 8d1d54389b..bb2ddb0e73 100644
--- a/units/systemd-poweroff.service
+++ b/units/systemd-poweroff.service
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-pstore.service.in b/units/systemd-pstore.service.in
index 6e4827f03c..624ee704d5 100644
--- a/units/systemd-pstore.service.in
+++ b/units/systemd-pstore.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-quotacheck.service.in b/units/systemd-quotacheck.service.in
index 244da0a307..3e10378a89 100644
--- a/units/systemd-quotacheck.service.in
+++ b/units/systemd-quotacheck.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-random-seed.service.in b/units/systemd-random-seed.service.in
index aa4b3e7357..a7d4acb898 100644
--- a/units/systemd-random-seed.service.in
+++ b/units/systemd-random-seed.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-reboot.service b/units/systemd-reboot.service
index 505f60aabf..b50a792b0e 100644
--- a/units/systemd-reboot.service
+++ b/units/systemd-reboot.service
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-remount-fs.service.in b/units/systemd-remount-fs.service.in
index 4f4304d68e..51985a793a 100644
--- a/units/systemd-remount-fs.service.in
+++ b/units/systemd-remount-fs.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-repart.service.in b/units/systemd-repart.service.in
index 9393a64f00..a5565834eb 100644
--- a/units/systemd-repart.service.in
+++ b/units/systemd-repart.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-resolved.service.in b/units/systemd-resolved.service.in
index 513d96b74c..29adb6bf21 100644
--- a/units/systemd-resolved.service.in
+++ b/units/systemd-resolved.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-rfkill.service.in b/units/systemd-rfkill.service.in
index af2042f1e5..40a80a0b39 100644
--- a/units/systemd-rfkill.service.in
+++ b/units/systemd-rfkill.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-rfkill.socket b/units/systemd-rfkill.socket
index 9d408903bb..4ca8d6fc04 100644
--- a/units/systemd-rfkill.socket
+++ b/units/systemd-rfkill.socket
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-suspend-then-hibernate.service.in b/units/systemd-suspend-then-hibernate.service.in
index 5d6a582730..3f811e7e1a 100644
--- a/units/systemd-suspend-then-hibernate.service.in
+++ b/units/systemd-suspend-then-hibernate.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-suspend.service.in b/units/systemd-suspend.service.in
index 11ed383ba9..40cc83e192 100644
--- a/units/systemd-suspend.service.in
+++ b/units/systemd-suspend.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-sysctl.service.in b/units/systemd-sysctl.service.in
index 5b0f7f9df4..c4a34a81a2 100644
--- a/units/systemd-sysctl.service.in
+++ b/units/systemd-sysctl.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-sysusers.service b/units/systemd-sysusers.service
index da05e0eb1b..ff5b3db821 100644
--- a/units/systemd-sysusers.service
+++ b/units/systemd-sysusers.service
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-time-wait-sync.service.in b/units/systemd-time-wait-sync.service.in
index 475182d6bc..212d0e5a15 100644
--- a/units/systemd-time-wait-sync.service.in
+++ b/units/systemd-time-wait-sync.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-timedated.service.in b/units/systemd-timedated.service.in
index f84bd3830b..6f476173b6 100644
--- a/units/systemd-timedated.service.in
+++ b/units/systemd-timedated.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-timesyncd.service.in b/units/systemd-timesyncd.service.in
index 08ddb141ba..62120d8190 100644
--- a/units/systemd-timesyncd.service.in
+++ b/units/systemd-timesyncd.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-tmpfiles-clean.service b/units/systemd-tmpfiles-clean.service
index f20bb143ef..e962954f06 100644
--- a/units/systemd-tmpfiles-clean.service
+++ b/units/systemd-tmpfiles-clean.service
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-tmpfiles-clean.timer b/units/systemd-tmpfiles-clean.timer
index 3e3017820f..6c6cfe7a08 100644
--- a/units/systemd-tmpfiles-clean.timer
+++ b/units/systemd-tmpfiles-clean.timer
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-tmpfiles-setup-dev.service b/units/systemd-tmpfiles-setup-dev.service
index 1027823859..0babe78767 100644
--- a/units/systemd-tmpfiles-setup-dev.service
+++ b/units/systemd-tmpfiles-setup-dev.service
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-tmpfiles-setup.service b/units/systemd-tmpfiles-setup.service
index 29799ee81c..3f028d2533 100644
--- a/units/systemd-tmpfiles-setup.service
+++ b/units/systemd-tmpfiles-setup.service
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-udev-settle.service b/units/systemd-udev-settle.service
index 9352c6f598..994c47fce4 100644
--- a/units/systemd-udev-settle.service
+++ b/units/systemd-udev-settle.service
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-udev-trigger.service b/units/systemd-udev-trigger.service
index cfe8d61c2a..8b2d88e185 100644
--- a/units/systemd-udev-trigger.service
+++ b/units/systemd-udev-trigger.service
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-udevd-control.socket b/units/systemd-udevd-control.socket
index 5b8628c754..a9d5a4d8ca 100644
--- a/units/systemd-udevd-control.socket
+++ b/units/systemd-udevd-control.socket
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-udevd-kernel.socket b/units/systemd-udevd-kernel.socket
index b2a65f1a84..f636aebff8 100644
--- a/units/systemd-udevd-kernel.socket
+++ b/units/systemd-udevd-kernel.socket
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-udevd.service.in b/units/systemd-udevd.service.in
index 9ada3a6a74..f3458d98e6 100644
--- a/units/systemd-udevd.service.in
+++ b/units/systemd-udevd.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
@@ -19,7 +19,7 @@ ConditionPathIsReadWrite=/sys
DeviceAllow=block-* rwm
DeviceAllow=char-* rwm
Type=notify
-# Note that udev also adjusts the OOM score internally and will reset the value internally for its workers
+# Note that udev will reset the value internally for its workers
OOMScoreAdjust=-1000
Sockets=systemd-udevd-control.socket systemd-udevd-kernel.socket
Restart=always
diff --git a/units/systemd-update-done.service.in b/units/systemd-update-done.service.in
index 6e82ec7474..b4aa746673 100644
--- a/units/systemd-update-done.service.in
+++ b/units/systemd-update-done.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-update-utmp-runlevel.service.in b/units/systemd-update-utmp-runlevel.service.in
index 642d926a31..042145cc2c 100644
--- a/units/systemd-update-utmp-runlevel.service.in
+++ b/units/systemd-update-utmp-runlevel.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-update-utmp.service.in b/units/systemd-update-utmp.service.in
index b9a668faeb..e2fa2d83ba 100644
--- a/units/systemd-update-utmp.service.in
+++ b/units/systemd-update-utmp.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-user-sessions.service.in b/units/systemd-user-sessions.service.in
index 13de728b1d..b15a651682 100644
--- a/units/systemd-user-sessions.service.in
+++ b/units/systemd-user-sessions.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-userdbd.service.in b/units/systemd-userdbd.service.in
index bbfd83a8f2..9b36a17025 100644
--- a/units/systemd-userdbd.service.in
+++ b/units/systemd-userdbd.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-userdbd.socket b/units/systemd-userdbd.socket
index 2b4bb7a87a..50235dd1ef 100644
--- a/units/systemd-userdbd.socket
+++ b/units/systemd-userdbd.socket
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-vconsole-setup.service.in b/units/systemd-vconsole-setup.service.in
index 9042521c9d..45da056395 100644
--- a/units/systemd-vconsole-setup.service.in
+++ b/units/systemd-vconsole-setup.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/systemd-volatile-root.service.in b/units/systemd-volatile-root.service.in
index a39e9a4ec2..5ecc702b6d 100644
--- a/units/systemd-volatile-root.service.in
+++ b/units/systemd-volatile-root.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/time-set.target b/units/time-set.target
index 6b40033529..daac8ef04e 100644
--- a/units/time-set.target
+++ b/units/time-set.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/time-sync.target b/units/time-sync.target
index 9106502e8b..e730bbdbb1 100644
--- a/units/time-sync.target
+++ b/units/time-sync.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/timers.target b/units/timers.target
index b1aa8c797c..99f82e3b80 100644
--- a/units/timers.target
+++ b/units/timers.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/tmp.mount b/units/tmp.mount
index cf6837852f..a8e5851632 100644
--- a/units/tmp.mount
+++ b/units/tmp.mount
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/umount.target b/units/umount.target
index 54fa5aebf2..319b5033cb 100644
--- a/units/umount.target
+++ b/units/umount.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/usb-gadget.target b/units/usb-gadget.target
index c666683a98..46de5b8d62 100644
--- a/units/usb-gadget.target
+++ b/units/usb-gadget.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/user-.slice.d/10-defaults.conf b/units/user-.slice.d/10-defaults.conf
index c81a00e050..cb3651b728 100644
--- a/units/user-.slice.d/10-defaults.conf
+++ b/units/user-.slice.d/10-defaults.conf
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/user-runtime-dir@.service.in b/units/user-runtime-dir@.service.in
index c168b89f98..ff23e01af8 100644
--- a/units/user-runtime-dir@.service.in
+++ b/units/user-runtime-dir@.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/user.slice b/units/user.slice
index 3f2d98fcdf..3e4906411d 100644
--- a/units/user.slice
+++ b/units/user.slice
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/user/app.slice b/units/user/app.slice
new file mode 100644
index 0000000000..0c73135e17
--- /dev/null
+++ b/units/user/app.slice
@@ -0,0 +1,12 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+#
+# 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.
+
+[Unit]
+Description=User Application Slice
+Documentation=man:systemd.special(7)
diff --git a/units/user/background.slice b/units/user/background.slice
new file mode 100644
index 0000000000..8f2a0949bd
--- /dev/null
+++ b/units/user/background.slice
@@ -0,0 +1,12 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+#
+# 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.
+
+[Unit]
+Description=User Background Tasks Slice
+Documentation=man:systemd.special(7)
diff --git a/units/user/basic.target b/units/user/basic.target
index 1ae8275c80..6c79304c59 100644
--- a/units/user/basic.target
+++ b/units/user/basic.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/user/bluetooth.target b/units/user/bluetooth.target
index 62407d363e..8333c2332f 100644
--- a/units/user/bluetooth.target
+++ b/units/user/bluetooth.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/user/default.target b/units/user/default.target
index c50638c918..b1824313da 100644
--- a/units/user/default.target
+++ b/units/user/default.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/user/exit.target b/units/user/exit.target
index 11a6f8eabe..ec2dde2b8e 100644
--- a/units/user/exit.target
+++ b/units/user/exit.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/user/graphical-session-pre.target b/units/user/graphical-session-pre.target
index 3adfc5aaa4..4b9e3dc67f 100644
--- a/units/user/graphical-session-pre.target
+++ b/units/user/graphical-session-pre.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/user/graphical-session.target b/units/user/graphical-session.target
index a38eaabbc4..1f8fafcbe9 100644
--- a/units/user/graphical-session.target
+++ b/units/user/graphical-session.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/user/meson.build b/units/user/meson.build
index 33732e7d59..337a92092d 100644
--- a/units/user/meson.build
+++ b/units/user/meson.build
@@ -1,6 +1,8 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
units = [
+ 'app.slice',
+ 'background.slice',
'basic.target',
'bluetooth.target',
'default.target',
@@ -9,6 +11,7 @@ units = [
'graphical-session.target',
'paths.target',
'printer.target',
+ 'session.slice',
'shutdown.target',
'smartcard.target',
'sockets.target',
diff --git a/units/user/paths.target b/units/user/paths.target
index 9b6ed1c13f..1bec148bee 100644
--- a/units/user/paths.target
+++ b/units/user/paths.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/user/printer.target b/units/user/printer.target
index e1fb0d4e34..c695669c5c 100644
--- a/units/user/printer.target
+++ b/units/user/printer.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/user/session.slice b/units/user/session.slice
new file mode 100644
index 0000000000..3d99d51bc5
--- /dev/null
+++ b/units/user/session.slice
@@ -0,0 +1,12 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+#
+# 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.
+
+[Unit]
+Description=User Core Session Slice
+Documentation=man:systemd.special(7)
diff --git a/units/user/shutdown.target b/units/user/shutdown.target
index d48e6d6494..582ae6ba27 100644
--- a/units/user/shutdown.target
+++ b/units/user/shutdown.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/user/smartcard.target b/units/user/smartcard.target
index 717ea2311d..0c3fe7210e 100644
--- a/units/user/smartcard.target
+++ b/units/user/smartcard.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/user/sockets.target b/units/user/sockets.target
index 9af67fdb1f..c6e20d7760 100644
--- a/units/user/sockets.target
+++ b/units/user/sockets.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/user/sound.target b/units/user/sound.target
index 19afc2a637..99e68af008 100644
--- a/units/user/sound.target
+++ b/units/user/sound.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/user/systemd-exit.service b/units/user/systemd-exit.service
index 1d3b61e3ab..18725253bb 100644
--- a/units/user/systemd-exit.service
+++ b/units/user/systemd-exit.service
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
@@ -14,3 +14,7 @@ DefaultDependencies=no
Requires=shutdown.target
After=shutdown.target
SuccessAction=exit-force
+
+[Service]
+# Place into the root slice to not keep another slice unit alive
+Slice=-.slice
diff --git a/units/user/systemd-tmpfiles-clean.service b/units/user/systemd-tmpfiles-clean.service
index 3be0de5f7d..6a937071f7 100644
--- a/units/user/systemd-tmpfiles-clean.service
+++ b/units/user/systemd-tmpfiles-clean.service
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
@@ -19,3 +19,4 @@ Type=oneshot
ExecStart=systemd-tmpfiles --user --clean
SuccessExitStatus=DATAERR
IOSchedulingClass=idle
+Slice=background.slice
diff --git a/units/user/systemd-tmpfiles-clean.timer b/units/user/systemd-tmpfiles-clean.timer
index d1dbad98de..f8f6ef4ab9 100644
--- a/units/user/systemd-tmpfiles-clean.timer
+++ b/units/user/systemd-tmpfiles-clean.timer
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/user/systemd-tmpfiles-setup.service b/units/user/systemd-tmpfiles-setup.service
index c4b29cbe8c..156689edcd 100644
--- a/units/user/systemd-tmpfiles-setup.service
+++ b/units/user/systemd-tmpfiles-setup.service
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/user/timers.target b/units/user/timers.target
index b1aa8c797c..99f82e3b80 100644
--- a/units/user/timers.target
+++ b/units/user/timers.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/user/xdg-desktop-autostart.target b/units/user/xdg-desktop-autostart.target
index 22df5a35d3..1be7c4b860 100644
--- a/units/user/xdg-desktop-autostart.target
+++ b/units/user/xdg-desktop-autostart.target
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/user@.service.in b/units/user@.service.in
index ace24369dd..8c6c6d1157 100644
--- a/units/user@.service.in
+++ b/units/user@.service.in
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
diff --git a/units/var-lib-machines.mount b/units/var-lib-machines.mount
index 3658199cc7..82ebfa5245 100644
--- a/units/var-lib-machines.mount
+++ b/units/var-lib-machines.mount
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: LGPL-2.1+
+# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#