New upstream version 237

This commit is contained in:
Michael Biebl 2018-01-28 22:49:17 +01:00
parent 52ad194e0b
commit 1d42b86df9
605 changed files with 32673 additions and 17454 deletions

View File

@ -142,3 +142,10 @@ Lukáš Říha <cedel@centrum.cz>
Alan Robertson <aroberts@zen.iomart.com> <alanjrobertson@gmail.com>
Martin Steuer <martinsteuer@gmx.de>
Matthias-Christian Ott <ott@mirix.org> <ott@users.noreply.github.com>
Larry Bernstone <lbernstone@gmail.com>
Michał Szczepański <skrzatu@hotmail.com> <skrzatu@gmail.com>
Tomasz Bachorski <tomasz.bachorski@x7f.io> <34866781+nulsoh@users.noreply.github.com>
Zachary Winnerman <33329648+winnerman-pythian@users.noreply.github.com>
Vladislav Vishnyakov <split7fire@yandex.ru>
Robert Kolchmeyer <rkolchmeyer@google.com> <rkolchmeyer@users.noreply.github.com>
George Gaydarov <git@gg7.io> <gg7@users.noreply.github.com>

View File

@ -50,7 +50,7 @@ BuildPackages=
kmod
libcap
libgcrypt
libidn
libidn2
libmicrohttpd
libseccomp
libtool
@ -66,7 +66,6 @@ BuildPackages=
python-lxml
qrencode
xz
# TODO use libidn2 once it's available in official repositories
Packages=
libidn
libidn2

View File

@ -1,12 +1,178 @@
language: c
compiler:
- gcc
before_install:
- sudo apt-get update -qq
- sudo apt-get install autotools-dev automake autoconf libtool libdbus-1-dev libcap-dev libblkid-dev libmount-dev libpam-dev libcryptsetup-dev libaudit-dev libacl1-dev libattr1-dev libselinux-dev liblzma-dev libgcrypt-dev libqrencode-dev libmicrohttpd-dev gperf python2.7-dev
script: ./autogen.sh && ./configure && make V=1 && sudo ./systemd-machine-id-setup && make check && make distcheck
after_failure: cat test-suite.log
sudo: required
services:
- docker
jobs:
include:
- stage: build docker image
env:
# The machine id will be passed to Dockerfile for later checks
- MACHINE_ID=$(cat /var/lib/dbus/machine-id)
before_script: &update
# Ensure the latest version of docker is installed
- sudo apt-get update
- sudo apt-get -y -o Dpkg::Options::="--force-confnew" install docker-ce
- docker --version
- env > .env
script:
# Copy content of CI_DIR into WORKDIR
- find $CI_DIR -maxdepth 1 -type f -exec cp -t . {} +
- echo "ENV GIT_SHA ${TRAVIS_COMMIT}" >> Dockerfile
- echo "ENV MACHINE_ID ${MACHINE_ID}" >> Dockerfile
- echo "$(git log -1 ${TRAVIS_COMMIT})" >> COMMITINFO
# Build docker container
- $CI_SCRIPT_DIR/build-docker-image.sh
- docker login -u="${DOCKER_USERNAME}" -p="${DOCKER_PASSWORD}"
- docker push ${DOCKER_REPOSITORY}
- stage: build
language: c
compiler: gcc
env:
# The machine id will be passed to container
- MACHINE_ID=$(cat /var/lib/dbus/machine-id)
before_script: *update
script:
- docker run -dit --name travis_build ${DOCKER_REPOSITORY}:${TRAVIS_COMMIT} bash
- docker exec -u 0 -ti travis_build bash -c "echo ${MACHINE_ID} > /etc/machine-id"
- docker exec -ti travis_build meson build
- docker exec -ti travis_build ninja -C build
# Commit it to the new image that will be used for testing
- docker commit -m "systemd build state" -a "${AUTHOR_NAME}" travis_build ${DOCKER_REPOSITORY}:${TRAVIS_COMMIT}
- docker login -u="${DOCKER_USERNAME}" -p="${DOCKER_PASSWORD}"
- docker push ${DOCKER_REPOSITORY}:${TRAVIS_COMMIT}
- stage: test
language: c
compiler: gcc
before_script: *update
script:
- docker run --privileged --net=host -dit --name travis_test ${DOCKER_REPOSITORY}:${TRAVIS_COMMIT} bash
- docker exec -ti travis_test ninja -C build test
- docker commit -m "systemd test state" -a "${AUTHOR_NAME}" travis_test ${DOCKER_REPOSITORY}:${TRAVIS_COMMIT}
- docker login -u="${DOCKER_USERNAME}" -p="${DOCKER_PASSWORD}"
- docker push ${DOCKER_REPOSITORY}:${TRAVIS_COMMIT}
- stage: coverity scan
language: c
compiler: gcc
before_script: *update
env:
- COVERITY_SCAN_PROJECT_NAME="$TRAVIS_REPO_SLUG"
- COVERITY_SCAN_NOTIFICATION_EMAIL="${AUTHOR_EMAIL}"
- COVERITY_SCAN_BRANCH_PATTERN="$TRAVIS_BRANCH"
# Disable CCACHE for cov-build to compilation units correctly
- CCACHE_DISABLE=1
# Token for systemd/systemd Coverity Scan Analysis
# The next declaration is the encrypted COVERITY_SCAN_TOKEN, created
# via the "travis encrypt" command using the project repo's public key
- secure: "UNQLspT89GYWuVKFqW5W5RyqqnYg5RvX20IrNraOddhpdV9nhKBtozrfmhGXDGZwfHGWHt6g7YROlD/NIMvDvThVJIEYvSQiXCoo2zRrwkl2siET5MjPfRG8numiLq0KX47KGmyBJISJZCgDUdNGqqGwgf7AhDN78I3XtgqjFT1z0mGl8n0wiFpKPi7i3nECvF4Mk7xCCHqwByaq0z5G9NkVlOvP1EyCxwv3B6I5Umfch7ibp7iH44YnVXILK+yEry5dMuctYwYkDouR80ChEPQQ5fhhpO4++HJmFuSpfMTeCHpucAd2xwSUijejYeN/GNQ177GxSSk/8hRBGcuSK8T/WJ+KiuJPhZObV8mw+a6+qdQssWY4F9jya5ZKbZ/yTbxjtQ0m4AgtL28P9bEze8pLh16zFMX+hIEuoFSNmJqmtNttfbD5TKyYVZml59s9wvhlvMnlNpRSQva88OAOjXtiA41g+XtTxxpfW9mgd7HYhzSBs1efNiK7PfkANgve7KIYMAmCAqasgb1IIAyX7stOlJH06QOFXNH55PmJLkkKyL3SMQzgryMDWegU+XbS8t43r0x14WLuE7sc9JtnOr/G8hthFaMRp8xLy9aCBwyEIkEsyWa50VMoZDa3Spdb4r1CKBwcGdCbyE4rCehwEIznbfrsSovhwiUds7bbhBU="
script:
# Copy content of CI_DIR into WORKDIR
- find $CI_DIR -maxdepth 1 -type f -exec cp -t . {} +
# Build container for current user
- $CI_SCRIPT_DIR/build-docker-image.sh
# For kernel version 4.8+
- sudo sysctl vsyscall=emulate || true
# Prepare environment for Coverity tool
- |
PLATFORM=`uname`
export TOOL_BASE="/tmp/coverity-scan-analysis"
export SCAN_URL="https://scan.coverity.com"
export UPLOAD_URL="https://scan.coverity.com/builds"
export TOOL_ARCHIVE="/tmp/cov-analysis-${PLATFORM}.tgz"
# Get Coverity tool
- $CI_TOOL_DIR/get-coverity.sh
- TOOL_DIR="$(find $TOOL_BASE -type d -name 'cov-analysis*')"
# Export env variables for Coverity scan
- env | grep -E "TRAVIS|COV|TOOL|URL" > .cov-env
- |
docker run -dit --env-file .cov-env \
-v ${TOOL_BASE}:${TOOL_BASE}:ro \
--name travis_coverity_scan ${DOCKER_REPOSITORY}:${TRAVIS_COMMIT} bash
# Make sure Coverity script is executable
- docker cp scripts/coverity.sh travis_coverity_scan:/usr/local/bin
# Preconfigure with meson to prevent Coverity from capturing meson metadata
# Set compiler flag to prevent emit failure
- docker exec -it travis_coverity_scan sh -c "CFLAGS='-D_Float128=long\ double' meson cov-build -Dman=false"
# Run Coverity Analysis
- docker exec -it travis_coverity_scan coverity.sh build
- docker exec -it travis_coverity_scan coverity.sh upload
- stage: clean docker
language: python
# python:
# - "3.6" Probably broken ATM
env:
- SIZE_LIMIT="3000" # Limit in MBs
- TAG_LIMIT="3" # Number of tags to be kept at the time
before-script:
- sudo apt-get -y install python3
script:
# Get docker-remote tool and setup venv
- sudo $CI_TOOL_DIR/get-docker-remote.sh
# Activate virtual environment to be able to use docker-remote safely
- source venv/bin/activate
# Check the size and tag limit of the repo
- REPO_SIZE=$(docker-remote repository --size $DOCKER_REPOSITORY)
- TAG_COUNT=$(docker-remote tags --count $DOCKER_REPOSITORY)
- 'echo -e "\033[33;1mCurrent repository size: $REPO_SIZE in $TAG_COUNT tags \033[0m"'
- |
if [[ ${REPO_SIZE%.*} -gt $SIZE_LIMIT ]] || [[ $TAG_COUNT -gt $TAG_LIMIT ]]
then
docker-remote --login $DOCKER_USERNAME:$DOCKER_PASSWORD \
tags --assumeyes --pop-back --keep $TAG_LIMIT $DOCKER_REPOSITORY
fi
# Specify the order of stages and conditions
stages:
# Helper stage to determine whether coverity stage should be allowed
- name: initialization
- name: build docker image
if: type != cron
- name: build
if: type != cron
- name: test
if: type != cron
# These stages run separately, the resulting container will not be pushed to Docker Hub
# This stage will only run on special conditions
- name: coverity scan
if: type = cron
# Check for repository size and clean Docker repo if necessary
- name: clean Docker
if: type = cron
env:
global:
# Secure Docker Hub credentials
- secure: "TY61ufmEJyxCer8vuAlQ3mYwGRynFZXPCFTxKgIzobAHHyE1Zwx0bZDDwDd88Gdgz7EGnOJtMABfa0axfPOK9il5u7lYmmZ8Usa0HAvKavkpSRnw2b16zz88N98x3DyaIquvg2J8iQpHHoM32+BGiAS7P8BiYTO6r+E0CMPYC0Ylh7eHVSBGfWbR9m+yCo/mDIEAWyop6Jv4rTMN4qP9U7e6Kou7m/AJeiCWMaR7rlanpLFNQi3+qF/Mt5dbE7LVLNSOkmpg/FPw34g4RC5mfLAh+c8YBadqo6kFA6qV1b931or0aZUYVtobI6UwC9U1GGqzfCTjXuVMNgPBBQ6n3JMt91mFFkP0lXdGMxpBNbwFL/btBrt2a359L/wNtqv6PuSJwJ3oTe/FP++X6xjbM7LcAHZMWZiK+0BFefNOUcRzBpaEJ2nGNzcLKHn4Bl0pl4LwZ0uVocN8RBwHnDX+hyUwwQPoQTLJQB9tpwDweIzftt9KmrIHmL9v7KZXR4s/8CKpNfVQ/XSysdtsK+7EKK5AsnbMNrZLjpH7D0Lo/Xp92/eJ2UGyqI7awJbJGPV2FNwyGcojDEXIBUsVssUjb5+B4LpHP1x4UQe/m9SuPJdtRB0R7PKe/tyPD3GTyfVO9K7imQATDdnMY32nkWXmXej8YWo76yA732rTZRZtFAc="
- secure: "NAEzWn5Ru6IqDA1RSyTVhpIp2iQluumg0EOI111EN7qWWGUDNgAZi+QgvRI+OBNyuMpBpN/GX1Ys4YxUDos1F/fhm2vytoB4A/LG463FQsSVP3wnyMFJTSOI8H0jgK41xj79qiww7edbfq93MZ/XS95Ws4tUTi/0etUGvAgIHGgofFCPPdMNkOvSHLgzSnYfydzLuD9FVpCgvpbJnQ+47XHyN+sKoA+OlZ+EfIOVZt+Mk/dqYrsM7MRKEfplk1MvUiJpHvrw+xWTslCIiO03V6ws091fBMgedIFRpsySrsd1KwH8JIeOK6KFn5W7Q53auzZkKYk7ymknlJt4WVBy7Qg33njMQ53t3qMQYTRUIV4dcR60cdII7tatzgpKBcycxHQMAshOYPT6pYhSsO6JEKgiO+ZhOxvqWGwtEeH9Zq7P4ft8Q7GJhRkdi0X0WY7/6RjwinO/1LLj1LODim3mDFfAK7xS7e+nQW/JEOdWohT2+qm97j9IOZeQtPtdqZP9F8HJXgw6WjiGJIXMF3Ov9GkQh4uJyMYJ6hN7T3iRoenV86Dzgg6u5Ku131Ziwvlm+n94qlXF8Jl47wCcAS7VmyYxMft1gH+Zs+4Wq7KO0vysmnEk6rCqb87ZQSDOdTzBfK9HTyyAqmBCgS4Dp5x7/xOBMVXfq/SOb9c3Sh/JItA="
- DOCKER_REPOSITORY=$DOCKER_USERNAME/systemd
- ADMIN_EMAIL=macermak@redhat.com
- AUTHOR_NAME="$(git log -1 $TRAVIS_COMMIT --pretty=\"%aN\")"
- AUTHOR_EMAIL="$(git log -1 $TRAVIS_COMMIT --pretty=\"%aE\")"
- CI_DIR="$TRAVIS_BUILD_DIR/travis-ci"
- CI_TOOL_DIR="$CI_DIR/tools"
- CI_SCRIPT_DIR="$CI_DIR/scripts"
notifications:
email:
recipients:
- ${ADMIN_EMAIL}
- ${AUTHOR_EMAIL}
irc:
channels:
- "irc.freenode.org#systemd"

View File

@ -1,9 +1,11 @@
- 8ch indent, no tabs, except for files in man/ which are 2ch indent,
and still no tabs
- We prefer /* comments */ over // comments, please. This is not C++, after
all. (Yes we know that C99 supports both kinds of comments, but still,
please!)
- We prefer /* comments */ over // comments in code you commit, please. This
way // comments are left for developers to use for local, temporary
commenting of code for debug purposes (i.e. uncommittable stuff), making such
comments easily discernable from explanatory, documenting code comments
(i.e. committable stuff).
- Don't break code lines too eagerly. We do *not* force line breaks at
80ch, all of today's screens should be much larger than that. But

View File

@ -13,10 +13,21 @@ documented in the proper man pages.
All tools:
* `$SYSTEMD_OFFLINE=[0|1]` — if set to `1`, then `systemctl` will
refrain from talking to PID 1; this has the same effect as the historical
detection of `chroot()`. Setting this variable to `0` instead has a similar
effect as `SYSTEMD_IGNORE_CHROOT=1`; i.e. tools will try to
communicate with PID 1 even if a `chroot()` environment is detected.
You almost certainly want to set this to `1` if you maintain a package build system
or similar and are trying to use a modern container system and not plain
`chroot()`.
* `$SYSTEMD_IGNORE_CHROOT=1` — if set, don't check whether being invoked in a
chroot() environment. This is particularly relevant for systemctl, as it will
not alter its behaviour for chroot() environments if set. (Normally it
refrains from talking to PID 1 in such a case.)
`chroot()` environment. This is particularly relevant for systemctl, as it
will not alter its behaviour for `chroot()` environments if set. Normally it
refrains from talking to PID 1 in such a case; turning most operations such
as `start` into no-ops. If that's what's explicitly desired, you might
consider setting `SYSTEMD_OFFLINE=1`.
* `$SD_EVENT_PROFILE_DELAYS=1` — if set, the sd-event event loop implementation
will print latency information at runtime.

35
HACKING
View File

@ -79,3 +79,38 @@ for systemd (this example is for Fedora):
And after that, head over to your repo on github and click "Compare & pull request"
Happy hacking!
FUZZERS
systemd includes fuzzers in src/fuzz that use libFuzzer and are automatically
run by OSS-Fuzz (https://github.com/google/oss-fuzz) with sanitizers. To add a
fuzz target, create a new src/fuzz/fuzz-foo.c file with a LLVMFuzzerTestOneInput
function and add it to the list in src/fuzz/meson.build.
Whenever possible, a seed corpus and a dictionary should also be added with new
fuzz targets. The dictionary should be named src/fuzz/fuzz-foo.dict and the seed
corpus should be built and exported as $OUT/fuzz-foo_seed_corpus.zip in
scripts/oss-fuzz.sh.
The fuzzers can be built locally if you have libFuzzer installed by running
scripts/oss-fuzz.sh. You should also confirm that the fuzzer runs in the
OSS-Fuzz environment by checking out the OSS-Fuzz repo, and then running
commands like this:
python infra/helper.py build_image systemd
python infra/helper.py build_fuzzers --sanitizer memory systemd ../systemd
python infra/helper.py run_fuzzer systemd fuzz-foo
If you find a bug that impacts the security of systemd, please follow the
guidance in .github/CONTRIBUTING.md on how to report a security vulnerability.
For more details on building fuzzers and integrating with OSS-Fuzz, visit:
https://github.com/google/oss-fuzz/blob/master/docs/new_project_guide.md
https://llvm.org/docs/LibFuzzer.html
https://github.com/google/fuzzer-test-suite/blob/master/tutorial/libFuzzerTutorial.md
https://chromium.googlesource.com/chromium/src/testing/libfuzzer/+/HEAD/efficient_fuzzer.md

199
NEWS
View File

@ -1,5 +1,195 @@
systemd System and Service Manager
CHANGES WITH 237:
* Some keyboards come with a zoom see-saw or rocker which until now got
mapped to the Linux "zoomin/out" keys in hwdb. However, these
keycodes are not recognized by any major desktop. They now produce
Up/Down key events so that they can be used for scrolling.
* INCOMPATIBILITY: systemd-tmpfiles' "f" lines changed behaviour
slightly: previously, if an argument was specified for lines of this
type (i.e. the right-most column was set) this string was appended to
existing files each time systemd-tmpfiles was run. This behaviour was
different from what the documentation said, and not particularly
useful, as repeated systemd-tmpfiles invocations would not be
idempotent and grow such files without bounds. With this release
behaviour has been altered slightly, to match what the documentation
says: lines of this type only have an effect if the indicated files
don't exist yet, and only then the argument string is written to the
file.
* FUTURE INCOMPATIBILITY: In systemd v238 we intend to slightly change
systemd-tmpfiles behaviour: previously, read-only files owned by root
were always excluded from the file "aging" algorithm (i.e. the
automatic clean-up of directories like /tmp based on
atime/mtime/ctime). We intend to drop this restriction, and age files
by default even when owned by root and read-only. This behaviour was
inherited from older tools, but there have been requests to remove
it, and it's not obvious why this restriction was made in the first
place. Please speak up now, if you are aware of software that reqires
this behaviour, otherwise we'll remove the restriction in v238.
* A new environment variable $SYSTEMD_OFFLINE is now understood by
systemctl. It takes a boolean argument. If on, systemctl assumes it
operates on an "offline" OS tree, and will not attempt to talk to the
service manager. Previously, this mode was implicitly enabled if a
chroot() environment was detected, and this new environment variable
now provides explicit control.
* .path and .socket units may now be created transiently, too.
Previously only service, mount, automount and timer units were
supported as transient units. The systemd-run tool has been updated
to expose this new functionality, you may hence use it now to bind
arbitrary commands to path or socket activation on-the-fly from the
command line. Moreover, almost all properties are now exposed for the
unit types that already supported transient operation.
* The systemd-mount command gained support for a new --owner= parameter
which takes a user name, which is then resolved and included in uid=
and gid= mount options string of the file system to mount.
* A new unit condition ConditionControlGroupController= has been added
that checks whether a specific cgroup controller is available.
* Unit files, udev's .link files, and systemd-networkd's .netdev and
.network files all gained support for a new condition
ConditionKernelVersion= for checking against specific kernel
versions.
* In systemd-networkd, the [IPVLAN] section in .netdev files gained
support for configuring device flags in the Flags= setting. In the
same files, the [Tunnel] section gained support for configuring
AllowLocalRemote=. The [Route] section in .network files gained
support for configuring InitialCongestionWindow=,
InitialAdvertisedReceiveWindow= and QuickAck=. The [DHCP] section now
understands RapidCommit=.
* systemd-networkd's DHCPv6 support gained support for Prefix
Delegation.
* sd-bus gained support for a new "watch-bind" feature. When this
feature is enabled, an sd_bus connection may be set up to connect to
an AF_UNIX socket in the file system as soon as it is created. This
functionality is useful for writing early-boot services that
automatically connect to the system bus as soon as it is started,
without ugly time-based polling. systemd-networkd and
systemd-resolved have been updated to make use of this
functionality. busctl exposes this functionality in a new
--watch-bind= command line switch.
* sd-bus will now optionally synthesize a local "Connected" signal as
soon as a D-Bus connection is set up fully. This message mirrors the
already existing "Disconnected" signal which is synthesized when the
connection is terminated. This signal is generally useful but
particularly handy in combination with the "watch-bind" feature
described above. Synthesizing of this message has to be requested
explicitly through the new API call sd_bus_set_connected_signal(). In
addition a new call sd_bus_is_ready() has been added that checks
whether a connection is fully set up (i.e. between the "Connected" and
"Disconnected" signals).
* sd-bus gained two new calls sd_bus_request_name_async() and
sd_bus_release_name_async() for asynchronously registering bus
names. Similar, there is now sd_bus_add_match_async() for installing
a signal match asynchronously. All of systemd's own services have
been updated to make use of these calls. Doing these operations
asynchronously has two benefits: it reduces the risk of deadlocks in
case of cyclic dependencies between bus services, and it speeds up
service initialization since synchronization points for bus
round-trips are removed.
* sd-bus gained two new calls sd_bus_match_signal() and
sd_bus_match_signal_async(), which are similar to sd_bus_add_match()
and sd_bus_add_match_async() but instead of taking a D-Bus match
string take match fields as normal function parameters.
* sd-bus gained two new calls sd_bus_set_sender() and
sd_bus_message_set_sender() for setting the sender name of outgoing
messages (either for all outgoing messages or for just one specific
one). These calls are only useful in direct connections as on
brokered connections the broker fills in the sender anyway,
overwriting whatever the client filled in.
* sd-event gained a new pseudo-handle that may be specified on all API
calls where an "sd_event*" object is expected: SD_EVENT_DEFAULT. When
used this refers to the default event loop object of the calling
thread. Note however that this does not implicitly allocate one —
which has to be done prior by using sd_event_default(). Similarly
sd-bus gained three new pseudo-handles SD_BUS_DEFAULT,
SD_BUS_DEFAULT_USER, SD_BUS_DEFAULT_SYSTEM that may be used to refer
to the default bus of the specified type of the calling thread. Here
too this does not implicitly allocate bus connection objects, this
has to be done prior with sd_bus_default() and friends.
* sd-event gained a new call pair
sd_event_source_{get|set}_io_fd_own(). This may be used to request
automatic closure of the file descriptor an IO event source watches
when the event source is destroyed.
* systemd-networkd gained support for natively configuring WireGuard
connections.
* In previous versions systemd synthesized user records both for the
"nobody" (UID 65534) and "root" (UID 0) users in nss-systemd and
internally. In order to simplify distribution-wide renames of the
"nobody" user (like it is planned in Fedora: nfsnobody → nobody), a
new transitional flag file has been added: if
/etc/systemd/dont-synthesize-nobody exists synthesizing of the 65534
user and group record within the systemd codebase is disabled.
* systemd-notify gained a new --uid= option for selecting the source
user/UID to use for notification messages sent to the service
manager.
* journalctl gained a new --grep= option to list only entries in which
the message matches a certain pattern. By default matching is case
insensitive if the pattern is lowercase, and case sensitive
otherwise. Option --case-sensitive=yes|no can be used to override
this an specify case sensitivity or case insensitivity.
* There's now a "systemd-analyze service-watchdogs" command for printing
the current state of the service runtime watchdog, and optionally
enabling or disabling the per-service watchdogs system-wide if given a
boolean argument (i.e. the concept you configure in WatchdogSec=), for
debugging purposes. There's also a kernel command line option
systemd.service_watchdogs= for controlling the same.
* Two new "log-level" and "log-target" options for systemd-analyze were
addded that merge the now deprecated get-log-level, set-log-level and
get-log-target, set-log-target pairs. The deprecated options are still
understood for backwards compatibility. The two new options print the
current value when no arguments are given, and set them when a
level/target is given as an argument.
* sysusers.d's "u" lines now optionally accept both a UID and a GID
specification, separated by a ":" character, in order to create users
where UID and GID do not match.
Contributions from: Adam Duskett, Alan Jenkins, Alexander Kuleshov,
Alexis Deruelle, Andrew Jeddeloh, Armin Widegreen, Batuhan Osman
Taşkaya, Björn Esser, bleep_blop, Bruce A. Johnson, Chris Down, Clinton
Roy, Colin Walters, Daniel Rusek, Dimitri John Ledkov, Dmitry Rozhkov,
Evgeny Vereshchagin, Ewout van Mansom, Felipe Sateler, Franck Bui,
Frantisek Sumsal, George Gaydarov, Gianluca Boiano, Hans-Christian
Noren Egtvedt, Hans de Goede, Henrik Grindal Bakken, Jan Alexander
Steffens, Jan Klötzke, Jason A. Donenfeld, jdkbx, Jérémy Rosen,
Jerónimo Borque, John Lin, John Paul Herold, Jonathan Rudenberg, Jörg
Thalheim, Ken (Bitsko) MacLeod, Larry Bernstone, Lennart Poettering,
Lucas Werkmeister, Maciej S. Szmigiero, Marek Čermák, Martin Pitt,
Mathieu Malaterre, Matthew Thode, Matthias-Christian Ott, Max Harmathy,
Michael Biebl, Michael Vogt, Michal Koutný, Michal Sekletar, Michał
Szczepański, Mike Gilbert, Nathaniel McCallum, Nicolas Chauvet, Olaf
Hering, Olivier Schwander, Patrik Flykt, Paul Cercueil, Peter Hutterer,
Piotr Drąg, Raphael Vogelgsang, Reverend Homer, Robert Kolchmeyer,
Samuel Dionne-Riel, Sergey Ptashnick, Shawn Landden, Susant Sahani,
Sylvain Plantefève, Thomas H. P. Andersen, Thomas Huth, Tomasz
Bachorski, Vladislav Vishnyakov, Wieland Hoffmann, Yu Watanabe, Zachary
Winnerman, Zbigniew Jędrzejewski-Szmek, Дамјан Георгиевски, Дилян
Палаузов
— Brno, 2018-01-28
CHANGES WITH 236:
* The modprobe.d/ drop-in for the bonding.ko kernel module introduced
@ -2074,6 +2264,13 @@ CHANGES WITH 229:
d /run/lock/lockdev 0775 root lock -
* The settings StartLimitBurst=, StartLimitInterval=, StartLimitAction=
and RebootArgument= have been moved from the [Service] section of
unit files to [Unit], and they are now supported on all unit types,
not just service units. Of course, systemd will continue to
understand these settings also at the old location, in order to
maintain compatibility.
Contributions from: Abdo Roig-Maranges, Alban Crequy, Aleksander
Adamowski, Alexander Kuleshov, Andreas Pokorny, Andrei Borzenkov,
Andrew Wilcox, Arthur Clement, Beniamino Galvani, Casey Schaufler,
@ -5314,7 +5511,7 @@ CHANGES WITH 209:
option as supported by Debian is added. It allows indicating
which LUKS slot to use on disk, speeding up key loading.
* The sd_journald_sendv() API call has been checked and
* The sd_journal_sendv() API call has been checked and
officially declared to be async-signal-safe so that it may
be invoked from signal handlers for logging purposes.

10
README
View File

@ -69,11 +69,10 @@ REQUIREMENTS:
create additional symlinks in /dev/disk/ and /dev/tape:
CONFIG_BLK_DEV_BSG
Required for PrivateNetwork= and PrivateDevices= in service units:
Required for PrivateNetwork= in service units:
CONFIG_NET_NS
CONFIG_DEVPTS_MULTIPLE_INSTANCES
Note that systemd-localed.service and other systemd units use
PrivateNetwork and PrivateDevices so this is effectively required.
PrivateNetwork so this is effectively required.
Required for PrivateUsers= in service units:
CONFIG_USER_NS
@ -82,7 +81,7 @@ REQUIREMENTS:
CONFIG_IPV6
CONFIG_AUTOFS4_FS
CONFIG_TMPFS_XATTR
CONFIG_{TMPFS,EXT4,XFS,BTRFS_FS,...}_POSIX_ACL
CONFIG_{TMPFS,EXT4_FS,XFS,BTRFS_FS,...}_POSIX_ACL
CONFIG_SECCOMP
CONFIG_SECCOMP_FILTER (required for seccomp support)
CONFIG_CHECKPOINT_RESTORE (for the kcmp() syscall)
@ -119,6 +118,9 @@ REQUIREMENTS:
isn't. The next best thing is to make this change through a modprobe.d
drop-in. This is shipped by default, see modprobe.d/systemd.conf.
Required for systemd-nspawn:
CONFIG_DEVPTS_MULTIPLE_INSTANCES or Linux kernel >= 4.7
Note that kernel auditing is broken when used with systemd's
container code. When using systemd in conjunction with
containers, please make sure to either turn off auditing at

52
TODO
View File

@ -24,6 +24,38 @@ Janitorial Clean-ups:
Features:
* maybe rework get_user_creds() to query the user database if $SHELL is used
for root, but only then.
* there should be path_hash_ops and we should use it in tmpfiles' hashmap object to deal with identical but differently spelt paths
* be stricter with fds we receive for the fdstore: close them asynchronously
* calenderspec: add support for week numbers and day numbers within a
year. This would allow us to define "bi-weekly" triggers safely.
* add support for recursive bpf firewalling as supported by the newest kernel
* add bpf-based implementation of devices cgroup controller logic for compat with cgroupsv2 as supported by newest kernel
* introduce sd_id128_get_boot_app_specific() which is like
sd_id128_get_machine_app_specific(). After all on long-running systems both
IDs have similar properties.
* emulate properties of the root cgroup on controllers that don't support such
properties natively on cpu/io/memory, the way we already do it for
"pids". Also, add the same logic to cgtop.
* set TasksAccounting=1 on the root slice if we are running on the root cgroup,
and similar for the others, as soon as we emulate them properly. After all,
Linux keeps these system-wide stats anyway, and it costs nothing to expose
them.
* sd-bus: add vtable flag, that may be used to request client creds implicitly
and asynchronously before dispatching the operation
* implement transient socket unit.
* make use of ethtool veth peer info in machined, for automatically finding out
host-side interface pointing to the container.
@ -41,10 +73,6 @@ Features:
the runtime dir as we maintain for the fdstore: i.e. keep it around as long
as the unit is running or has a job queued.
* hook up sd-bus' creds stuff with SO_PEERGROUPS
* add async version of sd_bus_add_match and make use of that
* support projid-based quota in machinectl for containers, and then drop
implicit btrfs loopback magic in machined
@ -136,9 +164,6 @@ Features:
O_NONBLOCK on it. That way people can control if and when to block for
logging.
* tighten sd_notify() MAINPID= checks a bit: don't accept foreign PIDs (i.e.
PIDs not managed by the service manager)
* hostnamed: populate form factor data from a new hwdb database, so that old
yogas can be recognized as "convertible" too, even if they predate the DMI
"convertible" form factor
@ -165,9 +190,6 @@ Features:
"systemd-gdb" for attaching to the start-up of any system service in its
natural habitat.
* replace all canonicalize_file_name() invocations by chase_symlinks(), in
particulr those where a rootdir is relevant.
* maybe introduce gpt auto discovery for /var/tmp?
* maybe add gpt-partition-based user management: each user gets his own
@ -291,10 +313,6 @@ Features:
* docs: bring http://www.freedesktop.org/wiki/Software/systemd/MyServiceCantGetRealtime up to date
* mounting and unmounting mount points manually with different source
devices will result in collected on all devices used.
http://lists.freedesktop.org/archives/systemd-devel/2015-April/030225.html
* add a job mode that will fail if a transaction would mean stopping
running units. Use this in timedated to manage the NTP service
state.
@ -315,7 +333,7 @@ Features:
* Rework systemctl's GetAll property parsing to use the generic bus_map_all_properties() API
* Port various tools to make use of verbs.[ch], where applicable: busctl,
coredumpctl, hostnamectl, localectl, systemd-analyze, timedatectl
coredumpctl, hostnamectl, localectl, timedatectl
* hostnamectl: show root image uuid
@ -482,14 +500,12 @@ Features:
- see if we can introduce a new sd_bus_get_owner_machine_id() call to retrieve the machine ID of the machine of the bus itself
- see if we can drop more message validation on the sending side
- add API to clone sd_bus_message objects
- make AddMatch calls on dbus1 transports async?
- longer term: priority inheritance
- dbus spec updates:
- NameLost/NameAcquired obsolete
- GVariant
- path escaping
- update systemd.special(7) to mention that dbus.socket is only about the compatibility socket now
- test bloom filter generation indexes
* sd-event
- allow multiple signal handlers per signal?
@ -588,8 +604,6 @@ Features:
* exec: when deinitializating a tty device fix the perms and group, too, not only when initializing. Set access mode/gid to 0620/tty.
* service: watchdog logic: for testing purposes allow ping, but do not require pong
* journal:
- consider introducing implicit _TTY= + _PPID= + _EUID= + _EGID= + _FSUID= + _FSGID= fields
- import and delete pstore filesystem content at startup

View File

@ -2,20 +2,20 @@
Our intention is to make all settings that are available as unit file settings
also available for transient units, through the D-Bus API. At the moment, some
unit types (socket, swap, path) are not supported at all via unit types, but
most others are pretty well supported, with some notable omissions.
unit types (device, swap, target) are not supported at all via unit types,
but most others are pretty well supported, with some notable omissions.
The lists below contain all settings currently available in unit files. The
ones currently available in transient units are prefixed with `✓`.
## Generic Unit Settings
Only the most important generic unit settings are available for transient units.
Most generic unit settings are available for transient units.
```
✓ Description=
Documentation=
SourcePath=
Documentation=
SourcePath=
✓ Requires=
✓ Requisite=
✓ Wants=
@ -27,67 +27,70 @@ Only the most important generic unit settings are available for transient units.
✓ PropagatesReloadTo=
✓ ReloadPropagatedFrom=
✓ PartOf=
JoinsNamespaceOf=
RequiresMountsFor=
StopWhenUnneeded=
RefuseManualStart=
RefuseManualStop=
AllowIsolate=
JoinsNamespaceOf=
RequiresMountsFor=
StopWhenUnneeded=
RefuseManualStart=
RefuseManualStop=
AllowIsolate=
✓ DefaultDependencies=
OnFailureJobMode=
OnFailureIsolate=
IgnoreOnIsolate=
JobTimeoutSec=
JobRunningTimeoutSec=
JobTimeoutAction=
JobTimeoutRebootArgument=
StartLimitIntervalSec=SECONDS
StartLimitBurst=UNSIGNED
StartLimitAction=ACTION
✓ OnFailureJobMode=
✓ IgnoreOnIsolate=
✓ JobTimeoutSec=
✓ JobRunningTimeoutSec=
✓ JobTimeoutAction=
✓ JobTimeoutRebootArgument=
✓ StartLimitIntervalSec=SECONDS
✓ StartLimitBurst=UNSIGNED
✓ StartLimitAction=ACTION
✓ FailureAction=
✓ SuccessAction=
✓ AddRef=
RebootArgument=STRING
ConditionPathExists=
ConditionPathExistsGlob=
ConditionPathIsDirectory=
ConditionPathIsSymbolicLink=
ConditionPathIsMountPoint=
ConditionPathIsReadWrite=
ConditionDirectoryNotEmpty=
ConditionFileNotEmpty=
ConditionFileIsExecutable=
ConditionNeedsUpdate=
ConditionFirstBoot=
ConditionKernelCommandLine=
ConditionArchitecture=
ConditionVirtualization=
ConditionSecurity=
ConditionCapability=
ConditionHost=
ConditionACPower=
ConditionUser=
ConditionGroup=
AssertPathExists=
AssertPathExistsGlob=
AssertPathIsDirectory=
AssertPathIsSymbolicLink=
AssertPathIsMountPoint=
AssertPathIsReadWrite=
AssertDirectoryNotEmpty=
AssertFileNotEmpty=
AssertFileIsExecutable=
AssertNeedsUpdate=
AssertFirstBoot=
AssertKernelCommandLine=
AssertArchitecture=
AssertVirtualization=
AssertSecurity=
AssertCapability=
AssertHost=
AssertACPower=
AssertUser=
AssertGroup=
✓ RebootArgument=STRING
✓ ConditionPathExists=
✓ ConditionPathExistsGlob=
✓ ConditionPathIsDirectory=
✓ ConditionPathIsSymbolicLink=
✓ ConditionPathIsMountPoint=
✓ ConditionPathIsReadWrite=
✓ ConditionDirectoryNotEmpty=
✓ ConditionFileNotEmpty=
✓ ConditionFileIsExecutable=
✓ ConditionNeedsUpdate=
✓ ConditionFirstBoot=
✓ ConditionKernelCommandLine=
✓ ConditionKernelVersion=
✓ ConditionArchitecture=
✓ ConditionVirtualization=
✓ ConditionSecurity=
✓ ConditionCapability=
✓ ConditionHost=
✓ ConditionACPower=
✓ ConditionUser=
✓ ConditionGroup=
✓ ConditionControlGroupController=
✓ AssertPathExists=
✓ AssertPathExistsGlob=
✓ AssertPathIsDirectory=
✓ AssertPathIsSymbolicLink=
✓ AssertPathIsMountPoint=
✓ AssertPathIsReadWrite=
✓ AssertDirectoryNotEmpty=
✓ AssertFileNotEmpty=
✓ AssertFileIsExecutable=
✓ AssertNeedsUpdate=
✓ AssertFirstBoot=
✓ AssertKernelCommandLine=
✓ AssertKernelVersion=
✓ AssertArchitecture=
✓ AssertVirtualization=
✓ AssertSecurity=
✓ AssertCapability=
✓ AssertHost=
✓ AssertACPower=
✓ AssertUser=
✓ AssertGroup=
✓ AssertControlGroupController=
✓ CollectMode=
```
@ -254,63 +257,63 @@ All process killing settings are available for transient units:
## Service Unit Settings
Only the most important service settings are available for transient units.
Most service unit settings are available for transient units.
```
PIDFile=
PIDFile=
✓ ExecStartPre=
✓ ExecStart=
✓ ExecStartPost=
✓ ExecReload=
✓ ExecStop=
✓ ExecStopPost=
RestartSec=
TimeoutStartSec=
TimeoutStopSec=
TimeoutSec=
RestartSec=
TimeoutStartSec=
TimeoutStopSec=
TimeoutSec=
✓ RuntimeMaxSec=
WatchdogSec=
WatchdogSec=
✓ Type=
✓ Restart=
PermissionsStartOnly=
RootDirectoryStartOnly=
PermissionsStartOnly=
RootDirectoryStartOnly=
✓ RemainAfterExit=
GuessMainPID=
RestartPreventExitStatus=
RestartForceExitStatus=
SuccessExitStatus=
GuessMainPID=
RestartPreventExitStatus=
RestartForceExitStatus=
SuccessExitStatus=
✓ NonBlocking=
BusName=
BusName=
✓ FileDescriptorStoreMax=
✓ NotifyAccess=
Sockets=
USBFunctionDescriptors=
USBFunctionStrings=
USBFunctionDescriptors=
USBFunctionStrings=
```
## Mount Unit Settings
Only the most important mount unit settings are currently available to transient units:
All mount unit settings are available to transient units:
```
✓ What=
Where=
Where=
✓ Options=
✓ Type=
TimeoutSec=
DirectoryMode=
SloppyOptions=
LazyUnmount=
ForceUnmount=
TimeoutSec=
DirectoryMode=
SloppyOptions=
LazyUnmount=
ForceUnmount=
```
## Automount Unit Settings
Only one automount unit setting is currently available to transient units:
All automount unit setting is available to transient units:
```
Where=
DirectoryMode=
Where=
DirectoryMode=
✓ TimeoutIdleSec=
```
@ -325,7 +328,7 @@ Most timer unit settings are available to transient units.
✓ OnStartupSec=
✓ OnUnitActiveSec=
✓ OnUnitInactiveSec=
Persistent=
Persistent=
✓ WakeSystem=
✓ RemainAfterElapse=
✓ AccuracySec=
@ -341,71 +344,74 @@ of their own beyond the generic unit and resource control settings.
## Scope Unit Settings
Scope units are fully supported as transient units (in fact they only exist as
such), but they have no settings of their own beyond the generic unit and
resource control settings.
such).
```
✓ TimeoutStopSec=
```
## Socket Unit Settings
Socket units are currently not available at all as transient units:
Most socket unit settings are available to transient units.
```
ListenStream=
ListenDatagram=
ListenSequentialPacket=
ListenFIFO=
ListenNetlink=
ListenSpecial=
ListenMessageQueue=
ListenUSBFunction=
SocketProtocol=
BindIPv6Only=
Backlog=
BindToDevice=
ExecStartPre=
ExecStartPost=
ExecStopPre=
ExecStopPost=
TimeoutSec=
SocketUser=
SocketGroup=
SocketMode=
DirectoryMode=
Accept=
Writable=
MaxConnections=
MaxConnectionsPerSource=
KeepAlive=
KeepAliveTimeSec=
KeepAliveIntervalSec=
KeepAliveProbes=
DeferAcceptSec=
NoDelay=
Priority=
ReceiveBuffer=
SendBuffer=
IPTOS=
IPTTL=
Mark=
PipeSize=
FreeBind=
Transparent=
Broadcast=
PassCredentials=
PassSecurity=
TCPCongestion=
ReusePort=
MessageQueueMaxMessages=
MessageQueueMessageSize=
RemoveOnStop=
Symlinks=
FileDescriptorName=
ListenStream=
ListenDatagram=
ListenSequentialPacket=
ListenFIFO=
ListenNetlink=
ListenSpecial=
ListenMessageQueue=
ListenUSBFunction=
SocketProtocol=
BindIPv6Only=
Backlog=
BindToDevice=
ExecStartPre=
ExecStartPost=
ExecStopPre=
ExecStopPost=
TimeoutSec=
SocketUser=
SocketGroup=
SocketMode=
DirectoryMode=
Accept=
Writable=
MaxConnections=
MaxConnectionsPerSource=
KeepAlive=
KeepAliveTimeSec=
KeepAliveIntervalSec=
KeepAliveProbes=
DeferAcceptSec=
NoDelay=
Priority=
ReceiveBuffer=
SendBuffer=
IPTOS=
IPTTL=
Mark=
PipeSize=
FreeBind=
Transparent=
Broadcast=
PassCredentials=
PassSecurity=
TCPCongestion=
ReusePort=
MessageQueueMaxMessages=
MessageQueueMessageSize=
RemoveOnStop=
Symlinks=
FileDescriptorName=
Service=
TriggerLimitIntervalSec=
TriggerLimitBurst=
SmackLabel=
SmackLabelIPIn=
SmackLabelIPOut=
SELinuxContextFromNet=
TriggerLimitIntervalSec=
TriggerLimitBurst=
SmackLabel=
SmackLabelIPIn=
SmackLabelIPOut=
SELinuxContextFromNet=
```
## Swap Unit Settings
@ -421,17 +427,17 @@ Swap units are currently not available at all as transient units:
## Path Unit Settings
Path units are currently not available at all as transient units:
Most path unit settings are available to transient units.
```
PathExists=
PathExistsGlob=
PathChanged=
PathModified=
DirectoryNotEmpty=
PathExists=
PathExistsGlob=
PathChanged=
PathModified=
DirectoryNotEmpty=
Unit=
MakeDirectory=
DirectoryMode=
MakeDirectory=
DirectoryMode=
```
## Install Section

View File

@ -17,22 +17,23 @@ i.e. 0…4294967295. However, four UIDs are special on Linux:
1. 0 → The `root` super-user
2. 65534 → The `nobody` UID, also called the "overflow" UID or similar. It's
where various subsystems map unmappable users to, for example NFS or user
namespacing. (The latter can be changed with a sysctl during runtime, but
that's not supported on `systemd`. If you do change it you void your
warranty.) Because Fedora is a bit confused the `nobody` user is called
`nfsnobody` there (and they have a different `nobody` user at UID 99). I
hope this will be corrected eventually though. (Also, some distributions
call the `nobody` group `nogroup`. I wish they didn't.)
where various subsystems map unmappable users to, for example file systems
only supporting 16bit UIDs, NFS or user namespacing. (The latter can be
changed with a sysctl during runtime, but that's not supported on
`systemd`. If you do change it you void your warranty.) Because Fedora is a
bit confused the `nobody` user is called `nfsnobody` there (and they have a
different `nobody` user at UID 99). I hope this will be corrected eventually
though. (Also, some distributions call the `nobody` group `nogroup`. I wish
they didn't.)
3. 4294967295, aka "32bit `(uid_t) -1`" → This UID is not a valid user ID, as
setresuid(), chown() and friends treat -1 as a special request to not change
the UID of the process/file. This UID is hence not available for assignment
to users in the user database.
`setresuid()`, `chown()` and friends treat -1 as a special request to not
change the UID of the process/file. This UID is hence not available for
assignment to users in the user database.
4. 65535, aka "16bit `(uid_t) -1`" → Once upon a time `uid_t` used to be 16bit, and
programs compiled for that would hence assume that `(uid_t) -1` is 65535. This
UID is hence not usable either.
4. 65535, aka "16bit `(uid_t) -1`" → Before Linux kernel 2.4 `uid_t` used to be
16bit, and programs compiled for that would hence assume that `(uid_t) -1`
is 65535. This UID is hence not usable either.
The `nss-systemd` glibc NSS module will synthesize user database records for
the UIDs 0 and 65534 if the system user database doesn't list them. This means

View File

@ -346,3 +346,21 @@ Defined-By: systemd
Support: %SUPPORT_URL%
L'unité (unit) @UNIT@ s'est arrêtée et a consommé les ressources indiquées.
-- 50876a9db00f4c40bde1a2ad381c3a1b
Subject: Le système est configuré d'une manière qui pourrait causer des problèmes
Defined-By: systemd
Support: %SUPPORT_URL%
Les étiquettes suivantes sont possibles :
- "split-usr" — /usr est un système de fichiers séparé et nétait pas
monté quand systemd a été démarré
- "cgroups-missing" — le noyau a été compilé sans le support des groupes
de contrôle (cgroups) ou l'accès aux fichiers d'interface est restreint
- "var-run-bad" — /var/run n'est pas un lien symbolique vers /run
- "overflowuid-not-65534" — l'ID utilisé par le noyau pour l'utilisateur
"unknown" (avec NFS ou l'espace de noms utilisateurs) n'est pas 65534
- "overflowgid-not-65534" — l'ID utilisé par le noyau pour le groupe
"unknown" (avec NFS ou l'espace de noms utilisateurs) n'est pas 65534
Le présent système est étiqueté @TAINT@.

View File

@ -49,7 +49,7 @@ Support: %SUPPORT_URL%
@JOURNAL_NAME@ (@JOURNAL_PATH@) obecnie używa @CURRENT_USE_PRETTY@.
Maksymalnie może używać @MAX_USE_PRETTY@.
Zostawianie co najmniej @DISK_KEEP_FREE_PRETTY@ wolnego (z obecnie dostępnego @DISK_AVAILABLE_PRETTY@ miejsca na dysku).
Zostawianie co najmniej @DISK_KEEP_FREE_PRETTY@ wolnego (z obecnie dostępnego @DISK_AVAILABLE_PRETTY@ miejsca na dysku).
Wymuszone ograniczenie użycia wynosi więc @LIMIT_PRETTY@, z czego @AVAILABLE_PRETTY@ jest nadal dostępne.
Ograniczenia kontrolujące ilość miejsca na dysku używanego przez dziennik
@ -94,13 +94,13 @@ Zwykle wskazuje to na błąd programistyczny w danym programie i powinno zosta
zgłoszone jego producentowi jako błąd.
-- 5aadd8e954dc4b1a8c954d63fd9e1137
Subject: Plik core został skrócony do @SIZE_LIMIT@ B.
Subject: Plik core został skrócony do @SIZE_LIMIT@B.
Defined-By: systemd
Support: %SUPPORT_URL%
Documentation: man:coredump.conf(5)
Proces miał więcej zmapowanej pamięci niż maksimum dla przetwarzania i miejsca
skonfigurowane przez systemd-coredump(8). Tylko pierwsze @SIZE_LIMIT@ B
skonfigurowane przez systemd-coredump(8). Tylko pierwsze @SIZE_LIMIT@B
zostało zapisanych. Ten plik core może nadal być używalny, ale narzędzia typu
gdb(1) będą ostrzegały o skróceniu pliku.
@ -144,7 +144,7 @@ Subject: Zmiana czasu
Defined-By: systemd
Support: %SUPPORT_URL%
Zegar systemowy został zmieniony na @REALTIME@ μs po 1 stycznia 1970.
Zegar systemowy został zmieniony na @REALTIME@μs po 1 stycznia 1970.
-- 45f82f4aef7a4bbf942ce861d1f20990
Subject: Zmiana strefy czasowej na @TIMEZONE@
@ -163,11 +163,11 @@ uruchamiania systemu zostały uruchomione. Proszę zauważyć, że nie oznacza
to, że komputer jest bezczynny, jako że usługi mogą wciąż kończyć proces
uruchamiania.
Uruchamianie jądra zajęło @KERNEL_USEC@ μs.
Uruchamianie jądra zajęło @KERNEL_USEC@μs.
Uruchamianie początkowego dysku RAM zajęło @INITRD_USEC@ μs.
Uruchamianie początkowego dysku RAM zajęło @INITRD_USEC@μs.
Uruchamianie przestrzeni użytkownika zajęło @USERSPACE_USEC@ μs.
Uruchamianie przestrzeni użytkownika zajęło @USERSPACE_USEC@μs.
-- eed00a68ffd84e31882105fd973abdd1
Subject: Ukończono uruchamianie menedżera użytkownika
@ -179,7 +179,7 @@ Wszystkie usługi zakolejkowane do włączenia zostały uruchomione.
Proszę zauważyć, że inne usługi mogą być nadal uruchamiane
lub zostać uruchomione później.
Uruchamianie menedżera zajęło @USERSPACE_USEC@ μs.
Uruchamianie menedżera zajęło @USERSPACE_USEC@μs.
-- 6bbd95ee977941e497c48be27c254128
Subject: Przejście do stanu uśpienia @SLEEP@
@ -200,7 +200,7 @@ Subject: Zainicjowano wyłączenie systemu
Defined-By: systemd
Support: %SUPPORT_URL%
Zainicjowano wyłączenie systemd. Wyłączenie zostało rozpoczęte i wszystkie
Zainicjowano wyłączenie systemu. Wyłączenie zostało rozpoczęte i wszystkie
usługi systemowe zostały zakończone, a wszystkie systemy plików odmontowane.
-- 7d4958e842da4a758f6c1cdc7b36dcc5
@ -353,3 +353,22 @@ Defined-By: systemd
Support: %SUPPORT_URL%
Jednostka @UNIT@ została ukończona, zużywając wskazane zasoby.
-- 50876a9db00f4c40bde1a2ad381c3a1b
Subject: System jest skonfigurowany w sposób, który może powodować problemy
Defined-By: systemd
Support: %SUPPORT_URL%
Możliwe są następujące „etykiety”:
• „split-usr” — /usr jest oddzielnym systemem plików, który nie był
zamontowany w czasie uruchomienia systemd,
• „cgroups-missing” — jądro zostało skompilowane bez obsługi cgroups
lub dostęp do oczekiwanych plików interfejsu jest ograniczony,
• „var-run-bad” — /var/run nie jest dowiązaniem symbolicznym do /run,
• „overflowuid-not-65534” — identyfikator użytkownika dla „nieznanych”
użytkowników (przy wykorzystaniu przestrzeni nazw użytkowników lub NFS)
nie wynosi 65534,
• „overflowgid-not-65534” — identyfikator grupy dla „nieznanych”
użytkowników (przy wykorzystaniu przestrzeni nazw użytkowników lub NFS)
nie wynosi 65534.
Obecny system ma etykietę „@TAINT@”.

View File

@ -396,3 +396,24 @@ Defined-By: systemd
Support: %SUPPORT_URL%
Юнит @UNIT@ завершен. Приводится статистика по потребленным им ресурсам.
# Subject: The system is configured in a way that might cause problems
-- 50876a9db00f4c40bde1a2ad381c3a1b
Subject: Выявлены потенциальные проблемы в конфигурации системы
Defined-By: systemd
Support: %SUPPORT_URL%
Перечень всех возможных меток, указывающих на проблемы конфигурации:
- "split-usr" — каталог /usr расположен на отдельной файловой системе,
которая не была смонтирована на момент запуска systemd
- "cgroups-missing" — ядро собрано без поддержки контрольных групп, либо
отсутствуют права для доступа к интерфейсным файлам контрольных групп
- "var-run-bad" — /var/run не является символьной ссылкой на /run
- "overflowuid-not-65534" — используемый ядром UID для "неизвестных"
пользователей (применяется в NFS и пространствах имен пользователей)
не равен 65534
- "overflowgid-not-65534" — используемый ядром GID для "неизвестных"
пользователей (применяется в NFS и пространствах имен пользователей)
не равен 65534
В вашей системе присутствуют следующие проблемы: @TAINT@.

View File

@ -0,0 +1,8 @@
@@
@@
- _unlikely_(log_get_max_level() >= LOG_DEBUG)
+ DEBUG_LOGGING
@@
@@
- log_get_max_level() >= LOG_DEBUG
+ DEBUG_LOGGING

4
coccinelle/enotsup.cocci Normal file
View File

@ -0,0 +1,4 @@
@@
@@
- ENOTSUP
+ EOPNOTSUPP

16
coccinelle/exit-0.cocci Normal file
View File

@ -0,0 +1,16 @@
@@
@@
- exit(0);
+ exit(EXIT_SUCCESS);
@@
@@
- _exit(0);
+ _exit(EXIT_SUCCESS);
@@
@@
- exit(1);
+ exit(EXIT_FAILURE);
@@
@@
- _exit(1);
+ _exit(EXIT_FAILURE);

View File

@ -6,10 +6,55 @@ expression s;
@@
expression s;
@@
- strv_length(s) <= 0
+ strv_isempty(s)
@@
expression s;
@@
- strv_length(s) > 0
+ !strv_isempty(s)
@@
expression s;
@@
- strv_length(s) != 0
+ !strv_isempty(s)
@@
expression s;
@@
- strlen(s) == 0
+ isempty(s)
@@
expression s;
@@
- strlen(s) <= 0
+ isempty(s)
@@
expression s;
@@
- strlen(s) > 0
+ !isempty(s)
@@
expression s;
@@
- strlen(s) != 0
+ !isempty(s)
@@
expression s;
@@
- strlen_ptr(s) == 0
+ isempty(s)
@@
expression s;
@@
- strlen_ptr(s) <= 0
+ isempty(s)
@@
expression s;
@@
- strlen_ptr(s) > 0
+ !isempty(s)
@@
expression s;
@@
- strlen_ptr(s) != 0
+ !isempty(s)

30
coccinelle/memzero.cocci Normal file
View File

@ -0,0 +1,30 @@
@@
expression s;
@@
- memset(&s, 0, sizeof(s))
+ zero(s)
@@
expression s;
@@
- memset(s, 0, sizeof(*s))
+ zero(*s)
@@
expression s;
@@
- bzero(&s, sizeof(s))
+ zero(s)
@@
expression s;
@@
- bzero(s, sizeof(*s))
+ zero(*s)
@@
expression a, b;
@@
- memset(a, 0, b)
+ memzero(a, b)
@@
expression a, b;
@@
- bzero(a, b)
+ memzero(a, b)

4
coccinelle/o-ndelay.occi Normal file
View File

@ -0,0 +1,4 @@
@@
@@
- O_NDELAY
+ O_NONBLOCK

View File

@ -8,3 +8,41 @@ expression s;
@@
- s ? s : ""
+ strempty(s)
@@
expression s;
@@
- if (!s)
- s = "";
+ s = strempty(s);
@@
expression s;
@@
- s ?: "(null)"
+ strnull(s)
@@
expression s;
@@
- s ? s : "(null)"
+ strnull(s)
@@
expression s;
@@
- if (!s)
- s = "(null)";
+ s = strnull(s);
@@
expression s;
@@
- s ?: "n/a"
+ strna(s)
@@
expression s;
@@
- s ? s : "n/a"
+ strna(s)
@@
expression s;
@@
- if (!s)
- s = "n/a";
+ s = strna(s);

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
--- 20-acpi-vendor.hwdb.base 2017-12-14 15:57:48.154005635 +0100
+++ 20-acpi-vendor.hwdb 2017-12-14 15:57:48.160005689 +0100
--- 20-acpi-vendor.hwdb.base 2018-01-25 13:07:40.178983802 +0100
+++ 20-acpi-vendor.hwdb 2018-01-25 13:07:40.183983802 +0100
@@ -3,6 +3,8 @@
# Data imported from:
# http://www.uefi.org/uefi-pnp-export

File diff suppressed because it is too large Load Diff

View File

@ -48422,6 +48422,93 @@ usb:v1519*
usb:v1519p0020*
ID_MODEL_FROM_DATABASE=HSIC Device
usb:v151F*
ID_VENDOR_FROM_DATABASE=Opal Kelly Incorporated
usb:v151Fp0020*
ID_MODEL_FROM_DATABASE=XEM3001v1
usb:v151Fp0021*
ID_MODEL_FROM_DATABASE=XEM3001v2
usb:v151Fp0022*
ID_MODEL_FROM_DATABASE=XEM3010
usb:v151Fp0023*
ID_MODEL_FROM_DATABASE=XEM3005
usb:v151Fp0028*
ID_MODEL_FROM_DATABASE=XEM3050
usb:v151Fp002B*
ID_MODEL_FROM_DATABASE=XEM5010
usb:v151Fp002C*
ID_MODEL_FROM_DATABASE=XEM6001
usb:v151Fp002D*
ID_MODEL_FROM_DATABASE=XEM6010-LX45
usb:v151Fp002E*
ID_MODEL_FROM_DATABASE=XEM6010-LX150
usb:v151Fp0030*
ID_MODEL_FROM_DATABASE=XEM6006-LX16
usb:v151Fp0033*
ID_MODEL_FROM_DATABASE=XEM6002-LX9
usb:v151Fp0034*
ID_MODEL_FROM_DATABASE=XEM7001-A15
usb:v151Fp0036*
ID_MODEL_FROM_DATABASE=XEM7010-A50
usb:v151Fp0037*
ID_MODEL_FROM_DATABASE=XEM7010-A200
usb:v151Fp0120*
ID_MODEL_FROM_DATABASE=ZEM4310
usb:v151Fp0121*
ID_MODEL_FROM_DATABASE=XEM6310-LX45
usb:v151Fp0122*
ID_MODEL_FROM_DATABASE=XEM6310-LX150
usb:v151Fp0123*
ID_MODEL_FROM_DATABASE=XEM6310MT-LX45T
usb:v151Fp0125*
ID_MODEL_FROM_DATABASE=XEM7350-K70T
usb:v151Fp0126*
ID_MODEL_FROM_DATABASE=XEM7350-K160T
usb:v151Fp0127*
ID_MODEL_FROM_DATABASE=XEM7350-K410T
usb:v151Fp0128*
ID_MODEL_FROM_DATABASE=XEM6310MT-LX150T
usb:v151Fp0129*
ID_MODEL_FROM_DATABASE=ZEM5305-A2
usb:v151Fp012B*
ID_MODEL_FROM_DATABASE=XEM7360-K160T
usb:v151Fp012C*
ID_MODEL_FROM_DATABASE=XEM7360-K410T
usb:v151Fp012D*
ID_MODEL_FROM_DATABASE=ZEM5310-A4
usb:v151Fp0130*
ID_MODEL_FROM_DATABASE=XEM7310-A75
usb:v151Fp0131*
ID_MODEL_FROM_DATABASE=XEM7310-A200
usb:v1520*
ID_VENDOR_FROM_DATABASE=Bitwire Corp.
@ -55958,6 +56045,45 @@ usb:v24E1p3001*
usb:v24E1p3005*
ID_MODEL_FROM_DATABASE=Radius
usb:v2516*
ID_VENDOR_FROM_DATABASE=Cooler Master Co., Ltd.
usb:v2516p0003*
ID_MODEL_FROM_DATABASE=Storm Xornet
usb:v2516p0004*
ID_MODEL_FROM_DATABASE=Storm QuickFire Rapid Mechanical Keyboard
usb:v2516p0006*
ID_MODEL_FROM_DATABASE=Storm Recon
usb:v2516p0007*
ID_MODEL_FROM_DATABASE=Storm Sentinel Advance II
usb:v2516p0009*
ID_MODEL_FROM_DATABASE=Storm Quick Fire PRO
usb:v2516p0011*
ID_MODEL_FROM_DATABASE=Storm Quick Fire TK
usb:v2516p0017*
ID_MODEL_FROM_DATABASE=CM Storm Quick Fire Stealth
usb:v2516p0020*
ID_MODEL_FROM_DATABASE=QuickFire Rapid-i Keyboard
usb:v2516p0027*
ID_MODEL_FROM_DATABASE=CM Storm Coolermaster Novatouch TKL
usb:v2516p002D*
ID_MODEL_FROM_DATABASE=Alcor mouse
usb:v2516p0047*
ID_MODEL_FROM_DATABASE=MasterKeys Pro L
usb:v2516p9494*
ID_MODEL_FROM_DATABASE=Sirus Headset
usb:v2632*
ID_VENDOR_FROM_DATABASE=TwinMOS

View File

@ -47,6 +47,7 @@
evdev:input:b0003v05ACp021B*
# Macbook4,1
evdev:input:b0003v05ACp0229*
evdev:input:b0003v05ACp022A*
EVDEV_ABS_00=256:1471:12
EVDEV_ABS_01=256:831:12
@ -94,6 +95,11 @@ evdev:input:b0003v05ACp025B*
# ASUS
#########################################
# Asus F3Sg
evdev:name:SynPS/2 Synaptics TouchPad:dmi:*svnASUSTeKComputerInc.:pnF3Sg:*
EVDEV_ABS_00=0:6143:136
EVDEV_ABS_01=1103:5856:61
# Asus VivoBook E402SA
evdev:name:Elan Touchpad:dmi:*svnASUSTeKCOMPUTERINC.:pnE402SA*
EVDEV_ABS_00=::29

View File

@ -478,6 +478,10 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pnHP*Pavilion*dv7*Notebook*PC:
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pn*[pP][aA][vV][iI][lL][iI][oO][nN]*13*x360*:pvr*
KEYBOARD_KEY_d7=unknown
# Purism Librem 13 V2
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnPurism*:pn*Librem13v2*:pvr*
KEYBOARD_KEY_56=backslash
# Elitebook
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pn*Compaq*:pvr*
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pn*EliteBook*:pvr*
@ -557,6 +561,7 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pnHP*ProBook4*:pvr*
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP*:pnHP*ProBook*4*:pvr*
# HP ZBook
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pnHPZBook*:pvr*
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP*:pnHPZBook*:pvr*
KEYBOARD_KEY_81=f20 # Fn+F8; Microphone mute button, should be micmute
# HP Folio 1040g2
@ -763,14 +768,14 @@ evdev:input:b0003v046DpC308*
# Cordless Desktop S510
evdev:input:b0003v046DpC50C*
KEYBOARD_KEY_d4=zoomin
KEYBOARD_KEY_cc=zoomout
KEYBOARD_KEY_d4=up # zoomin
KEYBOARD_KEY_cc=down # zoomout
# Wave cordless
evdev:input:b0003v046DpC317*
KEYBOARD_KEY_9001c=scale # expo
KEYBOARD_KEY_9001f=zoomout
KEYBOARD_KEY_90020=zoomin
KEYBOARD_KEY_9001f=down # zoomout
KEYBOARD_KEY_90020=up # zoomin
KEYBOARD_KEY_9003d=prog1 # gadget
KEYBOARD_KEY_90005=camera
KEYBOARD_KEY_90018=media
@ -787,8 +792,8 @@ evdev:input:b0003v046DpC317*
# Wave cordless
evdev:input:b0003v046DpC517*
KEYBOARD_KEY_c101f=zoomout
KEYBOARD_KEY_c1020=zoomin
KEYBOARD_KEY_c101f=down # zoomout
KEYBOARD_KEY_c1020=up # zoomin
KEYBOARD_KEY_c1005=camera
KEYBOARD_KEY_c0183=media
KEYBOARD_KEY_c1041=wordprocessor
@ -813,8 +818,8 @@ evdev:input:b0003v046DpC52[9B]*
KEYBOARD_KEY_0c018a=mail
KEYBOARD_KEY_0c0221=search
KEYBOARD_KEY_0c00b8=ejectcd
KEYBOARD_KEY_0c022d=zoomin
KEYBOARD_KEY_0c022e=zoomout
KEYBOARD_KEY_0c022d=up # zoomin
KEYBOARD_KEY_0c022e=down # zoomout
# Logitech Presenter R400
evdev:input:b0003v046DpC52D*
@ -889,8 +894,8 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnMEDIONNB:pnA555*:pvr*
# Microsoft Natural Ergonomic Keyboard 4000
evdev:input:b0003v045Ep00DB*
KEYBOARD_KEY_c022d=zoomin
KEYBOARD_KEY_c022e=zoomout
KEYBOARD_KEY_c022d=up # zoomin
KEYBOARD_KEY_c022e=down # zoomout
###########################################################
# Micro Star
@ -925,6 +930,7 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnMICRO-STAR*:pn*U-100*:pvr*
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnMICRO-STAR*:pn*U100*:pvr*
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnMICRO-STAR*:pn*N033:*
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnMicro-Star*:pn*VR420*:pvr*
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnMicro-Star*:pn*PR200*:pvr*
KEYBOARD_KEY_f7=reserved
KEYBOARD_KEY_f8=reserved
@ -1182,8 +1188,8 @@ evdev:name:Sony Vaio Keys:dmi:bvn*:bvr*:bd*:svnSony*:pnVGN-Z21*:pvr*
KEYBOARD_KEY_00=brightnessdown # Fn+F5
KEYBOARD_KEY_10=brightnessup # Fn+F6
KEYBOARD_KEY_11=switchvideomode # Fn+F7
KEYBOARD_KEY_12=zoomout
KEYBOARD_KEY_14=zoomin
KEYBOARD_KEY_12=down # zoomout
KEYBOARD_KEY_14=up # zoomin
KEYBOARD_KEY_15=suspend # Fn+F12
KEYBOARD_KEY_17=prog1
KEYBOARD_KEY_20=media
@ -1193,8 +1199,8 @@ evdev:name:Sony Vaio Keys:dmi:bvn*:bvr*:bd*:svnSony*:pnVGN-FW250*:pvr*
evdev:name:Sony Vaio Keys:dmi:bvn*:bvr*:bd*:svnSony*:pnVPC*:pvr*
KEYBOARD_KEY_05=f21 # Fn+F1 -> KEY_F21 (The actual touchpad toggle)
KEYBOARD_KEY_0d=zoomout # Fn+F9
KEYBOARD_KEY_0e=zoomin # Fn+F10
KEYBOARD_KEY_0d=down # Fn+F9 zoomout
KEYBOARD_KEY_0e=up # Fn+F10 zoomin
###########################################################
# Toshiba
@ -1283,6 +1289,68 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnZepto:pnZnote*6615WD:*
KEYBOARD_KEY_ae=! # volume down
KEYBOARD_KEY_b0=! # volume up
##########################################
# Ideazon
##########################################
# Ideazon Zboard Merc
evdev:input:b0003v1038p0210*
KEYBOARD_KEY_c0227=q
KEYBOARD_KEY_c0223=w
KEYBOARD_KEY_c0221=e
KEYBOARD_KEY_c0224=a
KEYBOARD_KEY_c0226=s
KEYBOARD_KEY_c0225=d
KEYBOARD_KEY_c0192=tab
KEYBOARD_KEY_c018a=leftalt
KEYBOARD_KEY_c022a=r
KEYBOARD_KEY_c0183=f10
KEYBOARD_KEY_70059=1
KEYBOARD_KEY_7005a=2
KEYBOARD_KEY_7005b=3
KEYBOARD_KEY_7005c=4
KEYBOARD_KEY_7005d=5
KEYBOARD_KEY_7005e=6
KEYBOARD_KEY_7005f=7
KEYBOARD_KEY_70060=8
KEYBOARD_KEY_70061=9
KEYBOARD_KEY_70062=0
KEYBOARD_KEY_70057=equal
KEYBOARD_KEY_70077=capslock
KEYBOARD_KEY_70054=leftshift
KEYBOARD_KEY_70063=leftctrl
KEYBOARD_KEY_7006b=t
KEYBOARD_KEY_70067=f
KEYBOARD_KEY_7006c=g
KEYBOARD_KEY_7006d=v
KEYBOARD_KEY_7006e=b
KEYBOARD_KEY_70074=p
KEYBOARD_KEY_7006f=c
KEYBOARD_KEY_70055=space
KEYBOARD_KEY_70076=f9
KEYBOARD_KEY_70046=f11
KEYBOARD_KEY_70079=f6
# Ideazon Zboard Fang
evdev:input:b0003v1038p0310*
KEYBOARD_KEY_70059=1
KEYBOARD_KEY_7005b=3
KEYBOARD_KEY_70040=equal
KEYBOARD_KEY_70042=l
KEYBOARD_KEY_7002b=tab
KEYBOARD_KEY_7005e=capslock
KEYBOARD_KEY_700e2=leftalt
KEYBOARD_KEY_700e1=leftshift
KEYBOARD_KEY_700e0=leftctrl
KEYBOARD_KEY_70038=z
KEYBOARD_KEY_7003e=t
KEYBOARD_KEY_70015=r
KEYBOARD_KEY_70010=g
KEYBOARD_KEY_70050=n
KEYBOARD_KEY_70030=f9
KEYBOARD_KEY_7002f=f11
KEYBOARD_KEY_70046=f6
###########################################################
# Other
###########################################################

View File

@ -66,12 +66,21 @@ sensor:modalias:acpi:INVN6500*:dmi:*svnASUSTeK*:*pnT100CHI*
sensor:modalias:acpi:INVN6500*:dmi:*svnASUSTeK*:*pnT100TA*
ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1
sensor:modalias:acpi:INVN6500*:dmi:*svnASUSTeK*:pnT200TA*
ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1
sensor:modalias:acpi:INVN6500*:dmi:*svn*ASUSTeK*:*pn*TP300LA*
ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1
sensor:modalias:acpi:INVN6500*:dmi:*svn*ASUSTeK*:*pn*TP300LD*
ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1
sensor:modalias:acpi:SMO8500*:dmi:*svn*ASUSTeK*:*pn*TP300LJ*
ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
sensor:modalias:acpi:SMO8500*:dmi:*svn*ASUSTeK*:*pn*TP500LB*
ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1
#########################################
# Axxo
#########################################
@ -82,7 +91,11 @@ sensor:modalias:acpi:SMO8500*:dmi:*:svnStandard:pnWCBT1011:*
# Chuwi
#########################################
# Chuwi Vi8 Plus
# Chuwi Vi8 (CWI506)
sensor:modalias:acpi:BMA250E*:dmi:bvnINSYDECorp.:bvrCHUWI.D86JLBNR*:svnInsyde:pni86:*
ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
# Chuwi Vi8 Plus (CWI519)
sensor:modalias:acpi:BOSC0200*:dmi:*:svnHampoo:pnD2D3_Vi8A1:*
ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
@ -90,6 +103,10 @@ sensor:modalias:acpi:BOSC0200*:dmi:*:svnHampoo:pnD2D3_Vi8A1:*
sensor:modalias:acpi:BOSC0200*:dmi:*:svnHampoo:pnX1D3_C806N:*
ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
# Chuwi Hi10 Pro
sensor:modalias:acpi:BOSC0200*:dmi:*:svn*CHUWIINNOVATIONANDTECHNOLOGY*:pnHi10protablet:*
ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
# Chuwi Hi13
sensor:modalias:acpi:KIOX000A*:dmi:svnChuwi*:pnHi13
ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1
@ -99,7 +116,7 @@ sensor:modalias:acpi:KIOX000A*:dmi:svnChuwi*:pnHi13
# match the entire dmi-alias, assuming that the use of a BOSC0200 +
# bios-version + bios-date combo is unique
sensor:modalias:acpi:BOSC0200*:dmi:bvnAmericanMegatrendsInc.:bvr5.11:bd05/07/2016:svnDefaultstring:pnDefaultstring:pvrDefaultstring:rvnHampoo:rnCherryTrailCR:rvrDefaultstring:cvnDefaultstring:ct3:cvrDefaultstring:
ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1
#########################################
# Cube
@ -154,6 +171,10 @@ sensor:modalias:acpi:KIOX000A*:dmi:bvnAmericanMegatrendsInc.:*:svnTobefilledbyO.
sensor:modalias:acpi:BOSC0200*:dmi:bvnINSYDECorp.:bvrjumperx.T87.KFBNEE*
ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
# EZpad 6 Pro
sensor:modalias:acpi:BOSC0200*:dmi:*:svnJumper:pnEZpad:*:rvr.A006:*
ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, -1, 0; 0, 0, 1
#########################################
# Lamina
#########################################
@ -172,6 +193,14 @@ sensor:modalias:acpi:NCPE0388*:dmi:*:rnLenovoYOGA510-14IKB:*
sensor:modalias:acpi:BOSC0200:BOSC0200:dmi:*ThinkPadYoga11e3rdGen*
ACCEL_MOUNT_MATRIX=0, 1, 0; -1, 0, 0; 0, 0, 1
# Miix3-1030
sensor:modalias:acpi:BMA250E*:dmi:bvnLENOVO:*:pvrLenovoMIIX3-1030:*
ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
# IdeaPad Miix 320
sensor:modalias:acpi:*BOSC0200*:dmi:*:svnLENOVO*:pn80XF:*
ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
#########################################
# Peaq
#########################################
@ -200,10 +229,20 @@ sensor:modalias:acpi:BMA250E*:dmi:*:svnShenzhenPLOYER*:pnMOMO7W:*
sensor:modalias:acpi:BMA250E*:dmi:bvnAmericanMegatrendsInc.:bvr3BAIR1013:bd08/22/2014: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
#########################################
# Teclast
#########################################
sensor:modalias:acpi:KIOX000A*:dmi:*:svnTECLAST:pnX80Pro:*
ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1
sensor:modalias:acpi:KIOX000A*:dmi:*:svnTECLAST:pnX98PlusII:*
ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1
#########################################
# Trekstor
#########################################
sensor:modalias:acpi:BMA250*:dmi:*:bvrTREK.G.WI71C.JGBMRBA*:*:svnInsyde:pnST70416-6:*
sensor:modalias:acpi:BMA250*:dmi:*:bvrTREK.G.WI71C.JGBMRBA*:*:svnTrekStor:pnSurfTabwintron7.0ST70416-6:*
ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1
#########################################

View File

@ -548,6 +548,10 @@ mouse:usb:v045ep07b1:name:Microsoft Microsoft® Nano Transceiver v1.0:
mouse:bluetooth:v045ep0702:name:Microsoft Wireless Laser Mouse 8000:
MOUSE_DPI=1000@1000
# Microsoft Sculpt Comfort Mouse
mouse:bluetooth:v045ep07a2:name:Microsoft Sculpt Comfort Mouse:
MOUSE_DPI=1000@2000
# Microsoft Arc Touch Mouse SE:
mouse:bluetooth:v045ep07f3:name:Arc Touch Mouse SE:
MOUSE_DPI=1000@2000

View File

@ -108,6 +108,9 @@ evdev:name:TPPS/2 IBM TrackPoint:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPadX220
evdev:name:TPPS/2 IBM TrackPoint:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPadX230:*
# Lenovo Thinkpad X230 tablet
evdev:name:TPPS/2 IBM TrackPoint:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPadX230Tablet:*
# Lenovo ThinkPad *30 series
evdev:name:TPPS/2 IBM TrackPoint:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPad??30:*
evdev:name:TPPS/2 IBM TrackPoint:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPad??30?:*
# Lenovo Thinkpad *40 series
evdev:name:TPPS/2 IBM TrackPoint:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPad??40:*
evdev:name:TPPS/2 IBM TrackPoint:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPad??40?:*

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +1,8 @@
#
# List of PCI ID's
#
# Version: 2017.12.06
# Date: 2017-12-06 03:15:02
# Version: 2018.01.14
# Date: 2018-01-14 03:15:02
#
# Maintained by Albert Pool, Martin Mares, and other volunteers from
# the PCI ID Project at http://pci-ids.ucw.cz/.
@ -42,6 +42,7 @@
# nee nCipher
0100 Thales e-Security
0123 General Dynamics
0128 Dell (wrong ID)
# 018a is not LevelOne but there is a board misprogrammed
018a LevelOne
0106 FPC-0106TX misprogrammed [RTL81xx]
@ -584,6 +585,7 @@
0096 SAS3004 PCI-Express Fusion-MPT SAS-3
0097 SAS3008 PCI-Express Fusion-MPT SAS-3
1000 3090 SAS9311-8i
1000 30a0 SAS9300-8e
1000 30e0 SAS9300-8i
1000 3130 SAS 9300-16i
1028 1f45 HBA330 Adapter
@ -749,7 +751,8 @@
131b Kaveri [Radeon R4 Graphics]
131c Kaveri [Radeon R7 Graphics]
131d Kaveri [Radeon R6 Graphics]
15dd Radeon Vega 8 Mobile
15dd Vega [Radeon Vega 8 Mobile]
15ff Vega [Radeon Vega 28 Mobile]
1714 BeaverCreek HDMI Audio [Radeon HD 6500D and 6400G-6600G series]
103c 168b ProBook 4535s
3150 RV380/M24 [Mobility Radeon X600]
@ -2267,6 +2270,7 @@
67b9 Vesuvius [Radeon R9 295X2]
67be Hawaii LE
67c0 Ellesmere [Radeon Pro WX 7100]
67c2 Ellesmere [Radeon Pro V7300X / V7350x2]
67c4 Ellesmere [Radeon Pro WX 7100]
1002 0336 Radeon Pro Duo
1002 1336 Radeon Pro Duo
@ -2274,6 +2278,7 @@
67ca Ellesmere [Polaris10]
67cc Ellesmere [Polaris10]
67cf Ellesmere [Polaris10]
67d0 Ellesmere [Radeon Pro V7300X / V7350x2]
67df Ellesmere [Radeon RX 470/480/570/580]
1002 0b37 Radeon RX 480
1043 04a8 Radeon RX 480
@ -2293,13 +2298,13 @@
1787 a470 Radeon RX 470
1787 a480 Radeon RX 480
1da2 e353 Sapphire Radeon RX 580 Pulse 8GB
1da2 e366 Radeon RX 570
1da2 e366 Nitro+ Radeon RX 580 4GB
67e0 Baffin [Polaris11]
67e1 Baffin [Polaris11]
67e3 Baffin [Radeon Pro WX 4100]
67e8 Baffin [Polaris11]
67e9 Baffin [Polaris11]
67eb Baffin [Polaris11]
67eb Baffin [Radeon Pro V5300X]
67ef Baffin [Radeon RX 460/560D / Pro 450/455/460/560]
106b 0160 Radeon Pro 460
106b 0166 Radeon Pro 455
@ -2343,6 +2348,7 @@
1002 0b05 Radeon HD 8870 OEM
174b 8b04 Radeon HD 8860
6819 Pitcairn PRO [Radeon HD 7850 / R7 265 / R9 270 1024SP]
1043 042c Radeon HD 7850
1682 7269 Radeon R9 270 1024SP
1682 9278 Radeon R9 270 1024SP
174b a008 Radeon R9 270 1024SP
@ -2505,8 +2511,14 @@
144d c0c7 Radeon HD 7550M
6842 Thames LE [Radeon HD 7000M Series]
6843 Thames [Radeon HD 7670M]
6860 Vega 10 [Radeon Instinct MI25]
6861 Vega 10 XT [Radeon PRO WX 9100]
6862 Vega 10 XT [Radeon PRO SSG]
6863 Vega 10 XTX [Radeon Vega Frontier Edition]
6864 Vega
6867 Vega
6868 Vega
686c Vega 10 [Radeon Instinct MI25 MxGPU]
687f Vega 10 XT [Radeon RX Vega 64]
6888 Cypress XT [FirePro V8800]
6889 Cypress PRO [FirePro V7800]
@ -3015,11 +3027,12 @@
148c 9380 Radeon R9 380
# Make naming scheme consistent
174b e308 Radeon R9 380 Nitro 4G D5
694c Vega [Radeon RX Vega M]
6980 Polaris12
6981 Polaris12
6985 Lexa XT [Radeon PRO WX 3100]
6986 Polaris12
6987 Polaris12
6987 Lexa [Radeon E9171 MCM]
6995 Lexa XT [Radeon PRO WX 2100]
699f Lexa PRO [Radeon RX 550]
148c 2380 Lexa XL [Radeon RX 550]
@ -4041,6 +4054,11 @@
1423 Family 15h (Models 30h-3fh) I/O Memory Management Unit
1424 Family 15h (Models 30h-3fh) Processor Root Port
1426 Family 15h (Models 30h-3fh) Processor Root Port
142e Liverpool Processor Function 0
142f Liverpool Processor Function 1
1430 Liverpool Processor Function 2
1431 Liverpool Processor Function 3
1432 Liverpool Processor Function 4
1436 Liverpool Processor Root Complex
1437 Liverpool I/O Memory Management Unit
1438 Liverpool Processor Root Port
@ -5439,10 +5457,11 @@
1028 014e PCI7410,7510,7610 OHCI-Lynx Controller (Latitude D800)
802e PCI7x20 1394a-2000 OHCI Two-Port PHY/Link-Layer Controller
1028 018d Inspiron 700m/710m
8031 PCIxx21/x515 Cardbus Controller
8031 PCIxx21/PCIxx11/PCIx515 PC Card Controller
1025 0064 Extensa 3000 series laptop
1025 0080 Aspire 5024WLMi
103c 0934 Compaq nw8240/nx8220
103c 0944 Compaq nc6220 Notebook PC
103c 099c NX6110/NC6120
103c 308b MX6125
8032 OHCI Compliant IEEE 1394 Host Controller
@ -5451,19 +5470,22 @@
103c 0934 Compaq nw8240/nx8220
103c 099c NX6110/NC6120
103c 308b MX6125
8033 PCIxx21 Integrated FlashMedia Controller
8033 PCIxx21/PCIxx11 Flash Media Controller
1025 0064 Extensa 3000 series laptop
1025 0080 Aspire 5024WLMi
103c 0934 Compaq nw8240/nx8220
103c 0944 Compaq nc6220 Notebook PC
103c 099c NX6110/NC6120
103c 308b MX6125
8034 PCI6411/6421/6611/6621/7411/7421/7611/7621 Secure Digital Controller
8034 PCIxx21/PCIxx11 SD Host Controller
1025 0080 Aspire 5024WLMi
103c 0934 Compaq nw8240/nx8220
103c 0944 Compaq nc6220 Notebook PC
103c 099c NX6110/NC6120
103c 308b MX6125
8035 PCI6411/6421/6611/6621/7411/7421/7611/7621 Smart Card Controller
8035 PCIxx21/PCIxx11 Smart Card Controller
103c 0934 Compaq nw8240/nx8220
103c 0944 Compaq nc6220 Notebook PC
103c 099c NX6110/NC6120
8036 PCI6515 Cardbus Controller
8038 PCI6515 SmartCard Controller
@ -5477,7 +5499,7 @@
103c 30a1 NC2400
103c 30a3 Compaq nw8440
104d 902d VAIO VGN-NR120E
803b 5-in-1 Multimedia Card Reader (SD/MMC/MS/MS PRO/xD)
803b PCIxx12 Flash Media Controller
103c 309f nx9420
103c 30a3 Compaq nw8440
104d 8212 VAIO VGN-N21E
@ -5650,6 +5672,22 @@
90a3 Aeolia Memory (DDR3/SPM)
90a4 Aeolia USB 3.0 xHCI Host Controller
90bc SxS Pro+ memory card
90c8 Belize ACPI
90c9 Belize Ethernet Controller
90ca Belize SATA AHCI Controller
90cb Belize SD/MMC Host Controller
90cc Belize PCI Express Glue and Miscellaneous Devices
90cd Belize DMA Controller
90ce Belize Memory (DDR3/SPM)
90cf Belize USB 3.0 xHCI Host Controller
90d7 Baikal ACPI
90d8 Baikal Ethernet Controller
90d9 Baikal SATA AHCI Controller
90da Baikal SD/MMC Host Controller
90db Baikal PCI Express Glue and Miscellaneous Devices
90dc Baikal DMA Controller
90dd Baikal Memory (DDR3/SPM)
90de Baikal USB 3.0 xHCI Host Controller
104e Oak Technology, Inc
0017 OTI-64017
0107 OTI-107 [Spitfire]
@ -6230,6 +6268,10 @@
8070 FastLinQ QL41000 Series 10/25/40/50GbE Controller
1077 0001 10GE 2P QL41162HxRJ-DE Adapter
1077 0002 10GE 2P QL41112HxCU-DE Adapter
1077 0005 QLogic 4x10GE QL41164HMRJ CNA
1077 0006 QLogic 4x10GE QL41164HMCU CNA
1077 0007 QLogic 2x1GE+2x10GE QL41264HMCU CNA
1077 0009 QLogic 2x1GE+2x10GE QL41162HMRJ CNA
1077 000b 25GE 2P QL41262HxCU-DE Adapter
1077 0011 FastLinQ QL41212H 25GbE Adapter
1077 0012 FastLinQ QL41112H 10GbE Adapter
@ -6240,19 +6282,34 @@
8080 FastLinQ QL41000 Series 10/25/40/50GbE Controller (FCoE)
1077 0001 10GE 2P QL41162HxRJ-DE Adapter
1077 0002 10GE 2P QL41112HxCU-DE Adapter
1077 0005 QLogic 4x10GE QL41164HMRJ CNA
1077 0006 QLogic 4x10GE QL41164HMCU CNA
1077 0007 QLogic 2x1GE+2x10GE QL41264HMCU CNA
1077 0009 QLogic 2x1GE+2x10GE QL41162HMRJ CNA
1077 000b 25GE 2P QL41262HxCU-DE Adapter
1077 000c QLogic 2x25GE QL41262HMCU CNA
1077 000d FastLinQ QL41262H 25GbE FCoE Adapter
1077 000e FastLinQ QL41162H 10GbE FCoE Adapter
8084 FastLinQ QL41000 Series 10/25/40/50GbE Controller (iSCSI)
1077 0001 10GE 2P QL41162HxRJ-DE Adapter
1077 0002 10GE 2P QL41112HxCU-DE Adapter
1077 0005 QLogic 4x10GE QL41164HMRJ CNA
1077 0006 QLogic 4x10GE QL41164HMCU CNA
1077 0007 QLogic 2x25GE QL41262HMCU CNA
1077 0009 QLogic 2x1GE+2x10GE QL41162HMRJ CNA
1077 000b 25GE 2P QL41262HxCU-DE Adapter
1077 000c QLogic 2x25GE QL41262HMCU CNA
1077 000d FastLinQ QL41262H 25GbE iSCSI Adapter
1077 000e FastLinQ QL41162H 10GbE iSCSI Adapter
8090 FastLinQ QL41000 Series Gigabit Ethernet Controller (SR-IOV VF)
1077 0001 25GE 2P QL41262HxCU-DE Adapter
1077 0002 10GE 2P QL41112HxCU-DE Adapter
1077 0005 QLogic 4x10GE QL41164HMRJ CNA
1077 0006 QLogic 4x10GE QL41164HMCU CNA
1077 0007 QLogic 2x1GE+2x10GE QL41264HMCU CNA
1077 0009 QLogic 2x1GE+2x10GE QL41162HMRJ CNA
1077 000b 25GE 2P QL41262HxCU-DE Adapter
1077 000c QLogic 2x25GE QL41262HMCU CNA
1077 000d FastLinQ QL41262H 25GbE FCoE Adapter (SR-IOV VF)
1077 000e FastLinQ QL41162H 10GbE iSCSI Adapter (SR-IOV VF)
1077 0011 FastLinQ QL41212H 25GbE Adapter (SR-IOV VF)
@ -10834,11 +10891,12 @@
13d8 GM204M [GeForce GTX 970M]
13d9 GM204M [GeForce GTX 965M]
13da GM204M [GeForce GTX 980 Mobile]
13e7 GM204 [GeForce GTX 980 Engineering Sample]
13e7 GM204GL [GeForce GTX 980 Engineering Sample]
13f0 GM204GL [Quadro M5000]
13f1 GM204GL [Quadro M4000]
13f2 GM204GL [Tesla M60]
13f3 GM204GL [Tesla M6]
10de 1184 GRID M6-8Q
13f8 GM204GLM [Quadro M5000M / M5000 SE]
13f9 GM204GLM [Quadro M4000M]
13fa GM204GLM [Quadro M3000M]
@ -10902,6 +10960,7 @@
1bb7 GP104GLM [Quadro P4000 Mobile]
1462 11e9 Quadro P4000 Max-Q
1bb8 GP104GLM [Quadro P3000 Mobile]
1bc7 GP104 [P104-101]
1be0 GP104M [GeForce GTX 1080 Mobile]
1028 07c0 GeForce GTX 1080 Max-Q
1458 355b GeForce GTX 1080 Max-Q
@ -10910,6 +10969,8 @@
1c01 GP106
1c02 GP106 [GeForce GTX 1060 3GB]
1c03 GP106 [GeForce GTX 1060 6GB]
1c04 GP106 [GeForce GTX 1060 5GB]
1c06 GP106 [GeForce GTX 1060 6GB Rev. 2]
1c07 GP106 [P106-100]
1c09 GP106 [P106-090]
1c20 GP106M [GeForce GTX 1060 Mobile]
@ -10937,7 +10998,8 @@
1cb3 GP107GL [Quadro P400]
1d01 GP108 [GeForce GT 1030]
1d10 GP108M [GeForce MX150]
1d81 GV100
1d33 GP108GL [Quadro P500]
1d81 GV100 [TITAN V]
1db1 GV100 [Tesla V100 SXM2]
1db4 GV100 [Tesla V100 PCIe]
10df Emulex Corporation
@ -10965,6 +11027,7 @@
e180 Proteus-X: LightPulse IOV Fibre Channel Host Adapter
e200 LightPulse LPe16002
1014 03f1 PCIe2 16 Gb 2-port Fibre Channel Adapter (FC EL5B; CCIN 577F)
10df e282 Flex System FC5054 4-port 16Gb FC Adapter
e208 LightPulse 16Gb Fibre Channel Host Adapter (Lancer-VF)
e220 OneConnect NIC (Lancer)
17aa 1054 ThinkServer LPm16002B-M6-L AnyFabric
@ -11139,13 +11202,14 @@
8129 RTL-8129
10ec 8129 RT8129 Fast Ethernet Adapter
11ec 8129 RTL8111/8168 PCIe Gigabit Ethernet (misconfigured)
8136 RTL8101/2/6E PCI Express Fast Ethernet controller
8136 RTL810xE PCI Express Fast Ethernet controller
103c 1985 RTL8106E on Pavilion 17-e163sg Notebook PC
103c 2a8c Compaq 500B Microtower
103c 2ab1 Pavilion p6774
103c 30cc Pavilion dv6700
1179 ff64 RTL8102E PCI-E Fast Ethernet NIC
17c0 1053 RTL8101e Medion WIM 2210 Notebook PC [MD96850]
8137 RTL8104E PCIe Fast Ethernet Controller
8138 RT8139 (B/C) Cardbus Fast Ethernet Adapter
10ec 8138 RT8139 (B/C) Fast Ethernet Adapter
8139 RTL-8100/8101L/8139 PCI Fast Ethernet Adapter
@ -14066,20 +14130,49 @@
0043 RocketPort Infinity 16port, External Interface
0044 RocketPort Infinity Quad, 4port, DB
0045 RocketPort Infinity Octa, 8port, DB
0046 RocketPort INFINITY 4-port w/external I/F
0047 RocketPort Infinity 4port, RJ45
0048 RocketPort INFINITY 4J (4-port) w/RJ45 connectors
004a RocketPort INFINITY Plus 4-port
004b RocketPort INFINITY Plus 8-port
004c RocketModem INFINITY III 8-port
004d RocketModem INFINITY III 4-port
004e RocketPort INFINITY Plus 2-port
004f RocketPort Infinity 2port, SMPTE
0050 RocketPort INFINITY Plus 4-port RJ45
0051 RocketPort INFINITY Plus 8-port RJ11
0052 RocketPort Infinity Octa, 8port, SMPTE
0801 RocketPort UPCI 32 port w/external I/F
0802 RocketPort UPCI 8 port w/external I/F
0803 RocketPort UPCI 16 port w/external I/F
0805 RocketPort UPCI 8 port w/octa cable
080c RocketModem III 8 port
080d RocketModem III 4 port
0810 RocketPort UPCI Plus 4 port RS232
0811 RocketPort UPCI Plus 8 port RS232
0812 RocketPort UPCI Plus 8 port RS422
0060 RocketPort EXPRESS 8-port w/Octa Cable
0061 RocketPort EXPRESS 32-port w/external I/F
0062 RocketPort EXPRESS 8-Port w/external I/F
0063 RocketPort EXPRESS 16-port w/external I/F
0064 RocketPort EXPRESS 4-port w/Quad Cable
0065 RocketPort EXPRESS 8-port w/Octa Cable
0066 RocketPort EXPRESS 4-port w/external I/F
0067 RocketPort EXPRESS 4J (4-port) w/RJ45 connectors
0068 RocketPort EXPRESS 8J (8-port) w/RJ11 connectors
006f RocketPort EXPRESS SMPTE 2-port
0072 RocketPort EXPRESS SMPTE 8-port w/external I/F
0801 RocketPort uPCI 32-port w/external I/F
0802 RocketPort uPCI 8-port w/external I/F
0803 RocketPort uPCI 16-port w/external I/F
0805 RocketPort uPCI 8-port w/Octa Cable
080b RocketPort Plus uPCI 8-port w/Octa Cable
080c RocketModem III 8-port
080d RcoketModem III 4-port
080e RocketPort uPCI 2-port RS232 w/DB9 connectors
080f RocketPort uPCI SMPTE 2-port
0810 RocketPort Plus uPCI 4J (4-port) w/RJ45 connectors
0811 RocketPort Plus uPCI 8J (8-port) w/RJ11 connectors
0812 RocketPort Plus uPCI 422 8-port
0813 RocketModem IV uPCI 8-port
0814 RocketModem IV uPCI 4-port
0903 RocketPort Compact PCI 16 port w/external I/F
8015 RocketPort 4-port UART 16954
# 16954 UART
8015 RocketPort 550 4-port
8805 RocketPort uPCI 4-port w/Quad Cable
880b RocketPort Plus uPCI 4-port w/Quad Cable
8812 RocketPort Plus uPCI 4-port RS422 w/Quad Cable
11ff Scion Corporation
0003 AG-5
1200 CSS Corporation
@ -15642,6 +15735,7 @@
0252 XR17V252 Dual UART PCI controller
0254 XR17V254 Quad UART PCI controller
0258 XR17V258 Octal UART PCI controller
0352 XR17V3521 Dual PCIe UART
13a9 Siemens Medical Systems, Ultrasound Group
13aa Broadband Networks Inc
13ab Arcom Control Systems Ltd
@ -16302,6 +16396,7 @@
50a9 T580-50A9 Unified Wire Ethernet Controller
50aa T580-50AA Unified Wire Ethernet Controller
50ab T520-50AB Unified Wire Ethernet Controller
50ac T540-50AC Unified Wire Ethernet Controller
5401 T520-CR Unified Wire Ethernet Controller
5402 T522-CR Unified Wire Ethernet Controller
5403 T540-CR Unified Wire Ethernet Controller
@ -16364,6 +16459,7 @@
54a9 T580-50A9 Unified Wire Ethernet Controller
54aa T580-50AA Unified Wire Ethernet Controller
54ab T520-50AB Unified Wire Ethernet Controller
54ac T540-50AC Unified Wire Ethernet Controller
5501 T520-CR Unified Wire Storage Controller
5502 T522-CR Unified Wire Storage Controller
5503 T540-CR Unified Wire Storage Controller
@ -16424,6 +16520,9 @@
55a7 T580-50A7 Unified Wire Storage Controller
55a8 T580-50A8 Unified Wire Storage Controller
55a9 T580-50A9 Unified Wire Storage Controller
55aa T580-50AA Unified Wire Storage Controller
55ab T520-50AB Unified Wire Storage Controller
55ac T540-50AC Unified Wire Storage Controller
5601 T520-CR Unified Wire Storage Controller
5602 T522-CR Unified Wire Storage Controller
5603 T540-CR Unified Wire Storage Controller
@ -16486,6 +16585,7 @@
56a9 T580-50A9 Unified Wire Storage Controller
56aa T580-50AA Unified Wire Storage Controller
56ab T520-50AB Unified Wire Storage Controller
56ac T540-50AC Unified Wire Storage Controller
5701 T520-CR Unified Wire Ethernet Controller
5702 T522-CR Unified Wire Ethernet Controller
5703 T540-CR Unified Wire Ethernet Controller
@ -16587,6 +16687,7 @@
58a9 T580-50A9 Unified Wire Ethernet Controller [VF]
58aa T580-50AA Unified Wire Ethernet Controller [VF]
58ab T520-50AB Unified Wire Ethernet Controller [VF]
58ac T540-50AC Unified Wire Ethernet Controller [VF]
6001 T6225-CR Unified Wire Ethernet Controller
6002 T6225-SO-CR Unified Wire Ethernet Controller
6003 T6425-CR Unified Wire Ethernet Controller
@ -16607,6 +16708,7 @@
6084 T64100-6084 Unified Wire Ethernet Controller
6085 T6240-6085 Unified Wire Ethernet Controller
6086 T6225-6086 Unified Wire Ethernet Controller
6087 T6225-6087 Unified Wire Ethernet Controller
6401 T6225-CR Unified Wire Ethernet Controller
6402 T6225-SO-CR Unified Wire Ethernet Controller
6403 T6425-CR Unified Wire Ethernet Controller
@ -16627,6 +16729,7 @@
6484 T64100-6084 Unified Wire Ethernet Controller
6485 T6240-6085 Unified Wire Ethernet Controller
6486 T6225-6086 Unified Wire Ethernet Controller
6487 T6225-6087 Unified Wire Ethernet Controller
6501 T6225-CR Unified Wire Storage Controller
6502 T6225-SO-CR Unified Wire Storage Controller
6503 T6425-CR Unified Wire Storage Controller
@ -16647,6 +16750,7 @@
6584 T64100-6084 Unified Wire Storage Controller
6585 T6240-6085 Unified Wire Storage Controller
6586 T6225-6086 Unified Wire Storage Controller
6587 T6225-6087 Unified Wire Storage Controller
6601 T6225-CR Unified Wire Storage Controller
6602 T6225-SO-CR Unified Wire Storage Controller
6603 T6425-CR Unified Wire Storage Controller
@ -16667,6 +16771,7 @@
6684 T64100-6084 Unified Wire Storage Controller
6685 T6240-6085 Unified Wire Storage Controller
6686 T6225-6086 Unified Wire Storage Controller
6687 T6225-6087 Unified Wire Storage Controller
6801 T6225-CR Unified Wire Ethernet Controller [VF]
6802 T6225-SO-CR Unified Wire Ethernet Controller [VF]
6803 T6425-CR Unified Wire Ethernet Controller [VF]
@ -16687,6 +16792,7 @@
6884 T64100-6084 Unified Wire Ethernet Controller [VF]
6885 T6240-6085 Unified Wire Ethernet Controller [VF]
6886 T6225-6086 Unified Wire Ethernet Controller [VF]
6887 T6225-6087 Unified Wire Ethernet Controller [VF]
a000 PE10K Unified Wire Ethernet Controller
1426 Storage Technology Corp.
1427 Better On-Line Solutions
@ -17198,6 +17304,7 @@
103c 169d Ethernet 1Gb 4-port 331FLR Adapter
103c 22be Ethernet 1Gb 4-port 331i Adapter
103c 3383 Ethernet 1Gb 4-port 331T Adapter
14e4 1904 4-port 1Gb Ethernet Adapter
1659 NetXtreme BCM5721 Gigabit Ethernet PCI Express
1014 02c6 eServer xSeries server mainboard
1028 01e6 PowerEdge 860
@ -17269,6 +17376,7 @@
1014 0577 ThinkPad X41 / Z60t
103c 0934 nx8220
103c 0940 Compaq nw8240 Mobile Workstation
103c 0944 Compaq nc6220 Notebook PC
17aa 2081 ThinkPad R60e
167e NetXtreme BCM5751F Fast Ethernet PCI Express
167f NetLink BCM5787F Fast Ethernet PCI Express
@ -18253,6 +18361,8 @@
1556 PLDA
1100 PCI Express Core Reference Design
110f PCI Express Core Reference Design Virtual Function
1110 XpressRich Reference Design
1113 XpressSwitch
1557 MEDIASTAR Co Ltd
1558 CLEVO/KAPOK Computer
1559 SI LOGIC Ltd
@ -18408,6 +18518,7 @@
020b MT27710 Family [ConnectX-4 Lx Flash Recovery]
020d MT28800 Family [ConnectX-5 Flash Recovery]
020f MT28908A0 Family [ConnectX-6 Flash Recovery]
0210 MT28908A0 Family [ConnectX-6 Secure Flash Recovery]
0211 MT416842 Family [BlueField SoC Flash Recovery]
# reserved for RM#105916
024e MT53100 [Spectrum-2, Flash recovery mode]
@ -18415,9 +18526,11 @@
024f MT53100 [Spectrum-2, Flash recovery mode]
0262 MT27710 [ConnectX-4 Lx Programmable] EN
0263 MT27710 [ConnectX-4 Lx Programmable Virtual Function] EN
0264 Innova-2 Flex Burn image
0281 NPS-600 Flash Recovery
1002 MT25400 Family [ConnectX-2 Virtual Function]
1003 MT27500 Family [ConnectX-3]
1014 04b5 PCIe3 40GbE RoCE Converged Host Bus Adapter for Power
103c 1777 InfiniBand FDR/EN 10/40Gb Dual Port 544FLR-QSFP Adapter (Rev Cx)
103c 17c9 Infiniband QDR/Ethernet 10Gb 2-port 544i Adapter
103c 18ce InfiniBand QDR/EN 10Gb Dual Port 544M Adapter
@ -18463,6 +18576,7 @@
1011 MT27600 [Connect-IB]
1012 MT27600 Family [Connect-IB Virtual Function]
1013 MT27700 Family [ConnectX-4]
1014 04f7 PCIe3 2-port 100 GbE (NIC and RoCE) QSFP28 Adapter for Power
15b3 0003 Mellanox Technologies ConnectX-4 Stand-up single-port 40GbE MCX413A-BCAT
15b3 0005 Mellanox Technologies ConnectX-4 Stand-up single-port 40GbE MCX415A-BCAT
15b3 0006 MCX416A-BCAT, ConnectX-4 EN, 40/56GbE 2P, PCIe3.0 x16
@ -18472,6 +18586,7 @@
15b3 0050 ConnectX-4 100 GbE Dual Port QSFP28 Adapter
1014 MT27700 Family [ConnectX-4 Virtual Function]
1015 MT27710 Family [ConnectX-4 Lx]
15b3 0004 ConnectX-4 Lx Stand-up dual-port 10GbE MCX4121A-XCAT
15b3 0005 Mellanox Technologies ConnectX-4 Lx Stand-up single-port 40GbE MCX4131A-BCAT
15b3 0016 ConnectX-4 Lx 25 GbE Dual Port SFP28 Adapter
15b3 0020 MCX4411A-ACQN, ConnectX-4 Lx EN OCP, 1x25Gb
@ -18507,6 +18622,7 @@
6372 MT25408 [ConnectX EN 10GigE 10GBaseT, PCIe 2.0 2.5GT/s]
6732 MT26418 [ConnectX VPI PCIe 2.0 5GT/s - IB DDR / 10GigE]
673c MT26428 [ConnectX VPI PCIe 2.0 5GT/s - IB QDR / 10GigE]
1014 0415 PCIe2 2-port 4X InfiniBand QDR Adapter for Power
1014 0487 GX++ 1-port 4X IB QDR Adapter for Power 795
103c 1782 4X QDR InfiniBand Mezzanine HCA for c-Class BladeSystem
15b3 0021 HP InfiniBand 4X QDR CX-2 PCI-e G2 Dual Port HCA
@ -18529,6 +18645,7 @@
7121 NPS-600 configuration and management interface
7122 NPS-600 network interface PF
7123 NPS-600 network interface VF
8200 Innova-2 Flex Shell Logic
a2d0 MT416842 BlueField SoC Crypto enabled
a2d1 MT416842 BlueField SoC Crypto disabled
a2d2 MT416842 BlueField integrated ConnectX-5 network controller
@ -18565,6 +18682,7 @@
0015 ZBox
15b7 Sandisk Corp
2001 Skyhawk Series NVME SSD
5001 WD Black NVMe SSD
15b8 ADDI-DATA GmbH
1001 APCI1516 SP controller (16 digi outputs)
1003 APCI1032 SP controller (32 digi inputs w/ opto coupler)
@ -18713,6 +18831,11 @@
1006 Format synchronizer, model 10500
1007 Format synchronizer, model 21000
2002 Fast Universal Data Output
3100 IO31000 Frame Synchronizer and I/O
3200 IO32000 Frame Synchronizer and I/O
4002 High Rate Demodulator
5001 High Rate FEC
6001 High Rate Demodulator and FEC
1631 Packard Bell B.V.
1638 Standard Microsystems Corp [SMC]
1100 SMC2602W EZConnect / Addtron AWA-100 / Eumitcom PCI WL11000
@ -19019,6 +19142,7 @@
0777 4005 SR71-15 802.11an Mini PCI Adapter
1186 3a7a DWA-552 802.11n Xtreme N Desktop Adapter (rev A2)
1186 3a7d DWA-552 802.11n Xtreme N Desktop Adapter (rev A3)
168c 0029 AR922X Wireless Network Adapter
168c 2096 Compex WLM200NX / Wistron DNMA-92
002a AR928X Wireless Network Adapter (PCI-Express)
0777 4f05 SR71-X 802.11abgn Wireless ExpressCard Adapter [AR9280]
@ -19203,17 +19327,23 @@
7012 AP440-2: 32-Channel Isolated Digital Input Module
7013 AP440-3: 32-Channel Isolated Digital Input Module
7014 AP445: 32-Channel Isolated Digital Output Module
7015 AP471 48-Channel TTL Level Digital Input/Output Module
7016 AP470 48-Channel TTL Level Digital Input/Output Module
7017 AP323 16-bit, 20 or 40 Channel Analog Input Module
7018 AP408: 32-Channel Digital I/O Module
7019 AP341 14-bit, 16-Channel Simultaneous Conversion Analog Input Module
701a AP220-16 12-Bit, 16-Channel Analog Output Module
701b AP231-16 16-Bit, 16-Channel Analog Output Module
701c AP225 12-Bit, 16-Channel Analog Output Module with Waveform Memory
701d AP235 16-Bit, 16-Channel Analog Output Module with Waveform Memory
7021 APA7-201 Reconfigurable Artix-7 FPGA module 48 TTL channels
7022 APA7-202 Reconfigurable Artix-7 FPGA module 24 RS485 channels
7023 APA7-203 Reconfigurable Artix-7 FPGA module 24 TTL & 12 RS485 channels
7024 APA7-204 Reconfigurable Artix-7 FPGA module 24 LVDS channels
7027 AP418 16-Channel High Voltage Digital Input/Output Module
7029 AP342 14-bit, 12-Channel Isolated Simultaneous Conversion Analog Input Module
702a AP226 12-Bit, 8-Channel Isolated Analog Output Module
702b AP236 16-Bit, 8-Channel Isolated Analog Output Module
7042 AP482 Counter Timer Module with TTL Level Input/Output
7043 AP483 Counter Timer Module with TTL Level and RS422 Input/Output
7044 AP484 Counter Timer Module with RS422 Input/Output
@ -20070,11 +20200,15 @@
1924 8019 SFN8542-R2 8000 Series 10/40G Adapter
1924 801a SFN8722-R1 8000 Series OCP 10G Adapter
1924 801b SFN8522-R3 8000 Series 10G Adapter
0b03 SFC9250 10/25/40/50/100G Ethernet Controller
1924 801d x2522-R1 2000 Series 10/25G Adapter
1924 801e x2542-R1 2000 Series 40/100G Adapter
1803 SFC9020 10G Ethernet Controller (Virtual Function)
1813 SFL9021 10GBASE-T Ethernet Controller (Virtual Function)
1903 SFC9120 10G Ethernet Controller (Virtual Function)
1923 SFC9140 10/40G Ethernet Controller (Virtual Function)
1a03 SFC9220 10/40G Ethernet Controller (Virtual Function)
1b03 SFC9250 10/25/40/50/100G Ethernet Controller (Virtual Function)
6703 SFC4000 rev A iSCSI/Onload [Solarstorm]
10b8 0102 SMC10GPCIe-10BT (A2) [TigerCard]
10b8 0103 SMC10GPCIe-10BT (A3) [TigerCard]
@ -20095,6 +20229,7 @@
000c Qualcomm MSM6275 UMTS chip
1932 DiBcom
193c MAXIM Integrated Products
193d Hangzhou H3C Technologies Co., Ltd.
193f AHA Products Group
0001 AHA36x-PCIX
0360 AHA360-PCIe
@ -20737,6 +20872,8 @@
1bbf Maxeler Technologies Ltd.
0003 MAX3
0004 MAX4
1bcf NEC Corporation
001c Vector Engine 1.0
1bd0 Astronics Corporation
1001 Mx5 PMC/XMC Databus Interface Card
1002 PM1553-5 (PC/104+ MIL-STD-1553 Interface Card)
@ -20920,7 +21057,13 @@
1d65 Imagine Communications Corp.
04de Taurus/McKinley
1d6a Aquantia Corp.
07b1 AQC107 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion]
08b1 AQC108 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion]
11b1 AQC111 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion]
12b1 AQC112 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion]
87b1 AQC107 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion]
d107 AQC107 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion]
d108 AQC108 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion]
1d6c Atomic Rules LLC
1001 A5PL-E1
1002 A5PL-E7
@ -20943,6 +21086,36 @@
1d7c Aerotech, Inc.
1d87 Fuzhou Rockchip Electronics Co., Ltd
1d8f Enyx
1d94 Chengdu Higon IC Design Co.Ltd
1450 Root Complex
1451 I/O Memory Management Unit
1452 PCIe Dummy Host Bridge
1453 PCIE GPP Bridge
1454 Internal PCIe GPP Bridge 0 to Bus B
1455 PCIe Dummy Function
1456 PSPCCP Command DMA Processor
1458 10 Gb Ethernet Controller Port 0/Port1
1459 10 Gb Ethernet Controller Port 2/Port3
145a PCIe Dummy Function
145b PCIE Non-Transparent Bridge
145c USB3 XHCI
145d Switch upstream in PCIe
145e Switch downstream in PCIe
145f USB 3.0 Host controller
1460 Data Fabric: Device 18h; Function 0
1461 Data Fabric: Device 18h; Function 1
1462 Data Fabric: Device 18h; Function 2
1463 Data Fabric: Device 18h; Function 3
1464 Data Fabric: Device 18h; Function 4
1465 Data Fabric: Device 18h; Function 5
1466 Data Fabric: Device 18h; Function 6
1467 Data Fabric: Device 18h; Function 7
1468 NTBCCP
7901 FCH SATA Controller [AHCI mode]
7904 FCH SATA Controller [AHCI mode]
7906 FCH SD Flash Controller
790b FCH SMBus Controller
790e FCH LPC Bridge
1d95 Graphcore Ltd
1da1 Teko Telecom S.r.l.
1da2 Sapphire Technology Limited
@ -20954,6 +21127,16 @@
1de5 Eideticom, Inc
1000 IO Memory Controller
2000 NoLoad Hardware Development Kit
1def Ampere Computing, LLC
e005 Skylark PCI Express Root Port 0 [X-Gene 3]
e006 Skylark PCI Express Root Port 1 [X-Gene 3]
e007 Skylark PCI Express Root Port 2 [X-Gene 3]
e008 Skylark PCI Express Root Port 3 [X-Gene 3]
e009 Skylark PCI Express Root Port 4 [X-Gene 3]
e00a Skylark PCI Express Root Port 5 [X-Gene 3]
e00b Skylark PCI Express Root Port 6 [X-Gene 3]
e00c Skylark PCI Express Root Port 7 [X-Gene 3]
1df7 opencpi.org
# nee Tumsan Oy
1fc0 Ascom (Finland) Oy
0300 E2200 Dual E1/Rawpipe Card
@ -21668,6 +21851,8 @@
3000 HD-3000
5500 HD5500 HDTV
7284 HT OMEGA Inc.
7357 IOxOS Technologies SA
7910 7910 [Althea]
7401 EndRun Technologies
e100 PTP3100 PCIe PTP Slave Clock
7470 TP-LINK Technologies Co., Ltd.
@ -23659,8 +23844,9 @@
15c7 Ethernet Connection X553 1GbE
15c8 Ethernet Connection X553/X557-AT 10GBASE-T
15ce Ethernet Connection X553 10 GbE SFP+
15d0 Ethernet SDI Adapter FM10420-100GbE-QDA2
15d0 Ethernet SDI Adapter
8086 0001 Ethernet SDI Adapter FM10420-100GbE-QDA2
8086 0002 Ethernet SDI Adapter FM10840-MTP2
15d1 Ethernet Controller 10G X550T
8086 0002 Ethernet Converged Network Adapter X550-T1
8086 001b Ethernet Server Adapter X550-T1 for OCP
@ -23685,6 +23871,14 @@
15e3 Ethernet Connection (5) I219-LM
15e4 Ethernet Connection X553 1GbE
15e5 Ethernet Connection X553 1GbE
15e7 JHL7540 Thunderbolt 3 Bridge [Titan Ridge 2C 2018]
15e8 JHL7540 Thunderbolt 3 NHI [Titan Ridge 2C 2018]
15e9 JHL7540 Thunderbolt 3 USB Controller [Titan Ridge 2C 2018]
15ea JHL7540 Thunderbolt 3 Bridge [Titan Ridge 4C 2018]
15eb JHL7540 Thunderbolt 3 NHI [Titan Ridge 4C 2018]
15ec JHL7540 Thunderbolt 3 USB Controller [Titan Ridge 4C 2018]
15ef JHL7540 Thunderbolt 3 Bridge [Titan Ridge DD 2018]
15f0 JHL7540 Thunderbolt 3 USB Controller [Titan Ridge DD 2018]
1600 Broadwell-U Host Bridge -OPI
1601 Broadwell-U PCI Express x16 Controller
1602 Broadwell-U Integrated Graphics
@ -24111,6 +24305,7 @@
144d c652 NP300E5C series laptop
1849 1e2d Motherboard
1e31 7 Series/C210 Series Chipset Family USB xHCI Host Controller
103c 179b Elitebook 8470p
103c 17ab ProBook 6570b
1043 108d VivoBook X202EV
1043 1477 N56VZ
@ -24420,6 +24615,7 @@
1028 040a Latitude E6410
1028 040b Latitude E6510
103c 0934 Compaq nw8240 Mobile Workstation
103c 0944 Compaq nc6220 Notebook PC
103c 099c NX6110/NC6120
103c 309f Compaq nx9420 Notebook
103c 30a3 Compaq nw8440
@ -25087,6 +25283,7 @@
1014 0575 ThinkPad X41 / Z60t
1028 0182 Latitude C610
103c 0934 Compaq nw8240/nx8220
103c 0944 Compaq nc6220 Notebook PC
103c 099c NX6110/NC6120
104d 81b7 Vaio VGN-S3XP
a304 81b7 Vaio VGN-S3XP
@ -25271,6 +25468,7 @@
2641 82801FBM (ICH6M) LPC Interface Bridge
1014 0568 ThinkPad X41
103c 0934 Compaq nw8240/nx8220
103c 0944 Compaq nc6220 Notebook PC
103c 099c NX6110/NC6120
2642 82801FW/FRW (ICH6W/ICH6RW) LPC Interface Bridge
2651 82801FB/FW (ICH6/ICH6W) SATA Controller
@ -25291,6 +25489,7 @@
1028 0177 Dimension 8400
1028 0179 Optiplex GX280
103c 0934 Compaq nw8240/nx8220
103c 0944 Compaq nc6220 Notebook PC
103c 099c NX6110/NC6120
1043 80a6 P5GD1-VW Mainboard
1458 2558 GA-8I915ME-G Mainboard
@ -25304,6 +25503,7 @@
1028 0177 Dimension 8400
1028 0179 Optiplex GX280
103c 0934 Compaq nw8240/nx8220
103c 0944 Compaq nc6220 Notebook PC
103c 099c NX6110/NC6120
1043 80a6 P5GD1-VW Mainboard
1458 2659 GA-8I915ME-G Mainboard
@ -25317,6 +25517,7 @@
1028 0177 Dimension 8400
1028 0179 Optiplex GX280
103c 0934 Compaq nw8240/nx8220
103c 0944 Compaq nc6220 Notebook PC
103c 099c NX6110/NC6120
1043 80a6 P5GD1-VW Mainboard
1458 265a GA-8I915ME-G Mainboard
@ -25342,6 +25543,7 @@
1028 0177 Dimension 8400
1028 0179 Optiplex GX280
103c 0934 Compaq nw8240/nx8220
103c 0944 Compaq nc6220 Notebook PC
103c 099c NX6110/NC6120
1043 80a6 P5GD1-VW Mainboard
1458 5006 GA-8I915ME-G Mainboard
@ -25353,12 +25555,14 @@
e4bf 58b1 XB1
2660 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 1
103c 0934 Compaq nw8240 Mobile Workstation
103c 0944 Compaq nc6220 Notebook PC
103c 099c NX6110/NC6120
e4bf 0ccd CCD-CALYPSO
e4bf 0cd3 CD3-JIVE
e4bf 58b1 XB1
2662 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 2
103c 0934 Compaq nw8240 Mobile Workstation
103c 0944 Compaq nc6220 Notebook PC
e4bf 0ccd CCD-CALYPSO
e4bf 0cd3 CD3-JIVE
e4bf 58b1 XB1
@ -25412,6 +25616,7 @@
266f 82801FB/FBM/FR/FW/FRW (ICH6 Family) IDE Controller
1028 0177 Dimension 8400
103c 0934 Compaq nw8240/nx8220
103c 0944 Compaq nc6220 Notebook PC
103c 099c NX6110/NC6120
1043 80a6 P5GD1-VW Mainboard
1458 266f GA-8I915ME-G Mainboard
@ -25484,6 +25689,12 @@
103c 31fe ProLiant DL140 G3
15d9 8680 X7DVL-E-O motherboard
15d9 9680 X7DBN Motherboard
2700 Optane SSD 900P Series
8086 3900 900P Series [Add-in Card]
8086 3901 900P Series [2.5" SFF]
2701 Optane DC P4800X Series SSD
8086 3904 DC P4800X Series [Add-in Card]
8086 3905 DC P4800X Series [2.5" SFF]
2770 82945G/GZ/P/PL Memory Controller Hub
1028 01ad OptiPlex GX620
103c 2a3b Pavilion A1512X
@ -25514,6 +25725,7 @@
2792 Mobile 915GM/GMS/910GML Express Graphics Controller
1014 0582 ThinkPad X41
103c 099c NX6110/NC6120
103c 308a Compaq nc6220 Notebook PC
1043 1881 GMA 900 915GM Integrated Graphics
e4bf 0ccd CCD-CALYPSO
e4bf 0cd3 CD3-JIVE
@ -27544,7 +27756,7 @@
4117 Atom Processor E6xx PCI Host Bridge #4
4220 PRO/Wireless 2200BG [Calexico2] Network Connection
103c 0934 Compaq nw8240/nx8220
103c 12f6 nc6120/nx8220/nw8240
103c 12f6 nc6120/nc6220/nw8240/nx8220
8086 2701 WM3B2200BG Mini-PCI Card
8086 2712 IBM ThinkPad R50e
8086 2721 Dell B130 laptop integrated WLAN
@ -27692,9 +27904,11 @@
590f Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers
5910 Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers
5912 HD Graphics 630
5914 Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers
5916 HD Graphics 620
17aa 2248 ThinkPad T570
17aa 224f ThinkPad X1 Carbon 5th Gen
5917 UHD Graphics 620
591d HD Graphics P630
591f Intel Kaby Lake Host Bridge
5a84 Celeron N3350/Pentium N4200/Atom E3900 Series Integrated Graphics Controller
@ -28111,6 +28325,8 @@
8c26 8 Series/C220 Series Chipset Family USB EHCI #1
103c 1909 ZBook 15
17aa 220e ThinkPad T440p
17aa 2210 ThinkPad T540p
2210 17aa ThinkPad T540p
8c2d 8 Series/C220 Series Chipset Family USB EHCI #2
103c 1909 ZBook 15
17aa 220e ThinkPad T440p
@ -29018,6 +29234,11 @@
103c 0701 Smart Array P204i-b SR Gen10
103c 1100 Smart Array P816i-a SR Gen10
103c 1101 Smart Array P416ie-m SR G10
152d 8a22 QS-8204-8i
152d 8a23 QS-8238-16i
152d 8a24 QS-8236-16i
152d 8a36 QS-8240-24i
152d 8a37 QS-8242-24i
9005 0800 SmartRAID 3154-8i
9005 0801 SmartRAID 3152-8i
9005 0802 SmartRAID 3151-4i
@ -29220,8 +29441,8 @@ bdbd Blackmagic Design
a124 Intensity Extreme
a126 Intensity Shuttle
a127 UltraStudio Express
a129 UltraStudio Mini Monitor
a12a UltraStudio Mini Recorder
a129 UltraStudio Mini Recorder
a12a UltraStudio Mini Monitor
a12d UltraStudio 4K
a12e DeckLink 4K Extreme
a12f DeckLink Mini Monitor
@ -29236,6 +29457,11 @@ bdbd Blackmagic Design
a13e UltraStudio 4K Extreme
a13f DeckLink Quad 2
a140 DeckLink Duo 2
a141 UltraStudio 4K Extreme 3
a142 UltraStudio HD Mini
a143 DeckLink Mini Recorder 4K
a144 DeckLink Mini Monitor 4K
a14b DeckLink 8K Pro
c001 TSI Telsys
c0a9 Micron/Crucial Technology
c0de Motorola

View File

@ -9,8 +9,8 @@
# The latest version can be obtained from
# http://www.linux-usb.org/usb.ids
#
# Version: 2017.11.27
# Date: 2017-11-27 20:34:05
# Version: 2018.01.04
# Date: 2018-01-04 20:34:07
#
# Vendors, devices and interfaces. Please keep sorted.
@ -16161,6 +16161,35 @@
0002 HDReye (before firmware loads)
1519 Comneon
0020 HSIC Device
151f Opal Kelly Incorporated
0020 XEM3001v1
0021 XEM3001v2
0022 XEM3010
0023 XEM3005
0028 XEM3050
002b XEM5010
002c XEM6001
002d XEM6010-LX45
002e XEM6010-LX150
0030 XEM6006-LX16
0033 XEM6002-LX9
0034 XEM7001-A15
0036 XEM7010-A50
0037 XEM7010-A200
0120 ZEM4310
0121 XEM6310-LX45
0122 XEM6310-LX150
0123 XEM6310MT-LX45T
0125 XEM7350-K70T
0126 XEM7350-K160T
0127 XEM7350-K410T
0128 XEM6310MT-LX150T
0129 ZEM5305-A2
012b XEM7360-K160T
012c XEM7360-K410T
012d ZEM5310-A4
0130 XEM7310-A75
0131 XEM7310-A200
1520 Bitwire Corp.
1524 ENE Technology Inc
6680 UTS 6680
@ -18673,6 +18702,19 @@
24e1 Paratronic
3001 Adp-usb
3005 Radius
2516 Cooler Master Co., Ltd.
0003 Storm Xornet
0004 Storm QuickFire Rapid Mechanical Keyboard
0006 Storm Recon
0007 Storm Sentinel Advance II
0009 Storm Quick Fire PRO
0011 Storm Quick Fire TK
0017 CM Storm Quick Fire Stealth
0020 QuickFire Rapid-i Keyboard
0027 CM Storm Coolermaster Novatouch TKL
002d Alcor mouse
0047 MasterKeys Pro L
9494 Sirus Headset
2632 TwinMOS
3209 7-in-1 Card Reader
2639 Xsens

View File

@ -69,7 +69,7 @@
<para>Each file contains a list of binfmt_misc kernel binary
format rules. Consult <ulink
url="https://www.kernel.org/doc/Documentation/binfmt_misc.txt">binfmt_misc.txt</ulink>
url="https://www.kernel.org/doc/Documentation/admin-guide/binfmt-misc.rst">binfmt-misc.rst</ulink>
for more information on registration of additional binary formats
and how to write rules.</para>

View File

@ -241,6 +241,16 @@
</listitem>
</varlistentry>
<varlistentry>
<term><option>--watch-bind=</option><replaceable>BOOL</replaceable></term>
<listitem>
<para>Controls whether to wait for the specified <constant>AF_UNIX</constant> bus socket to appear in the
file system before connecting to it. Defaults to off. When enabled, the tool will watch the file system until
the socket is created and then connect to it.</para>
</listitem>
</varlistentry>
<xi:include href="user-system-options.xml" xpointer="user" />
<xi:include href="user-system-options.xml" xpointer="system" />
<xi:include href="user-system-options.xml" xpointer="host" />

View File

@ -146,6 +146,9 @@
</varlistentry>
</variablelist>
<para>The defaults for all values are listed as comments in the
template <filename>/etc/systemd/coredump.conf</filename> file that
is installed by default.</para>
</refsect1>
<refsect1>

View File

@ -218,16 +218,23 @@
<varlistentry>
<term><option>noauto</option></term>
<listitem><para>This device will not be automatically unlocked
on boot.</para></listitem>
<listitem><para>This device will not be added to <filename>cryptsetup.target</filename>.
This means that it will not be automatically unlocked on boot, unless something else pulls
it in. In particular, if the device is used for a mount point, it'll be unlocked
automatically during boot, unless the mount point itself is also disabled with
<option>noauto</option>.</para></listitem>
</varlistentry>
<varlistentry>
<term><option>nofail</option></term>
<listitem><para>The system will not wait for the device to
show up and be unlocked at boot, and not fail the boot if it
does not show up.</para></listitem>
<listitem><para>This device will not be a hard dependency of
<filename>cryptsetup.target</filename>. It'll be still pulled in and started, but the system
will not wait for the device to show up and be unlocked, and boot will not fail if this is
unsuccessful. Note that other units that depend on the unlocked device may still fail. In
particular, if the device is used for a mount point, the mount point itself is also needs to
have <option>noauto</option> option, or the boot will fail if the device is not unlocked
successfully.</para></listitem>
</varlistentry>
<varlistentry>

View File

@ -73,6 +73,18 @@
</a>
</xsl:template>
<xsl:template match="citerefentry[@project='wireguard']">
<a>
<xsl:attribute name="href">
<xsl:text>https://git.zx2c4.com/WireGuard/about/src/tools/</xsl:text>
<xsl:value-of select="refentrytitle"/>
<xsl:text>.</xsl:text>
<xsl:value-of select="manvolnum"/>
</xsl:attribute>
<xsl:call-template name="inline.charseq"/>
</a>
</xsl:template>
<xsl:template match="citerefentry[@project='mankier']">
<a>
<xsl:attribute name="href">

View File

@ -605,8 +605,8 @@
daemon code, to create it via
<citerefentry><refentrytitle>tmpfiles.d</refentrytitle><manvolnum>5</manvolnum></citerefentry>
fragments during boot, or via the
<varname>RuntimeDirectory=</varname> directive of service units
(see
<varname>StateDirectory=</varname> and <varname>RuntimeDirectory=</varname>
directives of service units (see
<citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>
for details).</para>
</refsect1>
@ -694,7 +694,7 @@
</row>
<row>
<entry><filename>/run/<replaceable>package</replaceable></filename></entry>
<entry>Runtime data for the package. Packages must be able to create the necessary subdirectories in this tree on their own, since the directory is flushed automatically on boot. Alternatively, a <citerefentry><refentrytitle>tmpfiles.d</refentrytitle><manvolnum>5</manvolnum></citerefentry> fragment may be used to create the necessary directories during boot. Alternatively, the <varname>RuntimeDirectory=</varname> directive of service units may be used (see <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry> for details.)</entry>
<entry>Runtime data for the package. Packages must be able to create the necessary subdirectories in this tree on their own, since the directory is flushed automatically on boot. Alternatively, a <citerefentry><refentrytitle>tmpfiles.d</refentrytitle><manvolnum>5</manvolnum></citerefentry> fragment may be used to create the necessary directories during boot, or the <varname>RuntimeDirectory=</varname> directive of service units may be used to create them at service startup (see <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry> for details).</entry>
</row>
<row>
<entry><filename>/run/log/<replaceable>package</replaceable></filename></entry>
@ -702,15 +702,15 @@
</row>
<row>
<entry><filename>/var/cache/<replaceable>package</replaceable></filename></entry>
<entry>Persistent cache data of the package. If this directory is flushed, the application should work correctly on next invocation, though possibly slowed down due to the need to rebuild any local cache files. The application must be capable of recreating this directory should it be missing and necessary.</entry>
<entry>Persistent cache data of the package. If this directory is flushed, the application should work correctly on next invocation, though possibly slowed down due to the need to rebuild any local cache files. The application must be capable of recreating this directory should it be missing and necessary. To create an empty directory, a <citerefentry><refentrytitle>tmpfiles.d</refentrytitle><manvolnum>5</manvolnum></citerefentry> fragment or the <varname>CacheDirectory=</varname> directive of service units (see <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>) may be used.</entry>
</row>
<row>
<entry><filename>/var/lib/<replaceable>package</replaceable></filename></entry>
<entry>Persistent private data of the package. This is the primary place to put persistent data that does not fall into the other categories listed. Packages should be able to create the necessary subdirectories in this tree on their own, since the directory might be missing on boot. Alternatively, a <citerefentry><refentrytitle>tmpfiles.d</refentrytitle><manvolnum>5</manvolnum></citerefentry> fragment may be used to create the necessary directories during boot.</entry>
<entry>Persistent private data of the package. This is the primary place to put persistent data that does not fall into the other categories listed. Packages should be able to create the necessary subdirectories in this tree on their own, since the directory might be missing on boot. To create an empty directory, a <citerefentry><refentrytitle>tmpfiles.d</refentrytitle><manvolnum>5</manvolnum></citerefentry> fragment or the <varname>StateDirectory=</varname> directive of service units (see <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>) may be used.</entry>
</row>
<row>
<entry><filename>/var/log/<replaceable>package</replaceable></filename></entry>
<entry>Persistent log data of the package. As above, the package should make sure to create this directory if necessary, as it might be missing.</entry>
<entry>Persistent log data of the package. As above, the package should make sure to create this directory if necessary, possibly using <citerefentry><refentrytitle>tmpfiles.d</refentrytitle><manvolnum>5</manvolnum></citerefentry> or <varname>LogsDirectory=</varname> (see <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>), as it might be missing.</entry>
</row>
<row>
<entry><filename>/var/spool/<replaceable>package</replaceable></filename></entry>

View File

@ -166,8 +166,12 @@
<refsect1>
<title>Notes</title>
<para>These are legacy commands available for compatibility
only.</para>
<para>These commands are implemented in a way that preserves compatiblity with
the original SysV commands.
<citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
verbs <command>halt</command>, <command>poweroff</command>,
<command>reboot</command> provide the same functionality with some additional
features.</para>
</refsect1>
<refsect1>

View File

@ -578,6 +578,29 @@
priorities.</para></listitem>
</varlistentry>
<varlistentry>
<term><option>-g</option></term>
<term><option>--grep=</option></term>
<listitem><para>Filter output to entries where the <varname>MESSAGE=</varname>
field matches the specified regular expression. PERL-compatible regular expressions
are used, see
<citerefentry><refentrytitle>pcre2pattern</refentrytitle><manvolnum>3</manvolnum></citerefentry>
for a detailed description of the syntax.</para>
<para>If the pattern is all lowercase, matching is case insensitive.
Otherwise, matching is case sensitive. This can be overridden with the
<option>--case-sensitive</option> option, see below.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>--case-sensitive<optional>=BOOLEAN</optional></option></term>
<listitem><para>Make pattern matching case sensitive or case insenstive.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-c</option></term>
<term><option>--cursor=</option></term>

View File

@ -85,6 +85,7 @@
<term><varname>systemd.crash_shell</varname></term>
<term><varname>systemd.crash_reboot</varname></term>
<term><varname>systemd.confirm_spawn</varname></term>
<term><varname>systemd.service_watchdogs</varname></term>
<term><varname>systemd.show_status</varname></term>
<term><varname>systemd.log_target=</varname></term>
<term><varname>systemd.log_level=</varname></term>

View File

@ -439,9 +439,9 @@
specified, the connection is made to the local host
instead. This works similar to <command>login</command> but
immediately invokes a user process. This command runs the
specified executable with the specified arguments, or
<filename>/bin/sh</filename> if none is specified. By default,
opens a <literal>root</literal> shell, but by using
specified executable with the specified arguments, or the
default shell for the user if none is specified, or
<filename>/bin/sh</filename> if no default shell is found. By default,
<option>--uid=</option>, or by prefixing the machine name with
a username and an <literal>@</literal> character, a different
user may be selected. Use <option>--setenv=</option> to set
@ -881,7 +881,7 @@
</varlistentry>
<varlistentry>
<term><command>cancel-transfers</command> <replaceable>ID</replaceable></term>
<term><command>cancel-transfer</command> <replaceable>ID</replaceable></term>
<listitem><para>Aborts a download, import or export of the
container or VM image with the specified ID. To list ongoing

View File

@ -105,7 +105,12 @@ manpages = [
['sd-journal', '3', [], ''],
['sd-login', '3', [], 'HAVE_PAM'],
['sd_booted', '3', [], ''],
['sd_bus_add_match', '3', [], ''],
['sd_bus_add_match',
'3',
['sd_bus_add_match_async',
'sd_bus_match_signal',
'sd_bus_match_signal_async'],
''],
['sd_bus_creds_get_pid',
'3',
['sd_bus_creds_get_audit_login_uid',
@ -181,6 +186,7 @@ manpages = [
['SD_BUS_ERROR_END', 'SD_BUS_ERROR_MAP', 'sd_bus_error_map'],
''],
['sd_bus_get_fd', '3', [], ''],
['sd_bus_is_open', '3', ['sd_bus_is_ready'], ''],
['sd_bus_message_append', '3', ['sd_bus_message_appendv'], ''],
['sd_bus_message_append_array',
'3',
@ -200,6 +206,7 @@ manpages = [
['sd_bus_message_get_realtime_usec', 'sd_bus_message_get_seqnum'],
''],
['sd_bus_message_read_basic', '3', [], ''],
['sd_bus_message_set_destination', '3', ['sd_bus_message_set_sender'], ''],
['sd_bus_negotiate_fds',
'3',
['sd_bus_negotiate_creds', 'sd_bus_negotiate_timestamp'],
@ -210,7 +217,15 @@ manpages = [
['sd_bus_path_decode', 'sd_bus_path_decode_many', 'sd_bus_path_encode_many'],
''],
['sd_bus_process', '3', [], ''],
['sd_bus_request_name', '3', ['sd_bus_release_name'], ''],
['sd_bus_request_name',
'3',
['sd_bus_release_name',
'sd_bus_release_name_async',
'sd_bus_request_name_async'],
''],
['sd_bus_set_connected_signal', '3', ['sd_bus_get_connected_signal'], ''],
['sd_bus_set_sender', '3', ['sd_bus_get_sender'], ''],
['sd_bus_set_watch_bind', '3', ['sd_bus_get_watch_bind'], ''],
['sd_bus_track_add_name',
'3',
['sd_bus_track_add_sender',
@ -594,6 +609,7 @@ manpages = [
'8',
['systemd-random-seed'],
'ENABLE_RANDOMSEED'],
['systemd-rc-local-generator', '8', [], ''],
['systemd-remount-fs.service', '8', ['systemd-remount-fs'], ''],
['systemd-resolve', '1', [], 'ENABLE_RESOLVE'],
['systemd-resolved.service', '8', ['systemd-resolved'], 'ENABLE_RESOLVE'],
@ -654,6 +670,7 @@ manpages = [
['systemd', '1', ['init'], ''],
['systemd.automount', '5', [], ''],
['systemd.device', '5', [], ''],
['systemd.dnssd', '5', [], 'ENABLE_RESOLVE'],
['systemd.environment-generator', '7', [], 'ENABLE_ENVIRONMENT_D'],
['systemd.exec', '5', [], ''],
['systemd.generator', '7', [], ''],
@ -662,7 +679,6 @@ manpages = [
['systemd.link', '5', [], ''],
['systemd.mount', '5', [], ''],
['systemd.netdev', '5', [], 'ENABLE_NETWORKD'],
['systemd.dnssd', '5', [], 'ENABLE_RESOLVE'],
['systemd.network', '5', [], 'ENABLE_NETWORKD'],
['systemd.nspawn', '5', [], ''],
['systemd.offline-updates', '7', [], ''],

View File

@ -173,10 +173,9 @@
<variablelist>
<varlistentry>
<term><filename>/var/run/utmp</filename></term>
<term><filename>/run/utmp</filename></term>
<listitem><para>The utmp database <command>runlevel</command>
reads the previous and current runlevel
<listitem><para>The utmp database <command>runlevel</command> reads the previous and current runlevel
from.</para></listitem>
</varlistentry>
</variablelist>

View File

@ -45,14 +45,24 @@
<refnamediv>
<refname>sd_bus_add_match</refname>
<refname>sd_bus_add_match_async</refname>
<refname>sd_bus_match_signal</refname>
<refname>sd_bus_match_signal_async</refname>
<refpurpose>Add a match rule for message dispatching</refpurpose>
<refpurpose>Add a match rule for incoming message dispatching</refpurpose>
</refnamediv>
<refsynopsisdiv>
<funcsynopsis>
<funcsynopsisinfo>#include &lt;systemd/sd-bus.h&gt;</funcsynopsisinfo>
<funcprototype>
<funcdef>typedef int (*<function>sd_bus_message_handler_t</function>)</funcdef>
<paramdef>sd_bus_message *<parameter>m</parameter></paramdef>
<paramdef>void *<parameter>userdata</parameter></paramdef>
<paramdef>sd_bus_error *<parameter>ret_error</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>int <function>sd_bus_add_match</function></funcdef>
<paramdef>sd_bus *<parameter>bus</parameter></paramdef>
@ -63,65 +73,122 @@
</funcprototype>
<funcprototype>
<funcdef>typedef int (*<function>sd_bus_message_handler_t</function>)</funcdef>
<paramdef>sd_bus_message *<parameter>m</parameter></paramdef>
<funcdef>int <function>sd_bus_add_match_async</function></funcdef>
<paramdef>sd_bus *<parameter>bus</parameter></paramdef>
<paramdef>sd_bus_slot **<parameter>slot</parameter></paramdef>
<paramdef>const char *<parameter>match</parameter></paramdef>
<paramdef>sd_bus_message_handler_t <parameter>callback</parameter></paramdef>
<paramdef>sd_bus_message_handler_t <parameter>install_callback</parameter></paramdef>
<paramdef>void *<parameter>userdata</parameter></paramdef>
<paramdef>sd_bus_error *<parameter>ret_error</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>int <function>sd_bus_match_signal</function></funcdef>
<paramdef>sd_bus *<parameter>bus</parameter></paramdef>
<paramdef>sd_bus_slot **<parameter>slot</parameter></paramdef>
<paramdef>const char *<parameter>sender</parameter></paramdef>
<paramdef>const char *<parameter>path</parameter></paramdef>
<paramdef>const char *<parameter>interface</parameter></paramdef>
<paramdef>const char *<parameter>member</parameter></paramdef>
<paramdef>sd_bus_message_handler_t <parameter>callback</parameter></paramdef>
<paramdef>void *<parameter>userdata</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>int <function>sd_bus_match_signal_async</function></funcdef>
<paramdef>sd_bus *<parameter>bus</parameter></paramdef>
<paramdef>sd_bus_slot **<parameter>slot</parameter></paramdef>
<paramdef>const char *<parameter>sender</parameter></paramdef>
<paramdef>const char *<parameter>path</parameter></paramdef>
<paramdef>const char *<parameter>interface</parameter></paramdef>
<paramdef>const char *<parameter>member</parameter></paramdef>
<paramdef>sd_bus_message_handler_t <parameter>callback</parameter></paramdef>
<paramdef>sd_bus_message_handler_t <parameter>install_callback</parameter></paramdef>
<paramdef>void *<parameter>userdata</parameter></paramdef>
</funcprototype>
</funcsynopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>
<para>
<function>sd_bus_add_match()</function> installs a match rule for incoming messages received on the specified bus
connection object <parameter>bus</parameter>. The syntax of the match rule expression passed in
<parameter>match</parameter> is described in the <ulink
url="https://dbus.freedesktop.org/doc/dbus-specification.html">D-Bus Specification</ulink>. The specified handler
function <parameter>callback</parameter> is called for eaching incoming message matching the specified
expression, the <parameter>userdata</parameter> parameter is passed as-is to the callback function.
<para><function>sd_bus_add_match()</function> installs a match rule for messages received on the specified bus
connection object <parameter>bus</parameter>. The syntax of the match rule expression passed in
<parameter>match</parameter> is described in the <ulink
url="https://dbus.freedesktop.org/doc/dbus-specification.html">D-Bus Specification</ulink>. The specified handler
function <parameter>callback</parameter> is called for eaching incoming message matching the specified expression,
the <parameter>userdata</parameter> parameter is passed as-is to the callback function. The match is installed
synchronously when connected to a bus broker, i.e. the call sends a control message requested the match to be added
to the broker and waits until the broker confirms the match has been installed successfully.</para>
<para><function>sd_bus_add_match_async()</function> operates very similar to
<function>sd_bus_match_signal()</function>, however it installs the match asynchronously, in a non-blocking
fashion: a request is sent to the broker, but the call does not wait for a response. The
<parameter>install_callback</parameter> function is called when the response is later received, with the response
message from the broker as parameter. If this function is specified as <constant>NULL</constant> a default
implementation is used that terminates the bus connection should installing the match fail.</para>
<para><function>sd_bus_match_signal()</function> is very similar to <function>sd_bus_add_match()</function>, but
only matches signals, and instead of a match expression accepts four parameters: <parameter>sender</parameter> (the
service name of the sender), <parameter>path</parameter> (the object path of the emitting object),
<parameter>interface</parameter> (the interface the signal belongs to), <parameter>member</parameter> (the signal
name), from which the match string is internally generated. Optionally, these parameters may be specified as
<constant>NULL</constant> in which case the relevant field of incoming signals is not tested.</para>
<para><function>sd_bus_match_signal_async()</function> is combines the signal matching logic of
<function>sd_bus_match_signal()</function> with the asynchronous behaviour of
<function>sd_bus_add_match_async()</function>.</para>
<para>On success, and if non-<constant>NULL</constant>, the <parameter>slot</parameter> return parameter will be
set to a slot object that may be used as a reference to the installed match, and may be utilized to remove it again
at a later time with
<citerefentry><refentrytitle>sd_bus_slot_unref</refentrytitle><manvolnum>3</manvolnum></citerefentry>. If specified
as <constant>NULL</constant> the lifetime of the match is bound to the lifetime of the bus object itself, and the
match cannot be removed independently.</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 an error occurs during the callback invocation, the callback should return a negative error number
(optionally, a more precise error may be returned in <parameter>ret_error</parameter>, as well). If it wants other
callbacks that match the same rule to be called, it should return 0. Otherwise it should return a positive integer.
</para>
<para>
On success, and if non-<constant>NULL</constant>, the <parameter>slot</parameter> return parameter will be set to
a slot object that may be used as a reference to the installed match, and may be utilized to remove it again at a
later time with
<citerefentry><refentrytitle>sd_bus_slot_unref</refentrytitle><manvolnum>3</manvolnum></citerefentry>. If
specified as <constant>NULL</constant> the lifetime of the match is bound to the lifetime of the bus object itself, and the match
cannot be removed independently.
</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 an error occurs during the callback invocation, the callback should return a negative error number. If it
wants other callbacks that match the same rule to be called, it should return 0. Otherwise it should return a
positive integer.
</para>
<para>If the <parameter>bus</parameter> refers to a direct connection (i.e. not a bus connection, as set with
<citerefentry><refentrytitle>sd_bus_set_bus_client</refentrytitle><manvolnum>3</manvolnum></citerefentry>) the
match is only installed on the client side, and the synchronous and asynchronous functions operate the same.</para>
</refsect1>
<refsect1>
<title>Return Value</title>
<para>
On success, <function>sd_bus_add_match()</function> returns 0 or a positive integer. On failure, it returns a
negative errno-style error code.
On success, <function>sd_bus_add_match()</function> and the other calls return 0 or a positive integer. On
failure, they return a negative errno-style error code.
</para>
</refsect1>
<refsect1>
<title>Notes</title>
<para><function>sd_bus_add_match()</function> and the other functions described here are available as a shared
library, which can be compiled and linked to with the <constant>libsystemd</constant> <citerefentry
project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry> file.</para>
</refsect1>
<refsect1>
<title>See Also</title>
<para>
<citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd-bus</refentrytitle><manvolnum>3</manvolnum></citerefentry>
<citerefentry><refentrytitle>sd-bus</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd_bus_slot_unref</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd_bus_message_ref</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd_bus_set_bus_client</refentrytitle><manvolnum>3</manvolnum></citerefentry>
</para>
</refsect1>

View File

@ -369,7 +369,7 @@
<para><function>sd_bus_creds_get_cgroup()</function> will retrieve
the control group path. See <ulink
url="https://www.kernel.org/doc/Documentation/cgroups/cgroups.txt">cgroups.txt</ulink>.
url="https://www.kernel.org/doc/Documentation/cgroup-v1/cgroups.txt">cgroups.txt</ulink>.
</para>
<para><function>sd_bus_creds_get_unit()</function> will retrieve

137
man/sd_bus_is_open.xml Normal file
View File

@ -0,0 +1,137 @@
<?xml version='1.0'?> <!--*- Mode: nxml; nxml-child-indent: 2; indent-tabs-mode: nil -*-->
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<!--
SPDX-License-Identifier: LGPL-2.1+
This file is part of systemd.
Copyright 2017 Lennart Poettering
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.
systemd is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with systemd; If not, see <http://www.gnu.org/licenses/>.
-->
<refentry id="sd_bus_is_open">
<refentryinfo>
<title>sd_bus_is_open</title>
<productname>systemd</productname>
<authorgroup>
<author>
<contrib>Developer</contrib>
<firstname>Lennart</firstname>
<surname>Poettering</surname>
<email>lennart@poettering.net</email>
</author>
</authorgroup>
</refentryinfo>
<refmeta>
<refentrytitle>sd_bus_is_open</refentrytitle>
<manvolnum>3</manvolnum>
</refmeta>
<refnamediv>
<refname>sd_bus_is_open</refname>
<refname>sd_bus_is_ready</refname>
<refpurpose>Check whether the a bus connection is open or ready.</refpurpose>
</refnamediv>
<refsynopsisdiv>
<funcsynopsis>
<funcsynopsisinfo>#include &lt;systemd/sd-bus.h&gt;</funcsynopsisinfo>
<funcprototype>
<funcdef>int <function>sd_bus_is_open</function></funcdef>
<paramdef>sd_bus *<parameter>bus</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>int <function>sd_bus_is_ready</function></funcdef>
<paramdef>sd_bus *<parameter>bus</parameter></paramdef>
</funcprototype>
</funcsynopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>
<para><function>sd_bus_is_open()</function> checks whether the specified bus connection is open, i.e. in the
process of being established, already established or in the process of being torn down. It returns zero when the
connection has not been started yet
(i.e. <citerefentry><refentrytitle>sd_bus_start</refentrytitle><manvolnum>3</manvolnum></citerefentry> or some
equivalent call has not been invoked yet), or is fully terminated again (for example after
<citerefentry><refentrytitle>sd_bus_close</refentrytitle><manvolnum>3</manvolnum></citerefentry>), it returns
positive otherwise.</para>
<para><function>sd_bus_is_ready()</function> checks whether the specified connection is fully established,
i.e. completed the connection and authentication phases of the protocol and received the
<function>Hello()</function> method call response, and is not in the process of being torn down again. It returns
zero outside of this state, and positive otherwise. Effectively, this function returns positive while regular
messages can be sent or received on the connection.</para>
<para>To be notified when the connection is fully established, use
<citerefentry><refentrytitle>sd_bus_set_connected_signal</refentrytitle><manvolnum>3</manvolnum></citerefentry> and
install a match for the <function>Connected()</function> signal on the
<literal>org.freedesktop.DBus.Local</literal> interface. To be notified when the connection is torn down again,
install a match for the <function>Disconnected()</function> signal on the
<literal>org.freedesktop.DBus.Local</literal> interface.</para>
</refsect1>
<refsect1>
<title>Return Value</title>
<para>On success, these functions return 0 or a positive integer. On failure, they return a negative errno-style
error code.</para>
</refsect1>
<refsect1>
<title>Errors</title>
<para>Returned errors may indicate the following problems:</para>
<variablelist>
<varlistentry>
<term><constant>-ECHILD</constant></term>
<listitem><para>The bus connection has been created in a different process.</para></listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1>
<title>Notes</title>
<para><function>sd_bus_is_open()</function> and <function>sd_bus_is_ready()</function> are available as
a shared library, which can be compiled and linked to with the <constant>libsystemd</constant> <citerefentry
project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry> file.</para>
</refsect1>
<refsect1>
<title>See Also</title>
<para>
<citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd-bus</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd_bus_start</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd_bus_close</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd_bus_set_connected_signal</refentrytitle><manvolnum>3</manvolnum></citerefentry>
</para>
</refsect1>
</refentry>

View File

@ -0,0 +1,137 @@
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<!--
SPDX-License-Identifier: LGPL-2.1+
This file is part of systemd.
Copyright 2017 Lennart Poettering
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.
systemd is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with systemd; If not, see <http://www.gnu.org/licenses/>.
-->
<refentry id="sd_bus_message_set_destination">
<refentryinfo>
<title>sd_bus_message_set_destination</title>
<productname>systemd</productname>
<authorgroup>
<author>
<contrib>Developer</contrib>
<firstname>Lennart</firstname>
<surname>Poettering</surname>
<email>lennart@poettering.net</email>
</author>
</authorgroup>
</refentryinfo>
<refmeta>
<refentrytitle>sd_bus_message_set_destination</refentrytitle>
<manvolnum>3</manvolnum>
</refmeta>
<refnamediv>
<refname>sd_bus_message_set_destination</refname>
<refname>sd_bus_message_set_sender</refname>
<refpurpose>Set the destination or sender service name of a bus message</refpurpose>
</refnamediv>
<refsynopsisdiv>
<funcsynopsis>
<funcsynopsisinfo>#include &lt;systemd/sd-bus.h&gt;</funcsynopsisinfo>
<funcprototype>
<funcdef>int <function>sd_bus_message_set_destination</function></funcdef>
<paramdef>sd_bus_message *<parameter>message</parameter></paramdef>
<paramdef>const char *<parameter>destination</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>int <function>sd_bus_message_set_sender</function></funcdef>
<paramdef>sd_bus_message *<parameter>message</parameter></paramdef>
<paramdef>const char *<parameter>sender</parameter></paramdef>
</funcprototype>
</funcsynopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>
<para><function>sd_bus_message_set_destination()</function> sets the destination service name for the specified bus
message object. The specified name must be a valid unique or well-known service name.</para>
<para><function>sd_bus_message_set_sender()</function> sets the sender service name for the specified bus message
object. The specified name must be a valid unique or well-known service name. This function is useful only for
messages to send on direct connections as for connections to bus brokers the broker will fill in the destination
field anyway, and the sender field set by original sender is ignored.</para>
</refsect1>
<refsect1>
<title>Return Value</title>
<para>On success, these calls return 0 or a positive integer. On failure, these calls return a negative errno-style
error code.</para>
</refsect1>
<refsect1>
<title>Errors</title>
<para>Returned errors may indicate the following problems:</para>
<variablelist>
<varlistentry>
<term><constant>-EINVAL</constant></term>
<listitem><para>A specified parameter is invalid.</para></listitem>
</varlistentry>
<varlistentry>
<term><constant>-EPERM</constant></term>
<listitem><para>The message is already sealed.</para></listitem>
</varlistentry>
<varlistentry>
<term><constant>-EEXIST</constant></term>
<listitem><para>The message already has a destination or sender field set.</para></listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1>
<title>Notes</title>
<para>The <function>sd_bus_message_set_destination()</function> and
<function>sd_bus_message_set_sender()</function> interfaces
are available as a shared library, which can be compiled and
linked to with the
<constant>libsystemd</constant> <citerefentry project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
file.</para>
</refsect1>
<refsect1>
<title>See Also</title>
<para>
<citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd-bus</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd_bus_new</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd_bus_set_sender</refentrytitle><manvolnum>3</manvolnum></citerefentry>
</para>
</refsect1>
</refentry>

View File

@ -46,7 +46,9 @@
<refnamediv>
<refname>sd_bus_request_name</refname>
<refname>sd_bus_request_name_async</refname>
<refname>sd_bus_release_name</refname>
<refname>sd_bus_release_name_async</refname>
<refpurpose>Request or release a well-known service name on a bus</refpurpose>
</refnamediv>
@ -61,71 +63,103 @@
<paramdef>uint64_t <parameter>flags</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>int <function>sd_bus_request_name_async</function></funcdef>
<paramdef>sd_bus *<parameter>bus</parameter></paramdef>
<paramdef>sd_bus_slot **<parameter>slot</parameter></paramdef>
<paramdef>const char *<parameter>name</parameter></paramdef>
<paramdef>uint64_t <parameter>flags</parameter></paramdef>
<paramdef>sd_bus_message_handler_t <parameter>callback</parameter></paramdef>
<paramdef>void *<parameter>userdata</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>int <function>sd_bus_release_name</function></funcdef>
<paramdef>sd_bus *<parameter>bus</parameter></paramdef>
<paramdef>const char *<parameter>name</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>int <function>sd_bus_release_name_async</function></funcdef>
<paramdef>sd_bus *<parameter>bus</parameter></paramdef>
<paramdef>sd_bus_slot **<parameter>slot</parameter></paramdef>
<paramdef>const char *<parameter>name</parameter></paramdef>
<paramdef>sd_bus_message_handler_t <parameter>callback</parameter></paramdef>
<paramdef>void *<parameter>userdata</parameter></paramdef>
</funcprototype>
</funcsynopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>
<para><function>sd_bus_request_name()</function> requests a
well-known service name on a bus. It takes a bus connection, a
valid bus name and a flags parameter. The flags parameter is a
combination of the following flags:</para>
<para><function>sd_bus_request_name()</function> requests a well-known service name on a bus. It takes a bus
connection, a valid bus name and a flags parameter. The flags parameter is a combination of the following
flags:</para>
<variablelist>
<varlistentry>
<term><varname>SD_BUS_NAME_ALLOW_REPLACEMENT</varname></term>
<listitem><para>After acquiring the name successfully, permit
other peers to take over the name when they try to acquire it
with the <varname>SD_BUS_NAME_REPLACE_EXISTING</varname> flag
set. If <varname>SD_BUS_NAME_ALLOW_REPLACEMENT</varname> is
not set on the original request, such a request by other peers
will be denied.</para></listitem>
<listitem><para>After acquiring the name successfully, permit other peers to take over the name when they try
to acquire it with the <varname>SD_BUS_NAME_REPLACE_EXISTING</varname> flag set. If
<varname>SD_BUS_NAME_ALLOW_REPLACEMENT</varname> is not set on the original request, such a request by other
peers will be denied.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>SD_BUS_NAME_REPLACE_EXISTING</varname></term>
<listitem><para>Take over the name if it is already acquired
by another peer, and that other peer has permitted takeover by
setting <varname>SD_BUS_NAME_ALLOW_REPLACEMENT</varname> while
acquiring it.</para></listitem>
<listitem><para>Take over the name if it is already acquired by another peer, and that other peer has permitted
takeover by setting <varname>SD_BUS_NAME_ALLOW_REPLACEMENT</varname> while acquiring it.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>SD_BUS_NAME_QUEUE</varname></term>
<listitem><para>Queue the acquisition of the name when the
name is already taken.</para></listitem>
<listitem><para>Queue the acquisition of the name when the name is already taken.</para></listitem>
</varlistentry>
</variablelist>
<para><function>sd_bus_release_name()</function> releases an
acquired well-known name. It takes a bus connection and a valid
bus name as parameters.</para>
<para><function>sd_bus_request_name()</function> operates in a synchronous fashion: a message requesting the name
is sent to the bus broker, and the call waits until the broker responds.</para>
<para><function>sd_bus_request_name_async()</function> is an asynchronous version of of
<function>sd_bus_release_name()</function>. Instead of waiting for the request to complete, the request message is
enqueued. The specified <parameter>callback</parameter> will be called when the broker's response is received. If
the parameter is specified as <constant>NULL</constant> a default implementation is used instead which will
terminate the connection when the name cannot be acquired. The function returns a slot object in its
<parameter>slot</parameter> parameter — if it is passed as non-<constant>NULL</constant> — which may be used as a
reference to the name request operation. Use
<citerefentry><refentrytitle>sd_bus_slot_unref</refentrytitle><manvolnum>3</manvolnum></citerefentry> to destroy
this reference. Note that destroying the reference will not unregister the name, but simply ensure the specified
callback is no longer called.</para>
<para><function>sd_bus_release_name()</function> releases an acquired well-known name. It takes a bus connection
and a valid bus name as parameters. This function operates synchronously, sending a release request message to the
bus broker and waiting for it to reply.</para>
<para><function>sd_bus_release_name_async()</function> is an asynchronous version of
<function>sd_bus_release_name()</function>. The specified <parameter>callback</parameter> function is called when
the name has been released successfully. If specified as <constant>NULL</constant> a generic implementation is used
that ignores the result of the operation. As above, the <parameter>slot</parameter> (if
non-<constant>NULL</constant>) is set to an object that may be used to reference the operation.</para>
<para>These functions are supported only on bus connections, i.e. connections to a bus broker and not on direct
connections.</para>
</refsect1>
<refsect1>
<title>Return Value</title>
<para>On success, these calls return 0 or a positive integer. On
failure, these calls return a negative errno-style error
code.</para>
<para>On success, these calls return 0 or a positive integer. On failure, these calls return a negative errno-style
error code.</para>
<para>If <varname>SD_BUS_NAME_QUEUE</varname> is specified,
<function>sd_bus_request_name()</function> will return 0 when the
name is already taken by another peer and the client has been
added to the queue for the name. In that case, the caller can
subscribe to <literal>NameOwnerChanged</literal> signals to be
notified when the name is successfully acquired.
<function>sd_bus_request_name()</function> returns &gt; 0 when the
name has immediately been acquired successfully.</para>
<para>If <varname>SD_BUS_NAME_QUEUE</varname> is specified, <function>sd_bus_request_name()</function> will return
0 when the name is already taken by another peer and the client has been added to the queue for the name. In that
case, the caller can subscribe to <literal>NameOwnerChanged</literal> signals to be notified when the name is
successfully acquired. <function>sd_bus_request_name()</function> returns &gt; 0 when the name has immediately
been acquired successfully.</para>
</refsect1>
<refsect1>
@ -137,56 +171,50 @@
<varlistentry>
<term><constant>-EALREADY</constant></term>
<listitem><para>The caller already is the owner of the
specified name.</para></listitem>
<listitem><para>The caller already is the owner of the specified name.</para></listitem>
</varlistentry>
<varlistentry>
<term><constant>-EEXIST</constant></term>
<listitem><para>The name has already been acquired by a
different peer, and SD_BUS_NAME_REPLACE_EXISTING was not
specified or the other peer did not specify
SD_BUS_NAME_ALLOW_REPLACEMENT while acquiring the
<listitem><para>The name has already been acquired by a different peer, and SD_BUS_NAME_REPLACE_EXISTING was
not specified or the other peer did not specify SD_BUS_NAME_ALLOW_REPLACEMENT while acquiring the
name.</para></listitem>
</varlistentry>
<varlistentry>
<term><constant>-ESRCH</constant></term>
<listitem><para>It was attempted to release a name that is
currently not registered on the bus.</para></listitem>
<listitem><para>It was attempted to release a name that is currently not registered on the
bus.</para></listitem>
</varlistentry>
<varlistentry>
<term><constant>-EADDRINUSE</constant></term>
<listitem><para>It was attempted to release a name that is
owned by a different peer on the bus.</para></listitem>
<listitem><para>It was attempted to release a name that is owned by a different peer on the
bus.</para></listitem>
</varlistentry>
<varlistentry>
<term><constant>-EINVAL</constant></term>
<listitem><para>A specified parameter is invalid. This is also
generated when the requested name is a special service name
reserved by the D-Bus specification, or when the operation is
requested on a connection that does not refer to a
bus.</para></listitem>
<listitem><para>A specified parameter is invalid. This is also generated when the requested name is a special
service name reserved by the D-Bus specification, or when the operation is requested on a connection that does
not refer to a bus.</para></listitem>
</varlistentry>
<varlistentry>
<term><constant>-ENOTCONN</constant></term>
<listitem><para>The bus connection has been
disconnected.</para></listitem>
<listitem><para>The bus connection has been disconnected.</para></listitem>
</varlistentry>
<varlistentry>
<term><constant>-ECHILD</constant></term>
<listitem><para>The bus connection has been created in a
different process than the current one.</para></listitem>
<listitem><para>The bus connection has been created in a different process than the current
one.</para></listitem>
</varlistentry>
</variablelist>
</refsect1>
@ -194,12 +222,9 @@
<refsect1>
<title>Notes</title>
<para>The <function>sd_bus_acquire_name()</function> and
<function>sd_bus_release_name()</function> interfaces are
available as a shared library, which can be compiled and linked to
with the
<constant>libsystemd</constant> <citerefentry project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
file.</para>
<para>The <function>sd_bus_acquire_name()</function> and the other interfaces described here are available as a
shared library, which can be compiled and linked to with the <constant>libsystemd</constant> <citerefentry
project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry> file.</para>
</refsect1>
<refsect1>
@ -208,7 +233,8 @@
<para>
<citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd-bus</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd_bus_new</refentrytitle><manvolnum>3</manvolnum></citerefentry>
<citerefentry><refentrytitle>sd_bus_new</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd_bus_slot_unref</refentrytitle><manvolnum>3</manvolnum></citerefentry>
</para>
</refsect1>

View File

@ -0,0 +1,143 @@
<?xml version='1.0'?> <!--*- Mode: nxml; nxml-child-indent: 2; indent-tabs-mode: nil -*-->
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<!--
SPDX-License-Identifier: LGPL-2.1+
This file is part of systemd.
Copyright 2017 Lennart Poettering
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.
systemd is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with systemd; If not, see <http://www.gnu.org/licenses/>.
-->
<refentry id="sd_bus_set_connected_signal">
<refentryinfo>
<title>sd_bus_set_connected_signal</title>
<productname>systemd</productname>
<authorgroup>
<author>
<contrib>Developer</contrib>
<firstname>Lennart</firstname>
<surname>Poettering</surname>
<email>lennart@poettering.net</email>
</author>
</authorgroup>
</refentryinfo>
<refmeta>
<refentrytitle>sd_bus_set_connected_signal</refentrytitle>
<manvolnum>3</manvolnum>
</refmeta>
<refnamediv>
<refname>sd_bus_set_connected_signal</refname>
<refname>sd_bus_get_connected_signal</refname>
<refpurpose>Control emmission of local connection establishment signal on bus connections</refpurpose>
</refnamediv>
<refsynopsisdiv>
<funcsynopsis>
<funcsynopsisinfo>#include &lt;systemd/sd-bus.h&gt;</funcsynopsisinfo>
<funcprototype>
<funcdef>int <function>sd_bus_set_connected_signal</function></funcdef>
<paramdef>sd_bus *<parameter>bus</parameter></paramdef>
<paramdef>int <parameter>b</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>int <function>sd_bus_get_connected_signal</function></funcdef>
<paramdef>sd_bus *<parameter>bus</parameter></paramdef>
</funcprototype>
</funcsynopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>
<para><function>sd_bus_set_connected_signal()</function> may be used to control whether a local, synthetic
<function>Connected()</function> signal message shall be generated and enqueued for dispatching when the connection
is fully established. If the <parameter>b</parameter> parameter is zero the message is not generated (the default),
otherwise it is generated.</para>
<para><function>sd_bus_get_connected_signal()</function> may be used to query whether this feature is enabled. It
returns zero if not, positive otherwise.</para>
<para>The <function>Connected()</function> signal message is generated from the
<literal>org.freedesktop.DBus.Local</literal> service and interface, and
<literal>/org/freedesktop/DBus/Local</literal> object path. Use
<citerefentry><refentrytitle>sd_bus_match_signal_async</refentrytitle><manvolnum>3</manvolnum></citerefentry> to
match on this signal.</para>
<para>This message is particularly useful on slow transports where connections take a long time to be
established. This is especially the case when
<citerefentry><refentrytitle>sd_bus_set_watch_bind</refentrytitle><manvolnum>3</manvolnum></citerefentry> is
used. The signal is generated when the
<citerefentry><refentrytitle>sd_bus_is_ready</refentrytitle><manvolnum>3</manvolnum></citerefentry> returns
positive for the first time.</para>
<para>The <function>Connected()</function> signal corresponds with the <function>Disconnected()</function> signal
that is synthesized locally when the connection is terminated. The latter is generated unconditionally however,
unlike the former which needs to be enabled explicitly before it is generated, with
<function>sd_bus_set_connected_signal()</function>.</para>
</refsect1>
<refsect1>
<title>Return Value</title>
<para>On success, these functions return 0 or a positive integer. On failure, they return a negative errno-style
error code.</para>
</refsect1>
<refsect1>
<title>Errors</title>
<para>Returned errors may indicate the following problems:</para>
<variablelist>
<varlistentry>
<term><constant>-ECHILD</constant></term>
<listitem><para>The bus connection has been created in a different process.</para></listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1>
<title>Notes</title>
<para><function>sd_bus_set_connected_signal()</function> and <function>sd_bus_get_connected_signal()</function> are available as
a shared library, which can be compiled and linked to with the <constant>libsystemd</constant> <citerefentry
project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry> file.</para>
</refsect1>
<refsect1>
<title>See Also</title>
<para>
<citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd-bus</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd_bus_match_signal_async</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd_bus_set_watch_bind</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd_bus_is_ready</refentrytitle><manvolnum>3</manvolnum></citerefentry>
</para>
</refsect1>
</refentry>

136
man/sd_bus_set_sender.xml Normal file
View File

@ -0,0 +1,136 @@
<?xml version='1.0'?> <!--*- Mode: nxml; nxml-child-indent: 2; indent-tabs-mode: nil -*-->
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<!--
SPDX-License-Identifier: LGPL-2.1+
This file is part of systemd.
Copyright 2017 Lennart Poettering
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.
systemd is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with systemd; If not, see <http://www.gnu.org/licenses/>.
-->
<refentry id="sd_bus_set_sender">
<refentryinfo>
<title>sd_bus_set_sender</title>
<productname>systemd</productname>
<authorgroup>
<author>
<contrib>Developer</contrib>
<firstname>Lennart</firstname>
<surname>Poettering</surname>
<email>lennart@poettering.net</email>
</author>
</authorgroup>
</refentryinfo>
<refmeta>
<refentrytitle>sd_bus_set_sender</refentrytitle>
<manvolnum>3</manvolnum>
</refmeta>
<refnamediv>
<refname>sd_bus_set_sender</refname>
<refname>sd_bus_get_sender</refname>
<refpurpose>Configure default sender for outgoing messages</refpurpose>
</refnamediv>
<refsynopsisdiv>
<funcsynopsis>
<funcsynopsisinfo>#include &lt;systemd/sd-bus.h&gt;</funcsynopsisinfo>
<funcprototype>
<funcdef>int <function>sd_bus_set_sender</function></funcdef>
<paramdef>sd_bus *<parameter>bus</parameter></paramdef>
<paramdef>const char* <parameter>name</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>int <function>sd_bus_get_sender</function></funcdef>
<paramdef>sd_bus *<parameter>bus</parameter></paramdef>
<paramdef>const char** <parameter>name</parameter></paramdef>
</funcprototype>
</funcsynopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>
<para><function>sd_bus_set_sender()</function> configures the default sender service name to use for outgoing
messages. The service name specified in the <parameter>name</parameter> parameter is set on all outgoing messages
that are sent on the connection and have no sender set yet, for example through
<citerefentry><refentrytitle>sd_bus_message_set_sender</refentrytitle><manvolnum>3</manvolnum></citerefentry>. Note
that this function is only supported on direct connections, i.e. not on connections to a bus broker as the broker
will fill in the sender service name automatically anyway. By default no sender name is configured, and hence
messages are sent without sender field set. If the <parameter>name</parameter> parameter is specified as
<constant>NULL</constant> the default sender service name is cleared, returning to the default state if a default
sender service name was set before. If passed as non-<constant>NULL</constant> the specified name must be a valid
unique or well-known service name.</para>
<para><function>sd_bus_get_sender()</function> may be used to query the current default service name for outgoing
messages.</para>
</refsect1>
<refsect1>
<title>Return Value</title>
<para>On success, these functions return 0 or a positive integer. On failure, they return a negative errno-style
error code.</para>
</refsect1>
<refsect1>
<title>Errors</title>
<para>Returned errors may indicate the following problems:</para>
<variablelist>
<varlistentry>
<term><constant>-ECHILD</constant></term>
<listitem><para>The bus connection has been created in a different process.</para></listitem>
</varlistentry>
<varlistentry>
<term><constant>-EPERM</constant></term>
<listitem><para>The specified bus connection object is a not a direct but a brokered connection.</para></listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1>
<title>Notes</title>
<para><function>sd_bus_set_sender()</function> and <function>sd_bus_get_sender()</function> are available as
a shared library, which can be compiled and linked to with the <constant>libsystemd</constant> <citerefentry
project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry> file.</para>
</refsect1>
<refsect1>
<title>See Also</title>
<para>
<citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd-bus</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd_bus_message_set_sender</refentrytitle><manvolnum>3</manvolnum></citerefentry>
</para>
</refsect1>
</refentry>

View File

@ -0,0 +1,152 @@
<?xml version='1.0'?> <!--*- Mode: nxml; nxml-child-indent: 2; indent-tabs-mode: nil -*-->
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<!--
SPDX-License-Identifier: LGPL-2.1+
This file is part of systemd.
Copyright 2017 Lennart Poettering
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.
systemd is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with systemd; If not, see <http://www.gnu.org/licenses/>.
-->
<refentry id="sd_bus_set_watch_bind">
<refentryinfo>
<title>sd_bus_set_watch_bind</title>
<productname>systemd</productname>
<authorgroup>
<author>
<contrib>Developer</contrib>
<firstname>Lennart</firstname>
<surname>Poettering</surname>
<email>lennart@poettering.net</email>
</author>
</authorgroup>
</refentryinfo>
<refmeta>
<refentrytitle>sd_bus_set_watch_bind</refentrytitle>
<manvolnum>3</manvolnum>
</refmeta>
<refnamediv>
<refname>sd_bus_set_watch_bind</refname>
<refname>sd_bus_get_watch_bind</refname>
<refpurpose>Control socket binding watching on bus connections</refpurpose>
</refnamediv>
<refsynopsisdiv>
<funcsynopsis>
<funcsynopsisinfo>#include &lt;systemd/sd-bus.h&gt;</funcsynopsisinfo>
<funcprototype>
<funcdef>int <function>sd_bus_set_watch_bind</function></funcdef>
<paramdef>sd_bus *<parameter>bus</parameter></paramdef>
<paramdef>int <parameter>b</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>int <function>sd_bus_get_watch_bind</function></funcdef>
<paramdef>sd_bus *<parameter>bus</parameter></paramdef>
</funcprototype>
</funcsynopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>
<para><function>sd_bus_set_watch_bind()</function> may be used to enable or disable client-side watching of server
socket binding for a bus connection object. If the <parameter>b</parameter> is true, the feature is enabled,
otherwise disabled (which is the default). When enabled, and the selected bus address refers to an
<filename>AF_UNIX</filename> socket in the file system which does not exist while the connection attempt is made an
<citerefentry><refentrytitle>inotify</refentrytitle><manvolnum>7</manvolnum></citerefentry> watch is installed on
it, waiting for the socket to appear. As soon as the socket appears the connection is made. This functionality is
useful in particular in early-boot programs that need to run before the system bus is available, but want to
connect to it the instant it may be connected to.</para>
<para><function>sd_bus_get_watch_bind()</function> may be used to query the current setting of this feature. It
returns zero when the feature is disabled, and positive if enabled.</para>
<para>Note that no timeout is applied while it is waited for the socket to appear. This means that any synchronous
remote operation (such as
<citerefentry><refentrytitle>sd_bus_call</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd_bus_add_match</refentrytitle><manvolnum>3</manvolnum></citerefentry> or
<citerefentry><refentrytitle>sd_bus_request_name</refentrytitle><manvolnum>3</manvolnum></citerefentry>), that is
used on a connection with this feature enabled that is not established yet might block unbounded if the socket is
never created. However, asynchronous remote operations (such as
<citerefentry><refentrytitle>sd_bus_send</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd_bus_add_match_async</refentrytitle><manvolnum>3</manvolnum></citerefentry> or
<citerefentry><refentrytitle>sd_bus_request_match_async</refentrytitle><manvolnum>3</manvolnum></citerefentry>) do
not block in this case, and safely enqueue the requested operations to be dispatched the instant the connection is
set up.</para>
<para>Use <citerefentry><refentrytitle>sd_bus_is_ready</refentrytitle><manvolnum>3</manvolnum></citerefentry> to
determine whether the connection is fully established, i.e. whether the peer socket has been bound, connected to
and authenticated. Use
<citerefentry><refentrytitle>sd_bus_set_connected_signal</refentrytitle><manvolnum>3</manvolnum></citerefentry> to
be notified when the connection is fully established.</para>
</refsect1>
<refsect1>
<title>Return Value</title>
<para>On success, these functions return 0 or a positive integer. On failure, they return a negative errno-style
error code.</para>
</refsect1>
<refsect1>
<title>Errors</title>
<para>Returned errors may indicate the following problems:</para>
<variablelist>
<varlistentry>
<term><constant>-ECHILD</constant></term>
<listitem><para>The bus connection has been created in a different process.</para></listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1>
<title>Notes</title>
<para><function>sd_bus_set_watch_bind()</function> and <function>sd_bus_get_watch_bind()</function> are available as
a shared library, which can be compiled and linked to with the <constant>libsystemd</constant> <citerefentry
project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry> file.</para>
</refsect1>
<refsect1>
<title>See Also</title>
<para>
<citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd-bus</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>inotify</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd_bus_call</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd_bus_add_match</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd_bus_request_name</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd_bus_is_ready</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd_bus_set_connected_signal</refentrytitle><manvolnum>3</manvolnum></citerefentry>
</para>
</refsect1>
</refentry>

View File

@ -230,6 +230,20 @@ else {
journal.</para>
</refsect1>
<refsect1>
<title>Signal safety</title>
<para>In general, <function>sd_journal_get_fd()</function>, <function>sd_journal_get_events()</function>, and
<function>sd_journal_get_timeout()</function> are <emphasis>not</emphasis> "async signal safe" in the meaning of
<citerefentry
project='man-pages'><refentrytitle>signal-safety</refentrytitle><manvolnum>7</manvolnum></citerefentry>.
Nevertheless, only the first call to any of those three functions performs unsafe operations, so subsequent calls
<emphasis>are</emphasis> safe.</para>
<para><function>sd_journal_process()</function> and <function>sd_journal_wait()</function> are not
safe. <function>sd_journal_reliable_fd()</function> is safe.</para>
</refsect1>
<refsect1>
<title>Notes</title>

View File

@ -205,8 +205,8 @@ sd_journal_send("MESSAGE=Hello World, this is PID %lu!", (unsigned long) getpid(
<title>Thread safety</title>
<para>All functions listed here are thread-safe and may be called in parallel from multiple threads.</para>
<para><function>sd_journal_sendv()</function> is "async signal safe" in the meaning of
<citerefentry project='man-pages'><refentrytitle>signal</refentrytitle><manvolnum>7</manvolnum></citerefentry>.
<para><function>sd_journal_sendv()</function> is "async signal safe" in the meaning of <citerefentry
project='man-pages'><refentrytitle>signal-safety</refentrytitle><manvolnum>7</manvolnum></citerefentry>.
</para>
<para><function>sd_journal_print</function>,

View File

@ -94,6 +94,10 @@
<para>It is recommended that applications log UTF-8 messages only
with this API, but this is not enforced.</para>
<para>Each invocation of <function>sd_journal_stream_fd()</function> allocates a new log stream file descriptor,
that is not shared with prior or later invocations. The file descriptor is write-only (its reading direction is
shut down), and <constant>O_NONBLOCK</constant> is turned off initially.</para>
</refsect1>
<refsect1>
@ -103,12 +107,19 @@
success or a negative errno-style error code.</para>
</refsect1>
<refsect1>
<title>Signal safety</title>
<para><function>sd_journal_stream_fd()</function> is "async signal safe" in the meaning of <citerefentry
project='man-pages'><refentrytitle>signal-safety</refentrytitle><manvolnum>7</manvolnum></citerefentry>.
</para>
</refsect1>
<refsect1>
<title>Notes</title>
<para>Function <function>sd_journal_stream_fd()</function> is thread-safe and may be called
from multiple threads. All calls will return the same file descriptor, although temporarily
multiple file descriptors may be open.</para>
from multiple threads.</para>
<para>The <function>sd_journal_stream_fd()</function> interface is
available as a shared library, which can be compiled and linked to

View File

@ -53,7 +53,7 @@
<refnamediv>
<refname>systemd-analyze</refname>
<refpurpose>Analyze system boot-up performance</refpurpose>
<refpurpose>Analyze and debug system manager</refpurpose>
</refnamediv>
<refsynopsisdiv>
@ -94,24 +94,14 @@
<cmdsynopsis>
<command>systemd-analyze</command>
<arg choice="opt" rep="repeat">OPTIONS</arg>
<arg choice="plain">set-log-level</arg>
<arg choice="plain"><replaceable>LEVEL</replaceable></arg>
<arg choice="plain">log-level</arg>
<arg choice="opt"><replaceable>LEVEL</replaceable></arg>
</cmdsynopsis>
<cmdsynopsis>
<command>systemd-analyze</command>
<arg choice="opt" rep="repeat">OPTIONS</arg>
<arg choice="plain">set-log-target</arg>
<arg choice="plain"><replaceable>TARGET</replaceable></arg>
</cmdsynopsis>
<cmdsynopsis>
<command>systemd-analyze</command>
<arg choice="opt" rep="repeat">OPTIONS</arg>
<arg choice="plain">get-log-level</arg>
</cmdsynopsis>
<cmdsynopsis>
<command>systemd-analyze</command>
<arg choice="opt" rep="repeat">OPTIONS</arg>
<arg choice="plain">get-log-target</arg>
<arg choice="plain">log-target</arg>
<arg choice="opt"><replaceable>TARGET</replaceable></arg>
</cmdsynopsis>
<cmdsynopsis>
<command>systemd-analyze</command>
@ -131,6 +121,12 @@
<arg choice="plain">calendar</arg>
<arg choice="plain" rep="repeat"><replaceable>SPECS</replaceable></arg>
</cmdsynopsis>
<cmdsynopsis>
<command>systemd-analyze</command>
<arg choice="opt" rep="repeat">OPTIONS</arg>
<arg choice="plain">service-watchdogs</arg>
<arg choice="opt"><replaceable>BOOL</replaceable></arg>
</cmdsynopsis>
</refsynopsisdiv>
<refsect1>
@ -139,7 +135,8 @@
<para><command>systemd-analyze</command> may be used to determine
system boot-up performance statistics and retrieve other state and
tracing information from the system and service manager, and to
verify the correctness of unit files.</para>
verify the correctness of unit files. It is also used to access
special functions useful for advanced system manager debugging.</para>
<para><command>systemd-analyze time</command> prints the time
spent in the kernel before userspace has been reached, the time
@ -191,26 +188,20 @@
state. Its format is subject to change without notice and should
not be parsed by applications.</para>
<para><command>systemd-analyze set-log-level
<replaceable>LEVEL</replaceable></command> changes the current log
level of the <command>systemd</command> daemon to
<replaceable>LEVEL</replaceable> (accepts the same values as
<para><command>systemd-analyze log-level</command>
prints the current log level of the <command>systemd</command> daemon.
If an optional argument <replaceable>LEVEL</replaceable> is provided, then the command changes the current log
level of the <command>systemd</command> daemon to <replaceable>LEVEL</replaceable> (accepts the same values as
<option>--log-level=</option> described in
<citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>).</para>
<para><command>systemd-analyze set-log-target
<replaceable>TARGET</replaceable></command> changes the current log
target of the <command>systemd</command> daemon to
<replaceable>TARGET</replaceable> (accepts the same values as
<para><command>systemd-analyze log-target</command>
prints the current log target of the <command>systemd</command> daemon.
If an optional argument <replaceable>TARGET</replaceable> is provided, then the command changes the current log
target of the <command>systemd</command> daemon to <replaceable>TARGET</replaceable> (accepts the same values as
<option>--log-target=</option>, described in
<citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>).</para>
<para><command>systemd-analyze get-log-level</command>
prints the current log level of the <command>systemd</command> daemon.</para>
<para><command>systemd-analyze get-log-target</command>
prints the current log target of the <command>systemd</command> daemon.</para>
<para><command>systemd-analyze syscall-filter <optional><replaceable>SET</replaceable></optional></command>
will list system calls contained in the specified system call set <replaceable>SET</replaceable>,
or all known sets if no sets are specified. Argument <replaceable>SET</replaceable> must include
@ -232,6 +223,14 @@
syntax described in
<citerefentry><refentrytitle>systemd.time</refentrytitle><manvolnum>7</manvolnum></citerefentry>.</para>
<para><command>systemd-analyze service-watchdogs</command>
prints the current state of service runtime watchdogs of the <command>systemd</command> daemon.
If an optional boolean argument is provided, then globally enables or disables the service
runtime watchdogs (<option>WatchdogSec=</option>) and emergency actions (e.g.
<option>OnFailure=</option> or <option>StartLimitAction=</option>); see
<citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
The hardware watchdog is not affected by this setting.</para>
<para>If no command is passed, <command>systemd-analyze
time</command> is implied.</para>

View File

@ -75,7 +75,7 @@
sufficient to redirect the kernel console with a kernel command
line argument such as <varname>console=</varname> to get both
kernel messages and a getty prompt on a serial TTY. See <ulink
url="https://www.kernel.org/doc/Documentation/kernel-parameters.txt"><filename>kernel-parameters.txt</filename></ulink>
url="https://www.kernel.org/doc/Documentation/admin-guide/kernel-parameters.txt"><filename>kernel-parameters.txt</filename></ulink>
for more information on the <varname>console=</varname> kernel
parameter.</para>

View File

@ -281,7 +281,7 @@
<term><uri>boot</uri></term>
<listitem><para>Limit events to the current boot of the system
(like <command>journalctl --this-boot</command>).</para></listitem>
(like <command>journalctl -b</command>).</para></listitem>
</varlistentry>
<varlistentry>

View File

@ -100,9 +100,9 @@
<citerefentry><refentrytitle>logind.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>
for information about the configuration of this service.</para>
<para>See <ulink
url="https://www.freedesktop.org/wiki/Software/systemd/multiseat">Multi-Seat
on Linux</ulink> for an introduction into basic concepts of logind
<para>See
<citerefentry><refentrytitle>sd-login</refentrytitle><manvolnum>3</manvolnum></citerefentry>
for information about the basic concepts of logind
such as users, sessions and seats.</para>
<para>See the <ulink
@ -123,6 +123,7 @@
<citerefentry><refentrytitle>loginctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
<citerefentry><refentrytitle>logind.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
<citerefentry><refentrytitle>pam_systemd</refentrytitle><manvolnum>8</manvolnum></citerefentry>
<citerefentry><refentrytitle>sd-login</refentrytitle><manvolnum>3</manvolnum></citerefentry>
</para>
</refsect1>

View File

@ -159,6 +159,14 @@
<listitem><para>Additional mount options for the mount point.</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--owner=<replaceable>USER</replaceable></option></term>
<listitem><para>Let the specified user <replaceable>USER</replaceable> own the mounted file system.
This is done by appending <option>uid=</option> and <option>gid=</option> options to the list
of mount options. Only certain file systems support this option.</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--fsck=</option></term>

View File

@ -122,6 +122,15 @@
<citerefentry><refentrytitle>sd_notify</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--uid=</option><replaceable>USER</replaceable></term>
<listitem><para>Set the user ID to send the notification from. Takes a UNIX user name or numeric UID. When
specified the notification message will be sent with the specified UID as sender, in place of the user the
command was invoked as. This option requires sufficient privileges in order to be able manipulate the user
identity of the process.</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--status=</option></term>

View File

@ -149,7 +149,7 @@
<title>Options</title>
<para>If option <option>-b</option> is specified, the arguments
are used as arguments for the init binary. Otherwise,
are used as arguments for the init program. Otherwise,
<replaceable>COMMAND</replaceable> specifies the program to launch
in the container, and the remaining arguments are used as
arguments for this program. If <option>--boot</option> is not used and
@ -273,12 +273,12 @@
<term><option>--as-pid2</option></term>
<listitem><para>Invoke the shell or specified program as process ID (PID) 2 instead of PID 1 (init). By
default, if neither this option nor <option>--boot</option> is used, the selected binary is run as process with
PID 1, a mode only suitable for programs that are aware of the special semantics that the process with PID 1
has on UNIX. For example, it needs to reap all processes reparented to it, and should implement
default, if neither this option nor <option>--boot</option> is used, the selected program is run as the process
with PID 1, a mode only suitable for programs that are aware of the special semantics that the process with
PID 1 has on UNIX. For example, it needs to reap all processes reparented to it, and should implement
<command>sysvinit</command> compatible signal handling (specifically: it needs to reboot on SIGINT, reexecute
on SIGTERM, reload configuration on SIGHUP, and so on). With <option>--as-pid2</option> a minimal stub init
process is run as PID 1 and the selected binary is executed as PID 2 (and hence does not need to implement any
process is run as PID 1 and the selected program is executed as PID 2 (and hence does not need to implement any
special semantics). The stub init process will reap processes as necessary and react appropriately to
signals. It is recommended to use this mode to invoke arbitrary commands in containers, unless they have been
modified to run correctly as PID 1. Or in other words: this switch should be used for pretty much all commands,
@ -291,9 +291,9 @@
<term><option>-b</option></term>
<term><option>--boot</option></term>
<listitem><para>Automatically search for an init binary and invoke it as PID 1, instead of a shell or a user
<listitem><para>Automatically search for an init program and invoke it as PID 1, instead of a shell or a user
supplied program. If this option is used, arguments specified on the command line are used as arguments for the
init binary. This option may not be combined with <option>--as-pid2</option>.</para>
init program. This option may not be combined with <option>--as-pid2</option>.</para>
<para>The following table explains the different modes of invocation and relationship to
<option>--as-pid2</option> (see above):</para>
@ -322,7 +322,7 @@
<row>
<entry><option>--boot</option> specified</entry>
<entry>An init binary as automatically searched and run as PID 1 in the container. The passed parameters are used as invocation parameters for this process.</entry>
<entry>An init program is automatically searched for and run as PID 1 in the container. The passed parameters are used as invocation parameters for this process.</entry>
</row>
</tbody>
@ -398,6 +398,7 @@
</varlistentry>
<varlistentry>
<term><option>-S</option></term>
<term><option>--slice=</option></term>
<listitem><para>Make the container part of the specified slice, instead of the default
@ -705,22 +706,17 @@
<varlistentry>
<term><option>--capability=</option></term>
<listitem><para>List one or more additional capabilities to
grant the container. Takes a comma-separated list of
capability names, see
<listitem><para>List one or more additional capabilities to grant the container.
Takes a comma-separated list of capability names, see
<citerefentry project='man-pages'><refentrytitle>capabilities</refentrytitle><manvolnum>7</manvolnum></citerefentry>
for more information. Note that the following capabilities
will be granted in any way: CAP_CHOWN, CAP_DAC_OVERRIDE,
CAP_DAC_READ_SEARCH, CAP_FOWNER, CAP_FSETID, CAP_IPC_OWNER,
CAP_KILL, CAP_LEASE, CAP_LINUX_IMMUTABLE,
CAP_NET_BIND_SERVICE, CAP_NET_BROADCAST, CAP_NET_RAW,
CAP_SETGID, CAP_SETFCAP, CAP_SETPCAP, CAP_SETUID,
CAP_SYS_ADMIN, CAP_SYS_CHROOT, CAP_SYS_NICE, CAP_SYS_PTRACE,
CAP_SYS_TTY_CONFIG, CAP_SYS_RESOURCE, CAP_SYS_BOOT,
CAP_AUDIT_WRITE, CAP_AUDIT_CONTROL. Also CAP_NET_ADMIN is
retained if <option>--private-network</option> is specified.
If the special value <literal>all</literal> is passed, all
capabilities are retained.</para></listitem>
for more information. Note that the following capabilities will be granted in any way:
CAP_AUDIT_CONTROL, CAP_AUDIT_WRITE, CAP_CHOWN, CAP_DAC_OVERRIDE, CAP_DAC_READ_SEARCH,
CAP_FOWNER, CAP_FSETID, CAP_IPC_OWNER, CAP_KILL, CAP_LEASE, CAP_LINUX_IMMUTABLE,
CAP_MKNOD, CAP_NET_BIND_SERVICE, CAP_NET_BROADCAST, CAP_NET_RAW, CAP_SETFCAP,
CAP_SETGID, CAP_SETPCAP, CAP_SETUID, CAP_SYS_ADMIN, CAP_SYS_BOOT, CAP_SYS_CHROOT,
CAP_SYS_NICE, CAP_SYS_PTRACE, CAP_SYS_RESOURCE, CAP_SYS_TTY_CONFIG. Also CAP_NET_ADMIN
is retained if <option>--private-network</option> is specified. If the special value
<literal>all</literal> is passed, all capabilities are retained.</para></listitem>
</varlistentry>
<varlistentry>
@ -1114,7 +1110,7 @@
<example>
<title>Spawn a shell in a container of a minimal Debian unstable distribution</title>
<programlisting># debootstrap --arch=amd64 unstable ~/debian-tree/
<programlisting># debootstrap unstable ~/debian-tree/
# systemd-nspawn -D ~/debian-tree/</programlisting>
<para>This installs a minimal Debian unstable distribution into

View File

@ -0,0 +1,86 @@
<?xml version="1.0"?>
<!--*-nxml-*-->
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<!--
SPDX-License-Identifier: LGPL-2.1+
This file is part of systemd.
Copyright 2017 Lennart Poettering
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.
systemd is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with systemd; If not, see <http://www.gnu.org/licenses/>.
-->
<refentry id="systemd-rc-local-generator">
<refentryinfo>
<title>systemd-rc-local-generator</title>
<productname>systemd</productname>
<authorgroup>
<author>
<contrib>Developer</contrib>
<firstname>Lennart</firstname>
<surname>Poettering</surname>
<email>lennart@poettering.net</email>
</author>
</authorgroup>
</refentryinfo>
<refmeta>
<refentrytitle>systemd-rc-local-generator</refentrytitle>
<manvolnum>8</manvolnum>
</refmeta>
<refnamediv>
<refname>systemd-rc-local-generator</refname>
<refpurpose>Compatibility generator for starting <filename>/etc/rc.local</filename> and <filename>/usr/sbin/halt.local</filename> during boot and shutdown</refpurpose>
</refnamediv>
<refsynopsisdiv>
<para><filename>/usr/lib/systemd/system-generators/systemd-rc-local-generator</filename></para>
</refsynopsisdiv>
<refsect1>
<title>Description</title>
<para><filename>systemd-rc-local-generator</filename> is a generator that checks whether
<filename>/etc/rc.local</filename> exists and is executable, and if it is pulls the
<filename>rc-local.service</filename> unit into the boot process. This unit is responsible for running this script
during late boot. Note that the script will be run with slightly different semantics than the original System V
version, which was run "last" in the boot process, which is a concept that does not translate to systemd. The
script is run after <filename>network.target</filename>, but in parallel with most other regular system
services.</para>
<para><filename>systemd-rc-local-generator</filename> also checks whether <filename>/usr/sbin/halt.local</filename>
exists and is executable, and if it is pulls the <filename>halt-local.service</filename> unit into the shutdown
process. This unit is responsible for running this script during later shutdown.</para>
<para>Support for both <filename>/etc/rc.local</filename> and <filename>/usr/sbin/halt.local</filename> is provided
for compatibility with specific System V systems only. However, it is strongly recommended to avoid making use of
these scripts today, and instead provide proper unit files with appropriate dependencies for any scripts to run
during the boot or shutdown processes.</para>
<para><filename>systemd-rc-local-generator</filename> implements
<citerefentry><refentrytitle>systemd.generator</refentrytitle><manvolnum>7</manvolnum></citerefentry>.</para>
</refsect1>
<refsect1>
<title>See Also</title>
<para>
<citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
</para>
</refsect1>
</refentry>

View File

@ -47,7 +47,7 @@
<refnamediv>
<refname>systemd-run</refname>
<refpurpose>Run programs in transient scope units, service units, or timer-scheduled service units</refpurpose>
<refpurpose>Run programs in transient scope units, service units, or path-, socket-, or timer-triggered service units</refpurpose>
</refnamediv>
<refsynopsisdiv>
@ -58,6 +58,20 @@
<arg choice="opt" rep="repeat">ARGS</arg>
</arg>
</cmdsynopsis>
<cmdsynopsis>
<command>systemd-run</command>
<arg choice="opt" rep="repeat">OPTIONS</arg>
<arg choice="opt" rep="repeat">PATH OPTIONS</arg>
<arg choice="req"><replaceable>COMMAND</replaceable></arg>
<arg choice="opt" rep="repeat">ARGS</arg>
</cmdsynopsis>
<cmdsynopsis>
<command>systemd-run</command>
<arg choice="opt" rep="repeat">OPTIONS</arg>
<arg choice="opt" rep="repeat">SOCKET OPTIONS</arg>
<arg choice="req"><replaceable>COMMAND</replaceable></arg>
<arg choice="opt" rep="repeat">ARGS</arg>
</cmdsynopsis>
<cmdsynopsis>
<command>systemd-run</command>
<arg choice="opt" rep="repeat">OPTIONS</arg>
@ -72,8 +86,8 @@
<para><command>systemd-run</command> may be used to create and start a transient <filename>.service</filename> or
<filename>.scope</filename> unit and run the specified <replaceable>COMMAND</replaceable> in it. It may also be
used to create and start a transient <filename>.timer</filename> unit, that activates a
<filename>.service</filename> unit when elapsing.</para>
used to create and start a transient <filename>.path</filename>, <filename>.socket</filename>, or
<filename>.timer</filename> unit, that activates a <filename>.service</filename> unit when elapsing.</para>
<para>If a command is run as transient service unit, it will be started and managed by the service manager like any
other service, and thus shows up in the output of <command>systemctl list-units</command> like any other unit. It
@ -88,12 +102,13 @@
list-units</command>. Execution in this case is synchronous, and will return only when the command finishes. This
mode is enabled via the <option>--scope</option> switch (see below). </para>
<para>If a command is run with timer options such as <option>--on-calendar=</option> (see below), a transient timer
unit is created alongside the service unit for the specified command. Only the transient timer unit is started
immediately, the transient service unit will be started when the timer elapses. If the <option>--unit=</option>
option is specified, the <replaceable>COMMAND</replaceable> may be omitted. In this case,
<command>systemd-run</command> creates only a <filename>.timer</filename> unit that invokes the specified unit when
elapsing.</para>
<para>If a command is run with path, socket, or timer options such as <option>--on-calendar=</option> (see below),
a transient path, socket, or timer unit is created alongside the service unit for the specified command. Only the
transient path, socket, or timer unit is started immediately, the transient service unit will be triggered by the
path, socket, or timer unit. If the <option>--unit=</option> option is specified, the
<replaceable>COMMAND</replaceable> may be omitted. In this case, <command>systemd-run</command> creates only a
<filename>.path</filename>, <filename>.socket</filename>, or <filename>.timer</filename> unit that triggers the
specified unit.</para>
</refsect1>
<refsect1>
@ -140,8 +155,8 @@
<varlistentry>
<term><option>--description=</option></term>
<listitem><para>Provide a description for the service, scope or timer unit. If not specified, the command
itself will be used as a description. See <varname>Description=</varname> in
<listitem><para>Provide a description for the service, scope, path, socket, or timer unit. If not specified,
the command itself will be used as a description. See <varname>Description=</varname> in
<citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
</para></listitem>
</varlistentry>
@ -155,6 +170,7 @@
</varlistentry>
<varlistentry>
<term><option>-r</option></term>
<term><option>--remain-after-exit</option></term>
<listitem><para>After the service process has terminated, keep the service around until it is explicitly
@ -278,7 +294,8 @@
command. See <varname>OnActiveSec=</varname>, <varname>OnBootSec=</varname>, <varname>OnStartupSec=</varname>,
<varname>OnUnitActiveSec=</varname> and <varname>OnUnitInactiveSec=</varname> in
<citerefentry><refentrytitle>systemd.timer</refentrytitle><manvolnum>5</manvolnum></citerefentry> for
details. These options may not be combined with <option>--scope</option> or <option>--pty</option>.</para>
details. These options are shortcuts for <command>--timer-property=</command> with the relevant properties.
These options may not be combined with <option>--scope</option> or <option>--pty</option>.</para>
</listitem>
</varlistentry>
@ -287,20 +304,23 @@
<listitem><para>Defines a calendar timer for starting the specified command. See <varname>OnCalendar=</varname>
in <citerefentry><refentrytitle>systemd.timer</refentrytitle><manvolnum>5</manvolnum></citerefentry>. This
option may not be combined with <option>--scope</option> or <option>--pty</option>.</para>
option is a shortcut for <command>--timer-property=OnCalendar=</command>. This option may not be combined with
<option>--scope</option> or <option>--pty</option>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>--path-property=</option></term>
<term><option>--socket-property=</option></term>
<term><option>--timer-property=</option></term>
<listitem><para>Sets a property on the timer unit that is created. This option is similar to
<option>--property=</option> but applies to the transient timer unit rather than the transient service unit
created. This option only has an effect in conjunction with <option>--on-active=</option>,
<option>--on-boot=</option>, <option>--on-startup=</option>, <option>--on-unit-active=</option>,
<option>--on-unit-inactive=</option> or <option>--on-calendar=</option>. This option takes an assignment in the
same format as <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>'s
<command>set-property</command> command.</para> </listitem>
<listitem><para>Sets a property on the path, socket, or timer unit that is created. This option is similar to
<option>--property=</option> but applies to the transient path, socket, or timer unit rather than the
transient service unit created. This option takes an assignment in the same format as
<citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>'s
<command>set-property</command> command. These options may not be combined with
<option>--scope</option> or <option>--pty</option>.</para>
</listitem>
</varlistentry>
<varlistentry>
@ -323,7 +343,7 @@
completed). On exit, terse information about the unit's runtime is shown, including total runtime (as well as
CPU usage, if <option>--property=CPUAccounting=1</option> was set) and the exit code and status of the main
process. This output may be suppressed with <option>--quiet</option>. This option may not be combined with
<option>--no-block</option>, <option>--scope</option> or the various timer options.</para></listitem>
<option>--no-block</option>, <option>--scope</option> or the various path, socket, or timer options.</para></listitem>
</varlistentry>
<varlistentry>
@ -352,8 +372,8 @@
<para>All command line arguments after the first non-option
argument become part of the command line of the launched
process. If a command is run as service unit, its first argument
needs to be an absolute binary path.</para>
process. If a command is run as service unit, the first argument
needs to be an absolute program path.</para>
</refsect1>
<refsect1>

View File

@ -62,8 +62,9 @@
<refsect1>
<title>Description</title>
<para><command>systemd-socket-activate</command> may be used to launch a socket-activated service binary from the command
line for testing purposes. It may also be used to launch individual instances of the service binary per connection.
<para><command>systemd-socket-activate</command> may be used to launch a socket-activated service program from the
command line for testing purposes. It may also be used to launch individual instances of the service program per
connection.
</para>
<para>The daemon to launch and its options should be specified
@ -97,7 +98,7 @@
<term><option>-a</option></term>
<term><option>--accept</option></term>
<listitem><para>Launch an instance of the service binary for each connection and pass the connection
<listitem><para>Launch an instance of the service program for each connection and pass the connection
socket.</para></listitem>
</varlistentry>

View File

@ -206,7 +206,7 @@
<programlisting># /etc/systemd/dnssd/http.dnssd
[Service]
Name=%h
Name=%H
Type=_http._tcp
Port=80
TxtText=path=/stats/index.html t=temperature_sensor</programlisting>

View File

@ -376,12 +376,14 @@ CapabilityBoundingSet=~CAP_B CAP_C</programlisting>
<listitem><para>Takes a boolean argument. If true, ensures that the service process and all its children can
never gain new privileges through <function>execve()</function> (e.g. via setuid or setgid bits, or filesystem
capabilities). This is the simplest and most effective way to ensure that a process and its children can never
elevate privileges again. Defaults to false, but certain settings force <varname>NoNewPrivileges=yes</varname>,
ignoring the value of this setting. This is the case when <varname>SystemCallFilter=</varname>,
elevate privileges again. Defaults to false, but certain settings override this and ignore the value of this
setting. This is the case when <varname>SystemCallFilter=</varname>,
<varname>SystemCallArchitectures=</varname>, <varname>RestrictAddressFamilies=</varname>,
<varname>RestrictNamespaces=</varname>, <varname>PrivateDevices=</varname>,
<varname>ProtectKernelTunables=</varname>, <varname>ProtectKernelModules=</varname>,
<varname>MemoryDenyWriteExecute=</varname>, or <varname>RestrictRealtime=</varname> are specified. Also see
<varname>MemoryDenyWriteExecute=</varname>, <varname>RestrictRealtime=</varname>, or
<varname>LockPersonality=</varname> are specified. Note that even if this setting is overridden by them,
<command>systemctl show</command> shows the original value of this setting. Also see
<ulink url="https://www.kernel.org/doc/html/latest/userspace-api/no_new_privs.html">No New Privileges
Flag</ulink>. </para></listitem>
</varlistentry>

View File

@ -261,7 +261,7 @@
<para>Of these two rules the first rule is probably the more
important one and breaks the second one sometimes. Hence,
when deciding whether to user argv[1], argv[2], or argv[3],
when deciding whether to use argv[1], argv[2], or argv[3],
your default choice should probably be argv[1].</para>
</listitem>
@ -336,6 +336,7 @@ find $dir</programlisting>
<citerefentry><refentrytitle>systemd-getty-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd-gpt-auto-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd-hibernate-resume-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd-rc-local-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd-system-update-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd-sysv-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>,

View File

@ -339,7 +339,7 @@
<varlistentry>
<term><varname>_STREAM_ID=</varname></term>
<listitem>
<para>Only applies to <literal>_TRANSPORT=stream</literal> records: specifies a randomized 128bit ID assigned
<para>Only applies to <literal>_TRANSPORT=stdout</literal> records: specifies a randomized 128bit ID assigned
to the stream connection when it was first created. This ID is useful to reconstruct individual log streams
from the log records: all log records carrying the same stream ID originate from the same stream.</para>
</listitem>
@ -347,7 +347,7 @@
<varlistentry>
<term><varname>_LINE_BREAK=</varname></term>
<listitem>
<para>Only applies to <literal>_TRANSPORT=stream</literal> records: indicates that the log message in the
<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 case the maximum log line length was reached, as

View File

@ -172,6 +172,17 @@
for details.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>KernelVersion=</varname></term>
<listitem>
<para>Checks whether the kernel version (as reported by <command>uname -r</command>) matches a certain
expression (or if prefixed with the exclamation mark does not match it). See
<literal>ConditionKernelVersion=</literal> in
<citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry> for
details.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>Architecture=</varname></term>
<listitem>
@ -442,6 +453,8 @@
</listitem>
</varlistentry>
</variablelist>
<para>Defaults to <literal>off</literal>.</para>
</listitem>
</varlistentry>
<varlistentry>

View File

@ -71,18 +71,22 @@
<citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
which define the execution environment the
<citerefentry project='man-pages'><refentrytitle>mount</refentrytitle><manvolnum>8</manvolnum></citerefentry>
binary is executed in, and in
program is executed in, and in
<citerefentry><refentrytitle>systemd.kill</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
which define the way the processes are terminated, and in
<citerefentry><refentrytitle>systemd.resource-control</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
which configure resource control settings for the processes of the
service. Note that the User= and Group= options are not
particularly useful for mount units specifying a
<literal>Type=</literal> option or using configuration not
specified in <filename>/etc/fstab</filename>;
service.</para>
<para>Note that the options <varname>User=</varname> and
<varname>Group=</varname> are not useful for mount units.
systemd passes two parameters to
<citerefentry project='man-pages'><refentrytitle>mount</refentrytitle><manvolnum>8</manvolnum></citerefentry>;
the values of <varname>What=</varname> and <varname>Where=</varname>.
When invoked in this way,
<citerefentry project='man-pages'><refentrytitle>mount</refentrytitle><manvolnum>8</manvolnum></citerefentry>
will refuse options that are not listed in
<filename>/etc/fstab</filename> if it is not run as UID 0.</para>
does not read any options from <filename>/etc/fstab</filename>, and
must be run as UID 0.</para>
<para>Mount units must be named after the mount point directories they control. Example: the mount point <filename
noindex='true'>/home/lennart</filename> must be configured in a unit file <filename>home-lennart.mount</filename>.

View File

@ -184,6 +184,9 @@
<entry>The virtual CAN tunnel driver (vxcan). Similar to the virtual ethernet driver veth, vxcan implements a local CAN traffic tunnel between two virtual CAN network devices. When creating a vxcan, two vxcan devices are created as pair. When one end receives the packet it appears on its pair and vice versa. The vxcan can be used for cross namespace communication.
</entry></row>
<row><entry><varname>wireguard</varname></entry>
<entry>WireGuard Secure Network Tunnel.</entry></row>
</tbody>
</tgroup>
</table>
@ -232,6 +235,16 @@
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>KernelVersion=</varname></term>
<listitem>
<para>Checks whether the kernel version (as reported by <command>uname -r</command>) matches a certain
expression (or if prefixed with the exclamation mark does not match it). See
<literal>ConditionKernelVersion=</literal> in
<citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry> for details.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>Architecture=</varname></term>
<listitem>
@ -499,7 +512,15 @@
<term><varname>Mode=</varname></term>
<listitem>
<para>The IPVLAN mode to use. The supported options are
<literal>L2</literal> and <literal>L3</literal>.
<literal>L2</literal>,<literal>L3</literal> and <literal>L3S</literal>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>Flags=</varname></term>
<listitem>
<para>The IPVLAN flags to use. The supported options are
<literal>bridge</literal>,<literal>private</literal> and <literal>vepa</literal>.
</para>
</listitem>
</varlistentry>
@ -871,6 +892,14 @@
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>AllowLocalRemote=</varname></term>
<listitem>
<para>A boolean. When true allows tunnel traffic on <varname>ip6tnl</varname> devices where the remote endpoint is a local host address.
Defaults to unset.
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1>
@ -983,6 +1012,103 @@
as the <literal>[Tun]</literal> section.</para>
</refsect1>
<refsect1>
<title>[WireGuard] Section Options</title>
<para>The <literal>[WireGuard]</literal> section accepts the following
keys:</para>
<variablelist class='network-directives'>
<varlistentry>
<term><varname>PrivateKey=</varname></term>
<listitem>
<para>The Base64 encoded private key for the interface. It can be
generated using the <command>wg genkey</command> command
(see <citerefentry project="wireguard"><refentrytitle>wg</refentrytitle><manvolnum>8</manvolnum></citerefentry>).
This option is mandatory to use wireguard.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>ListenPort=</varname></term>
<listitem>
<para>Sets UDP port for listening. Takes either value between 1 and 65535
or <literal>auto</literal>. If <literal>auto</literal> is specified,
the port is automatically generated based on interface name.
Defaults to <literal>auto</literal>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>FwMark=</varname></term>
<listitem>
<para>Sets a firewall mark on outgoing wireguard packets from this interface.</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1>
<title>[WireGuardPeer] Section Options</title>
<para>The <literal>[WireGuardPeer]</literal> section accepts the following
keys:</para>
<variablelist class='network-directives'>
<varlistentry>
<term><varname>PublicKey=</varname></term>
<listitem>
<para>Sets a Base64 encoded public key calculated by <command>wg pubkey</command>
(see <citerefentry project="wireguard"><refentrytitle>wg</refentrytitle><manvolnum>8</manvolnum></citerefentry>)
from a private key, and usually transmitted out of band to the
author of the configuration file. This option is mandatory for this
section.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>PresharedKey=</varname></term>
<listitem>
<para>Optional preshared key for the interface. It can be generated
by the <command>wg genpsk</command> command. This option adds an
additional layer of symmetric-key cryptography to be mixed into the
already existing public-key cryptography, for post-quantum
resistance.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>AllowedIPs=</varname></term>
<listitem>
<para>Sets a comma-separated list of IP (v4 or v6) addresses with CIDR masks
from which this peer is allowed to send incoming traffic and to
which outgoing traffic for this peer is directed. The catch-all
0.0.0.0/0 may be specified for matching all IPv4 addresses, and
::/0 may be specified for matching all IPv6 addresses. </para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>Endpoint=</varname></term>
<listitem>
<para>Sets an endpoint IP address or hostname, followed by a colon, and then
a port number. This endpoint will be updated automatically once to
the most recent source IP address and port of correctly
authenticated packets from the peer at configuration time.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>PersistentKeepalive=</varname></term>
<listitem>
<para>Sets a seconds interval, between 1 and 65535 inclusive, of how often
to send an authenticated empty packet to the peer for the purpose
of keeping a stateful firewall or NAT mapping valid persistently.
For example, if the interface very rarely sends traffic, but it
might at anytime receive traffic from a peer, and it is behind NAT,
the interface might benefit from having a persistent keepalive
interval of 25 seconds. If set to 0 or "off", this option is
disabled. By default or when unspecified, this option is off.
Most users will not need this.</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1>
<title>[Bond] Section Options</title>
@ -1365,6 +1491,21 @@ Name=macvtap-test
Kind=macvtap
</programlisting>
</example>
<example>
<title>/etc/systemd/network/25-wireguard.netdev</title>
<programlisting>[NetDev]
Name=wg0
Kind=wireguard
[WireGuard]
PrivateKey=EEGlnEPYJV//kbvvIqxKkQwOiS+UENyPncC4bF46ong=
ListenPort=51820
[WireGuardPeer]
PublicKey=RDf+LSpeEre7YEIKaxg+wbpsNV7du+ktR99uBEtIiCA=
AllowedIPs=fd31:bf08:57cb::/48,192.168.26.0/24
Endpoint=wireguard.example.com:51820</programlisting>
</example>
</refsect1>
<refsect1>
<title>See Also</title>

View File

@ -193,6 +193,17 @@
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>KernelVersion=</varname></term>
<listitem>
<para>Checks whether the kernel version (as reported by <command>uname -r</command>) matches a certain
expression (or if prefixed with the exclamation mark does not match it). See
<literal>ConditionKernelVersion=</literal> in
<citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry> for
details.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>Architecture=</varname></term>
<listitem>
@ -656,8 +667,16 @@
<varlistentry>
<term><varname>IPv6PrefixDelegation=</varname></term>
<listitem><para>Whether to enable or disable Router Advertisement sending on a link.
Defaults to <literal>false</literal>. See the <literal>[IPv6PrefixDelegation]</literal>
and the <literal>[IPv6Prefix]</literal> sections for configuration options.
Allowed values are <literal>static</literal> which distributes prefixes as defined in
the <literal>[IPv6PrefixDelegation]</literal> and any <literal>[IPv6Prefix]</literal>
sections, <literal>dhcpv6</literal> which requests prefixes using a DHCPv6 client
configured for another link and any values configured in the
<literal>[IPv6PrefixDelegation]</literal> section while ignoring all static prefix
configuration sections, <literal>yes</literal> which uses both static configuration
and DHCPv6, and <literal>false</literal> which turns off IPv6 prefix delegation
altogether. Defaults to <literal>false</literal>. See the
<literal>[IPv6PrefixDelegation]</literal> and the <literal>[IPv6Prefix]</literal>
sections for more configuration options.
</para></listitem>
</varlistentry>
<varlistentry>
@ -1056,6 +1075,33 @@
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>InitialCongestionWindow=</varname></term>
<listitem>
<para>The TCP initial congestion window is used during the start of a TCP connection. During the start of a TCP
session, when a client requests a resource, the server's initial congestion window determines how many data bytes
will be sent during the initial burst of data. Takes a size in bytes between 1 and 4294967295 (2^32 - 1). The usual
suffixes K, M, G are supported and are understood to the base of 1024. Defaults to unset.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>InitialAdvertisedReceiveWindow=</varname></term>
<listitem>
<para>The TCP initial advertised receive window is the amount of receive data (in bytes) that can initally be buffered at one time
on a connection. The sending host can send only that amount of data before waiting for an acknowledgment and window update
from the receiving host. Takes a size in bytes between 1 and 4294967295 (2^32 - 1). The usual suffixes K, M, G are supported
and are understood to the base of 1024. Defaults to unset.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>QuickAck=</varname></term>
<listitem>
<para>Takes a boolean argument. When true enables TCP quick ack mode for the route. Defaults to unset.
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
@ -1266,6 +1312,20 @@
<para>Allow setting custom port for the DHCP client to listen on.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>RapidCommit=</varname></term>
<listitem>
<para>A boolean. The DHCPv6 client can obtain configuration parameters from a DHCPv6 server through
a rapid two-message exchange (solicit and reply). When the rapid commit option is enabled by both
the DHCPv6 client and the DHCPv6 server, the two-message exchange is used, rather than the default
four-method exchange (solicit, advertise, request, and reply). The two-message exchange provides
faster client configuration and is beneficial in environments in which networks are under a heavy load.
See <ulink url="https://tools.ietf.org/html/rfc3315#section-17.2.1">RFC 3315</ulink> for details.
Defaults to true.</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>

View File

@ -82,7 +82,7 @@
<citerefentry><refentrytitle>systemd-system-update-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>
checks whether <filename>/system-update</filename> exists. If so, it (temporarily and for
this boot only) redirects (i.e. symlinks) <filename>default.target</filename> to
<filename>system-update.target</filename>, a special target that is pulls in the base system
<filename>system-update.target</filename>, a special target that pulls in the base system
(i.e. <filename>sysinit.target</filename>, so that all file systems are mounted but little
else) and the system update units.</para>
</listitem>

View File

@ -136,23 +136,26 @@
</refsect1>
<refsect1>
<title>Example</title>
<title>Examples</title>
<example>
<title>Default off example <filename>/usr/lib/systemd/system-preset/99-default.preset</filename>:</title>
<title>Default to off</title>
<programlisting>disable *</programlisting>
<programlisting># /usr/lib/systemd/system-preset/99-default.preset
disable *</programlisting>
</example>
<para>This disables all units. Due to the filename prefix
<literal>99-</literal>, it will be read last and hence can easily
be overridden by spin or administrator preset policy or
suchlike.</para>
be overridden by spin or administrator preset policy.</para>
<example>
<title>A GNOME spin example <filename>/usr/lib/systemd/system-preset/50-gnome.preset</filename>:</title>
<title>A GNOME spin</title>
<programlisting>enable gdm.service
<programlisting># /usr/lib/systemd/system-preset/50-gnome.preset
enable gdm.service
enable colord.service
enable accounts-daemon.service
enable avahi-daemon.*</programlisting>
@ -168,9 +171,11 @@ enable avahi-daemon.*</programlisting>
example like the one from the first example above.</para>
<example>
<title>Administrator policy <filename>/etc/systemd/system-preset/00-lennart.preset</filename>:</title>
<title>Administrator policy</title>
<programlisting>enable httpd.service
<programlisting># /etc/systemd/system-preset/00-lennart.preset
enable httpd.service
enable sshd.service
enable postfix.service
disable *</programlisting>
@ -179,8 +184,8 @@ disable *</programlisting>
<para>This enables three specific services and disables all
others. This is useful for administrators to specifically select
the units to enable, and disable all others. Due to the filename
prefix <literal>00-</literal> it will be read early and hence
overrides all other preset policy files.</para>
prefix <literal>00-</literal> it will be read early and
override all other preset policy files.</para>
</refsect1>
<refsect1>

View File

@ -100,8 +100,6 @@
late system shutdown should disable
<varname>DefaultDependencies=</varname> option.</para></listitem>
</itemizedlist>
<para></para>
</refsect1>
<refsect1>

View File

@ -228,10 +228,10 @@
<varname>PrivateNetwork=</varname><option>yes</option>.</para>
<para>Behavior of <option>idle</option> is very similar to <option>simple</option>; however, actual execution
of the service binary is delayed until all active jobs are dispatched. This may be used to avoid interleaving
of the service program is delayed until all active jobs are dispatched. This may be used to avoid interleaving
of output of shell services with the status output on the console. Note that this type is useful only to
improve console output, it is not useful as a general unit ordering tool, and the effect of this service type
is subject to a 5s time-out, after which the service binary is invoked anyway.</para>
is subject to a 5s time-out, after which the service program is invoked anyway.</para>
</listitem>
</varlistentry>
@ -264,16 +264,14 @@
<varlistentry>
<term><varname>PIDFile=</varname></term>
<listitem><para>Takes an absolute filename pointing to the
PID file of this daemon. Use of this option is recommended for
services where <varname>Type=</varname> is set to
<option>forking</option>. systemd will read the PID of the
main process of the daemon after start-up of the service.
systemd will not write to the file configured here, although
it will remove the file after the service has shut down if it
still exists.
</para>
</listitem>
<listitem><para>Takes an absolute path referring to the PID file of the service. Usage of this option is
recommended for services where <varname>Type=</varname> is set to <option>forking</option>. The service manager
will read the PID of the main process of the service from this file after start-up of the service. The service
manager will not write to the file configured here, although it will remove the file after the service has shut
down if it still exists. The PID file does not need to be owned by a privileged user, but if it is owned by an
unprivileged user additional safety restrictions are enforced: the file may not be a symlink to a file owned by
a different user (neither directly nor indirectly), and the PID file must refer to a process already belonging
to the service.</para></listitem>
</varlistentry>
<varlistentry>
@ -754,7 +752,8 @@
limiting configured with <varname>StartLimitIntervalSec=</varname>
and <varname>StartLimitBurst=</varname>, see
<citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>
for details.</para>
for details. A restarted service enters the failed state only
after the start limits are reached.</para>
<para>Setting this to <option>on-failure</option> is the
recommended choice for long-running services, in order to

View File

@ -277,17 +277,6 @@
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>getty-pre.target</filename></term>
<listitem>
<para>A special passive target unit. Users of this target
are expected to pull it in the boot transaction via
a dependency (e.g. <varname>Wants=</varname>). Order your
unit before this unit if you want to make use of the console
just before <filename>getty</filename> is started.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>graphical.target</filename></term>
<listitem>
@ -354,6 +343,29 @@
<option>noauto</option> mount options set.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>initrd-root-device.target</filename></term>
<listitem>
<para>A special initrd target unit that is reached when the root filesystem device is available, but before
it has been mounted.
<citerefentry><refentrytitle>systemd-fstab-generator</refentrytitle><manvolnum>3</manvolnum></citerefentry>
and
<citerefentry><refentrytitle>systemd-gpt-auto-generator</refentrytitle><manvolnum>3</manvolnum></citerefentry>
automatically setup the appropriate dependencies to make this happen.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>initrd-root-fs.target</filename></term>
<listitem>
<para><citerefentry><refentrytitle>systemd-fstab-generator</refentrytitle><manvolnum>3</manvolnum></citerefentry>
automatically adds dependencies of type
<varname>Before=</varname> to the
<filename>sysroot.mount</filename> unit, which is generated
from the kernel command line.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>kbrequest.target</filename></term>
<listitem>
@ -538,29 +550,6 @@
SysV.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>initrd-root-device.target</filename></term>
<listitem>
<para>A special initrd target unit that is reached when the root filesystem device is available, but before
it has been mounted.
<citerefentry><refentrytitle>systemd-fstab-generator</refentrytitle><manvolnum>3</manvolnum></citerefentry>
and
<citerefentry><refentrytitle>systemd-gpt-auto-generator</refentrytitle><manvolnum>3</manvolnum></citerefentry>
automatically setup the appropriate dependencies to make this happen.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>initrd-root-fs.target</filename></term>
<listitem>
<para><citerefentry><refentrytitle>systemd-fstab-generator</refentrytitle><manvolnum>3</manvolnum></citerefentry>
automatically adds dependencies of type
<varname>Before=</varname> to the
<filename>sysroot.mount</filename> unit, which is generated
from the kernel command line.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>runlevel2.target</filename></term>
<term><filename>runlevel3.target</filename></term>
@ -820,6 +809,17 @@
stopped.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>getty-pre.target</filename></term>
<listitem>
<para>A special passive target unit. Users of this target
are expected to pull it in the boot transaction via
a dependency (e.g. <varname>Wants=</varname>). Order your
unit before this unit if you want to make use of the console
just before <filename>getty</filename> is started.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>local-fs-pre.target</filename></term>
<listitem>

View File

@ -72,7 +72,7 @@
<citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
which define the execution environment the <citerefentry
project='man-pages'><refentrytitle>swapon</refentrytitle><manvolnum>8</manvolnum></citerefentry>
binary is executed in, in
program is executed in, in
<citerefentry><refentrytitle>systemd.kill</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
which define the way these processes are
terminated, and in

View File

@ -505,8 +505,8 @@
<listitem><para>Configures requirement dependencies on other units. If this unit gets activated, the units
listed here will be activated as well. If one of the other units fails to activate, and an ordering dependency
<varname>After=</varname> on the failing unit is set, this unit will not be started. Besides, with or without
specifying <varname>After=</varname>, this unit will be deactivated if one of the other units get deactivated.
This option may be specified more than once or multiple space-separated units may be
specifying <varname>After=</varname>, this unit will be stopped if one of the other units is explicitly
stopped. This option may be specified more than once or multiple space-separated units may be
specified in one option in which case requirement dependencies for all listed names will be created. Note that
requirement dependencies do not influence the order in which services are started or stopped. This has to be
configured independently with the <varname>After=</varname> or <varname>Before=</varname> options. If a unit
@ -665,7 +665,9 @@
<listitem><para>A space-separated list of one or more units
that are activated when this unit enters the
<literal>failed</literal> state.</para></listitem>
<literal>failed</literal> state. A service unit using
<varname>Restart=</varname> enters the failed state only after
the start limits are reached.</para></listitem>
</varlistentry>
<varlistentry>
@ -921,6 +923,7 @@
<term><varname>ConditionVirtualization=</varname></term>
<term><varname>ConditionHost=</varname></term>
<term><varname>ConditionKernelCommandLine=</varname></term>
<term><varname>ConditionKernelVersion=</varname></term>
<term><varname>ConditionSecurity=</varname></term>
<term><varname>ConditionCapability=</varname></term>
<term><varname>ConditionACPower=</varname></term>
@ -937,6 +940,7 @@
<term><varname>ConditionFileIsExecutable=</varname></term>
<term><varname>ConditionUser=</varname></term>
<term><varname>ConditionGroup=</varname></term>
<term><varname>ConditionControlGroupController=</varname></term>
<!-- We do not document ConditionNull=
here, as it is not particularly
@ -1047,6 +1051,17 @@
the exact assignment is looked for with right and left hand
side matching.</para>
<para><varname>ConditionKernelVersion=</varname> may be used to check whether the kernel version (as reported
by <command>uname -r</command>) matches a certain expression (or if prefixed with the exclamation mark does not
match it). The argument must be a single string. If the string starts with one of <literal>&lt;</literal>,
<literal>&lt;=</literal>, <literal>=</literal>, <literal>&gt;=</literal>, <literal>&gt;</literal> a relative
version comparison is done, otherwise the specified string is matched with shell-style globs.</para>
<para>Note that using the kernel version string is an unreliable way to determine which features are supported
by a kernel, because of the widespread practice of backporting drivers, features, and fixes from newer upstream
kernels into older versions provided by distributions. Hence, this check is inherently unportable and should
not be used for units which may be used on different distributions.</para>
<para><varname>ConditionSecurity=</varname> may be used to
check whether the given security module is enabled on the
system. Currently, the recognized values are
@ -1164,6 +1179,18 @@
auxiliary groups match the specified group or GID. This setting
does not have a special value <literal>@system</literal>.</para>
<para><varname>ConditionControlGroupController=</varname> takes a
cgroup controller name (eg. <option>cpu</option>), verifying that it is
available for use on the system. For example, a particular controller
may not be available if it was disabled on the kernel command line with
<literal>cgroup_disable=</literal><replaceable>controller</replaceable>.
Multiple controllers may be passed with a space separating them; in
this case the condition will only pass if all listed controllers are
available for use. Controllers unknown to systemd are ignored. Valid
controllers are <option>cpu</option>, <option>cpuacct</option>,
<option>io</option>, <option>blkio</option>, <option>memory</option>,
<option>devices</option>, and <option>pids</option>.</para>
<para>If multiple conditions are specified, the unit will be
executed if all of them apply (i.e. a logical AND is applied).
Condition checks can be prefixed with a pipe symbol (|) in
@ -1186,6 +1213,7 @@
<term><varname>AssertVirtualization=</varname></term>
<term><varname>AssertHost=</varname></term>
<term><varname>AssertKernelCommandLine=</varname></term>
<term><varname>AssertKernelVersion=</varname></term>
<term><varname>AssertSecurity=</varname></term>
<term><varname>AssertCapability=</varname></term>
<term><varname>AssertACPower=</varname></term>
@ -1202,6 +1230,7 @@
<term><varname>AssertFileIsExecutable=</varname></term>
<term><varname>AssertUser=</varname></term>
<term><varname>AssertGroup=</varname></term>
<term><varname>AssertControlGroupController=</varname></term>
<listitem><para>Similar to the <varname>ConditionArchitecture=</varname>,
<varname>ConditionVirtualization=</varname>, …, condition settings described above, these settings add

View File

@ -273,6 +273,15 @@
to all zeros.</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--service-watchdogs=</option></term>
<listitem><para>Globally enable/disable all service watchdog timeouts and emergency
actions. This setting may also be specified during boot, on the kernel
command line via the <varname>systemd.service_watchdogs=</varname>
option, see below. Defaults to enabled.</para></listitem>
</varlistentry>
<xi:include href="standard-options.xml" xpointer="help" />
<xi:include href="standard-options.xml" xpointer="version" />
</variablelist>
@ -297,11 +306,12 @@
states are called "activating", "deactivating"). A special
"failed" state is available as well, which is very similar to
"inactive" and is entered when the service failed in some way
(process returned error code on exit, or crashed, or an operation
timed out). If this state is entered, the cause will be logged,
for later reference. Note that the various unit types may have a
number of additional substates, which are mapped to the five
generalized unit states described here.</para>
(process returned error code on exit, or crashed, an operation
timed out, or after too many restarts). If this state is entered,
the cause will be logged, for later reference. Note that the
various unit types may have a number of additional substates,
which are mapped to the five generalized unit states described
here.</para>
<para>The following unit types are available:</para>
@ -404,7 +414,7 @@
<para>Processes systemd spawns are placed in individual Linux
control groups named after the unit which they belong to in the
private systemd hierarchy. (see <ulink
url="https://www.kernel.org/doc/Documentation/cgroups/cgroups.txt">cgroups.txt</ulink>
url="https://www.kernel.org/doc/Documentation/cgroup-v1/cgroups.txt">cgroups.txt</ulink>
for more information about control groups, or short "cgroups").
systemd uses this to effectively keep track of processes. Control
group information is maintained in the kernel, and is accessible
@ -573,7 +583,7 @@
<listitem><para>Upon receiving this signal the systemd system
manager will start the
<filename>ctrl-alt-del.target</filename> unit. This is mostly
equivalent to <command>systemctl start ctl-alt-del.target
equivalent to <command>systemctl start ctrl-alt-del.target
--job-mode=replace-irreversible</command>. If this signal is
received more than 7 times per 2s, an immediate reboot is
triggered. Note that pressing Ctrl-Alt-Del on the console
@ -963,6 +973,19 @@
</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>systemd.service_watchdogs=</varname></term>
<listitem><para>Takes a boolean argument. If disabled, all service runtime
watchdogs (<option>WatchdogSec=</option>) and emergency actions (e.g.
<option>OnFailure=</option> or <option>StartLimitAction=</option>) are
ignored by the system manager (PID 1); see
<citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
Defaults to enabled, i.e. watchdogs and failure actions are processed
normally. The hardware watchdog is not affected by this
option.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>systemd.show_status</varname></term>

View File

@ -191,7 +191,10 @@ u root 0 "Superuser" /root</programlisting>
in the file system. In this case, the UID/GID is read from the
path's owner/group. This is useful to create users whose UID/GID
match the owners of pre-existing files (such as SUID or SGID
binaries).</para>
binaries).
The syntax <literal><replaceable>uid</replaceable>:<replaceable>gid</replaceable></literal> is also supported to
allow creating user and group pairs with different numeric UID and GID values. The group with the indicated GID must get created explicitly before or it must already exist.
</para>
<para>For <varname>m</varname> lines, this field should contain
the group name to add to a user to.</para>

View File

@ -147,9 +147,8 @@ L /tmp/foobar - - - - /dev/null</programlisting>
<variablelist>
<varlistentry>
<term><varname>f</varname></term>
<listitem><para>Create a file if it does not exist yet. If
the argument parameter is given, it will be written to the
file. Does not follow symlinks.</para></listitem>
<listitem><para>Create a file if it does not exist yet. If the argument parameter is given and the file did
not exist yet, it will be written to the file. Does not follow symlinks.</para></listitem>
</varlistentry>
<varlistentry>
@ -484,6 +483,13 @@ r! /tmp/.X[0-9]*-lock</programlisting>
The second line in contrast to the first one would break a
running system, and will only be executed with
<option>--boot</option>.</para>
<para>Note that for all line types that result in creation of any kind of file node
(i.e. <varname>f</varname>/<varname>F</varname>,
<varname>d</varname>/<varname>D</varname>/<varname>v</varname>/<varname>q</varname>/<varname>Q</varname>,
<varname>p</varname>, <varname>L</varname>, <varname>c</varname>/<varname>b</varname> and <varname>C</varname>)
leading directories are implicitly created if needed, owned by root with an access mode of 0755. In order to
create them with different modes or ownership make sure to add appropriate <varname>d</varname> lines.</para>
</refsect2>
<refsect2>
@ -578,21 +584,14 @@ r! /tmp/.X[0-9]*-lock</programlisting>
<refsect2>
<title>Argument</title>
<para>For <varname>L</varname> lines determines the destination
path of the symlink. For <varname>c</varname> and
<varname>b</varname>, determines the major/minor of the device
node, with major and minor formatted as integers, separated by
<literal>:</literal>, e.g. <literal>1:3</literal>. For
<varname>f</varname>, <varname>F</varname>, and
<varname>w</varname>, the argument may be used to specify a short string that
is written to the file, suffixed by a newline. For
<varname>C</varname>, specifies the source file or
directory. For <varname>t</varname> and <varname>T</varname>,
determines extended attributes to be set. For
<varname>a</varname> and <varname>A</varname>, determines ACL
attributes to be set. For <varname>h</varname> and
<varname>H</varname>, determines the file attributes to
set. Ignored for all other lines.</para>
<para>For <varname>L</varname> lines determines the destination path of the symlink. For <varname>c</varname> and
<varname>b</varname>, determines the major/minor of the device node, with major and minor formatted as integers,
separated by <literal>:</literal>, e.g. <literal>1:3</literal>. For <varname>f</varname>, <varname>F</varname>,
and <varname>w</varname>, the argument may be used to specify a short string that is written to the file,
suffixed by a newline. For <varname>C</varname>, specifies the source file or directory. For <varname>t</varname>
and <varname>T</varname>, determines extended attributes to be set. For <varname>a</varname> and
<varname>A</varname>, determines ACL attributes to be set. For <varname>h</varname> and <varname>H</varname>,
determines the file attributes to set. Ignored for all other lines.</para>
<para>This field can contain specifiers, see below.</para>
</refsect2>
@ -697,7 +696,7 @@ d /run/uscreens 0755 root screen 10d12h
</programlisting>
<para>Contents of <filename>/run/screens</filename> and /run/uscreens will
cleaned up after 10 and 10½ days, respectively.</para>
be cleaned up after 10 and 10½ days, respectively.</para>
</example>
<example>

View File

@ -465,6 +465,9 @@
<para>Starting daemons or other long-running processes is not appropriate
for udev; the forked processes, detached or not, will be unconditionally
killed after the event handling has finished.</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>
</listitem>
</varlistentry>

View File

@ -16,7 +16,7 @@
# along with systemd; If not, see <http://www.gnu.org/licenses/>.
project('systemd', 'c',
version : '236',
version : '237',
license : 'LGPLv2+',
default_options: [
'c_std=gnu99',
@ -27,8 +27,8 @@ project('systemd', 'c',
meson_version : '>= 0.41',
)
libsystemd_version = '0.20.0'
libudev_version = '1.6.8'
libsystemd_version = '0.21.0'
libudev_version = '1.6.9'
# We need the same data in three different formats, ugh!
# Also, for hysterical reasons, we use different variable
@ -67,7 +67,7 @@ endif
sysvinit_path = get_option('sysvinit-path')
sysvrcnd_path = get_option('sysvrcnd-path')
have = sysvinit_path != '' or sysvrcnd_path != ''
have = sysvinit_path != '' and sysvrcnd_path != ''
conf.set10('HAVE_SYSV_COMPAT', have,
description : 'SysV init scripts and rcN.d links are supported')
m4_defines += have ? ['-DHAVE_SYSV_COMPAT'] : []
@ -259,11 +259,27 @@ substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-l
cc = meson.get_compiler('c')
pkgconfig = import('pkgconfig')
check_compilation_sh = find_program('tools/meson-check-compilation.sh')
meson_build_sh = find_program('tools/meson-build.sh')
cxx = find_program('c++', required : false)
if cxx.found()
# Used only for tests
add_languages('cpp')
if get_option('tests') != 'false'
cxx = find_program('c++', required : false)
if cxx.found()
# Used only for tests
add_languages('cpp')
endif
endif
want_ossfuzz = get_option('oss-fuzz')
want_libfuzzer = get_option('llvm-fuzz')
fuzzer_build = want_ossfuzz or want_libfuzzer
if want_ossfuzz and want_libfuzzer
error('only one of oss-fuzz and llvm-fuzz can be specified')
endif
if want_libfuzzer
fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
endif
if want_ossfuzz
fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
endif
foreach arg : ['-Wextra',
@ -300,7 +316,6 @@ foreach arg : ['-Wextra',
'-fvisibility=hidden',
'-fstack-protector',
'-fstack-protector-strong',
'-fPIE',
'--param=ssp-buffer-size=4',
]
if cc.has_argument(arg)
@ -308,6 +323,14 @@ foreach arg : ['-Wextra',
endif
endforeach
# the oss-fuzz fuzzers are not built with -fPIE, so don't
# enable it when we are linking against them
if not fuzzer_build
if cc.has_argument('-fPIE')
add_project_arguments('-fPIE', language : 'c')
endif
endif
# "negative" arguments: gcc on purpose does not return an error for "-Wno-"
# arguments, just emits a warnings. So test for the "positive" version instead.
foreach arg : ['unused-parameter',
@ -358,11 +381,25 @@ foreach arg : ['-Wl,-z,relro',
cc.cmd_array(), '-x', 'c', arg,
'-include', link_test_c).returncode() == 0
message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
if have
if have and (arg != '-pie' or not fuzzer_build)
add_project_link_arguments(arg, language : 'c')
endif
endforeach
# Check if various sanitizers are supported
sanitizers = []
foreach arg : ['address']
have = run_command(check_compilation_sh,
cc.cmd_array(), '-x', 'c',
'-fsanitize=@0@'.format(arg),
'-include', link_test_c).returncode() == 0
message('@0@ sanitizer supported: @1@'.format(arg, have ? 'yes' : 'no'))
if have
sanitizers += arg
endif
endforeach
if get_option('buildtype') != 'debug'
foreach arg : ['-ffunction-sections',
'-fdata-sections']
@ -422,7 +459,7 @@ foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
['IFLA_VRF_TABLE', 'linux/if_link.h'],
['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
['IFLA_IPVLAN_MODE', 'linux/if_link.h'],
['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
@ -437,6 +474,7 @@ foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
['NDA_IFINDEX', 'linux/neighbour.h'],
['IFA_FLAGS', 'linux/if_addr.h'],
['FRA_UID_RANGE', 'linux/fib_rules.h'],
@ -453,17 +491,17 @@ foreach ident : ['secure_getenv', '__secure_getenv']
endforeach
foreach ident : [
['memfd_create', '''#define _GNU_SOURCE
#include <sys/mman.h>'''],
['gettid', '''#include <sys/types.h>'''],
['pivot_root', '''#include <stdlib.h>'''], # no known header declares pivot_root
['name_to_handle_at', '''#define _GNU_SOURCE
#include <sys/types.h>
['memfd_create', '''#include <sys/mman.h>'''],
['gettid', '''#include <sys/types.h>
#include <unistd.h>'''],
['pivot_root', '''#include <stdlib.h>
#include <unistd.h>'''], # no known header declares pivot_root
['name_to_handle_at', '''#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>'''],
['setns', '''#define _GNU_SOURCE
#include <sched.h>'''],
['renameat2', '''#include <stdio.h>'''],
['setns', '''#include <sched.h>'''],
['renameat2', '''#include <stdio.h>
#include <fcntl.h>'''],
['kcmp', '''#include <linux/kcmp.h>'''],
['keyctl', '''#include <sys/types.h>
#include <keyutils.h>'''],
@ -474,11 +512,11 @@ foreach ident : [
['explicit_bzero' , '''#include <string.h>'''],
]
have = cc.has_function(ident[0], prefix : ident[1])
have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
conf.set10('HAVE_' + ident[0].to_upper(), have)
endforeach
if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''')
if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
conf.set10('USE_SYS_RANDOM_H', true)
conf.set10('HAVE_GETRANDOM', true)
else
@ -494,6 +532,7 @@ awk = find_program('awk')
m4 = find_program('m4')
stat = find_program('stat')
git = find_program('git', required : false)
env = find_program('env')
meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
mkdir_p = 'mkdir -p $DESTDIR/@0@'
@ -502,8 +541,7 @@ splash_bmp = files('test/splash.bmp')
# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
# /usr/sbin, /sbin, and fall back to the default from middle column.
progs = [['telinit', '/lib/sysvinit/telinit'],
['quotaon', '/usr/sbin/quotaon' ],
progs = [['quotaon', '/usr/sbin/quotaon' ],
['quotacheck', '/usr/sbin/quotacheck' ],
['kill', '/usr/bin/kill' ],
['kmod', '/usr/bin/kmod' ],
@ -530,6 +568,8 @@ foreach prog : progs
substs.set(name, path)
endforeach
conf.set_quoted('TELINIT', get_option('telinit-path'))
if run_command('ln', '--relative', '--help').returncode() != 0
error('ln does not support --relative')
endif
@ -565,7 +605,8 @@ conf.set('GPERF_LEN_TYPE', gperf_len_type,
if not cc.has_header('sys/capability.h')
error('POSIX caps headers not found')
endif
foreach header : ['linux/btrfs.h',
foreach header : ['crypt.h',
'linux/btrfs.h',
'linux/memfd.h',
'linux/vm_sockets.h',
'sys/auxv.h',
@ -763,10 +804,11 @@ if not libcap.found()
endif
libmount = dependency('mount',
version : '>= 2.30')
version : '>= 2.30',
required : not fuzzer_build)
want_seccomp = get_option('seccomp')
if want_seccomp != 'false'
if want_seccomp != 'false' and not fuzzer_build
libseccomp = dependency('libseccomp',
version : '>= 2.3.1',
required : want_seccomp == 'true')
@ -779,7 +821,7 @@ conf.set10('HAVE_SECCOMP', have)
m4_defines += have ? ['-DHAVE_SECCOMP'] : []
want_selinux = get_option('selinux')
if want_selinux != 'false'
if want_selinux != 'false' and not fuzzer_build
libselinux = dependency('libselinux',
version : '>= 2.1.9',
required : want_selinux == 'true')
@ -792,7 +834,7 @@ conf.set10('HAVE_SELINUX', have)
m4_defines += have ? ['-DHAVE_SELINUX'] : []
want_apparmor = get_option('apparmor')
if want_apparmor != 'false'
if want_apparmor != 'false' and not fuzzer_build
libapparmor = dependency('libapparmor',
required : want_apparmor == 'true')
have = libapparmor.found()
@ -812,7 +854,7 @@ endif
want_polkit = get_option('polkit')
install_polkit = false
install_polkit_pkla = false
if want_polkit != 'false'
if want_polkit != 'false' and not fuzzer_build
install_polkit = true
libpolkit = dependency('polkit-gobject-1',
@ -825,7 +867,7 @@ endif
conf.set10('ENABLE_POLKIT', install_polkit)
want_acl = get_option('acl')
if want_acl != 'false'
if want_acl != 'false' and not fuzzer_build
libacl = cc.find_library('acl', required : want_acl == 'true')
have = libacl.found()
else
@ -836,7 +878,7 @@ conf.set10('HAVE_ACL', have)
m4_defines += have ? ['-DHAVE_ACL'] : []
want_audit = get_option('audit')
if want_audit != 'false'
if want_audit != 'false' and not fuzzer_build
libaudit = dependency('audit', required : want_audit == 'true')
have = libaudit.found()
else
@ -846,7 +888,7 @@ endif
conf.set10('HAVE_AUDIT', have)
want_blkid = get_option('blkid')
if want_blkid != 'false'
if want_blkid != 'false' and not fuzzer_build
libblkid = dependency('blkid', required : want_blkid == 'true')
have = libblkid.found()
else
@ -856,7 +898,7 @@ endif
conf.set10('HAVE_BLKID', have)
want_kmod = get_option('kmod')
if want_kmod != 'false'
if want_kmod != 'false' and not fuzzer_build
libkmod = dependency('libkmod',
version : '>= 15',
required : want_kmod == 'true')
@ -868,7 +910,7 @@ endif
conf.set10('HAVE_KMOD', have)
want_pam = get_option('pam')
if want_pam != 'false'
if want_pam != 'false' and not fuzzer_build
libpam = cc.find_library('pam', required : want_pam == 'true')
libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
have = libpam.found() and libpam_misc.found()
@ -881,7 +923,7 @@ conf.set10('HAVE_PAM', have)
m4_defines += have ? ['-DHAVE_PAM'] : []
want_microhttpd = get_option('microhttpd')
if want_microhttpd != 'false'
if want_microhttpd != 'false' and not fuzzer_build
libmicrohttpd = dependency('libmicrohttpd',
version : '>= 0.9.33',
required : want_microhttpd == 'true')
@ -894,7 +936,7 @@ conf.set10('HAVE_MICROHTTPD', have)
m4_defines += have ? ['-DHAVE_MICROHTTPD'] : []
want_libcryptsetup = get_option('libcryptsetup')
if want_libcryptsetup != 'false'
if want_libcryptsetup != 'false' and not fuzzer_build
libcryptsetup = dependency('libcryptsetup',
version : '>= 1.6.0',
required : want_libcryptsetup == 'true')
@ -906,7 +948,7 @@ endif
conf.set10('HAVE_LIBCRYPTSETUP', have)
want_libcurl = get_option('libcurl')
if want_libcurl != 'false'
if want_libcurl != 'false' and not fuzzer_build
libcurl = dependency('libcurl',
version : '>= 7.32.0',
required : want_libcurl == 'true')
@ -924,7 +966,7 @@ if want_libidn == 'true' and want_libidn2 == 'true'
error('libidn and libidn2 cannot be requested simultaneously')
endif
if want_libidn != 'false' and want_libidn2 != 'true'
if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
libidn = dependency('libidn',
required : want_libidn == 'true')
have = libidn.found()
@ -934,7 +976,7 @@ else
endif
conf.set10('HAVE_LIBIDN', have)
m4_defines += have ? ['-DHAVE_LIBIDN'] : []
if not have and want_libidn2 != 'false'
if not have and want_libidn2 != 'false' and not fuzzer_build
# libidn is used for both libidn and libidn2 objects
libidn = dependency('libidn2',
required : want_libidn2 == 'true')
@ -946,7 +988,7 @@ conf.set10('HAVE_LIBIDN2', have)
m4_defines += have ? ['-DHAVE_LIBIDN2'] : []
want_libiptc = get_option('libiptc')
if want_libiptc != 'false'
if want_libiptc != 'false' and not fuzzer_build
libiptc = dependency('libiptc',
required : want_libiptc == 'true')
have = libiptc.found()
@ -958,7 +1000,7 @@ conf.set10('HAVE_LIBIPTC', have)
m4_defines += have ? ['-DHAVE_LIBIPTC'] : []
want_qrencode = get_option('qrencode')
if want_qrencode != 'false'
if want_qrencode != 'false' and not fuzzer_build
libqrencode = dependency('libqrencode',
required : want_qrencode == 'true')
have = libqrencode.found()
@ -969,7 +1011,7 @@ endif
conf.set10('HAVE_QRENCODE', have)
want_gcrypt = get_option('gcrypt')
if want_gcrypt != 'false'
if want_gcrypt != 'false' and not fuzzer_build
libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
have = libgcrypt.found() and libgpg_error.found()
@ -984,7 +1026,7 @@ endif
conf.set10('HAVE_GCRYPT', have)
want_gnutls = get_option('gnutls')
if want_gnutls != 'false'
if want_gnutls != 'false' and not fuzzer_build
libgnutls = dependency('gnutls',
version : '>= 3.1.4',
required : want_gnutls == 'true')
@ -996,7 +1038,7 @@ endif
conf.set10('HAVE_GNUTLS', have)
want_elfutils = get_option('elfutils')
if want_elfutils != 'false'
if want_elfutils != 'false' and not fuzzer_build
libdw = dependency('libdw',
required : want_elfutils == 'true')
have = libdw.found()
@ -1007,7 +1049,7 @@ endif
conf.set10('HAVE_ELFUTILS', have)
want_zlib = get_option('zlib')
if want_zlib != 'false'
if want_zlib != 'false' and not fuzzer_build
libz = dependency('zlib',
required : want_zlib == 'true')
have = libz.found()
@ -1018,7 +1060,7 @@ endif
conf.set10('HAVE_ZLIB', have)
want_bzip2 = get_option('bzip2')
if want_bzip2 != 'false'
if want_bzip2 != 'false' and not fuzzer_build
libbzip2 = cc.find_library('bz2',
required : want_bzip2 == 'true')
have = libbzip2.found()
@ -1029,7 +1071,7 @@ endif
conf.set10('HAVE_BZIP2', have)
want_xz = get_option('xz')
if want_xz != 'false'
if want_xz != 'false' and not fuzzer_build
libxz = dependency('liblzma',
required : want_xz == 'true')
have = libxz.found()
@ -1040,7 +1082,7 @@ endif
conf.set10('HAVE_XZ', have)
want_lz4 = get_option('lz4')
if want_lz4 != 'false'
if want_lz4 != 'false' and not fuzzer_build
liblz4 = dependency('liblz4',
required : want_lz4 == 'true')
have = liblz4.found()
@ -1051,7 +1093,7 @@ endif
conf.set10('HAVE_LZ4', have)
want_xkbcommon = get_option('xkbcommon')
if want_xkbcommon != 'false'
if want_xkbcommon != 'false' and not fuzzer_build
libxkbcommon = dependency('xkbcommon',
version : '>= 0.3.0',
required : want_xkbcommon == 'true')
@ -1062,8 +1104,19 @@ else
endif
conf.set10('HAVE_XKBCOMMON', have)
want_pcre2 = get_option('pcre2')
if want_pcre2 != 'false'
libpcre2 = dependency('libpcre2-8',
required : want_pcre2 == 'true')
have = libpcre2.found()
else
have = false
libpcre2 = []
endif
conf.set10('HAVE_PCRE2', have)
want_glib = get_option('glib')
if want_glib != 'false'
if want_glib != 'false' and not fuzzer_build
libglib = dependency('glib-2.0',
version : '>= 2.22.0',
required : want_glib == 'true')
@ -1082,7 +1135,7 @@ endif
conf.set10('HAVE_GLIB', have)
want_dbus = get_option('dbus')
if want_dbus != 'false'
if want_dbus != 'false' and not fuzzer_build
libdbus = dependency('dbus-1',
version : '>= 1.3.2',
required : want_dbus == 'true')
@ -1094,6 +1147,9 @@ endif
conf.set10('HAVE_DBUS', have)
default_dnssec = get_option('default-dnssec')
if fuzzer_build
default_dnssec = 'no'
endif
if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
default_dnssec = 'no'
@ -1173,9 +1229,11 @@ endforeach
want_tests = get_option('tests')
install_tests = get_option('install-tests')
slow_tests = get_option('slow-tests')
tests = []
fuzzers = []
conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', get_option('slow-tests'))
conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
#####################################################################
@ -1231,14 +1289,10 @@ includes = include_directories('src/basic',
'src/libsystemd/sd-netlink',
'src/libsystemd/sd-network',
'src/libsystemd-network',
'.',
)
'.')
add_project_arguments('-include', 'config.h', language : 'c')
gcrypt_util_sources = files('src/shared/gcrypt-util.h',
'src/shared/gcrypt-util.c')
subdir('po')
subdir('catalog')
subdir('src/systemd')
@ -1258,15 +1312,16 @@ libjournal_core = static_library(
libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
libsystemd = shared_library(
'systemd',
libsystemd_internal_sources,
journal_internal_sources,
'src/systemd/sd-id128.h', # pick a header file at random to work around old meson bug
version : libsystemd_version,
include_directories : includes,
link_args : ['-shared',
'-Wl,--version-script=' + libsystemd_sym_path],
link_with : [libbasic],
link_with : [libbasic,
libbasic_gcrypt],
link_whole : [libsystemd_static,
libjournal_client],
dependencies : [threads,
libgcrypt,
librt,
libxz,
liblz4],
@ -1302,6 +1357,7 @@ subdir('src/vconsole')
subdir('src/boot/efi')
subdir('src/test')
subdir('src/fuzz')
subdir('rules')
subdir('test')
@ -1338,7 +1394,7 @@ foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
'-shared',
'-Wl,--version-script=' + version_script_arg,
'-Wl,--undefined'],
link_with : [libsystemd_internal,
link_with : [libsystemd_static,
libbasic],
dependencies : [threads,
librt],
@ -1420,7 +1476,8 @@ exe = executable('journalctl',
dependencies : [threads,
libqrencode,
libxz,
liblz4],
liblz4,
libpcre2],
install_rpath : rootlibexecdir,
install : true,
install_dir : rootbindir)
@ -1507,11 +1564,11 @@ endif
if conf.get('ENABLE_RESOLVE') == 1
executable('systemd-resolved',
systemd_resolved_sources,
gcrypt_util_sources,
include_directories : includes,
link_with : [libshared],
link_with : [libshared,
libbasic_gcrypt,
libsystemd_resolve_core],
dependencies : [threads,
libgcrypt,
libgpg_error,
libm,
libidn],
@ -1521,11 +1578,11 @@ if conf.get('ENABLE_RESOLVE') == 1
exe = executable('systemd-resolve',
systemd_resolve_sources,
gcrypt_util_sources,
include_directories : includes,
link_with : [libshared],
link_with : [libshared,
libbasic_gcrypt,
libsystemd_resolve_core],
dependencies : [threads,
libgcrypt,
libgpg_error,
libm,
libidn],
@ -1576,7 +1633,7 @@ if conf.get('ENABLE_LOGIND') == 1
include_directories : includes,
link_args : ['-shared',
'-Wl,--version-script=' + version_script_arg],
link_with : [libsystemd_internal,
link_with : [libsystemd_static,
libshared_static],
dependencies : [threads,
libpam,
@ -2229,7 +2286,7 @@ if conf.get('ENABLE_HWDB') == 1
'src/hwdb/hwdb.c',
'src/libsystemd/sd-hwdb/hwdb-internal.h',
include_directories : includes,
link_with : [libudev_internal],
link_with : [libudev_static],
install_rpath : udev_rpath,
install : true,
install_dir : rootbindir)
@ -2262,7 +2319,7 @@ exe = executable('systemd-udevd',
c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
link_with : [libudev_core,
libsystemd_network,
libudev_internal],
libudev_static],
dependencies : [threads,
libkmod,
libidn,
@ -2275,10 +2332,11 @@ public_programs += [exe]
exe = executable('udevadm',
udevadm_sources,
c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
include_directories : includes,
link_with : [libudev_core,
libsystemd_network,
libudev_internal],
libudev_static],
dependencies : [threads,
libkmod,
libidn,
@ -2352,7 +2410,7 @@ if conf.get('ENABLE_NETWORKD') == 1
include_directories : includes,
link_with : [libnetworkd_core,
libsystemd_network,
libudev_internal,
libudev_static,
libshared],
dependencies : [threads],
install_rpath : rootlibexecdir,
@ -2404,8 +2462,9 @@ foreach tuple : tests
timeout = type.split('=')[1].to_int()
type = ''
endif
if condition == '' or conf.get(condition) == 1
if want_tests == 'false'
message('Not compiling @0@ because tests is set to false'.format(name))
elif condition == '' or conf.get(condition) == 1
exe = executable(
name,
sources,
@ -2454,6 +2513,39 @@ test('test-libudev-sym',
############################################################
fuzzer_exes = []
foreach tuple : fuzzers
sources = tuple[0]
link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
dependencies = tuple[2]
defs = tuple.length() >= 4 ? tuple[3] : []
incs = tuple.length() >= 5 ? tuple[4] : includes
if fuzzer_build
dependencies += fuzzing_engine
else
sources += 'src/fuzz/fuzz-main.c'
endif
name = sources[0].split('/')[-1].split('.')[0]
fuzzer_exes += executable(
name,
sources,
include_directories : [incs, include_directories('src/fuzz')],
link_with : link_with,
dependencies : dependencies,
c_args : defs,
install : false)
endforeach
run_target('fuzzers',
depends : fuzzer_exes,
command : ['true'])
############################################################
make_directive_index_py = find_program('tools/make-directive-index.py')
make_man_index_py = find_program('tools/make-man-index.py')
xml_helper_py = find_program('tools/xml_helper.py')
@ -2489,6 +2581,8 @@ install_data('README',
'ENVIRONMENT.md',
'LICENSE.GPL2',
'LICENSE.LGPL2.1',
'TRANSIENT-SETTINGS.md',
'UIDS-GIDS.md',
'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
install_dir : docdir)
@ -2508,6 +2602,50 @@ endforeach
############################################################
prev = ''
foreach p : fuzz_regression_tests
a = p.split('/')[-3]
b = p.split('/')[-2]
c = p.split('/')[-1]
if a == 'address'
build = sanitize_address
else
error('unknown sanitizer @0@'.format(a))
endif
name = '@1@:@0@'.format(a, b)
if name != prev
if want_tests == 'false'
message('Not compiling @0@ because tests is set to false'.format(name))
elif not sanitizers.contains(a)
message('Not compiling @0@ because @1@ sanitizer is not available'.format(name, a))
elif slow_tests
exe = custom_target(
name,
output : name,
depends : build,
command : [env, 'ln', '-fs',
join_paths(build.full_path(), b),
'@OUTPUT@'],
build_by_default : true)
else
message('Not compiling @0@ because slow-tests is set to false'.format(name))
endif
endif
prev = name
if want_tests != 'false' and slow_tests
test(c, env, args : [exe.full_path(),
join_paths(meson.source_root(),
'test/fuzz-regressions',
p)])
endif
endforeach
############################################################
if git.found()
all_files = run_command(
git,
@ -2519,11 +2657,11 @@ if git.found()
custom_target(
'tags',
output : 'tags',
command : ['env', 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
custom_target(
'ctags',
output : 'ctags',
command : ['env', 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
command : [env, 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
endif
if git.found()
@ -2554,6 +2692,14 @@ endif
############################################################
meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
run_target(
'check-api-docs',
depends : [man, libsystemd, libudev],
command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
############################################################
status = [
'@0@ @1@'.format(meson.project_name(), meson.project_version()),
@ -2683,6 +2829,7 @@ foreach tuple : [
['gnu-efi', have_gnu_efi],
['kmod'],
['xkbcommon'],
['pcre2'],
['blkid'],
['dbus'],
['glib'],

View File

@ -29,7 +29,8 @@ option('sysvinit-path', type : 'string', value : '/etc/init.d',
description : 'the directory where the SysV init scripts are located')
option('sysvrcnd-path', type : 'string', value : '/etc/rc.d',
description : 'the base directory for SysV rcN.d directories')
option('telinit-path', type : 'string', description : 'path to telinit')
option('telinit-path', type : 'string', value : '/lib/sysvinit/telinit',
description : 'path to telinit')
option('rc-local', type : 'string',
value : '/etc/rc.local')
option('halt-local', type : 'string',
@ -259,6 +260,8 @@ option('lz4', type : 'combo', choices : ['auto', 'true', 'false'],
description : 'lz4 compression support')
option('xkbcommon', type : 'combo', choices : ['auto', 'true', 'false'],
description : 'xkbcommon keymap support')
option('pcre2', type : 'combo', choices : ['auto', 'true', 'false'],
description : 'regexp matching support using pcre2')
option('glib', type : 'combo', choices : ['auto', 'true', 'false'],
description : 'libglib support (for tests only)')
option('dbus', type : 'combo', choices : ['auto', 'true', 'false'],
@ -284,9 +287,14 @@ option('bashcompletiondir', type : 'string',
option('zshcompletiondir', type : 'string',
description : 'directory for zsh completion scripts ["no" disables]')
option('tests', type : 'combo', choices : ['true', 'unsafe'],
option('tests', type : 'combo', choices : ['true', 'unsafe', 'false'],
description : 'enable extra tests with =unsafe')
option('slow-tests', type : 'boolean', value : 'false',
description : 'run the slow tests by default')
option('install-tests', type : 'boolean', value : 'false',
description : 'install test executables')
option('oss-fuzz', type : 'boolean', value : 'false',
description : 'build against oss-fuzz')
option('llvm-fuzz', type : 'boolean', value : 'false',
description : 'build against LLVM libFuzzer')

View File

@ -1,4 +1,5 @@
#!/bin/sh -ex
#!/bin/sh
set -ex
# This file is part of systemd.
#

View File

@ -73,7 +73,7 @@ msgstr "Pro nastavení lokálního názvu stroje je vyžadováno ověření."
#: ../src/hostname/org.freedesktop.hostname1.policy.in.h:3
msgid "Set static host name"
msgstr "Nastavit statický název stoje"
msgstr "Nastavit statický název stroje"
#: ../src/hostname/org.freedesktop.hostname1.policy.in.h:4
msgid ""

View File

@ -78,7 +78,8 @@ KERNEL=="tun", MODE="0666", OPTIONS+="static_node=net/tun"
KERNEL=="fuse", MODE="0666", OPTIONS+="static_node=fuse"
KERNEL=="kvm", GROUP="kvm", MODE="@DEV_KVM_MODE@"
# The static_node is required on s390x and ppc (they are using MODULE_ALIAS)
KERNEL=="kvm", GROUP="kvm", MODE="@DEV_KVM_MODE@", OPTIONS+="static_node=kvm"
SUBSYSTEM=="ptp", ATTR{clock_name}=="KVM virtual PTP", SYMLINK += "ptp_kvm"

224
scripts/coverity.sh Executable file
View File

@ -0,0 +1,224 @@
#!/bin/env bash
# Declare build command
COVERITY_SCAN_BUILD_COMMAND="ninja -C cov-build"
# Environment check
# Use default values if not set
SCAN_URL=${SCAN_URL:="https://scan.coverity.com"}
TOOL_BASE=${TOOL_BASE:="/tmp/coverity-scan-analysis"}
UPLOAD_URL=${UPLOAD_URL:="https://scan.coverity.com/builds"}
# These must be set by environment
echo -e "\033[33;1mNote: COVERITY_SCAN_PROJECT_NAME and COVERITY_SCAN_TOKEN are available on Project Settings page on scan.coverity.com\033[0m"
[ -z "$COVERITY_SCAN_PROJECT_NAME" ] && echo "ERROR: COVERITY_SCAN_PROJECT_NAME must be set" && exit 1
[ -z "$COVERITY_SCAN_NOTIFICATION_EMAIL" ] && echo "ERROR: COVERITY_SCAN_NOTIFICATION_EMAIL must be set" && exit 1
[ -z "$COVERITY_SCAN_BRANCH_PATTERN" ] && echo "ERROR: COVERITY_SCAN_BRANCH_PATTERN must be set" && exit 1
[ -z "$COVERITY_SCAN_BUILD_COMMAND" ] && echo "ERROR: COVERITY_SCAN_BUILD_COMMAND must be set" && exit 1
[ -z "$COVERITY_SCAN_TOKEN" ] && echo "ERROR: COVERITY_SCAN_TOKEN must be set" && exit 1
# Do not run on pull requests
if [ "${TRAVIS_PULL_REQUEST}" = "true" ]; then
echo -e "\033[33;1mINFO: Skipping Coverity Analysis: branch is a pull request.\033[0m"
exit 0
fi
# Verify this branch should run
if [[ "${TRAVIS_BRANCH^^}" =~ "${COVERITY_SCAN_BRANCH_PATTERN^^}" ]]; then
echo -e "\033[33;1mCoverity Scan configured to run on branch ${TRAVIS_BRANCH}\033[0m"
else
echo -e "\033[33;1mCoverity Scan NOT configured to run on branch ${TRAVIS_BRANCH}\033[0m"
exit 1
fi
# Verify upload is permitted
AUTH_RES=`curl -s --form project="$COVERITY_SCAN_PROJECT_NAME" --form token="$COVERITY_SCAN_TOKEN" $SCAN_URL/api/upload_permitted`
if [ "$AUTH_RES" = "Access denied" ]; then
echo -e "\033[33;1mCoverity Scan API access denied. Check COVERITY_SCAN_PROJECT_NAME and COVERITY_SCAN_TOKEN.\033[0m"
exit 1
else
AUTH=`echo $AUTH_RES | python -c "import sys, json; print json.load(sys.stdin)['upload_permitted']"`
if [ "$AUTH" = "True" ]; then
echo -e "\033[33;1mCoverity Scan analysis authorized per quota.\033[0m"
else
WHEN=`echo $AUTH_RES | python -c "import sys; json; print json.load(sys.stdin)['next_upload_permitted_at']"`
echo -e "\033[33;1mCoverity Scan analysis NOT authorized until $WHEN.\033[0m"
exit 0
fi
fi
TOOL_DIR=`find $TOOL_BASE -type d -name 'cov-analysis*'`
export PATH="$TOOL_DIR/bin:$PATH"
# Disable CCACHE for cov-build to compilation units correctly
export CCACHE_DISABLE=1
# FUNCTION DEFINITIONS
# --------------------
_help()
{
# displays help and exits
cat <<-EOF
USAGE: $0 [CMD] [OPTIONS]
CMD
build Issue Coverity build
upload Upload coverity archive for analysis
Note: By default, archive is created from default results directory.
To provide custom archive or results directory, see --result-dir
and --tar options below.
OPTIONS
-h,--help Display this menu and exits
Applicable to build command
---------------------------
-o,--out-dir Specify Coverity intermediate directory (defaults to 'cov-int')
-t,--tar bool, archive the output to .tgz file (defaults to false)
Applicable to upload command
----------------------------
-d, --result-dir Specify result directory if different from default ('cov-int')
-t, --tar ARCHIVE Use custom .tgz archive instead of intermediate directory or pre-archived .tgz
(by default 'analysis-result.tgz'
EOF
return;
}
_pack()
{
RESULTS_ARCHIVE=${RESULTS_ARCHIVE:-'analysis-results.tgz'}
echo -e "\033[33;1mTarring Coverity Scan Analysis results...\033[0m"
tar czf $RESULTS_ARCHIVE $RESULTS_DIR
SHA=`git rev-parse --short HEAD`
PACKED=true
}
_build()
{
echo -e "\033[33;1mRunning Coverity Scan Analysis Tool...\033[0m"
local _cov_build_options=""
#local _cov_build_options="--return-emit-failures 8 --parse-error-threshold 85"
eval "${COVERITY_SCAN_BUILD_COMMAND_PREPEND}"
COVERITY_UNSUPPORTED=1 cov-build --dir $RESULTS_DIR $_cov_build_options sh -c "$COVERITY_SCAN_BUILD_COMMAND"
cov-import-scm --dir $RESULTS_DIR --scm git --log $RESULTS_DIR/scm_log.txt
if [ $? != 0 ]; then
echo -e "\033[33;1mCoverity Scan Build failed: $TEXT.\033[0m"
return 1
fi
[ -z $TAR ] || [ $TAR = false ] && return 0
if [ "$TAR" = true ]; then
_pack
fi
}
_upload()
{
# pack results
[ -z $PACKED ] || [ $PACKED = false ] && _pack
# Upload results
echo -e "\033[33;1mUploading Coverity Scan Analysis results...\033[0m"
response=$(curl \
--silent --write-out "\n%{http_code}\n" \
--form project=$COVERITY_SCAN_PROJECT_NAME \
--form token=$COVERITY_SCAN_TOKEN \
--form email=$COVERITY_SCAN_NOTIFICATION_EMAIL \
--form file=@$RESULTS_ARCHIVE \
--form version=$SHA \
--form description="Travis CI build" \
$UPLOAD_URL)
status_code=$(echo "$response" | sed -n '$p')
if [ "$status_code" != "201" ]; then
TEXT=$(echo "$response" | sed '$d')
echo -e "\033[33;1mCoverity Scan upload failed: $TEXT.\033[0m"
exit 1
fi
echo -e "\n\033[33;1mCoverity Scan Analysis completed succesfully.\033[0m"
exit 0
}
# PARSE COMMAND LINE OPTIONS
# --------------------------
case $1 in
-h|--help)
_help
exit 0
;;
build)
CMD='build'
TEMP=`getopt -o ho:t --long help,out-dir:,tar -n '$0' -- "$@"`
_ec=$?
[[ $_ec -gt 0 ]] && _help && exit $_ec
shift
;;
upload)
CMD='upload'
TEMP=`getopt -o hd:t: --long help,result-dir:tar: -n '$0' -- "$@"`
_ec=$?
[[ $_ec -gt 0 ]] && _help && exit $_ec
shift
;;
*)
_help && exit 1 ;;
esac
RESULTS_DIR='cov-int'
eval set -- "$TEMP"
if [ $? != 0 ] ; then exit 1 ; fi
# extract options and their arguments into variables.
if [[ $CMD == 'build' ]]; then
TAR=false
while true ; do
case $1 in
-h|--help)
_help
exit 0
;;
-o|--out-dir)
RESULTS_DIR="$2"
shift 2
;;
-t|--tar)
TAR=true
shift
;;
--) _build; shift ; break ;;
*) echo "Internal error" ; _help && exit 6 ;;
esac
done
elif [[ $CMD == 'upload' ]]; then
while true ; do
case $1 in
-h|--help)
_help
exit 0
;;
-d|--result-dir)
CHANGE_DEFAULT_DIR=true
RESULTS_DIR="$2"
shift 2
;;
-t|--tar)
RESULTS_ARCHIVE="$2"
[ -z $CHANGE_DEFAULT_DIR ] || [ $CHANGE_DEFAULT_DIR = false ] && PACKED=true
shift 2
;;
--) _upload; shift ; break ;;
*) echo "Internal error" ; _help && exit 6 ;;
esac
done
fi

59
scripts/oss-fuzz.sh Executable file
View File

@ -0,0 +1,59 @@
#!/bin/bash
# SPDX-License-Identifier: LGPL-2.1+
#
# Copyright 2017 Jonathan Rudenberg
#
# 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.
#
# systemd is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with systemd; If not, see <http://www.gnu.org/licenses/>.
set -ex
export LC_CTYPE=C.UTF-8
SANITIZER=${SANITIZER:-address -fsanitize-address-use-after-scope}
flags="-O1 -fno-omit-frame-pointer -gline-tables-only -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -fsanitize=$SANITIZER -fsanitize-coverage=trace-pc-guard,trace-cmp"
export CFLAGS=${CFLAGS:-$flags}
export CXXFLAGS=${CXXFLAGS:-$flags}
export CC=${CC:-clang}
export CXX=${CXX:-clang++}
export WORK=${WORK:-$(pwd)}
export OUT=${OUT:-$(pwd)/out}
mkdir -p $OUT
build=$WORK/build
rm -rf $build
mkdir -p $build
fuzzflag="oss-fuzz=true"
if [ -z "$FUZZING_ENGINE" ]; then
fuzzflag="llvm-fuzz=true"
fi
meson $build -D$fuzzflag -Db_lundef=false
ninja -C $build fuzzers
for d in "$(dirname "$0")/../test/fuzz-corpus/"*; do
zip -jqr $OUT/fuzz-$(basename "$d")_seed_corpus.zip "$d"
done
# get fuzz-dns-packet corpus
df=$build/dns-fuzzing
git clone --depth 1 https://github.com/CZ-NIC/dns-fuzzing $df
zip -jqr $OUT/fuzz-dns-packet_seed_corpus.zip $df/packet
mkdir -p $OUT/src/shared
mv $build/src/shared/libsystemd-shared-*.so $OUT/src/shared
find $build -maxdepth 1 -type f -executable -name "fuzz-*" -exec mv {} $OUT \;
cp src/fuzz/*.options $OUT

View File

@ -29,7 +29,8 @@ _bootctl() {
local i verb comps
local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]}
local -A OPTS=(
[STANDALONE]='-h --help --version'
[STANDALONE]='-h --help --no-variables -p --print-path --version'
[ARG]='--path'
)
if [[ "$cur" = -* ]]; then
@ -38,7 +39,7 @@ _bootctl() {
fi
local -A VERBS=(
[STANDALONE]='status'
[STANDALONE]='help install list remove status update'
)
for ((i=0; i < COMP_CWORD; i++)); do

View File

@ -78,9 +78,10 @@ _busctl() {
local -A OPTS=(
[STANDALONE]='-h --help --version --no-pager --no-legend --system --user
--show-machine --unique --acquired --activatable --list
--quiet --verbose --expect-reply=no --auto-start=no
--allow-interactive-authorization=yes --augment-creds=no'
[ARG]='-H --host -M --machine --address --match --timeout'
-q --quiet --verbose --expect-reply=no --auto-start=no
--allow-interactive-authorization=no --augment-creds=no
--watch-bind=yes'
[ARG]='--address -H --host -M --machine --match --timeout --size'
)
if __contains_word "--user" ${COMP_WORDS[*]}; then

View File

@ -39,22 +39,25 @@ _coredumpctl() {
local i verb comps
local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]}
local OPTS='-h --help --version --no-pager --no-legend -o --output -F --field -1
-r --reverse -S --since -U --until'
-r --reverse -S --since -U --until -D --directory -q --quiet'
local -A VERBS=(
[LIST]='list'
[LIST]='list info'
[DUMP]='dump gdb'
)
if __contains_word "$prev" '--output -o'; then
comps=$( compgen -A file -- "$cur" )
compopt -o filenames
elif __contains_word "$prev" '--FIELD -F'; then
elif __contains_word "$prev" '-D --directory'; then
comps=$( compgen -A directory -- "$cur" )
compopt -o filenames
elif __contains_word "$prev" '--field -F'; then
comps=$( compgen -W '${__journal_fields[*]}' -- "$cur" )
elif [[ $cur = -* ]]; then
comps=${OPTS}
elif __contains_word "$prev" ${VERBS[*]} &&
! __contains_word ${COMP_WORDS[COMP_CWORD-2]} '--output -o -F --field'; then
! __contains_word ${COMP_WORDS[COMP_CWORD-2]} '--output -o -D --directory -F --field'; then
compopt -o nospace
COMPREPLY=( $(compgen -W '${__journal_fields[*]}' -S= -- "$cur") )
return 0

View File

@ -29,7 +29,7 @@ _hostnamectl() {
local i verb comps
local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]}
local OPTS='-h --help --version --transient --static --pretty
--no-ask-password -H --host --machine'
--no-ask-password -H --host -M --machine'
if [[ $cur = -* ]]; then
COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") )

View File

@ -39,25 +39,25 @@ _journalctl() {
[STANDALONE]='-a --all --full --system --user
--disk-usage -f --follow --header
-h --help -l --local --new-id128 -m --merge --no-pager
--no-tail -q --quiet --setup-keys --this-boot --verify
--no-tail -q --quiet --setup-keys --verify
--version --list-catalog --update-catalog --list-boots
--show-cursor --dmesg -k --pager-end -e -r --reverse
--utc -x --catalog --no-full --force --dump-catalog
--flush --rotate --sync --no-hostname'
[ARG]='-b --boot --this-boot -D --directory --file -F --field
--flush --rotate --sync --no-hostname -N --fields'
[ARG]='-b --boot -D --directory --file -F --field -t --identifier
-M --machine -o --output -u --unit --user-unit -p --priority
--vacuum-size --vacuum-time --vacuum-files'
[ARGUNKNOWN]='-c --cursor --interval -n --lines -S --since -U --until
--after-cursor --verify-key -t --identifier
--root'
[ARGUNKNOWN]='-c --cursor --interval -n --lines -S --since -U --until
--after-cursor --verify-key
--vacuum-size --vacuum-time --vacuum-files --output-fields'
)
if __contains_word "$prev" ${OPTS[ARG]} ${OPTS[ARGUNKNOWN]}; then
case $prev in
--boot|--this-boot|-b)
--boot|-b)
comps=$(journalctl -F '_BOOT_ID' 2>/dev/null)
;;
--directory|-D)
--directory|-D|--root)
comps=$(compgen -d -- "$cur")
compopt -o filenames
;;
@ -66,7 +66,7 @@ _journalctl() {
compopt -o filenames
;;
--output|-o)
comps='short short-full short-iso short-precise short-monotonic short-unix verbose export json json-pretty json-sse cat'
comps='short short-full short-iso short-iso-precise short-precise short-monotonic short-unix verbose export json json-pretty json-sse cat'
;;
--field|-F)
comps=$(journalctl --fields | sort 2>/dev/null)

View File

@ -38,7 +38,7 @@ _kernel_install() {
fi
;;
3)
[[ "$cur" ]] || cur=/boot/vmlinuz-${COMP_WORDS[2]}
[[ "$cur" ]] || cur=/lib/modules/${COMP_WORDS[2]}/vmlinuz
comps=$(compgen -f -- "$cur")
compopt -o filenames
;;

Some files were not shown because too many files have changed in this diff Show More