runs-on: ubuntu-latest
permissions:
pull-requests: write
+
steps:
- - uses: actions/labeler@e54e5b338fbd6e6cdb5d60f51c22335fc57c401e
+ - name: Label PR based on policy in labeler.yml
+ uses: actions/labeler@e54e5b338fbd6e6cdb5d60f51c22335fc57c401e
if: github.event_name == 'pull_request_target' && github.event.action != 'closed'
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"
configuration-path: .github/labeler.yml
sync-labels: "" # This is a workaround for issue 18671
- - uses: actions/github-script@98814c53be79b1d30f795b907e553d8679345975
+ - name: Set or remove labels based on systemd development workflow
+ uses: actions/github-script@98814c53be79b1d30f795b907e553d8679345975
if: github.event_name == 'pull_request_target' && github.event.action != 'closed' && !github.event.pull_request.draft
with:
script: |
}
}
- - uses: actions/github-script@98814c53be79b1d30f795b907e553d8679345975
+ - name: Add please-review label on command in issue comment
+ uses: actions/github-script@98814c53be79b1d30f795b907e553d8679345975
if: github.event_name == 'issue_comment' && github.event.issue.pull_request && startsWith(github.event.comment.body, '/please-review')
with:
script: |
labels: ["please-review"]
})
- - uses: actions/github-script@98814c53be79b1d30f795b907e553d8679345975
- if: github.event_name == 'pull_request_target' && github.event.action == 'closed' && github.event.issue.pull_request
+ - name: Remove specific labels when PR is closed or merged
+ uses: actions/github-script@98814c53be79b1d30f795b907e553d8679345975
+ if: github.event_name == 'pull_request_target' && github.event.action == 'closed'
with:
script: |
for (const label of ["please-review",
"good-to-merge/waiting-for-reporter-feedback 👍",
"needs-discussion 🤔",
"needs-reporter-feedback ❓",
- "dont-merge",
- "squash-on-merge,
- "quick-review"]) {
+ "dont-merge 💣",
+ "squash-on-merge",
+ "quick-review 🏃♂️"]) {
try {
await github.rest.issues.removeLabel({
issue_number: context.issue.number,
steps:
- uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b
- - uses: systemd/mkosi@500f93a36cc3d5bf1d06848a0a8870bf1424625f
+ - uses: systemd/mkosi@4be912b0fa4931403fddf649aa242cd4406471c4
- name: Configure
run: |
[Distribution]
Distribution=${{ matrix.distro }}
Release=${{ matrix.release }}
+ SecureBoot=yes
[Content]
Environment=CI_BUILD=1
EOF
- name: Generate secure boot key
- run: sudo mkosi genkey
+ run: mkosi genkey
- name: Build ${{ matrix.distro }}
- run: sudo mkosi --idmap no --secure-boot
+ run: mkosi
- name: Show ${{ matrix.distro }} image summary
- run: sudo mkosi summary
+ run: mkosi summary
- name: Boot ${{ matrix.distro }} systemd-nspawn
run: sudo mkosi boot ${{ env.KERNEL_CMDLINE }} audit=0
+ env:
+ SYSTEMD_LOG_LEVEL: debug
- name: Check ${{ matrix.distro }} systemd-nspawn
run: sudo mkosi shell bash -c "[[ -e /testok ]] || { cat /failed-services; exit 1; }"
+ env:
+ SYSTEMD_LOG_LEVEL: debug
- name: Boot ${{ matrix.distro }} QEMU
- run: sudo timeout -k 30 10m mkosi qemu
+ run: timeout -k 30 10m mkosi qemu
- name: Check ${{ matrix.distro }} QEMU
run: sudo mkosi shell bash -c "[[ -e /testok ]] || { cat /failed-services; exit 1; }"
+ env:
+ SYSTEMD_LOG_LEVEL: debug
systemd System and Service Manager
-CHANGES WITH 253 in spe:
+CHANGES WITH 253:
+
+ Announcements of Future Feature Removals and Incompatible Changes:
+
+ * We intend to remove cgroup v1 support from systemd release after the
+ end of 2023. If you run services that make explicit use of cgroup v1
+ features (i.e. the "legacy hierarchy" with separate hierarchies for
+ each controller), please implement compatibility with cgroup v2 (i.e.
+ the "unified hierarchy") sooner rather than later. Most of Linux
+ userspace has been ported over already.
+
+ * We intend to remove support for split-usr (/usr mounted separately
+ during boot) and unmerged-usr (parallel directories /bin and
+ /usr/bin, /lib and /usr/lib, etc). This will happen in the second
+ half of 2023, in the first release that falls into that time window.
+ For more details, see:
+ https://lists.freedesktop.org/archives/systemd-devel/2022-September/048352.html
+
+ * We intend to change behaviour w.r.t. units of the per-user service
+ manager and sandboxing options, so that they work without having to
+ manually enable PrivateUsers= as well, which is not required for
+ system units. To make this work, we will implicitly enable user
+ namespaces (PrivateUsers=yes) when a sandboxing option is enabled in a
+ user unit. The drawback is that system users will no longer be visible
+ (and appear as 'nobody') to the user unit when a sandboxing option is
+ enabled. By definition a sandboxed user unit should run with reduced
+ privileges, so impact should be small. This will remove a great source
+ of confusion that has been reported by users over the years, due to
+ how these options require an extra setting to be manually enabled when
+ used in the per-user service manager, as opposed as to the system
+ service manager. We plan to enable this change in the next release
+ later this year. For more details, see:
+ https://lists.freedesktop.org/archives/systemd-devel/2022-December/048682.html
Deprecations and incompatible changes:
legacy and thus typically do not receive the same level of security
support and fixes.
+ * The default per-link multicast DNS mode is changed to "yes"
+ (that was previously "no"). As the default global multicast DNS mode
+ has been "yes" (but can be changed by the build option), now the
+ multicast DNS is enabled on all links by default. You can disable the
+ multicast DNS on all links by setting MulticastDNS= in resolved.conf,
+ or on an interface by calling "resolvectl mdns INTERFACE no".
+
New components:
* A tool 'ukify' tool to build, measure, and sign Unified Kernel Images
* When enabling a swap device systemd will now reinitialize the device
when the page size of the swap space does not match the page size of
- the running kernel.
+ the running kernel. Note that this requires the 'swapon' utility to
+ provide the '--fixpgsz' option, as implemented by util-linux, and it
+ is not supported by busybox at the time of writing.
* systemd now executes generator programs in a mount namespace
"sandbox" with most of the file system read-only and write access
yet. (This feature has no security implications, because the code is
still privileged and can trivially exit the sandbox.)
- * The system manager manager will now parse a new "vmm.notify_socket"
+ * The system manager will now parse a new "vmm.notify_socket"
system credential, which may be supplied to a VM via SMBIOS. If
found, the manager will send a "READY=1" notification on the
specified socket after boot is complete. This allows readiness
with something custom, so this change has limited effect.)
* A new environment variable $SYSTEMD_DEFAULT_MOUNT_RATE_LIMIT_BURST
- can can be used to override the mount units burst late limit for
+ can be used to override the mount units burst late limit for
parsing '/proc/self/mountinfo', which was introduced in v249.
Defaults to 5.
Bernd Steinhauser, blutch112, cake03, Callum Farmer, Carlo Teubner,
Charles Hardin, chris, Christian Brauner, Christian Göttsche,
Cristian Rodríguez, Daan De Meyer, Dan Streetman, DaPigGuy,
- David Tardon, dependabot[bot], Dirk Su, Dmitry V. Levin, drosdeck,
- Edson Juliano Drosdeck, edupont, Eric DeVolder, Erik Moqvist,
- Evgeny Vereshchagin, Felix Riemann, Franck Bui, Frantisek Sumsal,
+ Darrell Kavanagh, David Tardon, dependabot[bot], Dirk Su,
+ Dmitry V. Levin, drosdeck, Edson Juliano Drosdeck, edupont,
+ Eric DeVolder, Erik Moqvist, Evgeny Vereshchagin, Fabian Gurtner,
+ Felix Riemann, Franck Bui, Frantisek Sumsal, Geert Lorang,
Gerd Hoffmann, Gio, Hannoskaj, Hans de Goede, Hugo Carvalho,
igo95862, Ilya Leoshkevich, Ivan Shapovalov, Jacek Migacz,
Jade Lovelace, Jan Engelhardt, Jan Janssen, Jan Macku, January,
- Jason A. Donenfeld, jcg, Jelle van der Waa, Jeremy Linton,
- Jian Zhang, Jiayi Chen, Jia Zhang, Joerg Behrmann, Jörg Thalheim,
- Joshua Goins, joshuazivkovic, Joshua Zivkovic, Kai-Chuan Hsieh,
- Khem Raj, Koba Ko, Lennart Poettering, lichao, Li kunyu,
- Luca Boccassi, Luca BRUNO, Ludwig Nussel, Łukasz Stelmach,
- Lycowolf, marcel151, Marcus Schäfer, Marek Vasut, Mark Laws,
- Michael Biebl, Michał Kotyla, Michal Koutný, Michal Sekletár,
- Mike Yuan, MkfsSion, msizanoen1, mvzlb, MVZ Ludwigsburg, Neil Moore,
- Nick Rosbrook, noodlejetski, Pasha Vorobyev, Peter Cai, p-fpv,
- Phaedrus Leeds, Philipp Jungkamp, Quentin Deslandes, Ray Strode,
+ Jason A. Donenfeld, jcg, Jean-Tiare Le Bigot, Jelle van der Waa,
+ Jeremy Linton, Jian Zhang, Jiayi Chen, Jia Zhang, Joerg Behrmann,
+ Jörg Thalheim, Joshua Goins, joshuazivkovic, Joshua Zivkovic,
+ Kai-Chuan Hsieh, Khem Raj, Koba Ko, Lennart Poettering, lichao,
+ Li kunyu, Luca Boccassi, Luca BRUNO, Ludwig Nussel,
+ Łukasz Stelmach, Lycowolf, marcel151, Marcus Schäfer, Marek Vasut,
+ Mark Laws, Michael Biebl, Michał Kotyla, Michal Koutný,
+ Michal Sekletár, Mike Gilbert, Mike Yuan, MkfsSion, ml,
+ msizanoen1, mvzlb, MVZ Ludwigsburg, Neil Moore, Nick Rosbrook,
+ noodlejetski, Pasha Vorobyev, Peter Cai, p-fpv, Phaedrus Leeds,
+ Philipp Jungkamp, Quentin Deslandes, Raul Tambre, Ray Strode,
reuben olinsky, Richard E. van der Luit, Richard Phibel,
Ricky Tigg, Robin Humble, rogg, Rudi Heitbaum, Sam James,
- Samuel Thibault, Siddhesh Poyarekar, Space Meyer, Spindle Security,
- Steve Ramage, Thomas Haller, Tonći Galić, Torsten Hilbrich,
+ Samuel Cabrero, Samuel Thibault, Siddhesh Poyarekar, Simon Brand,
+ Space Meyer, Spindle Security, Steve Ramage, Takashi Sakamoto,
+ Thomas Haller, Tonći Galić, Topi Miettinen, Torsten Hilbrich,
Tuetuopay, uerdogan, Ulrich Ölmann, Valentin David,
Vitaly Kuznetsov, Vito Caputo, Waltibaba, Will Fancher,
William Roberts, wouter bolsterlee, Youfu Zhang, Yu Watanabe,
Zbigniew Jędrzejewski-Szmek, Дамјан Георгиевски,
наб
- — Warsaw, 2023-02-02
+ — Warsaw, 2023-02-15
CHANGES WITH 252 🎃:
(e.g. comparisons for empty strings). Boot counting is now part of
the main specification.
- * New PCRs measurements are performed during boot: PCR 11 for the the
+ * New PCRs measurements are performed during boot: PCR 11 for the
kernel+initrd combo, PCR 13 for any sysext images. If a measurement
took place this is now reported to userspace via the new
StubPcrKernelImage and StubPcrInitRDSysExts EFI variables.
* A new build-time configuration setting default-user-shell= can be
used to set the default shell for user records and nspawn shell
- invocations (instead of of the default /bin/bash).
+ invocations (instead of the default /bin/bash).
* systemd-timesyncd now provides a D-Bus API for receiving NTP server
information dynamically at runtime via IPC.
now also owned by the system group "sgx".
* A new build-time meson option "extra-net-naming-schemes=" has been
- added to define additional naming schemes schemes for udev's network
+ added to define additional naming schemes for udev's network
interface naming logic. This is useful for enterprise distributions
and similar which want to pin the schemes of certain distribution
releases under a specific name and previously had to patch the
During runtime, you need the following additional
dependencies:
- util-linux >= v2.27.1 required
+ util-linux >= v2.27.1 required (including but not limited to: mount,
+ umount, swapon, swapoff, sulogin,
+ agetty, fsck)
dbus >= 1.4.0 (strictly speaking optional, but recommended)
NOTE: If using dbus < 1.9.18, you should override the default
policy directory (--with-dbuspolicydir=/etc/dbus-1/system.d).
Features:
+* Add systemd-mount@.service which is instantiated for a block device and
+ invokes systemd-mount and exits. This is then useful to use in
+ ENV{SYSTEMD_WANTS} in udev rules, and a bit prettier than using RUN+=
+
+* sd-journal puts a limit on parallel journal files to view at once. journald
+ should probably honour that same limit (JOURNAL_FILES_MAX) when vacuuming to
+ ensure we never generate more files than we can actually view.
+
* in order to make binding to PCR 4 realistic:
- generate one keypair "U" and store it in a tpm2 nvindex.
- Generate another keypair "P" and store it in a second tpm2 nvindex.
* in journald: whenever we start a new journal file because the boot ID
changed, let's generate a recognizable log record containing info about old
- and new new ID. Then, when displaying log stream in journalctl look for these
+ and new ID. Then, when displaying log stream in journalctl look for these
records, to be able to order them.
* timesyncd: when saving/restoring clock try to take boot time into account.
protections of the root OS are weakened after interactive confirmation, to
allow hackers to allow their own stuff. idea: allow entering developer mode
only via explicit choice in boot menu: i.e. add explicit boot menu item for
- it. when developer mode is entered generate a key pair in the TPM2, and add
+ it. When developer mode is entered, generate a key pair in the TPM2, and add
the public part of it automatically to keychain of valid code signature keys
on subsequent boots. Then provide a tool to sign code with the key in the
- TPM2. Ensure that boot menu item is only way to enter developer mode, by
- binding it to locality/PCRs so that that keys cannot be generated otherwise.
+ TPM2. Ensure that boot menu item is the only way to enter developer mode, by
+ binding it to locality/PCRs so that keys cannot be generated otherwise.
* services: add support for cryptographically unlocking per-service directories
via TPM2. Specifically, for StateDirectory= (and related dirs) use fscrypt to
mounted from host. maybe put this in systemd-user-sessions.service?
* drop dependency on libcap, replace by direct syscalls based on
- CapabilityQuintet we already have. (This likely allows us drop drop libcap
+ CapabilityQuintet we already have. (This likely allows us to drop libcap
dep in the base OS image)
* sysext: automatically activate sysext images dropped in via new sd-stub
* credentials system:
- acquire from EFI variable?
- - acquire via via ask-password?
+ - acquire via ask-password?
- acquire creds via keyring?
- pass creds via keyring?
- pass creds via memfd?
environment variables the credential data is not propagated down the process
tree. Instead each time a credential is accessed an access check is enforced
by the kernel. If the service is using file system namespacing the loaded
- credential data is invisible to any other services.
+ credential data is invisible to all other services.
4. Service credentials may be acquired from files on disk, specified as literal
strings in unit files, acquired from another service dynamically via an
* Two journal entries that follow each other are separated by a double newline.
* Journal fields consisting only of valid non-control UTF-8 codepoints are serialized as they are (i.e. the field name, followed by '=', followed by field data), followed by a newline as separator to the next field. Note that fields containing newlines cannot be formatted like this. Non-control UTF-8 codepoints are the codepoints with value at or above 32 (' '), or equal to 9 (TAB).
* Other journal fields are serialized in a special binary safe way: field name, followed by newline, followed by a binary 64bit little endian size value, followed by the binary field data, followed by a newline as separator to the next field.
-* Entry metadata that is not actually a field is serialized like it was a field, but beginning with two underscores. More specifically, `__CURSOR=`, `__REALTIME_TIMESTAMP=`, `__MONOTONIC_TIMESTAMP=` are introduced this way. Note that these meta-fields are only generated when actual journal files are serialized. They are omitted for entries that do not originate from a journal file (for example because they are transferred for the first time to be stored in one). Or in other words: if you are generating this format you shouldn't care about these special double-underscore fields. But you might find them usable when you deserialize the format generated by us. Additional fields prefixed with two underscores might be added later on, your parser should skip over the fields it does not know.
+* Entry metadata that is not actually a field is serialized like it was a field, but beginning with two underscores. More specifically, `__CURSOR=`, `__REALTIME_TIMESTAMP=`, `__MONOTONIC_TIMESTAMP=`, `__SEQNUM=`, `__SEQNUM_ID` are introduced this way. Note that these meta-fields are only generated when actual journal files are serialized. They are omitted for entries that do not originate from a journal file (for example because they are transferred for the first time to be stored in one). Or in other words: if you are generating this format you shouldn't care about these special double-underscore fields. But you might find them usable when you deserialize the format generated by us. Additional fields prefixed with two underscores might be added later on, your parser should skip over the fields it does not know.
* The order in which fields appear in an entry is undefined and might be different for each entry that is serialized.
And that's already it.
* A field that contains non-printable or non-UTF8 is serialized as a number array instead. This is necessary to handle binary data in a safe way without losing data, since JSON cannot embed binary data natively. Each byte of the binary field will be mapped to its numeric value in the range 0…255.
* The JSON serializer can optionally skip huge (as in larger than a specific threshold) data fields from the JSON object. If that is enabled and a data field is too large, the field name is still included in the JSON object but assigned _null_.
* Within the same entry, Journal fields may have multiple values assigned. This is not allowed in JSON. The serializer will hence create a single JSON field only for these cases, and assign it an array of values (which the can be strings, _null_ or number arrays, see above).
-* If the JSON data originates from a journal file it may include the special addressing fields `__CURSOR`, `__REALTIME_TIMESTAMP`, `__MONOTONIC_TIMESTAMP`, which contain the cursor string of this entry as string, and the realtime/monotonic timestamps of this entry as formatted numeric string of usec since the respective epoch.
+* If the JSON data originates from a journal file it may include the special addressing fields `__CURSOR`, `__REALTIME_TIMESTAMP`, `__MONOTONIC_TIMESTAMP`, `__SEQNUM`, `__SEQNUM_ID`, which contain the cursor string of this entry as string, the realtime/monotonic timestamps of this entry as formatted numeric string of usec since the respective epoch, and the sequence number and associated sequence number ID, both formatted as strings.
Here's an example, illustrating all cases mentioned above. Consider this entry:
that want to establish a firewall *before* any network interface is up.
`network-pre.target` is a passive unit: it cannot be started directly and it is
-not pulled in by the the network management service, but instead a service that
+not pulled in by the network management service, but instead a service that
wants to run before it must pull it in. Network management services hence
should set `After=network-pre.target`, but not `Wants=network-pre.target` or
`Requires=network-pre.target`. Services that want to be run before the network
## Network management services: `network.target`
`network.target` indicates that the network management stack has been started.
-Ordering after it it has little meaning during start-up: whether any network
+Ordering after it has little meaning during start-up: whether any network
interfaces are already configured when it is reached is not defined.
Its primary purpose is for ordering things properly at shutdown: since the
DefaultDependencies=no
After=nss-lookup.target
Before=network-online.target
+Type=oneshot
+RemainAfterExit=yes
[Service]
ExecStart=sh -c 'while ! ping -c 1 example.com; do sleep 1; done'
`userName` → The UNIX user name for this record. Takes a string with a valid
UNIX user name. This field is the only mandatory field, all others are
-optional. Corresponds with the `pw_name` field of of `struct passwd` and the
+optional. Corresponds with the `pw_name` field of `struct passwd` and the
`sp_namp` field of `struct spwd` (i.e. the shadow user record stored in
`/etc/shadow`). See [User/Group Name Syntax](USER_NAMES.md) for
the (relaxed) rules the various systemd components enforce on user/group names.
command : [jinja2_cmdline, '@INPUT@', '@OUTPUT@'],
install : true,
install_dir : factory_etc_dir)
+
+custom_target(
+ 'vconsole.conf',
+ input : 'vconsole.conf.in',
+ output : 'vconsole.conf',
+ command : [jinja2_cmdline, '@INPUT@', '@OUTPUT@'],
+ install : true,
+ install_dir : factory_etc_dir)
--- /dev/null
+# This is the fallback vconsole configuration provided by systemd.
+
+#KEYMAP={{ SYSTEMD_DEFAULT_KEYMAP }}
OUI:049C62*
ID_OUI_FROM_DATABASE=BMT Medical Technology s.r.o.
+OUI:049D05*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:049DFE*
ID_OUI_FROM_DATABASE=Hivesystem
ID_OUI_FROM_DATABASE=BEIJING MICROVISION TECHNOLOGY CO.,LTD
OUI:04AB08*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
OUI:04AB18*
ID_OUI_FROM_DATABASE=ELECOM CO.,LTD.
ID_OUI_FROM_DATABASE=Silicon Laboratories
OUI:04CE09*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
OUI:04CE14*
ID_OUI_FROM_DATABASE=Wilocity LTD.
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
OUI:08FF24*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
OUI:08FF44*
ID_OUI_FROM_DATABASE=Apple, Inc.
OUI:1013EE*
ID_OUI_FROM_DATABASE=Justec International Technology INC.
+OUI:1015C1*
+ ID_OUI_FROM_DATABASE=Zhanzuo (Beijing) Technology Co., Ltd.
+
OUI:10189E*
ID_OUI_FROM_DATABASE=Elmo Motion Control
ID_OUI_FROM_DATABASE=COSMO AIOT TECHNOLOGY CO LTD
OUI:1055E4*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
OUI:105611*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
OUI:109E3A*
ID_OUI_FROM_DATABASE=Zhejiang Tmall Technology Co., Ltd.
+OUI:109F41*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:109F4F*
ID_OUI_FROM_DATABASE=New H3C Intelligence Terminal Co., Ltd.
OUI:10BD18*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+OUI:10BD3A*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:10BD55*
ID_OUI_FROM_DATABASE=Q-Lab Corporation
OUI:10E177*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+OUI:10E2C9*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:10E2D5*
ID_OUI_FROM_DATABASE=Qi Hardware Inc.
OUI:1848D8*
ID_OUI_FROM_DATABASE=Fastback Networks
+OUI:184A53*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:184A6F*
ID_OUI_FROM_DATABASE=Alcatel-Lucent Shanghai Bell Co., Ltd
ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
OUI:18AA1E*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
OUI:18AA45*
ID_OUI_FROM_DATABASE=Fon Technology
ID_OUI_FROM_DATABASE=TECNO MOBILE LIMITED
OUI:1C880C*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
OUI:1C88790*
ID_OUI_FROM_DATABASE=Newps co.,ltd
ID_OUI_FROM_DATABASE=Intertecno SRL NISUTA
OUI:1CA0D37*
- ID_OUI_FROM_DATABASE=Private
+ ID_OUI_FROM_DATABASE=U-TX Technologies Ltd
OUI:1CA0D38*
ID_OUI_FROM_DATABASE=Desarrollos y Soluciones Guinea I+D S.L.
OUI:2013E0*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:201582*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:20163D*
ID_OUI_FROM_DATABASE=Integrated Device Technology (Malaysia) Sdn. Bhd.
ID_OUI_FROM_DATABASE=zte corporation
OUI:20898A*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
OUI:208B37*
ID_OUI_FROM_DATABASE=Skyworth Digital Technology(Shenzhen) Co.,Ltd
OUI:20E407*
ID_OUI_FROM_DATABASE=Spark srl
+OUI:20E46F*
+ ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd.
+
OUI:20E52A*
ID_OUI_FROM_DATABASE=NETGEAR
ID_OUI_FROM_DATABASE=Techvision Intelligent Technology Limited
OUI:249AC8*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
OUI:249AD8*
ID_OUI_FROM_DATABASE=YEALINK(XIAMEN) NETWORK TECHNOLOGY CO.,LTD.
ID_OUI_FROM_DATABASE=DADOUTEK COMPANY LIMITED
OUI:24BF74*
- ID_OUI_FROM_DATABASE=Private
+ ID_OUI_FROM_DATABASE=Hamamatsu Photonics K.K.
OUI:24C0B3*
ID_OUI_FROM_DATABASE=RSF
ID_OUI_FROM_DATABASE=LG Innotek
OUI:24E8E5*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
OUI:24E927*
ID_OUI_FROM_DATABASE=TomTom International BV
ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD
OUI:28C01B*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
OUI:28C0DA*
ID_OUI_FROM_DATABASE=Juniper Networks
OUI:28C13C*
ID_OUI_FROM_DATABASE=Hon Hai Precision Industry Co., Ltd.
+OUI:28C1A0*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:28C21F*
ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO-MECHANICS(THAILAND)
OUI:2C6798*
ID_OUI_FROM_DATABASE=InTalTech Ltd.
+OUI:2C67AB*
+ ID_OUI_FROM_DATABASE=EZELINK TELECOM
+
OUI:2C67FB*
ID_OUI_FROM_DATABASE=ShenZhen Zhengjili Electronics Co., LTD
OUI:2CBEEB*
ID_OUI_FROM_DATABASE=Nothing Technology Limited
+OUI:2CC253*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:2CC260*
ID_OUI_FROM_DATABASE=Oracle Corporation
ID_OUI_FROM_DATABASE=Hosiden Corporation
OUI:303180*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
OUI:303235*
ID_OUI_FROM_DATABASE=Qingdao Intelligent&Precise Electronics Co.,Ltd.
ID_OUI_FROM_DATABASE=Texas Instruments
OUI:348511*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
OUI:348518*
ID_OUI_FROM_DATABASE=Espressif Inc.
ID_OUI_FROM_DATABASE=Apple, Inc.
OUI:34AA31*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
OUI:34AA8B*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
OUI:3CDFBD*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+OUI:3CE002*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
OUI:3CE038*
ID_OUI_FROM_DATABASE=Omnifi Inc.
ID_OUI_FROM_DATABASE=mediola - connected living AG
OUI:40679B*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
OUI:406826*
ID_OUI_FROM_DATABASE=Thales UK Limited
OUI:409151*
ID_OUI_FROM_DATABASE=Espressif Inc.
+OUI:40921A*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:409505*
ID_OUI_FROM_DATABASE=ACOINFO TECHNOLOGY CO.,LTD
OUI:484520*
ID_OUI_FROM_DATABASE=Intel Corporate
+OUI:4845CF*
+ ID_OUI_FROM_DATABASE=LLC Proizvodstvennaya Kompania TransService
+
OUI:48468D*
ID_OUI_FROM_DATABASE=Zepcam B.V.
ID_OUI_FROM_DATABASE=Wu Qi Technologies,Inc.
OUI:48555E*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
OUI:48555F*
ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD
OUI:4C98EF*
ID_OUI_FROM_DATABASE=Zeo
+OUI:4C9B63*
+ ID_OUI_FROM_DATABASE=LG Innotek
+
OUI:4C9D22*
ID_OUI_FROM_DATABASE=ACES Co.,Ltd
OUI:50E24E*
ID_OUI_FROM_DATABASE=zte corporation
+OUI:50E538*
+ ID_OUI_FROM_DATABASE=Hangzhou Hikvision Digital Technology Co.,Ltd.
+
OUI:50E549*
ID_OUI_FROM_DATABASE=GIGA-BYTE TECHNOLOGY CO.,LTD.
OUI:54083B4*
ID_OUI_FROM_DATABASE=Toray Medical Company Limited
+OUI:54083B5*
+ ID_OUI_FROM_DATABASE=shenzhen HAIOT technology co.,ltd
+
OUI:54083B6*
ID_OUI_FROM_DATABASE=Vector Atomic
+OUI:54083B7*
+ ID_OUI_FROM_DATABASE=ASCS Sp. z o.o.
+
OUI:54083B8*
ID_OUI_FROM_DATABASE=Update Systems Inc.
+OUI:54083B9*
+ ID_OUI_FROM_DATABASE=Unicompute Technology Co.,Ltd.
+
OUI:54083BA*
ID_OUI_FROM_DATABASE=Silex Ipari Automatizálási Zrt.
OUI:54083BB*
ID_OUI_FROM_DATABASE=Korea Bus Broadcasting
+OUI:54083BC*
+ ID_OUI_FROM_DATABASE=FairPhone B.V.
+
+OUI:54083BD*
+ ID_OUI_FROM_DATABASE=BHS Corrugated Maschinen- und Anlagenbau GmbH
+
+OUI:54083BE*
+ ID_OUI_FROM_DATABASE=Sinclair Technologies
+
OUI:540910*
ID_OUI_FROM_DATABASE=Apple, Inc.
OUI:54F876*
ID_OUI_FROM_DATABASE=ABB AG
+OUI:54F8F0*
+ ID_OUI_FROM_DATABASE=Tesla Inc
+
OUI:54FA3E*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
OUI:5C27D4*
ID_OUI_FROM_DATABASE=Shenzhen Qihu Intelligent Technology Company Limited
+OUI:5C2886*
+ ID_OUI_FROM_DATABASE=Inventec(Chongqing) Corporation
+
OUI:5C2AEF*
ID_OUI_FROM_DATABASE=r2p Asia-Pacific Pty Ltd
OUI:601971*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+OUI:601B52*
+ ID_OUI_FROM_DATABASE=Vodafone Italia S.p.A.
+
OUI:601D0F*
ID_OUI_FROM_DATABASE=Midnite Solar
OUI:6081F9*
ID_OUI_FROM_DATABASE=Helium Systems, Inc
+OUI:608246*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:608334*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
OUI:60DB98*
ID_OUI_FROM_DATABASE=Calix Inc.
+OUI:60DC81*
+ ID_OUI_FROM_DATABASE=AltoBeam Inc.
+
OUI:60DD70*
ID_OUI_FROM_DATABASE=Apple, Inc.
OUI:641ABA*
ID_OUI_FROM_DATABASE=Dryad Networks GmbH
+OUI:641C10*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
OUI:641C67*
ID_OUI_FROM_DATABASE=DIGIBRAS INDUSTRIA DO BRASILS/A
ID_OUI_FROM_DATABASE=Guangzhou Xianyou Intelligent Technogoly CO., LTD
OUI:681AA4*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
OUI:681AB2*
ID_OUI_FROM_DATABASE=zte corporation
ID_OUI_FROM_DATABASE=Hewlett Packard
OUI:6CC242*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
OUI:6CC26B*
ID_OUI_FROM_DATABASE=Apple, Inc.
OUI:700514*
ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
+OUI:7006920*
+ ID_OUI_FROM_DATABASE=Techology, LLC
+
+OUI:7006921*
+ ID_OUI_FROM_DATABASE=Beijing Fortech Microsystems., Co., Ltd.
+
+OUI:7006922*
+ ID_OUI_FROM_DATABASE=Scud (Fujian) Electronics Co.,Ltd
+
+OUI:7006923*
+ ID_OUI_FROM_DATABASE=BOSSCCTV CO., LTD
+
+OUI:7006924*
+ ID_OUI_FROM_DATABASE=Fusiostor Technologies Private Limited
+
+OUI:7006925*
+ ID_OUI_FROM_DATABASE=CANAAN CREATIVE CO.,LTD.
+
+OUI:7006926*
+ ID_OUI_FROM_DATABASE=Hangzhou Clounix Technology Limited
+
+OUI:7006928*
+ ID_OUI_FROM_DATABASE=JMA Wireless
+
+OUI:7006929*
+ ID_OUI_FROM_DATABASE=Shenzhen Lingwei Technology Co., Ltd
+
+OUI:700692A*
+ ID_OUI_FROM_DATABASE=Munters
+
+OUI:700692B*
+ ID_OUI_FROM_DATABASE=SWIT Electronics Co.,Ltd
+
+OUI:700692C*
+ ID_OUI_FROM_DATABASE=ScoreBird, LLC
+
+OUI:700692D*
+ ID_OUI_FROM_DATABASE=Skyware Protech Limited
+
OUI:7006AC*
ID_OUI_FROM_DATABASE=Eastcompeace Technology Co., Ltd
OUI:7072CF*
ID_OUI_FROM_DATABASE=EdgeCore Networks
+OUI:7072FE*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:7073CB*
ID_OUI_FROM_DATABASE=Apple, Inc.
ID_OUI_FROM_DATABASE=Voltaware Limited
OUI:70B3D5278*
- ID_OUI_FROM_DATABASE=Private
+ ID_OUI_FROM_DATABASE=Medicomp, Inc
OUI:70B3D5279*
ID_OUI_FROM_DATABASE=Medicomp, Inc
ID_OUI_FROM_DATABASE=iungo
OUI:70B3D56F4*
- ID_OUI_FROM_DATABASE=Private
+ ID_OUI_FROM_DATABASE=WDI Wise Device Inc.
OUI:70B3D56F5*
ID_OUI_FROM_DATABASE=Cominfo, Inc.
OUI:74A528*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+OUI:74A58C*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
OUI:74A6CD*
ID_OUI_FROM_DATABASE=Apple, Inc.
ID_OUI_FROM_DATABASE=Shenzhen Hojy Software Co., Ltd.
OUI:78530D*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
OUI:785364*
ID_OUI_FROM_DATABASE=SHIFT GmbH
ID_OUI_FROM_DATABASE=Suzhou Tianping Advanced Digital Technologies Co.Ltd
OUI:785F36*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
OUI:785F4C*
ID_OUI_FROM_DATABASE=Argox Information Co., Ltd.
OUI:788A20*
ID_OUI_FROM_DATABASE=Ubiquiti Inc
+OUI:788A86*
+ ID_OUI_FROM_DATABASE=China Dragon Technology Limited
+
OUI:788B2A*
ID_OUI_FROM_DATABASE=Zhen Shi Information Technology (Shanghai) Co., Ltd.
OUI:7CBFB1*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+OUI:7CC06F*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:7CC177*
ID_OUI_FROM_DATABASE=INGRAM MICRO SERVICES
ID_OUI_FROM_DATABASE=Apple, Inc.
OUI:80EE25*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
OUI:80EE73*
ID_OUI_FROM_DATABASE=Shuttle Inc.
OUI:847207*
ID_OUI_FROM_DATABASE=I&C Technology
+OUI:847293*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
OUI:847303*
ID_OUI_FROM_DATABASE=Letv Mobile and Intelligent Information Technology (Beijing) Corporation Ltd.
OUI:8486F3*
ID_OUI_FROM_DATABASE=Greenvity Communications
+OUI:8488E1*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:8489AD*
ID_OUI_FROM_DATABASE=Apple, Inc.
OUI:84F147*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+OUI:84F175*
+ ID_OUI_FROM_DATABASE=Jiangxi Xunte Intelligent Terminal Co., Ltd
+
OUI:84F1D0*
ID_OUI_FROM_DATABASE=EHOOME IOT PRIVATE LIMITED
OUI:883F0C*
ID_OUI_FROM_DATABASE=system a.v. co., ltd.
+OUI:883F37*
+ ID_OUI_FROM_DATABASE=UHTEK CO., LTD.
+
OUI:883F4A*
ID_OUI_FROM_DATABASE=Texas Instruments
OUI:8C006D*
ID_OUI_FROM_DATABASE=Apple, Inc.
+OUI:8C02CD*
+ ID_OUI_FROM_DATABASE=FUJIAN STAR-NET COMMUNICATION CO.,LTD
+
OUI:8C02FA*
ID_OUI_FROM_DATABASE=COMMANDO Networks Limited
ID_OUI_FROM_DATABASE=Nio
OUI:8C147D1*
- ID_OUI_FROM_DATABASE=Private
+ ID_OUI_FROM_DATABASE=Schneider Electric - Triconex
OUI:8C147D2*
ID_OUI_FROM_DATABASE=Agilent S.p.A
OUI:8C1F640D6*
ID_OUI_FROM_DATABASE=AVD INNOVATION LIMITED
+OUI:8C1F640D8*
+ ID_OUI_FROM_DATABASE=Power Electronics Espana, S.L.
+
OUI:8C1F640E0*
ID_OUI_FROM_DATABASE=Autopharma
OUI:8C1F64281*
ID_OUI_FROM_DATABASE=NVP TECO LTD
+OUI:8C1F64286*
+ ID_OUI_FROM_DATABASE=i2s
+
OUI:8C1F64289*
ID_OUI_FROM_DATABASE=Craft4 Digital GmbH
OUI:8C1F6431A*
ID_OUI_FROM_DATABASE=Asiga Pty Ltd
+OUI:8C1F6431B*
+ ID_OUI_FROM_DATABASE=joint analytical systems GmbH
+
OUI:8C1F64324*
ID_OUI_FROM_DATABASE=Kinetic Technologies
OUI:8C1F64329*
ID_OUI_FROM_DATABASE=YUYAMA MFG Co.,Ltd
+OUI:8C1F6432B*
+ ID_OUI_FROM_DATABASE=Shenyang Taihua Technology Co., Ltd.
+
OUI:8C1F6432C*
ID_OUI_FROM_DATABASE=Taiko Audio B.V.
OUI:8C1F6441D*
ID_OUI_FROM_DATABASE=Aspen Spectra Sdn Bhd
+OUI:8C1F64423*
+ ID_OUI_FROM_DATABASE=Hiwin Mikrosystem Corp.
+
OUI:8C1F64426*
ID_OUI_FROM_DATABASE=eumig industrie-TV GmbH.
OUI:8C1F64647*
ID_OUI_FROM_DATABASE=Senior Group LLC
+OUI:8C1F6464E*
+ ID_OUI_FROM_DATABASE=Nilfisk Food
+
OUI:8C1F64650*
ID_OUI_FROM_DATABASE=L tec Co.,Ltd
OUI:8C1F64848*
ID_OUI_FROM_DATABASE=Jena-Optronik GmbH
+OUI:8C1F6484A*
+ ID_OUI_FROM_DATABASE=Bitmapper Integration Technologies Private Limited
+
OUI:8C1F6484C*
ID_OUI_FROM_DATABASE=AvMap srlu
OUI:8C1F64905*
ID_OUI_FROM_DATABASE=Qualitrol LLC
+OUI:8C1F64907*
+ ID_OUI_FROM_DATABASE=Sicon srl
+
OUI:8C1F64909*
ID_OUI_FROM_DATABASE=MATELEX
OUI:8C1F649F4*
ID_OUI_FROM_DATABASE=Grossenbacher Systeme AG
+OUI:8C1F649F6*
+ ID_OUI_FROM_DATABASE=Vision Systems Safety Tech
+
OUI:8C1F649FA*
ID_OUI_FROM_DATABASE=METRONA-Union GmbH
OUI:8C1F64A76*
ID_OUI_FROM_DATABASE=DEUTA-WERKE GmbH
+OUI:8C1F64A77*
+ ID_OUI_FROM_DATABASE=Rax-Tech International
+
+OUI:8C1F64A81*
+ ID_OUI_FROM_DATABASE=3D perception AS
+
OUI:8C1F64A83*
ID_OUI_FROM_DATABASE=EkspertStroyProekt
OUI:8C1F64BB3*
ID_OUI_FROM_DATABASE=Zaruc Tecnologia LTDA
+OUI:8C1F64BBC*
+ ID_OUI_FROM_DATABASE=Liberator Pty Ltd
+
OUI:8C1F64BBF*
ID_OUI_FROM_DATABASE=Retency
OUI:8C1F64CB2*
ID_OUI_FROM_DATABASE=Dyncir Soluções Tecnológicas Ltda
+OUI:8C1F64CB5*
+ ID_OUI_FROM_DATABASE=Gamber-Johnson LLC
+
+OUI:8C1F64CB7*
+ ID_OUI_FROM_DATABASE=ARKRAY,Inc.Kyoto Laboratory
+
OUI:8C1F64CBE*
ID_OUI_FROM_DATABASE=Circa Enterprises Inc
OUI:8C1F64D20*
ID_OUI_FROM_DATABASE=NAS Engineering PRO
+OUI:8C1F64D21*
+ ID_OUI_FROM_DATABASE=AMETEK CTS GMBH
+
OUI:8C1F64D29*
ID_OUI_FROM_DATABASE=Secure Bits
OUI:8C1F64DCA*
ID_OUI_FROM_DATABASE=Porsche engineering
+OUI:8C1F64DD4*
+ ID_OUI_FROM_DATABASE=Midlands Technical Co., Ltd.
+
OUI:8C1F64DD5*
ID_OUI_FROM_DATABASE=Cardinal Scales Manufacturing Co
OUI:8C1F64E21*
ID_OUI_FROM_DATABASE=LG-LHT Aircraft Solutions GmbH
+OUI:8C1F64E24*
+ ID_OUI_FROM_DATABASE=COMETA SAS
+
OUI:8C1F64E2D*
ID_OUI_FROM_DATABASE=Private
OUI:8C1F64E90*
ID_OUI_FROM_DATABASE=MHE Electronics
+OUI:8C1F64E92*
+ ID_OUI_FROM_DATABASE=EA Elektro-Automatik
+
OUI:8C1F64E94*
ID_OUI_FROM_DATABASE=ZIN TECHNOLOGIES
OUI:8CDEF9*
ID_OUI_FROM_DATABASE=Beijing Xiaomi Mobile Software Co., Ltd
+OUI:8CDF2C*
+ ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd.
+
OUI:8CDF9D*
ID_OUI_FROM_DATABASE=NEC Corporation
OUI:8CF319*
ID_OUI_FROM_DATABASE=Siemens Industrial Automation Products Ltd., Chengdu
+OUI:8CF3E7*
+ ID_OUI_FROM_DATABASE=solidotech
+
OUI:8CF5A3*
ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO-MECHANICS(THAILAND)
OUI:900628*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:9006F2*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
OUI:900917*
ID_OUI_FROM_DATABASE=Far-sighted mobile
OUI:903AE6*
ID_OUI_FROM_DATABASE=PARROT SA
+OUI:903C1D*
+ ID_OUI_FROM_DATABASE=HISENSE VISUAL TECHNOLOGY CO.,LTD
+
OUI:903C92*
ID_OUI_FROM_DATABASE=Apple, Inc.
OUI:90A783*
ID_OUI_FROM_DATABASE=JSW PACIFIC CORPORATION
+OUI:90A7BF*
+ ID_OUI_FROM_DATABASE=EM Microelectronic
+
OUI:90A7C1*
ID_OUI_FROM_DATABASE=Pakedge Device and Software Inc.
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
OUI:90B67A*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
OUI:90B686*
ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd.
OUI:943FC2*
ID_OUI_FROM_DATABASE=Hewlett Packard Enterprise
+OUI:943FD6*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:9440A2*
ID_OUI_FROM_DATABASE=Anywave Communication Technologies, Inc.
ID_OUI_FROM_DATABASE=Shenzhen Fastrain Technology Co., Ltd.
OUI:947FD8*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
OUI:9481A4*
ID_OUI_FROM_DATABASE=Azuray Technologies
OUI:9802D8F*
ID_OUI_FROM_DATABASE=Private
+OUI:98038A*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
OUI:98039B*
ID_OUI_FROM_DATABASE=Mellanox Technologies, Inc.
OUI:98B177*
ID_OUI_FROM_DATABASE=LANDIS + GYR
+OUI:98B379*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:98B3EF*
ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
ID_OUI_FROM_DATABASE=Microsoft Corporation
OUI:A04C0C*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
OUI:A04C5B*
ID_OUI_FROM_DATABASE=Shenzhen TINNO Mobile Technology Corp.
OUI:A06610*
ID_OUI_FROM_DATABASE=FUJITSU LIMITED
+OUI:A06636*
+ ID_OUI_FROM_DATABASE=Intracom SA Telecom Solutions
+
OUI:A06720*
ID_OUI_FROM_DATABASE=China Dragon Technology Limited
OUI:B0966C*
ID_OUI_FROM_DATABASE=Lanbowan Technology Ltd.
+OUI:B09738*
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
+
OUI:B0973A*
ID_OUI_FROM_DATABASE=E-Fuel Corporation
OUI:B85FB0*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+OUI:B86061*
+ ID_OUI_FROM_DATABASE=China Mobile Group Device Co.,Ltd.
+
OUI:B86091*
ID_OUI_FROM_DATABASE=Onnet Technologies and Innovations LLC
OUI:BCF45F*
ID_OUI_FROM_DATABASE=zte corporation
+OUI:BCF499*
+ ID_OUI_FROM_DATABASE=Rockwell Automation
+
OUI:BCF4D4*
ID_OUI_FROM_DATABASE=CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.
OUI:C0174D*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:C01754*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:C01803*
ID_OUI_FROM_DATABASE=HP Inc.
OUI:C067AF*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+OUI:C068CC*
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
+
OUI:C06911*
ID_OUI_FROM_DATABASE=Arista Networks
ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
OUI:C08F20*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
OUI:C09132*
ID_OUI_FROM_DATABASE=Patriot Memory
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
OUI:C8138B*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
OUI:C81451*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
OUI:C8979F*
ID_OUI_FROM_DATABASE=Nokia Corporation
+OUI:C89828*
+ ID_OUI_FROM_DATABASE=zte corporation
+
OUI:C899B2*
ID_OUI_FROM_DATABASE=Arcadyan Corporation
OUI:C8F09E*
ID_OUI_FROM_DATABASE=Espressif Inc.
+OUI:C8F225*
+ ID_OUI_FROM_DATABASE=EM Microelectronic
+
OUI:C8F230*
ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
OUI:CCB3F8*
ID_OUI_FROM_DATABASE=FUJITSU ISOTEC LIMITED
+OUI:CCB54C*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
OUI:CCB55A*
ID_OUI_FROM_DATABASE=Fraunhofer ITWM
OUI:D05875*
ID_OUI_FROM_DATABASE=Active Control Technology Inc.
+OUI:D058A5*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:D058A8*
ID_OUI_FROM_DATABASE=zte corporation
OUI:D42F23*
ID_OUI_FROM_DATABASE=Akenori PTE Ltd
+OUI:D42FCA*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:D4319D*
ID_OUI_FROM_DATABASE=Sinwatec
OUI:D45297*
ID_OUI_FROM_DATABASE=nSTREAMS Technologies, Inc.
+OUI:D452C7*
+ ID_OUI_FROM_DATABASE=Beijing L&S Lancom Platform Tech. Co., Ltd.
+
OUI:D452EE*
ID_OUI_FROM_DATABASE=SKY UK LIMITED
OUI:D4E90B*
ID_OUI_FROM_DATABASE=CVT CO.,LTD
+OUI:D4E95E*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
OUI:D4E98A*
ID_OUI_FROM_DATABASE=Intel Corporate
OUI:D88DC8*
ID_OUI_FROM_DATABASE=Atil Technology Co., LTD
+OUI:D88ED4*
+ ID_OUI_FROM_DATABASE=eero inc.
+
OUI:D88F76*
ID_OUI_FROM_DATABASE=Apple, Inc.
OUI:DC360C*
ID_OUI_FROM_DATABASE=Hitron Technologies. Inc
+OUI:DC3642*
+ ID_OUI_FROM_DATABASE=zte corporation
+
OUI:DC36430*
ID_OUI_FROM_DATABASE=Meier Tobler AG
ID_OUI_FROM_DATABASE=AVM Audiovisuelles Marketing und Computersysteme GmbH
OUI:E028B1*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
OUI:E02967*
ID_OUI_FROM_DATABASE=HMD Global Oy
OUI:E48E10*
ID_OUI_FROM_DATABASE=CIG SHANGHAI CO LTD
+OUI:E48EBB*
+ ID_OUI_FROM_DATABASE=Rockwell Automation
+
OUI:E48F1D*
ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
OUI:EC2C49*
ID_OUI_FROM_DATABASE=NakaoLab, The University of Tokyo
+OUI:EC2C73*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:EC2CE2*
ID_OUI_FROM_DATABASE=Apple, Inc.
OUI:EC8009*
ID_OUI_FROM_DATABASE=NovaSparks
+OUI:EC8150*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:EC8193*
ID_OUI_FROM_DATABASE=Logitech, Inc
OUI:F4A997*
ID_OUI_FROM_DATABASE=CANON INC.
+OUI:F4AAD0*
+ ID_OUI_FROM_DATABASE=OHSUNG
+
OUI:F4ACC1*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
OUI:F82DC0*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+OUI:F82E0C*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
OUI:F82E3F*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
OUI:F8790A*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+OUI:F87928*
+ ID_OUI_FROM_DATABASE=zte corporation
+
OUI:F87999*
ID_OUI_FROM_DATABASE=Guangdong Jiuzhi Technology Co.,Ltd
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
OUI:F8B8B4*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
OUI:F8B95A*
ID_OUI_FROM_DATABASE=LG Innotek
OUI:FC2BB2*
ID_OUI_FROM_DATABASE=Actiontec Electronics, Inc
+OUI:FC2CFD*
+ ID_OUI_FROM_DATABASE=dormakaba Canada Inc. - Keyscan
+
OUI:FC2D5E*
ID_OUI_FROM_DATABASE=zte corporation
OUI:FC47D8*
ID_OUI_FROM_DATABASE=Apple, Inc.
+OUI:FC48C9*
+ ID_OUI_FROM_DATABASE=Yobiiq Intelligence B.V.
+
OUI:FC48EF*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
ID_OUI_FROM_DATABASE=Hitachi High Technologies America, Inc.
OUI:FC7A58*
- ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
OUI:FC7C02*
ID_OUI_FROM_DATABASE=Phicomm (Shanghai) Co., Ltd.
OUI:FC8417*
ID_OUI_FROM_DATABASE=Honor Device Co., Ltd.
+OUI:FC84A7*
+ ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd.
+
OUI:FC8596*
ID_OUI_FROM_DATABASE=Axonne Inc.
acpi:DYX*:
ID_VENDOR_FROM_DATABASE=Dynax Electronics (HK) Ltd
+acpi:EAC*:
+ ID_VENDOR_FROM_DATABASE=Emotiva Audio Corp.
+
acpi:EAG*:
ID_VENDOR_FROM_DATABASE=ELTEC Elektronik AG
---- 20-acpi-vendor.hwdb.base 2023-02-02 14:17:24.826033033 +0000
-+++ 20-acpi-vendor.hwdb 2023-02-02 14:17:24.834033185 +0000
+--- 20-acpi-vendor.hwdb.base 2023-02-15 18:03:45.791408751 +0000
++++ 20-acpi-vendor.hwdb 2023-02-15 18:03:45.799408909 +0000
@@ -3,6 +3,8 @@
# Data imported from:
# https://uefi.org/uefi-pnp-export
acpi:DJP*:
ID_VENDOR_FROM_DATABASE=Maygay Machines, Ltd
-@@ -2335,6 +2364,9 @@
+@@ -2338,6 +2367,9 @@
acpi:EIN*:
ID_VENDOR_FROM_DATABASE=Elegant Invention
acpi:EKA*:
ID_VENDOR_FROM_DATABASE=MagTek Inc.
-@@ -2605,6 +2637,9 @@
+@@ -2608,6 +2640,9 @@
acpi:FCG*:
ID_VENDOR_FROM_DATABASE=First International Computer Ltd
acpi:FCS*:
ID_VENDOR_FROM_DATABASE=Focus Enhancements, Inc.
-@@ -2981,7 +3016,7 @@
+@@ -2984,7 +3019,7 @@
ID_VENDOR_FROM_DATABASE=General Standards Corporation
acpi:GSM*:
acpi:GSN*:
ID_VENDOR_FROM_DATABASE=Grandstream Networks, Inc.
-@@ -3091,6 +3126,9 @@
+@@ -3094,6 +3129,9 @@
acpi:HEC*:
ID_VENDOR_FROM_DATABASE=Hisense Electric Co., Ltd.
acpi:HEL*:
ID_VENDOR_FROM_DATABASE=Hitachi Micro Systems Europe Ltd
-@@ -3223,6 +3261,9 @@
+@@ -3226,6 +3264,9 @@
acpi:HSD*:
ID_VENDOR_FROM_DATABASE=HannStar Display Corp
acpi:HSM*:
ID_VENDOR_FROM_DATABASE=AT&T Microelectronics
-@@ -3349,6 +3390,9 @@
+@@ -3352,6 +3393,9 @@
acpi:ICI*:
ID_VENDOR_FROM_DATABASE=Infotek Communication Inc
acpi:ICM*:
ID_VENDOR_FROM_DATABASE=Intracom SA
-@@ -3445,6 +3489,9 @@
+@@ -3448,6 +3492,9 @@
acpi:IKE*:
ID_VENDOR_FROM_DATABASE=Ikegami Tsushinki Co. Ltd.
acpi:IKS*:
ID_VENDOR_FROM_DATABASE=Ikos Systems Inc
-@@ -3493,6 +3540,9 @@
+@@ -3496,6 +3543,9 @@
acpi:IMX*:
ID_VENDOR_FROM_DATABASE=arpara Technology Co., Ltd.
acpi:INA*:
ID_VENDOR_FROM_DATABASE=Inventec Corporation
-@@ -4012,6 +4062,9 @@
+@@ -4015,6 +4065,9 @@
acpi:LAN*:
ID_VENDOR_FROM_DATABASE=Sodeman Lancom Inc
acpi:LAS*:
ID_VENDOR_FROM_DATABASE=LASAT Comm. A/S
-@@ -4060,6 +4113,9 @@
+@@ -4063,6 +4116,9 @@
acpi:LED*:
ID_VENDOR_FROM_DATABASE=Long Engineering Design Inc
acpi:LEG*:
ID_VENDOR_FROM_DATABASE=Legerity, Inc
-@@ -4078,6 +4134,9 @@
+@@ -4081,6 +4137,9 @@
acpi:LGD*:
ID_VENDOR_FROM_DATABASE=LG Display
acpi:LGI*:
ID_VENDOR_FROM_DATABASE=Logitech Inc
-@@ -4135,6 +4194,9 @@
+@@ -4138,6 +4197,9 @@
acpi:LND*:
ID_VENDOR_FROM_DATABASE=Land Computer Company Ltd
acpi:LNK*:
ID_VENDOR_FROM_DATABASE=Link Tech Inc
-@@ -4169,7 +4231,7 @@
+@@ -4172,7 +4234,7 @@
ID_VENDOR_FROM_DATABASE=Design Technology
acpi:LPL*:
acpi:LSC*:
ID_VENDOR_FROM_DATABASE=LifeSize Communications
-@@ -4345,6 +4407,9 @@
+@@ -4348,6 +4410,9 @@
acpi:MCX*:
ID_VENDOR_FROM_DATABASE=Millson Custom Solutions Inc.
acpi:MDA*:
ID_VENDOR_FROM_DATABASE=Media4 Inc
-@@ -4585,6 +4650,9 @@
+@@ -4588,6 +4653,9 @@
acpi:MOM*:
ID_VENDOR_FROM_DATABASE=Momentum Data Systems
acpi:MOS*:
ID_VENDOR_FROM_DATABASE=Moses Corporation
-@@ -4822,6 +4890,9 @@
+@@ -4825,6 +4893,9 @@
acpi:NAL*:
ID_VENDOR_FROM_DATABASE=Network Alchemy
acpi:NAT*:
ID_VENDOR_FROM_DATABASE=NaturalPoint Inc.
-@@ -5356,6 +5427,9 @@
+@@ -5359,6 +5430,9 @@
acpi:PCX*:
ID_VENDOR_FROM_DATABASE=PC Xperten
acpi:PDM*:
ID_VENDOR_FROM_DATABASE=Psion Dacom Plc.
-@@ -5419,9 +5493,6 @@
+@@ -5422,9 +5496,6 @@
acpi:PHE*:
ID_VENDOR_FROM_DATABASE=Philips Medical Systems Boeblingen GmbH
acpi:PHL*:
ID_VENDOR_FROM_DATABASE=Philips Consumer Electronics Company
-@@ -5512,9 +5583,6 @@
+@@ -5515,9 +5586,6 @@
acpi:PNL*:
ID_VENDOR_FROM_DATABASE=Panelview, Inc.
acpi:PNR*:
ID_VENDOR_FROM_DATABASE=Planar Systems, Inc.
-@@ -5980,9 +6048,6 @@
+@@ -5983,9 +6051,6 @@
acpi:RTI*:
ID_VENDOR_FROM_DATABASE=Rancho Tech Inc
acpi:RTL*:
ID_VENDOR_FROM_DATABASE=Realtek Semiconductor Company Ltd
-@@ -6154,9 +6219,6 @@
+@@ -6157,9 +6222,6 @@
acpi:SEE*:
ID_VENDOR_FROM_DATABASE=SeeColor Corporation
acpi:SEI*:
ID_VENDOR_FROM_DATABASE=Seitz & Associates Inc
-@@ -6634,6 +6696,9 @@
+@@ -6637,6 +6699,9 @@
acpi:SVD*:
ID_VENDOR_FROM_DATABASE=SVD Computer
acpi:SVI*:
ID_VENDOR_FROM_DATABASE=Sun Microsystems
-@@ -6718,6 +6783,9 @@
+@@ -6721,6 +6786,9 @@
acpi:SZM*:
ID_VENDOR_FROM_DATABASE=Shenzhen MTC Co., Ltd
acpi:TAA*:
ID_VENDOR_FROM_DATABASE=Tandberg
-@@ -6808,6 +6876,9 @@
+@@ -6811,6 +6879,9 @@
acpi:TDG*:
ID_VENDOR_FROM_DATABASE=Six15 Technologies
acpi:TDM*:
ID_VENDOR_FROM_DATABASE=Tandem Computer Europe Inc
-@@ -6850,6 +6921,9 @@
+@@ -6853,6 +6924,9 @@
acpi:TEV*:
ID_VENDOR_FROM_DATABASE=Televés, S.A.
acpi:TEZ*:
ID_VENDOR_FROM_DATABASE=Tech Source Inc.
-@@ -6976,9 +7050,6 @@
+@@ -6979,9 +7053,6 @@
acpi:TNC*:
ID_VENDOR_FROM_DATABASE=TNC Industrial Company Ltd
acpi:TNM*:
ID_VENDOR_FROM_DATABASE=TECNIMAGEN SA
-@@ -7288,14 +7359,14 @@
+@@ -7291,14 +7362,14 @@
acpi:UNC*:
ID_VENDOR_FROM_DATABASE=Unisys Corporation
acpi:UNI*:
ID_VENDOR_FROM_DATABASE=Uniform Industry Corp.
-@@ -7330,6 +7401,9 @@
+@@ -7333,6 +7404,9 @@
acpi:USA*:
ID_VENDOR_FROM_DATABASE=Utimaco Safeware AG
acpi:USD*:
ID_VENDOR_FROM_DATABASE=U.S. Digital Corporation
-@@ -7588,9 +7662,6 @@
+@@ -7591,9 +7665,6 @@
acpi:WAL*:
ID_VENDOR_FROM_DATABASE=Wave Access
acpi:WAV*:
ID_VENDOR_FROM_DATABASE=Wavephore
-@@ -7718,7 +7789,7 @@
+@@ -7721,7 +7792,7 @@
ID_VENDOR_FROM_DATABASE=WyreStorm Technologies LLC
acpi:WYS*:
acpi:WYT*:
ID_VENDOR_FROM_DATABASE=Wooyoung Image & Information Co.,Ltd.
-@@ -7732,9 +7803,6 @@
+@@ -7735,9 +7806,6 @@
acpi:XDM*:
ID_VENDOR_FROM_DATABASE=XDM Ltd.
acpi:XES*:
ID_VENDOR_FROM_DATABASE=Extreme Engineering Solutions, Inc.
-@@ -7765,9 +7833,6 @@
+@@ -7768,9 +7836,6 @@
acpi:XNT*:
ID_VENDOR_FROM_DATABASE=XN Technologies, Inc.
acpi:XQU*:
ID_VENDOR_FROM_DATABASE=SHANGHAI SVA-DAV ELECTRONICS CO., LTD
-@@ -7834,6 +7899,9 @@
+@@ -7837,6 +7902,9 @@
acpi:ZBX*:
ID_VENDOR_FROM_DATABASE=Zebax Technologies
ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4330/4350/4550] (Radeon HD 4350/4550 HyperMemory DDR2)
pci:v00001002d00009553*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v]
+ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v]
pci:v00001002d00009553sv00001025sd0000015E*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 4570)
+ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v] (Mobility Radeon HD 4570)
pci:v00001002d00009553sv00001025sd0000017D*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 4570)
+ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v] (Mobility Radeon HD 4570)
pci:v00001002d00009553sv00001025sd00000205*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 4570 / 545v)
+ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v] (Mobility Radeon HD 4570 / 545v)
pci:v00001002d00009553sv00001025sd00000206*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 4570)
+ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v] (Mobility Radeon HD 4570)
pci:v00001002d00009553sv00001025sd00000237*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 4570)
+ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v] (Mobility Radeon HD 4570)
pci:v00001002d00009553sv00001028sd000002BE*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 4570 / 545v)
+ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v] (Mobility Radeon HD 4570 / 545v)
pci:v00001002d00009553sv00001028sd000002E8*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 4530)
+ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v] (Mobility Radeon HD 4530)
pci:v00001002d00009553sv0000103Csd0000143C*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 545v)
+ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v] (Mobility Radeon HD 545v)
pci:v00001002d00009553sv0000103Csd00001446*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 545v)
+ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v] (Mobility Radeon HD 545v)
pci:v00001002d00009553sv0000103Csd00003624*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 4530)
+ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v] (Mobility Radeon HD 4530)
pci:v00001002d00009553sv0000103Csd00003628*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 4530)
+ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v] (Mobility Radeon HD 4530)
pci:v00001002d00009553sv0000103Csd00003636*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 4530)
+ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v] (Mobility Radeon HD 4530)
pci:v00001002d00009553sv00001043sd00001B32*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 4570)
+ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v] (Mobility Radeon HD 4570)
pci:v00001002d00009553sv00001043sd00001B42*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 4570)
+ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v] (Mobility Radeon HD 4570)
pci:v00001002d00009553sv0000104Dsd00009056*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 4570)
+ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v] (Mobility Radeon HD 4570)
pci:v00001002d00009553sv00001179sd0000FF82*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Satellite L505-13T GPU (Mobility Radeon HD 5145))
+ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v] (Satellite L505-13T GPU (Mobility Radeon HD 5145))
pci:v00001002d00009553sv0000144Dsd0000C07F*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 545v)
+ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v] (Mobility Radeon HD 545v)
pci:v00001002d00009553sv0000144Dsd0000C571*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 545v)
+ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v] (Mobility Radeon HD 545v)
pci:v00001002d00009553sv00001462sd00001006*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 545v)
+ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v] (Mobility Radeon HD 545v)
pci:v00001002d00009553sv000017AAsd00002129*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 545v)
+ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v] (Mobility Radeon HD 545v)
pci:v00001002d00009553sv000017AAsd0000215B*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 545v)
+ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v] (Mobility Radeon HD 545v)
pci:v00001002d00009553sv000017AAsd000021BB*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 545v)
+ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v] (Mobility Radeon HD 545v)
pci:v00001002d00009555*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4350/4550]
+ ID_MODEL_FROM_DATABASE=RV711/M93 [Mobility Radeon HD 4350/4550/530v/540v/545v / FirePro RG220]
pci:v00001002d00009555sv0000103Csd00001411*
- ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4350/4550] (ProBook 4720s GPU (Mobility Radeon HD 4350))
+ ID_MODEL_FROM_DATABASE=RV711/M93 [Mobility Radeon HD 4350/4550/530v/540v/545v / FirePro RG220] (ProBook 4720s GPU (Mobility Radeon HD 4350))
pci:v00001002d00009557*
ID_MODEL_FROM_DATABASE=RV711/M93 GL [FirePro RG220]
pci:v000010DEd000025AA*
ID_MODEL_FROM_DATABASE=GA107M [GeForce MX570 A]
+pci:v000010DEd000025AB*
+ ID_MODEL_FROM_DATABASE=GA107M [GeForce RTX 3050 4GB Laptop GPU]
+
pci:v000010DEd000025AC*
ID_MODEL_FROM_DATABASE=GN20-P0-R-K2 [GeForce RTX 3050 6GB Laptop GPU]
pci:v000010DEd000025BB*
ID_MODEL_FROM_DATABASE=GA107GLM [RTX A500 Laptop GPU]
+pci:v000010DEd000025BC*
+ ID_MODEL_FROM_DATABASE=GA107
+
pci:v000010DEd000025E0*
ID_MODEL_FROM_DATABASE=GA107BM [GeForce RTX 3050 Ti Mobile]
pci:v000010DEd00002717*
ID_MODEL_FROM_DATABASE=GN21-X11 [GeForce RTX 4090 Laptop GPU]
+pci:v000010DEd00002730*
+ ID_MODEL_FROM_DATABASE=AD103GLM [RTX 5000 Ada Generation Laptop GPU]
+
pci:v000010DEd00002757*
ID_MODEL_FROM_DATABASE=GN21-X11
pci:v000010DEd000027B8*
ID_MODEL_FROM_DATABASE=AD104GL [L4]
+pci:v000010DEd000027BA*
+ ID_MODEL_FROM_DATABASE=AD104
+
+pci:v000010DEd000027BB*
+ ID_MODEL_FROM_DATABASE=AD104GLM [RTX 3500 Ada Generation Laptop GPU]
+
pci:v000010DEd000027E0*
ID_MODEL_FROM_DATABASE=GN21-X9
pci:v000010DEd00002820*
ID_MODEL_FROM_DATABASE=GN21-X6
+pci:v000010DEd00002838*
+ ID_MODEL_FROM_DATABASE=AD106GLM [RTX 3000 Ada Generation Laptop GPU]
+
pci:v000010DEd00002860*
ID_MODEL_FROM_DATABASE=GN21-X6
pci:v000010DEd000028A1*
ID_MODEL_FROM_DATABASE=GN21-X2
+pci:v000010DEd000028B8*
+ ID_MODEL_FROM_DATABASE=AD107GLM [RTX 2000 Ada Generation Laptop GPU]
+
pci:v000010DEd000028E0*
ID_MODEL_FROM_DATABASE=GN21-X4
ID_MODEL_FROM_DATABASE=K8T800M Host Bridge
pci:v00001106d00003227*
- ID_MODEL_FROM_DATABASE=VT8237 ISA bridge [KT600/K8T800/K8T890 South]
+ ID_MODEL_FROM_DATABASE=VT8237 ISA bridge [KT600/K8T800/K8T890/CN700 South]
pci:v00001106d00003227sv00001043sd000080ED*
- ID_MODEL_FROM_DATABASE=VT8237 ISA bridge [KT600/K8T800/K8T890 South] (A7V600/K8V-X/A8V Deluxe motherboard)
+ ID_MODEL_FROM_DATABASE=VT8237 ISA bridge [KT600/K8T800/K8T890/CN700 South] (A7V600/K8V-X/A8V Deluxe motherboard)
pci:v00001106d00003227sv00001106sd00003227*
- ID_MODEL_FROM_DATABASE=VT8237 ISA bridge [KT600/K8T800/K8T890 South] (DFI KT600-AL / Soltek SL-B9D-FGR Motherboard)
+ ID_MODEL_FROM_DATABASE=VT8237 ISA bridge [KT600/K8T800/K8T890/CN700 South] (VT8237 ISA bridge)
pci:v00001106d00003227sv00001458sd00005001*
- ID_MODEL_FROM_DATABASE=VT8237 ISA bridge [KT600/K8T800/K8T890 South] (GA-7VT600 Motherboard)
+ ID_MODEL_FROM_DATABASE=VT8237 ISA bridge [KT600/K8T800/K8T890/CN700 South] (GA-7VT600 Motherboard)
pci:v00001106d00003227sv0000147Bsd00001407*
- ID_MODEL_FROM_DATABASE=VT8237 ISA bridge [KT600/K8T800/K8T890 South] (KV8-MAX3 motherboard)
+ ID_MODEL_FROM_DATABASE=VT8237 ISA bridge [KT600/K8T800/K8T890/CN700 South] (KV8-MAX3 motherboard)
pci:v00001106d00003227sv00001849sd00003227*
- ID_MODEL_FROM_DATABASE=VT8237 ISA bridge [KT600/K8T800/K8T890 South] (K7VT4 motherboard)
+ ID_MODEL_FROM_DATABASE=VT8237 ISA bridge [KT600/K8T800/K8T890/CN700 South] (K7VT4 motherboard)
pci:v00001106d00003230*
ID_MODEL_FROM_DATABASE=K8M890CE/K8N890CE [Chrome 9]
pci:v0000144Dd0000A544*
ID_MODEL_FROM_DATABASE=Exynos 8890 PCIe Root Complex
+pci:v0000144Dd0000A575*
+ ID_MODEL_FROM_DATABASE=Exynos 7420 PCIe Root Complex
+
+pci:v0000144Dd0000A5E3*
+ ID_MODEL_FROM_DATABASE=Exynos 5433 PCIe Root Complex
+
pci:v0000144Dd0000A800*
ID_MODEL_FROM_DATABASE=XP941 PCIe SSD
pci:v000016E2d00001120*
ID_MODEL_FROM_DATABASE=GX1120 Arbitrary Waveform and Function Generator PXI Board
+pci:v000016E2d00001164*
+ ID_MODEL_FROM_DATABASE=GX1164 Multi-Channel Programmable Resistor PXI Board
+
pci:v000016E2d00001632*
ID_MODEL_FROM_DATABASE=GX1632e 32-Channel Arbitrary Analog Output PXIe Board
+pci:v000016E2d00001648*
+ ID_MODEL_FROM_DATABASE=GX1648 64-Channel Analog Output PXI Board
+
+pci:v000016E2d00001649*
+ ID_MODEL_FROM_DATABASE=GX1649 64-Channel Arbitrary Analog Output PXI Board
+
+pci:v000016E2d00001838*
+ ID_MODEL_FROM_DATABASE=GX1838 Precision DC Source PXI Board
+
pci:v000016E2d00002065*
ID_MODEL_FROM_DATABASE=GX2065 Digital Multimeter PXI Board
pci:v000016E2d00002201*
ID_MODEL_FROM_DATABASE=GC2200 High Resolution Universal Time Interval Counter PCI Board
+pci:v000016E2d00003104*
+ ID_MODEL_FROM_DATABASE=GX3104 4-Channel 20V, 250mA Per Channel SMU PXI Board
+
+pci:v000016E2d00003108*
+ ID_MODEL_FROM_DATABASE=GX3108 4-Channel Source Measure Unit PXI Board
+
+pci:v000016E2d00003116*
+ ID_MODEL_FROM_DATABASE=GX3116e 16-Channel DUT Power Supply PXIe Board
+
+pci:v000016E2d00003348*
+ ID_MODEL_FROM_DATABASE=GX3348 Multi-Channel DC Source and Switch Matrix Board
+
+pci:v000016E2d00003500*
+ ID_MODEL_FROM_DATABASE=GX3500 Digital I/O FLEX FPGA Board
+
+pci:v000016E2d00003700*
+ ID_MODEL_FROM_DATABASE=GX3700e Digital I/O FLEX FPGA PXIe Board
+
+pci:v000016E2d00003701*
+ ID_MODEL_FROM_DATABASE=GX3700 Digital I/O FLEX FPGA PXI Board
+
+pci:v000016E2d00003800*
+ ID_MODEL_FROM_DATABASE=GX3800e Digital I/O FLEX FPGA PXIe Board
+
+pci:v000016E2d00004943*
+ ID_MODEL_FROM_DATABASE=GX4943 HellFire/Longbow Serial Communication Board
+
pci:v000016E2d00005050*
ID_MODEL_FROM_DATABASE=GC5050 Dynamic Digital I/O with Algorithmic Sequencer PCI Board
+pci:v000016E2d00005055*
+ ID_MODEL_FROM_DATABASE=GX5055 Dynamic Digital I/O with Pin Electronics PXI Board
+
+pci:v000016E2d00005083*
+ ID_MODEL_FROM_DATABASE=GX5083 Dynamic Digital I/O with Algorithmic Sequencer PXI Board
+
+pci:v000016E2d00005106*
+ ID_MODEL_FROM_DATABASE=GX5106 High-Speed Digital I/O Cycle Timing (Master) Module PXI Board
+
+pci:v000016E2d00005151*
+ ID_MODEL_FROM_DATABASE=GX5150/1 High Speed Digital I/O (50/100MHz) PXI Board
+
+pci:v000016E2d00005152*
+ ID_MODEL_FROM_DATABASE=GX5152/3 DSR High Speed Digital Stimulus/Response PXI Board
+
+pci:v000016E2d00005250*
+ ID_MODEL_FROM_DATABASE=GX5250 Digital I/O Streaming PXI Board
+
+pci:v000016E2d00005280*
+ ID_MODEL_FROM_DATABASE=GX5280 High-Speed Digital I/O PXI Board
+
+pci:v000016E2d00005290*
+ ID_MODEL_FROM_DATABASE=GX5290 High-Speed Dynamic Digital I/O PXI Board
+
+pci:v000016E2d00005294*
+ ID_MODEL_FROM_DATABASE=GX5294 High-Speed Digital I/O PXI Board
+
+pci:v000016E2d00005295*
+ ID_MODEL_FROM_DATABASE=GX5295 Digital I/O with Pin Electronics and PMU PXI Board
+
+pci:v000016E2d00005296*
+ ID_MODEL_FROM_DATABASE=GX5296 Digital I/O with Pin Electronics and PMU PXI Board
+
+pci:v000016E2d00005550*
+ ID_MODEL_FROM_DATABASE=GX5050 Dynamic Digital I/O with Algorithmic Sequencer PXI Board
+
pci:v000016E2d00005641*
ID_MODEL_FROM_DATABASE=GX5641/2 Bi-directional Differential-TTL I/O PXI Board
+pci:v000016E2d00005731*
+ ID_MODEL_FROM_DATABASE=GX5731 Digital I/O with 128 TTL Channels and 3x32 Customizable Channels PXI Board
+
+pci:v000016E2d00005732*
+ ID_MODEL_FROM_DATABASE=GX5732 224-Channel Static Digital I/O PXI Board
+
+pci:v000016E2d00005733*
+ ID_MODEL_FROM_DATABASE=GX5733 Digital I/O with 96 TTL Channels and 32 Customizable Channels PXI Board
+
+pci:v000016E2d00005960*
+ ID_MODEL_FROM_DATABASE=GX5961/4 Digital I/O Timing/Sync with Pin Electronics and PMU PXI Board
+
+pci:v000016E2d00006021*
+ ID_MODEL_FROM_DATABASE=GX6021 20-Channel RF Multiplexer PXI Board
+
+pci:v000016E2d00006062*
+ ID_MODEL_FROM_DATABASE=GX6062 60-Channel RF Multiplexer PXI Board
+
+pci:v000016E2d00006115*
+ ID_MODEL_FROM_DATABASE=GX6115 15-Channel High Current SPDT Form-C Relay PXI Board
+
+pci:v000016E2d00006125*
+ ID_MODEL_FROM_DATABASE=GX6125 25-Channel High-Density SPDT Form-C Relay PXI Board
+
+pci:v000016E2d00006138*
+ ID_MODEL_FROM_DATABASE=GX6138 38-Channel SPST Form-A Relay PXI Board
+
+pci:v000016E2d00006188*
+ ID_MODEL_FROM_DATABASE=GX6188 104-Channel 8x8 Multiplexer/Matrix PXI Board
+
+pci:v000016E2d00006192*
+ ID_MODEL_FROM_DATABASE=GX6192 16, 16x2 High Frequency, High Density Multiplexer PXI Board
+
+pci:v000016E2d00006196*
+ ID_MODEL_FROM_DATABASE=GX6196 96-Channel DPST Form-A Relay Carrier PXI Board
+
+pci:v000016E2d00006256*
+ ID_MODEL_FROM_DATABASE=GX6256 16, 16x2 Low Frequency, High Density Multiplexer PXI Board
+
+pci:v000016E2d00006264*
+ ID_MODEL_FROM_DATABASE=GX6264 128-Channel Scanner/Multiplexer Board
+
+pci:v000016E2d00006315*
+ ID_MODEL_FROM_DATABASE=GX6315 45-Channel High Current SPDT Form-C Relay Board
+
+pci:v000016E2d00006325*
+ ID_MODEL_FROM_DATABASE=GX6325 75-Channel High-Density SPDT Form-C Relay Board
+
+pci:v000016E2d00006338*
+ ID_MODEL_FROM_DATABASE=GX6338 114-Channel SPST Form-A Relay PXI Board
+
+pci:v000016E2d00006377*
+ ID_MODEL_FROM_DATABASE=GX6377 Multifunction Switching PXI Board
+
+pci:v000016E2d00006384*
+ ID_MODEL_FROM_DATABASE=GX6384 Configurable High-Density Switch Matrix PXI Board
+
+pci:v000016E2d00006616*
+ ID_MODEL_FROM_DATABASE=GX6616 6x2:16 Switch Matrix PXI Board
+
+pci:v000016E2d00006864*
+ ID_MODEL_FROM_DATABASE=GX6864 Video Switching PXI Board
+
+pci:v000016E2d00007400*
+ ID_MODEL_FROM_DATABASE=GX7400 Dual-Output Programmable Power Supply PXI Board
+
+pci:v000016E2d00007404*
+ ID_MODEL_FROM_DATABASE=GX7404 Prototyping and Power Interface PXI Board
+
+pci:v000016E2d00007777*
+ ID_MODEL_FROM_DATABASE=GX7777 Generic Interface PXI Board
+
+pci:v000016E2d00007779*
+ ID_MODEL_FROM_DATABASE=GX7779 Backplane Tester PXI Board
+
pci:v000016E3*
ID_VENDOR_FROM_DATABASE=European Space Agency
ID_VENDOR_FROM_DATABASE=MAXIM Integrated Products
pci:v0000193D*
- ID_VENDOR_FROM_DATABASE=Hangzhou H3C Technologies Co., Ltd.
+ ID_VENDOR_FROM_DATABASE=New H3C Technologies Co., Ltd.
pci:v0000193F*
ID_VENDOR_FROM_DATABASE=AHA Products Group
pci:v00001C5Fd0000000Esv00001C5Fsd00000B21*
ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6530 1920G 2.5" U.2)
+pci:v00001C5Fd0000000Esv00001C5Fsd00000B25*
+ ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6530 1920G E1.S)
+
+pci:v00001C5Fd0000000Esv00001C5Fsd00000B27*
+ ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6630 1920G 2.5" U.2)
+
pci:v00001C5Fd0000000Esv00001C5Fsd00000B30*
ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6530 3840G AIC)
pci:v00001C5Fd0000000Esv00001C5Fsd00000B31*
ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6530 3840G 2.5" U.2)
+pci:v00001C5Fd0000000Esv00001C5Fsd00000B35*
+ ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6530 3840G E1.S)
+
+pci:v00001C5Fd0000000Esv00001C5Fsd00000B37*
+ ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6630 3840G 2.5" U.2)
+
pci:v00001C5Fd0000000Esv00001C5Fsd00000B40*
ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6530 7680G AIC)
pci:v00001C5Fd0000000Esv00001C5Fsd00000B41*
ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6530 7680G 2.5" U.2)
+pci:v00001C5Fd0000000Esv00001C5Fsd00000B47*
+ ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6630 7680G 2.5" U.2)
+
pci:v00001C5Fd0000000Esv00001C5Fsd00001331*
ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6531 3840G 2.5" U.2)
pci:v00001C5Fd0000000Esv00001C5Fsd00001341*
ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6531 7680G 2.5" U.2)
+pci:v00001C5Fd0000000Esv00001C5Fsd00001431*
+ ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6541 3840G 2.5" U.2)
+
+pci:v00001C5Fd0000000Esv00001C5Fsd00001441*
+ ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6541 7680G 2.5" U.2)
+
pci:v00001C5Fd0000000Esv00001C5Fsd00004B20*
ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6536 1600G AIC)
pci:v00001C5Fd0000000Esv00001C5Fsd00004B21*
ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6536 1600G 2.5" U.2)
+pci:v00001C5Fd0000000Esv00001C5Fsd00004B25*
+ ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6536 1600G E1.S)
+
+pci:v00001C5Fd0000000Esv00001C5Fsd00004B27*
+ ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6636 1600G 2.5" U.2)
+
pci:v00001C5Fd0000000Esv00001C5Fsd00004B30*
ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6536 3200G AIC)
pci:v00001C5Fd0000000Esv00001C5Fsd00004B31*
ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6536 3200G 2.5" U.2)
+pci:v00001C5Fd0000000Esv00001C5Fsd00004B35*
+ ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6536 3200G E1.S)
+
+pci:v00001C5Fd0000000Esv00001C5Fsd00004B37*
+ ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6636 3200G 2.5" U.2)
+
pci:v00001C5Fd0000000Esv00001C5Fsd00004B40*
ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6536 6400G AIC)
pci:v00001C5Fd0000000Esv00001C5Fsd00004B41*
ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6536 6400G 2.5" U.2)
+pci:v00001C5Fd0000000Esv00001C5Fsd00004B47*
+ ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6636 6400G 2.5" U.2)
+
pci:v00001C5Fd0000000Esv00001C5Fsd00005331*
ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6537 3200G 2.5" U.2)
pci:v00001C5Fd0000000Esv00001C5Fsd00005341*
ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6537 6400G 2.5" U.2)
+pci:v00001C5Fd0000000Esv00001C5Fsd00005431*
+ ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6547 3200G 2.5" U.2)
+
+pci:v00001C5Fd0000000Esv00001C5Fsd00005441*
+ ID_MODEL_FROM_DATABASE=PBlaze6 6530 (NVMe SSD PBlaze6 6547 6400G 2.5" U.2)
+
pci:v00001C5Fd0000003D*
ID_MODEL_FROM_DATABASE=PBlaze5 920/926
pci:v00001C5Fd0000003Esv00001C5Fsd00004B61*
ID_MODEL_FROM_DATABASE=PBlaze6 6920/6930 (NVMe SSD PBlaze6 6936 25600GB 2.5" U.3)
+pci:v00001C5Fd0000003F*
+ ID_MODEL_FROM_DATABASE=PBlaze7 7940/7946
+
pci:v00001C5Fd00000540*
ID_MODEL_FROM_DATABASE=PBlaze4 NVMe SSD
ID_MODEL_FROM_DATABASE=NVMe SSD Controller UHXXXa series (NVMe SSD UHXXXa series U.2 6400GB)
pci:v00001CC4d00001203sv00001CC4sd0000E122*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller UHXXXa series (NVMe SSD UH711a series U.2 1920G)
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller UHXXXa series (NVMe SSD UH711a series U.2 1920GB)
pci:v00001CC4d00001203sv00001CC4sd0000E123*
ID_MODEL_FROM_DATABASE=NVMe SSD Controller UHXXXa series (NVMe SSD UH711a series U.2 3840GB)
ID_MODEL_FROM_DATABASE=SM2263EN/SM2263XT-based OEM SSD
pci:v00001D9B*
- ID_VENDOR_FROM_DATABASE=Facebook, Inc.
+ ID_VENDOR_FROM_DATABASE=Meta Platforms, Inc.
pci:v00001D9Bd00000010*
ID_MODEL_FROM_DATABASE=Networking DOM Engine
pci:v00001DF7d00000003*
ID_MODEL_FROM_DATABASE=alst4x
+pci:v00001DF8*
+ ID_VENDOR_FROM_DATABASE=V&G Information System Co.,Ltd
+
+pci:v00001DF8d0000C000*
+ ID_MODEL_FROM_DATABASE=DC NVMe SSD
+
+pci:v00001DF8d0000C000sv00001DF8sd0000C600*
+ ID_MODEL_FROM_DATABASE=DC NVMe SSD (Enterprise U.2 NVMe SSD)
+
+pci:v00001DF8d0000D000*
+ ID_MODEL_FROM_DATABASE=PC NVMe SSD
+
+pci:v00001DF8d0000D000sv00001DF8sd0000D100*
+ ID_MODEL_FROM_DATABASE=PC NVMe SSD (M.2 NVMe SSD)
+
+pci:v00001DF8d0000D000sv00001DF8sd0000D201*
+ ID_MODEL_FROM_DATABASE=PC NVMe SSD (M.2 NVMe SSD)
+
+pci:v00001DF8d0000D000sv00001DF8sd0000D600*
+ ID_MODEL_FROM_DATABASE=PC NVMe SSD (M.2 NVMe SSD)
+
pci:v00001DFC*
ID_VENDOR_FROM_DATABASE=JSC NT-COM
ID_VENDOR_FROM_DATABASE=DapuStor Corporation
pci:v00001E3Bd00000600*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600
+
+pci:v00001E3Bd00000600sv00001E3Bsd00000010*
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 3.84TB (R5102))
+
+pci:v00001E3Bd00000600sv00001E3Bsd00000013*
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 3.20TB (R5302))
pci:v00001E3Bd00000600sv00001E3Bsd00000030*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 3.84TB (J5100))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 3.84TB (J5100))
pci:v00001E3Bd00000600sv00001E3Bsd00000031*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 7.68TB (J5100))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 7.68TB (J5100))
pci:v00001E3Bd00000600sv00001E3Bsd00000032*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 15.36TB (J5100))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 15.36TB (J5100))
pci:v00001E3Bd00000600sv00001E3Bsd00000033*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 3.20TB (J5300))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 3.20TB (J5300))
pci:v00001E3Bd00000600sv00001E3Bsd00000034*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 6.40TB (J5300))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 6.40TB (J5300))
pci:v00001E3Bd00000600sv00001E3Bsd00000035*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 12.80TB (J5300))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 12.80TB (J5300))
pci:v00001E3Bd00000600sv00001E3Bsd00000036*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD AIC 7.68TB (J5110))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD AIC 7.68TB (J5110))
pci:v00001E3Bd00000600sv00001E3Bsd00000037*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD AIC 6.40TB (J5310))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD AIC 6.40TB (J5310))
+
+pci:v00001E3Bd00000600sv00001E3Bsd00000038*
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 3.84TB (J5100D))
+
+pci:v00001E3Bd00000600sv00001E3Bsd00000039*
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 7.68TB (J5100D))
+
+pci:v00001E3Bd00000600sv00001E3Bsd0000003B*
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 3.20TB (J5300D))
+
+pci:v00001E3Bd00000600sv00001E3Bsd0000003C*
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 6.40TB (J5300D))
pci:v00001E3Bd00000600sv00001E3Bsd0000003E*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD AIC 3.84TB (J5110))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD AIC 3.84TB (J5110))
pci:v00001E3Bd00000600sv00001E3Bsd0000003F*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD AIC 3.20TB (J5310))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD AIC 3.20TB (J5310))
+
+pci:v00001E3Bd00000600sv00001E3Bsd0000004C*
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 QDP 1.92TB (J5100))
+
+pci:v00001E3Bd00000600sv00001E3Bsd0000004D*
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 QDP 1.60TB (J5300))
pci:v00001E3Bd00000600sv00001E3Bsd00000050*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 3.84TB (R5100))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 3.84TB (R5100))
pci:v00001E3Bd00000600sv00001E3Bsd00000051*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 7.68TB (R5100))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 7.68TB (R5100))
pci:v00001E3Bd00000600sv00001E3Bsd00000052*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 15.36TB (R5100))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 15.36TB (R5100))
pci:v00001E3Bd00000600sv00001E3Bsd00000053*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 3.20TB (R5300))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 3.20TB (R5300))
pci:v00001E3Bd00000600sv00001E3Bsd00000054*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 6.40TB (R5300))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 6.40TB (R5300))
pci:v00001E3Bd00000600sv00001E3Bsd00000055*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 12.80TB (R5300))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 12.80TB (R5300))
pci:v00001E3Bd00000600sv00001E3Bsd00000056*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 3.84TB (R5101))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 3.84TB (R5101))
pci:v00001E3Bd00000600sv00001E3Bsd00000059*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 3.20TB (R5301))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 3.20TB (R5301))
pci:v00001E3Bd00000600sv00001E3Bsd00000060*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 3.84TB (R5100D))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 3.84TB (R5100D))
pci:v00001E3Bd00000600sv00001E3Bsd00000061*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 7.68TB (R5100D))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 7.68TB (R5100D))
pci:v00001E3Bd00000600sv00001E3Bsd00000063*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 3.20TB (R5300D))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 3.20TB (R5300D))
pci:v00001E3Bd00000600sv00001E3Bsd00000064*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 6.40TB (R5300D))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 6.40TB (R5300D))
+
+pci:v00001E3Bd00000600sv00001E3Bsd00000066*
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 3.84TB (R5101D))
+
+pci:v00001E3Bd00000600sv00001E3Bsd00000069*
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 3.20TB (R5301D))
+
+pci:v00001E3Bd00000600sv00001E3Bsd0000006C*
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 1.92TB (R5101))
+
+pci:v00001E3Bd00000600sv00001E3Bsd0000006D*
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 1.60TB (J5301))
pci:v00001E3Bd00000600sv00001E3Bsd000000F0*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 0.40TB (X2900))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 0.40TB (X2900))
pci:v00001E3Bd00000600sv00001E3Bsd000000F1*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 0.80TB (X2900))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 0.80TB (X2900))
pci:v00001E3Bd00000600sv00001E3Bsd000000F2*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 1.60TB (X2900))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 1.60TB (X2900))
pci:v00001E3Bd00000600sv00001E3Bsd000000F3*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 3.20TB (X2900))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 3.20TB (X2900))
pci:v00001E3Bd00000600sv00001E3Bsd000000F5*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 0.40TB (X2900P))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 0.40TB (X2900P))
pci:v00001E3Bd00000600sv00001E3Bsd000000F6*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller DPU600 (Enterprise NVMe SSD U.2 0.80TB (X2900P))
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller DP600 (Enterprise NVMe SSD U.2 0.80TB (X2900P))
pci:v00001E3Bd00001098*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD
pci:v00001E3Bd00001098sv00001E3Bsd00000001*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD U.2 0.8TB (H2100))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD U.2 0.8TB (H2100))
pci:v00001E3Bd00001098sv00001E3Bsd00000002*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD U.2 0.96TB (H2200))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD U.2 0.96TB (H2200))
pci:v00001E3Bd00001098sv00001E3Bsd00000004*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD U.2 1.6TB (H2100))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD U.2 1.6TB (H2100))
pci:v00001E3Bd00001098sv00001E3Bsd00000005*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD U.2 1.92TB (H2200))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD U.2 1.92TB (H2200))
pci:v00001E3Bd00001098sv00001E3Bsd00000009*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD U.2 0.8TB (H3100))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD U.2 0.8TB (H3100))
pci:v00001E3Bd00001098sv00001E3Bsd0000000A*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD U.2 0.96TB (H3200))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD U.2 0.96TB (H3200))
pci:v00001E3Bd00001098sv00001E3Bsd0000000C*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD U.2 1.6TB (H3100))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD U.2 1.6TB (H3100))
pci:v00001E3Bd00001098sv00001E3Bsd0000000D*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD U.2 1.92TB (H3200))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD U.2 1.92TB (H3200))
pci:v00001E3Bd00001098sv00001E3Bsd00000014*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD U.2 3.2TB (H3100))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD U.2 3.2TB (H3100))
pci:v00001E3Bd00001098sv00001E3Bsd00000015*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD U.2 3.84TB (H3200))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD U.2 3.84TB (H3200))
pci:v00001E3Bd00001098sv00001E3Bsd00000021*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD U.2 6.4TB (H3100))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD U.2 6.4TB (H3100))
pci:v00001E3Bd00001098sv00001E3Bsd00000022*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD U.2 7.68TB (H3200))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD U.2 7.68TB (H3200))
pci:v00001E3Bd00001098sv00001E3Bsd00000052*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD U.2 0.8TB (H3900))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD U.2 0.8TB (H3900))
pci:v00001E3Bd00001098sv00001E3Bsd00000053*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD U.2 1.6TB (H3900))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD U.2 1.6TB (H3900))
pci:v00001E3Bd00001098sv00001E3Bsd00000059*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD U.2 0.75TB (H3900))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD U.2 0.75TB (H3900))
pci:v00001E3Bd00001098sv00001E3Bsd00000061*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD HHHL 0.8TB (H2100))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD HHHL 0.8TB (H2100))
pci:v00001E3Bd00001098sv00001E3Bsd00000062*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD HHHL 0.96TB (H2200))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD HHHL 0.96TB (H2200))
pci:v00001E3Bd00001098sv00001E3Bsd00000064*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD HHHL 1.6TB (H2100))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD HHHL 1.6TB (H2100))
pci:v00001E3Bd00001098sv00001E3Bsd00000065*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD HHHL 1.92TB (H2200))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD HHHL 1.92TB (H2200))
pci:v00001E3Bd00001098sv00001E3Bsd0000006C*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD HHHL 0.8TB (H3100))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD HHHL 0.8TB (H3100))
pci:v00001E3Bd00001098sv00001E3Bsd0000006D*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD HHHL 0.96TB (H3200))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD HHHL 0.96TB (H3200))
pci:v00001E3Bd00001098sv00001E3Bsd0000006F*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD HHHL 1.6TB (H3100))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD HHHL 1.6TB (H3100))
pci:v00001E3Bd00001098sv00001E3Bsd00000070*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD HHHL 1.92TB (H3200))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD HHHL 1.92TB (H3200))
pci:v00001E3Bd00001098sv00001E3Bsd0000007C*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD HHHL 3.2TB (H3100))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD HHHL 3.2TB (H3100))
pci:v00001E3Bd00001098sv00001E3Bsd0000007D*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD HHHL 3.84TB (H3200))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD HHHL 3.84TB (H3200))
pci:v00001E3Bd00001098sv00001E3Bsd0000007F*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD HHHL 6.4TB (H3100))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD HHHL 6.4TB (H3100))
pci:v00001E3Bd00001098sv00001E3Bsd00000080*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD HHHL 7.68TB (H3200))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD HHHL 7.68TB (H3200))
pci:v00001E3Bd00001098sv00001E3Bsd0000008A*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD HHHL 0.8TB (H3900))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD HHHL 0.8TB (H3900))
pci:v00001E3Bd00001098sv00001E3Bsd0000008B*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD HHHL 1.6TB (H3900))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD HHHL 1.6TB (H3900))
pci:v00001E3Bd00001098sv00001E3Bsd00000091*
- ID_MODEL_FROM_DATABASE=Haishen NVMe SSD (Enterprise NVMe SSD HHHL 0.75TB (H3900))
+ ID_MODEL_FROM_DATABASE=Haishen3 NVMe SSD (Enterprise NVMe SSD HHHL 0.75TB (H3900))
+
+pci:v00001E3Bd00001333*
+ ID_MODEL_FROM_DATABASE=Haishen5 NVMe SSD
pci:v00001E3D*
ID_VENDOR_FROM_DATABASE=Burlywood, Inc
ID_MODEL_FROM_DATABASE=AKD1000 Neural Network Coprocessor [Akida]
pci:v00001E7E*
- ID_VENDOR_FROM_DATABASE=9034 Pliops-Data Processor [XDP1.0]
+ ID_VENDOR_FROM_DATABASE=Pliops
+
+pci:v00001E7Ed00009034*
+ ID_MODEL_FROM_DATABASE=Pliops Extreme Data Processor [XDP1.0]
pci:v00001E7F*
ID_VENDOR_FROM_DATABASE=Jiangsu Huacun Elec. Tech. Co., Ltd.
ID_VENDOR_FROM_DATABASE=3SNIC Ltd
pci:v00001F3Fd00002100*
- ID_MODEL_FROM_DATABASE=SSSRAID SAS/SATA HBA
+ ID_MODEL_FROM_DATABASE=SSSHBA SAS/SATA HBA
pci:v00001F3Fd00002100sv00001F3Fsd00000120*
- ID_MODEL_FROM_DATABASE=SSSRAID SAS/SATA HBA (HBA 32 Ports)
+ ID_MODEL_FROM_DATABASE=SSSHBA SAS/SATA HBA (HBA 32 Ports)
pci:v00001F3Fd00002100sv00001F3Fsd00000125*
- ID_MODEL_FROM_DATABASE=SSSRAID SAS/SATA HBA (HBA 40 Ports)
+ ID_MODEL_FROM_DATABASE=SSSHBA SAS/SATA HBA (HBA 40 Ports)
pci:v00001F3Fd00002100sv00001F3Fsd00000180*
- ID_MODEL_FROM_DATABASE=SSSRAID SAS/SATA HBA (HBA 16 Ports)
+ ID_MODEL_FROM_DATABASE=SSSHBA SAS/SATA HBA (HBA 16 Ports)
pci:v00001F3Fd00002100sv00001F3Fsd00000185*
- ID_MODEL_FROM_DATABASE=SSSRAID SAS/SATA HBA (HBA 8 Ports)
+ ID_MODEL_FROM_DATABASE=SSSHBA SAS/SATA HBA (HBA 8 Ports)
pci:v00001F3Fd00002200*
ID_MODEL_FROM_DATABASE=SSSRAID RAID controller
pci:v00008086d0000159Bsv00001137sd000002BE*
ID_MODEL_FROM_DATABASE=Ethernet Controller E810-XXV for SFP (E810XXVDA2 2x25/10 GbE SFP28 PCIe NIC)
+pci:v00008086d0000159Bsv0000193Dsd00001085*
+ ID_MODEL_FROM_DATABASE=Ethernet Controller E810-XXV for SFP (NIC-ETH660F-3S-2P)
+
pci:v00008086d0000159Bsv00001BD4sd00000057*
ID_MODEL_FROM_DATABASE=Ethernet Controller E810-XXV for SFP (Ethernet Network Adapter E810-XXVAM2)
pci:v00008086d000046C3*
ID_MODEL_FROM_DATABASE=Alder Lake-UP4 GT1 [UHD Graphics]
+pci:v00008086d000046D0*
+ ID_MODEL_FROM_DATABASE=Alder Lake-N [UHD Graphics]
+
+pci:v00008086d000046D1*
+ ID_MODEL_FROM_DATABASE=Alder Lake-N [UHD Graphics]
+
+pci:v00008086d000046D2*
+ ID_MODEL_FROM_DATABASE=Alder Lake-N [UHD Graphics]
+
pci:v00008086d00004905*
ID_MODEL_FROM_DATABASE=DG1 [Iris Xe MAX Graphics]
pci:v00008086d00007ABF*
ID_MODEL_FROM_DATABASE=Alder Lake-S PCH PCI Express Root Port #8
+pci:v00008086d00007AC8*
+ ID_MODEL_FROM_DATABASE=Alder Lake-S PCH PCI Express Root Port #25
+
pci:v00008086d00007ACC*
ID_MODEL_FROM_DATABASE=Alder Lake-S PCH Serial IO I2C Controller #0
pci:v00008086d0000A620*
ID_MODEL_FROM_DATABASE=6400/6402 Advanced Memory Buffer (AMB)
+pci:v00008086d0000A720*
+ ID_MODEL_FROM_DATABASE=Raptor Lake-P [UHD Graphics]
+
+pci:v00008086d0000A721*
+ ID_MODEL_FROM_DATABASE=Raptor Lake-P [UHD Graphics]
+
pci:v00008086d0000A77F*
ID_MODEL_FROM_DATABASE=Volume Management Device NVMe RAID Controller Intel Corporation
pci:v00008086d0000A78B*
ID_MODEL_FROM_DATABASE=Raptor Lake-S UHD Graphics
+pci:v00008086d0000A7A0*
+ ID_MODEL_FROM_DATABASE=Raptor Lake-P [Iris Xe Graphics]
+
+pci:v00008086d0000A7A1*
+ ID_MODEL_FROM_DATABASE=Raptor Lake-P [Iris Xe Graphics]
+
+pci:v00008086d0000A7A8*
+ ID_MODEL_FROM_DATABASE=Raptor Lake-P [UHD Graphics]
+
+pci:v00008086d0000A7A9*
+ ID_MODEL_FROM_DATABASE=Raptor Lake-P [UHD Graphics]
+
pci:v00008086d0000ABC0*
ID_MODEL_FROM_DATABASE=Omni-Path Fabric Switch Silicon 100 Series
EVDEV_ABS_36=1083:4808:65
# HP Envy x360
-evdev:name:SynPS/2 Synaptics TouchPad:*svnHP:pnHPENVYx360Convertible15m-cn0xxx:*
+evdev:name:SynPS/2 Synaptics TouchPad:dmi:*svnHP:pnHPENVYx360Convertible15m-cn0xxx:*
+evdev:name:SynPS/2 Synaptics TouchPad:dmi:*svnHP:pnHPENVYx360Convertible15-cn0xxx**
EVDEV_ABS_00=1302:5640:36
EVDEV_ABS_01=1119:4741:61
EVDEV_ABS_35=1302:5640:36
evdev:name:Intel HID events:dmi:bvn*:bvr*:bd*:svnHP*:pn*HP[sS][pP][eE][cC][tT][rR][eE]*x3602-in-1*:*
# ENVY x360
evdev:name:Intel HID events:dmi:bvn*:bvr*:bd*:svnHP*:pnHPENVYx360Convertible*:*
+evdev:name:Intel HID events:dmi:bvn*:bvr*:bd*:svnHP*:pnHPENVYx3602-in-1*:*
KEYBOARD_KEY_08=unknown # Prevents random airplane mode activation
# HP Elite x2 1013 G3
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO:pn0769AP2:pvr3000N200:*
KEYBOARD_KEY_b4=prog1
-# lenovo-ideapad
+# Lenovo IdeaPad
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*IdeaPad*:*
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO*:pnS10-*:*
KEYBOARD_KEY_81=rfkill # does nothing in BIOS
KEYBOARD_KEY_f2=f21 # touchpad toggle (key alternately emits F2 and F3)
KEYBOARD_KEY_f3=f21
+# Lenovo IdeaPad 5
+evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*:pvrIdeaPad5*:*
+ KEYBOARD_KEY_81=insert
+
# Thinkpad X200_Tablet
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*:pvrThinkPad*X2*Tablet*:*
KEYBOARD_KEY_5d=menu
###########################################################
# Positivo-Vaio
###########################################################
-# Vaio Pro (VJPW11F11X)
-evdev:name:AT Translated Set 2 keyboard:dmi:bvn*:bvr*:bd*:svnPositivoBahia-VAIO:pnVJPW11F11X*:pvr*:*
+# Vaio Pro (VJPW11F11X, VJPW12F11X)
+evdev:name:AT Translated Set 2 keyboard:dmi:bvn*:bvr*:bd*:svnPositivoBahia-VAIO:pnVJPW1[12]F11X*:pvr*:*
# Vaio FE14 (VJFE41F11X, VJE42F11X, VJFE44F11X, VJFE54F11X)
evdev:name:AT Translated Set 2 keyboard:dmi:bvn*:bvr*:bd*:svnPositivoBahia-VAIO:pnVJFE*:pvr*:*
KEYBOARD_KEY_76=f21 # Fn+F1 toggle touchpad
Tao Yuan 33377\r
TW\r
\r
-C0-8F-20 (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
-C08F20 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
- 4F,Block A, Skyworth?Building,\r
- Shenzhen Guangdong 518057\r
- CN\r
-\r
74-F7-F6 (hex) Shanghai Sunmi Technology Co.,Ltd.\r
74F7F6 (base 16) Shanghai Sunmi Technology Co.,Ltd.\r
Room 505, KIC Plaza, No.388 Song Hu Road, Yang Pu District, Shanghai, China\r
Osaka Kita-ku 530-0011\r
JP\r
\r
-08-FF-24 (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
-08FF24 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
- 4F,Block A, Skyworth?Building,\r
- Shenzhen Guangdong 518057\r
- CN\r
-\r
50-55-8D (hex) China Mobile IOT Company Limited\r
50558D (base 16) China Mobile IOT Company Limited\r
NO.8 Yu Ma Road, NanAn Area\r
Sunnyvale CA 94089\r
US\r
\r
-90-B6-7A (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
-90B67A (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
- 4F,Block A, Skyworth?Building,\r
- Shenzhen Guangdong 518057\r
- CN\r
-\r
7C-D9-F4 (hex) UAB Teltonika Telematics\r
7CD9F4 (base 16) UAB Teltonika Telematics\r
Saltoniskiu str. 9B-1\r
Dallas TX 75243\r
US\r
\r
-24-9A-C8 (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
-249AC8 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
- 4F,Block A, Skyworth?Building,\r
- Shenzhen Guangdong 518057\r
- CN\r
-\r
C0-3C-04 (hex) Sagemcom Broadband SAS\r
C03C04 (base 16) Sagemcom Broadband SAS\r
250, route de l'Empereur\r
Shenzhen GuangDong 518109\r
CN\r
\r
-28-C0-1B (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
-28C01B (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
- 4F,Block A, Skyworth?Building,\r
- Shenzhen Guangdong 518057\r
- CN\r
-\r
B8-12-DA (hex) LVSWITCHES INC.\r
B812DA (base 16) LVSWITCHES INC.\r
F1 building,New light source base Luocun town,Nanhai district\r
Bolton Ontario L7E 4E8\r
CA\r
\r
-E0-28-B1 (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
-E028B1 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
- 4F,Block A, Skyworth?Building,\r
- Shenzhen Guangdong 518057\r
- CN\r
-\r
C0-8D-51 (hex) Amazon Technologies Inc.\r
C08D51 (base 16) Amazon Technologies Inc.\r
P.O Box 8102 \r
Beijing Beijing 100085\r
CN\r
\r
-30-31-80 (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
-303180 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
- 4F,Block A, Skyworth?Building,\r
- Shenzhen Guangdong 518057\r
- CN\r
-\r
5C-3E-06 (hex) Cisco Systems, Inc\r
5C3E06 (base 16) Cisco Systems, Inc\r
80 West Tasman Drive\r
Sandy UT 84070\r
US\r
\r
-94-0E-E7 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
-940EE7 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
- Dongguan 523808\r
- CN\r
-\r
-A8-B2-71 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
-A8B271 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
- Dongguan 523808\r
- CN\r
-\r
50-5A-65 (hex) AzureWave Technology Inc.\r
505A65 (base 16) AzureWave Technology Inc.\r
8F., No. 94, Baozhong Rd., Xindian Dist.\r
Nanjing Jiangsu 211800\r
CN\r
\r
+A8-B2-71 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+A8B271 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+64-05-E4 (hex) ALPSALPINE CO,.LTD\r
+6405E4 (base 16) ALPSALPINE CO,.LTD\r
+ nishida 6-1\r
+ kakuda-City Miyagi-Pref 981-1595\r
+ JP\r
+\r
BC-64-D9 (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD\r
BC64D9 (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD\r
NO.18 HAIBIN ROAD,\r
shenzhen guangdong 518057\r
CN\r
\r
-64-05-E4 (hex) ALPSALPINE CO,.LTD\r
-6405E4 (base 16) ALPSALPINE CO,.LTD\r
- nishida 6-1\r
- kakuda-City Miyagi-Pref 981-1595\r
- JP\r
+94-0E-E7 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+940EE7 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
\r
7C-C7-4A (hex) Fiberhome Telecommunication Technologies Co.,LTD\r
7CC74A (base 16) Fiberhome Telecommunication Technologies Co.,LTD\r
Dongguan Guangdong 523808\r
CN\r
\r
-48-BC-E1 (hex) Samsung Electronics Co.,Ltd\r
-48BCE1 (base 16) Samsung Electronics Co.,Ltd\r
- #94-1, Imsoo-Dong\r
- Gumi Gyeongbuk 730-350\r
- KR\r
-\r
28-B5-E8 (hex) Texas Instruments\r
28B5E8 (base 16) Texas Instruments\r
12500 TI Blvd\r
Moscow 129223\r
RU\r
\r
+70-F8-AE (hex) Microsoft Corporation\r
+70F8AE (base 16) Microsoft Corporation\r
+ One Microsoft Way\r
+ REDMOND WA 98052\r
+ US\r
+\r
F8-3C-80 (hex) MITSUMI ELECTRIC CO.,LTD.\r
F83C80 (base 16) MITSUMI ELECTRIC CO.,LTD.\r
2-11-2, Tsurumaki\r
Cambridge CB4 0DS\r
GB\r
\r
-70-F8-AE (hex) Microsoft Corporation\r
-70F8AE (base 16) Microsoft Corporation\r
- One Microsoft Way\r
- REDMOND WA 98052\r
- US\r
+64-EC-65 (hex) vivo Mobile Communication Co., Ltd.\r
+64EC65 (base 16) vivo Mobile Communication Co., Ltd.\r
+ No.1, vivo Road, Chang'an\r
+ Dongguan Guangdong 523860\r
+ CN\r
\r
F4-24-62 (hex) Selcom Electronics (Shanghai) Co., Ltd\r
F42462 (base 16) Selcom Electronics (Shanghai) Co., Ltd\r
Shanghai Shanghai 201707\r
CN\r
\r
-64-EC-65 (hex) vivo Mobile Communication Co., Ltd.\r
-64EC65 (base 16) vivo Mobile Communication Co., Ltd.\r
- No.1, vivo Road, Chang'an\r
- Dongguan Guangdong 523860\r
+F4-A1-7F (hex) Marquardt Electronics Technology (Shanghai) Co.Ltd\r
+F4A17F (base 16) Marquardt Electronics Technology (Shanghai) Co.Ltd\r
+ No. 650 Qingda Road, Heqing Industrial Zone, Shanghai\r
+ Shanghai 201201\r
CN\r
\r
+48-BC-E1 (hex) Samsung Electronics Co.,Ltd\r
+48BCE1 (base 16) Samsung Electronics Co.,Ltd\r
+ #94-1, Imsoo-Dong\r
+ Gumi Gyeongbuk 730-350\r
+ KR\r
+\r
+90-B4-DD (hex) Private\r
+90B4DD (base 16) Private\r
+ Hovås Snöbärsväg 2, lgh 201\r
+ Hovås 43654\r
+ SE\r
+\r
B8-5C-EE (hex) Baidu Online Network Technology (Beijing) Co., Ltd\r
B85CEE (base 16) Baidu Online Network Technology (Beijing) Co., Ltd\r
Baidu Campus, No.10 Shangdi 10th Street, Haidian District\r
Beijing 100085\r
CN\r
\r
-F4-A1-7F (hex) Marquardt Electronics Technology (Shanghai) Co.Ltd\r
-F4A17F (base 16) Marquardt Electronics Technology (Shanghai) Co.Ltd\r
- No. 650 Qingda Road, Heqing Industrial Zone, Shanghai\r
- Shanghai 201201\r
- CN\r
+8C-79-09 (hex) Aruba, a Hewlett Packard Enterprise Company\r
+8C7909 (base 16) Aruba, a Hewlett Packard Enterprise Company\r
+ 3333 Scott Blvd\r
+ Santa Clara CA 95054\r
+ US\r
\r
D0-D0-03 (hex) Samsung Electronics Co.,Ltd\r
D0D003 (base 16) Samsung Electronics Co.,Ltd\r
Kanata Ontario K2K 2E6\r
CA\r
\r
+B8-38-EF (hex) ADVA Optical Networking Ltd.\r
+B838EF (base 16) ADVA Optical Networking Ltd.\r
+ ADVAntage House\r
+ York YO30 4RY\r
+ GB\r
+\r
B4-ED-D5 (hex) Quectel Wireless Solutions Co.,Ltd.\r
B4EDD5 (base 16) Quectel Wireless Solutions Co.,Ltd.\r
7th Floor, Hongye Building, No.1801 Hongmei Road, Xuhui District\r
Nagaokakyo-shi Kyoto 617-8555\r
JP\r
\r
+F0-74-8D (hex) Ruijie Networks Co.,LTD\r
+F0748D (base 16) Ruijie Networks Co.,LTD\r
+ No. 2, 7th floor, xingwangruijie, haixi hi-tech industrial park, high-tech zone, fuzhou city\r
+ Fuzhou Fujian 350002\r
+ CN\r
+\r
08-42-18 (hex) Asyril SA\r
084218 (base 16) Asyril SA\r
Z.I. du Vivier 22\r
Villaz-St-Pierre Fribourg 1690\r
CH\r
\r
-90-B4-DD (hex) Private\r
-90B4DD (base 16) Private\r
- Hovås Snöbärsväg 2, lgh 201\r
- Hovås 43654\r
- SE\r
-\r
D8-5B-22 (hex) Shenzhen Hohunet Technology Co., Ltd\r
D85B22 (base 16) Shenzhen Hohunet Technology Co., Ltd\r
8th floor, block a, Huahan technology building, No.16, Langshan Road, North District, Science Park, Nanshan District, Shenzhen\r
Shenzhen Gongdong 518000\r
CN\r
\r
-8C-79-09 (hex) Aruba, a Hewlett Packard Enterprise Company\r
-8C7909 (base 16) Aruba, a Hewlett Packard Enterprise Company\r
- 3333 Scott Blvd\r
- Santa Clara CA 95054\r
- US\r
-\r
-B8-38-EF (hex) ADVA Optical Networking Ltd.\r
-B838EF (base 16) ADVA Optical Networking Ltd.\r
- ADVAntage House\r
- York YO30 4RY\r
- GB\r
-\r
-70-58-46 (hex) Trig Avionics Limited\r
-705846 (base 16) Trig Avionics Limited\r
- Heriot Watt Research Park\r
- Edinburgh EH14 4AP\r
- GB\r
-\r
08-91-A3 (hex) Amazon Technologies Inc.\r
0891A3 (base 16) Amazon Technologies Inc.\r
P.O Box 8102 \r
Pudong Shanghai 201203\r
CN\r
\r
-F0-74-8D (hex) Ruijie Networks Co.,LTD\r
-F0748D (base 16) Ruijie Networks Co.,LTD\r
- No. 2, 7th floor, xingwangruijie, haixi hi-tech industrial park, high-tech zone, fuzhou city\r
- Fuzhou Fujian 350002\r
- CN\r
-\r
-0C-2E-57 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
-0C2E57 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
- Dongguan 523808\r
- CN\r
-\r
-E8-D7-75 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
-E8D775 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
- Dongguan 523808\r
- CN\r
+90-9B-6F (hex) Apple, Inc.\r
+909B6F (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
\r
74-73-B4 (hex) Apple, Inc.\r
7473B4 (base 16) Apple, Inc.\r
Cupertino CA 95014\r
US\r
\r
-CC-08-FA (hex) Apple, Inc.\r
-CC08FA (base 16) Apple, Inc.\r
- 1 Infinite Loop\r
- Cupertino CA 95014\r
+98-0C-33 (hex) Silicon Laboratories\r
+980C33 (base 16) Silicon Laboratories\r
+ 7000 W. William Cannon Dr.\r
+ Austin TX 78735\r
US\r
\r
-90-9B-6F (hex) Apple, Inc.\r
-909B6F (base 16) Apple, Inc.\r
+CC-08-FA (hex) Apple, Inc.\r
+CC08FA (base 16) Apple, Inc.\r
1 Infinite Loop\r
Cupertino CA 95014\r
US\r
\r
-9C-DB-AF (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
-9CDBAF (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
- Dongguan 523808\r
- CN\r
-\r
-98-0C-33 (hex) Silicon Laboratories\r
-980C33 (base 16) Silicon Laboratories\r
- 7000 W. William Cannon Dr.\r
- Austin TX 78735\r
- US\r
+70-58-46 (hex) Trig Avionics Limited\r
+705846 (base 16) Trig Avionics Limited\r
+ Heriot Watt Research Park\r
+ Edinburgh EH14 4AP\r
+ GB\r
\r
84-39-8F (hex) Fortinet, Inc.\r
84398F (base 16) Fortinet, Inc.\r
Sunnyvale 94086\r
US\r
\r
-00-30-2B (hex) Inalp Solutions AG\r
-00302B (base 16) Inalp Solutions AG\r
- Badenerstrasse 13\r
- Brugg 5200\r
- CH\r
-\r
A4-A5-28 (hex) Sichuan Tianyi Comheart Telecom Co.,LTD\r
A4A528 (base 16) Sichuan Tianyi Comheart Telecom Co.,LTD\r
No.198,First Section,Snow Mountain Avenue, Jinyuan Town, Dayi County\r
beijing beijing 100000\r
CN\r
\r
+9C-DB-AF (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+9CDBAF (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+0C-2E-57 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+0C2E57 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+E8-D7-75 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+E8D775 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
44-DB-D2 (hex) YEALINK(XIAMEN) NETWORK TECHNOLOGY CO.,LTD.\r
44DBD2 (base 16) YEALINK(XIAMEN) NETWORK TECHNOLOGY CO.,LTD.\r
309, 3th Floor, No.16, Yun Ding North Road, Huli District\r
San Jose CA 94568\r
US\r
\r
+00-30-2B (hex) Inalp Solutions AG\r
+00302B (base 16) Inalp Solutions AG\r
+ Badenerstrasse 13\r
+ Brugg 5200\r
+ CH\r
+\r
1C-3B-62 (hex) HMD Global Oy\r
1C3B62 (base 16) HMD Global Oy\r
Bertel Jungin aukio 9\r
Espoo 02600\r
FI\r
\r
-7C-4D-8F (hex) HP Inc.\r
-7C4D8F (base 16) HP Inc.\r
- 10300 Energy Dr\r
- Spring TX 77389\r
- US\r
-\r
-74-D5-58 (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD\r
-74D558 (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD\r
- NO.18 HAIBIN ROAD,\r
- DONG GUAN GUANG DONG 523860\r
- CN\r
-\r
24-48-45 (hex) Hangzhou Hikvision Digital Technology Co.,Ltd.\r
244845 (base 16) Hangzhou Hikvision Digital Technology Co.,Ltd.\r
No.555 Qianmo Road\r
Hangzhou Zhejiang 310052\r
CN\r
\r
-9C-CB-F7 (hex) CLOUD STAR TECHNOLOGY CO., LTD.\r
-9CCBF7 (base 16) CLOUD STAR TECHNOLOGY CO., LTD.\r
- 13F.-1, No. 167, Wenqing Rd Guishan Dist\r
- Taoyuan City Taoyuan 333613\r
- TW\r
-\r
E0-DC-A0 (hex) Siemens Industrial Automation Products Ltd., Chengdu\r
E0DCA0 (base 16) Siemens Industrial Automation Products Ltd., Chengdu\r
Tianyuan Road 99\r
Guangzhou Guangdong 511493\r
CN\r
\r
+F4-64-12 (hex) Sony Interactive Entertainment Inc.\r
+F46412 (base 16) Sony Interactive Entertainment Inc.\r
+ 1-7-1 Konan\r
+ Minato-ku Tokyo 108-0075\r
+ JP\r
+\r
+7C-4D-8F (hex) HP Inc.\r
+7C4D8F (base 16) HP Inc.\r
+ 10300 Energy Dr\r
+ Spring TX 77389\r
+ US\r
+\r
3C-F9-F0 (hex) zte corporation\r
3CF9F0 (base 16) zte corporation\r
12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China\r
shenzhen guangdong 518057\r
CN\r
\r
-F4-64-12 (hex) Sony Interactive Entertainment Inc.\r
-F46412 (base 16) Sony Interactive Entertainment Inc.\r
- 1-7-1 Konan\r
- Minato-ku Tokyo 108-0075\r
- JP\r
+74-D5-58 (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD\r
+74D558 (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD\r
+ NO.18 HAIBIN ROAD,\r
+ DONG GUAN GUANG DONG 523860\r
+ CN\r
+\r
+9C-CB-F7 (hex) CLOUD STAR TECHNOLOGY CO., LTD.\r
+9CCBF7 (base 16) CLOUD STAR TECHNOLOGY CO., LTD.\r
+ 13F.-1, No. 167, Wenqing Rd Guishan Dist\r
+ Taoyuan City Taoyuan 333613\r
+ TW\r
\r
48-81-4E (hex) E&M SOLUTION CO,.Ltd\r
48814E (base 16) E&M SOLUTION CO,.Ltd\r
Ansan-si Danwon-gu 15434\r
KR\r
\r
+AC-80-0A (hex) Sony Corporation\r
+AC800A (base 16) Sony Corporation\r
+ Sony City Osaki 2-10-1\r
+ Shinagawa-ku Tokyo 141-8610\r
+ JP\r
+\r
+B8-EA-98 (hex) Xiaomi Communications Co Ltd\r
+B8EA98 (base 16) Xiaomi Communications Co Ltd\r
+ #019, 9th Floor, Building 6, 33 Xi'erqi Middle Road\r
+ Beijing Haidian District 100085\r
+ CN\r
+\r
+78-8C-B5 (hex) TP-Link Corporation Limited\r
+788CB5 (base 16) TP-Link Corporation Limited\r
+ Room 901,9/F.New East Ocean Centre, 9 Science Museum Road\r
+ Tsim Sha Tsui Kowloon 999077\r
+ HK\r
+\r
+10-C4-CA (hex) HUMAX Co., Ltd.\r
+10C4CA (base 16) HUMAX Co., Ltd.\r
+ HUMAX Village, 216, Hwangsaeul-ro, Bu\r
+ Seongnam-si Gyeonggi-do 463-875\r
+ KR\r
+\r
58-C9-35 (hex) Chiun Mai Communication System, Inc\r
58C935 (base 16) Chiun Mai Communication System, Inc\r
No.4, Minsheng St., Tucheng District\r
Dongguan 523808\r
CN\r
\r
-AC-80-0A (hex) Sony Corporation\r
-AC800A (base 16) Sony Corporation\r
- Sony City Osaki 2-10-1\r
- Shinagawa-ku Tokyo 141-8610\r
- JP\r
-\r
-B8-EA-98 (hex) Xiaomi Communications Co Ltd\r
-B8EA98 (base 16) Xiaomi Communications Co Ltd\r
- #019, 9th Floor, Building 6, 33 Xi'erqi Middle Road\r
- Beijing Haidian District 100085\r
- CN\r
-\r
-78-8C-B5 (hex) TP-Link Corporation Limited\r
-788CB5 (base 16) TP-Link Corporation Limited\r
- Room 901,9/F.New East Ocean Centre, 9 Science Museum Road\r
- Tsim Sha Tsui Kowloon 999077\r
- HK\r
-\r
-10-C4-CA (hex) HUMAX Co., Ltd.\r
-10C4CA (base 16) HUMAX Co., Ltd.\r
- HUMAX Village, 216, Hwangsaeul-ro, Bu\r
- Seongnam-si Gyeonggi-do 463-875\r
- KR\r
-\r
54-8C-81 (hex) Hangzhou Hikvision Digital Technology Co.,Ltd.\r
548C81 (base 16) Hangzhou Hikvision Digital Technology Co.,Ltd.\r
No.555 Qianmo Road\r
Fuzhou Fujian 350015\r
CN\r
\r
+00-50-CA (hex) DZS Inc.\r
+0050CA (base 16) DZS Inc.\r
+ 680 CENTRAL AVENUE - STE. #301\r
+ DOVER NH 03820\r
+ US\r
+\r
74-EE-8D (hex) Apollo Intelligent Connectivity (Beijing) Technology Co., Ltd.\r
74EE8D (base 16) Apollo Intelligent Connectivity (Beijing) Technology Co., Ltd.\r
Baidu Technology Park Building No.2 No.10 Xibeiwang East Road Haidian District\r
BeiJing BeiJing 100193\r
CN\r
\r
-24-5A-4C (hex) Ubiquiti Inc\r
-245A4C (base 16) Ubiquiti Inc\r
- 685 Third Avenue, 27th Floor\r
- New York NY New York NY 10017\r
- US\r
-\r
-60-22-32 (hex) Ubiquiti Inc\r
-602232 (base 16) Ubiquiti Inc\r
+F0-9F-C2 (hex) Ubiquiti Inc\r
+F09FC2 (base 16) Ubiquiti Inc\r
685 Third Avenue, 27th Floor\r
New York NY New York NY 10017\r
US\r
\r
-E4-38-83 (hex) Ubiquiti Inc\r
-E43883 (base 16) Ubiquiti Inc\r
+80-2A-A8 (hex) Ubiquiti Inc\r
+802AA8 (base 16) Ubiquiti Inc\r
685 Third Avenue, 27th Floor\r
New York NY New York NY 10017\r
US\r
New York NY New York NY 10017\r
US\r
\r
+24-5A-4C (hex) Ubiquiti Inc\r
+245A4C (base 16) Ubiquiti Inc\r
+ 685 Third Avenue, 27th Floor\r
+ New York NY New York NY 10017\r
+ US\r
+\r
E4-BE-FB (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
E4BEFB (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
Dongguan 523808\r
CN\r
\r
-F0-9F-C2 (hex) Ubiquiti Inc\r
-F09FC2 (base 16) Ubiquiti Inc\r
+60-22-32 (hex) Ubiquiti Inc\r
+602232 (base 16) Ubiquiti Inc\r
685 Third Avenue, 27th Floor\r
New York NY New York NY 10017\r
US\r
\r
-80-2A-A8 (hex) Ubiquiti Inc\r
-802AA8 (base 16) Ubiquiti Inc\r
+E4-38-83 (hex) Ubiquiti Inc\r
+E43883 (base 16) Ubiquiti Inc\r
685 Third Avenue, 27th Floor\r
New York NY New York NY 10017\r
US\r
North Canton OH 44720\r
US\r
\r
-00-50-CA (hex) DZS Inc.\r
-0050CA (base 16) DZS Inc.\r
- 680 CENTRAL AVENUE - STE. #301\r
- DOVER NH 03820\r
- US\r
-\r
-D8-58-C6 (hex) Katch Asset Tracking Pty Limited \r
-D858C6 (base 16) Katch Asset Tracking Pty Limited \r
- 98 Riley St\r
- Darlinghurst NSW 2010\r
- AU\r
-\r
-2C-C6-A0 (hex) Lumacron Technology Ltd.\r
-2CC6A0 (base 16) Lumacron Technology Ltd.\r
- 4 Pitreavie Court, Pitreavie Business Park\r
- Dunfermline Fife KY11 8UU\r
- GB\r
-\r
E8-EB-DD (hex) Guangzhou Qingying Acoustics Technology Co., Ltd\r
E8EBDD (base 16) Guangzhou Qingying Acoustics Technology Co., Ltd\r
Room 905, 863 Industrialization Promotion Center, Guangzhou Private Science Park, Taihe Town, Baiyun District\r
Guangzhou Guangdong 510000\r
CN\r
\r
-70-66-B9 (hex) Huawei Device Co., Ltd.\r
-7066B9 (base 16) Huawei Device Co., Ltd.\r
- No.2 of Xincheng Road, Songshan Lake Zone\r
- Dongguan Guangdong 523808\r
- CN\r
+D8-58-C6 (hex) Katch Asset Tracking Pty Limited \r
+D858C6 (base 16) Katch Asset Tracking Pty Limited \r
+ 98 Riley St\r
+ Darlinghurst NSW 2010\r
+ AU\r
\r
C4-A1-AE (hex) Huawei Device Co., Ltd.\r
C4A1AE (base 16) Huawei Device Co., Ltd.\r
Guangzhou Guangdong 511455\r
CN\r
\r
+70-66-B9 (hex) Huawei Device Co., Ltd.\r
+7066B9 (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+2C-C6-A0 (hex) Lumacron Technology Ltd.\r
+2CC6A0 (base 16) Lumacron Technology Ltd.\r
+ 4 Pitreavie Court, Pitreavie Business Park\r
+ Dunfermline Fife KY11 8UU\r
+ GB\r
+\r
FC-D7-49 (hex) Amazon Technologies Inc.\r
FCD749 (base 16) Amazon Technologies Inc.\r
P.O Box 8102 \r
Hsinchu 300\r
TW\r
\r
-58-10-31 (hex) Hon Hai Precision IND.CO.,LTD\r
-581031 (base 16) Hon Hai Precision IND.CO.,LTD\r
- No. 66 Chung Shan Road TU-Cheng Industrial district TAIPEI TAIWAN \r
- TAIPEI TAIWAN 33859\r
- CN\r
-\r
EC-41-CA (hex) Shenzhen TecAnswer Technology co.,ltd\r
EC41CA (base 16) Shenzhen TecAnswer Technology co.,ltd\r
1004 yuemeite Building,No.1 gaoxin South 7th Road,Gaoxin District,Yuehai Street,Nanshan District,Shenzhen\r
Lawrenceville GA 30044\r
US\r
\r
-44-20-63 (hex) Continental Automotive Technologies GmbH\r
-442063 (base 16) Continental Automotive Technologies GmbH\r
- Siemensstr. 12\r
- Regensburg 93055\r
- DE\r
+58-10-31 (hex) Hon Hai Precision IND.CO.,LTD\r
+581031 (base 16) Hon Hai Precision IND.CO.,LTD\r
+ No. 66 Chung Shan Road TU-Cheng Industrial district TAIPEI TAIWAN \r
+ TAIPEI TAIWAN 33859\r
+ CN\r
\r
F8-0D-A9 (hex) Zyxel Communications Corporation\r
F80DA9 (base 16) Zyxel Communications Corporation\r
Hsichu Taiwan 300\r
TW\r
\r
+44-20-63 (hex) Continental Automotive Technologies GmbH\r
+442063 (base 16) Continental Automotive Technologies GmbH\r
+ Siemensstr. 12\r
+ Regensburg 93055\r
+ DE\r
+\r
48-5A-0D (hex) Juniper Networks\r
485A0D (base 16) Juniper Networks\r
1133 Innovation Way\r
Sunnyvale CA 94089\r
US\r
\r
-B4-45-06 (hex) Dell Inc.\r
-B44506 (base 16) Dell Inc.\r
- One Dell Way\r
- Round Rock TX 78682\r
- US\r
-\r
30-86-F1 (hex) Fiberhome Telecommunication Technologies Co.,LTD\r
3086F1 (base 16) Fiberhome Telecommunication Technologies Co.,LTD\r
No.5 DongXin Road\r
Dongguan 523808\r
CN\r
\r
-38-A8-51 (hex) Quickset Defense Technologies, LLC\r
-38A851 (base 16) Quickset Defense Technologies, LLC\r
- 3650 Woodhead Drive\r
- Northbrook IL 60062\r
+B4-45-06 (hex) Dell Inc.\r
+B44506 (base 16) Dell Inc.\r
+ One Dell Way\r
+ Round Rock TX 78682\r
US\r
\r
04-BF-1B (hex) Dell Inc.\r
Round Rock TX 78682\r
US\r
\r
+38-A8-51 (hex) Quickset Defense Technologies, LLC\r
+38A851 (base 16) Quickset Defense Technologies, LLC\r
+ 3650 Woodhead Drive\r
+ Northbrook IL 60062\r
+ US\r
+\r
24-A4-2C (hex) NETIO products a.s.\r
24A42C (base 16) NETIO products a.s.\r
U Pily 3\r
Prague 143 00\r
CZ\r
\r
+60-1B-52 (hex) Vodafone Italia S.p.A.\r
+601B52 (base 16) Vodafone Italia S.p.A.\r
+ Via Lorenteggio nr. 240\r
+ Milan Italy 20147\r
+ IT\r
+\r
+C0-8F-20 (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
+C08F20 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
+ 4F,Block A, Skyworth?Building,\r
+ Shenzhen Guangdong 518057\r
+ CN\r
+\r
+08-FF-24 (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
+08FF24 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
+ 4F,Block A, Skyworth?Building,\r
+ Shenzhen Guangdong 518057\r
+ CN\r
+\r
+90-B6-7A (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
+90B67A (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
+ 4F,Block A, Skyworth?Building,\r
+ Shenzhen Guangdong 518057\r
+ CN\r
+\r
+24-9A-C8 (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
+249AC8 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
+ 4F,Block A, Skyworth?Building,\r
+ Shenzhen Guangdong 518057\r
+ CN\r
+\r
A8-88-1F (hex) SERVERCOM (INDIA) PRIVATE LIMITED\r
A8881F (base 16) SERVERCOM (INDIA) PRIVATE LIMITED\r
E-43/1 OKHLA INDUSTRIAL AREA PHASE-II NEW DELHI SOUTH DELHI\r
NEW DELHI NA\r
IN\r
\r
+20-15-82 (hex) Apple, Inc.\r
+201582 (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
+40-92-1A (hex) Apple, Inc.\r
+40921A (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
+10-E2-C9 (hex) Apple, Inc.\r
+10E2C9 (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
A8-C6-47 (hex) Extreme Networks, Inc.\r
A8C647 (base 16) Extreme Networks, Inc.\r
6480 Via Del Oro\r
San Jose CA 95119\r
US\r
\r
+E0-28-B1 (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
+E028B1 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
+ 4F,Block A, Skyworth?Building,\r
+ Shenzhen Guangdong 518057\r
+ CN\r
+\r
+28-C0-1B (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
+28C01B (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
+ 4F,Block A, Skyworth?Building,\r
+ Shenzhen Guangdong 518057\r
+ CN\r
+\r
+30-31-80 (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
+303180 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
+ 4F,Block A, Skyworth?Building,\r
+ Shenzhen Guangdong 518057\r
+ CN\r
+\r
+5C-28-86 (hex) Inventec(Chongqing) Corporation\r
+5C2886 (base 16) Inventec(Chongqing) Corporation\r
+ No.66 West District 2nd Rd, Shapingba District\r
+ Chongqing Chongqing 401331\r
+ CN\r
+\r
+FC-84-A7 (hex) Murata Manufacturing Co., Ltd.\r
+FC84A7 (base 16) Murata Manufacturing Co., Ltd.\r
+ 1-10-1, Higashikotari\r
+ Nagaokakyo-shi Kyoto 617-8555\r
+ JP\r
+\r
+88-3F-37 (hex) UHTEK CO., LTD.\r
+883F37 (base 16) UHTEK CO., LTD.\r
+ 403DONG 503HO, 655 PYEONGCHEON-RO\r
+ BUCHEONSI KYEONGGIDO 14502\r
+ KR\r
+\r
9C-FF-C2 (hex) AVI Systems GmbH\r
9CFFC2 (base 16) AVI Systems GmbH\r
Dr. Franz Wilhelmstraße 2A\r
San Francisco CA 94107\r
US\r
\r
-C8-13-8B (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
-C8138B (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
- 4F,Block A, Skyworth?Building,\r
- Shenzhen Guangdong 518057\r
- CN\r
-\r
78-F2-35 (hex) Sichuan AI-Link Technology Co., Ltd.\r
78F235 (base 16) Sichuan AI-Link Technology Co., Ltd.\r
Anzhou, Industrial Park\r
Nagaokakyo-shi Kyoto 617-8555\r
JP\r
\r
-34-AA-31 (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
-34AA31 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
- 4F,Block A, Skyworth?Building,\r
- Shenzhen Guangdong 518057\r
- CN\r
-\r
48-BD-4A (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
48BD4A (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
Tianjin 300385\r
CN\r
\r
-A0-4C-0C (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
-A04C0C (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
- 4F,Block A, Skyworth?Building,\r
- Shenzhen Guangdong 518057\r
- CN\r
-\r
40-AC-BF (hex) Hangzhou Hikvision Digital Technology Co.,Ltd.\r
40ACBF (base 16) Hangzhou Hikvision Digital Technology Co.,Ltd.\r
No.555 Qianmo Road\r
Gumi Gyeongbuk 730-350\r
KR\r
\r
-6C-C2-42 (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
-6CC242 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
- 4F,Block A, Skyworth?Building,\r
- Shenzhen Guangdong 518057\r
- CN\r
-\r
28-53-E0 (hex) Sintela Ltd\r
2853E0 (base 16) Sintela Ltd\r
The Distillery, The Old Brewery, 9-11 Lodway,\r
Xiamen Fujian 361024\r
CN\r
\r
+64-C6-D2 (hex) Seiko Epson Corporation\r
+64C6D2 (base 16) Seiko Epson Corporation\r
+ 2070 Kotobuki Koaka\r
+ Matsumoto-shi Nagano-ken 399-8702\r
+ JP\r
+\r
78-24-59 (hex) Alcatel-Lucent Enterprise\r
782459 (base 16) Alcatel-Lucent Enterprise\r
26801 West Agoura Rd\r
Culoz 01350\r
FR\r
\r
+B8-3C-28 (hex) Apple, Inc.\r
+B83C28 (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
+3C-6D-89 (hex) Apple, Inc.\r
+3C6D89 (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
+AC-45-00 (hex) Apple, Inc.\r
+AC4500 (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
+84-B1-E4 (hex) Apple, Inc.\r
+84B1E4 (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
+54-EB-E9 (hex) Apple, Inc.\r
+54EBE9 (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
+AC-16-15 (hex) Apple, Inc.\r
+AC1615 (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
48-BD-CE (hex) Technicolor CH USA Inc.\r
48BDCE (base 16) Technicolor CH USA Inc.\r
5030 Sugarloaf Parkway Bldg 6 \r
Lawrenceville GA 30044\r
US\r
\r
-64-C6-D2 (hex) Seiko Epson Corporation\r
-64C6D2 (base 16) Seiko Epson Corporation\r
- 2070 Kotobuki Koaka\r
- Matsumoto-shi Nagano-ken 399-8702\r
- JP\r
-\r
48-1F-66 (hex) China Mobile Group Device Co.,Ltd.\r
481F66 (base 16) China Mobile Group Device Co.,Ltd.\r
32 Xuanwumen West Street,Xicheng District\r
Beijing 100053\r
CN\r
\r
-B8-3C-28 (hex) Apple, Inc.\r
-B83C28 (base 16) Apple, Inc.\r
- 1 Infinite Loop\r
- Cupertino CA 95014\r
- US\r
-\r
10-68-38 (hex) AzureWave Technology Inc.\r
106838 (base 16) AzureWave Technology Inc.\r
8F., No.94, Baozhong Rd., Xindian\r
Brescia Italy 25062\r
IT\r
\r
+CC-DE-DE (hex) Nokia\r
+CCDEDE (base 16) Nokia\r
+ 600 March Road\r
+ Kanata Ontario K2K 2E6\r
+ CA\r
+\r
+EC-F8-D0 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+ECF8D0 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+30-DF-17 (hex) ALPSALPINE CO,.LTD\r
+30DF17 (base 16) ALPSALPINE CO,.LTD\r
+ nishida 6-1\r
+ kakuda-City Miyagi-Pref 981-1595\r
+ JP\r
+\r
D8-02-8A (hex) Shenzhen YOUHUA Technology Co., Ltd\r
D8028A (base 16) Shenzhen YOUHUA Technology Co., Ltd\r
Room 407 Shenzhen University-town Business Park,Lishan Road,Taoyuan Street,Nanshan District\r
Dongguan 523808\r
CN\r
\r
-EC-F8-D0 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
-ECF8D0 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
- Dongguan 523808\r
- CN\r
-\r
-3C-6D-89 (hex) Apple, Inc.\r
-3C6D89 (base 16) Apple, Inc.\r
- 1 Infinite Loop\r
- Cupertino CA 95014\r
- US\r
-\r
-AC-45-00 (hex) Apple, Inc.\r
-AC4500 (base 16) Apple, Inc.\r
- 1 Infinite Loop\r
- Cupertino CA 95014\r
- US\r
-\r
-84-B1-E4 (hex) Apple, Inc.\r
-84B1E4 (base 16) Apple, Inc.\r
- 1 Infinite Loop\r
- Cupertino CA 95014\r
- US\r
-\r
-54-EB-E9 (hex) Apple, Inc.\r
-54EBE9 (base 16) Apple, Inc.\r
- 1 Infinite Loop\r
- Cupertino CA 95014\r
- US\r
-\r
-AC-16-15 (hex) Apple, Inc.\r
-AC1615 (base 16) Apple, Inc.\r
- 1 Infinite Loop\r
- Cupertino CA 95014\r
+60-B6-47 (hex) Silicon Laboratories\r
+60B647 (base 16) Silicon Laboratories\r
+ 7000 W. William Cannon Dr.\r
+ Austin TX 78735\r
US\r
\r
EC-73-79 (hex) Apple, Inc.\r
Cupertino CA 95014\r
US\r
\r
-60-B6-47 (hex) Silicon Laboratories\r
-60B647 (base 16) Silicon Laboratories\r
- 7000 W. William Cannon Dr.\r
- Austin TX 78735\r
- US\r
-\r
-30-DF-17 (hex) ALPSALPINE CO,.LTD\r
-30DF17 (base 16) ALPSALPINE CO,.LTD\r
- nishida 6-1\r
- kakuda-City Miyagi-Pref 981-1595\r
- JP\r
-\r
04-70-56 (hex) Arcadyan Corporation\r
047056 (base 16) Arcadyan Corporation\r
No.8, Sec.2, Guangfu Rd.\r
Nanning Guangxi 530007\r
CN\r
\r
-CC-DE-DE (hex) Nokia\r
-CCDEDE (base 16) Nokia\r
- 600 March Road\r
- Kanata Ontario K2K 2E6\r
- CA\r
+D4-04-E6 (hex) Broadcom Limited\r
+D404E6 (base 16) Broadcom Limited\r
+ 15191 Alton Parkway\r
+ Irvine CA 92618\r
+ US\r
+\r
+DC-E3-05 (hex) AO \r
+DCE305 (base 16) AO \r
+ Prospekt Mira\r
+ Moscow 129223\r
+ RU\r
\r
B8-94-D9 (hex) Texas Instruments\r
B894D9 (base 16) Texas Instruments\r
Dallas TX 75243\r
US\r
\r
+88-6D-2D (hex) Huawei Device Co., Ltd.\r
+886D2D (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
08-04-B4 (hex) Texas Instruments\r
0804B4 (base 16) Texas Instruments\r
12500 TI Blvd\r
Dallas TX 75243\r
US\r
\r
-88-6D-2D (hex) Huawei Device Co., Ltd.\r
-886D2D (base 16) Huawei Device Co., Ltd.\r
- No.2 of Xincheng Road, Songshan Lake Zone\r
- Dongguan Guangdong 523808\r
- CN\r
+30-AF-7E (hex) Texas Instruments\r
+30AF7E (base 16) Texas Instruments\r
+ 12500 TI Blvd\r
+ Dallas TX 75243\r
+ US\r
\r
24-2A-04 (hex) Cisco Systems, Inc\r
242A04 (base 16) Cisco Systems, Inc\r
Mountain View CA 94043\r
US\r
\r
-DC-E3-05 (hex) AO \r
-DCE305 (base 16) AO \r
- Prospekt Mira\r
- Moscow 129223\r
- RU\r
-\r
10-BE-99 (hex) Netberg\r
10BE99 (base 16) Netberg\r
2F-1 No.36, Park St., Nangang District\r
Shenzhen No.1079 Nanhai Road,Nanshan District 518067\r
CN\r
\r
+84-D3-52 (hex) Tonly Technology Co. Ltd \r
+84D352 (base 16) Tonly Technology Co. Ltd \r
+ Section 37, Zhongkai Hi-Tech Development Zone\r
+ Huizhou Guangdong 516006\r
+ CN\r
+\r
E4-21-50 (hex) Shanghai Chint low voltage electrical technology Co.,Ltd.\r
E42150 (base 16) Shanghai Chint low voltage electrical technology Co.,Ltd.\r
3857 Sixian Road, Songjiang District, Shanghai\r
Shanghai Shanghai 201616\r
CN\r
\r
-84-D3-52 (hex) Tonly Technology Co. Ltd \r
-84D352 (base 16) Tonly Technology Co. Ltd \r
- Section 37, Zhongkai Hi-Tech Development Zone\r
- Huizhou Guangdong 516006\r
- CN\r
+F8-D7-58 (hex) Veratron AG\r
+F8D758 (base 16) Veratron AG\r
+ Industriestrasse 18\r
+ Rüthi St.Gallen 9464\r
+ CH\r
+\r
+24-FE-9A (hex) CyberTAN Technology Inc.\r
+24FE9A (base 16) CyberTAN Technology Inc.\r
+ 99 Park Ave III, Hsinchu Science Park\r
+ Hsinchu 308\r
+ TW\r
+\r
+B4-CB-B8 (hex) Universal Electronics, Inc.\r
+B4CBB8 (base 16) Universal Electronics, Inc.\r
+ 201 E Sandpointe Ave\r
+ SANTA ANA CA 927075778\r
+ US\r
\r
BC-32-B2 (hex) Samsung Electronics Co.,Ltd\r
BC32B2 (base 16) Samsung Electronics Co.,Ltd\r
Gumi Gyeongbuk 730-350\r
KR\r
\r
-D4-04-E6 (hex) Broadcom Limited\r
-D404E6 (base 16) Broadcom Limited\r
- 15191 Alton Parkway\r
- Irvine CA 92618\r
- US\r
-\r
80-D2-66 (hex) ScaleFlux\r
80D266 (base 16) ScaleFlux\r
900 N. McCarthy Blvd.Suite 200\r
Milpitas CA 95035\r
US\r
\r
-30-AF-7E (hex) Texas Instruments\r
-30AF7E (base 16) Texas Instruments\r
- 12500 TI Blvd\r
- Dallas TX 75243\r
- US\r
-\r
-F8-D7-58 (hex) Veratron AG\r
-F8D758 (base 16) Veratron AG\r
- Industriestrasse 18\r
- Rüthi St.Gallen 9464\r
- CH\r
-\r
-24-FE-9A (hex) CyberTAN Technology Inc.\r
-24FE9A (base 16) CyberTAN Technology Inc.\r
- 99 Park Ave III, Hsinchu Science Park\r
- Hsinchu 308\r
- TW\r
+28-EB-A6 (hex) Nex-T LLC\r
+28EBA6 (base 16) Nex-T LLC\r
+ Volgogradsky prospect, 42, building 5, floor 1, room I\r
+ Moscow Select State 109316\r
+ RU\r
\r
E8-10-98 (hex) Aruba, a Hewlett Packard Enterprise Company\r
E81098 (base 16) Aruba, a Hewlett Packard Enterprise Company\r
Santa Clara CA 95054\r
US\r
\r
-B4-CB-B8 (hex) Universal Electronics, Inc.\r
-B4CBB8 (base 16) Universal Electronics, Inc.\r
- 201 E Sandpointe Ave\r
- SANTA ANA CA 927075778\r
- US\r
+CC-4D-74 (hex) Fujian Newland Payment Technology Co., Ltd.\r
+CC4D74 (base 16) Fujian Newland Payment Technology Co., Ltd.\r
+ No. B602, Building #1, HaixiaJingmao Plaza, Fuzhou Bonded Area\r
+ Fuzhou 350015\r
+ CN\r
+\r
+A0-31-EB (hex) Semikron Elektronik GmbH & Co. KG\r
+A031EB (base 16) Semikron Elektronik GmbH & Co. KG\r
+ Sigmundstrasse 200\r
+ Nürnberg Bavaria 90431\r
+ DE\r
\r
EC-8A-48 (hex) Arista Networks\r
EC8A48 (base 16) Arista Networks\r
Piscataway NJ 08554\r
US\r
\r
-CC-4D-74 (hex) Fujian Newland Payment Technology Co., Ltd.\r
-CC4D74 (base 16) Fujian Newland Payment Technology Co., Ltd.\r
- No. B602, Building #1, HaixiaJingmao Plaza, Fuzhou Bonded Area\r
- Fuzhou 350015\r
- CN\r
-\r
-A0-31-EB (hex) Semikron Elektronik GmbH & Co. KG\r
-A031EB (base 16) Semikron Elektronik GmbH & Co. KG\r
- Sigmundstrasse 200\r
- Nürnberg Bavaria 90431\r
- DE\r
-\r
-28-EB-A6 (hex) Nex-T LLC\r
-28EBA6 (base 16) Nex-T LLC\r
- Volgogradsky prospect, 42, building 5, floor 1, room I\r
- Moscow Select State 109316\r
- RU\r
-\r
C0-B3-C8 (hex) LLC NTC Rotek\r
C0B3C8 (base 16) LLC NTC Rotek\r
Russian Federation, Moscow, Nizhnyaya Krasnoselskaya st., house 5, building 6, room 03\r
Dongguan 523808\r
CN\r
\r
-14-1A-97 (hex) Apple, Inc.\r
-141A97 (base 16) Apple, Inc.\r
- 1 Infinite Loop\r
- Cupertino CA 95014\r
- US\r
-\r
-C8-36-A3 (hex) GERTEC BRASIL LTDA\r
-C836A3 (base 16) GERTEC BRASIL LTDA\r
- Avenida Jabaquara, 3060, room 601\r
- Sao Paulo São Paulo 04046500\r
- BR\r
-\r
74-95-A7 (hex) Keyence Corporation\r
7495A7 (base 16) Keyence Corporation\r
1-3-14, Higashinakajima, Higashiyodogawa\r
San Jose CA 94568\r
US\r
\r
-30-B2-16 (hex) Hitachi Energy Germany AG\r
-30B216 (base 16) Hitachi Energy Germany AG\r
- Havellandstr. 10-14\r
- Mannheim 68309\r
- DE\r
+14-1A-97 (hex) Apple, Inc.\r
+141A97 (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
\r
88-62-5D (hex) BITNETWORKS CO.,LTD\r
88625D (base 16) BITNETWORKS CO.,LTD\r
Goyang-si 10550\r
KR\r
\r
+B4-B9-E6 (hex) eero inc.\r
+B4B9E6 (base 16) eero inc.\r
+ 660 3rd Street\r
+ San Francisco CA 94107\r
+ US\r
+\r
68-59-32 (hex) Sunitec Enterprise Co.,Ltd\r
685932 (base 16) Sunitec Enterprise Co.,Ltd\r
3F.,No.98-1,Mincyuan Rd.Sindian City\r
Taipei County 231 231141\r
CN\r
\r
+C8-36-A3 (hex) GERTEC BRASIL LTDA\r
+C836A3 (base 16) GERTEC BRASIL LTDA\r
+ Avenida Jabaquara, 3060, room 601\r
+ Sao Paulo São Paulo 04046500\r
+ BR\r
+\r
+30-B2-16 (hex) Hitachi Energy Germany AG\r
+30B216 (base 16) Hitachi Energy Germany AG\r
+ Havellandstr. 10-14\r
+ Mannheim 68309\r
+ DE\r
+\r
+CC-9F-7A (hex) Chiun Mai Communication System, Inc\r
+CC9F7A (base 16) Chiun Mai Communication System, Inc\r
+ No.4, Minsheng St., Tucheng District\r
+ New Taipei City 23678\r
+ TW\r
+\r
+54-14-A7 (hex) Nanjing Qinheng Microelectronics Co., Ltd.\r
+5414A7 (base 16) Nanjing Qinheng Microelectronics Co., Ltd.\r
+ No.18, Ningshuang Road\r
+ Nanjing Jiangsu 210012\r
+ CN\r
+\r
A0-A3-B3 (hex) Espressif Inc.\r
A0A3B3 (base 16) Espressif Inc.\r
Room 204, Building 2, 690 Bibo Rd, Pudong New Area\r
PARIS IdF 75008\r
FR\r
\r
-B4-B9-E6 (hex) eero inc.\r
-B4B9E6 (base 16) eero inc.\r
- 660 3rd Street\r
- San Francisco CA 94107\r
+5C-6A-EC (hex) IEEE Registration Authority\r
+5C6AEC (base 16) IEEE Registration Authority\r
+ 445 Hoes Lane\r
+ Piscataway NJ 08554\r
US\r
\r
-CC-9F-7A (hex) Chiun Mai Communication System, Inc\r
-CC9F7A (base 16) Chiun Mai Communication System, Inc\r
- No.4, Minsheng St., Tucheng District\r
- New Taipei City 23678\r
- TW\r
-\r
-54-14-A7 (hex) Nanjing Qinheng Microelectronics Co., Ltd.\r
-5414A7 (base 16) Nanjing Qinheng Microelectronics Co., Ltd.\r
- No.18, Ningshuang Road\r
- Nanjing Jiangsu 210012\r
+4C-E7-05 (hex) Siemens Industrial Automation Products Ltd., Chengdu\r
+4CE705 (base 16) Siemens Industrial Automation Products Ltd., Chengdu\r
+ Tianyuan Road No.99, High Tech Zone West\r
+ Chengdu Sichuan Province 611731 \r
CN\r
\r
0C-72-74 (hex) AVM Audiovisuelles Marketing und Computersysteme GmbH\r
Berlin Berlin 10559\r
DE\r
\r
-4C-E7-05 (hex) Siemens Industrial Automation Products Ltd., Chengdu\r
-4CE705 (base 16) Siemens Industrial Automation Products Ltd., Chengdu\r
- Tianyuan Road No.99, High Tech Zone West\r
- Chengdu Sichuan Province 611731 \r
- CN\r
-\r
-5C-6A-EC (hex) IEEE Registration Authority\r
-5C6AEC (base 16) IEEE Registration Authority\r
- 445 Hoes Lane\r
- Piscataway NJ 08554\r
- US\r
-\r
48-BD-A7 (hex) Honor Device Co., Ltd.\r
48BDA7 (base 16) Honor Device Co., Ltd.\r
Suite 3401, Unit A, Building 6, Shum Yip Sky Park, No. 8089, Hongli West Road, Xiangmihu Street, Futian District \r
Dongguan Guangdong 523860\r
CN\r
\r
-78-45-58 (hex) Ubiquiti Inc\r
-784558 (base 16) Ubiquiti Inc\r
- 685 Third Avenue, 27th Floor\r
- New York NY New York NY 10017\r
- US\r
+A0-AF-12 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+A0AF12 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
\r
AC-8B-A9 (hex) Ubiquiti Inc\r
AC8BA9 (base 16) Ubiquiti Inc\r
New York NY New York NY 10017\r
US\r
\r
-A0-AF-12 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
-A0AF12 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
- Dongguan 523808\r
- CN\r
-\r
60-96-A4 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
6096A4 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
Dongguan 523808\r
CN\r
\r
-20-BA-36 (hex) u-blox AG\r
-20BA36 (base 16) u-blox AG\r
- Zuercherstrasse, 68\r
- Thalwil Switzerland CH-8800\r
- CH\r
+78-45-58 (hex) Ubiquiti Inc\r
+784558 (base 16) Ubiquiti Inc\r
+ 685 Third Avenue, 27th Floor\r
+ New York NY New York NY 10017\r
+ US\r
\r
-D8-0A-E6 (hex) zte corporation\r
-D80AE6 (base 16) zte corporation\r
- 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China\r
- shenzhen guangdong 518057\r
- CN\r
+04-A5-26 (hex) Nokia\r
+04A526 (base 16) Nokia\r
+ 600 March Road\r
+ Kanata Ontario K2K 2E6\r
+ CA\r
\r
-48-9E-9D (hex) Hui Zhou Gaoshengda Technology Co.,LTD\r
-489E9D (base 16) Hui Zhou Gaoshengda Technology Co.,LTD\r
- No.2,Jin-da Road,Huinan Industrial Park\r
- Hui Zhou Guangdong 516025\r
+08-15-AE (hex) China Mobile Group Device Co.,Ltd.\r
+0815AE (base 16) China Mobile Group Device Co.,Ltd.\r
+ 32 Xuanwumen West Street,Xicheng District\r
+ Beijing 100053\r
CN\r
\r
+04-B4-FE (hex) AVM Audiovisuelles Marketing und Computersysteme GmbH\r
+04B4FE (base 16) AVM Audiovisuelles Marketing und Computersysteme GmbH\r
+ Alt-Moabit 95\r
+ Berlin Berlin 10559\r
+ DE\r
+\r
18-F4-6B (hex) Telenor Connexion AB\r
18F46B (base 16) Telenor Connexion AB\r
116 88\r
Menlo Park CA 94025\r
US\r
\r
+48-9E-9D (hex) Hui Zhou Gaoshengda Technology Co.,LTD\r
+489E9D (base 16) Hui Zhou Gaoshengda Technology Co.,LTD\r
+ No.2,Jin-da Road,Huinan Industrial Park\r
+ Hui Zhou Guangdong 516025\r
+ CN\r
+\r
+D8-0A-E6 (hex) zte corporation\r
+D80AE6 (base 16) zte corporation\r
+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China\r
+ shenzhen guangdong 518057\r
+ CN\r
+\r
9C-65-EE (hex) DZS Inc.\r
9C65EE (base 16) DZS Inc.\r
DASAN Tower 8F, 49 Daewangpangyo-ro644beon-gil Bundang-gu\r
San Jose CA 94568\r
US\r
\r
-04-A5-26 (hex) Nokia\r
-04A526 (base 16) Nokia\r
- 600 March Road\r
- Kanata Ontario K2K 2E6\r
- CA\r
+20-BA-36 (hex) u-blox AG\r
+20BA36 (base 16) u-blox AG\r
+ Zuercherstrasse, 68\r
+ Thalwil Switzerland CH-8800\r
+ CH\r
\r
-64-52-34 (hex) Sichuan Tianyi Comheart Telecom Co.,LTD\r
-645234 (base 16) Sichuan Tianyi Comheart Telecom Co.,LTD\r
- No.198,First Section,Snow Mountain Avenue, Jinyuan Town, Dayi County\r
- Chengdu Sichuan 611330\r
- CN\r
+A4-6D-D4 (hex) Silicon Laboratories\r
+A46DD4 (base 16) Silicon Laboratories\r
+ 7000 W. William Cannon Dr.\r
+ Austin TX 78735\r
+ US\r
\r
-E0-1F-6A (hex) Huawei Device Co., Ltd.\r
-E01F6A (base 16) Huawei Device Co., Ltd.\r
- No.2 of Xincheng Road, Songshan Lake Zone\r
- Dongguan Guangdong 523808\r
+8C-C5-8C (hex) ShenZhen Elsky Technology Co.,LTD\r
+8CC58C (base 16) ShenZhen Elsky Technology Co.,LTD\r
+ 401, building A, wanguocheng, No. 9, Pingji Avenue, Shanglilang community, Nanwan street, Longgang District, Shenzhen\r
+ ShenZhen GuangDong 518000\r
CN\r
\r
00-56-6D (hex) Huawei Device Co., Ltd.\r
Dongguan Guangdong 523808\r
CN\r
\r
-A4-6D-D4 (hex) Silicon Laboratories\r
-A46DD4 (base 16) Silicon Laboratories\r
- 7000 W. William Cannon Dr.\r
- Austin TX 78735\r
- US\r
-\r
-8C-C5-8C (hex) ShenZhen Elsky Technology Co.,LTD\r
-8CC58C (base 16) ShenZhen Elsky Technology Co.,LTD\r
- 401, building A, wanguocheng, No. 9, Pingji Avenue, Shanglilang community, Nanwan street, Longgang District, Shenzhen\r
- ShenZhen GuangDong 518000\r
+64-52-34 (hex) Sichuan Tianyi Comheart Telecom Co.,LTD\r
+645234 (base 16) Sichuan Tianyi Comheart Telecom Co.,LTD\r
+ No.198,First Section,Snow Mountain Avenue, Jinyuan Town, Dayi County\r
+ Chengdu Sichuan 611330\r
CN\r
\r
-04-B4-FE (hex) AVM Audiovisuelles Marketing und Computersysteme GmbH\r
-04B4FE (base 16) AVM Audiovisuelles Marketing und Computersysteme GmbH\r
- Alt-Moabit 95\r
- Berlin Berlin 10559\r
- DE\r
+E0-1F-6A (hex) Huawei Device Co., Ltd.\r
+E01F6A (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
\r
2C-70-4F (hex) zte corporation\r
2C704F (base 16) zte corporation\r
shenzhen guangdong 518057\r
CN\r
\r
-08-15-AE (hex) China Mobile Group Device Co.,Ltd.\r
-0815AE (base 16) China Mobile Group Device Co.,Ltd.\r
- 32 Xuanwumen West Street,Xicheng District\r
- Beijing 100053\r
- CN\r
-\r
38-16-72 (hex) Shenzhen SuperElectron Technology Co.,Ltd.\r
381672 (base 16) Shenzhen SuperElectron Technology Co.,Ltd.\r
1213-1214, haosheng business center, dongbin road, nanshan street, nanshan district, shenzhen city\r
Hangzhou Zhejiang 310052\r
CN\r
\r
-D4-53-47 (hex) Merytronic 2012, S.L.\r
-D45347 (base 16) Merytronic 2012, S.L.\r
- Parque empresarial BoroaParcela 2C-1\r
- Amorebieta Bizkaia 48340\r
- ES\r
-\r
6C-29-D2 (hex) Cisco Systems, Inc\r
6C29D2 (base 16) Cisco Systems, Inc\r
80 West Tasman Drive\r
shenzhen guangdong 518057\r
CN\r
\r
+D4-53-47 (hex) Merytronic 2012, S.L.\r
+D45347 (base 16) Merytronic 2012, S.L.\r
+ Parque empresarial BoroaParcela 2C-1\r
+ Amorebieta Bizkaia 48340\r
+ ES\r
+\r
94-3E-E4 (hex) WiSA Technologies Inc\r
943EE4 (base 16) WiSA Technologies Inc\r
15268 Northwest Greenbrier Parkway\r
Huizhou Guangdong 516007\r
CN\r
\r
-20-97-27 (hex) TELTONIKA NETWORKS UAB\r
-209727 (base 16) TELTONIKA NETWORKS UAB\r
- K. Baršausko st. 66, Kaunas\r
- Kaunas LT-51436\r
- LT\r
-\r
-00-1A-E8 (hex) Unify Software and Solutions GmbH & Co. KG\r
-001AE8 (base 16) Unify Software and Solutions GmbH & Co. KG\r
- Otto-Hahn-Ring 6\r
- Munich 81739\r
- DE\r
-\r
54-EF-43 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
54EF43 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
Sunnyvale CA 94089\r
US\r
\r
+20-97-27 (hex) TELTONIKA NETWORKS UAB\r
+209727 (base 16) TELTONIKA NETWORKS UAB\r
+ K. Baršausko st. 66, Kaunas\r
+ Kaunas LT-51436\r
+ LT\r
+\r
54-08-3B (hex) IEEE Registration Authority\r
54083B (base 16) IEEE Registration Authority\r
445 Hoes Lane\r
Piscataway NJ 08554\r
US\r
\r
-E0-73-E7 (hex) HP Inc.\r
-E073E7 (base 16) HP Inc.\r
- 10300 Energy Dr\r
- Spring TX 77389\r
- US\r
+00-1A-E8 (hex) Unify Software and Solutions GmbH & Co. KG\r
+001AE8 (base 16) Unify Software and Solutions GmbH & Co. KG\r
+ Otto-Hahn-Ring 6\r
+ Munich 81739\r
+ DE\r
\r
E8-6E-3A (hex) Sony Interactive Entertainment Inc.\r
E86E3A (base 16) Sony Interactive Entertainment Inc.\r
San Francisco 94158\r
US\r
\r
+60-82-46 (hex) Apple, Inc.\r
+608246 (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
+98-B3-79 (hex) Apple, Inc.\r
+98B379 (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
+04-9D-05 (hex) Apple, Inc.\r
+049D05 (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
+E0-73-E7 (hex) HP Inc.\r
+E073E7 (base 16) HP Inc.\r
+ 10300 Energy Dr\r
+ Spring TX 77389\r
+ US\r
+\r
+34-AA-31 (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
+34AA31 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
+ 4F,Block A, Skyworth?Building,\r
+ Shenzhen Guangdong 518057\r
+ CN\r
+\r
+A0-4C-0C (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
+A04C0C (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
+ 4F,Block A, Skyworth?Building,\r
+ Shenzhen Guangdong 518057\r
+ CN\r
+\r
+C8-98-28 (hex) zte corporation\r
+C89828 (base 16) zte corporation\r
+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China\r
+ shenzhen guangdong 518057\r
+ CN\r
+\r
+DC-36-42 (hex) zte corporation\r
+DC3642 (base 16) zte corporation\r
+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China\r
+ shenzhen guangdong 518057\r
+ CN\r
+\r
+C8-13-8B (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
+C8138B (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
+ 4F,Block A, Skyworth?Building,\r
+ Shenzhen Guangdong 518057\r
+ CN\r
+\r
+6C-C2-42 (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
+6CC242 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
+ 4F,Block A, Skyworth?Building,\r
+ Shenzhen Guangdong 518057\r
+ CN\r
+\r
+78-8A-86 (hex) China Dragon Technology Limited\r
+788A86 (base 16) China Dragon Technology Limited\r
+ B4 Bldg.Haoshan 1st Industry Park,\r
+ Shenzhen Guangdong 518104\r
+ CN\r
+\r
+20-E4-6F (hex) vivo Mobile Communication Co., Ltd.\r
+20E46F (base 16) vivo Mobile Communication Co., Ltd.\r
+ No.1, vivo Road, Chang'an\r
+ Dongguan Guangdong 523860\r
+ CN\r
+\r
+60-DC-81 (hex) AltoBeam Inc.\r
+60DC81 (base 16) AltoBeam Inc.\r
+ B808, Tsinghua Tongfang Hi-Tech Plaza, Haidian\r
+ Beijing Beijing 100083\r
+ CN\r
+\r
+84-72-93 (hex) Texas Instruments\r
+847293 (base 16) Texas Instruments\r
+ 12500 TI Blvd\r
+ Dallas TX 75243\r
+ US\r
+\r
+F8-2E-0C (hex) Texas Instruments\r
+F82E0C (base 16) Texas Instruments\r
+ 12500 TI Blvd\r
+ Dallas TX 75243\r
+ US\r
+\r
+90-06-F2 (hex) Texas Instruments\r
+9006F2 (base 16) Texas Instruments\r
+ 12500 TI Blvd\r
+ Dallas TX 75243\r
+ US\r
+\r
+84-F1-75 (hex) Jiangxi Xunte Intelligent Terminal Co., Ltd\r
+84F175 (base 16) Jiangxi Xunte Intelligent Terminal Co., Ltd\r
+ 16 # 1-3/F, Zhongxing Nanchang Software Industrial Park, No. 688, Aixihu North Road, Nanchang High-tech Industrial Development Zone, Nanchang, Jiangxi Province\r
+ Nanchang Jiangxi 330000\r
+ CN\r
+\r
84-80-94 (hex) Meter, Inc.\r
848094 (base 16) Meter, Inc.\r
148 Townsend St\r
Charlotte North Carolina 28273\r
US\r
\r
-80-EE-25 (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
-80EE25 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
- 4F,Block A, Skyworth?Building,\r
- Shenzhen Guangdong 518057\r
- CN\r
-\r
44-87-DB (hex) Tymphany Acoustic Technology (Huizhou) Co., Ltd.\r
4487DB (base 16) Tymphany Acoustic Technology (Huizhou) Co., Ltd.\r
Tymphany Acoustic Technology (Huizhou) Co., Ltd.\r
DONG GUAN GUANG DONG 523860\r
CN\r
\r
-10-55-E4 (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
-1055E4 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
- 4F,Block A, Skyworth?Building,\r
- Shenzhen Guangdong 518057\r
- CN\r
-\r
C0-F5-35 (hex) AMPAK Technology,Inc.\r
C0F535 (base 16) AMPAK Technology,Inc.\r
3F, No.15-1 Zhonghua Road, Hsinchu Industrail Park, Hukou,\r
Shanghai Shanghai 201203\r
CN\r
\r
-04-CE-09 (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
-04CE09 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
- 4F,Block A, Skyworth?Building,\r
- Shenzhen Guangdong 518057\r
- CN\r
-\r
1C-86-9A (hex) Samsung Electronics Co.,Ltd\r
1C869A (base 16) Samsung Electronics Co.,Ltd\r
129, Samsung-ro, Youngtongl-Gu\r
Shenzhen 518000\r
CN\r
\r
-40-67-9B (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
-40679B (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
- 4F,Block A, Skyworth?Building,\r
- Shenzhen Guangdong 518057\r
- CN\r
-\r
F0-A6-54 (hex) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.\r
F0A654 (base 16) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.\r
B22 Building,NO.51 Tongle Road, Shajing Town, Jiangnan District, Nanning, Guangxi Province, China\r
Brentwood Essex 08854\r
GB\r
\r
-68-EC-8A (hex) IKEA of Sweden AB\r
-68EC8A (base 16) IKEA of Sweden AB\r
- \r
- \r
- \r
-\r
48-02-AF (hex) Telit Communication s.p.a\r
4802AF (base 16) Telit Communication s.p.a\r
Via stazione di prosecco 5B\r
Boston MA 02215\r
US\r
\r
-DC-A3-13 (hex) Shenzhen Changjin Communication Technology Co.,Ltd\r
-DCA313 (base 16) Shenzhen Changjin Communication Technology Co.,Ltd\r
- 6th Floor, Saibo Building, Tenglong Road, Minzhi Street, Longhua District, Shenzhen\r
- Shenzhen 518000\r
- CN\r
-\r
-70-B6-51 (hex) Eight Sleep\r
-70B651 (base 16) Eight Sleep\r
- 212 W 35th StFloor 4\r
- New York NY 10123\r
+04-32-01 (hex) Broadcom Limited\r
+043201 (base 16) Broadcom Limited\r
+ 15191 Alton Parkway\r
+ Irvine CA 92618\r
US\r
\r
-AC-FC-82 (hex) Shenzhen Sundray Technologies Company Limited\r
-ACFC82 (base 16) Shenzhen Sundray Technologies Company Limited\r
- 5th Floor, Block A4, Nanshan ipark,NO.1001 Xue Yuan Road, Nanshan District, Shenzhen 518055, P.R. China\r
- Shenzhen Guangdong 518057\r
- CN\r
-\r
D8-AF-81 (hex) AO \r
D8AF81 (base 16) AO \r
Filippovskiy per., 8/1\r
Mawson Lakes SA 5095\r
AU\r
\r
-7C-17-79 (hex) EM Microelectronic\r
-7C1779 (base 16) EM Microelectronic\r
- Rue des Sors 3\r
- Marin-Epagnier Neuchatel 2074\r
- CH\r
-\r
38-39-6C (hex) Huawei Device Co., Ltd.\r
38396C (base 16) Huawei Device Co., Ltd.\r
No.2 of Xincheng Road, Songshan Lake Zone\r
Dongguan Guangdong 523808\r
CN\r
\r
+70-B6-51 (hex) Eight Sleep\r
+70B651 (base 16) Eight Sleep\r
+ 212 W 35th StFloor 4\r
+ New York NY 10123\r
+ US\r
+\r
+DC-A3-13 (hex) Shenzhen Changjin Communication Technology Co.,Ltd\r
+DCA313 (base 16) Shenzhen Changjin Communication Technology Co.,Ltd\r
+ 6th Floor, Saibo Building, Tenglong Road, Minzhi Street, Longhua District, Shenzhen\r
+ Shenzhen 518000\r
+ CN\r
+\r
68-9A-21 (hex) Fiberhome Telecommunication Technologies Co.,LTD\r
689A21 (base 16) Fiberhome Telecommunication Technologies Co.,LTD\r
No.5 DongXin Road\r
Wuhan Hubei 430074\r
CN\r
\r
-04-32-01 (hex) Broadcom Limited\r
-043201 (base 16) Broadcom Limited\r
- 15191 Alton Parkway\r
- Irvine CA 92618\r
- US\r
+7C-17-79 (hex) EM Microelectronic\r
+7C1779 (base 16) EM Microelectronic\r
+ Rue des Sors 3\r
+ Marin-Epagnier Neuchatel 2074\r
+ CH\r
\r
90-CE-B8 (hex) Texas Instruments\r
90CEB8 (base 16) Texas Instruments\r
Dallas TX 75243\r
US\r
\r
+AC-FC-82 (hex) Shenzhen Sundray Technologies Company Limited\r
+ACFC82 (base 16) Shenzhen Sundray Technologies Company Limited\r
+ 5th Floor, Block A4, Nanshan ipark,NO.1001 Xue Yuan Road, Nanshan District, Shenzhen 518055, P.R. China\r
+ Shenzhen Guangdong 518057\r
+ CN\r
+\r
CC-F8-26 (hex) Samsung Electronics Co.,Ltd\r
CCF826 (base 16) Samsung Electronics Co.,Ltd\r
#94-1, Imsoo-Dong\r
Gumi Gyeongbuk 730-350\r
KR\r
\r
-18-26-54 (hex) Samsung Electronics Co.,Ltd\r
-182654 (base 16) Samsung Electronics Co.,Ltd\r
- #94-1, Imsoo-Dong\r
- Gumi Gyeongbuk 730-350\r
- KR\r
-\r
-54-11-49 (hex) vivo Mobile Communication Co., Ltd.\r
-541149 (base 16) vivo Mobile Communication Co., Ltd.\r
- No.1, vivo Road, Chang'an\r
- Dongguan Guangdong 523860\r
- CN\r
-\r
5C-22-DA (hex) Technicolor CH USA Inc.\r
5C22DA (base 16) Technicolor CH USA Inc.\r
5030 Sugarloaf Parkway Bldg 6 \r
Lawrenceville GA 30044\r
US\r
\r
+18-26-54 (hex) Samsung Electronics Co.,Ltd\r
+182654 (base 16) Samsung Electronics Co.,Ltd\r
+ #94-1, Imsoo-Dong\r
+ Gumi Gyeongbuk 730-350\r
+ KR\r
+\r
70-5A-6F (hex) IEEE Registration Authority\r
705A6F (base 16) IEEE Registration Authority\r
445 Hoes Lane\r
DONG GUAN GUANG DONG 523860\r
CN\r
\r
-E8-88-43 (hex) Xiaomi Communications Co Ltd\r
-E88843 (base 16) Xiaomi Communications Co Ltd\r
- #019, 9th Floor, Building 6, 33 Xi'erqi Middle Road\r
- Beijing Haidian District 100085\r
+54-11-49 (hex) vivo Mobile Communication Co., Ltd.\r
+541149 (base 16) vivo Mobile Communication Co., Ltd.\r
+ No.1, vivo Road, Chang'an\r
+ Dongguan Guangdong 523860\r
+ CN\r
+\r
+70-7C-E3 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+707CE3 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
CN\r
\r
3C-6F-9B (hex) zte corporation\r
Chengdu Sichuan 611330\r
CN\r
\r
+60-EF-AB (hex) Silicon Laboratories\r
+60EFAB (base 16) Silicon Laboratories\r
+ 7000 W. William Cannon Dr.\r
+ Austin TX 78735\r
+ US\r
+\r
+48-A9-8A (hex) Routerboard.com\r
+48A98A (base 16) Routerboard.com\r
+ Mikrotikls SIA\r
+ Riga Riga LV1009\r
+ LV\r
+\r
88-1E-59 (hex) Onion Corporation\r
881E59 (base 16) Onion Corporation\r
895 Don Mills Road\r
North York Ontario M3C 1W3,\r
CA\r
\r
+2C-00-2A (hex) Shenzhen TINNO Mobile Technology Corp.\r
+2C002A (base 16) Shenzhen TINNO Mobile Technology Corp.\r
+ Building, No.33, Xiandong Rd, Xili\r
+ Nanshan District, Shenzhen PRC 518053\r
+ CN\r
+\r
+E8-88-43 (hex) Xiaomi Communications Co Ltd\r
+E88843 (base 16) Xiaomi Communications Co Ltd\r
+ #019, 9th Floor, Building 6, 33 Xi'erqi Middle Road\r
+ Beijing Haidian District 100085\r
+ CN\r
+\r
+28-02-2E (hex) Apple, Inc.\r
+28022E (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
FC-9C-A7 (hex) Apple, Inc.\r
FC9CA7 (base 16) Apple, Inc.\r
1 Infinite Loop\r
Dongguan 523808\r
CN\r
\r
-70-7C-E3 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
-707CE3 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
- Dongguan 523808\r
- CN\r
-\r
-2C-00-2A (hex) Shenzhen TINNO Mobile Technology Corp.\r
-2C002A (base 16) Shenzhen TINNO Mobile Technology Corp.\r
- Building, No.33, Xiandong Rd, Xili\r
- Nanshan District, Shenzhen PRC 518053\r
- CN\r
-\r
-60-EF-AB (hex) Silicon Laboratories\r
-60EFAB (base 16) Silicon Laboratories\r
- 7000 W. William Cannon Dr.\r
- Austin TX 78735\r
- US\r
-\r
-48-A9-8A (hex) Routerboard.com\r
-48A98A (base 16) Routerboard.com\r
- Mikrotikls SIA\r
- Riga Riga LV1009\r
- LV\r
-\r
-28-02-2E (hex) Apple, Inc.\r
-28022E (base 16) Apple, Inc.\r
- 1 Infinite Loop\r
- Cupertino CA 95014\r
- US\r
-\r
38-14-1B (hex) Secure Letter Inc.\r
38141B (base 16) Secure Letter Inc.\r
223, Yeoksam-ro\r
Nanning Guangxi 530007\r
CN\r
\r
+9C-D1-D0 (hex) Guangzhou Ronsuo Electronic Technology Co.,Ltd\r
+9CD1D0 (base 16) Guangzhou Ronsuo Electronic Technology Co.,Ltd\r
+ Address:Unit 503-505, 507, Area E, No. 80 Lanyue Road, Science Avenue, Huangpu District, Guangzhou\r
+ Guangzhou Guangdong 510600\r
+ CN\r
+\r
90-D6-89 (hex) Huahao Fangzhou Technology Co.,Ltd\r
90D689 (base 16) Huahao Fangzhou Technology Co.,Ltd\r
No.99,Hangtian Road,Section 2,East Third Ring Road,Chenghua Distrct,Chengdu,SiChuan\r
Ansbach 91522\r
DE\r
\r
-9C-D1-D0 (hex) Guangzhou Ronsuo Electronic Technology Co.,Ltd\r
-9CD1D0 (base 16) Guangzhou Ronsuo Electronic Technology Co.,Ltd\r
- Address:Unit 503-505, 507, Area E, No. 80 Lanyue Road, Science Avenue, Huangpu District, Guangzhou\r
- Guangzhou Guangdong 510600\r
- CN\r
-\r
5C-94-62 (hex) Shenzhen Jiuzhou Electric Co.,LTD\r
5C9462 (base 16) Shenzhen Jiuzhou Electric Co.,LTD\r
6F,Jiuzhou Electric Building,Southern No.12RD.,Hi-Tech Industrial Park,Nanshan District,\r
Sunnyvale CA 94089\r
US\r
\r
-C4-67-8B (hex) Alphabet Capital Sdn Bhd\r
-C4678B (base 16) Alphabet Capital Sdn Bhd\r
- L-3A-3A, No.2, Jalan Solaris, Solaris Mont Kiara, 50480 Kuala Lumpur, Malaysia\r
- Mont Kiara Kuala Lumpur 50480\r
- MY\r
-\r
-60-F0-4D (hex) Honor Device Co., Ltd.\r
-60F04D (base 16) Honor Device Co., Ltd.\r
- Suite 3401, Unit A, Building 6, Shum Yip Sky Park, No. 8089, Hongli West Road, Xiangmihu Street, Futian District \r
- Shenzhen Guangdong 518040\r
- CN\r
-\r
-00-0E-51 (hex) TECNA SpA\r
-000E51 (base 16) TECNA SpA\r
- Via Meucci, 27\r
- Sastel San Pietro Terme Bologna 40024\r
- IT\r
-\r
-C0-C7-0A (hex) Ruckus Wireless\r
-C0C70A (base 16) Ruckus Wireless\r
- 350 West Java Drive\r
- Sunnyvale CA 94089\r
- US\r
-\r
E4-BC-AA (hex) Xiaomi Communications Co Ltd\r
E4BCAA (base 16) Xiaomi Communications Co Ltd\r
#019, 9th Floor, Building 6, 33 Xi'erqi Middle Road\r
HuKou Hsiang HsinChu Hsien 303\r
TW\r
\r
+C0-C7-0A (hex) Ruckus Wireless\r
+C0C70A (base 16) Ruckus Wireless\r
+ 350 West Java Drive\r
+ Sunnyvale CA 94089\r
+ US\r
+\r
+00-0E-51 (hex) TECNA SpA\r
+000E51 (base 16) TECNA SpA\r
+ Via Meucci, 27\r
+ Sastel San Pietro Terme Bologna 40024\r
+ IT\r
+\r
5C-62-8B (hex) TP-Link Corporation Limited\r
5C628B (base 16) TP-Link Corporation Limited\r
Room 901,9/F.New East Ocean Centre, 9 Science Museum Road\r
Guangzhou Guangdong 510030\r
CN\r
\r
-48-81-D4 (hex) Ruijie Networks Co.,LTD\r
-4881D4 (base 16) Ruijie Networks Co.,LTD\r
- No. 2, 7th floor, xingwangruijie, haixi hi-tech industrial park, high-tech zone, fuzhou city\r
- Fuzhou Fujian 350002\r
+C4-67-8B (hex) Alphabet Capital Sdn Bhd\r
+C4678B (base 16) Alphabet Capital Sdn Bhd\r
+ L-3A-3A, No.2, Jalan Solaris, Solaris Mont Kiara, 50480 Kuala Lumpur, Malaysia\r
+ Mont Kiara Kuala Lumpur 50480\r
+ MY\r
+\r
+60-F0-4D (hex) Honor Device Co., Ltd.\r
+60F04D (base 16) Honor Device Co., Ltd.\r
+ Suite 3401, Unit A, Building 6, Shum Yip Sky Park, No. 8089, Hongli West Road, Xiangmihu Street, Futian District \r
+ Shenzhen Guangdong 518040\r
CN\r
\r
60-03-0C (hex) Shenzhen YOUHUA Technology Co., Ltd\r
Reno NV 89507\r
US\r
\r
-C8-2B-6B (hex) shenzhen worldelite electronics co., LTD\r
-C82B6B (base 16) shenzhen worldelite electronics co., LTD\r
- Office 5 F, Xiang Yu Industrial Park, Longsheng Road, Longgang Dist\r
- Shenzhen Guangdong 51800\r
+48-81-D4 (hex) Ruijie Networks Co.,LTD\r
+4881D4 (base 16) Ruijie Networks Co.,LTD\r
+ No. 2, 7th floor, xingwangruijie, haixi hi-tech industrial park, high-tech zone, fuzhou city\r
+ Fuzhou Fujian 350002\r
CN\r
\r
-D0-21-F9 (hex) Ubiquiti Inc\r
-D021F9 (base 16) Ubiquiti Inc\r
- 685 Third Avenue, 27th Floor\r
- New York NY New York NY 10017\r
- US\r
-\r
-70-A7-41 (hex) Ubiquiti Inc\r
-70A741 (base 16) Ubiquiti Inc\r
- 685 Third Avenue, 27th Floor\r
- New York NY New York NY 10017\r
- US\r
-\r
24-A4-3C (hex) Ubiquiti Inc\r
24A43C (base 16) Ubiquiti Inc\r
685 Third Avenue, 27th Floor\r
Golden CO 80401\r
US\r
\r
+D0-21-F9 (hex) Ubiquiti Inc\r
+D021F9 (base 16) Ubiquiti Inc\r
+ 685 Third Avenue, 27th Floor\r
+ New York NY New York NY 10017\r
+ US\r
+\r
+70-A7-41 (hex) Ubiquiti Inc\r
+70A741 (base 16) Ubiquiti Inc\r
+ 685 Third Avenue, 27th Floor\r
+ New York NY New York NY 10017\r
+ US\r
+\r
18-14-AE (hex) Nokia\r
1814AE (base 16) Nokia\r
600 March Road\r
New York NY New York NY 10017\r
US\r
\r
-CC-47-40 (hex) AzureWave Technology Inc.\r
-CC4740 (base 16) AzureWave Technology Inc.\r
- 8F., No. 94, Baozhong Rd.\r
- New Taipei City Taiwan 231\r
- TW\r
-\r
-24-E8-E5 (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
-24E8E5 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
- 4F,Block A, Skyworth?Building,\r
- Shenzhen Guangdong 518057\r
- CN\r
-\r
00-14-91 (hex) Daniels Electronics Ltd. dba Codan Radio Communications\r
001491 (base 16) Daniels Electronics Ltd. dba Codan Radio Communications\r
43 Erie St\r
San Jose CA 94568\r
US\r
\r
+C8-2B-6B (hex) shenzhen worldelite electronics co., LTD\r
+C82B6B (base 16) shenzhen worldelite electronics co., LTD\r
+ Office 5 F, Xiang Yu Industrial Park, Longsheng Road, Longgang Dist\r
+ Shenzhen Guangdong 51800\r
+ CN\r
+\r
30-4F-75 (hex) DZS Inc.\r
304F75 (base 16) DZS Inc.\r
DASAN Tower 8F, 49 Daewangpangyo-ro644beon-gil Bundang-gu\r
Seongnam-si Gyeonggi-do 13493\r
KR\r
\r
-00-01-47 (hex) DZS Inc.\r
-000147 (base 16) DZS Inc.\r
- 7001 Oakport Street\r
- Oakland CA 94621\r
- US\r
-\r
80-7C-62 (hex) Hangzhou Hikvision Digital Technology Co.,Ltd.\r
807C62 (base 16) Hangzhou Hikvision Digital Technology Co.,Ltd.\r
No.555 Qianmo Road \r
Hangzhou Zhejiang 310052\r
CN\r
\r
-00-02-71 (hex) DZS Inc.\r
-000271 (base 16) DZS Inc.\r
+00-01-47 (hex) DZS Inc.\r
+000147 (base 16) DZS Inc.\r
7001 Oakport Street\r
Oakland CA 94621\r
US\r
\r
-6C-03-70 (hex) Extreme Networks, Inc.\r
-6C0370 (base 16) Extreme Networks, Inc.\r
- 6480 Via Del Oro\r
- San Jose CA 95119\r
+00-02-71 (hex) DZS Inc.\r
+000271 (base 16) DZS Inc.\r
+ 7001 Oakport Street\r
+ Oakland CA 94621\r
US\r
\r
-DC-9E-AB (hex) Chongqing Yipingfang Technology Co., Ltd.\r
-DC9EAB (base 16) Chongqing Yipingfang Technology Co., Ltd.\r
- No. 1-10, Tieshan Road, Biquan Street, Bishan District, Chongqing\r
- ChongQing 402760\r
- CN\r
+CC-47-40 (hex) AzureWave Technology Inc.\r
+CC4740 (base 16) AzureWave Technology Inc.\r
+ 8F., No. 94, Baozhong Rd.\r
+ New Taipei City Taiwan 231\r
+ TW\r
\r
6C-8F-4E (hex) Chongqing Yipingfang Technology Co., Ltd.\r
6C8F4E (base 16) Chongqing Yipingfang Technology Co., Ltd.\r
Wuhan Hubei 430000\r
CN\r
\r
-74-D6-E5 (hex) Huawei Device Co., Ltd.\r
-74D6E5 (base 16) Huawei Device Co., Ltd.\r
- No.2 of Xincheng Road, Songshan Lake Zone\r
- Dongguan Guangdong 523808\r
- CN\r
-\r
88-25-08 (hex) Meta Platforms Technologies, LLC\r
882508 (base 16) Meta Platforms Technologies, LLC\r
1601 Willow Rd\r
Menlo Park CA 94025\r
US\r
\r
+6C-03-70 (hex) Extreme Networks, Inc.\r
+6C0370 (base 16) Extreme Networks, Inc.\r
+ 6480 Via Del Oro\r
+ San Jose CA 95119\r
+ US\r
+\r
9C-65-FA (hex) AcSiP\r
9C65FA (base 16) AcSiP\r
3F., No. 246, Bo'ai St., Shulin Dist.,\r
shenzhen guangdong 518057\r
CN\r
\r
+34-AF-A3 (hex) Recogni Inc\r
+34AFA3 (base 16) Recogni Inc\r
+ 2590 N 1ST STSuite 320\r
+ San Jose CA 95131\r
+ US\r
+\r
D8-7A-3B (hex) Silicon Laboratories\r
D87A3B (base 16) Silicon Laboratories\r
7000 W. William Cannon Dr.\r
Chengdu Sichuan 611330\r
CN\r
\r
+DC-9E-AB (hex) Chongqing Yipingfang Technology Co., Ltd.\r
+DC9EAB (base 16) Chongqing Yipingfang Technology Co., Ltd.\r
+ No. 1-10, Tieshan Road, Biquan Street, Bishan District, Chongqing\r
+ ChongQing 402760\r
+ CN\r
+\r
+74-D6-E5 (hex) Huawei Device Co., Ltd.\r
+74D6E5 (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+14-A4-17 (hex) Shenzhen Belon Technology CO.,LTD\r
+14A417 (base 16) Shenzhen Belon Technology CO.,LTD\r
+ Tsinghua Information\r
+ Shenzhen Guangdong 518052\r
+ CN\r
+\r
48-91-D5 (hex) Cisco Systems, Inc\r
4891D5 (base 16) Cisco Systems, Inc\r
80 West Tasman Drive\r
Chandler AZ 85226\r
US\r
\r
-34-AF-A3 (hex) Recogni Inc\r
-34AFA3 (base 16) Recogni Inc\r
- 2590 N 1ST STSuite 320\r
- San Jose CA 95131\r
+48-9E-CB (hex) Hewlett Packard Enterprise\r
+489ECB (base 16) Hewlett Packard Enterprise\r
+ 8000 Foothills Blvd.\r
+ Roseville 95747\r
US\r
\r
-14-A4-17 (hex) Shenzhen Belon Technology CO.,LTD\r
-14A417 (base 16) Shenzhen Belon Technology CO.,LTD\r
- Tsinghua Information\r
- Shenzhen Guangdong 518052\r
- CN\r
-\r
-60-48-9C (hex) YIPPEE ELECTRONICS CO.,LIMITED\r
-60489C (base 16) YIPPEE ELECTRONICS CO.,LIMITED\r
- 19H MAXGRAND PLAZA NO.3 TAI YAU STREET SAN PO KONG KL\r
- Kowloon 999077\r
+90-2A-EE (hex) Xiaomi Communications Co Ltd\r
+902AEE (base 16) Xiaomi Communications Co Ltd\r
+ #019, 9th Floor, Building 6, 33 Xi'erqi Middle Road\r
+ Beijing Haidian District 100085\r
CN\r
\r
D8-E3-5E (hex) LG Innotek\r
Gwangju Gwangsan-gu 506-731\r
KR\r
\r
-48-9E-CB (hex) Hewlett Packard Enterprise\r
-489ECB (base 16) Hewlett Packard Enterprise\r
- 8000 Foothills Blvd.\r
- Roseville 95747\r
- US\r
-\r
78-68-29 (hex) eero inc.\r
786829 (base 16) eero inc.\r
660 3rd Street\r
San Francisco CA 94107\r
US\r
\r
-D8-47-8F (hex) Microchip Technology Inc.\r
-D8478F (base 16) Microchip Technology Inc.\r
- 2355 W. Chandler Blvd.\r
- Chandler AZ 85224\r
- US\r
-\r
-90-2A-EE (hex) Xiaomi Communications Co Ltd\r
-902AEE (base 16) Xiaomi Communications Co Ltd\r
- #019, 9th Floor, Building 6, 33 Xi'erqi Middle Road\r
- Beijing Haidian District 100085\r
- CN\r
-\r
F4-D9-C6 (hex) UNION MAN TECHNOLOGY CO.,LTD\r
F4D9C6 (base 16) UNION MAN TECHNOLOGY CO.,LTD\r
No.5,Huitai Road,Huinan High-Tech Park,Huiao Highway\r
Huizhou Guangdong 516007\r
CN\r
\r
-88-08-94 (hex) Skullcandy\r
-880894 (base 16) Skullcandy\r
- 1441 Ute blvd.\r
- Park City 84098\r
+60-48-9C (hex) YIPPEE ELECTRONICS CO.,LIMITED\r
+60489C (base 16) YIPPEE ELECTRONICS CO.,LIMITED\r
+ 19H MAXGRAND PLAZA NO.3 TAI YAU STREET SAN PO KONG KL\r
+ Kowloon 999077\r
+ CN\r
+\r
+D8-47-8F (hex) Microchip Technology Inc.\r
+D8478F (base 16) Microchip Technology Inc.\r
+ 2355 W. Chandler Blvd.\r
+ Chandler AZ 85224\r
US\r
\r
24-90-38 (hex) Universal Biosensors Pty Ltd\r
NingBo ZheJiang 315500\r
CN\r
\r
-00-E6-0E (hex) Extreme Networks, Inc.\r
-00E60E (base 16) Extreme Networks, Inc.\r
- 6480 Via Del Oro\r
- San Jose CA 95119\r
- US\r
-\r
-94-98-8F (hex) Sagemcom Broadband SAS\r
-94988F (base 16) Sagemcom Broadband SAS\r
- 250, route de l'Empereur\r
- Rueil Malmaison Cedex hauts de seine 92848\r
- FR\r
-\r
-F0-7B-65 (hex) Sagemcom Broadband SAS\r
-F07B65 (base 16) Sagemcom Broadband SAS\r
- 250, route de l'Empereur\r
- Rueil Malmaison Cedex hauts de seine 92848\r
- FR\r
-\r
-24-E4-CE (hex) Kaonmedia CO., LTD.\r
-24E4CE (base 16) Kaonmedia CO., LTD.\r
- 884-3, Seongnam-daero, Bundang-gu\r
- Seongnam-si Gyeonggi-do 13517\r
- KR\r
-\r
14-C3-5E (hex) FibRSol Global Network Limited\r
14C35E (base 16) FibRSol Global Network Limited\r
17, Deep Vihar, Vikas Nagar, Near Durga Mata Mandir, Uttam Nagar New Delhi\r
New Delhi New Delhi 110059\r
IN\r
\r
-04-AB-08 (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
-04AB08 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
- 4F,Block A, Skyworth?Building,\r
- Shenzhen Guangdong 518057\r
- CN\r
-\r
40-FA-FE (hex) Motorola Mobility LLC, a Lenovo Company\r
40FAFE (base 16) Motorola Mobility LLC, a Lenovo Company\r
222 West Merchandise Mart Plaza\r
KYOTO KYOTO 601-8501\r
JP\r
\r
+00-E6-0E (hex) Extreme Networks, Inc.\r
+00E60E (base 16) Extreme Networks, Inc.\r
+ 6480 Via Del Oro\r
+ San Jose CA 95119\r
+ US\r
+\r
+88-08-94 (hex) Skullcandy\r
+880894 (base 16) Skullcandy\r
+ 1441 Ute blvd.\r
+ Park City 84098\r
+ US\r
+\r
+28-BE-F3 (hex) FUJIAN STAR-NET COMMUNICATION CO.,LTD\r
+28BEF3 (base 16) FUJIAN STAR-NET COMMUNICATION CO.,LTD\r
+ 19-22# Building, Star-net Science Plaza, Juyuanzhou,\r
+ FUZHOU FUJIAN 350002\r
+ CN\r
+\r
+E0-CB-19 (hex) Nokia\r
+E0CB19 (base 16) Nokia\r
+ 600 March Road\r
+ Kanata Ontario K2K 2E6\r
+ CA\r
+\r
+94-98-8F (hex) Sagemcom Broadband SAS\r
+94988F (base 16) Sagemcom Broadband SAS\r
+ 250, route de l'Empereur\r
+ Rueil Malmaison Cedex hauts de seine 92848\r
+ FR\r
+\r
+F0-7B-65 (hex) Sagemcom Broadband SAS\r
+F07B65 (base 16) Sagemcom Broadband SAS\r
+ 250, route de l'Empereur\r
+ Rueil Malmaison Cedex hauts de seine 92848\r
+ FR\r
+\r
94-DF-34 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
94DF34 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
Wuhan Hubei 430074\r
CN\r
\r
-28-BE-F3 (hex) FUJIAN STAR-NET COMMUNICATION CO.,LTD\r
-28BEF3 (base 16) FUJIAN STAR-NET COMMUNICATION CO.,LTD\r
- 19-22# Building, Star-net Science Plaza, Juyuanzhou,\r
- FUZHOU FUJIAN 350002\r
- CN\r
+24-E4-CE (hex) Kaonmedia CO., LTD.\r
+24E4CE (base 16) Kaonmedia CO., LTD.\r
+ 884-3, Seongnam-daero, Bundang-gu\r
+ Seongnam-si Gyeonggi-do 13517\r
+ KR\r
\r
-68-85-A4 (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD\r
-6885A4 (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD\r
- NO.18 HAIBIN ROAD,\r
- DONG GUAN GUANG DONG 523860\r
+B0-21-6F (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+B0216F (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
CN\r
\r
+84-5A-3E (hex) Cisco Systems, Inc\r
+845A3E (base 16) Cisco Systems, Inc\r
+ 80 West Tasman Drive\r
+ San Jose CA 94568\r
+ US\r
+\r
E8-B5-D0 (hex) Dell Inc.\r
E8B5D0 (base 16) Dell Inc.\r
One Dell Way\r
Round Rock TX 78682\r
US\r
\r
-B0-21-6F (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
-B0216F (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
- Dongguan 523808\r
+68-85-A4 (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD\r
+6885A4 (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD\r
+ NO.18 HAIBIN ROAD,\r
+ DONG GUAN GUANG DONG 523860\r
CN\r
\r
+B4-56-FA (hex) IOPSYS Software Solutions\r
+B456FA (base 16) IOPSYS Software Solutions\r
+ Krukmakargatan 21\r
+ Stockholm Stockholm 118 51\r
+ SE\r
+\r
68-F6-3B (hex) Amazon Technologies Inc.\r
68F63B (base 16) Amazon Technologies Inc.\r
P.O Box 8102 \r
Reno NV 89507\r
US\r
\r
-84-5A-3E (hex) Cisco Systems, Inc\r
-845A3E (base 16) Cisco Systems, Inc\r
- 80 West Tasman Drive\r
- San Jose CA 94568\r
- US\r
-\r
-E0-CB-19 (hex) Nokia\r
-E0CB19 (base 16) Nokia\r
- 600 March Road\r
- Kanata Ontario K2K 2E6\r
- CA\r
-\r
80-C4-5D (hex) IPG Laser GmbH\r
80C45D (base 16) IPG Laser GmbH\r
Carl-Benz-Strasse 28\r
Burbach 57299\r
DE\r
\r
-B4-56-FA (hex) IOPSYS Software Solutions\r
-B456FA (base 16) IOPSYS Software Solutions\r
- Krukmakargatan 21\r
- Stockholm Stockholm 118 51\r
+68-EC-8A (hex) IKEA of Sweden AB\r
+68EC8A (base 16) IKEA of Sweden AB\r
+ Box 72\r
+ Älmhult 343 81\r
SE\r
\r
E8-F8-D0 (hex) Nokia Shanghai Bell Co., Ltd.\r
REDMOND WA 98052\r
US\r
\r
+18-4A-53 (hex) Apple, Inc.\r
+184A53 (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
+10-9F-41 (hex) Apple, Inc.\r
+109F41 (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
+70-72-FE (hex) Apple, Inc.\r
+7072FE (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
+90-A7-BF (hex) EM Microelectronic\r
+90A7BF (base 16) EM Microelectronic\r
+ Rue des Sors 3\r
+ Marin-Epagnier Neuchatel 2074\r
+ CH\r
+\r
+10-55-E4 (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
+1055E4 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
+ 4F,Block A, Skyworth?Building,\r
+ Shenzhen Guangdong 518057\r
+ CN\r
+\r
+04-CE-09 (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
+04CE09 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
+ 4F,Block A, Skyworth?Building,\r
+ Shenzhen Guangdong 518057\r
+ CN\r
+\r
+40-67-9B (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
+40679B (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
+ 4F,Block A, Skyworth?Building,\r
+ Shenzhen Guangdong 518057\r
+ CN\r
+\r
+24-E8-E5 (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
+24E8E5 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
+ 4F,Block A, Skyworth?Building,\r
+ Shenzhen Guangdong 518057\r
+ CN\r
+\r
+04-AB-08 (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
+04AB08 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
+ 4F,Block A, Skyworth?Building,\r
+ Shenzhen Guangdong 518057\r
+ CN\r
+\r
+C0-68-CC (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
+C068CC (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
+ 4F,Block A, Skyworth?Building,\r
+ Shenzhen Guangdong 518057\r
+ CN\r
+\r
+80-EE-25 (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
+80EE25 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
+ 4F,Block A, Skyworth?Building,\r
+ Shenzhen Guangdong 518057\r
+ CN\r
+\r
+84-88-E1 (hex) Apple, Inc.\r
+8488E1 (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
+10-BD-3A (hex) Apple, Inc.\r
+10BD3A (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
+2C-C2-53 (hex) Apple, Inc.\r
+2CC253 (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
+90-3C-1D (hex) HISENSE VISUAL TECHNOLOGY CO.,LTD\r
+903C1D (base 16) HISENSE VISUAL TECHNOLOGY CO.,LTD\r
+ Qianwangang Road 218\r
+ Qingdao Shandong 266510\r
+ CN\r
+\r
+BC-F4-99 (hex) Rockwell Automation\r
+BCF499 (base 16) Rockwell Automation\r
+ 1 Allen-Bradley Dr.\r
+ Mayfield Heights OH 44124-6118\r
+ US\r
+\r
+8C-F3-E7 (hex) solidotech\r
+8CF3E7 (base 16) solidotech\r
+ No.1 Dongji Avenue, Jiangning District, Nanjing, Jiangsu Province, China\r
+ Nanjing Jiangsu Province 211153\r
+ CN\r
+\r
+D4-52-C7 (hex) Beijing L&S Lancom Platform Tech. Co., Ltd.\r
+D452C7 (base 16) Beijing L&S Lancom Platform Tech. Co., Ltd.\r
+ 901,floor 9, jelly loft, building 28, yard 9, Huinan Road, Changping District.\r
+ Beijing 102208\r
+ CN\r
+\r
+D4-E9-5E (hex) Texas Instruments\r
+D4E95E (base 16) Texas Instruments\r
+ 12500 TI Blvd\r
+ Dallas TX 75243\r
+ US\r
+\r
+10-15-C1 (hex) Zhanzuo (Beijing) Technology Co., Ltd.\r
+1015C1 (base 16) Zhanzuo (Beijing) Technology Co., Ltd.\r
+ Room 313-2511, 3rd Floor, Shanshui Building, No. 3, Gulou East Street, Miyun District\r
+ Beijing 101500\r
+ CN\r
+\r
F8-D0-27 (hex) Seiko Epson Corporation\r
F8D027 (base 16) Seiko Epson Corporation\r
2070 Kotobuki Koaka\r
Kowloon Bay Hong Kong 0000\r
HK\r
\r
-1C-88-0C (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
-1C880C (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
- 4F,Block A, Skyworth?Building,\r
- Shenzhen Guangdong 518057\r
- CN\r
-\r
EC-35-4D (hex) Wingtech Mobile Communications Co.,Ltd\r
EC354D (base 16) Wingtech Mobile Communications Co.,Ltd\r
No.777,Yazhong Road,Nanhu District\r
Mayfield Heights OH 44124-6118\r
US\r
\r
-34-85-11 (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
-348511 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
- 4F,Block A, Skyworth?Building,\r
- Shenzhen Guangdong 518057\r
- CN\r
-\r
20-1F-54 (hex) Raisecom Technology CO., LTD\r
201F54 (base 16) Raisecom Technology CO., LTD\r
No. 11, East Area, No. 10 Block, East Xibeiwang Road\r
Dongguan Guangdong 523860\r
CN\r
\r
-F8-B8-B4 (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
-F8B8B4 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
- 4F,Block A, Skyworth?Building,\r
- Shenzhen Guangdong 518057\r
- CN\r
-\r
B0-FB-DD (hex) Shenzhen SuperElectron Technology Co.,Ltd.\r
B0FBDD (base 16) Shenzhen SuperElectron Technology Co.,Ltd.\r
1213-1214, haosheng business center, dongbin road, nanshan street, nanshan district, shenzhen city\r
Gruenwald Bavaria 82031\r
DE\r
\r
-68-1A-A4 (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
-681AA4 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
- 4F,Block A, Skyworth?Building,\r
- Shenzhen Guangdong 518057\r
- CN\r
-\r
D8-54-82 (hex) Oxit, LLC\r
D85482 (base 16) Oxit, LLC\r
3131 Westinghouse Blvd\r
Beijing Haidian District 100011\r
CN\r
\r
-48-55-5E (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
-48555E (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
- 4F,Block A, Skyworth?Building,\r
- Shenzhen Guangdong 518057\r
- CN\r
-\r
B0-EB-7F (hex) Juniper Networks\r
B0EB7F (base 16) Juniper Networks\r
1133 Innovation Way\r
Laziska Gorne Slaskie 43-173\r
PL\r
\r
+FC-31-5D (hex) Apple, Inc.\r
+FC315D (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
74-A6-CD (hex) Apple, Inc.\r
74A6CD (base 16) Apple, Inc.\r
1 Infinite Loop\r
Cupertino CA 95014\r
US\r
\r
-88-74-77 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
-887477 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
- Dongguan 523808\r
- CN\r
-\r
-FC-31-5D (hex) Apple, Inc.\r
-FC315D (base 16) Apple, Inc.\r
- 1 Infinite Loop\r
- Cupertino CA 95014\r
- US\r
-\r
3C-BC-D0 (hex) zte corporation\r
3CBCD0 (base 16) zte corporation\r
12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China\r
Stockholm SE-164 80\r
SE\r
\r
-3C-3B-4D (hex) Toyo Seisakusho Kaisha, Limited\r
-3C3B4D (base 16) Toyo Seisakusho Kaisha, Limited\r
- 2-4-6 Honjyo\r
- Higashi-Osaka Osaka 578-0953\r
- JP\r
+88-74-77 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+887477 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
\r
28-B8-29 (hex) Juniper Networks\r
28B829 (base 16) Juniper Networks\r
Sunnyvale CA 94089\r
US\r
\r
+D0-A9-D3 (hex) EM Microelectronic\r
+D0A9D3 (base 16) EM Microelectronic\r
+ Rue des Sors 3\r
+ Marin-Epagnier Neuchatel 2074\r
+ CH\r
+\r
14-DD-02 (hex) Liangang Optoelectronic Technology CO., Ltd.\r
14DD02 (base 16) Liangang Optoelectronic Technology CO., Ltd.\r
150 JingHai West Road,ShaQu Village ShaTou Area,ChangAn Town\r
DongGuan GuangDong 523846\r
CN\r
\r
-60-C7-27 (hex) Digiboard Eletronica da Amazonia Ltda\r
-60C727 (base 16) Digiboard Eletronica da Amazonia Ltda\r
- 1111-A Matrinxa\r
- Manaus Amazonia 69075-150\r
- BR\r
-\r
D0-39-FA (hex) Samsung Electronics Co.,Ltd\r
D039FA (base 16) Samsung Electronics Co.,Ltd\r
#94-1, Imsoo-Dong\r
Wuhan Hubei 430074\r
CN\r
\r
+60-C7-27 (hex) Digiboard Eletronica da Amazonia Ltda\r
+60C727 (base 16) Digiboard Eletronica da Amazonia Ltda\r
+ 1111-A Matrinxa\r
+ Manaus Amazonia 69075-150\r
+ BR\r
+\r
48-31-DB (hex) Huawei Device Co., Ltd.\r
4831DB (base 16) Huawei Device Co., Ltd.\r
No.2 of Xincheng Road, Songshan Lake Zone\r
Dongguan Guangdong 523808\r
CN\r
\r
-D0-A9-D3 (hex) EM Microelectronic\r
-D0A9D3 (base 16) EM Microelectronic\r
- Rue des Sors 3\r
- Marin-Epagnier Neuchatel 2074\r
- CH\r
+3C-3B-4D (hex) Toyo Seisakusho Kaisha, Limited\r
+3C3B4D (base 16) Toyo Seisakusho Kaisha, Limited\r
+ 2-4-6 Honjyo\r
+ Higashi-Osaka Osaka 578-0953\r
+ JP\r
\r
14-7F-0F (hex) Texas Instruments\r
147F0F (base 16) Texas Instruments\r
Dallas TX 75243\r
US\r
\r
-20-5F-3D (hex) Adtran Inc\r
-205F3D (base 16) Adtran Inc\r
- Victory House, Vision Park, Chivers Way, Histon\r
- Cambridge CB24 9ZR\r
- GB\r
-\r
00-92-A5 (hex) LG Innotek\r
0092A5 (base 16) LG Innotek\r
26, Hanamsandan 5beon-ro\r
Shenzhen Guangdong 518057\r
CN\r
\r
+04-F7-78 (hex) Sony Interactive Entertainment Inc.\r
+04F778 (base 16) Sony Interactive Entertainment Inc.\r
+ 1-7-1 Konan\r
+ Minato-ku Tokyo 108-0075\r
+ JP\r
+\r
+90-31-4B (hex) AltoBeam Inc.\r
+90314B (base 16) AltoBeam Inc.\r
+ B808, Tsinghua Tongfang Hi-Tech Plaza, Haidian\r
+ Beijing Beijing 100083\r
+ CN\r
+\r
+20-5F-3D (hex) Adtran Inc\r
+205F3D (base 16) Adtran Inc\r
+ Victory House, Vision Park, Chivers Way, Histon\r
+ Cambridge CB24 9ZR\r
+ GB\r
+\r
+34-7D-E4 (hex) SHENZHEN BILIAN ELECTRONIC CO.,LTD\r
+347DE4 (base 16) SHENZHEN BILIAN ELECTRONIC CO.,LTD\r
+ NO.268? Fuqian Rd, Jutang community, Guanlan Town, Longhua New district\r
+ shenzhen guangdong 518000\r
+ CN\r
+\r
+CC-CF-83 (hex) CIG SHANGHAI CO LTD\r
+CCCF83 (base 16) CIG SHANGHAI CO LTD\r
+ 5th Floor, Building 8 No 2388 Chenhang Road \r
+ SHANGHAI 201114\r
+ CN\r
+\r
24-D3-37 (hex) Xiaomi Communications Co Ltd\r
24D337 (base 16) Xiaomi Communications Co Ltd\r
#019, 9th Floor, Building 6, 33 Xi'erqi Middle Road\r
München Bavaria D-81541\r
DE\r
\r
-04-F7-78 (hex) Sony Interactive Entertainment Inc.\r
-04F778 (base 16) Sony Interactive Entertainment Inc.\r
- 1-7-1 Konan\r
- Minato-ku Tokyo 108-0075\r
- JP\r
+10-CF-0F (hex) Apple, Inc.\r
+10CF0F (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
\r
-90-31-4B (hex) AltoBeam Inc.\r
-90314B (base 16) AltoBeam Inc.\r
- B808, Tsinghua Tongfang Hi-Tech Plaza, Haidian\r
- Beijing Beijing 100083\r
- CN\r
+1C-CA-41 (hex) AO \r
+1CCA41 (base 16) AO \r
+ Verhnyaya Krasnoselskaya, 11A, building 3, fl. 3, cab. 8.\r
+ Moscow 107140\r
+ RU\r
\r
30-40-74 (hex) zte corporation\r
304074 (base 16) zte corporation\r
Hangzhou Zhejiang 310052\r
CN\r
\r
-34-7D-E4 (hex) SHENZHEN BILIAN ELECTRONIC CO.,LTD\r
-347DE4 (base 16) SHENZHEN BILIAN ELECTRONIC CO.,LTD\r
- NO.268? Fuqian Rd, Jutang community, Guanlan Town, Longhua New district\r
- shenzhen guangdong 518000\r
- CN\r
-\r
-CC-CF-83 (hex) CIG SHANGHAI CO LTD\r
-CCCF83 (base 16) CIG SHANGHAI CO LTD\r
- 5th Floor, Building 8 No 2388 Chenhang Road \r
- SHANGHAI 201114\r
- CN\r
-\r
FC-A0-F3 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
FCA0F3 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
Dongguan 523808\r
CN\r
\r
-10-CF-0F (hex) Apple, Inc.\r
-10CF0F (base 16) Apple, Inc.\r
- 1 Infinite Loop\r
- Cupertino CA 95014\r
- US\r
-\r
-1C-CA-41 (hex) AO \r
-1CCA41 (base 16) AO \r
- Verhnyaya Krasnoselskaya, 11A, building 3, fl. 3, cab. 8.\r
- Moscow 107140\r
- RU\r
-\r
-14-0F-A6 (hex) Renesas Electronics (Penang) Sdn. Bhd.\r
-140FA6 (base 16) Renesas Electronics (Penang) Sdn. Bhd.\r
- Phase 3, Bayan Lepas FIZ\r
- Bayan Lepas Penang 11900\r
- MY\r
-\r
-00-50-C4 (hex) IMD\r
-0050C4 (base 16) IMD\r
- Dornierstr. 4\r
- Puchheim 82178\r
- DE\r
-\r
14-84-73 (hex) Cisco Systems, Inc\r
148473 (base 16) Cisco Systems, Inc\r
80 West Tasman Drive\r
Zürich Zürich 8004\r
CH\r
\r
+A4-C2-3E (hex) Huizhou Speed Wireless Technology Co.,Ltd\r
+A4C23E (base 16) Huizhou Speed Wireless Technology Co.,Ltd\r
+ 138 Huize Avenue, Shangxia District\r
+ Dongjiang Hi tech Industrial Park, Shuikou Huizhou, Guangdong 516000\r
+ CN\r
+\r
+14-0F-A6 (hex) Renesas Electronics (Penang) Sdn. Bhd.\r
+140FA6 (base 16) Renesas Electronics (Penang) Sdn. Bhd.\r
+ Phase 3, Bayan Lepas FIZ\r
+ Bayan Lepas Penang 11900\r
+ MY\r
+\r
+00-50-C4 (hex) IMD\r
+0050C4 (base 16) IMD\r
+ Dornierstr. 4\r
+ Puchheim 82178\r
+ DE\r
+\r
+7C-45-F9 (hex) IEEE Registration Authority\r
+7C45F9 (base 16) IEEE Registration Authority\r
+ 445 Hoes Lane\r
+ Piscataway NJ 08554\r
+ US\r
+\r
AC-E0-D6 (hex) koreabts\r
ACE0D6 (base 16) koreabts\r
362-11, Jongga-ro, Jung-gu, Ulsan, Republic of Korea\r
Changsha HUNAN 410329\r
CN\r
\r
-A4-C2-3E (hex) Huizhou Speed Wireless Technology Co.,Ltd\r
-A4C23E (base 16) Huizhou Speed Wireless Technology Co.,Ltd\r
- 138 Huize Avenue, Shangxia District\r
- Dongjiang Hi tech Industrial Park, Shuikou Huizhou, Guangdong 516000\r
- CN\r
-\r
BC-73-A4 (hex) ANDA TELECOM PVT LTD\r
BC73A4 (base 16) ANDA TELECOM PVT LTD\r
E-36 Amar Colony, Lajpat Nagar, New Delhi\r
Hsinchu City Hsinchu 30071\r
TW\r
\r
-7C-45-F9 (hex) IEEE Registration Authority\r
-7C45F9 (base 16) IEEE Registration Authority\r
- 445 Hoes Lane\r
- Piscataway NJ 08554\r
- US\r
+00-1A-A6 (hex) Elbit Systems Deutschland GmbH & Co. KG\r
+001AA6 (base 16) Elbit Systems Deutschland GmbH & Co. KG\r
+ Eberhard-Finckh-Strasse 55\r
+ Ulm Baden-Wurttemberg 89075\r
+ DE\r
+\r
+60-FA-B1 (hex) Kempower Oyj\r
+60FAB1 (base 16) Kempower Oyj\r
+ Ala-Okeroistentie 29\r
+ Lahti 15700\r
+ FI\r
\r
E8-97-B8 (hex) Chiun Mai Communication System, Inc\r
E897B8 (base 16) Chiun Mai Communication System, Inc\r
chengdu 610000\r
CN\r
\r
-60-FA-B1 (hex) Kempower Oyj\r
-60FAB1 (base 16) Kempower Oyj\r
- Ala-Okeroistentie 29\r
- Lahti 15700\r
- FI\r
+C8-78-7D (hex) D-Link Corporation\r
+C8787D (base 16) D-Link Corporation\r
+ No.289, Sinhu 3rd Rd., Neihu District, \r
+ Taipei City 114\r
+ TW\r
\r
8C-E0-42 (hex) vivo Mobile Communication Co., Ltd.\r
8CE042 (base 16) vivo Mobile Communication Co., Ltd.\r
Qingdao 266000\r
CN\r
\r
-00-1A-A6 (hex) Elbit Systems Deutschland GmbH & Co. KG\r
-001AA6 (base 16) Elbit Systems Deutschland GmbH & Co. KG\r
- Eberhard-Finckh-Strasse 55\r
- Ulm Baden-Wurttemberg 89075\r
- DE\r
+94-2A-6F (hex) Ubiquiti Inc\r
+942A6F (base 16) Ubiquiti Inc\r
+ 685 Third Avenue, 27th Floor\r
+ New York NY New York NY 10017\r
+ US\r
\r
-C8-78-7D (hex) D-Link Corporation\r
-C8787D (base 16) D-Link Corporation\r
- No.289, Sinhu 3rd Rd., Neihu District, \r
- Taipei City 114\r
- TW\r
+F4-E2-C6 (hex) Ubiquiti Inc\r
+F4E2C6 (base 16) Ubiquiti Inc\r
+ 685 Third Avenue, 27th Floor\r
+ New York NY New York NY 10017\r
+ US\r
+\r
+D8-B3-70 (hex) Ubiquiti Inc\r
+D8B370 (base 16) Ubiquiti Inc\r
+ 685 Third Avenue, 27th Floor\r
+ New York NY New York NY 10017\r
+ US\r
\r
B0-A7-32 (hex) Espressif Inc.\r
B0A732 (base 16) Espressif Inc.\r
Shanghai Shanghai 201203\r
CN\r
\r
-54-02-95 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
-540295 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
- Dongguan 523808\r
- CN\r
-\r
B4-FB-E4 (hex) Ubiquiti Inc\r
B4FBE4 (base 16) Ubiquiti Inc\r
685 Third Avenue, 27th Floor\r
New York NY New York NY 10017\r
US\r
\r
-E0-9B-27 (hex) Ciena Corporation\r
-E09B27 (base 16) Ciena Corporation\r
- 7035 Ridge Road\r
- Hanover MD 21076\r
- US\r
-\r
68-72-51 (hex) Ubiquiti Inc\r
687251 (base 16) Ubiquiti Inc\r
685 Third Avenue, 27th Floor\r
New York NY New York NY 10017\r
US\r
\r
-94-2A-6F (hex) Ubiquiti Inc\r
-942A6F (base 16) Ubiquiti Inc\r
- 685 Third Avenue, 27th Floor\r
- New York NY New York NY 10017\r
- US\r
-\r
-F4-E2-C6 (hex) Ubiquiti Inc\r
-F4E2C6 (base 16) Ubiquiti Inc\r
- 685 Third Avenue, 27th Floor\r
- New York NY New York NY 10017\r
- US\r
-\r
-D8-B3-70 (hex) Ubiquiti Inc\r
-D8B370 (base 16) Ubiquiti Inc\r
- 685 Third Avenue, 27th Floor\r
- New York NY New York NY 10017\r
- US\r
-\r
-F4-12-DA (hex) zte corporation\r
-F412DA (base 16) zte corporation\r
- 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China\r
- shenzhen guangdong 518057\r
+54-02-95 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+540295 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
CN\r
\r
FC-EC-DA (hex) Ubiquiti Inc\r
New York NY New York NY 10017\r
US\r
\r
-C0-48-84 (hex) Sigma Bilisim Sist. Tekn. Elk. Enj. ve San. D??. Tic. Ltd. ?ti.\r
-C04884 (base 16) Sigma Bilisim Sist. Tekn. Elk. Enj. ve San. D??. Tic. Ltd. ?ti.\r
- CEV?ZL?DERE MAH. 1226. SOK. NO:14/1 AYTUNA APT. \r
- ANKARA 06520\r
- TR\r
+E0-9B-27 (hex) Ciena Corporation\r
+E09B27 (base 16) Ciena Corporation\r
+ 7035 Ridge Road\r
+ Hanover MD 21076\r
+ US\r
\r
40-F2-1C (hex) DZS Inc.\r
40F21C (base 16) DZS Inc.\r
Hannover 30179\r
DE\r
\r
-00-A0-1B (hex) DZS Inc.\r
-00A01B (base 16) DZS Inc.\r
- 48664 MILMONT DRIVE\r
- FREMONT CA 94538\r
- US\r
+F4-12-DA (hex) zte corporation\r
+F412DA (base 16) zte corporation\r
+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China\r
+ shenzhen guangdong 518057\r
+ CN\r
\r
C0-2C-17 (hex) Cisco Systems, Inc\r
C02C17 (base 16) Cisco Systems, Inc\r
San Jose CA 94568\r
US\r
\r
-98-49-25 (hex) Juniper Networks\r
-984925 (base 16) Juniper Networks\r
- 1133 Innovation Way\r
- Sunnyvale CA 94089\r
- US\r
-\r
-7C-BF-AE (hex) Renesas Electronics (Penang) Sdn. Bhd.\r
-7CBFAE (base 16) Renesas Electronics (Penang) Sdn. Bhd.\r
- Phase 3, Bayan Lepas FIZ\r
- Bayan Lepas Penang 11900\r
- MY\r
-\r
-80-AF-CA (hex) Shenzhen Cudy Technology Co., Ltd.\r
-80AFCA (base 16) Shenzhen Cudy Technology Co., Ltd.\r
- Room A606, Gaoxinqi Industrial Park, Baoan 67 Dist\r
- Baoan 67 District, Shenzhen 518101\r
- CN\r
-\r
-B4-17-A8 (hex) Meta Platforms Technologies, LLC\r
-B417A8 (base 16) Meta Platforms Technologies, LLC\r
- 1 Hacker Way\r
- Menlo Park CA 94025\r
- US\r
-\r
-1C-6E-74 (hex) EnOcean Edge Inc.\r
-1C6E74 (base 16) EnOcean Edge Inc.\r
- 8184 S. Highland Dr. Ste C5\r
- Sandy UT 84093\r
- US\r
-\r
04-47-2A (hex) Palo Alto Networks\r
04472A (base 16) Palo Alto Networks\r
3000 Tannery Way\r
Santa Clara CA 95054\r
US\r
\r
+98-49-25 (hex) Juniper Networks\r
+984925 (base 16) Juniper Networks\r
+ 1133 Innovation Way\r
+ Sunnyvale CA 94089\r
+ US\r
+\r
D0-93-95 (hex) IEEE Registration Authority\r
D09395 (base 16) IEEE Registration Authority\r
445 Hoes Lane\r
Piscataway NJ 08554\r
US\r
\r
+00-A0-1B (hex) DZS Inc.\r
+00A01B (base 16) DZS Inc.\r
+ 48664 MILMONT DRIVE\r
+ FREMONT CA 94538\r
+ US\r
+\r
44-63-70 (hex) LCFC(Hefei) Electronics Technology Co., Ltd\r
446370 (base 16) LCFC(Hefei) Electronics Technology Co., Ltd\r
No.3188-1,YunGu Road(Comprehensive Bonded Zone),Hefei Economic and Technological Development Area\r
HEFEI ANHUI 230601\r
CN\r
\r
-C0-95-73 (hex) AIxLink\r
-C09573 (base 16) AIxLink\r
- Office 2702, Unit3, Building 1, Shudu Center Phase II. 333 Jiqing Third Road. High-Tech Zone\r
- Chegndu Sichuan 610041\r
+C0-48-84 (hex) Sigma Bilisim Sist. Tekn. Elk. Enj. ve San. D??. Tic. Ltd. ?ti.\r
+C04884 (base 16) Sigma Bilisim Sist. Tekn. Elk. Enj. ve San. D??. Tic. Ltd. ?ti.\r
+ CEV?ZL?DERE MAH. 1226. SOK. NO:14/1 AYTUNA APT. \r
+ ANKARA 06520\r
+ TR\r
+\r
+80-AF-CA (hex) Shenzhen Cudy Technology Co., Ltd.\r
+80AFCA (base 16) Shenzhen Cudy Technology Co., Ltd.\r
+ Room A606, Gaoxinqi Industrial Park, Baoan 67 Dist\r
+ Baoan 67 District, Shenzhen 518101\r
CN\r
\r
+1C-6E-74 (hex) EnOcean Edge Inc.\r
+1C6E74 (base 16) EnOcean Edge Inc.\r
+ 8184 S. Highland Dr. Ste C5\r
+ Sandy UT 84093\r
+ US\r
+\r
+7C-BF-AE (hex) Renesas Electronics (Penang) Sdn. Bhd.\r
+7CBFAE (base 16) Renesas Electronics (Penang) Sdn. Bhd.\r
+ Phase 3, Bayan Lepas FIZ\r
+ Bayan Lepas Penang 11900\r
+ MY\r
+\r
7C-89-31 (hex) Huawei Device Co., Ltd.\r
7C8931 (base 16) Huawei Device Co., Ltd.\r
No.2 of Xincheng Road, Songshan Lake Zone\r
Dongguan Guangdong 523808\r
CN\r
\r
+B4-17-A8 (hex) Meta Platforms Technologies, LLC\r
+B417A8 (base 16) Meta Platforms Technologies, LLC\r
+ 1 Hacker Way\r
+ Menlo Park CA 94025\r
+ US\r
+\r
7C-ED-C6 (hex) Amazon Technologies Inc.\r
7CEDC6 (base 16) Amazon Technologies Inc.\r
P.O Box 8102 \r
Belleville MI 48111\r
US\r
\r
+C0-95-73 (hex) AIxLink\r
+C09573 (base 16) AIxLink\r
+ Office 2702, Unit3, Building 1, Shudu Center Phase II. 333 Jiqing Third Road. High-Tech Zone\r
+ Chegndu Sichuan 610041\r
+ CN\r
+\r
94-CB-CD (hex) zte corporation\r
94CBCD (base 16) zte corporation\r
12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China\r
Huizhou Guangdong 516025\r
CN\r
\r
-A8-3A-79 (hex) Mist Systems, Inc.\r
-A83A79 (base 16) Mist Systems, Inc.\r
- 1601 South De Anza Blvd, Suite 248\r
- Cupertino CA 95014\r
- US\r
-\r
-54-88-FE (hex) Xiaoniu network technology (Shanghai) Co., Ltd.\r
-5488FE (base 16) Xiaoniu network technology (Shanghai) Co., Ltd.\r
- Room 706, building 3, no.20 east road, jingan district.\r
- Shang hai 200040\r
- CN\r
-\r
-F4-D5-80 (hex) YAMAHA CORPORATION\r
-F4D580 (base 16) YAMAHA CORPORATION\r
- 10-1 Nakazawa-cho, Naka-ku\r
- Hamamatsu Shizuoka 430-8650\r
- JP\r
-\r
CC-62-FE (hex) UNION MAN TECHNOLOGY CO.,LTD\r
CC62FE (base 16) UNION MAN TECHNOLOGY CO.,LTD\r
No.5,Huitai Road,Huinan High-Tech Park,Huiao Highway\r
Huizhou Guangdong 516025\r
CN\r
\r
-A8-52-D4 (hex) Aruba, a Hewlett Packard Enterprise Company\r
-A852D4 (base 16) Aruba, a Hewlett Packard Enterprise Company\r
- 3333 Scott Blvd\r
- Santa Clara CA 95054\r
- US\r
-\r
-F4-EE-08 (hex) Dell Inc.\r
-F4EE08 (base 16) Dell Inc.\r
- One Dell Way\r
- Round Rock TX 78682\r
- US\r
-\r
-90-8D-6E (hex) Dell Inc.\r
-908D6E (base 16) Dell Inc.\r
- One Dell Way\r
- Round Rock TX 78682\r
+A8-3A-79 (hex) Mist Systems, Inc.\r
+A83A79 (base 16) Mist Systems, Inc.\r
+ 1601 South De Anza Blvd, Suite 248\r
+ Cupertino CA 95014\r
US\r
\r
EC-2A-72 (hex) Dell Inc.\r
Round Rock TX 78682\r
US\r
\r
-C4-CB-E1 (hex) Dell Inc.\r
-C4CBE1 (base 16) Dell Inc.\r
+A8-52-D4 (hex) Aruba, a Hewlett Packard Enterprise Company\r
+A852D4 (base 16) Aruba, a Hewlett Packard Enterprise Company\r
+ 3333 Scott Blvd\r
+ Santa Clara CA 95054\r
+ US\r
+\r
+54-88-FE (hex) Xiaoniu network technology (Shanghai) Co., Ltd.\r
+5488FE (base 16) Xiaoniu network technology (Shanghai) Co., Ltd.\r
+ Room 706, building 3, no.20 east road, jingan district.\r
+ Shang hai 200040\r
+ CN\r
+\r
+F4-EE-08 (hex) Dell Inc.\r
+F4EE08 (base 16) Dell Inc.\r
+ One Dell Way\r
+ Round Rock TX 78682\r
+ US\r
+\r
+90-8D-6E (hex) Dell Inc.\r
+908D6E (base 16) Dell Inc.\r
One Dell Way\r
Round Rock TX 78682\r
US\r
\r
+F4-D5-80 (hex) YAMAHA CORPORATION\r
+F4D580 (base 16) YAMAHA CORPORATION\r
+ 10-1 Nakazawa-cho, Naka-ku\r
+ Hamamatsu Shizuoka 430-8650\r
+ JP\r
+\r
+38-B5-C9 (hex) INGRAM MICRO SERVICES\r
+38B5C9 (base 16) INGRAM MICRO SERVICES\r
+ 100 CHEMIN DE BAILLOT\r
+ MONTAUBAN 82000\r
+ FR\r
+\r
84-4D-BE (hex) Fiberhome Telecommunication Technologies Co.,LTD\r
844DBE (base 16) Fiberhome Telecommunication Technologies Co.,LTD\r
No.5 DongXin Road\r
Wuhan Hubei 430074\r
CN\r
\r
-AC-FF-6B (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
-ACFF6B (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
- Dongguan 523808\r
- CN\r
+80-B9-46 (hex) Nokia\r
+80B946 (base 16) Nokia\r
+ 600 March Road\r
+ Kanata Ontario K2K 2E6\r
+ CA\r
\r
98-4B-06 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
984B06 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
Dongguan 523808\r
CN\r
\r
-80-B9-46 (hex) Nokia\r
-80B946 (base 16) Nokia\r
- 600 March Road\r
- Kanata Ontario K2K 2E6\r
- CA\r
-\r
-38-B5-C9 (hex) INGRAM MICRO SERVICES\r
-38B5C9 (base 16) INGRAM MICRO SERVICES\r
- 100 CHEMIN DE BAILLOT\r
- MONTAUBAN 82000\r
- FR\r
+AC-FF-6B (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+ACFF6B (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
\r
38-AB-16 (hex) NPO RTT LLC\r
38AB16 (base 16) NPO RTT LLC\r
Moscow Select State 115172\r
RU\r
\r
+C4-CB-E1 (hex) Dell Inc.\r
+C4CBE1 (base 16) Dell Inc.\r
+ One Dell Way\r
+ Round Rock TX 78682\r
+ US\r
+\r
2C-D7-FF (hex) LANCOM Systems GmbH\r
2CD7FF (base 16) LANCOM Systems GmbH\r
Adenauer Straße 20 /B2\r
Würselen 52146\r
DE\r
\r
+1C-88-0C (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
+1C880C (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
+ 4F,Block A, Skyworth?Building,\r
+ Shenzhen Guangdong 518057\r
+ CN\r
+\r
+34-85-11 (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
+348511 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
+ 4F,Block A, Skyworth?Building,\r
+ Shenzhen Guangdong 518057\r
+ CN\r
+\r
+28-C1-A0 (hex) Apple, Inc.\r
+28C1A0 (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
+EC-2C-73 (hex) Apple, Inc.\r
+EC2C73 (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
+7C-C0-6F (hex) Apple, Inc.\r
+7CC06F (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
+B0-97-38 (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
+B09738 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
+ 4F,Block A, Skyworth?Building,\r
+ Shenzhen Guangdong 518057\r
+ CN\r
+\r
+EC-81-50 (hex) Apple, Inc.\r
+EC8150 (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
+D4-2F-CA (hex) Apple, Inc.\r
+D42FCA (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
+D0-58-A5 (hex) Apple, Inc.\r
+D058A5 (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
+2C-67-AB (hex) EZELINK TELECOM\r
+2C67AB (base 16) EZELINK TELECOM\r
+ Bay Square Building 06 - Office No 105\r
+ Dubai Dubai 111581\r
+ AE\r
+\r
+94-3F-D6 (hex) Apple, Inc.\r
+943FD6 (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
+70-06-92 (hex) IEEE Registration Authority\r
+700692 (base 16) IEEE Registration Authority\r
+ 445 Hoes Lane\r
+ Piscataway NJ 08554\r
+ US\r
+\r
+F8-B8-B4 (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
+F8B8B4 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
+ 4F,Block A, Skyworth?Building,\r
+ Shenzhen Guangdong 518057\r
+ CN\r
+\r
+68-1A-A4 (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
+681AA4 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
+ 4F,Block A, Skyworth?Building,\r
+ Shenzhen Guangdong 518057\r
+ CN\r
+\r
+48-55-5E (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
+48555E (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
+ 4F,Block A, Skyworth?Building,\r
+ Shenzhen Guangdong 518057\r
+ CN\r
+\r
+8C-DF-2C (hex) vivo Mobile Communication Co., Ltd.\r
+8CDF2C (base 16) vivo Mobile Communication Co., Ltd.\r
+ No.1, vivo Road, Chang'an\r
+ Dongguan Guangdong 523860\r
+ CN\r
+\r
+CC-B5-4C (hex) Texas Instruments\r
+CCB54C (base 16) Texas Instruments\r
+ 12500 TI Blvd\r
+ Dallas TX 75243\r
+ US\r
+\r
+74-A5-8C (hex) Texas Instruments\r
+74A58C (base 16) Texas Instruments\r
+ 12500 TI Blvd\r
+ Dallas TX 75243\r
+ US\r
+\r
+3C-E0-02 (hex) Texas Instruments\r
+3CE002 (base 16) Texas Instruments\r
+ 12500 TI Blvd\r
+ Dallas TX 75243\r
+ US\r
+\r
+98-03-8A (hex) Texas Instruments\r
+98038A (base 16) Texas Instruments\r
+ 12500 TI Blvd\r
+ Dallas TX 75243\r
+ US\r
+\r
+F8-79-28 (hex) zte corporation\r
+F87928 (base 16) zte corporation\r
+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China\r
+ shenzhen guangdong 518057\r
+ CN\r
+\r
+B8-60-61 (hex) China Mobile Group Device Co.,Ltd.\r
+B86061 (base 16) China Mobile Group Device Co.,Ltd.\r
+ 32 Xuanwumen West Street,Xicheng District\r
+ Beijing 100053\r
+ CN\r
+\r
+D8-8E-D4 (hex) eero inc.\r
+D88ED4 (base 16) eero inc.\r
+ 660 3rd Street\r
+ San Francisco CA 94107\r
+ US\r
+\r
7C-8A-E1 (hex) COMPAL INFORMATION (KUNSHAN) CO., LTD. \r
7C8AE1 (base 16) COMPAL INFORMATION (KUNSHAN) CO., LTD. \r
NO. 25, THE 3RD Street KUNSHAN EXPORT PROCESSING ZONE \r
DONG GUAN GUANG DONG 523860\r
CN\r
\r
-24-BF-74 (hex) Private\r
-24BF74 (base 16) Private\r
-\r
CC-DC-55 (hex) Dragonchip Limited\r
CCDC55 (base 16) Dragonchip Limited\r
Room 601-2, 6/F, IC Development Centre, No. 6 Science Park West Avenue, Hong Kong Science Park, Shatin, N.T.\r
North Point Hong Kong 180\r
HK\r
\r
-78-53-0D (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
-78530D (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
- 4F,Block A, Skyworth?Building,\r
- Shenzhen Guangdong 518057\r
- CN\r
-\r
0C-48-C6 (hex) CELESTICA INC.\r
0C48C6 (base 16) CELESTICA INC.\r
1900-5140 Yonge Street PO Box 42 \r
Shenzhen Guangdong 518055\r
CN\r
\r
-78-5F-36 (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
-785F36 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
- 4F,Block A, Skyworth?Building,\r
- Shenzhen Guangdong 518057\r
- CN\r
-\r
A0-18-42 (hex) Comtrend Corporation\r
A01842 (base 16) Comtrend Corporation\r
3F-1, 10 Lane 609, Chongxin Road, Section 5, \r
Beijing Haidian District 100085\r
CN\r
\r
-94-7F-D8 (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
-947FD8 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
- 4F,Block A, Skyworth?Building,\r
- Shenzhen Guangdong 518057\r
- CN\r
-\r
C8-54-A4 (hex) Infinix mobility limited\r
C854A4 (base 16) Infinix mobility limited\r
RMS 05-15, 13A/F SOUTH TOWER WORLD FINANCE CTR HARBOUR CITY 17 CANTON RD TST KLN HONG KONG\r
Reno NV 89507\r
US\r
\r
-20-89-8A (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
-20898A (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
- 4F,Block A, Skyworth?Building,\r
- Shenzhen Guangdong 518057\r
- CN\r
-\r
DC-A9-56 (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD\r
DCA956 (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD\r
NO.18 HAIBIN ROAD,\r
ShenZhen GuangDong 518109\r
CN\r
\r
-18-AA-1E (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
-18AA1E (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
- 4F,Block A, Skyworth?Building,\r
- Shenzhen Guangdong 518057\r
- CN\r
-\r
9C-31-C3 (hex) SKY UK LIMITED\r
9C31C3 (base 16) SKY UK LIMITED\r
130 Kings Road\r
Sunnyvale CA 94089\r
US\r
\r
-50-3C-CA (hex) TECNO MOBILE LIMITED\r
-503CCA (base 16) TECNO MOBILE LIMITED\r
- ROOMS 05-15, 13A/F., SOUTH TOWER, WORLD FINANCE CENTRE, HARBOUR CITY, 17 CANTON ROAD, TSIM SHA TSUI, KOWLOON, HONG KONG\r
- Hong Kong Hong Kong 999077\r
- HK\r
-\r
-9C-0C-35 (hex) Shenzhenshi Xinzhongxin Technology Co.Ltd\r
-9C0C35 (base 16) Shenzhenshi Xinzhongxin Technology Co.Ltd\r
- Block 3, Dong Huan Industrial Park, Sha Jing Town, Bao’an District, Shenzhen City, Guangdong Province, China\r
- ShenZHEN GuangDong 518104\r
- CN\r
-\r
C8-ED-FC (hex) Shenzhen Ideaform Industrial Product Design Co., Ltd\r
C8EDFC (base 16) Shenzhen Ideaform Industrial Product Design Co., Ltd\r
Room 206, Building A2, Hangcheng Park, Xixiang Street, Bao'an District\r
Shanghai 201206\r
CN\r
\r
-44-3D-54 (hex) Amazon Technologies Inc.\r
-443D54 (base 16) Amazon Technologies Inc.\r
- P.O Box 8102 \r
- Reno NV 89507\r
- US\r
-\r
-54-47-CC (hex) Sagemcom Broadband SAS\r
-5447CC (base 16) Sagemcom Broadband SAS\r
- 250, route de l'Empereur\r
- Rueil Malmaison Cedex hauts de seine 92848\r
- FR\r
-\r
78-D6-D6 (hex) eero inc.\r
78D6D6 (base 16) eero inc.\r
660 3rd Street\r
Taipei City TAIWAN 11087\r
TW\r
\r
-DC-FB-B8 (hex) Meizhou Guo Wei Electronics Co., Ltd\r
-DCFBB8 (base 16) Meizhou Guo Wei Electronics Co., Ltd\r
- AD1 Section, The Economy Development Area, Dongsheng Industrial District, \r
- Meizhou Guangdong Province 514000\r
+9C-0C-35 (hex) Shenzhenshi Xinzhongxin Technology Co.Ltd\r
+9C0C35 (base 16) Shenzhenshi Xinzhongxin Technology Co.Ltd\r
+ Block 3, Dong Huan Industrial Park, Sha Jing Town, Bao’an District, Shenzhen City, Guangdong Province, China\r
+ ShenZHEN GuangDong 518104\r
CN\r
\r
-AC-B1-81 (hex) Belden Mooresville\r
-ACB181 (base 16) Belden Mooresville\r
- 1113 N Main St.\r
- Mooresville 28115\r
+44-3D-54 (hex) Amazon Technologies Inc.\r
+443D54 (base 16) Amazon Technologies Inc.\r
+ P.O Box 8102 \r
+ Reno NV 89507\r
US\r
\r
-AC-E4-03 (hex) Shenzhen Visteng Technology CO.,LTD\r
-ACE403 (base 16) Shenzhen Visteng Technology CO.,LTD\r
- 6F, M7, MaQueLing, Hi-tech Park, Nanshan District\r
- Shenzhen 518000\r
- CN\r
-\r
-60-D0-39 (hex) Apple, Inc.\r
-60D039 (base 16) Apple, Inc.\r
- 1 Infinite Loop\r
- Cupertino CA 95014\r
- US\r
+50-3C-CA (hex) TECNO MOBILE LIMITED\r
+503CCA (base 16) TECNO MOBILE LIMITED\r
+ ROOMS 05-15, 13A/F., SOUTH TOWER, WORLD FINANCE CENTRE, HARBOUR CITY, 17 CANTON ROAD, TSIM SHA TSUI, KOWLOON, HONG KONG\r
+ Hong Kong Hong Kong 999077\r
+ HK\r
\r
-C4-C1-7D (hex) Apple, Inc.\r
-C4C17D (base 16) Apple, Inc.\r
- 1 Infinite Loop\r
- Cupertino CA 95014\r
- US\r
+54-47-CC (hex) Sagemcom Broadband SAS\r
+5447CC (base 16) Sagemcom Broadband SAS\r
+ 250, route de l'Empereur\r
+ Rueil Malmaison Cedex hauts de seine 92848\r
+ FR\r
\r
-E0-BD-A0 (hex) Apple, Inc.\r
-E0BDA0 (base 16) Apple, Inc.\r
- 1 Infinite Loop\r
- Cupertino CA 95014\r
- US\r
+DC-FB-B8 (hex) Meizhou Guo Wei Electronics Co., Ltd\r
+DCFBB8 (base 16) Meizhou Guo Wei Electronics Co., Ltd\r
+ AD1 Section, The Economy Development Area, Dongsheng Industrial District, \r
+ Meizhou Guangdong Province 514000\r
+ CN\r
\r
C4-DB-04 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
C4DB04 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
Cupertino CA 95014\r
US\r
\r
+60-D0-39 (hex) Apple, Inc.\r
+60D039 (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
+C4-C1-7D (hex) Apple, Inc.\r
+C4C17D (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
94-09-C9 (hex) ALPSALPINE CO,.LTD\r
9409C9 (base 16) ALPSALPINE CO,.LTD\r
nishida 6-1\r
kakuda-City Miyagi-Pref 981-1595\r
JP\r
\r
+E0-BD-A0 (hex) Apple, Inc.\r
+E0BDA0 (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
F8-34-51 (hex) Comcast-SRL\r
F83451 (base 16) Comcast-SRL\r
Alejo Martinez 17\r
Sosua Puerto Plata 34443\r
DO\r
\r
-68-63-72 (hex) Huawei Device Co., Ltd.\r
-686372 (base 16) Huawei Device Co., Ltd.\r
- No.2 of Xincheng Road, Songshan Lake Zone\r
- Dongguan Guangdong 523808\r
- CN\r
+20-DE-1E (hex) Nokia\r
+20DE1E (base 16) Nokia\r
+ 600 March Road\r
+ Kanata Ontario K2K 2E6\r
+ CA\r
\r
-A0-C2-0D (hex) Huawei Device Co., Ltd.\r
-A0C20D (base 16) Huawei Device Co., Ltd.\r
- No.2 of Xincheng Road, Songshan Lake Zone\r
- Dongguan Guangdong 523808\r
- CN\r
+AC-B1-81 (hex) Belden Mooresville\r
+ACB181 (base 16) Belden Mooresville\r
+ 1113 N Main St.\r
+ Mooresville 28115\r
+ US\r
\r
-4C-88-9E (hex) Huawei Device Co., Ltd.\r
-4C889E (base 16) Huawei Device Co., Ltd.\r
- No.2 of Xincheng Road, Songshan Lake Zone\r
- Dongguan Guangdong 523808\r
+AC-E4-03 (hex) Shenzhen Visteng Technology CO.,LTD\r
+ACE403 (base 16) Shenzhen Visteng Technology CO.,LTD\r
+ 6F, M7, MaQueLing, Hi-tech Park, Nanshan District\r
+ Shenzhen 518000\r
CN\r
\r
E4-62-C4 (hex) Cisco Systems, Inc\r
Mountain View CA 94043\r
US\r
\r
+A0-C2-0D (hex) Huawei Device Co., Ltd.\r
+A0C20D (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+4C-88-9E (hex) Huawei Device Co., Ltd.\r
+4C889E (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+6C-AC-C2 (hex) Samsung Electronics Co.,Ltd\r
+6CACC2 (base 16) Samsung Electronics Co.,Ltd\r
+ #94-1, Imsoo-Dong\r
+ Gumi Gyeongbuk 730-350\r
+ KR\r
+\r
+BC-F7-30 (hex) Samsung Electronics Co.,Ltd\r
+BCF730 (base 16) Samsung Electronics Co.,Ltd\r
+ #94-1, Imsoo-Dong\r
+ Gumi Gyeongbuk 730-350\r
+ KR\r
+\r
44-EE-14 (hex) Texas Instruments\r
44EE14 (base 16) Texas Instruments\r
12500 TI Blvd\r
Dallas TX 75243\r
US\r
\r
-D4-3F-32 (hex) eero inc.\r
-D43F32 (base 16) eero inc.\r
- 660 3rd Street\r
- San Francisco CA 94107\r
+B4-AC-9D (hex) Texas Instruments\r
+B4AC9D (base 16) Texas Instruments\r
+ 12500 TI Blvd\r
+ Dallas TX 75243\r
US\r
\r
-20-DE-1E (hex) Nokia\r
-20DE1E (base 16) Nokia\r
- 600 March Road\r
- Kanata Ontario K2K 2E6\r
- CA\r
+68-63-72 (hex) Huawei Device Co., Ltd.\r
+686372 (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
\r
-A8-80-55 (hex) Tuya Smart Inc.\r
-A88055 (base 16) Tuya Smart Inc.\r
- 160 Greentree Drive, Suite 101\r
- Dover DE 19904\r
- US\r
+BC-93-07 (hex) Samsung Electronics Co.,Ltd\r
+BC9307 (base 16) Samsung Electronics Co.,Ltd\r
+ #94-1, Imsoo-Dong\r
+ Gumi Gyeongbuk 730-350\r
+ KR\r
\r
-50-8B-B9 (hex) Tuya Smart Inc.\r
-508BB9 (base 16) Tuya Smart Inc.\r
- 160 Greentree Drive, Suite 101\r
- Dover DE 19904\r
+D4-3F-32 (hex) eero inc.\r
+D43F32 (base 16) eero inc.\r
+ 660 3rd Street\r
+ San Francisco CA 94107\r
US\r
\r
00-1B-1F (hex) FORCE Technology\r
Horsholm 2970\r
DK\r
\r
+C4-FC-22 (hex) YEALINK(XIAMEN) NETWORK TECHNOLOGY CO.,LTD.\r
+C4FC22 (base 16) YEALINK(XIAMEN) NETWORK TECHNOLOGY CO.,LTD.\r
+ 309, 3th Floor, No.16, Yun Ding North Road, Huli District\r
+ xiamen Fujian 361015\r
+ CN\r
+\r
+AC-51-EE (hex) Adtran Inc\r
+AC51EE (base 16) Adtran Inc\r
+ Sheraton House\r
+ Cambridge Cambridgeshire CB3 0AX\r
+ GB\r
+\r
+28-D0-CB (hex) Adtran Inc\r
+28D0CB (base 16) Adtran Inc\r
+ Victory House, Vision Park, Chivers Way, Histon\r
+ Cambridge CB24 9ZR\r
+ GB\r
+\r
FC-6A-1C (hex) Mellanox Technologies, Inc.\r
FC6A1C (base 16) Mellanox Technologies, Inc.\r
350 Oakmead Parkway, Suite 100 \r
Sunnyvale CA 94085\r
US\r
\r
-6C-AC-C2 (hex) Samsung Electronics Co.,Ltd\r
-6CACC2 (base 16) Samsung Electronics Co.,Ltd\r
- #94-1, Imsoo-Dong\r
- Gumi Gyeongbuk 730-350\r
- KR\r
-\r
-BC-F7-30 (hex) Samsung Electronics Co.,Ltd\r
-BCF730 (base 16) Samsung Electronics Co.,Ltd\r
- #94-1, Imsoo-Dong\r
- Gumi Gyeongbuk 730-350\r
- KR\r
-\r
48-29-D6 (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD\r
4829D6 (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD\r
NO.18 HAIBIN ROAD,\r
DONG GUAN GUANG DONG 523860\r
CN\r
\r
-BC-93-07 (hex) Samsung Electronics Co.,Ltd\r
-BC9307 (base 16) Samsung Electronics Co.,Ltd\r
- #94-1, Imsoo-Dong\r
- Gumi Gyeongbuk 730-350\r
- KR\r
+A4-D5-C2 (hex) Hangzhou Hikvision Digital Technology Co.,Ltd.\r
+A4D5C2 (base 16) Hangzhou Hikvision Digital Technology Co.,Ltd.\r
+ No.555 Qianmo Road\r
+ Hangzhou Zhejiang 310052\r
+ CN\r
\r
-B4-AC-9D (hex) Texas Instruments\r
-B4AC9D (base 16) Texas Instruments\r
- 12500 TI Blvd\r
- Dallas TX 75243\r
+A8-80-55 (hex) Tuya Smart Inc.\r
+A88055 (base 16) Tuya Smart Inc.\r
+ 160 Greentree Drive, Suite 101\r
+ Dover DE 19904\r
US\r
\r
+50-8B-B9 (hex) Tuya Smart Inc.\r
+508BB9 (base 16) Tuya Smart Inc.\r
+ 160 Greentree Drive, Suite 101\r
+ Dover DE 19904\r
+ US\r
+\r
+00-23-C7 (hex) AVSystem sp. z o. o.\r
+0023C7 (base 16) AVSystem sp. z o. o.\r
+ Radzikowskiego 47D\r
+ Kraków, ul. 31-315\r
+ PL\r
+\r
08-28-02 (hex) SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD\r
082802 (base 16) SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD\r
Unit East Block22-24/F,Skyworth semiconductor design Bldg., Gaoxin Ave.4.S.,Nanshan District,Shenzhen,China\r
Beijing Haidian District 100085\r
CN\r
\r
-00-23-C7 (hex) AVSystem sp. z o. o.\r
-0023C7 (base 16) AVSystem sp. z o. o.\r
- Radzikowskiego 47D\r
- Kraków, ul. 31-315\r
- PL\r
-\r
-C4-FC-22 (hex) YEALINK(XIAMEN) NETWORK TECHNOLOGY CO.,LTD.\r
-C4FC22 (base 16) YEALINK(XIAMEN) NETWORK TECHNOLOGY CO.,LTD.\r
- 309, 3th Floor, No.16, Yun Ding North Road, Huli District\r
- xiamen Fujian 361015\r
- CN\r
-\r
3C-99-8C (hex) Houwa System Design Corp.\r
3C998C (base 16) Houwa System Design Corp.\r
4F Matubara Building 3-22-14 Shibuyaku Higashi\r
Hangzhou Zhejiang 310053\r
CN\r
\r
-BC-AD-90 (hex) Kymeta Purchasing\r
-BCAD90 (base 16) Kymeta Purchasing\r
- 12034 134th Ct NE #105\r
- Redmond WA 98052\r
- US\r
-\r
-AC-51-EE (hex) Adtran Inc\r
-AC51EE (base 16) Adtran Inc\r
- Sheraton House\r
- Cambridge Cambridgeshire CB3 0AX\r
- GB\r
-\r
-28-D0-CB (hex) Adtran Inc\r
-28D0CB (base 16) Adtran Inc\r
- Victory House, Vision Park, Chivers Way, Histon\r
- Cambridge CB24 9ZR\r
- GB\r
-\r
38-68-A4 (hex) Samsung Electronics Co.,Ltd\r
3868A4 (base 16) Samsung Electronics Co.,Ltd\r
129, Samsung-ro, Youngtongl-Gu\r
Suwon 16677\r
KR\r
\r
-A4-D5-C2 (hex) Hangzhou Hikvision Digital Technology Co.,Ltd.\r
-A4D5C2 (base 16) Hangzhou Hikvision Digital Technology Co.,Ltd.\r
- No.555 Qianmo Road\r
- Hangzhou Zhejiang 310052\r
- CN\r
-\r
B8-37-B2 (hex) Aruba, a Hewlett Packard Enterprise Company\r
B837B2 (base 16) Aruba, a Hewlett Packard Enterprise Company\r
3333 Scott Blvd\r
Santa Clara CA 95054\r
US\r
\r
+BC-AD-90 (hex) Kymeta Purchasing\r
+BCAD90 (base 16) Kymeta Purchasing\r
+ 12034 134th Ct NE #105\r
+ Redmond WA 98052\r
+ US\r
+\r
+A0-60-32 (hex) Amcrest Technologies\r
+A06032 (base 16) Amcrest Technologies\r
+ 16727 Park Row\r
+ Houston TX 77084\r
+ US\r
+\r
+DC-C2-C9 (hex) CANON INC.\r
+DCC2C9 (base 16) CANON INC.\r
+ 30-2 Shimomaruko 3-chome,\r
+ Ohta-ku Tokyo 146-8501\r
+ JP\r
+\r
D8-53-BC (hex) Lenovo Information Products (Shenzhen)Co.,Ltd\r
D853BC (base 16) Lenovo Information Products (Shenzhen)Co.,Ltd\r
2F, NO.1 Plant , Lenovo Innovation Park, Lidu Road, Loucun Community, Xinhu Street, Guangming District , Shenzhen, Guangdong, China\r
Cupertino CA 95014\r
US\r
\r
-DC-C2-C9 (hex) CANON INC.\r
-DCC2C9 (base 16) CANON INC.\r
- 30-2 Shimomaruko 3-chome,\r
- Ohta-ku Tokyo 146-8501\r
- JP\r
-\r
-F0-D3-1F (hex) Apple, Inc.\r
-F0D31F (base 16) Apple, Inc.\r
+90-EC-EA (hex) Apple, Inc.\r
+90ECEA (base 16) Apple, Inc.\r
1 Infinite Loop\r
Cupertino CA 95014\r
US\r
Cupertino CA 95014\r
US\r
\r
-90-EC-EA (hex) Apple, Inc.\r
-90ECEA (base 16) Apple, Inc.\r
+10-B5-88 (hex) Apple, Inc.\r
+10B588 (base 16) Apple, Inc.\r
1 Infinite Loop\r
Cupertino CA 95014\r
US\r
\r
-10-B5-88 (hex) Apple, Inc.\r
-10B588 (base 16) Apple, Inc.\r
+F0-D3-1F (hex) Apple, Inc.\r
+F0D31F (base 16) Apple, Inc.\r
1 Infinite Loop\r
Cupertino CA 95014\r
US\r
\r
+38-0F-AD (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+380FAD (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
80-AC-C8 (hex) Phyplus Microelectronics Limited\r
80ACC8 (base 16) Phyplus Microelectronics Limited\r
304 Building 1 No.608 Sheng Xia Road\r
Shanghai 200000\r
CN\r
\r
-A0-60-32 (hex) Amcrest Technologies\r
-A06032 (base 16) Amcrest Technologies\r
- 16727 Park Row\r
- Houston TX 77084\r
- US\r
-\r
58-E4-88 (hex) Amazon Technologies Inc.\r
58E488 (base 16) Amazon Technologies Inc.\r
P.O Box 8102 \r
Beijing Beijing 100085\r
CN\r
\r
-38-0F-AD (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
-380FAD (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
- Dongguan 523808\r
- CN\r
-\r
D8-03-1A (hex) Laird Connectivity\r
D8031A (base 16) Laird Connectivity\r
3F.-1, No.145, Xianzheng 9th Rd.,\r
Beijing 100102\r
CN\r
\r
+7C-27-3C (hex) Shenzhen Yunlink Technology Co., Ltd\r
+7C273C (base 16) Shenzhen Yunlink Technology Co., Ltd\r
+ Gushu, Xixiang Town, Bao'an District, \r
+ Shenzhen City Guangdong Province 518100\r
+ CN\r
+\r
+1C-2A-B0 (hex) Beijing Xiaomi Electronics Co.,Ltd\r
+1C2AB0 (base 16) Beijing Xiaomi Electronics Co.,Ltd\r
+ Xiaomi Campus\r
+ Beijing Beijing 100085\r
+ CN\r
+\r
98-17-F1 (hex) zte corporation\r
9817F1 (base 16) zte corporation\r
12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China\r
DONG GUAN GUANG DONG 523860\r
CN\r
\r
+4C-C8-44 (hex) Maipu Communication Technology Co.,Ltd.\r
+4CC844 (base 16) Maipu Communication Technology Co.,Ltd.\r
+ No.16 Jiuxing Avenue, Hi-tech zone\r
+ Chengdu Sichuan 610094\r
+ CN\r
+\r
00-2B-F5 (hex) BUFFALO.INC\r
002BF5 (base 16) BUFFALO.INC\r
AKAMONDORI Bld.,30-20,Ohsu 3-chome,Naka-ku\r
Nagoya Aichi Pref. 460-8315\r
JP\r
\r
+98-C8-54 (hex) Chiun Mai Communication System, Inc\r
+98C854 (base 16) Chiun Mai Communication System, Inc\r
+ No.4, MingSheng St. TuCheng District\r
+ New Taipei City 23679\r
+ TW\r
+\r
+70-17-D7 (hex) Shanghai Enflame Technology Co., Ltd.\r
+7017D7 (base 16) Shanghai Enflame Technology Co., Ltd.\r
+ A-522, No. 188, Yesheng Road, LIN-GANG Special Area, China (Shanghai) Pilot Free Trade Zone\r
+ Shanghai Shanghai 201306\r
+ CN\r
+\r
+64-B7-08 (hex) Espressif Inc.\r
+64B708 (base 16) Espressif Inc.\r
+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area\r
+ Shanghai Shanghai 201203\r
+ CN\r
+\r
70-54-64 (hex) Silicon Laboratories\r
705464 (base 16) Silicon Laboratories\r
7000 W. William Cannon Dr.\r
Rueil Malmaison Cedex hauts de seine 92848\r
FR\r
\r
-7C-27-3C (hex) Shenzhen Yunlink Technology Co., Ltd\r
-7C273C (base 16) Shenzhen Yunlink Technology Co., Ltd\r
- Gushu, Xixiang Town, Bao'an District, \r
- Shenzhen City Guangdong Province 518100\r
- CN\r
-\r
-1C-2A-B0 (hex) Beijing Xiaomi Electronics Co.,Ltd\r
-1C2AB0 (base 16) Beijing Xiaomi Electronics Co.,Ltd\r
- Xiaomi Campus\r
- Beijing Beijing 100085\r
- CN\r
-\r
E8-24-A6 (hex) Juniper Networks\r
E824A6 (base 16) Juniper Networks\r
1133 Innovation Way\r
Sunnyvale CA 94089\r
US\r
\r
-98-C8-54 (hex) Chiun Mai Communication System, Inc\r
-98C854 (base 16) Chiun Mai Communication System, Inc\r
- No.4, MingSheng St. TuCheng District\r
- New Taipei City 23679\r
- TW\r
-\r
-70-17-D7 (hex) Shanghai Enflame Technology Co., Ltd.\r
-7017D7 (base 16) Shanghai Enflame Technology Co., Ltd.\r
- A-522, No. 188, Yesheng Road, LIN-GANG Special Area, China (Shanghai) Pilot Free Trade Zone\r
- Shanghai Shanghai 201306\r
- CN\r
-\r
-4C-C8-44 (hex) Maipu Communication Technology Co.,Ltd.\r
-4CC844 (base 16) Maipu Communication Technology Co.,Ltd.\r
- No.16 Jiuxing Avenue, Hi-tech zone\r
- Chengdu Sichuan 610094\r
- CN\r
-\r
A0-8E-24 (hex) eero inc.\r
A08E24 (base 16) eero inc.\r
660 3rd Street\r
San Francisco CA 94107\r
US\r
\r
-64-B7-08 (hex) Espressif Inc.\r
-64B708 (base 16) Espressif Inc.\r
- Room 204, Building 2, 690 Bibo Rd, Pudong New Area\r
- Shanghai Shanghai 201203\r
- CN\r
+AC-89-D2 (hex) Ciena Corporation\r
+AC89D2 (base 16) Ciena Corporation\r
+ 7035 Ridge Road\r
+ Hanover MD 21076\r
+ US\r
\r
E0-56-94 (hex) Yunhight Microelectronics\r
E05694 (base 16) Yunhight Microelectronics\r
Buchs 9470\r
CH\r
\r
-FC-7A-58 (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
-FC7A58 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
- 4F,Block A, Skyworth?Building,\r
- Shenzhen Guangdong 518057\r
- CN\r
-\r
18-E8-29 (hex) Ubiquiti Inc\r
18E829 (base 16) Ubiquiti Inc\r
685 Third Avenue, 27th Floor\r
New York NY New York NY 10017\r
US\r
\r
+48-38-B6 (hex) Auhui Taoyun Technology Co., Ltd\r
+4838B6 (base 16) Auhui Taoyun Technology Co., Ltd\r
+ 6/F and 23/F, Scientific Research Building, Building 2, Zone A, China Sound Valley, No. 3333, Xiyou Road, High tech Zone\r
+ Hefei Anhui 230094\r
+ CN\r
+\r
+00-03-56 (hex) Diebold Nixdorf\r
+000356 (base 16) Diebold Nixdorf\r
+ Wohlrabedamm 31\r
+ Berlin 13629\r
+ DE\r
+\r
00-15-6D (hex) Ubiquiti Inc\r
00156D (base 16) Ubiquiti Inc\r
685 Third Avenue, 27th Floor\r
New York NY New York NY 10017\r
US\r
\r
+BC-C4-27 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+BCC427 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
00-27-22 (hex) Ubiquiti Inc\r
002722 (base 16) Ubiquiti Inc\r
685 Third Avenue, 27th Floor\r
New York NY New York NY 10017\r
US\r
\r
-BC-C4-27 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
-BCC427 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
- No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
- Dongguan 523808\r
- CN\r
-\r
B0-CF-CB (hex) Amazon Technologies Inc.\r
B0CFCB (base 16) Amazon Technologies Inc.\r
P.O Box 8102 \r
Reno NV 89507\r
US\r
\r
-AC-89-D2 (hex) Ciena Corporation\r
-AC89D2 (base 16) Ciena Corporation\r
- 7035 Ridge Road\r
- Hanover MD 21076\r
- US\r
-\r
-00-03-56 (hex) Diebold Nixdorf\r
-000356 (base 16) Diebold Nixdorf\r
- Wohlrabedamm 31\r
- Berlin 13629\r
- DE\r
-\r
-5C-4D-BF (hex) zte corporation\r
-5C4DBF (base 16) zte corporation\r
- 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China\r
- shenzhen guangdong 518057\r
+88-6E-DD (hex) Micronet union Technology(Chengdu)Co., Ltd.\r
+886EDD (base 16) Micronet union Technology(Chengdu)Co., Ltd.\r
+ No.502, Building 5, No. 528, Yuefei Road, Shibantan Street, Xindu District\r
+ Chengdu Sichuan 610000\r
CN\r
\r
98-47-44 (hex) Shenzhen Boomtech Industrial Corporation\r
Shenzhen 518100\r
CN\r
\r
-48-38-B6 (hex) Auhui Taoyun Technology Co., Ltd\r
-4838B6 (base 16) Auhui Taoyun Technology Co., Ltd\r
- 6/F and 23/F, Scientific Research Building, Building 2, Zone A, China Sound Valley, No. 3333, Xiyou Road, High tech Zone\r
- Hefei Anhui 230094\r
+5C-4D-BF (hex) zte corporation\r
+5C4DBF (base 16) zte corporation\r
+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China\r
+ shenzhen guangdong 518057\r
CN\r
\r
80-F3-EF (hex) Meta Platforms Technologies, LLC\r
ALPHARETTA GA 30005\r
US\r
\r
-88-6E-DD (hex) Micronet union Technology(Chengdu)Co., Ltd.\r
-886EDD (base 16) Micronet union Technology(Chengdu)Co., Ltd.\r
- No.502, Building 5, No. 528, Yuefei Road, Shibantan Street, Xindu District\r
- Chengdu Sichuan 610000\r
- CN\r
-\r
-08-BF-B8 (hex) ASUSTek COMPUTER INC.\r
-08BFB8 (base 16) ASUSTek COMPUTER INC.\r
- No.15,Lide Rd., Beitou, Dist.,Taipei 112,Taiwan\r
- Taipei Taiwan 112\r
- TW\r
-\r
D0-19-D3 (hex) ITEL MOBILE LIMITED\r
D019D3 (base 16) ITEL MOBILE LIMITED\r
RM B3 & B4 BLOCK B, KO FAI INDUSTRIAL BUILDING NO.7 KO FAI ROAD, YAU TONG, KLN, H.K\r
Hong Kong KOWLOON 999077\r
HK\r
\r
-4C-5E-D3 (hex) Unisyue Technologies Co; LTD.\r
-4C5ED3 (base 16) Unisyue Technologies Co; LTD.\r
- Room 402, No. 2 Building, NO.1 ZhongGuancun East Rd, HaiDian District, Beijing, People’s Republic of China\r
- Beijing 100190\r
- CN\r
-\r
CC-AC-FE (hex) Telink Semiconductor (Shanghai) Co., Ltd.\r
CCACFE (base 16) Telink Semiconductor (Shanghai) Co., Ltd.\r
No. 1500 Zuchongzhi Rd, Building #3\r
Shanghai 201203\r
CN\r
\r
+08-BF-B8 (hex) ASUSTek COMPUTER INC.\r
+08BFB8 (base 16) ASUSTek COMPUTER INC.\r
+ No.15,Lide Rd., Beitou, Dist.,Taipei 112,Taiwan\r
+ Taipei Taiwan 112\r
+ TW\r
+\r
4C-23-1A (hex) Extreme Networks, Inc.\r
4C231A (base 16) Extreme Networks, Inc.\r
6480 Via Del Oro\r
Phoenix 85008\r
US\r
\r
-18-84-C1 (hex) Guangzhou Shiyuan Electronic Technology Company Limited\r
-1884C1 (base 16) Guangzhou Shiyuan Electronic Technology Company Limited\r
- No.6, 4th Yunpu Road, Yunpu industry District\r
- Guangzhou Guangdong 510530\r
+4C-5E-D3 (hex) Unisyue Technologies Co; LTD.\r
+4C5ED3 (base 16) Unisyue Technologies Co; LTD.\r
+ Room 402, No. 2 Building, NO.1 ZhongGuancun East Rd, HaiDian District, Beijing, People’s Republic of China\r
+ Beijing 100190\r
CN\r
\r
-EC-C0-18 (hex) Cisco Systems, Inc\r
-ECC018 (base 16) Cisco Systems, Inc\r
- 80 West Tasman Drive\r
- San Jose CA 94568\r
- US\r
-\r
-74-8F-C2 (hex) Cisco Systems, Inc\r
-748FC2 (base 16) Cisco Systems, Inc\r
- 80 West Tasman Drive\r
- San Jose CA 94568\r
- US\r
-\r
D8-B2-49 (hex) Huawei Device Co., Ltd.\r
D8B249 (base 16) Huawei Device Co., Ltd.\r
No.2 of Xincheng Road, Songshan Lake Zone\r
shenzhen guangdong 518057\r
CN\r
\r
-D8-24-EC (hex) Plenom A/S\r
-D824EC (base 16) Plenom A/S\r
- Pi 2, Soften\r
- Hinnerup Favrskov 8382\r
- DK\r
-\r
-D0-16-F0 (hex) IEEE Registration Authority\r
-D016F0 (base 16) IEEE Registration Authority\r
- 445 Hoes Lane\r
- Piscataway NJ 08554\r
- US\r
-\r
B0-44-9C (hex) Assa Abloy AB - Yale\r
B0449C (base 16) Assa Abloy AB - Yale\r
Nordenskiöldsgatan 8B (5tr)\r
Changwon-si 51542\r
KR\r
\r
-64-E0-AB (hex) UNION MAN TECHNOLOGY CO.,LTD\r
-64E0AB (base 16) UNION MAN TECHNOLOGY CO.,LTD\r
- No.5,Huitai Road,Huinan High-Tech Park,Huiao Highway\r
- Huizhou Guangdong 516025\r
+18-84-C1 (hex) Guangzhou Shiyuan Electronic Technology Company Limited\r
+1884C1 (base 16) Guangzhou Shiyuan Electronic Technology Company Limited\r
+ No.6, 4th Yunpu Road, Yunpu industry District\r
+ Guangzhou Guangdong 510530\r
CN\r
\r
+68-85-6A (hex) OuterLink Corporation\r
+68856A (base 16) OuterLink Corporation\r
+ 150 Baker Avenue Extension, Suite 302\r
+ Concord MA 01742\r
+ US\r
+\r
+E4-12-89 (hex) topsystem GmbH\r
+E41289 (base 16) topsystem GmbH\r
+ Krefelder Straße 201\r
+ Aachen 52070\r
+ DE\r
+\r
+EC-C0-18 (hex) Cisco Systems, Inc\r
+ECC018 (base 16) Cisco Systems, Inc\r
+ 80 West Tasman Drive\r
+ San Jose CA 94568\r
+ US\r
+\r
+74-8F-C2 (hex) Cisco Systems, Inc\r
+748FC2 (base 16) Cisco Systems, Inc\r
+ 80 West Tasman Drive\r
+ San Jose CA 94568\r
+ US\r
+\r
+D8-24-EC (hex) Plenom A/S\r
+D824EC (base 16) Plenom A/S\r
+ Pi 2, Soften\r
+ Hinnerup Favrskov 8382\r
+ DK\r
+\r
+D0-16-F0 (hex) IEEE Registration Authority\r
+D016F0 (base 16) IEEE Registration Authority\r
+ 445 Hoes Lane\r
+ Piscataway NJ 08554\r
+ US\r
+\r
00-19-F0 (hex) UNION MAN TECHNOLOGY CO.,LTD\r
0019F0 (base 16) UNION MAN TECHNOLOGY CO.,LTD\r
18F, HUAYANG TOWER,YANDAYI ROAD\r
Huizhou Guangdong 516025\r
CN\r
\r
-68-85-6A (hex) OuterLink Corporation\r
-68856A (base 16) OuterLink Corporation\r
- 150 Baker Avenue Extension, Suite 302\r
- Concord MA 01742\r
- US\r
+AC-12-8E (hex) Shanghai Baud Data Communication Co.,Ltd.\r
+AC128E (base 16) Shanghai Baud Data Communication Co.,Ltd.\r
+ NO.123 JULI RD\r
+ PUDONG ZHANGJIANG HIGH-TECH PARK SHANGHAI 201203\r
+ CN\r
\r
-E4-12-89 (hex) topsystem GmbH\r
-E41289 (base 16) topsystem GmbH\r
- Krefelder Straße 201\r
- Aachen 52070\r
- DE\r
+64-E0-AB (hex) UNION MAN TECHNOLOGY CO.,LTD\r
+64E0AB (base 16) UNION MAN TECHNOLOGY CO.,LTD\r
+ No.5,Huitai Road,Huinan High-Tech Park,Huiao Highway\r
+ Huizhou Guangdong 516025\r
+ CN\r
\r
44-A3-C7 (hex) zte corporation\r
44A3C7 (base 16) zte corporation\r
shenzhen guangdong 518057\r
CN\r
\r
+AC-3D-94 (hex) Arista Networks\r
+AC3D94 (base 16) Arista Networks\r
+ 5453 Great America Parkway\r
+ Santa Clara CA 95054\r
+ US\r
+\r
30-E1-F1 (hex) Intelbras\r
30E1F1 (base 16) Intelbras\r
BR 101, km 210, S/N°\r
São José Santa Catarina 88104800\r
BR\r
\r
-AC-3D-94 (hex) Arista Networks\r
-AC3D94 (base 16) Arista Networks\r
- 5453 Great America Parkway\r
- Santa Clara CA 95054\r
+3C-46-A1 (hex) Ruckus Wireless\r
+3C46A1 (base 16) Ruckus Wireless\r
+ 350 West Java Drive\r
+ Sunnyvale CA 94089\r
US\r
\r
-CC-96-E5 (hex) Dell Inc.\r
-CC96E5 (base 16) Dell Inc.\r
- One Dell Way\r
- Round Rock TX 78682\r
+64-8F-3E (hex) Cisco Systems, Inc\r
+648F3E (base 16) Cisco Systems, Inc\r
+ 80 West Tasman Drive\r
+ San Jose CA 94568\r
US\r
\r
-AC-12-8E (hex) Shanghai Baud Data Communication Co.,Ltd.\r
-AC128E (base 16) Shanghai Baud Data Communication Co.,Ltd.\r
- NO.123 JULI RD\r
- PUDONG ZHANGJIANG HIGH-TECH PARK SHANGHAI 201203\r
- CN\r
+CC-B6-C8 (hex) Cisco Systems, Inc\r
+CCB6C8 (base 16) Cisco Systems, Inc\r
+ 80 West Tasman Drive\r
+ San Jose CA 94568\r
+ US\r
+\r
+6C-D6-E3 (hex) Cisco Systems, Inc\r
+6CD6E3 (base 16) Cisco Systems, Inc\r
+ 80 West Tasman Drive\r
+ San Jose CA 94568\r
+ US\r
\r
EC-ED-73 (hex) Motorola Mobility LLC, a Lenovo Company\r
ECED73 (base 16) Motorola Mobility LLC, a Lenovo Company\r
Tokyo Bunkyoku 113-0033\r
JP\r
\r
-3C-46-A1 (hex) Ruckus Wireless\r
-3C46A1 (base 16) Ruckus Wireless\r
- 350 West Java Drive\r
- Sunnyvale CA 94089\r
- US\r
-\r
A0-29-19 (hex) Dell Inc.\r
A02919 (base 16) Dell Inc.\r
One Dell Way\r
Round Rock TX 78682\r
US\r
\r
+CC-96-E5 (hex) Dell Inc.\r
+CC96E5 (base 16) Dell Inc.\r
+ One Dell Way\r
+ Round Rock TX 78682\r
+ US\r
+\r
2C-64-F6 (hex) Wu Qi Technologies,Inc.\r
2C64F6 (base 16) Wu Qi Technologies,Inc.\r
14/F, 107 Middle Road, Xiantao Big Data Valley, Yubei District\r
DONG GUAN GUANG DONG 523860\r
CN\r
\r
-64-8F-3E (hex) Cisco Systems, Inc\r
-648F3E (base 16) Cisco Systems, Inc\r
- 80 West Tasman Drive\r
- San Jose CA 94568\r
- US\r
-\r
-CC-B6-C8 (hex) Cisco Systems, Inc\r
-CCB6C8 (base 16) Cisco Systems, Inc\r
- 80 West Tasman Drive\r
- San Jose CA 94568\r
- US\r
+E8-8F-C4 (hex) MOBIWIRE MOBILES(NINGBO) CO.,LTD\r
+E88FC4 (base 16) MOBIWIRE MOBILES(NINGBO) CO.,LTD\r
+ Buliding B,Bird Indusrtial Park No.999 Dacheng Road,Fenghua Zhejiang,China\r
+ NingBo ZheJiang 315500\r
+ CN\r
\r
-6C-D6-E3 (hex) Cisco Systems, Inc\r
-6CD6E3 (base 16) Cisco Systems, Inc\r
- 80 West Tasman Drive\r
- San Jose CA 94568\r
+AC-1A-3D (hex) Dell Inc.\r
+AC1A3D (base 16) Dell Inc.\r
+ One Dell Way\r
+ Round Rock TX 78682\r
US\r
\r
-E8-4C-4A (hex) Amazon Technologies Inc.\r
-E84C4A (base 16) Amazon Technologies Inc.\r
- P.O Box 8102 \r
- Reno NV 89507\r
- US\r
+F4-9D-A7 (hex) Private\r
+F49DA7 (base 16) Private\r
\r
74-8F-4D (hex) duagon Germany GmbH\r
748F4D (base 16) duagon Germany GmbH\r
Nuremberg Bavaria 90411\r
DE\r
\r
-E8-8F-C4 (hex) MOBIWIRE MOBILES(NINGBO) CO.,LTD\r
-E88FC4 (base 16) MOBIWIRE MOBILES(NINGBO) CO.,LTD\r
- Buliding B,Bird Indusrtial Park No.999 Dacheng Road,Fenghua Zhejiang,China\r
- NingBo ZheJiang 315500\r
+E8-4C-4A (hex) Amazon Technologies Inc.\r
+E84C4A (base 16) Amazon Technologies Inc.\r
+ P.O Box 8102 \r
+ Reno NV 89507\r
+ US\r
+\r
+C8-F2-25 (hex) EM Microelectronic\r
+C8F225 (base 16) EM Microelectronic\r
+ Rue des Sors 3\r
+ Marin-Epagnier Neuchatel 2074\r
+ CH\r
+\r
+78-53-0D (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
+78530D (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
+ 4F,Block A, Skyworth?Building,\r
+ Shenzhen Guangdong 518057\r
CN\r
\r
-AC-1A-3D (hex) Dell Inc.\r
-AC1A3D (base 16) Dell Inc.\r
- One Dell Way\r
- Round Rock TX 78682\r
- US\r
+78-5F-36 (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
+785F36 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
+ 4F,Block A, Skyworth?Building,\r
+ Shenzhen Guangdong 518057\r
+ CN\r
\r
-F4-9D-A7 (hex) Private\r
-F49DA7 (base 16) Private\r
+FC-2C-FD (hex) dormakaba Canada Inc. - Keyscan\r
+FC2CFD (base 16) dormakaba Canada Inc. - Keyscan\r
+ 901 Burns Street East\r
+ Whitby Ontario L1N 0E6\r
+ CA\r
+\r
+4C-9B-63 (hex) LG Innotek\r
+4C9B63 (base 16) LG Innotek\r
+ 26, Hanamsandan 5beon-ro\r
+ Gwangju Gwangsan-gu 506-731\r
+ KR\r
+\r
+C0-17-54 (hex) Apple, Inc.\r
+C01754 (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
\r
00-12-27 (hex) Franklin Electric Co., Inc.\r
001227 (base 16) Franklin Electric Co., Inc.\r
500 Terry A. Francois Blvd\r
San Francisco 94158\r
US\r
+\r
+8C-02-CD (hex) FUJIAN STAR-NET COMMUNICATION CO.,LTD\r
+8C02CD (base 16) FUJIAN STAR-NET COMMUNICATION CO.,LTD\r
+ 19-22# Building, Star-net Science Plaza, Juyuanzhou,\r
+ FUZHOU FUJIAN 350002\r
+ CN\r
+\r
+94-7F-D8 (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
+947FD8 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
+ 4F,Block A, Skyworth?Building,\r
+ Shenzhen Guangdong 518057\r
+ CN\r
+\r
+20-89-8A (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
+20898A (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
+ 4F,Block A, Skyworth?Building,\r
+ Shenzhen Guangdong 518057\r
+ CN\r
+\r
+48-45-CF (hex) LLC Proizvodstvennaya Kompania TransService\r
+4845CF (base 16) LLC Proizvodstvennaya Kompania TransService\r
+ Ulitsa Podolskih Kursantov, build. 3, of. 133\r
+ Moscow Moscow 117545\r
+ RU\r
+\r
+FC-7A-58 (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
+FC7A58 (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
+ 4F,Block A, Skyworth?Building,\r
+ Shenzhen Guangdong 518057\r
+ CN\r
+\r
+18-AA-1E (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
+18AA1E (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
+ 4F,Block A, Skyworth?Building,\r
+ Shenzhen Guangdong 518057\r
+ CN\r
+\r
+50-E5-38 (hex) Hangzhou Hikvision Digital Technology Co.,Ltd.\r
+50E538 (base 16) Hangzhou Hikvision Digital Technology Co.,Ltd.\r
+ No.555 Qianmo Road \r
+ Hangzhou Zhejiang 310052\r
+ CN\r
+\r
+E4-8E-BB (hex) Rockwell Automation\r
+E48EBB (base 16) Rockwell Automation\r
+ 1 Allen-Bradley Dr.\r
+ Mayfield Heights OH 44124-6118\r
+ US\r
+\r
+54-F8-F0 (hex) Tesla Inc\r
+54F8F0 (base 16) Tesla Inc\r
+ 1 Tesla Road\r
+ Austin TX 78725\r
+ US\r
+\r
+24-BF-74 (hex) Hamamatsu Photonics K.K.\r
+24BF74 (base 16) Hamamatsu Photonics K.K.\r
+ 1126-1, Ichino-cho, Higashi-ku\r
+ Hamamatsu-City Shizuoka-ken 435-8558\r
+ JP\r
+\r
+FC-48-C9 (hex) Yobiiq Intelligence B.V.\r
+FC48C9 (base 16) Yobiiq Intelligence B.V.\r
+ Bedrijfsweg 31\r
+ Geleen Limburg 6163CZ\r
+ NL\r
+\r
+A0-66-36 (hex) Intracom SA Telecom Solutions\r
+A06636 (base 16) Intracom SA Telecom Solutions\r
+ 19.7 klm Marcopoulo Ave\r
+ PEANIA ATTIKI 19001\r
+ GR\r
+\r
+64-1C-10 (hex) Texas Instruments\r
+641C10 (base 16) Texas Instruments\r
+ 12500 TI Blvd\r
+ Dallas TX 75243\r
+ US\r
+\r
+F4-AA-D0 (hex) OHSUNG\r
+F4AAD0 (base 16) OHSUNG\r
+ 335-4,SANHODAERO,GUMI,GYEONG BUK,KOREA\r
+ GUMI GYEONG BUK 730-030\r
+ KR\r
Velika Gorica 10410\r
HR\r
\r
+54-08-3B (hex) BHS Corrugated Maschinen- und Anlagenbau GmbH\r
+D00000-DFFFFF (base 16) BHS Corrugated Maschinen- und Anlagenbau GmbH\r
+ Paul-Engel-Strasse 1\r
+ Weiherhammer Bavaria 92729\r
+ DE\r
+\r
+54-08-3B (hex) FairPhone B.V.\r
+C00000-CFFFFF (base 16) FairPhone B.V.\r
+ VanDiemenstraat 200\r
+ Amsterdam 1013 CP\r
+ NL\r
+\r
+54-08-3B (hex) Sinclair Technologies\r
+E00000-EFFFFF (base 16) Sinclair Technologies\r
+ 85 MARY ST\r
+ AURORA Ontario L4G 6X5\r
+ CA\r
+\r
+E0-3C-1C (hex) Semic Inc.\r
+500000-5FFFFF (base 16) Semic Inc.\r
+ 17F.-6, No. 79, Sec. 1, Xintai 5th Rd., Xizhi Dist.\r
+ New Taipei City 22101\r
+ TW\r
+\r
54-08-3B (hex) Korea Bus Broadcasting\r
B00000-BFFFFF (base 16) Korea Bus Broadcasting\r
7F, 24, Bangbaejungang-ro, Seocho-gu\r
Seoul 06684\r
KR\r
\r
-E0-3C-1C (hex) Semic Inc.\r
-500000-5FFFFF (base 16) Semic Inc.\r
- 17F.-6, No. 79, Sec. 1, Xintai 5th Rd., Xizhi Dist.\r
- New Taipei City Select State 22101\r
- TW\r
+70-06-92 (hex) SWIT Electronics Co.,Ltd\r
+B00000-BFFFFF (base 16) SWIT Electronics Co.,Ltd\r
+ 10 Hengtong Rd,Nanjing Economic Technological Development Zone\r
+ Nanjing Jiangsu 210038\r
+ CN\r
+\r
+70-06-92 (hex) Hangzhou Clounix Technology Limited\r
+600000-6FFFFF (base 16) Hangzhou Clounix Technology Limited\r
+ Floor 12, Building 2, Zichen International Center, NO.39, Jincheng Road, Xiaoshan District\r
+ Hangzhou Zhejiang 311202\r
+ CN\r
+\r
+70-06-92 (hex) Fusiostor Technologies Private Limited\r
+400000-4FFFFF (base 16) Fusiostor Technologies Private Limited\r
+ GALA NO.7, MUNERVA IND ESTATE, BISHAN UDYOG\r
+ MUMBAI Maharashtra 400080\r
+ IN\r
+\r
+70-06-92 (hex) Shenzhen Lingwei Technology Co., Ltd\r
+900000-9FFFFF (base 16) Shenzhen Lingwei Technology Co., Ltd\r
+ No. 50-1, Minqing Road, Longhua District\r
+ Shenzhen Guangdong Province 518109\r
+ CN\r
+\r
+70-06-92 (hex) Scud (Fujian) Electronics Co.,Ltd\r
+200000-2FFFFF (base 16) Scud (Fujian) Electronics Co.,Ltd\r
+ NO.98 ,EAST ROAD OF JIANGBIN ,MAWEI ZONE,FUZHOU\r
+ FUZHOU 350000\r
+ CN\r
\r
4C-4B-F9 (hex) Shenzhen dingsheng technology co., LTD\r
400000-4FFFFF (base 16) Shenzhen dingsheng technology co., LTD\r
Uozu-shi TOYAMA 937-0041\r
JP\r
\r
+54-08-3B (hex) Unicompute Technology Co.,Ltd.\r
+900000-9FFFFF (base 16) Unicompute Technology Co.,Ltd.\r
+ Building 10, Tian Jian Lake AloT Industrial Park, No.173 Feng Xiang West Street? High-Tech Industrial Development Zone, \r
+ ZhengZhou City 450066\r
+ CN\r
+\r
54-08-3B (hex) NAVITUS LT\r
200000-2FFFFF (base 16) NAVITUS LT\r
Visoriu g. 2\r
Vilnius 08300\r
LT\r
\r
+70-06-92 (hex) Munters\r
+A00000-AFFFFF (base 16) Munters\r
+ Hasivim 18\r
+ Pethch Tikva Israel 4959376\r
+ IL\r
+\r
+70-06-92 (hex) Skyware Protech Limited\r
+D00000-DFFFFF (base 16) Skyware Protech Limited\r
+ 3806A, Cable TV Tower, 9 Hoi Sing Road, Tsuen Wan\r
+ Tsuen Wan 00000\r
+ HK\r
+\r
20-85-93 (hex) UNILUMIN GROUP CO.,LTD\r
300000-3FFFFF (base 16) UNILUMIN GROUP CO.,LTD\r
No.112 Yongfu Rd.,BaoanDistrict,\r
Elkhart IN 46514\r
US\r
\r
-8C-14-7D (hex) Private\r
-100000-1FFFFF (base 16) Private\r
-\r
C8-2C-2B (hex) RF Engineering and Energy Resource\r
300000-3FFFFF (base 16) RF Engineering and Energy Resource\r
4460 Commercial Ave.\r
Numazu Shizuoka 410-0001\r
JP\r
\r
+54-08-3B (hex) shenzhen HAIOT technology co.,ltd\r
+500000-5FFFFF (base 16) shenzhen HAIOT technology co.,ltd\r
+ No 407 Building E zhongshan load, nanshan district,shenzhen city \r
+ shenzhen guangdong 518057\r
+ CN\r
+\r
+8C-14-7D (hex) Schneider Electric - Triconex\r
+100000-1FFFFF (base 16) Schneider Electric - Triconex\r
+ 26561 Rancho Pkwy S\r
+ LAKE FOREST CA 92630\r
+ US\r
+\r
+70-06-92 (hex) Beijing Fortech Microsystems., Co., Ltd.\r
+100000-1FFFFF (base 16) Beijing Fortech Microsystems., Co., Ltd.\r
+ Suite A3 502, Zhongguancun No. 1, No. 81 Beiqing Road, Haidian District\r
+ Beijing 100084\r
+ CN\r
+\r
4C-4B-F9 (hex) Shandong Linkotech Electronic Co., Ltd.\r
600000-6FFFFF (base 16) Shandong Linkotech Electronic Co., Ltd.\r
22nd Floor, Building 2, Aosheng Building, No.1166 Xinyi Street, High-tech Zone\r
Fareham Hampshire PO15 5SD\r
GB\r
\r
-1C-A0-D3 (hex) Private\r
-700000-7FFFFF (base 16) Private\r
- Omonoia Avenue\r
- Limassol Cyprus 3045\r
- CY\r
-\r
D0-16-F0 (hex) Top Guard Technologies\r
D00000-DFFFFF (base 16) Top Guard Technologies\r
9200 Corporate BlvdSuite 250\r
Budapest, IX. 1095\r
HU\r
\r
+54-08-3B (hex) ASCS Sp. z o.o.\r
+700000-7FFFFF (base 16) ASCS Sp. z o.o.\r
+ Zwirki i Wigury 65A\r
+ Mikolow Slask 43-190 Mikolow\r
+ PL\r
+\r
+70-06-92 (hex) ScoreBird, LLC\r
+C00000-CFFFFF (base 16) ScoreBird, LLC\r
+ 6001 Kenwood Drive\r
+ Nashville TN 37215\r
+ US\r
+\r
+70-06-92 (hex) JMA Wireless\r
+800000-8FFFFF (base 16) JMA Wireless\r
+ 140 Cortland Ave\r
+ Syracuse NY 13202\r
+ US\r
+\r
+1C-A0-D3 (hex) U-TX Technologies Ltd\r
+700000-7FFFFF (base 16) U-TX Technologies Ltd\r
+ Omonoia Avenue\r
+ Limassol Cyprus 3045\r
+ CY\r
+\r
20-85-93 (hex) Great Lite International\r
700000-7FFFFF (base 16) Great Lite International\r
11F., No.207-2, Sec. 3, Beixin Rd., Xindian Dist.,\r
1307, building A4, workshop 2, LiLang International Jewelry Industrial Park, 31 Bulan Road, xialilang community, Nanwan street, Longgang District\r
Shenzhen Guangdong 518112\r
CN\r
+\r
+70-06-92 (hex) BOSSCCTV CO., LTD\r
+300000-3FFFFF (base 16) BOSSCCTV CO., LTD\r
+ 6F.-6, No. 22, Sec. 2, Keelung Rd., Xinyi Dist.\r
+ Taipei City Taiwan (R.O.C.) 11052\r
+ TW\r
+\r
+70-06-92 (hex) Techology, LLC\r
+000000-0FFFFF (base 16) Techology, LLC\r
+ 2335 S Ellis St\r
+ Lakewood CO 80228\r
+ US\r
+\r
+70-06-92 (hex) CANAAN CREATIVE CO.,LTD.\r
+500000-5FFFFF (base 16) CANAAN CREATIVE CO.,LTD.\r
+ Building 1, Yard 1, No.81 Beiqing Road, Haidian District\r
+ Beijing 100144\r
+ CN\r
Hwaseong-city Gyungki-do 445-894\r
KR\r
\r
-70-B3-D5 (hex) Private\r
-6F4000-6F4FFF (base 16) Private\r
-\r
70-B3-D5 (hex) Guan Show Technologe Co., Ltd.\r
1FC000-1FCFFF (base 16) Guan Show Technologe Co., Ltd.\r
No.127, Jianguo 1st Rd., Lingya Dist.\r
Remscheid 42897\r
DE\r
\r
-8C-1F-64 (hex) Murata Manufacturing CO., Ltd.\r
-B14000-B14FFF (base 16) Murata Manufacturing CO., Ltd.\r
- 4-3-8, Minatomirai, Nishi-ku\r
- Yokohama-shi Kanagawa-ken 220-0012\r
- JP\r
-\r
8C-1F-64 (hex) CHASEO CONNECTOME\r
744000-744FFF (base 16) CHASEO CONNECTOME\r
2floor, 14, Nambusunhwan-ro 378-gil\r
Gangnam-gu seoul 06296\r
KR\r
\r
+8C-1F-64 (hex) Murata Manufacturing CO., Ltd.\r
+B14000-B14FFF (base 16) Murata Manufacturing CO., Ltd.\r
+ 4-3-8, Minatomirai, Nishi-ku\r
+ Yokohama-shi Kanagawa-ken 220-0012\r
+ JP\r
+\r
8C-1F-64 (hex) ABB\r
6D0000-6D0FFF (base 16) ABB\r
Fulachstrasse 150\r
Zhunan Township Miaoli County 35059\r
TW\r
\r
-8C-1F-64 (hex) Watchdog Systems\r
-251000-251FFF (base 16) Watchdog Systems\r
- 334 W Weatherby Pl\r
- Chandler 85286\r
- US\r
-\r
8C-1F-64 (hex) Dacom West GmbH\r
895000-895FFF (base 16) Dacom West GmbH\r
Schallbruch 19-21\r
Haan NRW 42781\r
DE\r
\r
+8C-1F-64 (hex) Watchdog Systems\r
+251000-251FFF (base 16) Watchdog Systems\r
+ 334 W Weatherby Pl\r
+ Chandler 85286\r
+ US\r
+\r
8C-1F-64 (hex) KST technology\r
F84000-F84FFF (base 16) KST technology\r
KST B/D 4-5, Wiryeseong-daero 12-gil\r
Songpa-gu Seoul 05636\r
KR\r
\r
-8C-1F-64 (hex) UniTik Technology Co., Limited\r
-8E3000-8E3FFF (base 16) UniTik Technology Co., Limited\r
- 7F.-3, No. 15, Lane 360, Sec. 1, Neihu Rd., Neihu Dist.,\r
- Taipei 114064\r
- TW\r
-\r
8C-1F-64 (hex) Soha Jin\r
BF1000-BF1FFF (base 16) Soha Jin\r
North Campus, Wenzhou University\r
Padova 35127\r
IT\r
\r
-8C-1F-64 (hex) Lumiplan Duhamel\r
-A0D000-A0DFFF (base 16) Lumiplan Duhamel\r
- 2 rue de l'industrie\r
- Domène Isère 38420\r
- FR\r
+8C-1F-64 (hex) UniTik Technology Co., Limited\r
+8E3000-8E3FFF (base 16) UniTik Technology Co., Limited\r
+ 7F.-3, No. 15, Lane 360, Sec. 1, Neihu Rd., Neihu Dist.,\r
+ Taipei 114064\r
+ TW\r
\r
8C-1F-64 (hex) DB SAS\r
77B000-77BFFF (base 16) DB SAS\r
Chuo-ku Tokyo 1030011\r
JP\r
\r
-8C-1F-64 (hex) Landis+Gyr Equipamentos de Medição Ltda\r
-293000-293FFF (base 16) Landis+Gyr Equipamentos de Medição Ltda\r
- Hasdrubal Bellegard, 400, CIC\r
- Curitiba Paraná 81460-120\r
- BR\r
-\r
8C-1F-64 (hex) AW-SOM Technologies LLC\r
0F4000-0F4FFF (base 16) AW-SOM Technologies LLC\r
1284 SOM Center Rd. -Suite 145\r
Mayfield Heights OH 44124-2048\r
US\r
\r
+8C-1F-64 (hex) Lumiplan Duhamel\r
+A0D000-A0DFFF (base 16) Lumiplan Duhamel\r
+ 2 rue de l'industrie\r
+ Domène Isère 38420\r
+ FR\r
+\r
+8C-1F-64 (hex) Landis+Gyr Equipamentos de Medição Ltda\r
+293000-293FFF (base 16) Landis+Gyr Equipamentos de Medição Ltda\r
+ Hasdrubal Bellegard, 400, CIC\r
+ Curitiba Paraná 81460-120\r
+ BR\r
+\r
8C-1F-64 (hex) MOSCA Elektronik und Antriebstechnik GmbH\r
803000-803FFF (base 16) MOSCA Elektronik und Antriebstechnik GmbH\r
Albert-Einstein-Straße 5\r
Offenau Baden-Wuerttemberg 74254\r
DE\r
\r
-8C-1F-64 (hex) PuS GmbH und Co. KG\r
-EE1000-EE1FFF (base 16) PuS GmbH und Co. KG\r
- Hainstr. 13\r
- Gera Germany 07545\r
- DE\r
-\r
8C-1F-64 (hex) Primalucelab isrl\r
59A000-59AFFF (base 16) Primalucelab isrl\r
VIA BRENTELLA 53/7\r
San Giovanni Bianco Bergamo 24015\r
IT\r
\r
+8C-1F-64 (hex) PuS GmbH und Co. KG\r
+EE1000-EE1FFF (base 16) PuS GmbH und Co. KG\r
+ Hainstr. 13\r
+ Gera Germany 07545\r
+ DE\r
+\r
8C-1F-64 (hex) Albotronic\r
F24000-F24FFF (base 16) Albotronic\r
Bunsenstr. 3\r
Okaya Nagano 3940081\r
JP\r
\r
+70-B3-D5 (hex) WDI Wise Device Inc.\r
+6F4000-6F4FFF (base 16) WDI Wise Device Inc.\r
+ 135 west beaver creek rd unit 2\r
+ Richmond hill Ontario L4B 1l2\r
+ CA\r
+\r
+8C-1F-64 (hex) i2s\r
+286000-286FFF (base 16) i2s\r
+ 28 Rue Jean Perrin\r
+ France 33600\r
+ FR\r
+\r
70-B3-D5 (hex) EVCO SPA\r
A80000-A80FFF (base 16) EVCO SPA\r
VIA FELTRE N. 81\r
Waltham MA 02453\r
US\r
\r
-8C-1F-64 (hex) ANDA TELECOM PVT LTD\r
-406000-406FFF (base 16) ANDA TELECOM PVT LTD\r
- E-36 Amar Colony, Lajpat Nagar, New Delhi\r
- New Delhi Delhi 110024\r
- IN\r
-\r
8C-1F-64 (hex) LYNKX\r
EE6000-EE6FFF (base 16) LYNKX\r
776 route du balcon\r
Les Adrets 38190\r
FR\r
\r
+8C-1F-64 (hex) ANDA TELECOM PVT LTD\r
+406000-406FFF (base 16) ANDA TELECOM PVT LTD\r
+ E-36 Amar Colony, Lajpat Nagar, New Delhi\r
+ New Delhi Delhi 110024\r
+ IN\r
+\r
8C-1F-64 (hex) Chakra Technology Ltd\r
2BB000-2BBFFF (base 16) Chakra Technology Ltd\r
7F, NO. 93, SHUEI YUAN RD.\r
Warsaw Mazovia 02-495\r
PL\r
\r
-8C-1F-64 (hex) AI-BLOX\r
-3B7000-3B7FFF (base 16) AI-BLOX\r
- Ikaroslaan 1\r
- Zaventem 1930\r
- BE\r
-\r
8C-1F-64 (hex) Header Rhyme\r
9C0000-9C0FFF (base 16) Header Rhyme\r
C401, 410, Jeongseojin-ro\r
Incheon Incheon 22689\r
KR\r
\r
-8C-1F-64 (hex) HomyHub SL\r
-B65000-B65FFF (base 16) HomyHub SL\r
- Sierra de Atapuerca 13Correos Labs\r
- MADRID Madrid 28050\r
- ES\r
+8C-1F-64 (hex) AI-BLOX\r
+3B7000-3B7FFF (base 16) AI-BLOX\r
+ Ikaroslaan 1\r
+ Zaventem 1930\r
+ BE\r
\r
8C-1F-64 (hex) Wende Tan\r
691000-691FFF (base 16) Wende Tan\r
Beijing 100084\r
CN\r
\r
-8C-1F-64 (hex) Tunstall A/S\r
-C59000-C59FFF (base 16) Tunstall A/S\r
- Niels Bohrs vej 42\r
- Stilling Skanderborg 8660\r
- DK\r
+8C-1F-64 (hex) HomyHub SL\r
+B65000-B65FFF (base 16) HomyHub SL\r
+ Sierra de Atapuerca 13Correos Labs\r
+ MADRID Madrid 28050\r
+ ES\r
\r
8C-1F-64 (hex) CI SYSTEMS ISRAEL LTD\r
9FB000-9FBFFF (base 16) CI SYSTEMS ISRAEL LTD\r
Migdal HaEmek 2306990\r
IL\r
\r
-8C-1F-64 (hex) Embeddded Plus Plus\r
-62D000-62DFFF (base 16) Embeddded Plus Plus\r
- Filmbyen 23, 2. tv.\r
- Aarhus C 8000\r
+8C-1F-64 (hex) Tunstall A/S\r
+C59000-C59FFF (base 16) Tunstall A/S\r
+ Niels Bohrs vej 42\r
+ Stilling Skanderborg 8660\r
DK\r
\r
8C-1F-64 (hex) XTIA Ltd.\r
Shinagawa-Ku Tokyo 140-0002\r
JP\r
\r
+8C-1F-64 (hex) Embeddded Plus Plus\r
+62D000-62DFFF (base 16) Embeddded Plus Plus\r
+ Filmbyen 23, 2. tv.\r
+ Aarhus C 8000\r
+ DK\r
+\r
8C-1F-64 (hex) Nuphoton Technologies\r
FDC000-FDCFFF (base 16) Nuphoton Technologies\r
41610 CORNING PLACE\r
MURRIETA CA 92562\r
US\r
\r
-8C-1F-64 (hex) Potter Electric Signal Co. LLC\r
-CC5000-CC5FFF (base 16) Potter Electric Signal Co. LLC\r
- 1609 Park 370 Place\r
- Hazelwood MO 63042\r
- US\r
-\r
8C-1F-64 (hex) Alpha Bridge Technologies Private Limited\r
20E000-20EFFF (base 16) Alpha Bridge Technologies Private Limited\r
T5-1001, Parsvnath Green Ville, Sector 48 , Sohna Road \r
Gurgaon Haryana 122018\r
IN\r
\r
-8C-1F-64 (hex) LINEAGE POWER PVT LTD.,\r
-7DC000-7DCFFF (base 16) LINEAGE POWER PVT LTD.,\r
- 30-A1, KIADB, 1ST PHASE INDUSTRIAL ESTATE,KUMBALGODU, BANGALORE-MYSORE ROAD\r
- BANGALORE KARNATAKA 560074\r
- IN\r
+8C-1F-64 (hex) Potter Electric Signal Co. LLC\r
+CC5000-CC5FFF (base 16) Potter Electric Signal Co. LLC\r
+ 1609 Park 370 Place\r
+ Hazelwood MO 63042\r
+ US\r
\r
8C-1F-64 (hex) Monnit Corporation\r
ECF000-ECFFFF (base 16) Monnit Corporation\r
Kaysville UT 84037\r
US\r
\r
+8C-1F-64 (hex) LINEAGE POWER PVT LTD.,\r
+7DC000-7DCFFF (base 16) LINEAGE POWER PVT LTD.,\r
+ 30-A1, KIADB, 1ST PHASE INDUSTRIAL ESTATE,KUMBALGODU, BANGALORE-MYSORE ROAD\r
+ BANGALORE KARNATAKA 560074\r
+ IN\r
+\r
8C-1F-64 (hex) Gnewtek photoelectric technology Ltd.\r
D98000-D98FFF (base 16) Gnewtek photoelectric technology Ltd.\r
No. 238-15, Ln. 220, Sec. 1, Minyi Rd., Wugu Dist., New Taipei City 248 , Taiwan (R.O.C.)\r
Innsbruck 6020\r
AT\r
\r
-8C-1F-64 (hex) Sanwa Supply Inc.\r
-06B000-06BFFF (base 16) Sanwa Supply Inc.\r
- 1-10-1 Tamachi Kita-ku\r
- Okayama Okayama Prefecture 700-0825\r
- JP\r
-\r
-70-B3-D5 (hex) TIAMA\r
-8BA000-8BAFFF (base 16) TIAMA\r
- 215 Chemin du Grand Revoyet\r
- Saint-Genis Laval Auvergne Rhone Alpes 69230\r
- FR\r
-\r
8C-1F-64 (hex) TIAMA\r
63B000-63BFFF (base 16) TIAMA\r
215 Chemin du Grand Revoyet\r
Saint-Genis Laval Auvergne Rhone Alpes 69230\r
FR\r
\r
-8C-1F-64 (hex) Bipom Electronics, Inc.\r
-211000-211FFF (base 16) Bipom Electronics, Inc.\r
- 9788 Clarewood Dr. 306\r
- Houston TX 77036\r
- US\r
-\r
70-B3-D5 (hex) TIAMA\r
4BC000-4BCFFF (base 16) TIAMA\r
215 Chemin du Grand Revoyet\r
Saint-Genis Laval Auvergne Rhone Alpes 69230\r
FR\r
\r
+70-B3-D5 (hex) TIAMA\r
+8BA000-8BAFFF (base 16) TIAMA\r
+ 215 Chemin du Grand Revoyet\r
+ Saint-Genis Laval Auvergne Rhone Alpes 69230\r
+ FR\r
+\r
+8C-1F-64 (hex) Sanwa Supply Inc.\r
+06B000-06BFFF (base 16) Sanwa Supply Inc.\r
+ 1-10-1 Tamachi Kita-ku\r
+ Okayama Okayama Prefecture 700-0825\r
+ JP\r
+\r
8C-1F-64 (hex) Planet Innovation Products Inc.\r
978000-978FFF (base 16) Planet Innovation Products Inc.\r
80 Technology Dr.\r
Ankara TR 06800\r
TR\r
\r
+8C-1F-64 (hex) Bipom Electronics, Inc.\r
+211000-211FFF (base 16) Bipom Electronics, Inc.\r
+ 9788 Clarewood Dr. 306\r
+ Houston TX 77036\r
+ US\r
+\r
8C-1F-64 (hex) Adasky Ltd.\r
71B000-71BFFF (base 16) Adasky Ltd.\r
7 Hamada Street\r
Higashihiroshima Hiroshima 7390144\r
JP\r
\r
+8C-1F-64 (hex) Grossenbacher Systeme AG\r
+8DF000-8DFFFF (base 16) Grossenbacher Systeme AG\r
+ Spinnereistrasse 10\r
+ St. Gallen 9008\r
+ CH\r
+\r
+8C-1F-64 (hex) Shenyang Taihua Technology Co., Ltd.\r
+32B000-32BFFF (base 16) Shenyang Taihua Technology Co., Ltd.\r
+ No. 33-48, Quanyun Fifth Road, Hunnan District\r
+ Shenyang City Liaoning Province 110179\r
+ CN\r
+\r
+8C-1F-64 (hex) Sicon srl\r
+907000-907FFF (base 16) Sicon srl\r
+ Via Sila 1/3\r
+ Isola Vicentina Vicenza 36033\r
+ IT\r
+\r
8C-1F-64 (hex) YUYAMA MFG Co.,Ltd\r
D42000-D42FFF (base 16) YUYAMA MFG Co.,Ltd\r
1-4-30\r
MEISHINGUCHI,TOYONAKA OSAKA 561-0841\r
JP\r
\r
-8C-1F-64 (hex) Grossenbacher Systeme AG\r
-8DF000-8DFFFF (base 16) Grossenbacher Systeme AG\r
- Spinnereistrasse 10\r
- St. Gallen 9008\r
+8C-1F-64 (hex) Hiwin Mikrosystem Corp.\r
+423000-423FFF (base 16) Hiwin Mikrosystem Corp.\r
+ NO 6 JINGKE CENTRAL RD TAICHUNG CITY TAIWAN 40841\r
+ TAICHUNG 40841\r
+ TW\r
+\r
+8C-1F-64 (hex) AMETEK CTS GMBH\r
+D21000-D21FFF (base 16) AMETEK CTS GMBH\r
+ Sternenhofstrasse 15\r
+ Reinach BL 4153\r
CH\r
\r
+8C-1F-64 (hex) 3D perception AS\r
+A81000-A81FFF (base 16) 3D perception AS\r
+ Nye Vakas vei 14\r
+ Hvalstad 1395\r
+ NO\r
+\r
+8C-1F-64 (hex) Power Electronics Espana, S.L.\r
+0D8000-0D8FFF (base 16) Power Electronics Espana, S.L.\r
+ C/ Leonardo Da Vinci, 24-26\r
+ Paterna Valencia 46980\r
+ ES\r
+\r
+8C-1F-64 (hex) joint analytical systems GmbH\r
+31B000-31BFFF (base 16) joint analytical systems GmbH\r
+ Carl-Zeiss-Str. 49\r
+ Moers NRW 47445\r
+ DE\r
+\r
+8C-1F-64 (hex) Midlands Technical Co., Ltd.\r
+DD4000-DD4FFF (base 16) Midlands Technical Co., Ltd.\r
+ 1-29-4 5F Takadanobaba\r
+ shinjyuku-ku Tokyo 169-0075\r
+ JP\r
+\r
70-B3-D5 (hex) System West dba ICS Electronics\r
E06000-E06FFF (base 16) System West dba ICS Electronics\r
7034 Commerce Circle Suite A\r
Ried Bavaria 86510\r
DE\r
\r
+8C-1F-64 (hex) Sicon srl\r
+187000-187FFF (base 16) Sicon srl\r
+ Via Sila 1/3\r
+ Isola Vicentina Vicenza 36033\r
+ IT\r
+\r
8C-1F-64 (hex) DAVE SRL\r
9AB000-9ABFFF (base 16) DAVE SRL\r
VIA TALPONEDO 29/A\r
Schaffhausen 8200\r
CH\r
\r
-8C-1F-64 (hex) Sicon srl\r
-187000-187FFF (base 16) Sicon srl\r
- Via Sila 1/3\r
- Isola Vicentina Vicenza 36033\r
- IT\r
-\r
8C-1F-64 (hex) ComVetia AG\r
E86000-E86FFF (base 16) ComVetia AG\r
Wittenwilerstrasse 31\r
Pretoria Gauteng 0182\r
ZA\r
\r
-8C-1F-64 (hex) Orbital Astronautics Ltd\r
-369000-369FFF (base 16) Orbital Astronautics Ltd\r
- Atlas Building, Harwell Campus\r
- Didcot Oxfordshire OX11 0QX\r
- GB\r
-\r
8C-1F-64 (hex) XIAMEN ZHIXIAOJIN INTELLIGENT TECHNOLOGY CO., LTD\r
38C000-38CFFF (base 16) XIAMEN ZHIXIAOJIN INTELLIGENT TECHNOLOGY CO., LTD\r
8th Floor, 99-4, Zhigu Dong Yi Road, Xike Town, Tong 'an District\r
Xiamen Fujian 361100\r
CN\r
\r
+8C-1F-64 (hex) Orbital Astronautics Ltd\r
+369000-369FFF (base 16) Orbital Astronautics Ltd\r
+ Atlas Building, Harwell Campus\r
+ Didcot Oxfordshire OX11 0QX\r
+ GB\r
+\r
8C-1F-64 (hex) Technology for Energy Corp\r
9E2000-9E2FFF (base 16) Technology for Energy Corp\r
10737 Lexington Dr\r
Danshui Dist. New Taipei City 25152\r
TW\r
\r
-8C-1F-64 (hex) Zaruc Tecnologia LTDA\r
-BB3000-BB3FFF (base 16) Zaruc Tecnologia LTDA\r
- Rua Afonso Arinos Melo Franco, 181, Parque Residencial Laranjeiras\r
- Serra Espírito Santo 29165-491\r
- BR\r
-\r
70-B3-D5 (hex) RF Code\r
ADB000-ADBFFF (base 16) RF Code\r
9229 Waterford Centre Blvd #500\r
Kfar Saba 4464312\r
IL\r
\r
+8C-1F-64 (hex) Zaruc Tecnologia LTDA\r
+BB3000-BB3FFF (base 16) Zaruc Tecnologia LTDA\r
+ Rua Afonso Arinos Melo Franco, 181, Parque Residencial Laranjeiras\r
+ Serra Espírito Santo 29165-491\r
+ BR\r
+\r
70-B3-D5 (hex) Exascend, Inc.\r
851000-851FFF (base 16) Exascend, Inc.\r
530 Lawrence Expy., #416\r
Hazelwood MO 63042\r
US\r
\r
-8C-1F-64 (hex) CubeWorks, Inc.\r
-88E000-88EFFF (base 16) CubeWorks, Inc.\r
- 1600 Huron ParkwayOFC 520-2364\r
- Ann Arbor MI 48109\r
- US\r
-\r
8C-1F-64 (hex) Scenario Automation\r
E10000-E10FFF (base 16) Scenario Automation\r
Rua Paulo Elias, 216\r
São Carlos São Paulo 13564400\r
BR\r
\r
+8C-1F-64 (hex) CubeWorks, Inc.\r
+88E000-88EFFF (base 16) CubeWorks, Inc.\r
+ 1600 Huron ParkwayOFC 520-2364\r
+ Ann Arbor MI 48109\r
+ US\r
+\r
8C-1F-64 (hex) M-Pulse GmbH & Co.KG\r
18B000-18BFFF (base 16) M-Pulse GmbH & Co.KG\r
Haunerbusch110\r
Kierspe NRW 58566\r
DE\r
\r
+8C-1F-64 (hex) Bitmapper Integration Technologies Private Limited\r
+84A000-84AFFF (base 16) Bitmapper Integration Technologies Private Limited\r
+ Shewale Centre A, Survey No. 22/2 CTS No 4691, 4889, 4990\r
+ Pune Maharashtra 411018\r
+ IN\r
+\r
+8C-1F-64 (hex) ARKRAY,Inc.Kyoto Laboratory\r
+CB7000-CB7FFF (base 16) ARKRAY,Inc.Kyoto Laboratory\r
+ Kamigyo-ku Gansui-cho 59 Yousuien-nai\r
+ Kyoto Kyoto-fu 602-0008\r
+ JP\r
+\r
+8C-1F-64 (hex) EA Elektro-Automatik\r
+E92000-E92FFF (base 16) EA Elektro-Automatik\r
+ Helmholtzstraße 31-37\r
+ Viersen Nordrhein-Westfalen 41747\r
+ DE\r
+\r
8C-1F-64 (hex) EIDOS s.r.l.\r
99E000-99EFFF (base 16) EIDOS s.r.l.\r
via dell'Industria, 11 Z.I. Fontaneto \r
CHIERI Turin 10023\r
IT\r
\r
+8C-1F-64 (hex) Nilfisk Food\r
+64E000-64EFFF (base 16) Nilfisk Food\r
+ Blytækkervej 2\r
+ Aalborg 9000\r
+ DK\r
+\r
+8C-1F-64 (hex) Gamber-Johnson LLC\r
+CB5000-CB5FFF (base 16) Gamber-Johnson LLC\r
+ 5001 Joerns Dr\r
+ Stevens Point WI 54481\r
+ US\r
+\r
+8C-1F-64 (hex) Rax-Tech International\r
+A77000-A77FFF (base 16) Rax-Tech International\r
+ 5th floor, 5/391 Kaleeswari towerTambaram-Velachery Main road, Medavakkam\r
+ Chennai Tamil Nadu 600100\r
+ IN\r
+\r
70-B3-D5 (hex) YUYAMA MFG Co.,Ltd\r
BBB000-BBBFFF (base 16) YUYAMA MFG Co.,Ltd\r
3-3-1\r
Bangalore Karnataka 560038\r
IN\r
\r
-70-B3-D5 (hex) Liberator Pty Ltd\r
-561000-561FFF (base 16) Liberator Pty Ltd\r
- 265?Gilbert Street\r
- Adelaide SA 5000\r
- AU\r
-\r
70-B3-D5 (hex) EASTERN SCIENCE & TECHNOLOGY CO., LTD\r
2DF000-2DFFFF (base 16) EASTERN SCIENCE & TECHNOLOGY CO., LTD\r
6F.,No.963, Zhongzheng Rd, Zhonghe Dist.\r
Dinkelsbuehl Bavaria 91550\r
DE\r
\r
-8C-1F-64 (hex) EPC Energy Inc\r
-C51000-C51FFF (base 16) EPC Energy Inc\r
- 780 Montague Expy, Building 1, Suite 101\r
- San Jose CA 95131\r
- US\r
-\r
8C-1F-64 (hex) Flextronics International Kft\r
07A000-07AFFF (base 16) Flextronics International Kft\r
38. Zrinyi Str.\r
Sainte Luce Sur Loire Loire Atlantique 44980\r
FR\r
\r
+8C-1F-64 (hex) EPC Energy Inc\r
+C51000-C51FFF (base 16) EPC Energy Inc\r
+ 780 Montague Expy, Building 1, Suite 101\r
+ San Jose CA 95131\r
+ US\r
+\r
8C-1F-64 (hex) TMY TECHNOLOGY INC.\r
882000-882FFF (base 16) TMY TECHNOLOGY INC.\r
Rm. E, 3F., No. 3, Yuandong Rd., Banqiao Dist., \r
Moscow 129344\r
RU\r
\r
-8C-1F-64 (hex) Pixus Technologies Inc.\r
-E12000-E12FFF (base 16) Pixus Technologies Inc.\r
- 50 Bathurst Dr., Unit 6\r
- Waterloo Ontario N2V 2C5\r
- CA\r
-\r
-8C-1F-64 (hex) Bobeesc Co.\r
-DFB000-DFBFFF (base 16) Bobeesc Co.\r
- 100, Nonggongdanji-gil, Sokcho-si, Gangwon-do, Republic of Korea\r
- sokcho gangwon 24899\r
- KR\r
-\r
8C-1F-64 (hex) Idneo Technologies S.A.U.\r
8F6000-8F6FFF (base 16) Idneo Technologies S.A.U.\r
Carrer de Dalt, 3\r
MONTREAL Quebec H3C 2G9\r
CA\r
\r
+8C-1F-64 (hex) Bobeesc Co.\r
+DFB000-DFBFFF (base 16) Bobeesc Co.\r
+ 100, Nonggongdanji-gil, Sokcho-si, Gangwon-do, Republic of Korea\r
+ sokcho gangwon 24899\r
+ KR\r
+\r
+8C-1F-64 (hex) Pixus Technologies Inc.\r
+E12000-E12FFF (base 16) Pixus Technologies Inc.\r
+ 50 Bathurst Dr., Unit 6\r
+ Waterloo Ontario N2V 2C5\r
+ CA\r
+\r
8C-1F-64 (hex) InfraChen Technology Co., Ltd.\r
0BB000-0BBFFF (base 16) InfraChen Technology Co., Ltd.\r
14F., No. 90, Xingde Rd., Sanchong Dist.\r
New Taipei City 24158\r
TW\r
\r
-8C-1F-64 (hex) Solid State Supplies Ltd\r
-43D000-43DFFF (base 16) Solid State Supplies Ltd\r
- Ravensbank Business ParkHedera Road\r
- Redditch B98 9EY\r
- GB\r
-\r
8C-1F-64 (hex) ALZAJEL MODERN TELECOMMUNICATION\r
FE9000-FE9FFF (base 16) ALZAJEL MODERN TELECOMMUNICATION\r
BOX: 3932\r
RUWI MUSCAT 112\r
OM\r
\r
+8C-1F-64 (hex) Solid State Supplies Ltd\r
+43D000-43DFFF (base 16) Solid State Supplies Ltd\r
+ Ravensbank Business ParkHedera Road\r
+ Redditch B98 9EY\r
+ GB\r
+\r
8C-1F-64 (hex) inomatic GmbH\r
12E000-12EFFF (base 16) inomatic GmbH\r
Karl-Braun-Straße 12\r
Fukuoka-shi Fukuoka 8120015\r
JP\r
\r
+8C-1F-64 (hex) miniDSP\r
+4AF000-4AFFFF (base 16) miniDSP\r
+ Unit 307, 13 Wang Hoi Road\r
+ Kowloon Bay Kowloon na\r
+ HK\r
+\r
8C-1F-64 (hex) Enerthing GmbH\r
8D0000-8D0FFF (base 16) Enerthing GmbH\r
An der Schusterinsel 3a\r
Shenzhen Guangdong 518108\r
CN\r
\r
-8C-1F-64 (hex) miniDSP\r
-4AF000-4AFFFF (base 16) miniDSP\r
- Unit 307, 13 Wang Hoi Road\r
- Kowloon Bay Kowloon na\r
- HK\r
-\r
-8C-1F-64 (hex) Shanghai Sizhong Information Technology Co., Ltd\r
-9CB000-9CBFFF (base 16) Shanghai Sizhong Information Technology Co., Ltd\r
- Room 402 Building 13 No.518 XinZhuan Road Caohejing Hi-tech Park,Xinqiao Town?SongJiang District,ShangHai\r
- Shanghai Shanghai 201612\r
- CN\r
-\r
8C-1F-64 (hex) VA SYD\r
C1E000-C1EFFF (base 16) VA SYD\r
Box 191\r
Saint-Genis Laval Auvergne Rhone Alpes 69230\r
FR\r
\r
+8C-1F-64 (hex) Shanghai Sizhong Information Technology Co., Ltd\r
+9CB000-9CBFFF (base 16) Shanghai Sizhong Information Technology Co., Ltd\r
+ Room 402 Building 13 No.518 XinZhuan Road Caohejing Hi-tech Park,Xinqiao Town?SongJiang District,ShangHai\r
+ Shanghai Shanghai 201612\r
+ CN\r
+\r
70-B3-D5 (hex) TIAMA\r
C4A000-C4AFFF (base 16) TIAMA\r
215 Chemin du Grand Revoyet\r
Saint-Genis Laval Auvergne Rhone Alpes 69230\r
FR\r
\r
-8C-1F-64 (hex) ard sa\r
-550000-550FFF (base 16) ard sa\r
- Micropolis Bat Clematis\r
- Gap France 05000\r
- FR\r
-\r
-8C-1F-64 (hex) Beijing Yahong Century Technology Co., Ltd\r
-FD7000-FD7FFF (base 16) Beijing Yahong Century Technology Co., Ltd\r
- Floor 3, Building 2, Yard 3, Gaolizhang Road, Haidian District\r
- Beijing Beijing 100095\r
- CN\r
-\r
70-B3-D5 (hex) Planet Innovation Products Inc.\r
C75000-C75FFF (base 16) Planet Innovation Products Inc.\r
80 Technology Dr.\r
San Dimas CA 91773\r
US\r
\r
-8C-1F-64 (hex) YUYAMA MFG Co.,Ltd\r
-F79000-F79FFF (base 16) YUYAMA MFG Co.,Ltd\r
- 1-4-30\r
- MEISHINGUCHI,TOYONAKA OSAKA 561-0841\r
- JP\r
+8C-1F-64 (hex) ard sa\r
+550000-550FFF (base 16) ard sa\r
+ Micropolis Bat Clematis\r
+ Gap France 05000\r
+ FR\r
+\r
+8C-1F-64 (hex) Beijing Yahong Century Technology Co., Ltd\r
+FD7000-FD7FFF (base 16) Beijing Yahong Century Technology Co., Ltd\r
+ Floor 3, Building 2, Yard 3, Gaolizhang Road, Haidian District\r
+ Beijing Beijing 100095\r
+ CN\r
\r
8C-1F-64 (hex) BRS Sistemas Eletrônicos\r
D73000-D73FFF (base 16) BRS Sistemas Eletrônicos\r
Porto Alegre RS 91380-000\r
BR\r
\r
-8C-1F-64 (hex) Cool Air Incorporated\r
-90C000-90CFFF (base 16) Cool Air Incorporated\r
- 1544 134th Ave NEHam Lake\r
- Ham Lake MN 55304\r
- US\r
+8C-1F-64 (hex) YUYAMA MFG Co.,Ltd\r
+F79000-F79FFF (base 16) YUYAMA MFG Co.,Ltd\r
+ 1-4-30\r
+ MEISHINGUCHI,TOYONAKA OSAKA 561-0841\r
+ JP\r
\r
8C-1F-64 (hex) China Information Technology Designing &Consulting Institute Co.,Ltd.\r
FA4000-FA4FFF (base 16) China Information Technology Designing &Consulting Institute Co.,Ltd.\r
Beijing Beijing 100048\r
CN\r
\r
-70-B3-D5 (hex) LAMTEC Mess- und Regeltechnik für Feuerungen GmbH & Co. KG\r
-5BC000-5BCFFF (base 16) LAMTEC Mess- und Regeltechnik für Feuerungen GmbH & Co. KG\r
- Wiesenstraße 6\r
- Walldorf Baden Württemberg 69190\r
- DE\r
-\r
8C-1F-64 (hex) HOSCH Gebäude Automation Neue Produkte GmbH\r
5E7000-5E7FFF (base 16) HOSCH Gebäude Automation Neue Produkte GmbH\r
Rheinstr 9\r
Teltow 14513\r
DE\r
\r
-8C-1F-64 (hex) PROFITT Ltd\r
-40D000-40DFFF (base 16) PROFITT Ltd\r
- office 5H, block 14-2 lit.A, Raevsky av.\r
- Saint-Petersburg 194064\r
- RU\r
+70-B3-D5 (hex) LAMTEC Mess- und Regeltechnik für Feuerungen GmbH & Co. KG\r
+5BC000-5BCFFF (base 16) LAMTEC Mess- und Regeltechnik für Feuerungen GmbH & Co. KG\r
+ Wiesenstraße 6\r
+ Walldorf Baden Württemberg 69190\r
+ DE\r
+\r
+8C-1F-64 (hex) Cool Air Incorporated\r
+90C000-90CFFF (base 16) Cool Air Incorporated\r
+ 1544 134th Ave NEHam Lake\r
+ Ham Lake MN 55304\r
+ US\r
\r
8C-1F-64 (hex) Fujian Satlink Electronics Co., Ltd\r
A3B000-A3BFFF (base 16) Fujian Satlink Electronics Co., Ltd\r
Quanzhou Fujian 362000\r
CN\r
\r
-8C-1F-64 (hex) RF Code\r
-596000-596FFF (base 16) RF Code\r
- 9229 Waterford Centre Blvd #500\r
- Austin TX 78758\r
- US\r
-\r
8C-1F-64 (hex) L-signature\r
83D000-83DFFF (base 16) L-signature\r
44, Charyong-ro 48beon-gil, Uichang-gu, Changwon-si\r
Gyeongsangnam-do 51391\r
KR\r
\r
+8C-1F-64 (hex) PROFITT Ltd\r
+40D000-40DFFF (base 16) PROFITT Ltd\r
+ office 5H, block 14-2 lit.A, Raevsky av.\r
+ Saint-Petersburg 194064\r
+ RU\r
+\r
70-B3-D5 (hex) RF Code\r
A51000-A51FFF (base 16) RF Code\r
9229 Waterford Centre Blvd #500\r
Lacombe AB T4L 1Y9\r
CA\r
\r
-8C-1F-64 (hex) Taiko Audio B.V.\r
-32C000-32CFFF (base 16) Taiko Audio B.V.\r
- Zandbreeweg 6\r
- Oldenzaal Overijssel 7577 BZ\r
- NL\r
+8C-1F-64 (hex) RF Code\r
+596000-596FFF (base 16) RF Code\r
+ 9229 Waterford Centre Blvd #500\r
+ Austin TX 78758\r
+ US\r
\r
8C-1F-64 (hex) Packetalk LLC\r
5CE000-5CEFFF (base 16) Packetalk LLC\r
Ahmedabad Gujarat 380059\r
IN\r
\r
+8C-1F-64 (hex) Taiko Audio B.V.\r
+32C000-32CFFF (base 16) Taiko Audio B.V.\r
+ Zandbreeweg 6\r
+ Oldenzaal Overijssel 7577 BZ\r
+ NL\r
+\r
+70-B3-D5 (hex) Liberator Pty Ltd\r
+561000-561FFF (base 16) Liberator Pty Ltd\r
+ 265 Gilbert Street\r
+ Adelaide SA 5000\r
+ AU\r
+\r
70-B3-D5 (hex) DISMUNTEL SAL\r
92C000-92CFFF (base 16) DISMUNTEL SAL\r
Pol ind cotes\r
Shenyang Liaoning 110000\r
CN\r
\r
-70-B3-D5 (hex) Private\r
-278000-278FFF (base 16) Private\r
- 600 Atlantis Rd\r
- Melbourne FL 32904\r
- US\r
-\r
70-B3-D5 (hex) YUYAMA MFG Co.,Ltd\r
196000-196FFF (base 16) YUYAMA MFG Co.,Ltd\r
1-4-30\r
Hong Kong Kwai Chung, N.T. 999077\r
HK\r
\r
-8C-1F-64 (hex) Quanxing Tech Co.,LTD\r
-B69000-B69FFF (base 16) Quanxing Tech Co.,LTD\r
- No. 102, building 3, Qianhai Shenzhen-Hong Kong Youth Innovation & Entrepreneur Hub, Qianwan 1st Road, Nanshan District,\r
- SHENZHEN Guangdong 518066\r
+8C-1F-64 (hex) Taolink Technologies Corporation\r
+C81000-C81FFF (base 16) Taolink Technologies Corporation\r
+ Floor 5, Building 4, Shanghai Intelligent Sensing Industrial Park, 333 Huangqing Road, Jiading District\r
+ Shanghai 201899\r
CN\r
\r
8C-1F-64 (hex) Texi AS\r
Trondheim 7030\r
NO\r
\r
-8C-1F-64 (hex) Taolink Technologies Corporation\r
-C81000-C81FFF (base 16) Taolink Technologies Corporation\r
- Floor 5, Building 4, Shanghai Intelligent Sensing Industrial Park, 333 Huangqing Road, Jiading District\r
- Shanghai 201899\r
- CN\r
-\r
8C-1F-64 (hex) CONTROL SYSTEMS Srl\r
2D8000-2D8FFF (base 16) CONTROL SYSTEMS Srl\r
Via del Brolo, 14\r
Austin TX 78704\r
US\r
\r
-8C-1F-64 (hex) Eagle Harbor Technologies, Inc.\r
-5F7000-5F7FFF (base 16) Eagle Harbor Technologies, Inc.\r
- 169 Western Ave W.\r
- Seattle WA 98119\r
- US\r
+8C-1F-64 (hex) Quanxing Tech Co.,LTD\r
+B69000-B69FFF (base 16) Quanxing Tech Co.,LTD\r
+ No. 102, building 3, Qianhai Shenzhen-Hong Kong Youth Innovation & Entrepreneur Hub, Qianwan 1st Road, Nanshan District,\r
+ SHENZHEN Guangdong 518066\r
+ CN\r
\r
8C-1F-64 (hex) ArgusEye TECH. INC\r
9BF000-9BFFFF (base 16) ArgusEye TECH. INC\r
Taipei City 114062\r
TW\r
\r
-8C-1F-64 (hex) Zumbach Electronic AG\r
-EA8000-EA8FFF (base 16) Zumbach Electronic AG\r
- Hauptstrasse 93\r
- Orpund 2552\r
- CH\r
-\r
8C-1F-64 (hex) Rapid-e-Engineering Steffen Kramer\r
1B2000-1B2FFF (base 16) Rapid-e-Engineering Steffen Kramer\r
Am Waldring 7\r
Rechtmehring Bayern 83562\r
DE\r
\r
+8C-1F-64 (hex) Eagle Harbor Technologies, Inc.\r
+5F7000-5F7FFF (base 16) Eagle Harbor Technologies, Inc.\r
+ 169 Western Ave W.\r
+ Seattle WA 98119\r
+ US\r
+\r
70-B3-D5 (hex) Earth Works\r
61C000-61CFFF (base 16) Earth Works\r
2-9-14 Aioi\r
Kofu Yamanashi 400-0858\r
JP\r
\r
-8C-1F-64 (hex) DI3 INFOTECH LLP\r
-0AA000-0AAFFF (base 16) DI3 INFOTECH LLP\r
- 406, CRYSTAL ARCADE, NEXT TO BSNL EXCHANGE, C.G ROAD, NAVRANGPURA\r
- AHMEDABAD Gujarat 380009\r
- IN\r
-\r
-8C-1F-64 (hex) Graphimecc Group SRL\r
-0F2000-0F2FFF (base 16) Graphimecc Group SRL\r
- Via Nobel 2\r
- San Martino Buon Albergo Verona 37036\r
- IT\r
+8C-1F-64 (hex) Zumbach Electronic AG\r
+EA8000-EA8FFF (base 16) Zumbach Electronic AG\r
+ Hauptstrasse 93\r
+ Orpund 2552\r
+ CH\r
\r
8C-1F-64 (hex) Procon Electronics Pty Ltd\r
DC2000-DC2FFF (base 16) Procon Electronics Pty Ltd\r
Anyang 14056\r
KR\r
\r
+8C-1F-64 (hex) DI3 INFOTECH LLP\r
+0AA000-0AAFFF (base 16) DI3 INFOTECH LLP\r
+ 406, CRYSTAL ARCADE, NEXT TO BSNL EXCHANGE, C.G ROAD, NAVRANGPURA\r
+ AHMEDABAD Gujarat 380009\r
+ IN\r
+\r
+8C-1F-64 (hex) Graphimecc Group SRL\r
+0F2000-0F2FFF (base 16) Graphimecc Group SRL\r
+ Via Nobel 2\r
+ San Martino Buon Albergo Verona 37036\r
+ IT\r
+\r
8C-1F-64 (hex) IQ Home Kft.\r
033000-033FFF (base 16) IQ Home Kft.\r
Forgach utca 32/5. 312.\r
São Paulo São Paulo 04010-000\r
BR\r
\r
-8C-1F-64 (hex) WAVES SYSTEM\r
-349000-349FFF (base 16) WAVES SYSTEM\r
- La Ville en Bois\r
- BOUAYE Loire Atlantique 44830\r
- FR\r
-\r
-8C-1F-64 (hex) Ajeco Oy\r
-C64000-C64FFF (base 16) Ajeco Oy\r
- Arinatie 8\r
- Helsinki 00370\r
- FI\r
-\r
8C-1F-64 (hex) Comercial Electronica Studio-2 s.l.\r
412000-412FFF (base 16) Comercial Electronica Studio-2 s.l.\r
P.I. La Figuera - C/ Rosa Luxemburgo, 34\r
Alaquas Valencia 46970\r
ES\r
\r
+8C-1F-64 (hex) WAVES SYSTEM\r
+349000-349FFF (base 16) WAVES SYSTEM\r
+ La Ville en Bois\r
+ BOUAYE Loire Atlantique 44830\r
+ FR\r
+\r
8C-1F-64 (hex) TIAMA\r
820000-820FFF (base 16) TIAMA\r
215 Chemin du Grand Revoyet\r
Saint-Genis Laval Auvergne Rhone Alpes 69230\r
FR\r
\r
+8C-1F-64 (hex) Ajeco Oy\r
+C64000-C64FFF (base 16) Ajeco Oy\r
+ Arinatie 8\r
+ Helsinki 00370\r
+ FI\r
+\r
+8C-1F-64 (hex) biosilver .co.,ltd\r
+350000-350FFF (base 16) biosilver .co.,ltd\r
+ 2-14-4, shinyokohama\r
+ yokohama kanagawa 2220033\r
+ JP\r
+\r
8C-1F-64 (hex) White2net srl\r
5DA000-5DAFFF (base 16) White2net srl\r
Chemin du grand bois 5\r
Oslo Oslo 0504\r
NO\r
\r
-8C-1F-64 (hex) biosilver .co.,ltd\r
-350000-350FFF (base 16) biosilver .co.,ltd\r
- 2-14-4, shinyokohama\r
- yokohama kanagawa 2220033\r
- JP\r
-\r
8C-1F-64 (hex) Relcom, Inc.\r
D9C000-D9CFFF (base 16) Relcom, Inc.\r
2221 Yew Street\r
Offenburg Ba-Wue 77656\r
DE\r
\r
-8C-1F-64 (hex) NVP TECO LTD\r
-281000-281FFF (base 16) NVP TECO LTD\r
- str Zalutinska 10\r
- Kharkiv 61177\r
- UA\r
+8C-1F-64 (hex) Scheurich GmbH\r
+B7D000-B7DFFF (base 16) Scheurich GmbH\r
+ Grimmenstein 9/1\r
+ Wolfegg 88364\r
+ DE\r
\r
8C-1F-64 (hex) DEUTA-WERKE GmbH\r
EDA000-EDAFFF (base 16) DEUTA-WERKE GmbH\r
Bergisch Gladbach North Rhine-Westphalia 51465\r
DE\r
\r
-8C-1F-64 (hex) Scheurich GmbH\r
-B7D000-B7DFFF (base 16) Scheurich GmbH\r
- Grimmenstein 9/1\r
- Wolfegg 88364\r
- DE\r
-\r
8C-1F-64 (hex) Craft4 Digital GmbH\r
289000-289FFF (base 16) Craft4 Digital GmbH\r
Sonnenwirtleweg 9\r
Vaihingen Baden-Württemberg 71665\r
DE\r
\r
+8C-1F-64 (hex) NVP TECO LTD\r
+281000-281FFF (base 16) NVP TECO LTD\r
+ str Zalutinska 10\r
+ Kharkiv 61177\r
+ UA\r
+\r
8C-1F-64 (hex) Timberline Manufacturing\r
113000-113FFF (base 16) Timberline Manufacturing\r
1029 Blairs Ferry Rd\r
Box 423\r
Karlskoga SE-691 27\r
SE\r
+\r
+70-B3-D5 (hex) Medicomp, Inc\r
+278000-278FFF (base 16) Medicomp, Inc\r
+ 600 Atlantis Rd\r
+ Melbourne FL 32904\r
+ US\r
+\r
+8C-1F-64 (hex) Vision Systems Safety Tech\r
+9F6000-9F6FFF (base 16) Vision Systems Safety Tech\r
+ 5 Chemin de Chiradie\r
+ Brignais 69530\r
+ FR\r
+\r
+8C-1F-64 (hex) Liberator Pty Ltd\r
+BBC000-BBCFFF (base 16) Liberator Pty Ltd\r
+ 265 Gilbert Street\r
+ Adelaide SA 5000\r
+ AU\r
+\r
+8C-1F-64 (hex) COMETA SAS\r
+E24000-E24FFF (base 16) COMETA SAS\r
+ 9 rue marcel chabloz\r
+ Saint martin d'Hères 38400\r
+ FR\r
#
# List of PCI ID's
#
-# Version: 2023.01.26
-# Date: 2023-01-26 03:15:02
+# Version: 2023.02.11
+# Date: 2023-02-11 03:15:01
#
# Maintained by Albert Pool, Martin Mares, and other volunteers from
# the PCI ID Project at https://pci-ids.ucw.cz/.
148c 3000 Radeon HD 4350 Go! Green 512MB GDDR3
# 113-2E172001-003
174b 3000 Radeon HD 4350/4550 HyperMemory DDR2
- 9553 RV710/M92 [Mobility Radeon HD 4530/4570/545v]
+ 9553 RV710/M92 [Mobility Radeon HD 4530/4570/5145/530v/540v/545v]
1025 015e Mobility Radeon HD 4570
1025 017d Mobility Radeon HD 4570
1025 0205 Mobility Radeon HD 4570 / 545v
17aa 2129 Mobility Radeon HD 545v
17aa 215b Mobility Radeon HD 545v
17aa 21bb Mobility Radeon HD 545v
- 9555 RV710/M92 [Mobility Radeon HD 4350/4550]
+ 9555 RV711/M93 [Mobility Radeon HD 4350/4550/530v/540v/545v / FirePro RG220]
103c 1411 ProBook 4720s GPU (Mobility Radeon HD 4350)
9557 RV711/M93 GL [FirePro RG220]
955f RV710/M92 [Mobility Radeon HD 4330]
25a7 GA107M [GeForce MX570]
25a9 GA107M [GeForce RTX 2050]
25aa GA107M [GeForce MX570 A]
+ 25ab GA107M [GeForce RTX 3050 4GB Laptop GPU]
25ac GN20-P0-R-K2 [GeForce RTX 3050 6GB Laptop GPU]
25ad GA107 [GeForce RTX 2050]
25af GA107 [GeForce RTX 3050 Engineering Sample]
25b9 GA107GLM [RTX A1000 Laptop GPU]
25ba GA107GLM [RTX A2000 8GB Laptop GPU]
25bb GA107GLM [RTX A500 Laptop GPU]
+ 25bc GA107
25e0 GA107BM [GeForce RTX 3050 Ti Mobile]
25e2 GA107BM [GeForce RTX 3050 Mobile]
25e5 GA107BM [GeForce RTX 3050 Mobile]
26f5 AD102GL [L40 CNX]
2704 AD103 [GeForce RTX 4080]
2717 GN21-X11 [GeForce RTX 4090 Laptop GPU]
+ 2730 AD103GLM [RTX 5000 Ada Generation Laptop GPU]
2757 GN21-X11
2782 AD104 [GeForce RTX 4070 Ti]
2785 AD104
2786 AD104 [GeForce RTX 4070]
27a0 GN21-X9
27b8 AD104GL [L4]
+ 27ba AD104
+ 27bb AD104GLM [RTX 3500 Ada Generation Laptop GPU]
27e0 GN21-X9
2820 GN21-X6
+ 2838 AD106GLM [RTX 3000 Ada Generation Laptop GPU]
2860 GN21-X6
28a0 GN21-X4
28a1 GN21-X2
+ 28b8 AD107GLM [RTX 2000 Ada Generation Laptop GPU]
28e0 GN21-X4
28e1 GN21-X2
10df Emulex Corporation
3208 PT890 Host Bridge
3213 VPX/VPX2 PCI to PCI Bridge Controller
3218 K8T800M Host Bridge
- 3227 VT8237 ISA bridge [KT600/K8T800/K8T890 South]
+ 3227 VT8237 ISA bridge [KT600/K8T800/K8T890/CN700 South]
1043 80ed A7V600/K8V-X/A8V Deluxe motherboard
- 1106 3227 DFI KT600-AL / Soltek SL-B9D-FGR Motherboard
+ 1106 3227 VT8237 ISA bridge
1458 5001 GA-7VT600 Motherboard
147b 1407 KV8-MAX3 motherboard
1849 3227 K7VT4 motherboard
144d Samsung Electronics Co Ltd
1600 Apple PCIe SSD
a544 Exynos 8890 PCIe Root Complex
+ a575 Exynos 7420 PCIe Root Complex
+ a5e3 Exynos 5433 PCIe Root Complex
a800 XP941 PCIe SSD
a802 NVMe SSD Controller SM951/PM951
144d a801 PM963 2.5" NVMe PCIe SSD
1034 GX1034 Certification and Verification Module PXI Board
1100 GX1100 Arbitrary Waveform and Function Generator PXI Board
1120 GX1120 Arbitrary Waveform and Function Generator PXI Board
+ 1164 GX1164 Multi-Channel Programmable Resistor PXI Board
1632 GX1632e 32-Channel Arbitrary Analog Output PXIe Board
+ 1648 GX1648 64-Channel Analog Output PXI Board
+ 1649 GX1649 64-Channel Arbitrary Analog Output PXI Board
+ 1838 GX1838 Precision DC Source PXI Board
2065 GX2065 Digital Multimeter PXI Board
2200 GTX2200 High Resolution Universal Time Interval Counter PXI Board
2201 GC2200 High Resolution Universal Time Interval Counter PCI Board
+ 3104 GX3104 4-Channel 20V, 250mA Per Channel SMU PXI Board
+ 3108 GX3108 4-Channel Source Measure Unit PXI Board
+ 3116 GX3116e 16-Channel DUT Power Supply PXIe Board
+ 3348 GX3348 Multi-Channel DC Source and Switch Matrix Board
+ 3500 GX3500 Digital I/O FLEX FPGA Board
+ 3700 GX3700e Digital I/O FLEX FPGA PXIe Board
+ 3701 GX3700 Digital I/O FLEX FPGA PXI Board
+ 3800 GX3800e Digital I/O FLEX FPGA PXIe Board
+ 4943 GX4943 HellFire/Longbow Serial Communication Board
5050 GC5050 Dynamic Digital I/O with Algorithmic Sequencer PCI Board
+ 5055 GX5055 Dynamic Digital I/O with Pin Electronics PXI Board
+ 5083 GX5083 Dynamic Digital I/O with Algorithmic Sequencer PXI Board
+ 5106 GX5106 High-Speed Digital I/O Cycle Timing (Master) Module PXI Board
+ 5151 GX5150/1 High Speed Digital I/O (50/100MHz) PXI Board
+ 5152 GX5152/3 DSR High Speed Digital Stimulus/Response PXI Board
+ 5250 GX5250 Digital I/O Streaming PXI Board
+ 5280 GX5280 High-Speed Digital I/O PXI Board
+ 5290 GX5290 High-Speed Dynamic Digital I/O PXI Board
+ 5294 GX5294 High-Speed Digital I/O PXI Board
+ 5295 GX5295 Digital I/O with Pin Electronics and PMU PXI Board
+ 5296 GX5296 Digital I/O with Pin Electronics and PMU PXI Board
+ 5550 GX5050 Dynamic Digital I/O with Algorithmic Sequencer PXI Board
5641 GX5641/2 Bi-directional Differential-TTL I/O PXI Board
+ 5731 GX5731 Digital I/O with 128 TTL Channels and 3x32 Customizable Channels PXI Board
+ 5732 GX5732 224-Channel Static Digital I/O PXI Board
+ 5733 GX5733 Digital I/O with 96 TTL Channels and 32 Customizable Channels PXI Board
+ 5960 GX5961/4 Digital I/O Timing/Sync with Pin Electronics and PMU PXI Board
+ 6021 GX6021 20-Channel RF Multiplexer PXI Board
+ 6062 GX6062 60-Channel RF Multiplexer PXI Board
+ 6115 GX6115 15-Channel High Current SPDT Form-C Relay PXI Board
+ 6125 GX6125 25-Channel High-Density SPDT Form-C Relay PXI Board
+ 6138 GX6138 38-Channel SPST Form-A Relay PXI Board
+ 6188 GX6188 104-Channel 8x8 Multiplexer/Matrix PXI Board
+ 6192 GX6192 16, 16x2 High Frequency, High Density Multiplexer PXI Board
+ 6196 GX6196 96-Channel DPST Form-A Relay Carrier PXI Board
+ 6256 GX6256 16, 16x2 Low Frequency, High Density Multiplexer PXI Board
+ 6264 GX6264 128-Channel Scanner/Multiplexer Board
+ 6315 GX6315 45-Channel High Current SPDT Form-C Relay Board
+ 6325 GX6325 75-Channel High-Density SPDT Form-C Relay Board
+ 6338 GX6338 114-Channel SPST Form-A Relay PXI Board
+ 6377 GX6377 Multifunction Switching PXI Board
+ 6384 GX6384 Configurable High-Density Switch Matrix PXI Board
+ 6616 GX6616 6x2:16 Switch Matrix PXI Board
+ 6864 GX6864 Video Switching PXI Board
+ 7400 GX7400 Dual-Output Programmable Power Supply PXI Board
+ 7404 GX7404 Prototyping and Power Interface PXI Board
+ 7777 GX7777 Generic Interface PXI Board
+ 7779 GX7779 Backplane Tester PXI Board
16e3 European Space Agency
1e0f LEON2FT Processor
16e5 Intellon Corp.
000c Qualcomm MSM6275 UMTS chip
1932 DiBcom
193c MAXIM Integrated Products
-193d Hangzhou H3C Technologies Co., Ltd.
+193d New H3C Technologies Co., Ltd.
193f AHA Products Group
0001 AHA36x-PCIX
0360 AHA360-PCIe
000e PBlaze6 6530
1c5f 0b20 NVMe SSD PBlaze6 6530 1920G AIC
1c5f 0b21 NVMe SSD PBlaze6 6530 1920G 2.5" U.2
+ 1c5f 0b25 NVMe SSD PBlaze6 6530 1920G E1.S
+ 1c5f 0b27 NVMe SSD PBlaze6 6630 1920G 2.5" U.2
1c5f 0b30 NVMe SSD PBlaze6 6530 3840G AIC
1c5f 0b31 NVMe SSD PBlaze6 6530 3840G 2.5" U.2
+ 1c5f 0b35 NVMe SSD PBlaze6 6530 3840G E1.S
+ 1c5f 0b37 NVMe SSD PBlaze6 6630 3840G 2.5" U.2
1c5f 0b40 NVMe SSD PBlaze6 6530 7680G AIC
1c5f 0b41 NVMe SSD PBlaze6 6530 7680G 2.5" U.2
+ 1c5f 0b47 NVMe SSD PBlaze6 6630 7680G 2.5" U.2
1c5f 1331 NVMe SSD PBlaze6 6531 3840G 2.5" U.2
1c5f 1341 NVMe SSD PBlaze6 6531 7680G 2.5" U.2
+ 1c5f 1431 NVMe SSD PBlaze6 6541 3840G 2.5" U.2
+ 1c5f 1441 NVMe SSD PBlaze6 6541 7680G 2.5" U.2
1c5f 4b20 NVMe SSD PBlaze6 6536 1600G AIC
1c5f 4b21 NVMe SSD PBlaze6 6536 1600G 2.5" U.2
+ 1c5f 4b25 NVMe SSD PBlaze6 6536 1600G E1.S
+ 1c5f 4b27 NVMe SSD PBlaze6 6636 1600G 2.5" U.2
1c5f 4b30 NVMe SSD PBlaze6 6536 3200G AIC
1c5f 4b31 NVMe SSD PBlaze6 6536 3200G 2.5" U.2
+ 1c5f 4b35 NVMe SSD PBlaze6 6536 3200G E1.S
+ 1c5f 4b37 NVMe SSD PBlaze6 6636 3200G 2.5" U.2
1c5f 4b40 NVMe SSD PBlaze6 6536 6400G AIC
1c5f 4b41 NVMe SSD PBlaze6 6536 6400G 2.5" U.2
+ 1c5f 4b47 NVMe SSD PBlaze6 6636 6400G 2.5" U.2
1c5f 5331 NVMe SSD PBlaze6 6537 3200G 2.5" U.2
1c5f 5341 NVMe SSD PBlaze6 6537 6400G 2.5" U.2
+ 1c5f 5431 NVMe SSD PBlaze6 6547 3200G 2.5" U.2
+ 1c5f 5441 NVMe SSD PBlaze6 6547 6400G 2.5" U.2
003d PBlaze5 920/926
1c5f 0a30 NVMe SSD PBlaze5 920 3840G AIC
1c5f 0a31 NVMe SSD PBlaze5 920 3840G 2.5" U.2
1c5f 4b41 NVMe SSD PBlaze6 6936 6400GB 2.5" U.3
1c5f 4b51 NVMe SSD PBlaze6 6936 12800GB 2.5" U.3
1c5f 4b61 NVMe SSD PBlaze6 6936 25600GB 2.5" U.3
+# Gen5 NVMe SSD
+ 003f PBlaze7 7940/7946
0540 PBlaze4 NVMe SSD
0550 PBlaze5 700/900
0555 PBlaze5 510/516
1cc4 a212 NVMe SSD UHXXXa series U.2 1600GB
1cc4 a213 NVMe SSD UHXXXa series U.2 3200GB
1cc4 a214 NVMe SSD UHXXXa series U.2 6400GB
- 1cc4 e122 NVMe SSD UH711a series U.2 1920G
+ 1cc4 e122 NVMe SSD UH711a series U.2 1920GB
1cc4 e123 NVMe SSD UH711a series U.2 3840GB
1cc4 e124 NVMe SSD UH711a series U.2 7680GB
17ab NVMe 256G SSD device
0002 Colossus GC1 [S1]
1d97 Shenzhen Longsys Electronics Co., Ltd.
2263 SM2263EN/SM2263XT-based OEM SSD
-1d9b Facebook, Inc.
+# nee Facebook, Inc.
+1d9b Meta Platforms, Inc.
0010 Networking DOM Engine
0011 IO Bridge
1da1 Teko Telecom S.r.l.
0001 ml605
0002 alst4
0003 alst4x
+1df8 V&G Information System Co.,Ltd
+ c000 DC NVMe SSD
+ 1df8 c600 Enterprise U.2 NVMe SSD
+ d000 PC NVMe SSD
+ 1df8 d100 M.2 NVMe SSD
+ 1df8 d201 M.2 NVMe SSD
+ 1df8 d600 M.2 NVMe SSD
1dfc JSC NT-COM
1181 TDM 8 Port E1/T1/J1 Adapter
1e0f KIOXIA Corporation
# https://www.medion.com/
1e39 MEDION AG
1e3b DapuStor Corporation
- 0600 NVMe SSD Controller DPU600
+ 0600 NVMe SSD Controller DP600
+ 1e3b 0010 Enterprise NVMe SSD U.2 3.84TB (R5102)
+ 1e3b 0013 Enterprise NVMe SSD U.2 3.20TB (R5302)
1e3b 0030 Enterprise NVMe SSD U.2 3.84TB (J5100)
1e3b 0031 Enterprise NVMe SSD U.2 7.68TB (J5100)
1e3b 0032 Enterprise NVMe SSD U.2 15.36TB (J5100)
1e3b 0035 Enterprise NVMe SSD U.2 12.80TB (J5300)
1e3b 0036 Enterprise NVMe SSD AIC 7.68TB (J5110)
1e3b 0037 Enterprise NVMe SSD AIC 6.40TB (J5310)
+ 1e3b 0038 Enterprise NVMe SSD U.2 3.84TB (J5100D)
+ 1e3b 0039 Enterprise NVMe SSD U.2 7.68TB (J5100D)
+ 1e3b 003b Enterprise NVMe SSD U.2 3.20TB (J5300D)
+ 1e3b 003c Enterprise NVMe SSD U.2 6.40TB (J5300D)
1e3b 003e Enterprise NVMe SSD AIC 3.84TB (J5110)
1e3b 003f Enterprise NVMe SSD AIC 3.20TB (J5310)
+ 1e3b 004c Enterprise NVMe SSD U.2 QDP 1.92TB (J5100)
+ 1e3b 004d Enterprise NVMe SSD U.2 QDP 1.60TB (J5300)
1e3b 0050 Enterprise NVMe SSD U.2 3.84TB (R5100)
1e3b 0051 Enterprise NVMe SSD U.2 7.68TB (R5100)
1e3b 0052 Enterprise NVMe SSD U.2 15.36TB (R5100)
1e3b 0061 Enterprise NVMe SSD U.2 7.68TB (R5100D)
1e3b 0063 Enterprise NVMe SSD U.2 3.20TB (R5300D)
1e3b 0064 Enterprise NVMe SSD U.2 6.40TB (R5300D)
+ 1e3b 0066 Enterprise NVMe SSD U.2 3.84TB (R5101D)
+ 1e3b 0069 Enterprise NVMe SSD U.2 3.20TB (R5301D)
+ 1e3b 006c Enterprise NVMe SSD U.2 1.92TB (R5101)
+ 1e3b 006d Enterprise NVMe SSD U.2 1.60TB (J5301)
1e3b 00f0 Enterprise NVMe SSD U.2 0.40TB (X2900)
1e3b 00f1 Enterprise NVMe SSD U.2 0.80TB (X2900)
1e3b 00f2 Enterprise NVMe SSD U.2 1.60TB (X2900)
1e3b 00f3 Enterprise NVMe SSD U.2 3.20TB (X2900)
1e3b 00f5 Enterprise NVMe SSD U.2 0.40TB (X2900P)
1e3b 00f6 Enterprise NVMe SSD U.2 0.80TB (X2900P)
- 1098 Haishen NVMe SSD
+ 1098 Haishen3 NVMe SSD
1e3b 0001 Enterprise NVMe SSD U.2 0.8TB (H2100)
1e3b 0002 Enterprise NVMe SSD U.2 0.96TB (H2200)
1e3b 0004 Enterprise NVMe SSD U.2 1.6TB (H2100)
1e3b 008a Enterprise NVMe SSD HHHL 0.8TB (H3900)
1e3b 008b Enterprise NVMe SSD HHHL 1.6TB (H3900)
1e3b 0091 Enterprise NVMe SSD HHHL 0.75TB (H3900)
+ 1333 Haishen5 NVMe SSD
1e3d Burlywood, Inc
1e44 Valve Software
1e49 Yangtze Memory Technologies Co.,Ltd
1e7b Dataland
1e7c Brainchip Inc
bca1 AKD1000 Neural Network Coprocessor [Akida]
-1e7e 9034 Pliops-Data Processor [XDP1.0]
+1e7e Pliops
+ 9034 Pliops Extreme Data Processor [XDP1.0]
1e7f Jiangsu Huacun Elec. Tech. Co., Ltd.
1e81 Ramaxel Technology(Shenzhen) Limited
1203 NVMe SSD Controller UHXXXa series
1f2f 6116 KM560 U.2 3.84TB NVMe SSD
1f2f 6118 KM560 U.2 7.68TB NVMe SSD
1f3f 3SNIC Ltd
- 2100 SSSRAID SAS/SATA HBA
+ 2100 SSSHBA SAS/SATA HBA
1f3f 0120 HBA 32 Ports
1f3f 0125 HBA 40 Ports
1f3f 0180 HBA 16 Ports
159a Ethernet Controller E810-XXV for QSFP
159b Ethernet Controller E810-XXV for SFP
1137 02be E810XXVDA2 2x25/10 GbE SFP28 PCIe NIC
+# NIC-ETH660F-3S-2P 2x25GbE SFP28 Network Adapter for OCP 3.0
+ 193d 1085 NIC-ETH660F-3S-2P
1bd4 0057 Ethernet Network Adapter E810-XXVAM2
1bd4 0058 Ethernet Network Adapter E810-XXVAM2 for OCP 3.0
1bd4 006e Ethernet Network Adapter E810-XXVAM2 for BD
46c0 AlderLake-M GT1
46c1 AlderLake-M [Iris Xe Graphics]
46c3 Alder Lake-UP4 GT1 [UHD Graphics]
+ 46d0 Alder Lake-N [UHD Graphics]
+ 46d1 Alder Lake-N [UHD Graphics]
+ 46d2 Alder Lake-N [UHD Graphics]
4905 DG1 [Iris Xe MAX Graphics]
4906 DG1 [Iris Xe Pod]
4907 SG1 [Server GPU SG-18M]
7abc Alder Lake-S PCH PCI Express Root Port #5
7abd Alder Lake-S PCH PCI Express Root Port #6
7abf Alder Lake-S PCH PCI Express Root Port #8
+# As documented in Chipset datasheet
+ 7ac8 Alder Lake-S PCH PCI Express Root Port #25
7acc Alder Lake-S PCH Serial IO I2C Controller #0
7acd Alder Lake-S PCH Serial IO I2C Controller #1
7ace Alder Lake-S PCH Serial IO I2C Controller #2
a3eb Comet Lake PCI Express Root Port #21
a3f0 Comet Lake PCH-V cAVS
a620 6400/6402 Advanced Memory Buffer (AMB)
+ a720 Raptor Lake-P [UHD Graphics]
+ a721 Raptor Lake-P [UHD Graphics]
a77f Volume Management Device NVMe RAID Controller Intel Corporation
a780 Raptor Lake-S GT1 [UHD Graphics 770]
a781 Raptor Lake-S UHD Graphics
a789 Raptor Lake-S UHD Graphics
a78a Raptor Lake-S UHD Graphics
a78b Raptor Lake-S UHD Graphics
+ a7a0 Raptor Lake-P [Iris Xe Graphics]
+ a7a1 Raptor Lake-P [Iris Xe Graphics]
+ a7a8 Raptor Lake-P [UHD Graphics]
+ a7a9 Raptor Lake-P [UHD Graphics]
abc0 Omni-Path Fabric Switch Silicon 100 Series
ad0b Volume Management Device NVMe RAID Controller Intel Corporation
b152 21152 PCI-to-PCI Bridge
<tr class="even"><td>Colorlight</td><td>KLT</td><td>10/20/2022</td> </tr>
<tr class="odd"><td>Beck GmbH & Co. Elektronik Bauelemente KG</td><td>BCK</td><td>10/20/2022</td> </tr>
<tr class="even"><td>Shenzhen Soogeen Electronics Co., LTD.</td><td>SGN</td><td>11/29/2022</td> </tr>
+ <tr class="odd"><td>Emotiva Audio Corp. </td><td>EAC</td><td>02/02/2023</td> </tr>
</tbody>
</table>
</body>
# Optionally add Microsoft Corporation KEK CA 2011. Recommended if either of the
# Microsoft keys is used as the official UEFI revocation database is signed with this
-# key. The revocation database can be updated with <citerefentry><refentrytitle>fwupdmgr</refentrytitle><manvolnum>1</manvolnum></citerefentry>.
+# key. The revocation database can be updated with <citerefentry project='man-pages'><refentrytitle>fwupdmgr</refentrytitle><manvolnum>1</manvolnum></citerefentry>.
cat MicCorKEKCA2011_2011-06-24.esl >>KEK.esl
attr=NON_VOLATILE,RUNTIME_ACCESS,BOOTSERVICE_ACCESS,TIME_BASED_AUTHENTICATED_WRITE_ACCESS
as-is to <filename>systemd-hostnamed</filename> in which case it will automatically use a suitable
fallback.</para></listitem>
- <listitem><para>Uppercase charaacters should be replaced with their lowercase equivalents.
+ <listitem><para>Uppercase characters should be replaced with their lowercase equivalents.
</para></listitem>
</itemizedlist></para>
KillUnit(in s name,
in s whom,
in i signal);
+ QueueSignalUnit(in s name,
+ in s whom,
+ in i signal,
+ in i value);
CleanUnit(in s name,
in as mask);
FreezeUnit(in s name);
<variablelist class="dbus-method" generated="True" extra-ref="KillUnit()"/>
+ <variablelist class="dbus-method" generated="True" extra-ref="QueueSignalUnit()"/>
+
<variablelist class="dbus-method" generated="True" extra-ref="CleanUnit()"/>
<variablelist class="dbus-method" generated="True" extra-ref="FreezeUnit()"/>
<varname>ExecStop=</varname> and is spawned in parallel to the main daemon process in order to shut it
down.</para>
+ <para><function>QueueSignalUnit()</function> is similar to <function>KillUnit()</function> but may be
+ used to enqueue a POSIX Realtime Signal (i.e. <constant>SIGRTMIN+…</constant> and
+ <constant>SIGRTMAX-…</constant>) to the selected process(es). Takes the same paramaters as
+ <function>KillUnit()</function> with one additional argument: an integer that is passed in the
+ <varname>sival_int</varname> value accompanying the queued signal. See <citerefentry project="man-pages"><refentrytitle>sigqueue</refentrytitle><manvolnum>3</manvolnum></citerefentry> for
+ details.</para>
+
<para><function>GetJob()</function> returns the job object path for a specific job, identified by its
id.</para>
<para>Read access is generally granted to all clients. Additionally, for unprivileged clients, some
operations are allowed through the polkit privilege system. Operations which modify unit state
(<function>StartUnit()</function>, <function>StopUnit()</function>, <function>KillUnit()</function>,
- <function>RestartUnit()</function> and similar, <function>SetProperty()</function>) require
+ <function>QueueSignalUnit()</function>, <function>RestartUnit()</function> and similar,
+ <function>SetProperty()</function>) require
<interfacename>org.freedesktop.systemd1.manage-units</interfacename>. Operations which modify unit file
enablement state (<function>EnableUnitFiles()</function>, <function>DisableUnitFiles()</function>,
<function>EnableUnitFilesWithFlags()</function>, <function>DisableUnitFilesWithFlags()</function>,
out a(uosos) affected_jobs);
Kill(in s whom,
in i signal);
+ QueueSignal(in s whom,
+ in i signal,
+ in i value);
ResetFailed();
SetProperties(in b runtime,
in a(sv) properties);
<variablelist class="dbus-method" generated="True" extra-ref="Kill()"/>
+ <variablelist class="dbus-method" generated="True" extra-ref="QueueSignal()"/>
+
<variablelist class="dbus-method" generated="True" extra-ref="ResetFailed()"/>
<variablelist class="dbus-method" generated="True" extra-ref="SetProperties()"/>
<para><function>Start()</function>, <function>Stop()</function>, <function>Reload()</function>,
<function>Restart()</function>, <function>TryRestart()</function>,
<function>ReloadOrRestart()</function>, <function>ReloadOrTryRestart()</function>,
- <function>Kill()</function>, <function>ResetFailed()</function>, and
- <function>SetProperties()</function> implement the same operation as the respective methods on the
+ <function>Kill()</function>, <function>QueueSignal()</function>, <function>ResetFailed()</function>,
+ and <function>SetProperties()</function> implement the same operation as the respective methods on the
<interfacename>Manager</interfacename> object (see above). However, these methods operate on the unit
- object and hence do not take a unit name parameter. Invoking the methods directly on the Manager
- object has the advantage of not requiring a <function>GetUnit()</function> call to get the unit object
- for a specific unit name. Calling the methods on the Manager object is hence a round trip
+ object and hence do not take a unit name parameter. Invoking the methods directly on the Manager object
+ has the advantage of not requiring a <function>GetUnit()</function> call to get the unit object for a
+ specific unit name. Calling the methods on the Manager object is hence a round trip
optimization.</para>
</refsect2>
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t DefaultMemoryLow = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly t DefaultStartupMemoryLow = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t DefaultMemoryMin = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryMin = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryLow = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly t StartupMemoryLow = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryHigh = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly t StartupMemoryHigh = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryMax = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly t StartupMemoryMax = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemorySwapMax = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly t StartupMemorySwapMax = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryZSwapMax = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly t StartupMemoryZSwapMax = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryLimit = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly s DevicePolicy = '...';
<!--property DefaultMemoryLow is not documented!-->
+ <!--property DefaultStartupMemoryLow is not documented!-->
+
<!--property DefaultMemoryMin is not documented!-->
<!--property MemoryMin is not documented!-->
<!--property MemoryLow is not documented!-->
+ <!--property StartupMemoryLow is not documented!-->
+
<!--property MemoryHigh is not documented!-->
+ <!--property StartupMemoryHigh is not documented!-->
+
<!--property MemoryMax is not documented!-->
+ <!--property StartupMemoryMax is not documented!-->
+
<!--property MemorySwapMax is not documented!-->
+ <!--property StartupMemorySwapMax is not documented!-->
+
<!--property MemoryZSwapMax is not documented!-->
+ <!--property StartupMemoryZSwapMax is not documented!-->
+
<!--property MemoryLimit is not documented!-->
<!--property DevicePolicy is not documented!-->
<variablelist class="dbus-property" generated="True" extra-ref="DefaultMemoryLow"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="DefaultStartupMemoryLow"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="DefaultMemoryMin"/>
<variablelist class="dbus-property" generated="True" extra-ref="MemoryMin"/>
<variablelist class="dbus-property" generated="True" extra-ref="MemoryLow"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryLow"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="MemoryHigh"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryHigh"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="MemoryMax"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryMax"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="MemorySwapMax"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="StartupMemorySwapMax"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="MemoryZSwapMax"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryZSwapMax"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="MemoryLimit"/>
<variablelist class="dbus-property" generated="True" extra-ref="DevicePolicy"/>
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t DefaultMemoryLow = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly t DefaultStartupMemoryLow = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t DefaultMemoryMin = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryMin = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryLow = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly t StartupMemoryLow = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryHigh = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly t StartupMemoryHigh = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryMax = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly t StartupMemoryMax = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemorySwapMax = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly t StartupMemorySwapMax = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryZSwapMax = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly t StartupMemoryZSwapMax = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryLimit = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly s DevicePolicy = '...';
<!--property DefaultMemoryLow is not documented!-->
+ <!--property DefaultStartupMemoryLow is not documented!-->
+
<!--property DefaultMemoryMin is not documented!-->
<!--property MemoryMin is not documented!-->
<!--property MemoryLow is not documented!-->
+ <!--property StartupMemoryLow is not documented!-->
+
<!--property MemoryHigh is not documented!-->
+ <!--property StartupMemoryHigh is not documented!-->
+
<!--property MemoryMax is not documented!-->
+ <!--property StartupMemoryMax is not documented!-->
+
<!--property MemorySwapMax is not documented!-->
+ <!--property StartupMemorySwapMax is not documented!-->
+
<!--property MemoryZSwapMax is not documented!-->
+ <!--property StartupMemoryZSwapMax is not documented!-->
+
<!--property MemoryLimit is not documented!-->
<!--property DevicePolicy is not documented!-->
<variablelist class="dbus-property" generated="True" extra-ref="DefaultMemoryLow"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="DefaultStartupMemoryLow"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="DefaultMemoryMin"/>
<variablelist class="dbus-property" generated="True" extra-ref="MemoryMin"/>
<variablelist class="dbus-property" generated="True" extra-ref="MemoryLow"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryLow"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="MemoryHigh"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryHigh"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="MemoryMax"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryMax"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="MemorySwapMax"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="StartupMemorySwapMax"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="MemoryZSwapMax"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryZSwapMax"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="MemoryLimit"/>
<variablelist class="dbus-property" generated="True" extra-ref="DevicePolicy"/>
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t DefaultMemoryLow = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly t DefaultStartupMemoryLow = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t DefaultMemoryMin = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryMin = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryLow = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly t StartupMemoryLow = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryHigh = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly t StartupMemoryHigh = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryMax = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly t StartupMemoryMax = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemorySwapMax = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly t StartupMemorySwapMax = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryZSwapMax = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly t StartupMemoryZSwapMax = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryLimit = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly s DevicePolicy = '...';
<!--property DefaultMemoryLow is not documented!-->
+ <!--property DefaultStartupMemoryLow is not documented!-->
+
<!--property DefaultMemoryMin is not documented!-->
<!--property MemoryMin is not documented!-->
<!--property MemoryLow is not documented!-->
+ <!--property StartupMemoryLow is not documented!-->
+
<!--property MemoryHigh is not documented!-->
+ <!--property StartupMemoryHigh is not documented!-->
+
<!--property MemoryMax is not documented!-->
+ <!--property StartupMemoryMax is not documented!-->
+
<!--property MemorySwapMax is not documented!-->
+ <!--property StartupMemorySwapMax is not documented!-->
+
<!--property MemoryZSwapMax is not documented!-->
+ <!--property StartupMemoryZSwapMax is not documented!-->
+
<!--property MemoryLimit is not documented!-->
<!--property DevicePolicy is not documented!-->
<variablelist class="dbus-property" generated="True" extra-ref="DefaultMemoryLow"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="DefaultStartupMemoryLow"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="DefaultMemoryMin"/>
<variablelist class="dbus-property" generated="True" extra-ref="MemoryMin"/>
<variablelist class="dbus-property" generated="True" extra-ref="MemoryLow"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryLow"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="MemoryHigh"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryHigh"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="MemoryMax"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryMax"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="MemorySwapMax"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="StartupMemorySwapMax"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="MemoryZSwapMax"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryZSwapMax"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="MemoryLimit"/>
<variablelist class="dbus-property" generated="True" extra-ref="DevicePolicy"/>
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t DefaultMemoryLow = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly t DefaultStartupMemoryLow = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t DefaultMemoryMin = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryMin = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryLow = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly t StartupMemoryLow = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryHigh = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly t StartupMemoryHigh = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryMax = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly t StartupMemoryMax = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemorySwapMax = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly t StartupMemorySwapMax = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryZSwapMax = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly t StartupMemoryZSwapMax = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryLimit = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly s DevicePolicy = '...';
<!--property DefaultMemoryLow is not documented!-->
+ <!--property DefaultStartupMemoryLow is not documented!-->
+
<!--property DefaultMemoryMin is not documented!-->
<!--property MemoryMin is not documented!-->
<!--property MemoryLow is not documented!-->
+ <!--property StartupMemoryLow is not documented!-->
+
<!--property MemoryHigh is not documented!-->
+ <!--property StartupMemoryHigh is not documented!-->
+
<!--property MemoryMax is not documented!-->
+ <!--property StartupMemoryMax is not documented!-->
+
<!--property MemorySwapMax is not documented!-->
+ <!--property StartupMemorySwapMax is not documented!-->
+
<!--property MemoryZSwapMax is not documented!-->
+ <!--property StartupMemoryZSwapMax is not documented!-->
+
<!--property MemoryLimit is not documented!-->
<!--property DevicePolicy is not documented!-->
<variablelist class="dbus-property" generated="True" extra-ref="DefaultMemoryLow"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="DefaultStartupMemoryLow"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="DefaultMemoryMin"/>
<variablelist class="dbus-property" generated="True" extra-ref="MemoryMin"/>
<variablelist class="dbus-property" generated="True" extra-ref="MemoryLow"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryLow"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="MemoryHigh"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryHigh"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="MemoryMax"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryMax"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="MemorySwapMax"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="StartupMemorySwapMax"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="MemoryZSwapMax"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryZSwapMax"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="MemoryLimit"/>
<variablelist class="dbus-property" generated="True" extra-ref="DevicePolicy"/>
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t DefaultMemoryLow = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly t DefaultStartupMemoryLow = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t DefaultMemoryMin = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryMin = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryLow = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly t StartupMemoryLow = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryHigh = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly t StartupMemoryHigh = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryMax = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly t StartupMemoryMax = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemorySwapMax = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly t StartupMemorySwapMax = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryZSwapMax = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly t StartupMemoryZSwapMax = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryLimit = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly s DevicePolicy = '...';
<!--property DefaultMemoryLow is not documented!-->
+ <!--property DefaultStartupMemoryLow is not documented!-->
+
<!--property DefaultMemoryMin is not documented!-->
<!--property MemoryMin is not documented!-->
<!--property MemoryLow is not documented!-->
+ <!--property StartupMemoryLow is not documented!-->
+
<!--property MemoryHigh is not documented!-->
+ <!--property StartupMemoryHigh is not documented!-->
+
<!--property MemoryMax is not documented!-->
+ <!--property StartupMemoryMax is not documented!-->
+
<!--property MemorySwapMax is not documented!-->
+ <!--property StartupMemorySwapMax is not documented!-->
+
<!--property MemoryZSwapMax is not documented!-->
+ <!--property StartupMemoryZSwapMax is not documented!-->
+
<!--property MemoryLimit is not documented!-->
<!--property DevicePolicy is not documented!-->
<variablelist class="dbus-property" generated="True" extra-ref="DefaultMemoryLow"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="DefaultStartupMemoryLow"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="DefaultMemoryMin"/>
<variablelist class="dbus-property" generated="True" extra-ref="MemoryMin"/>
<variablelist class="dbus-property" generated="True" extra-ref="MemoryLow"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryLow"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="MemoryHigh"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryHigh"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="MemoryMax"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryMax"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="MemorySwapMax"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="StartupMemorySwapMax"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="MemoryZSwapMax"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryZSwapMax"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="MemoryLimit"/>
<variablelist class="dbus-property" generated="True" extra-ref="DevicePolicy"/>
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t DefaultMemoryLow = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly t DefaultStartupMemoryLow = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t DefaultMemoryMin = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryMin = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryLow = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly t StartupMemoryLow = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryHigh = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly t StartupMemoryHigh = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryMax = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly t StartupMemoryMax = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemorySwapMax = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly t StartupMemorySwapMax = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryZSwapMax = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly t StartupMemoryZSwapMax = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryLimit = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly s DevicePolicy = '...';
<!--property DefaultMemoryLow is not documented!-->
+ <!--property DefaultStartupMemoryLow is not documented!-->
+
<!--property DefaultMemoryMin is not documented!-->
<!--property MemoryMin is not documented!-->
<!--property MemoryLow is not documented!-->
+ <!--property StartupMemoryLow is not documented!-->
+
<!--property MemoryHigh is not documented!-->
+ <!--property StartupMemoryHigh is not documented!-->
+
<!--property MemoryMax is not documented!-->
+ <!--property StartupMemoryMax is not documented!-->
+
<!--property MemorySwapMax is not documented!-->
+ <!--property StartupMemorySwapMax is not documented!-->
+
<!--property MemoryZSwapMax is not documented!-->
+ <!--property StartupMemoryZSwapMax is not documented!-->
+
<!--property MemoryLimit is not documented!-->
<!--property DevicePolicy is not documented!-->
<variablelist class="dbus-property" generated="True" extra-ref="DefaultMemoryLow"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="DefaultStartupMemoryLow"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="DefaultMemoryMin"/>
<variablelist class="dbus-property" generated="True" extra-ref="MemoryMin"/>
<variablelist class="dbus-property" generated="True" extra-ref="MemoryLow"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryLow"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="MemoryHigh"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryHigh"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="MemoryMax"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryMax"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="MemorySwapMax"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="StartupMemorySwapMax"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="MemoryZSwapMax"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="StartupMemoryZSwapMax"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="MemoryLimit"/>
<variablelist class="dbus-property" generated="True" extra-ref="DevicePolicy"/>
'sd_journal_wait'],
''],
['sd_journal_get_realtime_usec', '3', ['sd_journal_get_monotonic_usec'], ''],
+ ['sd_journal_get_seqnum', '3', [], ''],
['sd_journal_get_usage', '3', [], ''],
['sd_journal_has_runtime_files', '3', ['sd_journal_has_persistent_files'], ''],
['sd_journal_next',
</para>
<para><function>sd_bus_message_new_signal_to()</function> is a shorthand for creating a new bus message
- to a specific destination. It's behavior is similar to calling <function>sd_bus_message_new_signal()</function>
- followed by calling <citerefentry><refentrytitle>sd_bus_message_set_destination()</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para>
+ to a specific destination. It's behavior is similar to calling
+ <function>sd_bus_message_new_signal()</function> followed by calling
+ <citerefentry><refentrytitle>sd_bus_message_set_destination</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
+ </para>
</refsect1>
<refsect1>
<function>sd_bus_message_exit_container()</function> may only be called after iterating through all
members of the container, i.e. reading or skipping them. Use
<citerefentry><refentrytitle>sd_bus_message_skip</refentrytitle><manvolnum>3</manvolnum></citerefentry>
- to skip over felds of a container in order to be able to exit the container with
+ to skip over fields of a container in order to be able to exit the container with
<function>sd_bus_message_exit_container()</function> without reading all members.</para>
</refsect1>
<citerefentry><refentrytitle>sd_journal_open</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd_journal_next</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd_journal_get_data</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>sd_journal_get_seqnum</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd_id128_get_boot</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>clock_gettime</refentrytitle><manvolnum>2</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd_journal_get_cutoff_realtime_usec</refentrytitle><manvolnum>3</manvolnum></citerefentry>
--- /dev/null
+<?xml version='1.0'?> <!--*-nxml-*-->
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
+
+<refentry id="sd_journal_get_seqnum"
+ xmlns:xi="http://www.w3.org/2001/XInclude">
+
+ <refentryinfo>
+ <title>sd_journal_get_seqnum</title>
+ <productname>systemd</productname>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>sd_journal_get_seqnum</refentrytitle>
+ <manvolnum>3</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>sd_journal_get_seqnum</refname>
+ <refpurpose>Read sequence number from the current journal entry</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <funcsynopsis>
+ <funcsynopsisinfo>#include <systemd/sd-journal.h></funcsynopsisinfo>
+
+ <funcprototype>
+ <funcdef>int <function>sd_journal_get_seqnum</function></funcdef>
+ <paramdef>sd_journal *<parameter>j</parameter></paramdef>
+ <paramdef>uint64_t *<parameter>ret_seqnum</parameter></paramdef>
+ <paramdef>sd_id128_t *<parameter>ret_seqnum_id</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+
+ <para><function>sd_journal_get_seqnum()</function> returns the sequence number of the current journal
+ entry. It takes three arguments: the journal context object, a pointer to a 64-bit unsigned integer to
+ store the sequence number in, and a buffer to return the 128bit sequence number ID in.</para>
+
+ <para>When writing journal entries to disk each <command>systemd-journald</command> instance will number
+ them sequentially, starting from 1 for the first entry written after subsystem intialization. Each such
+ series of sequence numbers is associated with a 128bit sequence number ID which is initialized randomly,
+ once at <command>systemd-journal</command> initialization. Thus, while multiple instances of
+ <command>systemd-journald</command> will assign the same sequence numbers to their written journal
+ entries, they will have a distinct sequence number IDs. The sequence number is assigned at the moment of
+ writing the entry to disk. If log entries are rewritten (for example because the volatile logs from
+ <filename>/run/log/</filename> are flushed to <filename>/var/log/</filename> via
+ <filename>systemd-journald-flush.service</filename>) they will get new sequence numbers assigned.</para>
+
+ <para>Sequence numbers may be used to order entries (entries associated with the same sequence number ID
+ and lower sequence numbers should be ordered chronologically before those with higher sequence numbers),
+ and to detect lost entries. Note that journal service instances typically write to multiple journal files
+ in parallel (for example because <varname>SplitMode=</varname> is used), in which case each journal file
+ will only contain a subset of the sequence numbers. To recover the full stream of journal entries the
+ files must be combined ("interleaved"), a process that primarily relies on the sequence numbers. When
+ journal files are rotated (due to size or time limits), the series of sequence numbers is continued in
+ the replacement files. All journal files generated from the same journal instance will carry the same
+ sequence number ID.</para>
+
+ <para>As the sequence numbers are assigned at the moment of writing the journal entries to disk they do
+ not exist if storage is disabled via <varname>SplitMode=</varname>.</para>
+
+ <para>The <varname>ret_seqnum</varname> and <varname>ret_seqnum_id</varname> parameters may be specified
+ as <constant>NULL</constant> in which case the relevant data is not returned (but the call will otherwise
+ succeed).</para>
+
+ <para>Note that these functions will not work before
+ <citerefentry><refentrytitle>sd_journal_next</refentrytitle><manvolnum>3</manvolnum></citerefentry>
+ (or related call) has been called at least
+ once, in order to position the read pointer at a valid entry.</para>
+ </refsect1>
+
+ <refsect1>
+ <title>Return Value</title>
+
+ <para><function>sd_journal_get_seqnum()</function> returns 0 on success or a negative errno-style error
+ code..</para>
+ </refsect1>
+
+ <refsect1>
+ <title>Notes</title>
+
+ <xi:include href="threads-aware.xml" xpointer="strict"/>
+
+ <xi:include href="libsystemd-pkgconfig.xml" xpointer="pkgconfig-text"/>
+ </refsect1>
+
+ <refsect1>
+ <title>See Also</title>
+
+ <para>
+ <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>sd-journal</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>sd_journal_open</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>sd_journal_next</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>sd_journal_get_data</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>sd_journal_get_monotonic_usec</refentrytitle><manvolnum>3</manvolnum></citerefentry>
+ </para>
+ </refsect1>
+
+</refentry>
<term><command>kill <replaceable>PATTERN</replaceable>…</command></term>
<listitem>
- <para>Send a signal to one or more processes of the
- unit. Use <option>--kill-whom=</option> to select which
- process to kill. Use <option>--signal=</option> to select
- the signal to send.</para>
+ <para>Send a UNIX process signal to one or more processes of the unit. Use
+ <option>--kill-whom=</option> to select which process to send the signal to. Use
+ <option>--signal=</option> to select the signal to send. Combine with
+ <option>--kill-value=</option> to enqueue a POSIX Realtime Signal with an associated
+ value.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>--kill-whom=</option></term>
<listitem>
- <para>When used with <command>kill</command>, choose which
- processes to send a signal to. Must be one of
- <option>main</option>, <option>control</option> or
- <option>all</option> to select whether to kill only the main
- process, the control process or all processes of the
- unit. The main process of the unit is the one that defines
- the life-time of it. A control process of a unit is one that
- is invoked by the manager to induce state changes of it. For
- example, all processes started due to the
- <varname>ExecStartPre=</varname>,
- <varname>ExecStop=</varname> or
- <varname>ExecReload=</varname> settings of service units are
- control processes. Note that there is only one control
- process per unit at a time, as only one state change is
- executed at a time. For services of type
- <varname>Type=forking</varname>, the initial process started
- by the manager for <varname>ExecStart=</varname> is a
- control process, while the process ultimately forked off by
- that one is then considered the main process of the unit (if
- it can be determined). This is different for service units
- of other types, where the process forked off by the manager
- for <varname>ExecStart=</varname> is always the main process
- itself. A service unit consists of zero or one main process,
- zero or one control process plus any number of additional
- processes. Not all unit types manage processes of these
- types however. For example, for mount units, control processes
- are defined (which are the invocations of
- <filename>&MOUNT_PATH;</filename> and
- <filename>&UMOUNT_PATH;</filename>), but no main process
- is defined. If omitted, defaults to
+ <para>When used with <command>kill</command>, choose which processes to send a UNIX process signal
+ to. Must be one of <option>main</option>, <option>control</option> or <option>all</option> to
+ select whether to kill only the main process, the control process or all processes of the unit. The
+ main process of the unit is the one that defines the life-time of it. A control process of a unit
+ is one that is invoked by the manager to induce state changes of it. For example, all processes
+ started due to the <varname>ExecStartPre=</varname>, <varname>ExecStop=</varname> or
+ <varname>ExecReload=</varname> settings of service units are control processes. Note that there is
+ only one control process per unit at a time, as only one state change is executed at a time. For
+ services of type <varname>Type=forking</varname>, the initial process started by the manager for
+ <varname>ExecStart=</varname> is a control process, while the process ultimately forked off by that
+ one is then considered the main process of the unit (if it can be determined). This is different
+ for service units of other types, where the process forked off by the manager for
+ <varname>ExecStart=</varname> is always the main process itself. A service unit consists of zero or
+ one main process, zero or one control process plus any number of additional processes. Not all unit
+ types manage processes of these types however. For example, for mount units, control processes are
+ defined (which are the invocations of <filename>&MOUNT_PATH;</filename> and
+ <filename>&UMOUNT_PATH;</filename>), but no main process is defined. If omitted, defaults to
<option>all</option>.</para>
</listitem>
</varlistentry>
+ <varlistentry>
+ <term><option>--kill-value=</option><replaceable>INT</replaceable></term>
+
+ <listitem><para>If used with the <command>kill</command> command, enqueues a signal along with the
+ specified integer value parameter to the specified process(es). This operation is only available for
+ POSIX Realtime Signals (i.e. <option>--signal=SIGRTMIN+…</option> or
+ <option>--signal=SIGRTMAX-…</option>), and ensures the signals are generated via the <citerefentry
+ project='man-pages'><refentrytitle>sigqueue</refentrytitle><manvolnum>3</manvolnum></citerefentry>
+ system call, rather than <citerefentry
+ project='man-pages'><refentrytitle>kill</refentrytitle><manvolnum>3</manvolnum></citerefentry>. The
+ specified value must be a 32bit signed integer, and may be specified either in decimal, in
+ hexademical (if prefixed with <literal>0x</literal>), octal (if prefixed with <literal>0o</literal>)
+ or binary (if prefixed with <literal>0b</literal>)</para>
+
+ <para>If this option is used the signal will only be enqueued on the control or main process of the
+ unit, never on other processes belonging to the unit, i.e. <option>--kill-whom=all</option> will only
+ affect main and control processes but no other processes.</para></listitem>
+ </varlistentry>
+
<xi:include href="standard-options.xml" xpointer="signal" />
<varlistentry>
from the kernel entropy pool.</para></listitem>
<listitem><para>In userspace the <filename>systemd-boot-random-seed.service</filename> service updates
- the boot loader random seed with a new value derived from the kernel kernel entropy pool.</para></listitem>
+ the boot loader random seed with a new value derived from the kernel entropy pool.</para></listitem>
</orderedlist>
<para>This logic should ensure that the kernel's entropy pool is seeded during earliest bool already, if
<cmdsynopsis>
<command>systemd-notify <arg choice="opt" rep="repeat">OPTIONS</arg> <arg choice="opt" rep="repeat">VARIABLE=VALUE</arg></command>
</cmdsynopsis>
+ <cmdsynopsis>
+ <command>systemd-notify --exec <arg choice="opt" rep="repeat">OPTIONS</arg> <arg choice="opt" rep="repeat">VARIABLE=VALUE</arg> ; <arg rep="repeat">CMDLINE</arg></command>
+ </cmdsynopsis>
</refsynopsisdiv>
<refsect1>
this option set is prone to race conditions in all other cases.</para></listitem>
</varlistentry>
+ <varlistentry>
+ <term><option>--exec</option></term>
+
+ <listitem><para>If specified <command>systemd-notify</command> will execute another command line
+ after it completed its operation, replacing its own process. If used, the list of assignments to
+ include in the message sent must be followed by a <literal>;</literal> character (as separate
+ argument), followed by the command line to execute. This permits "chaining" of commands, i.e. issuing
+ one operation, followed immediately by another, without changing PIDs.</para>
+
+ <para>Note that many shells interpret <literal>;</literal> as their own separator for command lines,
+ hence when <command>systemd-notify</command> is invoked from a shell the semicolon must usually be
+ escaped as <literal>\;</literal>.</para></listitem>
+ </varlistentry>
+
<xi:include href="standard-options.xml" xpointer="help" />
<xi:include href="standard-options.xml" xpointer="version" />
</variablelist>
<orderedlist>
<listitem><para>The user's home directory is bind mounted from the host into
- <filename>/run/hosts/home/</filename>.</para></listitem>
+ <filename>/run/host/home/</filename>.</para></listitem>
<listitem><para>An additional UID/GID mapping is added that maps the host user's UID/GID to a
container UID/GID, allocated from the 60514…60577 range.</para></listitem>
<para><filename>systemd-pcrfs-root.service</filename> and <filename>systemd-pcrfs@.service</filename> are
automatically pulled into the initial transaction by
- <citerefentry><refentrytitle>systemd-gpt-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+ <citerefentry><refentrytitle>systemd-gpt-auto-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>
for the root and <filename>/var/</filename> file
systems. <citerefentry><refentrytitle>systemd-fstab-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>
will do this for all mounts with the <option>x-systemd.pcrfs</option> mount option in
<citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd-stub</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd-measure</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
- <citerefentry><refentrytitle>systemd-gpt-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>systemd-gpt-auto-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd-fstab-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>
</para>
</refsect1>
authenticated credentials improves security as credentials are not stored in plaintext and only
authenticated and decrypted into plaintext the moment a service requiring them is started. Moreover,
credentials may be bound to the local hardware and installations, so that they cannot easily be
- analyzed offline, or be generated externally.</para>
+ analyzed offline, or be generated externally. When <varname>DevicePolicy=</varname> is set to
+ <literal>closed</literal> or <literal>strict</literal>, or set to <literal>auto</literal> and
+ <varname>DeviceAllow=</varname> is set, or <varname>PrivateDevices=</varname> is set, then this
+ setting adds <filename>/dev/tpmrm0</filename> with <constant>rw</constant> mode to
+ <varname>DeviceAllow=</varname>. See
+ <citerefentry><refentrytitle>systemd.resource-control</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+ for the details about <varname>DevicePolicy=</varname> or <varname>DeviceAllow=</varname>.</para>
<para>The credential files/IPC sockets must be accessible to the service manager, but don't have to
be directly accessible to the unit's processes: the credential data is read and copied into separate,
</para>
</listitem>
</varlistentry>
+
+ <varlistentry>
+ <term><varname>__SEQNUM=</varname></term>
+ <term><varname>__SEQNUM_ID=</varname></term>
+
+ <listitem><para>The sequence number (and associated sequence number ID) of this journal entry in the
+ journal file it originates from. See
+ <citerefentry><refentrytitle>sd_journal_get_seqnum</refentrytitle><manvolnum>3</manvolnum></citerefentry>
+ for details.</para></listitem>
+ </varlistentry>
</variablelist>
</refsect1>
<varlistentry>
<term><varname>MemoryMin=<replaceable>bytes</replaceable></varname>, <varname>MemoryLow=<replaceable>bytes</replaceable></varname></term>
+ <term><varname>StartupMemoryLow=<replaceable>bytes</replaceable></varname></term>
<listitem>
<para>Specify the memory usage protection of the executed processes in this unit.
in the unit itself.
Using it to set a default child allocation is only useful on kernels older than 5.7,
which do not support the <literal>memory_recursiveprot</literal> cgroup2 mount option.</para>
+
+ <para>While <varname>StartupMemoryLow=</varname> applies to the startup and shutdown phases of the system,
+ <varname>MemoryMin=</varname> applies to normal runtime of the system, and if the former is not set also to
+ the startup and shutdown phases. Using <varname>StartupMemoryLow=</varname> allows prioritizing specific services at
+ boot-up and shutdown differently than during normal runtime.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>MemoryHigh=<replaceable>bytes</replaceable></varname></term>
+ <term><varname>StartupMemoryHigh=<replaceable>bytes</replaceable></varname></term>
<listitem>
<para>Specify the throttling limit on memory usage of the executed processes in this unit. Memory usage may go
special value <literal>infinity</literal>, no memory throttling is applied. This controls the
<literal>memory.high</literal> control group attribute. For details about this control group attribute, see
<ulink url="https://docs.kernel.org/admin-guide/cgroup-v2.html#memory-interface-files">Memory Interface Files</ulink>.</para>
+
+ <para>While <varname>StartupMemoryHigh=</varname> applies to the startup and shutdown phases of the system,
+ <varname>MemoryHigh=</varname> applies to normal runtime of the system, and if the former is not set also to
+ the startup and shutdown phases. Using <varname>StartupMemoryHigh=</varname> allows prioritizing specific services at
+ boot-up and shutdown differently than during normal runtime.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>MemoryMax=<replaceable>bytes</replaceable></varname></term>
+ <term><varname>StartupMemoryMax=<replaceable>bytes</replaceable></varname></term>
<listitem>
<para>Specify the absolute limit on memory usage of the executed processes in this unit. If memory usage
assigned the special value <literal>infinity</literal>, no memory limit is applied. This controls the
<literal>memory.max</literal> control group attribute. For details about this control group attribute, see
<ulink url="https://docs.kernel.org/admin-guide/cgroup-v2.html#memory-interface-files">Memory Interface Files</ulink>.</para>
+
+ <para>While <varname>StartupMemoryMax=</varname> applies to the startup and shutdown phases of the system,
+ <varname>MemoryMax=</varname> applies to normal runtime of the system, and if the former is not set also to
+ the startup and shutdown phases. Using <varname>StartupMemoryMax=</varname> allows prioritizing specific services at
+ boot-up and shutdown differently than during normal runtime.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>MemorySwapMax=<replaceable>bytes</replaceable></varname></term>
+ <term><varname>StartupMemorySwapMax=<replaceable>bytes</replaceable></varname></term>
<listitem>
<para>Specify the absolute limit on swap usage of the executed processes in this unit.</para>
special value <literal>infinity</literal>, no swap limit is applied. These settings control the
<literal>memory.swap.max</literal> control group attribute. For details about this control group attribute,
see <ulink url="https://docs.kernel.org/admin-guide/cgroup-v2.html#memory-interface-files">Memory Interface Files</ulink>.</para>
+
+ <para>While <varname>StartupMemorySwapMax=</varname> applies to the startup and shutdown phases of the system,
+ <varname>MemorySwapMax=</varname> applies to normal runtime of the system, and if the former is not set also to
+ the startup and shutdown phases. Using <varname>StartupMemorySwapMax=</varname> allows prioritizing specific services at
+ boot-up and shutdown differently than during normal runtime.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>MemoryZSwapMax=<replaceable>bytes</replaceable></varname></term>
+ <term><varname>StartupMemoryZSwapMax=<replaceable>bytes</replaceable></varname></term>
<listitem>
<para>Specify the absolute limit on zswap usage of the processes in this unit. Zswap is a lightweight compressed
special value <literal>infinity</literal>, no limit is applied. These settings control the
<literal>memory.zswap.max</literal> control group attribute. For details about this control group attribute,
see <ulink url="https://docs.kernel.org/admin-guide/cgroup-v2.html#memory-interface-files">Memory Interface Files</ulink>.</para>
+
+ <para>While <varname>StartupMemoryZSwapMax=</varname> applies to the startup and shutdown phases of the system,
+ <varname>MemoryZSwapMax=</varname> applies to normal runtime of the system, and if the former is not set also to
+ the startup and shutdown phases. Using <varname>StartupMemoryZSwapMax=</varname> allows prioritizing specific services at
+ boot-up and shutdown differently than during normal runtime.</para>
</listitem>
</varlistentry>
<term><varname>login.issue</varname></term>
<listitem>
<para>The data of this credential is written to
- <filename>/etc/issue.d/50-provision.conf</filename>, if the file doesn't exist
- yet. <citerefentry><refentrytitle>agetty</refentrytitle><manvolnum>8</manvolnum></citerefentry>
- reads this file and shows its contents at the login prompt of terminal logins. See <citerefentry
- project='man-pages'><refentrytitle>issue</refentrytitle><manvolnum>5</manvolnum></citerefentry> for
- details.</para>
+ <filename>/etc/issue.d/50-provision.conf</filename>, if the file doesn't exist yet.
+ <citerefentry project='man-pages'><refentrytitle>agetty</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+ reads this file and shows its contents at the login prompt of terminal logins. See
+ <citerefentry project='man-pages'><refentrytitle>issue</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+ for details.</para>
<para>Consumed by <filename>/usr/lib/tmpfiles.d/provision.conf</filename>, see
<citerefentry><refentrytitle>tmpfiles.d</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para>
<term><varname>login.motd</varname></term>
<listitem>
<para>The data of this credential is written to <filename>/etc/motd.d/50-provision.conf</filename>,
- if the file doesn't exist
- yet. <citerefentry><refentrytitle>pam_motd</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+ if the file doesn't exist yet.
+ <citerefentry project='man-pages'><refentrytitle>pam_motd</refentrytitle><manvolnum>8</manvolnum></citerefentry>
reads this file and shows its contents as "message of the day" during terminal logins. See
- <citerefentry
- project='man-pages'><refentrytitle>motd</refentrytitle><manvolnum>5</manvolnum></citerefentry> for
- details.</para>
+ <citerefentry project='man-pages'><refentrytitle>motd</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+ for details.</para>
<para>Consumed by <filename>/usr/lib/tmpfiles.d/provision.conf</filename>, see
<citerefentry><refentrytitle>tmpfiles.d</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para>
<term><varname>network.hosts</varname></term>
<listitem>
<para>The data of this credential is written to <filename>/etc/hosts</filename>, if the file
- doesn't exist yet. See <citerefentry
- project='man-pages'><refentrytitle>hosts</refentrytitle><manvolnum>5</manvolnum></citerefentry> for
- details.</para>
+ doesn't exist yet. See
+ <citerefentry project='man-pages'><refentrytitle>hosts</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+ for details.</para>
<para>Consumed by <filename>/usr/lib/tmpfiles.d/provision.conf</filename>, see
<citerefentry><refentrytitle>tmpfiles.d</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para>
<listitem>
<para>Configures the parent Queueing Discipline (qdisc). Takes one of <literal>root</literal>,
<literal>clsact</literal>, <literal>ingress</literal> or a class identifier. The class identifier is
- specified as the major and minor numbers in hexadecimal in the range 0x1–Oxffff separated with a
+ specified as the major and minor numbers in hexadecimal in the range 0x1–0xffff separated with a
colon (<literal>major:minor</literal>). Defaults to <literal>root</literal>.</para>
</listitem>
</varlistentry>
<listitem>
<para>Configures the parent Queueing Discipline (qdisc). Takes one of <literal>root</literal>, or a
qdisc identifier. The qdisc identifier is specified as the major and minor numbers in hexadecimal in
- the range 0x1–Oxffff separated with a colon (<literal>major:minor</literal>). Defaults to
+ the range 0x1–0xffff separated with a colon (<literal>major:minor</literal>). Defaults to
<literal>root</literal>.
</para>
</listitem>
<term><varname>ClassId=</varname></term>
<listitem>
<para>Configures the unique identifier of the class. It is specified as the major and minor numbers in
- hexadecimal in the range 0x1–Oxffff separated with a colon (<literal>major:minor</literal>).
+ hexadecimal in the range 0x1–0xffff separated with a colon (<literal>major:minor</literal>).
Defaults to unset.</para>
</listitem>
</varlistentry>
<filename>/sys/</filename> or <filename>/proc/</filename>, as well as some other directories below
<filename>/var/</filename>).</para>
- <para><citerefentry><refentrytitle>systemd-tmpfiles</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+ <para><citerefentry><refentrytitle>systemd-tmpfiles</refentrytitle><manvolnum>8</manvolnum></citerefentry>
uses this configuration to create volatile files and directories during boot and to do periodic cleanup
afterwards. See
- <citerefentry><refentrytitle>systemd-tmpfiles</refentrytitle><manvolnum>5</manvolnum></citerefentry> for
+ <citerefentry><refentrytitle>systemd-tmpfiles</refentrytitle><manvolnum>8</manvolnum></citerefentry> for
the description of <filename>systemd-tmpfiles-setup.service</filename>,
<filename>systemd-tmpfiles-clean.service</filename>, and associated units.</para>
<refsect2>
<title>Type</title>
- <para>The type consists of a single letter and optionally one or emore modifier characters: a plus sign
+ <para>The type consists of a single letter and optionally one or more modifier characters: a plus sign
(<literal>+</literal>), exclamation mark (<literal>!</literal>), minus sign (<literal>-</literal>),
equals sign (<literal>=</literal>), tilde character (<literal>~</literal>) and/or caret
(<literal>^</literal>).</para>
<title>Mode</title>
<para>The file access mode to use when creating this file or directory. If omitted or when set to
- <literal>-</literal>, the default is used: 0755 for directories, 0644 for all other file objects. For
+ <literal>-</literal>, the default is used: 0755 for directories, 0644 for all other file objects. For
<varname>z</varname>, <varname>Z</varname> lines, if omitted or when set to <literal>-</literal>, the
file access mode will not be modified. This parameter is ignored for <varname>x</varname>,
<varname>r</varname>, <varname>R</varname>, <varname>L</varname>, <varname>t</varname>, and
<listitem><para>An "engine" to for signing of the resulting binary. This option is currently passed
verbatim to the <option>--engine=</option> option of
- <citerefentry><refentrytitle>sbsign</refentrytitle><manvolnum>1</manvolnum></citerefentry>.
+ <citerefentry project='archlinux'><refentrytitle>sbsign</refentrytitle><manvolnum>1</manvolnum></citerefentry>.
</para></listitem>
</varlistentry>
nspawn_locale = get_option('nspawn-locale')
conf.set_quoted('SYSTEMD_NSPAWN_LOCALE', nspawn_locale)
+default_keymap = get_option('default-keymap')
+conf.set_quoted('SYSTEMD_DEFAULT_KEYMAP', default_keymap)
+
localegen_path = get_option('localegen-path')
if localegen_path != ''
conf.set_quoted('LOCALEGEN_PATH', localegen_path)
description : 'default locale used when /etc/locale.conf does not exist')
option('nspawn-locale', type : 'string', value : 'C.UTF-8',
description : 'default locale used by systemd-nspawn when executing commands in a container')
+option('default-keymap', type : 'string', value : 'us',
+ description : 'default keymap used when populating /etc/vconsole.conf')
option('localegen-path', type : 'string', value : '',
description : 'absolute path to the locale-gen binary in case the system is using locale-gen')
option('service-watchdog', type : 'string', value : '3min',
rootprefix=/${rootprefix#/}
fi
+ # On debian-like systems the library directory is not /usr/lib64 but /usr/lib/<arch-triplet>/.
+ # It is important to use the right one especially for cryptsetup plugins, otherwise they will be
+ # installed in the wrong directory and not be found by cryptsetup. Assume native build.
+ if grep -q -e "ID=debian" -e "ID_LIKE=debian" /etc/os-release && command -v dpkg 2>/dev/null; then
+ LIBDIR="-Drootlibdir=/usr/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)"
+ PAMDIR="-Dpamlibdir=/usr/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)/security"
+ fi
+
+ # Cannot quote $LIBDIR and $PAMDIR, because they may be empty, and meson will fail.
+ # shellcheck disable=SC2086
meson setup "$BUILDDIR" \
+ ${LIBDIR:-} \
+ ${PAMDIR:-} \
-D "sysvinit-path=$sysvinit_path" \
-D "rootprefix=$rootprefix" \
-D man=false \
cd "$BUILDDIR"
ninja "$@"
if [ "$WITH_TESTS" = 1 ] ; then
- for id in 1 2 3; do
- getent group $id >/dev/null || echo "g testgroup$id $id -" | ./systemd-sysusers -
- done
-
if [ -n "$SANITIZERS" ]; then
export ASAN_OPTIONS="$ASAN_OPTIONS"
export UBSAN_OPTIONS="$UBSAN_OPTIONS"
KERNEL_RELEASE=$(make O="$BUILDDIR"/mkosi.kernel -s kernelrelease)
mkdir -p "$DESTDIR/usr/lib/modules/$KERNEL_RELEASE"
- make O="$BUILDDIR/mkosi.kernel" INSTALL_HDR_PATH=/usr headers_install
make O="$BUILDDIR/mkosi.kernel" INSTALL_MOD_PATH="$DESTDIR/usr" modules_install
make O="$BUILDDIR/mkosi.kernel" INSTALL_PATH="$DESTDIR/usr/lib/modules/$KERNEL_RELEASE" install
mkdir -p "$DESTDIR/usr/lib/kernel/selftests"
[Content]
BuildDirectory=mkosi.builddir
Cache=mkosi.cache
-SourceFileTransfer=mount
-SourceFileTransferFinal=copy-git-others
Packages=
acl
bash-completion
# This is a settings file for OS image generation using mkosi (https://github.com/systemd/mkosi).
# Symlink this file to mkosi.default in the project root directory and invoke "mkosi" to build an OS image.
+# We use python3*dist() throughout this file because we need to make sure the python3.9dis() packages are
+# installed on CentOS Stream 8. mkosi doesn't support release specific configuration yet so we use the globs
+# to get the necessary packages on both CentOS Stream 8 and CentOS Stream 9.
+
[Distribution]
Distribution=centos
Repositories=epel
polkit
popt
procps-ng
- python3dist(pefile)
+ python3*dist(pefile)
+ python3*dist(pluggy) # python39-pluggy is a pytest dependency that's not installed for some reason.
+ python3*dist(pytest)
+ python39
quota
tpm2-tss
vim-common
pkgconfig(tss2-rc)
pkgconfig(valgrind)
pkgconfig(xkbcommon)
- python3dist(docutils)
- python3dist(jinja2)
- python3dist(lxml)
- python3dist(pytest)
+ python3*dist(docutils)
+ python3*dist(jinja2)
+ python3*dist(lxml)
BuildPackages=
bpftool
docbook-xsl
+ dpkg-dev
g++
gcc-multilib
libacl1-dev
BuildPackages=
docbook-xsl
+ dpkg-dev
g++
gcc-multilib
libacl1-dev
set -e
if [ "$(grep '^ID=' /etc/os-release)" = "ID=\"centos\"" ] && [ "$(grep '^VERSION=' /etc/os-release)" = "VERSION=\"8\"" ]; then
- # python39-pluggy is a pytest dependency that's not installed for some reason.
- dnf \
- -y \
- --enablerepo=powertools \
- --setopt=powertools.module_hotfixes=true \
- install \
- python39 \
- python39-pefile \
- python39-jinja2 \
- python39-pytest \
- python39-pluggy
alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 1
alternatives --set python3 /usr/bin/python3.9
fi
+
+# Make sure the necessary test users are available in the build image. We do this here because the build
+# script does not run as root.
+if [ "$1" = "build" ]; then
+ for id in 1 2 3; do
+ getent group $id >/dev/null || echo "g testgroup$id $id -" | systemd-sysusers -
+ done
+fi
#include "fd-util.h"
#include "log.h"
#include "macro.h"
+#include "main-func.h"
#include "pretty-print.h"
#include "process-util.h"
#include "signal-util.h"
return 0;
}
-static int open_sockets(int *epoll_fd, bool accept) {
+static int open_sockets(int *ret_epoll_fd, bool accept) {
+ _cleanup_close_ int epoll_fd = -EBADF;
int n, r, count = 0;
+ assert(ret_epoll_fd);
+
n = sd_listen_fds(true);
if (n < 0)
return log_error_errno(n, "Failed to read listening file descriptors from environment: %m");
except[i] = SD_LISTEN_FDS_START + i;
log_close();
+ log_set_open_when_needed(true);
+
r = close_all_fds(except, n);
if (r < 0)
return log_error_errno(r, "Failed to close all file descriptors: %m");
}
- /** Note: we leak some fd's on error here. I doesn't matter
- * much, since the program will exit immediately anyway, but
- * would be a pain to fix.
- */
+ /* Note: we leak some fd's on error here. It doesn't matter much, since the program will exit
+ * immediately anyway, but would be a pain to fix. */
STRV_FOREACH(address, arg_listen) {
r = make_socket_fd(LOG_DEBUG, *address, arg_socket_type, (arg_accept * SOCK_CLOEXEC));
- if (r < 0) {
- log_open();
+ if (r < 0)
return log_error_errno(r, "Failed to open '%s': %m", *address);
- }
assert(r == SD_LISTEN_FDS_START + count);
count++;
}
- if (arg_listen)
+ if (arg_listen) {
log_open();
+ log_set_open_when_needed(false);
+ }
- *epoll_fd = epoll_create1(EPOLL_CLOEXEC);
- if (*epoll_fd < 0)
+ epoll_fd = epoll_create1(EPOLL_CLOEXEC);
+ if (epoll_fd < 0)
return log_error_errno(errno, "Failed to create epoll object: %m");
for (int fd = SD_LISTEN_FDS_START; fd < SD_LISTEN_FDS_START + count; fd++) {
getsockname_pretty(fd, &name);
log_info("Listening on %s as %i.", strna(name), fd);
- r = add_epoll(*epoll_fd, fd);
+ r = add_epoll(epoll_fd, fd);
if (r < 0)
return r;
}
+ *ret_epoll_fd = TAKE_FD(epoll_fd);
return count;
}
return 1 /* work to do */;
}
-int main(int argc, char **argv) {
+static int run(int argc, char **argv) {
+ _cleanup_close_ int epoll_fd = -EBADF;
int r, n;
- int epoll_fd = -EBADF;
log_show_color(true);
log_parse_environment();
r = parse_argv(argc, argv);
if (r <= 0)
- return r == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
+ return r;
r = install_chld_handler();
if (r < 0)
- return EXIT_FAILURE;
+ return r;
n = open_sockets(&epoll_fd, arg_accept);
if (n < 0)
- return EXIT_FAILURE;
- if (n == 0) {
- log_error("No sockets to listen on specified or passed in.");
- return EXIT_FAILURE;
- }
+ return n;
+ if (n == 0)
+ return log_error_errno(SYNTHETIC_ERRNO(ENOENT), "No sockets to listen on specified or passed in.");
for (;;) {
struct epoll_event event;
if (errno == EINTR)
continue;
- log_error_errno(errno, "epoll_wait() failed: %m");
- return EXIT_FAILURE;
+ return log_error_errno(errno, "epoll_wait() failed: %m");
}
log_info("Communication attempt on fd %i.", event.data.fd);
if (arg_accept) {
r = do_accept(argv[optind], argv + optind, event.data.fd);
if (r < 0)
- return EXIT_FAILURE;
+ return r;
} else
break;
}
- exec_process(argv[optind], argv + optind, SD_LISTEN_FDS_START, (size_t) n);
-
- return EXIT_SUCCESS;
+ return exec_process(argv[optind], argv + optind, SD_LISTEN_FDS_START, (size_t) n);
}
+
+DEFINE_MAIN_FUNCTION(run);
if (colors_enabled())
b = systemd_features_with_color();
- printf("systemd " STRINGIFY(PROJECT_VERSION) " (" GIT_VERSION ")\n%s\n",
+ printf("%ssystemd " STRINGIFY(PROJECT_VERSION) "%s (" GIT_VERSION ")\n%s\n",
+ ansi_highlight(), ansi_normal(),
b ?: systemd_features);
return 0;
}
return 0;
}
+int cg_path_get_unit_path(const char *path, char **ret) {
+ _cleanup_free_ char *path_copy = NULL;
+ char *unit_name;
+
+ assert(path);
+ assert(ret);
+
+ path_copy = strdup(path);
+ if (!path_copy)
+ return -ENOMEM;
+
+ unit_name = (char *)skip_slices(path_copy);
+ unit_name[strcspn(unit_name, "/")] = 0;
+
+ if (!unit_name_is_valid(cg_unescape(unit_name), UNIT_NAME_PLAIN|UNIT_NAME_INSTANCE))
+ return -ENXIO;
+
+ *ret = TAKE_PTR(path_copy);
+
+ return 0;
+}
+
int cg_pid_get_unit(pid_t pid, char **unit) {
_cleanup_free_ char *cgroup = NULL;
int r;
int cg_path_get_session(const char *path, char **session);
int cg_path_get_owner_uid(const char *path, uid_t *uid);
int cg_path_get_unit(const char *path, char **unit);
+int cg_path_get_unit_path(const char *path, char **unit);
int cg_path_get_user_unit(const char *path, char **unit);
int cg_path_get_machine_name(const char *path, char **machine);
int cg_path_get_slice(const char *path, char **slice);
return new_fd;
}
+int fd_is_opath(int fd) {
+ int r;
+
+ assert(fd >= 0);
+
+ r = fcntl(fd, F_GETFL);
+ if (r < 0)
+ return -errno;
+
+ return FLAGS_SET(r, O_PATH);
+}
+
int read_nr_open(void) {
_cleanup_free_ char *nr_open = NULL;
int r;
int fd_reopen(int fd, int flags);
int fd_reopen_condition(int fd, int flags, int mask, int *ret_new_fd);
+int fd_is_opath(int fd);
int read_nr_open(void);
int fd_get_diskseq(int fd, uint64_t *ret);
* at least one more byte to be able to distinguish EOF from truncation. */
if (max_size != SIZE_MAX && n > max_size) {
n = size; /* Make sure we never use more than what we sized the buffer for (so that
- * we have one free byte in it for the trailing NUL we add below).*/
+ * we have one free byte in it for the trailing NUL we add below). */
truncated = true;
break;
}
log_target = target;
}
+void log_set_target_and_open(LogTarget target) {
+ log_set_target(target);
+ log_open();
+}
+
void log_close(void) {
/* Do not call from library code. */
const char *log_target_to_string(LogTarget target) _const_;
LogTarget log_target_from_string(const char *s) _pure_;
void log_set_target(LogTarget target);
+void log_set_target_and_open(LogTarget target);
int log_set_target_from_string(const char *e);
LogTarget log_get_target(void) _pure_;
assert_cc(sizeof(dummy_t) == 0);
-/* A little helper for subtracting 1 off a pointer in a safe UB-free way. This is intended to be used for for
+/* A little helper for subtracting 1 off a pointer in a safe UB-free way. This is intended to be used for
* loops that count down from a high pointer until some base. A naive loop would implement this like this:
*
* for (p = end-1; p >= base; p--) …
#define UDF_SUPER_MAGIC 0x15013346
#endif
-/* b1123ea6d3b3da25af5c8a9d843bd07ab63213f4 (4.8)*/
+/* b1123ea6d3b3da25af5c8a9d843bd07ab63213f4 (4.8) */
#ifndef BALLOON_KVM_MAGIC
#define BALLOON_KVM_MAGIC 0x13661366
#endif
/* We already found what we were looking for, but there's another candidate?
* We treat this as an error, as we want to enforce that there are no ambiguities
- * in case we are in the fallback path.*/
+ * in case we are in the fallback path. */
if (r == 0) {
r = -ENOTUNIQ;
break;
r = get_proc_field(p, "Umask", WHITESPACE, &m);
if (r == -ENOENT)
return -ESRCH;
+ if (r < 0)
+ return r;
return parse_mode(m, ret);
}
return 0;
}
-int connect_unix_path(int fd, int dir_fd, const char *path) {
- _cleanup_close_ int inode_fd = -EBADF;
+static int connect_unix_path_simple(int fd, const char *path) {
union sockaddr_union sa = {
.un.sun_family = AF_UNIX,
};
- size_t path_len;
- socklen_t salen;
+ size_t l;
assert(fd >= 0);
- assert(dir_fd == AT_FDCWD || dir_fd >= 0);
assert(path);
+ l = strlen(path);
+ assert(l > 0);
+ assert(l < sizeof(sa.un.sun_path));
+
+ memcpy(sa.un.sun_path, path, l + 1);
+ return RET_NERRNO(connect(fd, &sa.sa, offsetof(struct sockaddr_un, sun_path) + l + 1));
+}
+
+static int connect_unix_inode(int fd, int inode_fd) {
+ assert(fd >= 0);
+ assert(inode_fd >= 0);
+
+ return connect_unix_path_simple(fd, FORMAT_PROC_FD_PATH(inode_fd));
+}
+
+int connect_unix_path(int fd, int dir_fd, const char *path) {
+ _cleanup_close_ int inode_fd = -EBADF;
+
+ assert(fd >= 0);
+ assert(dir_fd == AT_FDCWD || dir_fd >= 0);
+
/* Connects to the specified AF_UNIX socket in the file system. Works around the 108 byte size limit
* in sockaddr_un, by going via O_PATH if needed. This hence works for any kind of path. */
- path_len = strlen(path);
+ if (!path)
+ return connect_unix_inode(fd, dir_fd); /* If no path is specified, then dir_fd refers to the socket inode to connect to. */
/* Refuse zero length path early, to make sure AF_UNIX stack won't mistake this for an abstract
* namespace path, since first char is NUL */
- if (path_len <= 0)
+ if (isempty(path))
return -EINVAL;
- if (dir_fd == AT_FDCWD && path_len < sizeof(sa.un.sun_path)) {
- memcpy(sa.un.sun_path, path, path_len + 1);
- salen = offsetof(struct sockaddr_un, sun_path) + path_len + 1;
- } else {
- const char *proc;
- size_t proc_len;
-
- /* If dir_fd is specified, then we need to go the indirect O_PATH route, because connectat()
- * does not exist. If the path is too long, we also need to take the indirect route, since we
- * can't fit this into a sockaddr_un directly. */
-
- inode_fd = openat(dir_fd, path, O_PATH|O_CLOEXEC);
- if (inode_fd < 0)
- return -errno;
+ /* Shortcut for the simple case */
+ if (dir_fd == AT_FDCWD && strlen(path) < sizeof_field(struct sockaddr_un, sun_path))
+ return connect_unix_path_simple(fd, path);
- proc = FORMAT_PROC_FD_PATH(inode_fd);
- proc_len = strlen(proc);
+ /* If dir_fd is specified, then we need to go the indirect O_PATH route, because connectat() does not
+ * exist. If the path is too long, we also need to take the indirect route, since we can't fit this
+ * into a sockaddr_un directly. */
- assert(proc_len < sizeof(sa.un.sun_path));
- memcpy(sa.un.sun_path, proc, proc_len + 1);
- salen = offsetof(struct sockaddr_un, sun_path) + proc_len + 1;
- }
+ inode_fd = openat(dir_fd, path, O_PATH|O_CLOEXEC);
+ if (inode_fd < 0)
+ return -errno;
- return RET_NERRNO(connect(fd, &sa.sa, salen));
+ return connect_unix_inode(fd, inode_fd);
}
int socket_address_parse_unix(SocketAddress *ret_address, const char *s) {
return mfree(l);
}
-char** strv_copy(char * const *l) {
+char** strv_copy_n(char * const *l, size_t m) {
_cleanup_strv_free_ char **result = NULL;
char **k;
- result = new(char*, strv_length(l) + 1);
+ result = new(char*, MIN(strv_length(l), m) + 1);
if (!result)
return NULL;
k = result;
STRV_FOREACH(i, l) {
+ if (m == 0)
+ break;
+
*k = strdup(*i);
if (!*k)
return NULL;
k++;
+
+ if (m != SIZE_MAX)
+ m--;
}
*k = NULL;
DEFINE_TRIVIAL_CLEANUP_FUNC(char**, strv_free_erase);
#define _cleanup_strv_free_erase_ _cleanup_(strv_free_erasep)
-char** strv_copy(char * const *l);
+char** strv_copy_n(char * const *l, size_t n);
+static inline char** strv_copy(char * const *l) {
+ return strv_copy_n(l, SIZE_MAX);
+}
size_t strv_length(char * const *l) _pure_;
int strv_extend_strv(char ***a, char * const *b, bool filter_duplicates);
/* Only 256 colors. */
COLOR_256,
- /* For truecolor or 24bit color support.*/
+ /* For truecolor or 24bit color support. */
COLOR_24BIT,
_COLOR_INVALID = -EINVAL,
assert(path_is_absolute(simplified));
- /* Check if the symlink remain inside of of our search path.
+ /* Check if the symlink remain inside of our search path.
* If yes, it is an alias. Verify that it is valid.
*
* If no, then this is a linked unit file or mask, and we don't care about the target name
l = (size_t) n;
}
}
+
+int xsetxattr(int fd,
+ const char *path,
+ const char *name,
+ const char *value,
+ size_t size,
+ int flags) {
+
+ _cleanup_close_ int opened_fd = -EBADF;
+ bool by_procfs = false;
+ int r;
+
+ assert(fd >= 0 || fd == AT_FDCWD);
+ assert(name);
+ assert(value);
+ assert((flags & ~(AT_SYMLINK_FOLLOW|AT_EMPTY_PATH)) == 0);
+
+ /* So, this is a single function that does what setxattr()/lsetxattr()/fsetxattr() do, but in one go,
+ * and with additional bells and whistles. Specifically:
+ *
+ * 1. This works on O_PATH fds (which fsetxattr() does not)
+ * 2. Provides full openat()-style semantics, i.e. by-fd, by-path and combination thereof
+ * 3. As extension to openat()-style semantics implies AT_EMPTY_PATH if path is NULL.
+ */
+
+ if (!path) /* If path is NULL, imply AT_EMPTY_PATH. – But if it's "", don't — for safety reasons. */
+ flags |= AT_EMPTY_PATH;
+
+ if (size == SIZE_MAX)
+ size = strlen(value);
+
+ if (isempty(path)) {
+ if (!FLAGS_SET(flags, AT_EMPTY_PATH))
+ return -EINVAL;
+
+ if (fd == AT_FDCWD) /* Both unspecified? Then operate on current working directory */
+ path = ".";
+ else {
+ r = fd_is_opath(fd);
+ if (r < 0)
+ return r;
+
+ by_procfs = r;
+ path = NULL;
+ }
+
+ } else if (fd != AT_FDCWD) {
+
+ /* If both have been specified, then we go via O_PATH */
+ opened_fd = openat(fd, path, O_PATH|O_CLOEXEC|(FLAGS_SET(flags, AT_SYMLINK_FOLLOW) ? 0 : O_NOFOLLOW));
+ if (opened_fd < 0)
+ return -errno;
+
+ fd = opened_fd;
+ path = NULL;
+ by_procfs = true; /* fsetxattr() is not going to work, go via /proc/ link right-away */
+ }
+
+ if (path)
+ r = FLAGS_SET(flags, AT_SYMLINK_FOLLOW) ? setxattr(path, name, value, size, 0)
+ : lsetxattr(path, name, value, size, 0);
+ else
+ r = by_procfs ? setxattr(FORMAT_PROC_FD_PATH(fd), name, value, size, 0)
+ : fsetxattr(fd, name, value, size, 0);
+ if (r < 0)
+ return -errno;
+
+ return 0;
+}
static inline int flistxattr_malloc(int fd, char **ret) {
return listxattr_at_malloc(fd, NULL, AT_EMPTY_PATH, ret);
}
+
+int xsetxattr(int fd, const char *path, const char *name, const char *value, size_t size, int flags);
* for setting up the ESP in /etc/machine-info. The newer /etc/kernel/entry-token file, as well as
* the $layout field in /etc/kernel/install.conf are better replacements for this though, hence this
* has been deprecated and is only returned for compatibility. */
- _cleanup_free_ char *s = NULL, *layout = NULL;
+ _cleanup_free_ char *p = NULL, *s = NULL, *layout = NULL;
int r;
- r = parse_env_file(NULL, "/etc/machine-info",
+ p = path_join(arg_root, "etc/machine-info");
+ if (!p)
+ return log_oom();
+
+ r = parse_env_file(NULL, p,
"KERNEL_INSTALL_LAYOUT", &layout,
"KERNEL_INSTALL_MACHINE_ID", &s);
if (r == -ENOENT)
if (r < 0)
return log_error_errno(r, "Failed to parse KERNEL_INSTALL_MACHINE_ID=%s in /etc/machine-info: %m", s);
- log_debug("Loaded KERNEL_INSTALL_MACHINE_ID=%s from KERNEL_INSTALL_MACHINE_ID in /etc/machine-info.",
+ log_debug("Loaded KERNEL_INSTALL_MACHINE_ID=%s from /etc/machine-info.",
SD_ID128_TO_STRING(arg_machine_id));
}
_cleanup_free_ char *layout = NULL, *p = NULL;
int r;
- p = path_join(etc_kernel(), "install.conf");
+ p = path_join(arg_root, etc_kernel(), "install.conf");
if (!p)
return log_oom();
return log_error_errno(r, "Failed to parse %s: %m", p);
if (!isempty(layout)) {
- log_debug("layout=%s is specified in /etc/machine-info.", layout);
+ log_debug("layout=%s is specified in %s.", layout, p);
free_and_replace(arg_install_layout, layout);
}
if (!arg_make_entry_directory && arg_entry_token_type == ARG_ENTRY_TOKEN_MACHINE_ID)
return 0;
- p = path_join(etc_kernel(), "entry-token");
+ p = path_join(arg_root, etc_kernel(), "entry-token");
if (!p)
return log_oom();
r = write_string_file(p, arg_entry_token, WRITE_STRING_FILE_CREATE|WRITE_STRING_FILE_ATOMIC|WRITE_STRING_FILE_MKDIR_0755);
if (r < 0)
- return log_error_errno(r, "Failed to write entry token '%s' to %s", arg_entry_token, p);
+ return log_error_errno(r, "Failed to write entry token '%s' to %s: %m", arg_entry_token, p);
return 0;
}
if (r == -ENOENT)
return EFI_MACHINE_TYPE_NAME;
if (r < 0) {
- log_warning_errno(r, "Error reading EFI firmware word size, assuming '%i': %m", __WORDSIZE);
+ log_warning_errno(r,
+ "Error reading EFI firmware word size, assuming machine type '%s': %m",
+ EFI_MACHINE_TYPE_NAME);
return EFI_MACHINE_TYPE_NAME;
}
return "ia32";
log_warning(
- "Unknown EFI firmware word size '%s', using default word size '%i' instead.",
+ "Unknown EFI firmware word size '%s', using machine type '%s'.",
platform_size,
- __WORDSIZE);
+ EFI_MACHINE_TYPE_NAME);
#endif
return EFI_MACHINE_TYPE_NAME;
case ARG_ENTRY_TOKEN_AUTO: {
_cleanup_free_ char *buf = NULL, *p = NULL;
- p = path_join(etc_kernel(), "entry-token");
+ p = path_join(arg_root, etc_kernel(), "entry-token");
if (!p)
return log_oom();
r = read_one_line_file(p, &buf);
} else if (sd_id128_is_null(arg_machine_id)) {
_cleanup_free_ char *id = NULL, *image_id = NULL;
- r = parse_os_release(NULL,
+ r = parse_os_release(arg_root,
"IMAGE_ID", &image_id,
"ID", &id);
if (r < 0)
case ARG_ENTRY_TOKEN_OS_IMAGE_ID: {
_cleanup_free_ char *buf = NULL;
- r = parse_os_release(NULL, "IMAGE_ID", &buf);
+ r = parse_os_release(arg_root, "IMAGE_ID", &buf);
if (r < 0)
return log_error_errno(r, "Failed to load /etc/os-release: %m");
case ARG_ENTRY_TOKEN_OS_ID: {
_cleanup_free_ char *buf = NULL;
- r = parse_os_release(NULL, "ID", &buf);
+ r = parse_os_release(arg_root, "ID", &buf);
if (r < 0)
return log_error_errno(r, "Failed to load /etc/os-release: %m");
/* The BCD store is really just a regular windows registry hive with a rather cryptic internal
* key structure. On a running system it gets mounted to HKEY_LOCAL_MACHINE\BCD00000000.
*
- * Of interest to us are the these two keys:
+ * Of interest to us are these two keys:
* - \Objects\{bootmgr}\Elements\24000001
* This key is the "displayorder" property and contains a value of type REG_MULTI_SZ
* with the name "Element" that holds a {GUID} list (UTF16, NUL-separated).
* but we do not want to do that if that would be us.
*
* If the default loader is not us, it might be shim. It would
- * chainload GRUBX64.EFI in that case, which might be us.*/
+ * chainload GRUBX64.EFI in that case, which might be us. */
if (strcaseeq16(loader, loaded_image_path) ||
is_sd_boot(root_dir, loader) ||
is_sd_boot(root_dir, u"\\EFI\\BOOT\\GRUB" EFI_MACHINE_TYPE_NAME u".EFI"))
assert(key);
if (!checked) {
- /* Get the *first* TextInputEx device.*/
+ /* Get the *first* TextInputEx device. */
err = BS->LocateProtocol(
MAKE_GUID_PTR(EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL), NULL, (void **) &extraInEx);
if (err != EFI_SUCCESS || BS->CheckEvent(extraInEx->WaitForKeyEx) == EFI_INVALID_PARAMETER)
if (*inode_counter == UINT32_MAX) /* more than 2^32-1 inodes? yikes. cpio doesn't support that either */
return EFI_OUT_OF_RESOURCES;
- l = 6 + 13*8 + 1 + 1; /* Fixed CPIO header size, slash separator, and NUL byte after the file name*/
+ l = 6 + 13*8 + 1 + 1; /* Fixed CPIO header size, slash separator, and NUL byte after the file name */
target_dir_prefix_size = strlen8(target_dir_prefix);
if (l > SIZE_MAX - target_dir_prefix_size)
if (*inode_counter == UINT32_MAX)
return EFI_OUT_OF_RESOURCES;
- l = 6 + 13*8 + 1; /* Fixed CPIO header size, and NUL byte after the file name*/
+ l = 6 + 13*8 + 1; /* Fixed CPIO header size, and NUL byte after the file name */
path_size = strlen8(path);
if (l > SIZE_MAX - path_size)
EFI_TCG2 *tpm2;
EFI_STATUS err;
- assert(description);
+ assert(description || pcrindex == UINT32_MAX);
/* If EFI_SUCCESS is returned, will initialize ret_measured to true if we actually measured
* something, or false if measurement was turned off. */
return NULL;
}
+
+/* libgcc's __aeabi_ldiv0 intrinsic will call raise() on division by zero, so we
+ * need to provide one ourselves for now. */
+_used_ _noreturn_ int raise(int sig) {
+ assert_not_reached();
+}
c->startup_io_weight != CGROUP_WEIGHT_INVALID ||
c->startup_blockio_weight != CGROUP_BLKIO_WEIGHT_INVALID ||
c->startup_cpuset_cpus.set ||
- c->startup_cpuset_mems.set;
+ c->startup_cpuset_mems.set ||
+ c->startup_memory_high_set ||
+ c->startup_memory_max_set ||
+ c->startup_memory_swap_max_set||
+ c->startup_memory_zswap_max_set ||
+ c->startup_memory_low_set;
}
bool unit_has_host_root_cgroup(Unit *u) {
.startup_cpu_shares = CGROUP_CPU_SHARES_INVALID,
.memory_high = CGROUP_LIMIT_MAX,
+ .startup_memory_high = CGROUP_LIMIT_MAX,
.memory_max = CGROUP_LIMIT_MAX,
+ .startup_memory_max = CGROUP_LIMIT_MAX,
.memory_swap_max = CGROUP_LIMIT_MAX,
+ .startup_memory_swap_max = CGROUP_LIMIT_MAX,
.memory_zswap_max = CGROUP_LIMIT_MAX,
+ .startup_memory_zswap_max = CGROUP_LIMIT_MAX,
.memory_limit = CGROUP_LIMIT_MAX,
assert_se(c = unit_get_cgroup_context(u));
+ bool startup = u->manager && IN_SET(manager_state(u->manager), MANAGER_STARTING, MANAGER_INITIALIZING, MANAGER_STOPPING);
+
if (streq(property_name, "MemoryLow")) {
unit_value = unit_get_ancestor_memory_low(u);
file = "memory.low";
+ } else if (startup && streq(property_name, "StartupMemoryLow")) {
+ unit_value = unit_get_ancestor_startup_memory_low(u);
+ file = "memory.low";
} else if (streq(property_name, "MemoryMin")) {
unit_value = unit_get_ancestor_memory_min(u);
file = "memory.min";
} else if (streq(property_name, "MemoryHigh")) {
unit_value = c->memory_high;
file = "memory.high";
+ } else if (startup && streq(property_name, "StartupMemoryHigh")) {
+ unit_value = c->startup_memory_high;
+ file = "memory.high";
} else if (streq(property_name, "MemoryMax")) {
unit_value = c->memory_max;
file = "memory.max";
+ } else if (startup && streq(property_name, "StartupMemoryMax")) {
+ unit_value = c->startup_memory_max;
+ file = "memory.max";
} else if (streq(property_name, "MemorySwapMax")) {
unit_value = c->memory_swap_max;
file = "memory.swap.max";
+ } else if (startup && streq(property_name, "StartupMemorySwapMax")) {
+ unit_value = c->startup_memory_swap_max;
+ file = "memory.swap.max";
} else if (streq(property_name, "MemoryZSwapMax")) {
unit_value = c->memory_zswap_max;
file = "memory.zswap.max";
+ } else if (startup && streq(property_name, "StartupMemoryZSwapMax")) {
+ unit_value = c->startup_memory_zswap_max;
+ file = "memory.zswap.max";
} else
return -EINVAL;
* only complain if the error is not ENOENT. This is similarly the case for memory.zswap.max relying
* on CONFIG_ZSWAP. */
if (r > 0 || IN_SET(r, -ENODATA, -EOWNERDEAD) ||
- (r == -ENOENT && STR_IN_SET(property_name, "MemorySwapMax", "MemoryZSwapMax")))
+ (r == -ENOENT && STR_IN_SET(property_name,
+ "MemorySwapMax",
+ "StartupMemorySwapMax",
+ "MemoryZSwapMax",
+ "StartupMemoryZSwapMax")))
buf[0] = 0;
else if (r < 0) {
errno = -r;
char cdc[FORMAT_CGROUP_DIFF_MAX];
char cdd[FORMAT_CGROUP_DIFF_MAX];
char cde[FORMAT_CGROUP_DIFF_MAX];
+ char cdf[FORMAT_CGROUP_DIFF_MAX];
+ char cdg[FORMAT_CGROUP_DIFF_MAX];
+ char cdh[FORMAT_CGROUP_DIFF_MAX];
+ char cdi[FORMAT_CGROUP_DIFF_MAX];
+ char cdj[FORMAT_CGROUP_DIFF_MAX];
+ char cdk[FORMAT_CGROUP_DIFF_MAX];
assert(u);
assert(f);
"%sDefaultMemoryLow: %" PRIu64 "\n"
"%sMemoryMin: %" PRIu64 "%s\n"
"%sMemoryLow: %" PRIu64 "%s\n"
+ "%sStartupMemoryLow: %" PRIu64 "%s\n"
"%sMemoryHigh: %" PRIu64 "%s\n"
+ "%sStartupMemoryHigh: %" PRIu64 "%s\n"
"%sMemoryMax: %" PRIu64 "%s\n"
+ "%sStartupMemoryMax: %" PRIu64 "%s\n"
"%sMemorySwapMax: %" PRIu64 "%s\n"
+ "%sStartupMemorySwapMax: %" PRIu64 "%s\n"
"%sMemoryZSwapMax: %" PRIu64 "%s\n"
+ "%sStartupMemoryZSwapMax: %" PRIu64 "%s\n"
"%sMemoryLimit: %" PRIu64 "\n"
"%sTasksMax: %" PRIu64 "\n"
"%sDevicePolicy: %s\n"
prefix, c->default_memory_low,
prefix, c->memory_min, format_cgroup_memory_limit_comparison(cda, sizeof(cda), u, "MemoryMin"),
prefix, c->memory_low, format_cgroup_memory_limit_comparison(cdb, sizeof(cdb), u, "MemoryLow"),
- prefix, c->memory_high, format_cgroup_memory_limit_comparison(cdc, sizeof(cdc), u, "MemoryHigh"),
- prefix, c->memory_max, format_cgroup_memory_limit_comparison(cdd, sizeof(cdd), u, "MemoryMax"),
- prefix, c->memory_swap_max, format_cgroup_memory_limit_comparison(cde, sizeof(cde), u, "MemorySwapMax"),
- prefix, c->memory_zswap_max, format_cgroup_memory_limit_comparison(cde, sizeof(cde), u, "MemoryZSwapMax"),
+ prefix, c->startup_memory_low, format_cgroup_memory_limit_comparison(cdc, sizeof(cdc), u, "StartupMemoryLow"),
+ prefix, c->memory_high, format_cgroup_memory_limit_comparison(cdd, sizeof(cdd), u, "MemoryHigh"),
+ prefix, c->startup_memory_high, format_cgroup_memory_limit_comparison(cde, sizeof(cde), u, "StartupMemoryHigh"),
+ prefix, c->memory_max, format_cgroup_memory_limit_comparison(cdf, sizeof(cdf), u, "MemoryMax"),
+ prefix, c->startup_memory_max, format_cgroup_memory_limit_comparison(cdg, sizeof(cdg), u, "StartupMemoryMax"),
+ prefix, c->memory_swap_max, format_cgroup_memory_limit_comparison(cdh, sizeof(cdh), u, "MemorySwapMax"),
+ prefix, c->startup_memory_swap_max, format_cgroup_memory_limit_comparison(cdi, sizeof(cdi), u, "StartupMemorySwapMax"),
+ prefix, c->memory_zswap_max, format_cgroup_memory_limit_comparison(cdj, sizeof(cdj), u, "MemoryZSwapMax"),
+ prefix, c->startup_memory_zswap_max, format_cgroup_memory_limit_comparison(cdk, sizeof(cdk), u, "StartupMemoryZSwapMax"),
prefix, c->memory_limit,
prefix, tasks_max_resolve(&c->tasks_max),
prefix, cgroup_device_policy_to_string(c->device_policy),
}
UNIT_DEFINE_ANCESTOR_MEMORY_LOOKUP(memory_low);
+UNIT_DEFINE_ANCESTOR_MEMORY_LOOKUP(startup_memory_low);
UNIT_DEFINE_ANCESTOR_MEMORY_LOOKUP(memory_min);
static void unit_set_xattr_graceful(Unit *u, const char *cgroup_path, const char *name, const void *data, size_t size) {
assert_se(c = unit_get_cgroup_context(u));
- return unit_get_ancestor_memory_min(u) > 0 || unit_get_ancestor_memory_low(u) > 0 ||
- c->memory_high != CGROUP_LIMIT_MAX || c->memory_max != CGROUP_LIMIT_MAX ||
- c->memory_swap_max != CGROUP_LIMIT_MAX || c->memory_zswap_max != CGROUP_LIMIT_MAX;
+ return unit_get_ancestor_memory_min(u) > 0 ||
+ unit_get_ancestor_memory_low(u) > 0 || unit_get_ancestor_startup_memory_low(u) > 0 ||
+ c->memory_high != CGROUP_LIMIT_MAX || c->startup_memory_high_set ||
+ c->memory_max != CGROUP_LIMIT_MAX || c->startup_memory_max_set ||
+ c->memory_swap_max != CGROUP_LIMIT_MAX || c->startup_memory_swap_max_set ||
+ c->memory_zswap_max != CGROUP_LIMIT_MAX || c->startup_memory_zswap_max_set;
}
static void cgroup_apply_unified_memory_limit(Unit *u, const char *file, uint64_t v) {
if ((apply_mask & CGROUP_MASK_MEMORY) && !is_local_root) {
if (cg_all_unified() > 0) {
- uint64_t max, swap_max = CGROUP_LIMIT_MAX, zswap_max = CGROUP_LIMIT_MAX;
+ uint64_t max, swap_max = CGROUP_LIMIT_MAX, zswap_max = CGROUP_LIMIT_MAX, high = CGROUP_LIMIT_MAX;
if (unit_has_unified_memory_config(u)) {
- max = c->memory_max;
- swap_max = c->memory_swap_max;
- zswap_max = c->memory_zswap_max;
+ bool startup = IN_SET(state, MANAGER_STARTING, MANAGER_INITIALIZING, MANAGER_STOPPING);
+
+ high = startup && c->startup_memory_high_set ? c->startup_memory_high : c->memory_high;
+ max = startup && c->startup_memory_max_set ? c->startup_memory_max : c->memory_max;
+ swap_max = startup && c->startup_memory_swap_max_set ? c->startup_memory_swap_max : c->memory_swap_max;
+ zswap_max = startup && c->startup_memory_zswap_max_set ? c->startup_memory_zswap_max : c->memory_zswap_max;
} else {
max = c->memory_limit;
cgroup_apply_unified_memory_limit(u, "memory.min", unit_get_ancestor_memory_min(u));
cgroup_apply_unified_memory_limit(u, "memory.low", unit_get_ancestor_memory_low(u));
- cgroup_apply_unified_memory_limit(u, "memory.high", c->memory_high);
+ cgroup_apply_unified_memory_limit(u, "memory.high", high);
cgroup_apply_unified_memory_limit(u, "memory.max", max);
cgroup_apply_unified_memory_limit(u, "memory.swap.max", swap_max);
cgroup_apply_unified_memory_limit(u, "memory.zswap.max", zswap_max);
uint64_t default_memory_min;
uint64_t default_memory_low;
+ uint64_t default_startup_memory_low;
uint64_t memory_min;
uint64_t memory_low;
+ uint64_t startup_memory_low;
uint64_t memory_high;
+ uint64_t startup_memory_high;
uint64_t memory_max;
+ uint64_t startup_memory_max;
uint64_t memory_swap_max;
+ uint64_t startup_memory_swap_max;
uint64_t memory_zswap_max;
+ uint64_t startup_memory_zswap_max;
bool default_memory_min_set:1;
bool default_memory_low_set:1;
+ bool default_startup_memory_low_set:1;
bool memory_min_set:1;
bool memory_low_set:1;
+ bool startup_memory_low_set:1;
+ bool startup_memory_high_set:1;
+ bool startup_memory_max_set:1;
+ bool startup_memory_swap_max_set:1;
+ bool startup_memory_zswap_max_set:1;
Set *ip_address_allow;
Set *ip_address_deny;
uint64_t unit_get_ancestor_memory_min(Unit *u);
uint64_t unit_get_ancestor_memory_low(Unit *u);
+uint64_t unit_get_ancestor_startup_memory_low(Unit *u);
int unit_search_main_pid(Unit *u, pid_t *ret);
int unit_watch_all_pids(Unit *u);
SD_BUS_PROPERTY("BlockIOWriteBandwidth", "a(st)", property_get_blockio_device_bandwidths, 0, 0),
SD_BUS_PROPERTY("MemoryAccounting", "b", bus_property_get_bool, offsetof(CGroupContext, memory_accounting), 0),
SD_BUS_PROPERTY("DefaultMemoryLow", "t", NULL, offsetof(CGroupContext, default_memory_low), 0),
+ SD_BUS_PROPERTY("DefaultStartupMemoryLow", "t", NULL, offsetof(CGroupContext, default_startup_memory_low), 0),
SD_BUS_PROPERTY("DefaultMemoryMin", "t", NULL, offsetof(CGroupContext, default_memory_min), 0),
SD_BUS_PROPERTY("MemoryMin", "t", NULL, offsetof(CGroupContext, memory_min), 0),
SD_BUS_PROPERTY("MemoryLow", "t", NULL, offsetof(CGroupContext, memory_low), 0),
+ SD_BUS_PROPERTY("StartupMemoryLow", "t", NULL, offsetof(CGroupContext, startup_memory_low), 0),
SD_BUS_PROPERTY("MemoryHigh", "t", NULL, offsetof(CGroupContext, memory_high), 0),
+ SD_BUS_PROPERTY("StartupMemoryHigh", "t", NULL, offsetof(CGroupContext, startup_memory_high), 0),
SD_BUS_PROPERTY("MemoryMax", "t", NULL, offsetof(CGroupContext, memory_max), 0),
+ SD_BUS_PROPERTY("StartupMemoryMax", "t", NULL, offsetof(CGroupContext, startup_memory_max), 0),
SD_BUS_PROPERTY("MemorySwapMax", "t", NULL, offsetof(CGroupContext, memory_swap_max), 0),
+ SD_BUS_PROPERTY("StartupMemorySwapMax", "t", NULL, offsetof(CGroupContext, startup_memory_swap_max), 0),
SD_BUS_PROPERTY("MemoryZSwapMax", "t", NULL, offsetof(CGroupContext, memory_zswap_max), 0),
+ SD_BUS_PROPERTY("StartupMemoryZSwapMax", "t", NULL, offsetof(CGroupContext, startup_memory_zswap_max), 0),
SD_BUS_PROPERTY("MemoryLimit", "t", NULL, offsetof(CGroupContext, memory_limit), 0),
SD_BUS_PROPERTY("DevicePolicy", "s", property_get_cgroup_device_policy, offsetof(CGroupContext, device_policy), 0),
SD_BUS_PROPERTY("DeviceAllow", "a(ss)", property_get_device_allow, 0, 0),
return r;
}
+ if (streq(name, "StartupMemoryLow")) {
+ r = bus_cgroup_set_memory_protection(u, name, &c->startup_memory_low, message, flags, error);
+ if (r > 0)
+ c->startup_memory_low_set = true;
+ return r;
+ }
+
if (streq(name, "DefaultMemoryMin")) {
r = bus_cgroup_set_memory_protection(u, name, &c->default_memory_min, message, flags, error);
if (r > 0)
return r;
}
+ if (streq(name, "DefaultStartupMemoryLow")) {
+ r = bus_cgroup_set_memory_protection(u, name, &c->default_startup_memory_low, message, flags, error);
+ if (r > 0)
+ c->default_startup_memory_low_set = true;
+ return r;
+ }
+
if (streq(name, "MemoryHigh"))
return bus_cgroup_set_memory(u, name, &c->memory_high, message, flags, error);
+ if (streq(name, "StartupMemoryHigh")) {
+ r = bus_cgroup_set_memory(u, name, &c->startup_memory_high, message, flags, error);
+ if (r > 0)
+ c->startup_memory_high_set = true;
+ return r;
+ }
+
if (streq(name, "MemorySwapMax"))
return bus_cgroup_set_swap(u, name, &c->memory_swap_max, message, flags, error);
+ if (streq(name, "StartupMemorySwapMax")) {
+ r = bus_cgroup_set_swap(u, name, &c->startup_memory_swap_max, message, flags, error);
+ if (r > 0)
+ c->startup_memory_swap_max_set = true;
+ return r;
+ }
+
if (streq(name, "MemoryZSwapMax"))
return bus_cgroup_set_zswap(u, name, &c->memory_zswap_max, message, flags, error);
+ if (streq(name, "StartupMemoryZSwapMax")) {
+ r = bus_cgroup_set_zswap(u, name, &c->startup_memory_zswap_max, message, flags, error);
+ if (r > 0)
+ c->startup_memory_zswap_max_set = true;
+ return r;
+ }
+
if (streq(name, "MemoryMax"))
return bus_cgroup_set_memory(u, name, &c->memory_max, message, flags, error);
+ if (streq(name, "StartupMemoryMax")) {
+ r = bus_cgroup_set_memory(u, name, &c->startup_memory_max, message, flags, error);
+ if (r > 0)
+ c->startup_memory_max_set = true;
+ return r;
+ }
+
if (streq(name, "MemoryLimit"))
return bus_cgroup_set_memory(u, name, &c->memory_limit, message, flags, error);
(void) sd_bus_creds_get_comm(creds, &comm);
caller = manager_get_unit_by_pid(manager, pid);
- log_info("%s requested from client PID " PID_FMT " ('%s') (from unit '%s')...",
- method, pid, strna(comm), strna(caller ? caller->id : NULL));
+ log_info("%s requested from client PID " PID_FMT "%s%s%s%s%s%s...",
+ method, pid,
+ comm ? " ('" : "", strempty(comm), comm ? "')" : "",
+ caller ? " (unit " : "", caller ? caller->id : NULL, caller ? ")" : "");
}
static int method_reload(sd_bus_message *message, void *userdata, sd_bus_error *error) {
SD_BUS_NO_RESULT,
method_kill_unit,
SD_BUS_VTABLE_UNPRIVILEGED),
+ SD_BUS_METHOD_WITH_ARGS("QueueSignalUnit",
+ SD_BUS_ARGS("s", name, "s", whom, "i", signal, "i", value),
+ SD_BUS_NO_RESULT,
+ method_kill_unit,
+ SD_BUS_VTABLE_UNPRIVILEGED),
SD_BUS_METHOD_WITH_ARGS("CleanUnit",
SD_BUS_ARGS("s", name, "as", mask),
SD_BUS_NO_RESULT,
int bus_unit_method_kill(sd_bus_message *message, void *userdata, sd_bus_error *error) {
Unit *u = ASSERT_PTR(userdata);
+ int32_t value = 0;
const char *swho;
int32_t signo;
KillWho who;
- int r;
+ int r, code;
assert(message);
if (r < 0)
return r;
+ if (startswith(sd_bus_message_get_member(message), "QueueSignal")) {
+ r = sd_bus_message_read(message, "i", &value);
+ if (r < 0)
+ return r;
+
+ code = SI_QUEUE;
+ } else
+ code = SI_USER;
+
if (isempty(swho))
who = KILL_ALL;
else {
who = kill_who_from_string(swho);
if (who < 0)
- return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid who argument %s", swho);
+ return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid who argument: %s", swho);
}
if (!SIGNAL_VALID(signo))
return sd_bus_error_set(error, SD_BUS_ERROR_INVALID_ARGS, "Signal number out of range.");
+ if (code == SI_QUEUE && !((signo >= SIGRTMIN) && (signo <= SIGRTMAX)))
+ return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS,
+ "Value parameter only accepted for realtime signals (SIGRTMIN…SIGRTMAX), refusing for signal SIG%s.", signal_to_string(signo));
+
r = bus_verify_manage_units_async_full(
u,
"kill",
if (r == 0)
return 1; /* No authorization for now, but the async polkit stuff will call us again when it has it */
- r = unit_kill(u, who, signo, error);
+ r = unit_kill(u, who, signo, code, value, error);
if (r < 0)
return r;
SD_BUS_NO_RESULT,
bus_unit_method_kill,
SD_BUS_VTABLE_UNPRIVILEGED),
+ SD_BUS_METHOD_WITH_ARGS("QueueSignal",
+ SD_BUS_ARGS("s", whom, "i", signal, "i", value),
+ SD_BUS_NO_RESULT,
+ bus_unit_method_kill,
+ SD_BUS_VTABLE_UNPRIVILEGED),
SD_BUS_METHOD("ResetFailed",
NULL,
NULL,
* serialize the sysfs path across reloads/reexecs. Hence, when coming back from a reload/restart we
* might have the state valid, but not the sysfs path. Also, there is another possibility; when multiple
* devices have the same devlink (e.g. /dev/disk/by-uuid/xxxx), adding/updating/removing one of the
- * device causes syspath change. Hence, let's always update sysfs path.*/
+ * device causes syspath change. Hence, let's always update sysfs path. */
/* Let's remove all dependencies generated due to udev properties. We'll re-add whatever is configured
* now below. */
/* First, process the main (that is, points to the syspath) and (real, not symlink) devnode units. */
if (device_for_action(dev, SD_DEVICE_REMOVE))
- /* If the device is removed, the main and devnode units units will be removed by
+ /* If the device is removed, the main and devnode units will be removed by
* device_update_found_by_sysfs() in device_dispatch_io(). Hence, it is not necessary to
* store them to not_ready_units, and we have nothing to do here.
*
final_mounted = true;
if (workspace_mounted < 0) {
- /* If the final place is mounted, but the workspace we isn't, then let's bind mount
+ /* If the final place is mounted, but the workspace isn't, then let's bind mount
* the final version to the workspace, and make it writable, so that we can make
* changes */
(void) unlink(symlink_abs);
}
-
}
return 0;
{{type}}.MemoryMin, config_parse_memory_limit, 0, offsetof({{type}}, cgroup_context)
{{type}}.DefaultMemoryMin, config_parse_memory_limit, 0, offsetof({{type}}, cgroup_context)
{{type}}.DefaultMemoryLow, config_parse_memory_limit, 0, offsetof({{type}}, cgroup_context)
+{{type}}.DefaultStartupMemoryLow, config_parse_memory_limit, 0, offsetof({{type}}, cgroup_context)
{{type}}.MemoryLow, config_parse_memory_limit, 0, offsetof({{type}}, cgroup_context)
+{{type}}.StartupMemoryLow, config_parse_memory_limit, 0, offsetof({{type}}, cgroup_context)
{{type}}.MemoryHigh, config_parse_memory_limit, 0, offsetof({{type}}, cgroup_context)
+{{type}}.StartupMemoryHigh, config_parse_memory_limit, 0, offsetof({{type}}, cgroup_context)
{{type}}.MemoryMax, config_parse_memory_limit, 0, offsetof({{type}}, cgroup_context)
+{{type}}.StartupMemoryMax, config_parse_memory_limit, 0, offsetof({{type}}, cgroup_context)
{{type}}.MemorySwapMax, config_parse_memory_limit, 0, offsetof({{type}}, cgroup_context)
+{{type}}.StartupMemorySwapMax, config_parse_memory_limit, 0, offsetof({{type}}, cgroup_context)
{{type}}.MemoryZSwapMax, config_parse_memory_limit, 0, offsetof({{type}}, cgroup_context)
+{{type}}.StartupMemoryZSwapMax, config_parse_memory_limit, 0, offsetof({{type}}, cgroup_context)
{{type}}.MemoryLimit, config_parse_memory_limit, 0, offsetof({{type}}, cgroup_context)
{{type}}.DeviceAllow, config_parse_device_allow, 0, offsetof({{type}}, cgroup_context)
{{type}}.DevicePolicy, config_parse_device_policy, 0, offsetof({{type}}, cgroup_context.device_policy)
if (isempty(rvalue) && STR_IN_SET(lvalue, "DefaultMemoryLow",
"DefaultMemoryMin",
"MemoryLow",
+ "StartupMemoryLow",
"MemoryMin"))
bytes = CGROUP_LIMIT_MIN;
else if (!isempty(rvalue) && !streq(rvalue, "infinity")) {
bytes = physical_memory_scale(r, 10000U);
if (bytes >= UINT64_MAX ||
- (bytes <= 0 && !STR_IN_SET(lvalue, "MemorySwapMax", "MemoryZSwapMax", "MemoryLow", "MemoryMin", "DefaultMemoryLow", "DefaultMemoryMin"))) {
+ (bytes <= 0 && !STR_IN_SET(lvalue,
+ "MemorySwapMax",
+ "StartupMemorySwapMax",
+ "MemoryZSwapMax",
+ "StartupMemoryZSwapMax",
+ "MemoryLow",
+ "StartupMemoryLow",
+ "MemoryMin",
+ "DefaultMemoryLow",
+ "DefaultstartupMemoryLow",
+ "DefaultMemoryMin"))) {
log_syntax(unit, LOG_WARNING, filename, line, 0, "Memory limit '%s' out of range, ignoring.", rvalue);
return 0;
}
if (streq(lvalue, "DefaultMemoryLow")) {
c->default_memory_low = bytes;
c->default_memory_low_set = true;
+ } else if (streq(lvalue, "DefaultStartupMemoryLow")) {
+ c->default_startup_memory_low = bytes;
+ c->default_startup_memory_low_set = true;
} else if (streq(lvalue, "DefaultMemoryMin")) {
c->default_memory_min = bytes;
c->default_memory_min_set = true;
} else if (streq(lvalue, "MemoryLow")) {
c->memory_low = bytes;
c->memory_low_set = true;
+ } else if (streq(lvalue, "StartupMemoryLow")) {
+ c->startup_memory_low = bytes;
+ c->startup_memory_low_set = true;
} else if (streq(lvalue, "MemoryHigh"))
c->memory_high = bytes;
- else if (streq(lvalue, "MemoryMax"))
+ else if (streq(lvalue, "StartupMemoryHigh")) {
+ c->startup_memory_high = bytes;
+ c->startup_memory_high_set = true;
+ } else if (streq(lvalue, "MemoryMax"))
c->memory_max = bytes;
- else if (streq(lvalue, "MemorySwapMax"))
+ else if (streq(lvalue, "StartupMemoryMax")) {
+ c->startup_memory_max = bytes;
+ c->startup_memory_max_set = true;
+ } else if (streq(lvalue, "MemorySwapMax"))
c->memory_swap_max = bytes;
- else if (streq(lvalue, "MemoryZSwapMax"))
+ else if (streq(lvalue, "StartupMemorySwapMax")) {
+ c->startup_memory_swap_max = bytes;
+ c->startup_memory_swap_max_set = true;
+ } else if (streq(lvalue, "MemoryZSwapMax"))
c->memory_zswap_max = bytes;
- else if (streq(lvalue, "MemoryLimit")) {
+ else if (streq(lvalue, "StartupMemoryZSwapMax")) {
+ c->startup_memory_zswap_max = bytes;
+ c->startup_memory_zswap_max_set = true;
+ } else if (streq(lvalue, "MemoryLimit")) {
log_syntax(unit, LOG_WARNING, filename, line, 0,
"Unit uses MemoryLimit=; please use MemoryMax= instead. Support for MemoryLimit= will be removed soon.");
c->memory_limit = bytes;
{ "Manager", "NoNewPrivileges", config_parse_bool, 0, &arg_no_new_privs },
#if HAVE_SECCOMP
{ "Manager", "SystemCallArchitectures", config_parse_syscall_archs, 0, &arg_syscall_archs },
+#else
+ { "Manager", "SystemCallArchitectures", config_parse_warn_compat, DISABLED_CONFIGURATION, NULL },
+
#endif
{ "Manager", "TimerSlackNSec", config_parse_nsec, 0, &arg_timer_slack_nsec },
{ "Manager", "DefaultTimerAccuracySec", config_parse_sec, 0, &arg_default_timer_accuracy_usec },
if (detect_container() <= 0) {
/* Running outside of a container as PID 1 */
- log_set_target(LOG_TARGET_KMSG);
- log_open();
+ log_set_target_and_open(LOG_TARGET_KMSG);
if (in_initrd())
initrd_timestamp = userspace_timestamp;
} else {
/* Running inside a container, as PID 1 */
- log_set_target(LOG_TARGET_CONSOLE);
- log_open();
+ log_set_target_and_open(LOG_TARGET_CONSOLE);
/* For later on, see above... */
log_set_target(LOG_TARGET_JOURNAL);
/* Running as user instance */
arg_system = false;
log_set_always_reopen_console(true);
- log_set_target(LOG_TARGET_AUTO);
- log_open();
+ log_set_target_and_open(LOG_TARGET_AUTO);
/* clear the kernel timestamp, because we are not PID 1 */
kernel_timestamp = DUAL_TIMESTAMP_NULL;
* on services that want to own the console exclusively without our interference. */
m->no_console_output = m->n_on_console > 0;
- /* Acknowledge the child's request, and let all all other children know too that they shouldn't wait
+ /* Acknowledge the child's request, and let all other children know too that they shouldn't wait
* any longer by closing the pipes towards them, which is what they are waiting for. */
manager_close_idle_pipe(m);
after = NULL;
before = isempty(e) ? SPECIAL_INITRD_ROOT_FS_TARGET : SPECIAL_INITRD_FS_TARGET;
+ } else if (in_initrd() && path_startswith(m->where, "/sysusr/usr")) {
+ after = NULL;
+ before = SPECIAL_INITRD_USR_FS_TARGET;
+
} else if (mount_is_network(p)) {
after = SPECIAL_REMOTE_FS_PRE_TARGET;
before = SPECIAL_REMOTE_FS_TARGET;
m->clean_result = MOUNT_SUCCESS;
}
-static int mount_kill(Unit *u, KillWho who, int signo, sd_bus_error *error) {
+static int mount_kill(Unit *u, KillWho who, int signo, int code, int value, sd_bus_error *error) {
Mount *m = MOUNT(u);
assert(m);
- return unit_kill_common(u, who, signo, -1, m->control_pid, error);
+ return unit_kill_common(u, who, signo, code, value, -1, m->control_pid, error);
}
static int mount_control_pid(Unit *u) {
send_interface="org.freedesktop.systemd1.Manager"
send_member="KillUnit"/>
+ <allow send_destination="org.freedesktop.systemd1"
+ send_interface="org.freedesktop.systemd1.Manager"
+ send_member="QueueSignalUnit"/>
+
<allow send_destination="org.freedesktop.systemd1"
send_interface="org.freedesktop.systemd1.Manager"
send_member="ResetFailedUnit"/>
send_interface="org.freedesktop.systemd1.Unit"
send_member="Kill"/>
+ <allow send_destination="org.freedesktop.systemd1"
+ send_interface="org.freedesktop.systemd1.Unit"
+ send_member="QueueSignal"/>
+
<allow send_destination="org.freedesktop.systemd1"
send_interface="org.freedesktop.systemd1.Unit"
send_member="ResetFailed"/>
s->result = SCOPE_SUCCESS;
}
-static int scope_kill(Unit *u, KillWho who, int signo, sd_bus_error *error) {
- return unit_kill_common(u, who, signo, -1, -1, error);
+static int scope_kill(Unit *u, KillWho who, int signo, int code, int value, sd_bus_error *error) {
+ return unit_kill_common(u, who, signo, code, value, -1, -1, error);
}
static int scope_get_timeout(Unit *u, usec_t *timeout) {
s->type == SERVICE_NOTIFY_RELOAD;
}
-static unsigned service_exec_command_index(Unit *u, ServiceExecCommand id, ExecCommand *current) {
+static unsigned service_exec_command_index(Unit *u, ServiceExecCommand id, const ExecCommand *current) {
Service *s = SERVICE(u);
unsigned idx = 0;
- ExecCommand *first, *c;
assert(s);
assert(id >= 0);
assert(id < _SERVICE_EXEC_COMMAND_MAX);
- first = s->exec_command[id];
+ const ExecCommand *first = s->exec_command[id];
/* Figure out where we are in the list by walking back to the beginning */
- for (c = current; c != first; c = c->command_prev)
+ for (const ExecCommand *c = current; c != first; c = c->command_prev)
idx++;
return idx;
}
-static int service_serialize_exec_command(Unit *u, FILE *f, ExecCommand *command) {
+static int service_serialize_exec_command(Unit *u, FILE *f, const ExecCommand *command) {
_cleanup_free_ char *args = NULL, *p = NULL;
Service *s = SERVICE(u);
const char *type, *key;
return log_oom();
key = strjoina(type, "-command");
- (void) serialize_item_format(f, key, "%s %u %s %s", service_exec_command_to_string(id), idx, p, args);
+
+ /* We use '+1234' instead of '1234' to mark the last command in a sequence.
+ * This is used in service_deserialize_exec_command(). */
+ (void) serialize_item_format(
+ f, key,
+ "%s %s%u %s %s",
+ service_exec_command_to_string(id),
+ command->command_next ? "" : "+",
+ idx,
+ p, args);
return 0;
}
Service *s = SERVICE(u);
int r;
unsigned idx = 0, i;
- bool control, found = false;
+ bool control, found = false, last = false;
ServiceExecCommand id = _SERVICE_EXEC_COMMAND_INVALID;
ExecCommand *command = NULL;
_cleanup_free_ char *path = NULL;
state = STATE_EXEC_COMMAND_INDEX;
break;
case STATE_EXEC_COMMAND_INDEX:
+ /* PID 1234 is serialized as either '1234' or '+1234'. The second form is used to
+ * mark the last command in a sequence. We warn if the deserialized command doesn't
+ * match what we have loaded from the unit, but we don't need to warn if that is the
+ * last command. */
+
r = safe_atou(arg, &idx);
if (r < 0)
return r;
+ last = arg[0] == '+';
state = STATE_EXEC_COMMAND_PATH;
break;
s->control_command_id = id;
} else if (command)
s->main_command = command;
+ else if (last)
+ log_unit_debug(u, "Current command vanished from the unit file.");
else
log_unit_warning(u, "Current command vanished from the unit file, execution of the command list won't be resumed.");
s->flush_n_restarts = false;
}
-static int service_kill(Unit *u, KillWho who, int signo, sd_bus_error *error) {
+static int service_kill(Unit *u, KillWho who, int signo, int code, int value, sd_bus_error *error) {
Service *s = SERVICE(u);
assert(s);
- return unit_kill_common(u, who, signo, s->main_pid, s->control_pid, error);
+ return unit_kill_common(u, who, signo, code, value, s->main_pid, s->control_pid, error);
}
static int service_main_pid(Unit *u) {
return 1;
}
-static int slice_kill(Unit *u, KillWho who, int signo, sd_bus_error *error) {
- return unit_kill_common(u, who, signo, -1, -1, error);
+static int slice_kill(Unit *u, KillWho who, int signo, int code, int value, sd_bus_error *error) {
+ return unit_kill_common(u, who, signo, code, value, -1, -1, error);
}
static int slice_serialize(Unit *u, FILE *f, FDSet *fds) {
socket_set_state(s, SOCKET_RUNNING);
}
-static int socket_kill(Unit *u, KillWho who, int signo, sd_bus_error *error) {
- return unit_kill_common(u, who, signo, -1, SOCKET(u)->control_pid, error);
+static int socket_kill(Unit *u, KillWho who, int signo, int code, int value, sd_bus_error *error) {
+ return unit_kill_common(u, who, signo, code, value, -1, SOCKET(u)->control_pid, error);
}
static int socket_get_timeout(Unit *u, usec_t *timeout) {
s->clean_result = SWAP_SUCCESS;
}
-static int swap_kill(Unit *u, KillWho who, int signo, sd_bus_error *error) {
- return unit_kill_common(u, who, signo, -1, SWAP(u)->control_pid, error);
+static int swap_kill(Unit *u, KillWho who, int signo, int code, int value, sd_bus_error *error) {
+ return unit_kill_common(u, who, signo, code, value, -1, SWAP(u)->control_pid, error);
}
static int swap_get_timeout(Unit *u, usec_t *timeout) {
return 0;
}
+static bool shall_stop_on_isolate(Transaction *tr, Unit *u) {
+ assert(tr);
+ assert(u);
+
+ if (u->ignore_on_isolate)
+ return false;
+
+ /* Is there already something listed for this? */
+ if (hashmap_get(tr->jobs, u))
+ return false;
+
+ return true;
+}
+
int transaction_add_isolate_jobs(Transaction *tr, Manager *m) {
Unit *u;
char *k;
assert(m);
HASHMAP_FOREACH_KEY(u, k, m->units) {
+ Unit *o;
- /* ignore aliases */
+ /* Ignore aliases */
if (u->id != k)
continue;
- if (u->ignore_on_isolate)
+ /* No need to stop inactive units */
+ if (UNIT_IS_INACTIVE_OR_FAILED(unit_active_state(u)) && !u->job)
continue;
- /* No need to stop inactive jobs */
- if (UNIT_IS_INACTIVE_OR_FAILED(unit_active_state(u)) && !u->job)
+ if (!shall_stop_on_isolate(tr, u))
continue;
- /* Is there already something listed for this? */
- if (hashmap_get(tr->jobs, u))
+ /* Keep units that are triggered by units we want to keep around. */
+ bool keep = false;
+ UNIT_FOREACH_DEPENDENCY(o, u, UNIT_ATOM_TRIGGERED_BY)
+ if (!shall_stop_on_isolate(tr, o)) {
+ keep = true;
+ break;
+ }
+ if (keep)
continue;
r = transaction_add_job_and_dependencies(tr, JOB_STOP, u, tr->anchor_job, true, false, false, false, NULL);
return UNIT_VTABLE(u)->will_restart(u);
}
-int unit_kill(Unit *u, KillWho w, int signo, sd_bus_error *error) {
+int unit_kill(Unit *u, KillWho w, int signo, int code, int value, sd_bus_error *error) {
assert(u);
assert(w >= 0 && w < _KILL_WHO_MAX);
assert(SIGNAL_VALID(signo));
+ assert(IN_SET(code, SI_USER, SI_QUEUE));
if (!UNIT_VTABLE(u)->kill)
return -EOPNOTSUPP;
- return UNIT_VTABLE(u)->kill(u, w, signo, error);
+ return UNIT_VTABLE(u)->kill(u, w, signo, code, value, error);
}
void unit_notify_cgroup_oom(Unit *u, bool managed_oom) {
return 1;
}
+static int kill_or_sigqueue(pid_t pid, int signo, int code, int value) {
+ assert(pid > 0);
+ assert(SIGNAL_VALID(signo));
+
+ switch (code) {
+
+ case SI_USER:
+ log_debug("Killing " PID_FMT " with signal SIG%s.", pid, signal_to_string(signo));
+ return RET_NERRNO(kill(pid, signo));
+
+ case SI_QUEUE:
+ log_debug("Enqueuing value %i to " PID_FMT " on signal SIG%s.", value, pid, signal_to_string(signo));
+ return RET_NERRNO(sigqueue(pid, signo, (const union sigval) { .sival_int = value }));
+
+ default:
+ assert_not_reached();
+ }
+}
+
int unit_kill_common(
Unit *u,
KillWho who,
int signo,
+ int code,
+ int value,
pid_t main_pid,
pid_t control_pid,
sd_bus_error *error) {
- int r = 0;
bool killed = false;
+ int ret = 0, r;
/* This is the common implementation for explicit user-requested killing of unit processes, shared by
* various unit types. Do not confuse with unit_kill_context(), which is what we use when we want to
* stop a service ourselves. */
+ assert(u);
+ assert(who >= 0);
+ assert(who < _KILL_WHO_MAX);
+ assert(SIGNAL_VALID(signo));
+ assert(IN_SET(code, SI_USER, SI_QUEUE));
+
if (IN_SET(who, KILL_MAIN, KILL_MAIN_FAIL)) {
if (main_pid < 0)
return sd_bus_error_setf(error, BUS_ERROR_NO_SUCH_PROCESS, "%s units have no main processes", unit_type_to_string(u->type));
return sd_bus_error_set_const(error, BUS_ERROR_NO_SUCH_PROCESS, "No control process to kill");
}
- if (IN_SET(who, KILL_CONTROL, KILL_CONTROL_FAIL, KILL_ALL, KILL_ALL_FAIL))
- if (control_pid > 0) {
- _cleanup_free_ char *comm = NULL;
- (void) get_process_comm(control_pid, &comm);
+ if (control_pid > 0 &&
+ IN_SET(who, KILL_CONTROL, KILL_CONTROL_FAIL, KILL_ALL, KILL_ALL_FAIL)) {
+ _cleanup_free_ char *comm = NULL;
+ (void) get_process_comm(control_pid, &comm);
- if (kill(control_pid, signo) < 0) {
- /* Report this failure both to the logs and to the client */
- sd_bus_error_set_errnof(
- error, errno,
- "Failed to send signal SIG%s to control process " PID_FMT " (%s): %m",
- signal_to_string(signo), control_pid, strna(comm));
- r = log_unit_warning_errno(
- u, errno,
- "Failed to send signal SIG%s to control process " PID_FMT " (%s) on client request: %m",
- signal_to_string(signo), control_pid, strna(comm));
- } else {
- log_unit_info(u, "Sent signal SIG%s to control process " PID_FMT " (%s) on client request.",
- signal_to_string(signo), control_pid, strna(comm));
- killed = true;
- }
+ r = kill_or_sigqueue(control_pid, signo, code, value);
+ if (r < 0) {
+ ret = r;
+
+ /* Report this failure both to the logs and to the client */
+ sd_bus_error_set_errnof(
+ error, r,
+ "Failed to send signal SIG%s to control process " PID_FMT " (%s): %m",
+ signal_to_string(signo), control_pid, strna(comm));
+ log_unit_warning_errno(
+ u, r,
+ "Failed to send signal SIG%s to control process " PID_FMT " (%s) on client request: %m",
+ signal_to_string(signo), control_pid, strna(comm));
+ } else {
+ log_unit_info(u, "Sent signal SIG%s to control process " PID_FMT " (%s) on client request.",
+ signal_to_string(signo), control_pid, strna(comm));
+ killed = true;
}
+ }
- if (IN_SET(who, KILL_MAIN, KILL_MAIN_FAIL, KILL_ALL, KILL_ALL_FAIL))
- if (main_pid > 0) {
- _cleanup_free_ char *comm = NULL;
- (void) get_process_comm(main_pid, &comm);
+ if (main_pid > 0 &&
+ IN_SET(who, KILL_MAIN, KILL_MAIN_FAIL, KILL_ALL, KILL_ALL_FAIL)) {
- if (kill(main_pid, signo) < 0) {
- if (r == 0)
- sd_bus_error_set_errnof(
- error, errno,
- "Failed to send signal SIG%s to main process " PID_FMT " (%s): %m",
- signal_to_string(signo), main_pid, strna(comm));
+ _cleanup_free_ char *comm = NULL;
+ (void) get_process_comm(main_pid, &comm);
+
+ r = kill_or_sigqueue(main_pid, signo, code, value);
+ if (r < 0) {
+ if (ret == 0) {
+ ret = r;
- r = log_unit_warning_errno(
- u, errno,
- "Failed to send signal SIG%s to main process " PID_FMT " (%s) on client request: %m",
+ sd_bus_error_set_errnof(
+ error, r,
+ "Failed to send signal SIG%s to main process " PID_FMT " (%s): %m",
signal_to_string(signo), main_pid, strna(comm));
- } else {
- log_unit_info(u, "Sent signal SIG%s to main process " PID_FMT " (%s) on client request.",
- signal_to_string(signo), main_pid, strna(comm));
- killed = true;
}
+
+ log_unit_warning_errno(
+ u, r,
+ "Failed to send signal SIG%s to main process " PID_FMT " (%s) on client request: %m",
+ signal_to_string(signo), main_pid, strna(comm));
+
+ } else {
+ log_unit_info(u, "Sent signal SIG%s to main process " PID_FMT " (%s) on client request.",
+ signal_to_string(signo), main_pid, strna(comm));
+ killed = true;
}
+ }
- if (IN_SET(who, KILL_ALL, KILL_ALL_FAIL) && u->cgroup_path) {
+ /* Note: if we shall enqueue rather than kill we won't do this via the cgroup mechanism, since it
+ * doesn't really make much sense (and given that enqueued values are a relatively expensive
+ * resource, and we shouldn't allow us to be subjects for such allocation sprees) */
+ if (IN_SET(who, KILL_ALL, KILL_ALL_FAIL) && u->cgroup_path && code == SI_USER) {
_cleanup_set_free_ Set *pid_set = NULL;
- int q;
/* Exclude the main/control pids from being killed via the cgroup */
pid_set = unit_pid_set(main_pid, control_pid);
if (!pid_set)
return log_oom();
- q = cg_kill_recursive(SYSTEMD_CGROUP_CONTROLLER, u->cgroup_path, signo, 0, pid_set, kill_common_log, u);
- if (q < 0) {
- if (!IN_SET(q, -ESRCH, -ENOENT)) {
- if (r == 0)
+ r = cg_kill_recursive(SYSTEMD_CGROUP_CONTROLLER, u->cgroup_path, signo, 0, pid_set, kill_common_log, u);
+ if (r < 0) {
+ if (!IN_SET(r, -ESRCH, -ENOENT)) {
+ if (ret == 0) {
+ ret = r;
+
sd_bus_error_set_errnof(
- error, q,
+ error, r,
"Failed to send signal SIG%s to auxiliary processes: %m",
signal_to_string(signo));
+ }
- r = log_unit_warning_errno(
- u, q,
+ log_unit_warning_errno(
+ u, r,
"Failed to send signal SIG%s to auxiliary processes on client request: %m",
signal_to_string(signo));
}
}
/* If the "fail" versions of the operation are requested, then complain if the set of processes we killed is empty */
- if (r == 0 && !killed && IN_SET(who, KILL_ALL_FAIL, KILL_CONTROL_FAIL, KILL_MAIN_FAIL))
+ if (ret == 0 && !killed && IN_SET(who, KILL_ALL_FAIL, KILL_CONTROL_FAIL, KILL_MAIN_FAIL))
return sd_bus_error_set_const(error, BUS_ERROR_NO_SUCH_PROCESS, "No matching processes to kill");
- return r;
+ return ret;
}
int unit_following_set(Unit *u, Set **s) {
if (r < 0)
return r;
}
+
+ /* If there are encrypted credentials we might need to access the TPM. */
+ ExecLoadCredential *cred;
+ HASHMAP_FOREACH(cred, ec->load_credentials)
+ if (cred->encrypted) {
+ r = cgroup_add_device_allow(cc, "/dev/tpmrm0", "rw");
+ if (r < 0)
+ return r;
+ break;
+ }
}
}
/* Don't log about processes marked with brackets, under the assumption that these are temporary processes
only, like for example systemd's own PAM stub process. */
if (comm && comm[0] == '(')
- return 0;
+ /* Although we didn't log anything, as this callback is used in unit_kill_context we must return 1
+ * here to let the manager know that a process was killed. */
+ return 1;
log_unit_notice(userdata,
"Killing process " PID_FMT " (%s) with signal SIG%s.",
int (*stop)(Unit *u);
int (*reload)(Unit *u);
- int (*kill)(Unit *u, KillWho w, int signo, sd_bus_error *error);
+ int (*kill)(Unit *u, KillWho w, int signo, int code, int value, sd_bus_error *error);
/* Clear out the various runtime/state/cache/logs/configuration data */
int (*clean)(Unit *u, ExecCleanMask m);
int unit_stop(Unit *u);
int unit_reload(Unit *u);
-int unit_kill(Unit *u, KillWho w, int signo, sd_bus_error *error);
-int unit_kill_common(Unit *u, KillWho who, int signo, pid_t main_pid, pid_t control_pid, sd_bus_error *error);
+int unit_kill(Unit *u, KillWho w, int signo, int code, int value, sd_bus_error *error);
+int unit_kill_common(Unit *u, KillWho who, int signo, int code, int value, pid_t main_pid, pid_t control_pid, sd_bus_error *error);
void unit_notify_cgroup_oom(Unit *u, bool managed_oom);
if (r < 0)
goto finish;
- if (!context.is_journald) {
+ if (!context.is_journald)
/* OK, now we know it's not the journal, hence we can make use of it now. */
- log_set_target(LOG_TARGET_JOURNAL_OR_KMSG);
- log_open();
- }
+ log_set_target_and_open(LOG_TARGET_JOURNAL_OR_KMSG);
/* If this is PID 1 disable coredump collection, we'll unlikely be able to process
* it later on.
/* First, log to a safe place, since we don't know what crashed and it might
* be journald which we'd rather not log to then. */
- log_set_target(LOG_TARGET_KMSG);
- log_open();
+ log_set_target_and_open(LOG_TARGET_KMSG);
/* Make sure we never enter a loop */
(void) prctl(PR_SET_DUMPABLE, 0);
log_debug_errno(r, "Failed to read TPM2 PCR public key, proceeding without: %m");
pubkey_pcr_mask = 0;
- } else {
- /* Also try to load the signature JSON object, to verify that our enrollment will work. This is optional however. */
+ } else if (signature_path) {
+ /* Also try to load the signature JSON object, to verify that our enrollment will work.
+ * This is optional however, skip it if it's not explicitly provided. */
r = tpm2_load_pcr_signature(signature_path, &signature_json);
- if (r < 0) {
- if (signature_path || r != -ENOENT)
- return log_debug_errno(r, "Failed to read TPM PCR signature: %m");
-
- log_debug_errno(r, "Failed to read TPM2 PCR signature, proceeding without: %m");
- }
+ if (r < 0)
+ return log_debug_errno(r, "Failed to read TPM PCR signature: %m");
}
r = tpm2_seal(device,
return r; /* return existing keyslot, so that wiping won't kill it */
}
- /* Quick verification that everything is in order, we are not in a hurry after all.*/
+ /* Quick verification that everything is in order, we are not in a hurry after all. */
if (!pubkey || signature_json) {
_cleanup_(erase_and_freep) void *secret2 = NULL;
size_t secret2_size;
_cleanup_(erase_and_freep) char *b64_salted_pin = NULL;
int r;
+ assert(salt || salt_size == 0);
assert(ret_decrypted_key);
assert(ret_decrypted_key_size);
return -ENOANO;
/* If we're using a PIN, and the luks header has a salt, it better have a pin too */
- if ((flags & TPM2_FLAGS_USE_PIN) && salt && !pin)
+ if ((flags & TPM2_FLAGS_USE_PIN) && salt_size > 0 && !pin)
return -ENOANO;
- if (pin) {
+ if (pin && salt_size > 0) {
uint8_t salted_pin[SHA256_DIGEST_SIZE] = {};
CLEANUP_ERASE(salted_pin);
r = tpm2_util_pbkdf2_hmac_sha256(pin, strlen(pin), salt, salt_size, salted_pin);
const void *blob;
int r;
+ assert(salt || salt_size == 0);
+
if (!device) {
r = tpm2_find_device_auto(LOG_DEBUG, &auto_device);
if (r == -ENODEV)
if (r < 0)
return r;
- if (salt) {
+ if (salt_size > 0) {
uint8_t salted_pin[SHA256_DIGEST_SIZE] = {};
CLEANUP_ERASE(salted_pin);
if (r < 0)
return log_error_errno(r, "Failed to copy bytes from %s in mage '%s' to '%s': %m", arg_source, arg_image, arg_target);
- (void) copy_xattr(source_fd, target_fd, 0);
+ (void) copy_xattr(source_fd, NULL, target_fd, NULL, 0);
(void) copy_access(source_fd, target_fd);
(void) copy_times(source_fd, target_fd, 0);
if (r < 0)
return log_error_errno(r, "Failed to copy bytes from '%s' to '%s' in image '%s': %m", arg_source, arg_target, arg_image);
- (void) copy_xattr(source_fd, target_fd, 0);
+ (void) copy_xattr(source_fd, NULL, target_fd, NULL, 0);
(void) copy_access(source_fd, target_fd);
(void) copy_times(source_fd, target_fd, 0);
if (r < 0)
return log_error_errno(r, "Failed to unmount '%s': %m", canonical);
- /* We managed to lock and unmount successfully? That means we can try to remove the loop device.*/
+ /* We managed to lock and unmount successfully? That means we can try to remove the loop device. */
loop_device_unrelinquish(d);
if (arg_rmdir) {
#include "path-util.h"
#include "proc-cmdline.h"
#include "process-util.h"
-#include "rlimit-util.h"
#include "signal-util.h"
#include "socket-util.h"
#include "special.h"
pipe(progress_pipe) < 0)
return log_error_errno(errno, "pipe(): %m");
- r = safe_fork("(fsck)", FORK_RESET_SIGNALS|FORK_DEATHSIG|FORK_LOG, &pid);
+ r = safe_fork("(fsck)", FORK_RESET_SIGNALS|FORK_DEATHSIG|FORK_LOG|FORK_RLIMIT_NOFILE_SAFE, &pid);
if (r < 0)
return r;
if (r == 0) {
cmdline[i++] = device;
cmdline[i++] = NULL;
- (void) rlimit_nofile_safe();
-
execv(cmdline[0], (char**) cmdline);
_exit(FSCK_OPERATIONAL_ERROR);
}
* that case the image is pre-allocated and thus appears all used from the host PoV but is not used
* up at all yet from the user's PoV.
*
- * That said, we use use the stat() reported loopback file size as upper boundary: our footprint can
+ * That said, we use the stat() reported loopback file size as upper boundary: our footprint can
* never be larger than what we take up on the lowest layers. */
if (disk_size != UINT64_MAX && disk_size > disk_free) {
finish:
if (r >= 0) {
(void) copy_times(e->input_fd, e->output_fd, COPY_CRTIME);
- (void) copy_xattr(e->input_fd, e->output_fd, 0);
+ (void) copy_xattr(e->input_fd, NULL, e->output_fd, NULL, 0);
}
if (e->on_finished)
if (S_ISREG(i->input_stat.st_mode)) {
(void) copy_times(i->input_fd, i->output_fd, COPY_CRTIME);
- (void) copy_xattr(i->input_fd, i->output_fd, 0);
+ (void) copy_xattr(i->input_fd, NULL, i->output_fd, NULL, 0);
}
}
#include "process-util.h"
#include "pull-common.h"
#include "pull-job.h"
-#include "rlimit-util.h"
#include "rm-rf.h"
#include "signal-util.h"
#include "siphash24.h"
gpg_home_created = true;
- r = safe_fork("(gpg)", FORK_RESET_SIGNALS|FORK_DEATHSIG|FORK_LOG, &pid);
+ r = safe_fork("(gpg)", FORK_RESET_SIGNALS|FORK_DEATHSIG|FORK_LOG|FORK_RLIMIT_NOFILE_SAFE, &pid);
if (r < 0)
return r;
if (r == 0) {
_exit(EXIT_FAILURE);
}
- (void) rlimit_nofile_safe();
-
cmd[k++] = strjoina("--homedir=", gpg_home);
/* We add the user keyring only to the command line arguments, if it's around since gpg fails
return log_error_errno(r, "Failed to make writable copy of image: %m");
(void) copy_times(i->raw_job->disk_fd, dfd, COPY_CRTIME);
- (void) copy_xattr(i->raw_job->disk_fd, dfd, 0);
+ (void) copy_xattr(i->raw_job->disk_fd, NULL, dfd, NULL, 0);
dfd = safe_close(dfd);
if (pipe(fd) < 0)
return log_error_errno(errno, "Failed to create pager pipe: %m");
- r = safe_fork("(remote)", FORK_RESET_SIGNALS|FORK_DEATHSIG|FORK_LOG, &child_pid);
+ r = safe_fork("(remote)", FORK_RESET_SIGNALS|FORK_DEATHSIG|FORK_LOG|FORK_RLIMIT_NOFILE_SAFE, &child_pid);
if (r < 0) {
safe_close_pair(fd);
return r;
_exit(EXIT_FAILURE);
}
- (void) rlimit_nofile_safe();
-
execvp(child, argv);
log_error_errno(errno, "Failed to exec child %s: %m", child);
_exit(EXIT_FAILURE);
return r;
}
- r = journal_file_append_entry(w->journal->file, ts, boot_id,
- iovw->iovec, iovw->count,
- &w->seqnum, NULL, NULL);
+ r = journal_file_append_entry(
+ w->journal->file,
+ ts,
+ boot_id,
+ iovw->iovec,
+ iovw->count,
+ &w->seqnum,
+ /* seqnum_id= */ NULL,
+ /* ret_object= */ NULL,
+ /* ret_offset= */ NULL);
if (r >= 0) {
if (w->server)
w->server->event_count += 1;
return r;
log_debug("Retrying write.");
- r = journal_file_append_entry(w->journal->file, ts, boot_id,
- iovw->iovec, iovw->count,
- &w->seqnum, NULL, NULL);
+ r = journal_file_append_entry(
+ w->journal->file,
+ ts,
+ boot_id,
+ iovw->iovec, iovw->count,
+ &w->seqnum,
+ /* seqnum_id= */ NULL,
+ /* ret_object= */ NULL,
+ /* ret_offset= */ NULL);
if (r < 0)
return r;
#include <getopt.h>
#include <stdio.h>
#include <stdlib.h>
+#include <sys/stat.h>
#include <unistd.h>
#include "sd-journal.h"
#include "alloc-util.h"
#include "build.h"
#include "fd-util.h"
+#include "format-util.h"
#include "main-func.h"
#include "parse-argument.h"
#include "parse-util.h"
if (argc <= optind)
(void) execl("/bin/cat", "/bin/cat", NULL);
- else
+ else {
+ _cleanup_free_ char *s = NULL;
+ struct stat st;
+
+ if (fstat(STDERR_FILENO, &st) < 0)
+ return log_error_errno(errno,
+ "Failed to fstat(%s): %m",
+ FORMAT_PROC_FD_PATH(STDERR_FILENO));
+
+ if (asprintf(&s, DEV_FMT ":" INO_FMT, st.st_dev, st.st_ino) < 0)
+ return log_oom();
+
+ if (setenv("JOURNAL_STREAM", s, /* overwrite = */ true) < 0)
+ return log_error_errno(errno, "Failed to set environment variable JOURNAL_STREAM: %m");
+
(void) execvp(argv[optind], argv + optind);
+ }
r = -errno;
/* Let's try to restore a working stderr, so we can print the error message */
#include "locale-util.h"
#include "log.h"
#include "logs-show.h"
+#include "main-func.h"
#include "memory-util.h"
#include "missing_sched.h"
#include "mkdir.h"
return 0;
}
-int main(int argc, char *argv[]) {
+static int run(int argc, char *argv[]) {
_cleanup_(loop_device_unrefp) LoopDevice *loop_device = NULL;
_cleanup_(umount_and_rmdir_and_freep) char *unlink_dir = NULL;
bool previous_boot_id_valid = false, first_line = true, ellipsized = false, need_seek = false;
_cleanup_(sd_journal_closep) sd_journal *j = NULL;
sd_id128_t previous_boot_id = SD_ID128_NULL, previous_boot_id_output = SD_ID128_NULL;
dual_timestamp previous_ts_output = DUAL_TIMESTAMP_NULL;
+ _cleanup_close_ int machine_fd = -EBADF;
int n_shown = 0, r, poll_fd = -EBADF;
setlocale(LC_ALL, "");
r = parse_argv(argc, argv);
if (r <= 0)
- goto finish;
+ return r;
if (arg_image) {
assert(!arg_root);
switch (arg_action) {
case ACTION_NEW_ID128:
- r = id128_print_new(ID128_PRINT_PRETTY);
- goto finish;
+ return id128_print_new(ID128_PRINT_PRETTY);
case ACTION_SETUP_KEYS:
- r = setup_keys();
- goto finish;
+ return setup_keys();
case ACTION_LIST_CATALOG:
case ACTION_DUMP_CATALOG:
_cleanup_free_ char *database = NULL;
database = path_join(arg_root, CATALOG_DATABASE);
- if (!database) {
- r = log_oom();
- goto finish;
- }
+ if (!database)
+ return log_oom();
if (arg_action == ACTION_UPDATE_CATALOG) {
r = catalog_update(database, arg_root, catalog_file_dirs);
if (r < 0)
- log_error_errno(r, "Failed to list catalog: %m");
+ return log_error_errno(r, "Failed to list catalog: %m");
} else {
bool oneline = arg_action == ACTION_LIST_CATALOG;
else
r = catalog_list(stdout, database, oneline);
if (r < 0)
- log_error_errno(r, "Failed to list catalog: %m");
+ return log_error_errno(r, "Failed to list catalog: %m");
}
- goto finish;
+ return 0;
}
case ACTION_FLUSH:
- r = flush_to_var();
- goto finish;
+ return flush_to_var();
case ACTION_RELINQUISH_VAR:
- r = relinquish_var();
- goto finish;
+ return relinquish_var();
case ACTION_SYNC:
- r = sync_journal();
- goto finish;
+ return sync_journal();
case ACTION_ROTATE:
- r = rotate();
- goto finish;
+ return rotate();
case ACTION_SHOW:
case ACTION_PRINT_HEADER:
_cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
int fd;
- if (geteuid() != 0) {
+ if (geteuid() != 0)
/* The file descriptor returned by OpenMachineRootDirectory() will be owned by users/groups of
* the container, thus we need root privileges to override them. */
- r = log_error_errno(SYNTHETIC_ERRNO(EPERM), "Using the --machine= switch requires root privileges.");
- goto finish;
- }
+ return log_error_errno(SYNTHETIC_ERRNO(EPERM), "Using the --machine= switch requires root privileges.");
r = sd_bus_open_system(&bus);
- if (r < 0) {
- log_error_errno(r, "Failed to open system bus: %m");
- goto finish;
- }
+ if (r < 0)
+ return log_error_errno(r, "Failed to open system bus: %m");
r = sd_bus_call_method(
bus,
&error,
&reply,
"s", arg_machine);
- if (r < 0) {
- log_error_errno(r, "Failed to open root directory: %s", bus_error_message(&error, r));
- goto finish;
- }
+ if (r < 0)
+ return log_error_errno(r, "Failed to open root directory: %s", bus_error_message(&error, r));
r = sd_bus_message_read(reply, "h", &fd);
- if (r < 0) {
- bus_log_parse_error(r);
- goto finish;
- }
+ if (r < 0)
+ return bus_log_parse_error(r);
- fd = fcntl(fd, F_DUPFD_CLOEXEC, 3);
- if (fd < 0) {
- r = log_error_errno(errno, "Failed to duplicate file descriptor: %m");
- goto finish;
- }
+ machine_fd = fcntl(fd, F_DUPFD_CLOEXEC, 3);
+ if (machine_fd < 0)
+ return log_error_errno(errno, "Failed to duplicate file descriptor: %m");
- r = sd_journal_open_directory_fd(&j, fd, SD_JOURNAL_OS_ROOT);
- if (r < 0)
- safe_close(fd);
+ r = sd_journal_open_directory_fd(&j, machine_fd, SD_JOURNAL_OS_ROOT);
} else
r = sd_journal_open_namespace(
&j,
arg_namespace,
(arg_merge ? 0 : SD_JOURNAL_LOCAL_ONLY) |
arg_namespace_flags | arg_journal_type);
- if (r < 0) {
- log_error_errno(r, "Failed to open %s: %m", arg_directory ?: arg_file ? "files" : "journal");
- goto finish;
- }
+ if (r < 0)
+ return log_error_errno(r, "Failed to open %s: %m", arg_directory ?: arg_file ? "files" : "journal");
r = journal_access_check_and_warn(j, arg_quiet,
!(arg_journal_type == SD_JOURNAL_CURRENT_USER || arg_user_units));
if (r < 0)
- goto finish;
+ return r;
switch (arg_action) {
case ACTION_PRINT_HEADER:
journal_print_header(j);
- r = 0;
- goto finish;
+ return 0;
case ACTION_VERIFY:
- r = verify(j, !arg_quiet);
- goto finish;
+ return verify(j, !arg_quiet);
case ACTION_DISK_USAGE: {
uint64_t bytes = 0;
r = sd_journal_get_usage(j, &bytes);
if (r < 0)
- goto finish;
+ return r;
printf("Archived and active journals take up %s in the file system.\n",
FORMAT_BYTES(bytes));
- goto finish;
+
+ return 0;
}
case ACTION_LIST_BOOTS:
- r = list_boots(j);
- goto finish;
+ return list_boots(j);
case ACTION_ROTATE_AND_VACUUM:
r = rotate();
if (r < 0)
- goto finish;
+ return r;
_fallthrough_;
case ACTION_VACUUM: {
Directory *d;
+ int ret = 0;
HASHMAP_FOREACH(d, j->directories_by_path) {
- int q;
-
- q = journal_directory_vacuum(d->path, arg_vacuum_size, arg_vacuum_n_files, arg_vacuum_time, NULL, !arg_quiet);
- if (q < 0)
- r = log_error_errno(q, "Failed to vacuum %s: %m", d->path);
+ r = journal_directory_vacuum(d->path, arg_vacuum_size, arg_vacuum_n_files, arg_vacuum_time, NULL, !arg_quiet);
+ if (r < 0) {
+ log_error_errno(r, "Failed to vacuum %s: %m", d->path);
+ if (ret >= 0)
+ ret = r;
+ }
}
- goto finish;
+ return ret;
}
case ACTION_LIST_FIELD_NAMES: {
const char *field;
- SD_JOURNAL_FOREACH_FIELD(j, field) {
+ SD_JOURNAL_FOREACH_FIELD(j, field)
printf("%s\n", field);
- n_shown++;
- }
- r = 0;
- goto finish;
+ return 0;
}
case ACTION_SHOW:
sd_journal_has_runtime_files(j) > 0 &&
sd_journal_has_persistent_files(j) == 0) {
log_info("Specifying boot ID or boot offset has no effect, no persistent journal was found.");
- r = 0;
- goto finish;
+
+ if (arg_action == ACTION_SHOW && arg_compiled_pattern)
+ return -ENOENT;
+
+ return 0;
}
/* add_boot() must be called first!
* It may need to seek the journal to find parent boot IDs. */
r = add_boot(j);
if (r < 0)
- goto finish;
+ return r;
r = add_dmesg(j);
if (r < 0)
- goto finish;
+ return r;
r = add_units(j);
- if (r < 0) {
- log_error_errno(r, "Failed to add filter for units: %m");
- goto finish;
- }
+ if (r < 0)
+ return log_error_errno(r, "Failed to add filter for units: %m");
r = add_syslog_identifier(j);
- if (r < 0) {
- log_error_errno(r, "Failed to add filter for syslog identifiers: %m");
- goto finish;
- }
+ if (r < 0)
+ return log_error_errno(r, "Failed to add filter for syslog identifiers: %m");
r = add_priorities(j);
if (r < 0)
- goto finish;
+ return r;
r = add_facilities(j);
if (r < 0)
- goto finish;
+ return r;
r = add_matches(j, argv + optind);
if (r < 0)
- goto finish;
+ return r;
if (DEBUG_LOGGING) {
_cleanup_free_ char *filter = NULL;
assert(arg_field);
r = sd_journal_set_data_threshold(j, 0);
- if (r < 0) {
- log_error_errno(r, "Failed to unset data size threshold: %m");
- goto finish;
- }
+ if (r < 0)
+ return log_error_errno(r, "Failed to unset data size threshold: %m");
r = sd_journal_query_unique(j, arg_field);
- if (r < 0) {
- log_error_errno(r, "Failed to query unique data objects: %m");
- goto finish;
- }
+ if (r < 0)
+ return log_error_errno(r, "Failed to query unique data objects: %m");
SD_JOURNAL_FOREACH_UNIQUE(j, data, size) {
const void *eq;
n_shown++;
}
- r = 0;
- goto finish;
+ return 0;
}
/* Opening the fd now means the first sd_journal_wait() will actually wait */
if (poll_fd == -EMFILE) {
log_warning_errno(poll_fd, "Insufficient watch descriptors available. Reverting to -n.");
arg_follow = false;
- } else if (poll_fd == -EMEDIUMTYPE) {
- log_error_errno(poll_fd, "The --follow switch is not supported in conjunction with reading from STDIN.");
- goto finish;
- } else if (poll_fd < 0) {
- log_error_errno(poll_fd, "Failed to get journal fd: %m");
- goto finish;
- }
+ } else if (poll_fd == -EMEDIUMTYPE)
+ return log_error_errno(poll_fd, "The --follow switch is not supported in conjunction with reading from STDIN.");
+ else if (poll_fd < 0)
+ return log_error_errno(poll_fd, "Failed to get journal fd: %m");
}
if (arg_cursor || arg_after_cursor || arg_cursor_file) {
if (arg_cursor_file) {
r = read_one_line_file(arg_cursor_file, &cursor_from_file);
- if (r < 0 && r != -ENOENT) {
- log_error_errno(r, "Failed to read cursor file %s: %m", arg_cursor_file);
- goto finish;
- }
+ if (r < 0 && r != -ENOENT)
+ return log_error_errno(r, "Failed to read cursor file %s: %m", arg_cursor_file);
if (r > 0) {
cursor = cursor_from_file;
if (cursor) {
r = sd_journal_seek_cursor(j, cursor);
- if (r < 0) {
- log_error_errno(r, "Failed to seek to cursor: %m");
- goto finish;
- }
+ if (r < 0)
+ return log_error_errno(r, "Failed to seek to cursor: %m");
+
use_cursor = true;
}
}
} else if (arg_since_set && !arg_reverse) {
r = sd_journal_seek_realtime_usec(j, arg_since);
- if (r < 0) {
- log_error_errno(r, "Failed to seek to date: %m");
- goto finish;
- }
+ if (r < 0)
+ return log_error_errno(r, "Failed to seek to date: %m");
+
r = sd_journal_next(j);
} else if (arg_until_set && arg_reverse) {
r = sd_journal_seek_realtime_usec(j, arg_until);
- if (r < 0) {
- log_error_errno(r, "Failed to seek to date: %m");
- goto finish;
- }
+ if (r < 0)
+ return log_error_errno(r, "Failed to seek to date: %m");
+
r = sd_journal_previous(j);
} else if (arg_reverse) {
r = sd_journal_seek_tail(j);
- if (r < 0) {
- log_error_errno(r, "Failed to seek to tail: %m");
- goto finish;
- }
+ if (r < 0)
+ return log_error_errno(r, "Failed to seek to tail: %m");
r = sd_journal_previous(j);
} else if (arg_lines >= 0) {
r = sd_journal_seek_tail(j);
- if (r < 0) {
- log_error_errno(r, "Failed to seek to tail: %m");
- goto finish;
- }
+ if (r < 0)
+ return log_error_errno(r, "Failed to seek to tail: %m");
r = sd_journal_previous_skip(j, arg_lines);
} else {
r = sd_journal_seek_head(j);
- if (r < 0) {
- log_error_errno(r, "Failed to seek to head: %m");
- goto finish;
- }
+ if (r < 0)
+ return log_error_errno(r, "Failed to seek to head: %m");
r = sd_journal_next(j);
}
-
- if (r < 0) {
- log_error_errno(r, "Failed to iterate through journal: %m");
- goto finish;
- }
+ if (r < 0)
+ return log_error_errno(r, "Failed to iterate through journal: %m");
if (r == 0)
need_seek = true;
char start_buf[FORMAT_TIMESTAMP_MAX], end_buf[FORMAT_TIMESTAMP_MAX];
r = sd_journal_get_cutoff_realtime_usec(j, &start, &end);
- if (r < 0) {
- log_error_errno(r, "Failed to get cutoff: %m");
- goto finish;
- }
-
+ if (r < 0)
+ return log_error_errno(r, "Failed to get cutoff: %m");
if (r > 0) {
if (arg_follow)
printf("-- Journal begins at %s. --\n",
r = sd_journal_next(j);
else
r = sd_journal_previous(j);
- if (r < 0) {
- log_error_errno(r, "Failed to iterate through journal: %m");
- goto finish;
- }
+ if (r < 0)
+ return log_error_errno(r, "Failed to iterate through journal: %m");
if (r == 0)
break;
}
usec_t usec;
r = sd_journal_get_realtime_usec(j, &usec);
- if (r < 0) {
- log_error_errno(r, "Failed to determine timestamp: %m");
- goto finish;
- }
+ if (r < 0)
+ return log_error_errno(r, "Failed to determine timestamp: %m");
if (usec > arg_until)
break;
}
usec_t usec;
r = sd_journal_get_realtime_usec(j, &usec);
- if (r < 0) {
- log_error_errno(r, "Failed to determine timestamp: %m");
- goto finish;
- }
+ if (r < 0)
+ return log_error_errno(r, "Failed to determine timestamp: %m");
if (usec < arg_since)
break;
}
continue;
}
- log_error_errno(r, "Failed to get MESSAGE field: %m");
- goto finish;
+ return log_error_errno(r, "Failed to get MESSAGE field: %m");
}
assert_se(message = startswith(message, "MESSAGE="));
r = pattern_matches_and_log(arg_compiled_pattern, message,
len - strlen("MESSAGE="), highlight);
if (r < 0)
- goto finish;
+ return r;
if (r == 0) {
need_seek = true;
continue;
need_seek = true;
if (r == -EADDRNOTAVAIL)
break;
- else if (r < 0)
- goto finish;
+ if (r < 0)
+ return r;
n_shown++;
* (deleted) journal files. */
if ((n_shown % PROCESS_INOTIFY_INTERVAL) == 0) {
r = sd_journal_process(j);
- if (r < 0) {
- log_error_errno(r, "Failed to process inotify events: %m");
- goto finish;
- }
+ if (r < 0)
+ return log_error_errno(r, "Failed to process inotify events: %m");
}
}
r = wait_for_change(j, poll_fd);
if (r < 0)
- goto finish;
+ return r;
first_line = false;
}
r = sd_journal_get_cursor(j, &cursor);
if (r < 0 && r != -EADDRNOTAVAIL)
- log_error_errno(r, "Failed to get cursor: %m");
- else if (r >= 0) {
+ return log_error_errno(r, "Failed to get cursor: %m");
+ if (r >= 0) {
if (arg_show_cursor)
printf("-- cursor: %s\n", cursor);
WRITE_STRING_FILE_CREATE |
WRITE_STRING_FILE_ATOMIC);
if (r < 0)
- log_error_errno(r,
- "Failed to write new cursor to %s: %m",
- arg_cursor_file);
+ return log_error_errno(r, "Failed to write new cursor to %s: %m",
+ arg_cursor_file);
}
}
}
-finish:
- pager_close();
-
- if (arg_compiled_pattern && r == 0 && n_shown == 0)
+ if (arg_compiled_pattern && n_shown == 0)
/* --grep was used, no error was thrown, but the pattern didn't
* match anything. Let's mimic grep's behavior here and return
* a non-zero exit code, so journalctl --grep can be used
* in scripts and such */
- r = -ENOENT;
+ return -ENOENT;
- return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;
+ return 0;
}
+
+DEFINE_MAIN_FUNCTION(run);
int client_context_read_log_filter_patterns(ClientContext *c, const char *cgroup) {
char *deny_list_xattr, *xattr_end;
- _cleanup_free_ char *xattr = NULL;
+ _cleanup_free_ char *xattr = NULL, *unit_cgroup = NULL;
_cleanup_set_free_ Set *allow_list = NULL, *deny_list = NULL;
int r;
assert(c);
- r = cg_get_xattr_malloc(SYSTEMD_CGROUP_CONTROLLER, cgroup, "user.journald_log_filter_patterns", &xattr);
+ r = cg_path_get_unit_path(cgroup, &unit_cgroup);
+ if (r < 0)
+ return log_debug_errno(r, "Failed to get the unit's cgroup path for %s: %m", cgroup);
+
+ r = cg_get_xattr_malloc(SYSTEMD_CGROUP_CONTROLLER, unit_cgroup, "user.journald_log_filter_patterns", &xattr);
if (r < 0) {
if (!ERRNO_IS_XATTR_ABSENT(r))
- return log_debug_errno(r, "Failed to get user.journald_log_filter_patterns xattr for %s: %m", cgroup);
+ return log_debug_errno(r, "Failed to get user.journald_log_filter_patterns xattr for %s: %m", unit_cgroup);
client_set_filtering_patterns(c, NULL, NULL);
return 0;
}
int server_open_kernel_seqnum(Server *s) {
- _cleanup_close_ int fd = -EBADF;
- const char *fn;
- uint64_t *p;
int r;
assert(s);
if (!s->dev_kmsg_readable)
return 0;
- fn = strjoina(s->runtime_directory, "/kernel-seqnum");
- fd = open(fn, O_RDWR|O_CREAT|O_CLOEXEC|O_NOCTTY|O_NOFOLLOW, 0644);
- if (fd < 0) {
- log_error_errno(errno, "Failed to open %s, ignoring: %m", fn);
- return 0;
- }
-
- r = posix_fallocate_loop(fd, 0, sizeof(uint64_t));
- if (r < 0) {
- log_error_errno(r, "Failed to allocate sequential number file, ignoring: %m");
- return 0;
- }
-
- p = mmap(NULL, sizeof(uint64_t), PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
- if (p == MAP_FAILED) {
- log_error_errno(errno, "Failed to map sequential number file, ignoring: %m");
- return 0;
- }
-
- s->kernel_seqnum = p;
+ r = server_map_seqnum_file(s, "kernel-seqnum", sizeof(uint64_t), (void**) &s->kernel_seqnum);
+ if (r < 0)
+ return log_error_errno(r, "Failed to map kernel seqnum file: %m");
return 0;
}
log_ratelimit_warning(JOURNAL_LOG_RATELIMIT, "%s: Montonic clock jumped backwards relative to last journal entry, rotating.", f->path);
return true;
+ case -EILSEQ: /* seqnum ID last used in the file doesn't match the one we'd passed when writing an entry to it */
+ log_ratelimit_warning(JOURNAL_LOG_RATELIMIT, "%s: Journal file uses a different sequence number ID, rotating.", f->path);
+ return true;
+
case -EAFNOSUPPORT:
- log_ratelimit_warning(JOURNAL_LOG_RATELIMIT,
- "%s: underlying file system does not support memory mapping or another required file system feature.",
- f->path);
+ log_ratelimit_warning(JOURNAL_LOG_RATELIMIT, "%s: underlying file system does not support memory mapping or another required file system feature.", f->path);
return false;
default:
}
}
-static void server_write_to_journal(Server *s, uid_t uid, struct iovec *iovec, size_t n, int priority) {
+static void server_write_to_journal(
+ Server *s,
+ uid_t uid,
+ const struct iovec *iovec,
+ size_t n,
+ int priority) {
+
bool vacuumed = false, rotate = false;
struct dual_timestamp ts;
ManagedJournalFile *f;
s->last_realtime_clock = ts.realtime;
- r = journal_file_append_entry(f->file, &ts, NULL, iovec, n, &s->seqnum, NULL, NULL);
+ r = journal_file_append_entry(
+ f->file,
+ &ts,
+ /* boot_id= */ NULL,
+ iovec, n,
+ &s->seqnum->seqnum,
+ &s->seqnum->id,
+ /* ret_object= */ NULL,
+ /* ret_offset= */ NULL);
if (r >= 0) {
server_schedule_sync(s, priority);
return;
return;
log_debug_errno(r, "Retrying write.");
- r = journal_file_append_entry(f->file, &ts, NULL, iovec, n, &s->seqnum, NULL, NULL);
+ r = journal_file_append_entry(
+ f->file,
+ &ts,
+ /* boot_id= */ NULL,
+ iovec, n,
+ &s->seqnum->seqnum,
+ &s->seqnum->id,
+ /* ret_object= */ NULL,
+ /* ret_offset= */ NULL);
if (r < 0)
log_ratelimit_error_errno(r, FAILED_TO_WRITE_ENTRY_RATELIMIT,
"Failed to write entry to %s (%zu items, %zu bytes) despite vacuuming, ignoring: %m",
goto finish;
}
- r = journal_file_copy_entry(f, s->system_journal->file, o, f->current_offset);
+ r = journal_file_copy_entry(
+ f,
+ s->system_journal->file,
+ o,
+ f->current_offset,
+ &s->seqnum->seqnum,
+ &s->seqnum->id);
if (r >= 0)
continue;
}
log_debug("Retrying write.");
- r = journal_file_copy_entry(f, s->system_journal->file, o, f->current_offset);
+ r = journal_file_copy_entry(
+ f,
+ s->system_journal->file,
+ o,
+ f->current_offset,
+ &s->seqnum->seqnum,
+ &s->seqnum->id);
if (r < 0) {
log_ratelimit_error_errno(r, JOURNAL_LOG_RATELIMIT, "Can't write entry: %m");
goto finish;
return 0;
}
+int server_map_seqnum_file(
+ Server *s,
+ const char *fname,
+ size_t size,
+ void **ret) {
+
+ _cleanup_free_ char *fn = NULL;
+ _cleanup_close_ int fd = -EBADF;
+ uint64_t *p;
+ int r;
+
+ assert(s);
+ assert(fname);
+ assert(size > 0);
+ assert(ret);
+
+ fn = path_join(s->runtime_directory, fname);
+ if (!fn)
+ return -ENOMEM;
+
+ fd = open(fn, O_RDWR|O_CREAT|O_CLOEXEC|O_NOCTTY|O_NOFOLLOW, 0644);
+ if (fd < 0)
+ return -errno;
+
+ r = posix_fallocate_loop(fd, 0, size);
+ if (r < 0)
+ return r;
+
+ p = mmap(NULL, size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
+ if (p == MAP_FAILED)
+ return -errno;
+
+ *ret = p;
+ return 0;
+}
+
+void server_unmap_seqnum_file(void *p, size_t size) {
+ assert(size > 0);
+
+ if (!p)
+ return;
+
+ assert_se(munmap(p, size) >= 0);
+}
+
static bool server_is_idle(Server *s) {
assert(s);
if (r < 0)
return r;
+ r = server_map_seqnum_file(s, "seqnum", sizeof(SeqnumData), (void**) &s->seqnum);
+ if (r < 0)
+ return log_error_errno(r, "Failed to map main seqnum file: %m");
+
r = server_open_kernel_seqnum(s);
if (r < 0)
return r;
if (s->ratelimit)
journal_ratelimit_free(s->ratelimit);
- if (s->kernel_seqnum)
- munmap(s->kernel_seqnum, sizeof(uint64_t));
+ server_unmap_seqnum_file(s->seqnum, sizeof(*s->seqnum));
+ server_unmap_seqnum_file(s->kernel_seqnum, sizeof(*s->kernel_seqnum));
free(s->buffer);
free(s->tty_path);
JournalStorageSpace space;
} JournalStorage;
+/* This structure will be kept in $RUNTIME_DIRECTORY/seqnum and is mapped by journald, and is used to
+ * maintain the sequence number counter with its seqnum ID */
+typedef struct SeqnumData {
+ sd_id128_t id;
+ uint64_t seqnum;
+} SeqnumData;
+
struct Server {
char *namespace;
ManagedJournalFile *system_journal;
OrderedHashmap *user_journals;
- uint64_t seqnum;
+ SeqnumData *seqnum;
char *buffer;
int server_start_or_stop_idle_timer(Server *s);
int server_refresh_idle_timer(Server *s);
+
+int server_map_seqnum_file(Server *s, const char *fname, size_t size, void **ret);
+void server_unmap_seqnum_file(void *p, size_t size);
log_error_errno(r, "journal_file_move_to_object failed: %m");
assert_se(r >= 0);
- r = journal_file_copy_entry(f, new_journal->file, o, f->current_offset);
+ r = journal_file_copy_entry(f, new_journal->file, o, f->current_offset, NULL, NULL);
if (r < 0)
log_warning_errno(r, "journal_file_copy_entry failed: %m");
assert_se(r >= 0 ||
assert_se(asprintf(&p, "NUMBER=%d", n) >= 0);
iovec[0] = IOVEC_MAKE_STRING(p);
- assert_ret(journal_file_append_entry(f->file, &ts, NULL, iovec, 1, seqnum, NULL, NULL));
+ assert_ret(journal_file_append_entry(f->file, &ts, NULL, iovec, 1, seqnum, NULL, NULL, NULL));
free(p);
}
iovec[1] = IOVEC_MAKE(q, strlen(q));
if (i % 10 == 0)
- assert_se(journal_file_append_entry(three->file, &ts, NULL, iovec, 2, NULL, NULL, NULL) == 0);
+ assert_se(journal_file_append_entry(three->file, &ts, NULL, iovec, 2, NULL, NULL, NULL, NULL) == 0);
else {
if (i % 3 == 0)
- assert_se(journal_file_append_entry(two->file, &ts, NULL, iovec, 2, NULL, NULL, NULL) == 0);
+ assert_se(journal_file_append_entry(two->file, &ts, NULL, iovec, 2, NULL, NULL, NULL, NULL) == 0);
- assert_se(journal_file_append_entry(one->file, &ts, NULL, iovec, 2, NULL, NULL, NULL) == 0);
+ assert_se(journal_file_append_entry(one->file, &ts, NULL, iovec, 2, NULL, NULL, NULL, NULL) == 0);
}
free(p);
iovec = IOVEC_MAKE_STRING(test);
- assert_se(journal_file_append_entry(df->file, &ts, NULL, &iovec, 1, NULL, NULL, NULL) == 0);
+ assert_se(journal_file_append_entry(df->file, &ts, NULL, &iovec, 1, NULL, NULL, NULL, NULL) == 0);
free(test);
}
assert_se(sd_id128_randomize(&fake_boot_id) == 0);
iovec = IOVEC_MAKE_STRING(test);
- assert_se(journal_file_append_entry(f->file, &ts, NULL, &iovec, 1, NULL, NULL, NULL) == 0);
+ assert_se(journal_file_append_entry(f->file, &ts, NULL, &iovec, 1, NULL, NULL, NULL, NULL) == 0);
iovec = IOVEC_MAKE_STRING(test2);
- assert_se(journal_file_append_entry(f->file, &ts, NULL, &iovec, 1, NULL, NULL, NULL) == 0);
+ assert_se(journal_file_append_entry(f->file, &ts, NULL, &iovec, 1, NULL, NULL, NULL, NULL) == 0);
iovec = IOVEC_MAKE_STRING(test);
- assert_se(journal_file_append_entry(f->file, &ts, &fake_boot_id, &iovec, 1, NULL, NULL, NULL) == 0);
+ assert_se(journal_file_append_entry(f->file, &ts, &fake_boot_id, &iovec, 1, NULL, NULL, NULL, NULL) == 0);
#if HAVE_GCRYPT
journal_file_append_tag(f->file);
dual_timestamp_get(&ts);
iovec = IOVEC_MAKE(data, data_size);
- assert_se(journal_file_append_entry(f->file, &ts, NULL, &iovec, 1, NULL, NULL, NULL) == 0);
+ assert_se(journal_file_append_entry(f->file, &ts, NULL, &iovec, 1, NULL, NULL, NULL, NULL) == 0);
#if HAVE_GCRYPT
journal_file_append_tag(f->file);
echo "Testing bootctl"
e2="${entry%+*}_2.conf"
cp "$entry" "$e2"
- export SYSTEMD_ESP_PATH=/
+ export SYSTEMD_ESP_PATH=/boot
+ # We use --root so strip the root prefix from KERNEL_INSTALL_CONF_ROOT
+ export KERNEL_INSTALL_CONF_ROOT="sources"
# create file that is not referenced. Check if cleanup removes
# it but leaves the rest alone
:> "$BOOT_ROOT/the-token/1.1.2/initrd"
- "$_KERNEL_INSTALL_BOOTCTL" --root="$BOOT_ROOT" cleanup
+ "$_KERNEL_INSTALL_BOOTCTL" --root="$D" cleanup
test ! -e "$BOOT_ROOT/the-token/1.1.2/initrd"
test -e "$BOOT_ROOT/the-token/1.1.2/linux"
test -e "$BOOT_ROOT/the-token/1.1.1/linux"
test -e "$BOOT_ROOT/the-token/1.1.1/initrd"
+
# now remove duplicated entry and make sure files are left over
- "$_KERNEL_INSTALL_BOOTCTL" --root="$BOOT_ROOT" unlink "${e2##*/}"
+ "$_KERNEL_INSTALL_BOOTCTL" --root="$D" unlink "${e2##*/}"
test -e "$BOOT_ROOT/the-token/1.1.1/linux"
test -e "$BOOT_ROOT/the-token/1.1.1/initrd"
test -e "$entry"
# remove last entry referencing those files
entry_id="${entry##*/}"
entry_id="${entry_id%+*}.conf"
- "$_KERNEL_INSTALL_BOOTCTL" --root="$BOOT_ROOT" unlink "$entry_id"
+ "$_KERNEL_INSTALL_BOOTCTL" --root="$D" unlink "$entry_id"
test ! -e "$entry"
test ! -e "$BOOT_ROOT/the-token/1.1.1/linux"
test ! -e "$BOOT_ROOT/the-token/1.1.1/initrd"
/* router is NULL: router option will not be appended.
* router is null address (0.0.0.0): the server address will be used as the router address.
- * otherwise: the specified address will be used as the router address.*/
+ * otherwise: the specified address will be used as the router address. */
server->emit_router = router;
if (router)
sd_pidfd_get_unit;
sd_pidfd_get_user_slice;
sd_pidfd_get_user_unit;
+ sd_journal_get_seqnum;
} LIBSYSTEMD_252;
SD_BUS_ERROR_MAP(BUS_ERROR_NO_SUCH_DNSSD_SERVICE, ENOENT),
SD_BUS_ERROR_MAP(BUS_ERROR_DNSSD_SERVICE_EXISTS, EEXIST),
- SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "FORMERR", EBADMSG),
- SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "SERVFAIL", EHOSTDOWN),
- SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "NXDOMAIN", ENXIO),
- SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "NOTIMP", ENOSYS),
- SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "REFUSED", EACCES),
- SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "YXDOMAIN", EEXIST),
- SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "YRRSET", EEXIST),
- SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "NXRRSET", ENOENT),
- SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "NOTAUTH", EACCES),
- SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "NOTZONE", EREMOTE),
- SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "BADVERS", EBADMSG),
- SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "BADKEY", EKEYREJECTED),
- SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "BADTIME", EBADMSG),
- SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "BADMODE", EBADMSG),
- SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "BADNAME", EBADMSG),
- SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "BADALG", EBADMSG),
- SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "BADTRUNC", EBADMSG),
- SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "BADCOOKIE", EBADR),
+ SD_BUS_ERROR_MAP(BUS_ERROR_DNS_FORMERR, EBADMSG),
+ SD_BUS_ERROR_MAP(BUS_ERROR_DNS_SERVFAIL, EHOSTDOWN),
+ SD_BUS_ERROR_MAP(BUS_ERROR_DNS_NXDOMAIN, ENXIO),
+ SD_BUS_ERROR_MAP(BUS_ERROR_DNS_NOTIMP, ENOSYS),
+ SD_BUS_ERROR_MAP(BUS_ERROR_DNS_REFUSED, EACCES),
+ SD_BUS_ERROR_MAP(BUS_ERROR_DNS_YXDOMAIN, EEXIST),
+ SD_BUS_ERROR_MAP(BUS_ERROR_DNS_YRRSET, EEXIST),
+ SD_BUS_ERROR_MAP(BUS_ERROR_DNS_NXRRSET, ENOENT),
+ SD_BUS_ERROR_MAP(BUS_ERROR_DNS_NOTAUTH, EACCES),
+ SD_BUS_ERROR_MAP(BUS_ERROR_DNS_NOTZONE, EREMOTE),
+ SD_BUS_ERROR_MAP(BUS_ERROR_DNS_BADVERS, EBADMSG),
+ SD_BUS_ERROR_MAP(BUS_ERROR_DNS_BADKEY, EKEYREJECTED),
+ SD_BUS_ERROR_MAP(BUS_ERROR_DNS_BADTIME, EBADMSG),
+ SD_BUS_ERROR_MAP(BUS_ERROR_DNS_BADMODE, EBADMSG),
+ SD_BUS_ERROR_MAP(BUS_ERROR_DNS_BADNAME, EBADMSG),
+ SD_BUS_ERROR_MAP(BUS_ERROR_DNS_BADALG, EBADMSG),
+ SD_BUS_ERROR_MAP(BUS_ERROR_DNS_BADTRUNC, EBADMSG),
+ SD_BUS_ERROR_MAP(BUS_ERROR_DNS_BADCOOKIE, EBADR),
SD_BUS_ERROR_MAP(BUS_ERROR_NO_SUCH_TRANSFER, ENXIO),
SD_BUS_ERROR_MAP(BUS_ERROR_TRANSFER_IN_PROGRESS, EBUSY),
#define BUS_ERROR_STUB_LOOP "org.freedesktop.resolve1.StubLoop"
#define BUS_ERROR_NO_SUCH_DNSSD_SERVICE "org.freedesktop.resolve1.NoSuchDnssdService"
#define BUS_ERROR_DNSSD_SERVICE_EXISTS "org.freedesktop.resolve1.DnssdServiceExists"
+
#define _BUS_ERROR_DNS "org.freedesktop.resolve1.DnsError."
+#define BUS_ERROR_DNS_FORMERR _BUS_ERROR_DNS "FORMERR"
+#define BUS_ERROR_DNS_SERVFAIL _BUS_ERROR_DNS "SERVFAIL"
+#define BUS_ERROR_DNS_NXDOMAIN _BUS_ERROR_DNS "NXDOMAIN"
+#define BUS_ERROR_DNS_NOTIMP _BUS_ERROR_DNS "NOTIMP"
+#define BUS_ERROR_DNS_REFUSED _BUS_ERROR_DNS "REFUSED"
+#define BUS_ERROR_DNS_YXDOMAIN _BUS_ERROR_DNS "YXDOMAIN"
+#define BUS_ERROR_DNS_YRRSET _BUS_ERROR_DNS "YRRSET"
+#define BUS_ERROR_DNS_NXRRSET _BUS_ERROR_DNS "NXRRSET"
+#define BUS_ERROR_DNS_NOTAUTH _BUS_ERROR_DNS "NOTAUTH"
+#define BUS_ERROR_DNS_NOTZONE _BUS_ERROR_DNS "NOTZONE"
+#define BUS_ERROR_DNS_BADVERS _BUS_ERROR_DNS "BADVERS"
+#define BUS_ERROR_DNS_BADKEY _BUS_ERROR_DNS "BADKEY"
+#define BUS_ERROR_DNS_BADTIME _BUS_ERROR_DNS "BADTIME"
+#define BUS_ERROR_DNS_BADMODE _BUS_ERROR_DNS "BADMODE"
+#define BUS_ERROR_DNS_BADNAME _BUS_ERROR_DNS "BADNAME"
+#define BUS_ERROR_DNS_BADALG _BUS_ERROR_DNS "BADALG"
+#define BUS_ERROR_DNS_BADTRUNC _BUS_ERROR_DNS "BADTRUNC"
+#define BUS_ERROR_DNS_BADCOOKIE _BUS_ERROR_DNS "BADCOOKIE"
#define BUS_ERROR_NO_SUCH_TRANSFER "org.freedesktop.import1.NoSuchTransfer"
#define BUS_ERROR_TRANSFER_IN_PROGRESS "org.freedesktop.import1.TransferInProgress"
#include "memory-util.h"
#include "path-util.h"
#include "process-util.h"
-#include "rlimit-util.h"
#include "signal-util.h"
#include "stdio-util.h"
#include "string-util.h"
if (r < 0)
return -errno;
- r = safe_fork_full("(sd-busexec)", s+1, 1, FORK_RESET_SIGNALS|FORK_CLOSE_ALL_FDS, &b->busexec_pid);
+ r = safe_fork_full("(sd-busexec)", s+1, 1, FORK_RESET_SIGNALS|FORK_CLOSE_ALL_FDS|FORK_RLIMIT_NOFILE_SAFE, &b->busexec_pid);
if (r < 0) {
safe_close_pair(s);
return r;
if (r < 0)
_exit(EXIT_FAILURE);
- (void) rlimit_nofile_safe();
-
if (b->exec_argv)
execvp(b->exec_path, b->exec_argv);
else
#define log_debug_bus_message(m) \
do { \
sd_bus_message *_mm = (m); \
- log_debug("Got message type=%s sender=%s destination=%s path=%s interface=%s member=%s cookie=%" PRIu64 " reply_cookie=%" PRIu64 " signature=%s error-name=%s error-message=%s", \
+ log_debug("Got message type=%s sender=%s destination=%s path=%s interface=%s member=%s " \
+ " cookie=%" PRIu64 " reply_cookie=%" PRIu64 \
+ " signature=%s error-name=%s error-message=%s", \
strna(bus_message_type_to_string(_mm->header->type)), \
strna(sd_bus_message_get_sender(_mm)), \
strna(sd_bus_message_get_destination(_mm)), \
return r;
if (*idx >= BUS_MESSAGE_SIZE(m))
- log_debug("Sent message type=%s sender=%s destination=%s path=%s interface=%s member=%s cookie=%" PRIu64 " reply_cookie=%" PRIu64 " signature=%s error-name=%s error-message=%s",
+ log_debug("Sent message type=%s sender=%s destination=%s path=%s interface=%s member=%s"
+ " cookie=%" PRIu64 " reply_cookie=%" PRIu64
+ " signature=%s error-name=%s error-message=%s",
bus_message_type_to_string(m->header->type),
strna(sd_bus_message_get_sender(m)),
strna(sd_bus_message_get_destination(m)),
return 1;
}
- return sd_bus_error_set(error, SD_BUS_ERROR_INCONSISTENT_MESSAGE, "Reply message contained file descriptors which I couldn't accept. Sorry.");
+ return sd_bus_error_set(error, SD_BUS_ERROR_INCONSISTENT_MESSAGE,
+ "Reply message contained file descriptors which I couldn't accept. Sorry.");
} else if (incoming->header->type == SD_BUS_MESSAGE_METHOD_ERROR)
return sd_bus_error_copy(error, &incoming->error);
if (m->header->type != SD_BUS_MESSAGE_METHOD_CALL)
return 1; /* just eat it up */
- return sd_bus_reply_method_errorf(m, SD_BUS_ERROR_INCONSISTENT_MESSAGE, "Message contains file descriptors, which I cannot accept. Sorry.");
+ return sd_bus_reply_method_errorf(m, SD_BUS_ERROR_INCONSISTENT_MESSAGE,
+ "Message contains file descriptors, which I cannot accept. Sorry.");
}
static int process_message(sd_bus *bus, sd_bus_message *m) {
const EntryItem items[],
size_t n_items,
uint64_t *seqnum,
+ sd_id128_t *seqnum_id,
Object **ret_object,
uint64_t *ret_offset) {
}
}
+ if (seqnum_id) {
+ /* Settle the passed in sequence number ID */
+
+ if (sd_id128_is_null(*seqnum_id))
+ *seqnum_id = f->header->seqnum_id; /* Caller has none assigned, then copy the one from the file */
+ else if (!sd_id128_equal(*seqnum_id, f->header->seqnum_id)) {
+ /* Different seqnum IDs? We can't allow entries from multiple IDs end up in the same journal.*/
+ if (le64toh(f->header->n_entries) == 0)
+ f->header->seqnum_id = *seqnum_id; /* Caller has one, and file so far has no entries, then copy the one from the caller */
+ else
+ return log_debug_errno(SYNTHETIC_ERRNO(EILSEQ),
+ "Sequence number IDs don't match, refusing entry.");
+ }
+ }
+
osize = offsetof(Object, entry.items) + (n_items * journal_file_entry_item_size(f));
r = journal_file_append_object(f, OBJECT_ENTRY, osize, &o, &np);
const struct iovec iovec[],
size_t n_iovec,
uint64_t *seqnum,
+ sd_id128_t *seqnum_id,
Object **ret_object,
uint64_t *ret_offset) {
typesafe_qsort(items, n_iovec, entry_item_cmp);
n_iovec = remove_duplicate_entry_items(items, n_iovec);
- r = journal_file_append_entry_internal(f, ts, boot_id, xor_hash, items, n_iovec, seqnum, ret_object, ret_offset);
+ r = journal_file_append_entry_internal(f, ts, boot_id, xor_hash, items, n_iovec, seqnum, seqnum_id, ret_object, ret_offset);
/* If the memory mapping triggered a SIGBUS then we return an
* IO error and ignore the error code passed down to us, since
return 0;
}
-int journal_file_copy_entry(JournalFile *from, JournalFile *to, Object *o, uint64_t p) {
+int journal_file_copy_entry(
+ JournalFile *from,
+ JournalFile *to,
+ Object *o,
+ uint64_t p,
+ uint64_t *seqnum,
+ sd_id128_t *seqnum_id) {
+
_cleanup_free_ EntryItem *items_alloc = NULL;
EntryItem *items;
uint64_t q, n, xor_hash = 0;
return r;
}
- r = journal_file_append_entry_internal(to, &ts, boot_id, xor_hash, items, n, NULL, NULL, NULL);
+ r = journal_file_append_entry_internal(to, &ts, boot_id, xor_hash, items, n, seqnum, seqnum_id, NULL, NULL);
if (mmap_cache_fd_got_sigbus(to->cache_fd))
return -EIO;
const sd_id128_t *boot_id,
const struct iovec iovec[],
size_t n_iovec,
- uint64_t *seqno,
+ uint64_t *seqnum,
+ sd_id128_t *seqnum_id,
Object **ret_object,
uint64_t *ret_offset);
int journal_file_move_to_entry_by_realtime_for_data(JournalFile *f, Object *d, uint64_t realtime, direction_t direction, Object **ret_object, uint64_t *ret_offset);
int journal_file_move_to_entry_by_monotonic_for_data(JournalFile *f, Object *d, sd_id128_t boot_id, uint64_t monotonic, direction_t direction, Object **ret_object, uint64_t *ret_offset);
-int journal_file_copy_entry(JournalFile *from, JournalFile *to, Object *o, uint64_t p);
+int journal_file_copy_entry(JournalFile *from, JournalFile *to, Object *o, uint64_t p, uint64_t *seqnum, sd_id128_t *seqnum_id);
void journal_file_dump(JournalFile *f);
void journal_file_print_header(JournalFile *f);
#include "list.h"
#include "set.h"
+#define JOURNAL_FILES_MAX 7168u
+
#define JOURNAL_LOG_RATELIMIT ((const RateLimit) { .interval = 60 * USEC_PER_SEC, .burst = 3 })
typedef struct Match Match;
#include "strv.h"
#include "syslog-util.h"
-#define JOURNAL_FILES_MAX 7168
-
#define JOURNAL_FILES_RECHECK_USEC (2 * USEC_PER_SEC)
/* The maximum size of variable values we'll expand in catalog entries. We bind this to PATH_MAX for now, as
}
_public_ int sd_journal_get_realtime_usec(sd_journal *j, uint64_t *ret) {
- Object *o;
JournalFile *f;
+ Object *o;
int r;
assert_return(j, -EINVAL);
assert_return(!journal_pid_changed(j), -ECHILD);
- assert_return(ret, -EINVAL);
f = j->current_file;
if (!f)
return -EADDRNOTAVAIL;
-
if (f->current_offset <= 0)
return -EADDRNOTAVAIL;
if (r < 0)
return r;
- *ret = le64toh(o->entry.realtime);
+ uint64_t t = le64toh(o->entry.realtime);
+ if (!VALID_REALTIME(t))
+ return -EBADMSG;
+
+ if (ret)
+ *ret = t;
+
return 0;
}
return 0;
}
+_public_ int sd_journal_get_seqnum(
+ sd_journal *j,
+ uint64_t *ret_seqnum,
+ sd_id128_t *ret_seqnum_id) {
+
+ JournalFile *f;
+ Object *o;
+ int r;
+
+ assert_return(j, -EINVAL);
+ assert_return(!journal_pid_changed(j), -ECHILD);
+
+ f = j->current_file;
+ if (!f)
+ return -EADDRNOTAVAIL;
+
+ if (f->current_offset <= 0)
+ return -EADDRNOTAVAIL;
+
+ r = journal_file_move_to_object(f, OBJECT_ENTRY, f->current_offset, &o);
+ if (r < 0)
+ return r;
+
+ if (ret_seqnum_id)
+ *ret_seqnum_id = f->header->seqnum_id;
+ if (ret_seqnum)
+ *ret_seqnum = le64toh(o->entry.seqnum);
+
+ return 0;
+}
+
static bool field_is_valid(const char *field) {
assert(field);
if (j->inotify_fd < 0) {
JournalFile *f;
- /* This is the first invocation, hence create the
- * inotify watch */
+ /* This is the first invocation, hence create the inotify watch */
r = sd_journal_get_fd(j);
if (r < 0)
return r;
- /* Server might have done some vacuuming while we weren't watching.
- Get rid of the deleted files now so they don't stay around indefinitely. */
+ /* Server might have done some vacuuming while we weren't watching. Get rid of the deleted
+ * files now so they don't stay around indefinitely. */
ORDERED_HASHMAP_FOREACH(f, j->files) {
r = journal_file_fstat(f);
if (r == -EIDRM)
remove_file_real(j, f);
- else if (r < 0) {
- log_debug_errno(r,"Failed to fstat() journal file '%s' : %m", f->path);
- continue;
- }
+ else if (r < 0)
+ log_debug_errno(r, "Failed to fstat() journal file '%s', ignoring: %m", f->path);
}
- /* The journal might have changed since the context
- * object was created and we weren't watching before,
- * hence don't wait for anything, and return
- * immediately. */
+ /* The journal might have changed since the context object was created and we weren't
+ * watching before, hence don't wait for anything, and return immediately. */
return determine_change(j);
}
r = copy_access(fileno(fr), fileno(fw));
if (r < 0)
return r;
- r = copy_xattr(fileno(fr), fileno(fw), COPY_ALL_XATTRS);
+ r = copy_xattr(fileno(fr), NULL, fileno(fw), NULL, COPY_ALL_XATTRS);
if (r < 0)
log_debug_errno(r, "Failed to copy all xattrs from old to new /etc/locale.gen file, ignoring: %m");
}
_cleanup_free_ char *str = NULL;
static const char* map[] = {
[LOG2U(IFF_UP)] = "up", /* interface is up. */
- [LOG2U(IFF_BROADCAST)] = "broadcast", /* broadcast address valid.*/
+ [LOG2U(IFF_BROADCAST)] = "broadcast", /* broadcast address valid. */
[LOG2U(IFF_DEBUG)] = "debug", /* turn on debugging. */
[LOG2U(IFF_LOOPBACK)] = "loopback", /* interface is a loopback net. */
[LOG2U(IFF_POINTOPOINT)] = "point-to-point", /* interface has p-p link. */
[LOG2U(IFF_ALLMULTI)] = "all-multicast", /* receive all multicast packets. */
[LOG2U(IFF_MASTER)] = "master", /* master of a load balancer. */
[LOG2U(IFF_SLAVE)] = "slave", /* slave of a load balancer. */
- [LOG2U(IFF_MULTICAST)] = "multicast", /* supports multicast.*/
+ [LOG2U(IFF_MULTICAST)] = "multicast", /* supports multicast. */
[LOG2U(IFF_PORTSEL)] = "portsel", /* can set media type. */
[LOG2U(IFF_AUTOMEDIA)] = "auto-media", /* auto media select active. */
[LOG2U(IFF_DYNAMIC)] = "dynamic", /* dialup device with changing addresses. */
static uid_t arg_uid = UID_INVALID;
static gid_t arg_gid = GID_INVALID;
static bool arg_no_block = false;
+static char **arg_env = NULL;
+static char **arg_exec = NULL;
+
+STATIC_DESTRUCTOR_REGISTER(arg_env, strv_freep);
+STATIC_DESTRUCTOR_REGISTER(arg_exec, strv_freep);
static int help(void) {
_cleanup_free_ char *link = NULL;
return log_oom();
printf("%s [OPTIONS...] [VARIABLE=VALUE...]\n"
+ "%s [OPTIONS...] --exec [VARIABLE=VALUE...] ; CMDLINE...\n"
"\n%sNotify the init system about service status updates.%s\n\n"
" -h --help Show this help\n"
" --version Show package version\n"
" --status=TEXT Set status text\n"
" --booted Check if the system was booted up with systemd\n"
" --no-block Do not wait until operation finished\n"
+ " --exec Execute command line separated by ';' once done\n"
"\nSee the %s for details.\n",
program_invocation_short_name,
+ program_invocation_short_name,
ansi_highlight(),
ansi_normal(),
link);
ARG_STATUS,
ARG_BOOTED,
ARG_UID,
- ARG_NO_BLOCK
+ ARG_NO_BLOCK,
+ ARG_EXEC,
};
static const struct option options[] = {
{ "booted", no_argument, NULL, ARG_BOOTED },
{ "uid", required_argument, NULL, ARG_UID },
{ "no-block", no_argument, NULL, ARG_NO_BLOCK },
+ { "exec", no_argument, NULL, ARG_EXEC },
{}
};
- int c, r;
+ bool do_exec = false;
+ int c, r, n_env;
assert(argc >= 0);
assert(argv);
arg_no_block = true;
break;
+ case ARG_EXEC:
+ do_exec = true;
+ break;
+
case '?':
return -EINVAL;
return -EINVAL;
}
+ if (do_exec) {
+ int i;
+
+ for (i = optind; i < argc; i++)
+ if (streq(argv[i], ";"))
+ break;
+
+ if (i >= argc)
+ return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "If --exec is used argument list must contain ';' separator, refusing.");
+ if (i+1 == argc)
+ return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Empty command line specified after ';' separator, refusing");
+
+ arg_exec = strv_copy_n(argv + i + 1, argc - i - 1);
+ if (!arg_exec)
+ return log_oom();
+
+ n_env = i - optind;
+ } else
+ n_env = argc - optind;
+
+ if (n_env > 0) {
+ arg_env = strv_copy_n(argv + optind, n_env);
+ if (!arg_env)
+ return log_oom();
+ }
+
return 1;
}
our_env[i++] = NULL;
- final_env = strv_env_merge(our_env, argv + optind);
+ final_env = strv_env_merge(our_env, arg_env);
if (!final_env)
return log_oom();
"No status data could be sent: $NOTIFY_SOCKET was not set");
}
+ if (arg_exec) {
+ _cleanup_free_ char *cmdline = NULL;
+
+ execvp(arg_exec[0], arg_exec);
+
+ cmdline = strv_join(arg_exec, " ");
+ if (!cmdline)
+ return log_oom();
+
+ return log_error_errno(errno, "Failed to execute command line: %s", cmdline);
+ }
+
return 0;
}
r = userns_mkdir(root, "/run/host/home", 0755, 0, 0);
if (r < 0)
- return log_error_errno(r, "Failed to create /run/host/userdb: %m");
+ return log_error_errno(r, "Failed to create /run/host/home: %m");
r = userns_mkdir(root, "/run/host/userdb", 0755, 0, 0);
if (r < 0)
expected = p->op == SCMP_CMP_MASKED_EQ ? 4 : 3;
if (r != expected)
- json_log(e, flags|JSON_WARNING, 0, "Wrong number of system call arguments for JSON data data, ignoring.");
+ json_log(e, flags|JSON_WARNING, 0, "Wrong number of system call arguments for JSON data, ignoring.");
/* Note that we are a bit sloppy here and do not insist that SCMP_CMP_MASKED_EQ gets two datum values,
* and the other only one. That's because buildah for example by default calls things with
#include "mkdir.h"
#include "nspawn-setuid.h"
#include "process-util.h"
-#include "rlimit-util.h"
#include "signal-util.h"
#include "string-util.h"
#include "strv.h"
if (pipe2(pipe_fds, O_CLOEXEC) < 0)
return log_error_errno(errno, "Failed to allocate pipe: %m");
- r = safe_fork("(getent)", FORK_RESET_SIGNALS|FORK_DEATHSIG|FORK_LOG, &pid);
+ r = safe_fork("(getent)", FORK_RESET_SIGNALS|FORK_DEATHSIG|FORK_LOG|FORK_RLIMIT_NOFILE_SAFE, &pid);
if (r < 0) {
safe_close_pair(pipe_fds);
return r;
(void) close_all_fds(NULL, 0);
- (void) rlimit_nofile_safe();
-
execle("/usr/bin/getent", "getent", database, key, NULL, &empty_env);
execle("/bin/getent", "getent", database, key, NULL, &empty_env);
_exit(EXIT_FAILURE);
BLOCK_WITH_UMASK(0000);
- /* We create the kmsg FIFO as as temporary file in /run, but immediately delete it after bind mounting it to
+ /* We create the kmsg FIFO as a temporary file in /run, but immediately delete it after bind mounting it to
* /proc/kmsg. While FIFOs on the reading side behave very similar to /proc/kmsg, their writing side behaves
* differently from /dev/kmsg in that writing blocks when nothing is reading. In order to avoid any problems
* with containers deadlocking due to this we simply make /dev/kmsg unavailable to the container. */
return NSS_STATUS_UNAVAIL;
}
+ if (af == AF_INET6 && !socket_ipv6_is_enabled())
+ goto not_found;
+
if (is_localhost(name)) {
- if (af == AF_INET6 && !socket_ipv6_is_enabled())
- goto not_found;
canonical = "localhost";
local_address_ipv4 = htobe32(INADDR_LOOPBACK);
} else {
assert(af == AF_INET6);
- if (socket_ipv6_is_enabled())
+ if (!socket_ipv6_is_enabled())
goto not_found;
if (memcmp(addr, LOCALADDRESS_IPV6, 16) == 0) {
* Returns the number of sorted items; negative on error. */
int oomd_sort_cgroup_contexts(Hashmap *h, oomd_compare_t compare_func, const char *prefix, OomdCGroupContext ***ret);
-/* If the the cgroup is owned by root, or the cgroups represented by `ctx` and
+/* If the cgroup is owned by root, or the cgroups represented by `ctx` and
* `prefix` are owned by the same user, then set `ctx->preference` using the
* `user.oomd_avoid` and `user.oomd_omit` xattrs. Otherwise, set
* `ctx->preference` to MANAGED_OOM_PREFERENCE_NONE.
assert_se(oomd_fetch_cgroup_oom_preference(ctx, "/herp.slice/derp.scope") == -EINVAL);
/* Assert that avoid/omit are not set if the cgroup and prefix are not
- * owned by the same user.*/
+ * owned by the same user. */
if (test_xattrs && !empty_or_root(cgroup)) {
ctx = oomd_cgroup_context_free(ctx);
assert_se(cg_set_access(SYSTEMD_CGROUP_CONTROLLER, cgroup, 61183, 0) >= 0);
assert(p);
assert(root);
+ /* copy_tree_at() automatically copies the permissions of source directories to target directories if
+ * it created them. However, the root directory is created by us, so we have to manually take care
+ * that it is initialized. We use the first source directory targeting "/" as the metadata source for
+ * the root directory. */
+ STRV_FOREACH_PAIR(source, target, p->copy_files) {
+ _cleanup_close_ int rfd = -EBADF, sfd = -EBADF;
+
+ if (!path_equal(*target, "/"))
+ continue;
+
+ rfd = open(root, O_DIRECTORY|O_CLOEXEC|O_NOFOLLOW);
+ if (rfd < 0)
+ return rfd;
+
+ sfd = chase_symlinks_and_open(*source, arg_root, CHASE_PREFIX_ROOT, O_PATH|O_DIRECTORY|O_CLOEXEC|O_NOCTTY, NULL);
+ if (sfd < 0)
+ return log_error_errno(sfd, "Failed to open source file '%s%s': %m", strempty(arg_root), *source);
+
+ (void) copy_xattr(sfd, NULL, rfd, NULL, COPY_ALL_XATTRS);
+ (void) copy_access(sfd, rfd);
+ (void) copy_times(sfd, rfd, 0);
+
+ break;
+ }
+
STRV_FOREACH_PAIR(source, target, p->copy_files) {
_cleanup_close_ int sfd = -EBADF, pfd = -EBADF, tfd = -EBADF;
if (pfd < 0)
return log_error_errno(pfd, "Failed to open parent directory of target: %m");
- /* Make sure everything is owned by the user running repart so that
- * make_filesystem() can map the user running repart to "root" in a user
- * namespace to have the files owned by root in the final image. */
-
r = copy_tree_at(
sfd, ".",
pfd, fn,
if (r < 0)
return log_error_errno(r, "Failed to copy '%s' to '%s%s': %m", *source, strempty(arg_root), *target);
- (void) copy_xattr(sfd, tfd, COPY_ALL_XATTRS);
+ (void) copy_xattr(sfd, NULL, tfd, NULL, COPY_ALL_XATTRS);
(void) copy_access(sfd, tfd);
(void) copy_times(sfd, tfd, 0);
}
static int partition_populate_directory(Partition *p, const Set *denylist, char **ret) {
_cleanup_(rm_rf_physical_and_freep) char *root = NULL;
- _cleanup_close_ int rfd = -EBADF;
+ const char *vt;
int r;
assert(ret);
- rfd = mkdtemp_open("/var/tmp/repart-XXXXXX", 0, &root);
- if (rfd < 0)
- return log_error_errno(rfd, "Failed to create temporary directory: %m");
+ r = var_tmp_dir(&vt);
+ if (r < 0)
+ return log_error_errno(r, "Could not determine temporary directory: %m");
+
+ r = tempfn_random_child(vt, "repart", &root);
+ if (r < 0)
+ return log_error_errno(r, "Failed to generate temporary directory: %m");
- if (fchmod(rfd, 0755) < 0)
- return log_error_errno(errno, "Failed to change mode of temporary directory: %m");
+ r = mkdir(root, 0755);
+ if (r < 0)
+ return log_error_errno(errno, "Failed to create temporary directory: %m");
r = do_copy_files(p, root, denylist);
if (r < 0)
* The dmesg- filename contains the backend-type and the Common Platform Error Record, CPER,
* record id, a 64-bit number.
*
- * Files are processed in reverse lexigraphical order so as to properly reconstruct original dmesg.*/
+ * Files are processed in reverse lexigraphical order so as to properly reconstruct original dmesg. */
for (size_t n = list->n_entries; n > 0; n--) {
PStoreEntry *pe;
return r;
/* Handle each pstore file */
- /* Sort files lexigraphically ascending, generally needed by all */
+ /* Sort files lexicographically ascending, generally needed by all */
typesafe_qsort(list.entries, list.n_entries, compare_pstore_entries);
/* Process known file types */
ansi_grey(), ifname, ansi_normal());
}
+static int resolve_host_error(const char *name, int r, const sd_bus_error *error) {
+ if (sd_bus_error_has_name(error, BUS_ERROR_DNS_NXDOMAIN))
+ return log_error_errno(r, "%s: %s", name, bus_error_message(error, r));
+
+ return log_error_errno(r, "%s: resolve call failed: %s", name, bus_error_message(error, r));
+}
+
static int resolve_host(sd_bus *bus, const char *name) {
_cleanup_(sd_bus_message_unrefp) sd_bus_message *req = NULL, *reply = NULL;
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
r = sd_bus_call(bus, req, SD_RESOLVED_QUERY_TIMEOUT_USEC, &error, &reply);
if (r < 0)
- return log_error_errno(r, "%s: resolve call failed: %s", name, bus_error_message(&error, r));
+ return resolve_host_error(name, r, &error);
ts = now(CLOCK_MONOTONIC) - ts;
case DNS_TRANSACTION_NOT_FOUND:
/* We return this as NXDOMAIN. This is only generated when a host doesn't implement LLMNR/TCP, and we
* thus quickly know that we cannot resolve an in-addr.arpa or ip6.arpa address. */
- return reply_method_errorf(q, _BUS_ERROR_DNS "NXDOMAIN", "'%s' not found", dns_query_string(q));
+ return reply_method_errorf(q, BUS_ERROR_DNS_NXDOMAIN, "'%s' not found", dns_query_string(q));
case DNS_TRANSACTION_NO_SOURCE:
return reply_method_errorf(q, BUS_ERROR_NO_SOURCE, "All suitable resolution sources turned off");
return 0;
if (q->answer_rcode == DNS_RCODE_NXDOMAIN)
- sd_bus_error_setf(&error, _BUS_ERROR_DNS "NXDOMAIN", "'%s' not found", dns_query_string(q));
+ sd_bus_error_setf(&error, BUS_ERROR_DNS_NXDOMAIN, "Name '%s' not found", dns_query_string(q));
else {
const char *rc, *n;
if (!s)
return -EIO;
- /* TODO: We should eventually use use the EVP API once it supports ECDSA signature verification */
+ /* TODO: We should eventually use the EVP API once it supports ECDSA signature verification */
sig = ECDSA_SIG_new();
if (!sig)
log_debug("Sending query via TCP since it is too large.");
else if (r == -EAGAIN)
log_debug("Sending query via TCP since UDP isn't supported or DNS-over-TLS is selected.");
- if (IN_SET(r, -EMSGSIZE, -EAGAIN))
+ else if (r == -EPERM)
+ log_debug("Sending query via TCP since UDP is blocked.");
+ if (IN_SET(r, -EMSGSIZE, -EAGAIN, -EPERM))
r = dns_transaction_emit_tcp(t);
}
if (r == -ELOOP) {
test_hostname_lookup(bus, "www.dnssec-bogus.sg", AF_INET, BUS_ERROR_DNSSEC_FAILED);
/* NXDOMAIN in NSEC domain */
- test_rr_lookup(bus, "hhh.nasa.gov", DNS_TYPE_A, _BUS_ERROR_DNS "NXDOMAIN");
- test_hostname_lookup(bus, "hhh.nasa.gov", AF_UNSPEC, _BUS_ERROR_DNS "NXDOMAIN");
- test_rr_lookup(bus, "_pgpkey-https._tcp.hkps.pool.sks-keyservers.net", DNS_TYPE_SRV, _BUS_ERROR_DNS "NXDOMAIN");
+ test_rr_lookup(bus, "hhh.nasa.gov", DNS_TYPE_A, BUS_ERROR_DNS_NXDOMAIN);
+ test_hostname_lookup(bus, "hhh.nasa.gov", AF_UNSPEC, BUS_ERROR_DNS_NXDOMAIN);
+ test_rr_lookup(bus, "_pgpkey-https._tcp.hkps.pool.sks-keyservers.net", DNS_TYPE_SRV, BUS_ERROR_DNS_NXDOMAIN);
/* wildcard, NSEC zone */
test_rr_lookup(bus, ".wilda.nsec.0skar.cz", DNS_TYPE_A, NULL);
test_hostname_lookup(bus, "herndon.nasa.gov", AF_INET6, BUS_ERROR_NO_SUCH_RR);
/* NXDOMAIN in NSEC root zone: */
- test_rr_lookup(bus, "jasdhjas.kjkfgjhfjg", DNS_TYPE_A, _BUS_ERROR_DNS "NXDOMAIN");
- test_hostname_lookup(bus, "jasdhjas.kjkfgjhfjg", AF_UNSPEC, _BUS_ERROR_DNS "NXDOMAIN");
- test_hostname_lookup(bus, "jasdhjas.kjkfgjhfjg", AF_INET, _BUS_ERROR_DNS "NXDOMAIN");
- test_hostname_lookup(bus, "jasdhjas.kjkfgjhfjg", AF_INET6, _BUS_ERROR_DNS "NXDOMAIN");
+ test_rr_lookup(bus, "jasdhjas.kjkfgjhfjg", DNS_TYPE_A, BUS_ERROR_DNS_NXDOMAIN);
+ test_hostname_lookup(bus, "jasdhjas.kjkfgjhfjg", AF_UNSPEC, BUS_ERROR_DNS_NXDOMAIN);
+ test_hostname_lookup(bus, "jasdhjas.kjkfgjhfjg", AF_INET, BUS_ERROR_DNS_NXDOMAIN);
+ test_hostname_lookup(bus, "jasdhjas.kjkfgjhfjg", AF_INET6, BUS_ERROR_DNS_NXDOMAIN);
/* NXDOMAIN in NSEC3 .com zone: */
- test_rr_lookup(bus, "kjkfgjhfjgsdfdsfd.com", DNS_TYPE_A, _BUS_ERROR_DNS "NXDOMAIN");
- test_hostname_lookup(bus, "kjkfgjhfjgsdfdsfd.com", AF_INET, _BUS_ERROR_DNS "NXDOMAIN");
- test_hostname_lookup(bus, "kjkfgjhfjgsdfdsfd.com", AF_INET6, _BUS_ERROR_DNS "NXDOMAIN");
- test_hostname_lookup(bus, "kjkfgjhfjgsdfdsfd.com", AF_UNSPEC, _BUS_ERROR_DNS "NXDOMAIN");
+ test_rr_lookup(bus, "kjkfgjhfjgsdfdsfd.com", DNS_TYPE_A, BUS_ERROR_DNS_NXDOMAIN);
+ test_hostname_lookup(bus, "kjkfgjhfjgsdfdsfd.com", AF_INET, BUS_ERROR_DNS_NXDOMAIN);
+ test_hostname_lookup(bus, "kjkfgjhfjgsdfdsfd.com", AF_INET6, BUS_ERROR_DNS_NXDOMAIN);
+ test_hostname_lookup(bus, "kjkfgjhfjgsdfdsfd.com", AF_UNSPEC, BUS_ERROR_DNS_NXDOMAIN);
/* Unsigned A */
test_rr_lookup(bus, "poettering.de", DNS_TYPE_A, NULL);
#endif
/* DNAME, pointing to NXDOMAIN */
- test_rr_lookup(bus, ".ireallyhpoethisdoesnexist.xn--kprw13d.", DNS_TYPE_A, _BUS_ERROR_DNS "NXDOMAIN");
- test_rr_lookup(bus, ".ireallyhpoethisdoesnexist.xn--kprw13d.", DNS_TYPE_RP, _BUS_ERROR_DNS "NXDOMAIN");
- test_hostname_lookup(bus, ".ireallyhpoethisdoesntexist.xn--kprw13d.", AF_UNSPEC, _BUS_ERROR_DNS "NXDOMAIN");
- test_hostname_lookup(bus, ".ireallyhpoethisdoesntexist.xn--kprw13d.", AF_INET, _BUS_ERROR_DNS "NXDOMAIN");
- test_hostname_lookup(bus, ".ireallyhpoethisdoesntexist.xn--kprw13d.", AF_INET6, _BUS_ERROR_DNS "NXDOMAIN");
+ test_rr_lookup(bus, ".ireallyhpoethisdoesnexist.xn--kprw13d.", DNS_TYPE_A, BUS_ERROR_DNS_NXDOMAIN);
+ test_rr_lookup(bus, ".ireallyhpoethisdoesnexist.xn--kprw13d.", DNS_TYPE_RP, BUS_ERROR_DNS_NXDOMAIN);
+ test_hostname_lookup(bus, ".ireallyhpoethisdoesntexist.xn--kprw13d.", AF_UNSPEC, BUS_ERROR_DNS_NXDOMAIN);
+ test_hostname_lookup(bus, ".ireallyhpoethisdoesntexist.xn--kprw13d.", AF_INET, BUS_ERROR_DNS_NXDOMAIN);
+ test_hostname_lookup(bus, ".ireallyhpoethisdoesntexist.xn--kprw13d.", AF_INET6, BUS_ERROR_DNS_NXDOMAIN);
return 0;
}
* been mounted into) it is thus necessary to create a symlink pointing to the right subdirectory of
* /usr/ first — otherwise we couldn't invoke any dynamic binary. Let's detect this case here, and
* create the symlink as needed should it be missing. We prefer doing this consistently with Debian's
- * multiarch logic, but support Fedora-style multilib too.*/
+ * multiarch logic, but support Fedora-style multilib too. */
#if defined(__aarch64__)
/* aarch64 ELF ABI actually says dynamic loader is in /lib/, but Fedora puts it in /lib64/ anyway and
* just symlinks /lib/ld-linux-aarch64.so.1 to ../lib64/ld-linux-aarch64.so.1. For this to work
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid log target '%s'", t);
log_info("Setting log target to %s.", log_target_to_string(target));
- log_set_target(target);
- log_open();
+ log_set_target_and_open(target);
return 0;
}
#include "bus-map-properties.h"
#include "alloc-util.h"
+#include "bus-util.h"
#include "strv.h"
#include "bus-message.h"
r = sd_bus_message_read_array(m, SD_BUS_TYPE_BYTE, &v, &n);
if (r < 0)
- return r;
+ return bus_log_parse_error_debug(r);
if (n == 0)
*p = SD_ID128_NULL;
r = sd_bus_message_read_strv_extend(m, &l);
if (r < 0)
- return r;
+ return bus_log_parse_error_debug(r);
r = strv_extend_strv(p, l, false);
if (r < 0)
- return r;
+ return bus_log_parse_error_debug(r);
strv_sort(*p);
return 0;
r = sd_bus_message_peek_type(m, &type, NULL);
if (r < 0)
- return r;
+ return bus_log_parse_error_debug(r);
switch (type) {
r = sd_bus_message_read_basic(m, type, &s);
if (r < 0)
- return r;
+ return bus_log_parse_error_debug(r);
if (isempty(s))
s = NULL;
r = sd_bus_message_read_strv_extend(m, &l);
if (r < 0)
- return r;
+ return bus_log_parse_error_debug(r);
return strv_extend_strv(p, l, false);
}
r = sd_bus_message_read_basic(m, type, &b);
if (r < 0)
- return r;
+ return bus_log_parse_error_debug(r);
if (flags & BUS_MAP_BOOLEAN_AS_BOOL)
*(bool*) userdata = b;
r = sd_bus_message_read_basic(m, type, &u);
if (r < 0)
- return r;
+ return bus_log_parse_error_debug(r);
*p = u;
return 0;
r = sd_bus_message_read_basic(m, type, &t);
if (r < 0)
- return r;
+ return bus_log_parse_error_debug(r);
*p = t;
return 0;
r = sd_bus_message_read_basic(m, type, &d);
if (r < 0)
- return r;
+ return bus_log_parse_error_debug(r);
*p = d;
return 0;
r = sd_bus_message_enter_container(m, SD_BUS_TYPE_ARRAY, "{sv}");
if (r < 0)
- return r;
+ return bus_log_parse_error_debug(r);
while ((r = sd_bus_message_enter_container(m, SD_BUS_TYPE_DICT_ENTRY, "sv")) > 0) {
const struct bus_properties_map *prop;
r = sd_bus_message_read_basic(m, SD_BUS_TYPE_STRING, &member);
if (r < 0)
- return r;
+ return bus_log_parse_error_debug(r);
for (i = 0, prop = NULL; map[i].member; i++)
if (streq(map[i].member, member)) {
if (prop) {
r = sd_bus_message_peek_type(m, NULL, &contents);
if (r < 0)
- return r;
+ return bus_log_parse_error_debug(r);
r = sd_bus_message_enter_container(m, SD_BUS_TYPE_VARIANT, contents);
if (r < 0)
- return r;
+ return bus_log_parse_error_debug(r);
v = (uint8_t *)userdata + prop->offset;
if (map[i].set)
else
r = map_basic(sd_bus_message_get_bus(m), member, m, flags, error, v);
if (r < 0)
- return r;
+ return bus_log_parse_error_debug(r);
r = sd_bus_message_exit_container(m);
if (r < 0)
- return r;
+ return bus_log_parse_error_debug(r);
} else {
r = sd_bus_message_skip(m, "v");
if (r < 0)
- return r;
+ return bus_log_parse_error_debug(r);
}
r = sd_bus_message_exit_container(m);
if (r < 0)
- return r;
+ return bus_log_parse_error_debug(r);
}
if (r < 0)
- return r;
+ return bus_log_parse_error_debug(r);
+
+ r = sd_bus_message_exit_container(m);
+ if (r < 0)
+ return bus_log_parse_error_debug(r);
- return sd_bus_message_exit_container(m);
+ return r;
}
int bus_map_all_properties(
#define bus_log_parse_error(r) \
log_error_errno(r, "Failed to parse bus message: %m")
+#define bus_log_parse_error_debug(r) \
+ log_debug_errno(r, "Failed to parse bus message: %m")
+
#define bus_log_create_error(r) \
log_error_errno(r, "Failed to create bus message: %m")
AT_SYMLINK_NOFOLLOW) < 0)
r = -errno;
+ (void) copy_xattr(df, from, dt, to, copy_flags);
(void) utimensat(dt, to, (struct timespec[]) { st->st_atim, st->st_mtim }, AT_SYMLINK_NOFOLLOW);
return r;
}
r = -errno;
(void) futimens(fdt, (struct timespec[]) { st->st_atim, st->st_mtim });
- (void) copy_xattr(fdf, fdt, copy_flags);
+ (void) copy_xattr(fdf, NULL, fdt, NULL, copy_flags);
if (copy_flags & COPY_FSYNC) {
if (fsync(fdt) < 0) {
if (fchmod(fdt, st->st_mode & 07777) < 0)
r = -errno;
- (void) copy_xattr(dirfd(d), fdt, copy_flags);
+ (void) copy_xattr(dirfd(d), NULL, fdt, NULL, copy_flags);
(void) futimens(fdt, (struct timespec[]) { st->st_atim, st->st_mtim });
}
* mode/ownership of that device node...) */
if (S_ISREG(st.st_mode)) {
(void) copy_times(fdf, fdt, copy_flags);
- (void) copy_xattr(fdf, fdt, copy_flags);
+ (void) copy_xattr(fdf, NULL, fdt, NULL, copy_flags);
}
if (copy_flags & COPY_FSYNC_FULL) {
goto fail;
(void) copy_times(fdf, fdt, copy_flags);
- (void) copy_xattr(fdf, fdt, copy_flags);
+ (void) copy_xattr(fdf, NULL, fdt, NULL, copy_flags);
if (chattr_mask != 0)
(void) chattr_fd(fdt, chattr_flags, chattr_mask & ~CHATTR_EARLY_FL, NULL);
return fchmod_and_chown_with_fallback(fdt, patht, st.st_mode & 07777, st.st_uid, st.st_gid);
}
-int copy_xattr(int fdf, int fdt, CopyFlags copy_flags) {
+int copy_xattr(int df, const char *from, int dt, const char *to, CopyFlags copy_flags) {
_cleanup_free_ char *names = NULL;
int ret = 0, r;
- r = flistxattr_malloc(fdf, &names);
+ r = listxattr_at_malloc(df, from, 0, &names);
if (r < 0)
return r;
if (!FLAGS_SET(copy_flags, COPY_ALL_XATTRS) && !startswith(p, "user."))
continue;
- r = fgetxattr_malloc(fdf, p, &value);
+ r = getxattr_at_malloc(df, from, p, 0, &value);
if (r == -ENODATA)
continue; /* gone by now */
if (r < 0)
return r;
- if (fsetxattr(fdt, p, value, r, 0) < 0)
+ if (xsetxattr(dt, to, p, value, r, 0) < 0)
ret = -errno;
}
static inline int copy_rights(int fdf, int fdt) {
return copy_rights_with_fallback(fdf, fdt, NULL); /* no fallback */
}
-int copy_xattr(int fdf, int fdt, CopyFlags copy_flags);
+int copy_xattr(int df, const char *from, int dt, const char *to, CopyFlags copy_flags);
assert(nr != 0); /* zero is not a valid partition nr */
assert(ret);
- if (!FLAGS_SET(flags, DISSECT_IMAGE_DISKSEQ_DEVNODE) || diskseq == UINT64_MAX) {
+ if (!FLAGS_SET(flags, DISSECT_IMAGE_DISKSEQ_DEVNODE) || diskseq == 0) {
/* Given a whole block device node name (e.g. /dev/sda or /dev/loop7) generate a partition
* device name (e.g. /dev/sda7 or /dev/loop7p5). The rule the kernel uses is simple: if whole
return -ENXIO;
/* Also check diskseq. */
- if (loop->diskseq > 0) {
+ if (loop->diskseq != 0) {
uint64_t diskseq;
r = fd_get_diskseq(fd, &diskseq);
* Returns -ENXIO if we couldn't find any partition suitable as root or /usr partition
* Returns -ENOTUNIQ if we only found multiple generic partitions and thus don't know what to do with that */
- uint64_t diskseq = m->loop ? m->loop->diskseq : UINT64_MAX;
+ uint64_t diskseq = m->loop ? m->loop->diskseq : 0;
if (verity && verity->root_hash) {
sd_id128_t fsuuid, vuuid;
assert(ret_directory);
assert(ret_loop_device);
- /* We intend to mount this right-away, hence add the partitions if needed and pin them*/
+ /* We intend to mount this right-away, hence add the partitions if needed and pin them. */
flags |= DISSECT_IMAGE_ADD_PARTITION_DEVICES |
DISSECT_IMAGE_PIN_PARTITION_DEVICES;
};
typedef struct u32_opt {
- uint32_t value; /* a value of 0 indicates the hardware advertised maximum should be used.*/
+ uint32_t value; /* a value of 0 indicates the hardware advertised maximum should be used. */
bool set;
} u32_opt;
#include "missing_syscall.h"
#include "path-util.h"
#include "process-util.h"
-#include "rlimit-util.h"
#include "serialize.h"
#include "set.h"
#include "signal-util.h"
return 0;
}
- r = safe_fork("(direxec)", FORK_DEATHSIG|FORK_LOG, &_pid);
+ r = safe_fork("(direxec)", FORK_DEATHSIG|FORK_LOG|FORK_RLIMIT_NOFILE_SAFE, &_pid);
if (r < 0)
return r;
if (r == 0) {
_exit(EXIT_FAILURE);
}
- (void) rlimit_nofile_safe();
-
if (set_systemd_exec_pid) {
r = setenv_systemd_exec_pid(false);
if (r < 0)
r = safe_fork_full(name,
except,
n_except,
- FORK_RESET_SIGNALS|FORK_DEATHSIG|FORK_CLOSE_ALL_FDS|FORK_REOPEN_LOG,
+ FORK_RESET_SIGNALS|FORK_DEATHSIG|FORK_CLOSE_ALL_FDS|FORK_REOPEN_LOG|FORK_RLIMIT_NOFILE_SAFE,
ret_pid);
if (r < 0)
return r;
}
}
- (void) rlimit_nofile_safe();
-
/* Count arguments */
va_start(ap, path);
for (n = 0; va_arg(ap, char*); n++)
char ***ret_files) {
/* This is similar to normalize_filenames()/normalize_names() in src/systemctl/,
- * but operates on real unit names. For each argument we we look up the actual path
+ * but operates on real unit names. For each argument we look up the actual path
* where the unit is found. This way linked units can be re-enabled successfully. */
_cleanup_strv_free_ char **files = NULL, **names = NULL;
#include "journal-util.h"
#include "parse-util.h"
#include "string-util.h"
+#include "strv.h"
#include "unaligned.h"
enum {
assert(line);
- value = startswith(line, "__CURSOR=");
- if (value)
- /* ignore __CURSOR */
+ if (STARTSWITH_SET(line, "__CURSOR=", "__SEQNUM=", "__SEQNUM_ID="))
+ /* ignore __CURSOR=, __SEQNUM=, __SEQNUM_ID= which we cannot replicate */
return 1;
value = startswith(line, "__REALTIME_TIMESTAMP=");
log_warning_errno(err, "Journal file %s corrupted, ignoring file.", path);
break;
+ case ETOOMANYREFS:
+ log_warning_errno(err, "Too many journal files (limit is at %u) in scope, ignoring file '%s'.", JOURNAL_FILES_MAX, path);
+ break;
+
default:
log_warning_errno(err, "An error was encountered while opening journal file or directory %s, ignoring file: %m", path);
break;
static void *dispatch_userdata(const JsonDispatch *p, void *userdata) {
- /* When the the userdata pointer is passed in as NULL, then we'll just use the offset as a literal
+ /* When the userdata pointer is passed in as NULL, then we'll just use the offset as a literal
* address, and convert it to a pointer. Note that might as well just add the offset to the NULL
* pointer, but UndefinedBehaviourSanitizer doesn't like pointer arithmetics based on NULL pointers,
* hence we code this explicitly here. */
* it gracefully (also see below.) */
if (has_up && (required & (FIDO2ENROLL_UP|FIDO2ENROLL_UP_IF_NEEDED)) == FIDO2ENROLL_UP_IF_NEEDED) {
- log_notice("%s%sGot unsupported option error when when user presence test is turned off. Trying with user presence test turned on.",
+ log_notice("%s%sGot unsupported option error when user presence test is turned off. Trying with user presence test turned on.",
emoji_enabled() ? special_glyph(SPECIAL_GLYPH_TOUCH) : "",
emoji_enabled() ? " " : "");
retry_with_up = true;
* slightly more defensively. */
if (has_up && !FLAGS_SET(lock_with, FIDO2ENROLL_UP)) {
- log_notice("%s%sGot unsupported option error when when user presence test is turned off. Trying with user presence test turned on.",
+ log_notice("%s%sGot unsupported option error when user presence test is turned off. Trying with user presence test turned on.",
emoji_enabled() ? special_glyph(SPECIAL_GLYPH_TOUCH) : "",
emoji_enabled() ? " " : "");
retry_with_up = true;
static int output_timestamp_monotonic(
FILE *f,
OutputMode mode,
- const dual_timestamp *ts,
+ const dual_timestamp *display_ts,
const sd_id128_t *boot_id,
- const dual_timestamp *previous_ts,
+ const dual_timestamp *previous_display_ts,
const sd_id128_t *previous_boot_id) {
int written_chars = 0;
assert(f);
- assert(ts);
+ assert(display_ts);
assert(boot_id);
- assert(previous_ts);
+ assert(previous_display_ts);
assert(previous_boot_id);
- if (!VALID_MONOTONIC(ts->monotonic))
+ if (!VALID_MONOTONIC(display_ts->monotonic))
return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "No valid monotonic timestamp available");
- written_chars += fprintf(f, "[%5"PRI_USEC".%06"PRI_USEC, ts->monotonic / USEC_PER_SEC, ts->monotonic % USEC_PER_SEC);
+ written_chars += fprintf(f, "[%5"PRI_USEC".%06"PRI_USEC, display_ts->monotonic / USEC_PER_SEC, display_ts->monotonic % USEC_PER_SEC);
if (mode == OUTPUT_SHORT_DELTA) {
uint64_t delta;
bool reliable_ts = true;
- if (VALID_MONOTONIC(previous_ts->monotonic) && sd_id128_equal(*boot_id, *previous_boot_id))
- delta = usec_sub_unsigned(ts->monotonic, previous_ts->monotonic);
- else if (VALID_REALTIME(ts->realtime) && VALID_REALTIME(previous_ts->realtime)) {
- delta = usec_sub_unsigned(ts->realtime, previous_ts->realtime);
+ if (VALID_MONOTONIC(previous_display_ts->monotonic) && sd_id128_equal(*boot_id, *previous_boot_id))
+ delta = usec_sub_unsigned(display_ts->monotonic, previous_display_ts->monotonic);
+ else if (VALID_REALTIME(display_ts->realtime) && VALID_REALTIME(previous_display_ts->realtime)) {
+ delta = usec_sub_unsigned(display_ts->realtime, previous_display_ts->realtime);
reliable_ts = false;
} else {
written_chars += fprintf(f, "%16s", "");
sd_journal *j,
OutputMode mode,
OutputFlags flags,
- const dual_timestamp *ts) {
+ const dual_timestamp *display_ts) {
char buf[CONST_MAX(FORMAT_TIMESTAMP_MAX, 64U)];
int r;
assert(f);
assert(j);
- assert(ts);
+ assert(display_ts);
- if (!VALID_REALTIME(ts->realtime))
+ if (!VALID_REALTIME(display_ts->realtime))
return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "No valid realtime timestamp available");
if (IN_SET(mode, OUTPUT_SHORT_FULL, OUTPUT_WITH_UNIT)) {
const char *k;
if (flags & OUTPUT_UTC)
- k = format_timestamp_style(buf, sizeof(buf), ts->realtime, TIMESTAMP_UTC);
+ k = format_timestamp_style(buf, sizeof(buf), display_ts->realtime, TIMESTAMP_UTC);
else
- k = format_timestamp(buf, sizeof(buf), ts->realtime);
+ k = format_timestamp(buf, sizeof(buf), display_ts->realtime);
if (!k)
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
- "Failed to format timestamp: %" PRIu64, ts->realtime);
+ "Failed to format timestamp: %" PRIu64, display_ts->realtime);
} else {
struct tm tm;
time_t t;
- t = (time_t) (ts->realtime / USEC_PER_SEC);
+ t = (time_t) (display_ts->realtime / USEC_PER_SEC);
switch (mode) {
case OUTPUT_SHORT_UNIX:
- xsprintf(buf, "%10"PRI_TIME".%06"PRIu64, t, ts->realtime % USEC_PER_SEC);
+ xsprintf(buf, "%10"PRI_TIME".%06"PRIu64, t, display_ts->realtime % USEC_PER_SEC);
break;
case OUTPUT_SHORT_ISO:
localtime_or_gmtime_r(&t, &tm, flags & OUTPUT_UTC)) <= 0)
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
"Failed to format ISO-precise time");
- xsprintf(usec, "%06"PRI_USEC, ts->realtime % USEC_PER_SEC);
+ xsprintf(usec, "%06"PRI_USEC, display_ts->realtime % USEC_PER_SEC);
memcpy(buf + 20, usec, 6);
break;
}
assert(sizeof(buf) > strlen(buf));
k = sizeof(buf) - strlen(buf);
- r = snprintf(buf + strlen(buf), k, ".%06"PRIu64, ts->realtime % USEC_PER_SEC);
+ r = snprintf(buf + strlen(buf), k, ".%06"PRIu64, display_ts->realtime % USEC_PER_SEC);
if (r <= 0 || (size_t) r >= k) /* too long? */
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
"Failed to format precise time");
OutputFlags flags,
const Set *output_fields,
const size_t highlight[2],
- const dual_timestamp *ts,
+ const dual_timestamp *display_ts,
const sd_id128_t *boot_id,
- const dual_timestamp *previous_ts,
+ const dual_timestamp *previous_display_ts,
const sd_id128_t *previous_boot_id) {
int r;
assert(f);
assert(j);
- assert(ts);
+ assert(display_ts);
assert(boot_id);
- assert(previous_ts);
+ assert(previous_display_ts);
assert(previous_boot_id);
/* Set the threshold to one bigger than the actual print threshold, so that if the line is actually
audit = streq_ptr(transport, "audit");
if (IN_SET(mode, OUTPUT_SHORT_MONOTONIC, OUTPUT_SHORT_DELTA))
- r = output_timestamp_monotonic(f, mode, ts, boot_id, previous_ts, previous_boot_id);
+ r = output_timestamp_monotonic(f, mode, display_ts, boot_id, previous_display_ts, previous_boot_id);
else
- r = output_timestamp_realtime(f, j, mode, flags, ts);
+ r = output_timestamp_realtime(f, j, mode, flags, display_ts);
if (r < 0)
return r;
n += r;
OutputFlags flags,
const Set *output_fields,
const size_t highlight[2],
- const dual_timestamp *ts,
+ const dual_timestamp *display_ts,
const sd_id128_t *boot_id,
- const dual_timestamp *previous_ts,
+ const dual_timestamp *previous_display_ts,
const sd_id128_t *previous_boot_id) {
const void *data;
assert(f);
assert(j);
- assert(ts);
+ assert(display_ts);
assert(boot_id);
- assert(previous_ts);
+ assert(previous_display_ts);
assert(previous_boot_id);
(void) sd_journal_set_data_threshold(j, 0);
- if (!VALID_REALTIME(ts->realtime))
+ if (!VALID_REALTIME(display_ts->realtime))
return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "No valid realtime timestamp available");
r = sd_journal_get_cursor(j, &cursor);
if (r < 0)
return log_error_errno(r, "Failed to get cursor: %m");
- timestamp = format_timestamp_style(buf, sizeof buf, ts->realtime,
+ timestamp = format_timestamp_style(buf, sizeof buf, display_ts->realtime,
flags & OUTPUT_UTC ? TIMESTAMP_US_UTC : TIMESTAMP_US);
fprintf(f, "%s%s%s %s[%s]%s\n",
timestamp && (flags & OUTPUT_COLOR) ? ANSI_UNDERLINE : "",
OutputFlags flags,
const Set *output_fields,
const size_t highlight[2],
- const dual_timestamp *ts,
+ const dual_timestamp *display_ts,
const sd_id128_t *boot_id,
- const dual_timestamp *previous_ts,
+ const dual_timestamp *previous_display_ts,
const sd_id128_t *previous_boot_id) {
+ sd_id128_t journal_boot_id, seqnum_id;
_cleanup_free_ char *cursor = NULL;
+ usec_t monotonic, realtime;
const void *data;
+ uint64_t seqnum;
size_t length;
- usec_t monotonic, realtime;
- sd_id128_t journal_boot_id;
int r;
assert(j);
- assert(ts);
+ assert(display_ts);
assert(boot_id);
- assert(previous_ts);
+ assert(previous_display_ts);
assert(previous_boot_id);
(void) sd_journal_set_data_threshold(j, 0);
if (r < 0)
return log_error_errno(r, "Failed to get monotonic timestamp: %m");
+ r = sd_journal_get_seqnum(j, &seqnum, &seqnum_id);
+ if (r < 0)
+ return log_error_errno(r, "Failed to get seqnum: %m");
+
fprintf(f,
"__CURSOR=%s\n"
- "__REALTIME_TIMESTAMP="USEC_FMT"\n"
- "__MONOTONIC_TIMESTAMP="USEC_FMT"\n"
+ "__REALTIME_TIMESTAMP=" USEC_FMT "\n"
+ "__MONOTONIC_TIMESTAMP=" USEC_FMT "\n"
+ "__SEQNUM=%" PRIu64 "\n"
+ "__SEQNUM_ID=%s\n"
"_BOOT_ID=%s\n",
cursor,
realtime,
monotonic,
+ seqnum,
+ SD_ID128_TO_STRING(seqnum_id),
SD_ID128_TO_STRING(journal_boot_id));
JOURNAL_FOREACH_DATA_RETVAL(j, data, length, r) {
OutputFlags flags,
const Set *output_fields,
const size_t highlight[2],
- const dual_timestamp *ts,
+ const dual_timestamp *display_ts,
const sd_id128_t *boot_id,
- const dual_timestamp *previous_ts,
+ const dual_timestamp *previous_display_ts,
const sd_id128_t *previous_boot_id) {
- char usecbuf[DECIMAL_STR_MAX(usec_t)];
+ char usecbuf[CONST_MAX(DECIMAL_STR_MAX(usec_t), DECIMAL_STR_MAX(uint64_t))];
_cleanup_(json_variant_unrefp) JsonVariant *object = NULL;
+ sd_id128_t journal_boot_id, seqnum_id;
_cleanup_free_ char *cursor = NULL;
+ usec_t realtime, monotonic;
JsonVariant **array = NULL;
struct json_data *d;
Hashmap *h = NULL;
+ uint64_t seqnum;
size_t n = 0;
- usec_t realtime, monotonic;
- sd_id128_t journal_boot_id;
int r;
assert(j);
- assert(ts);
+ assert(display_ts);
assert(boot_id);
- assert(previous_ts);
+ assert(previous_display_ts);
assert(previous_boot_id);
(void) sd_journal_set_data_threshold(j, flags & OUTPUT_SHOW_ALL ? 0 : JSON_THRESHOLD);
if (r < 0)
return log_error_errno(r, "Failed to get monotonic timestamp: %m");
+ r = sd_journal_get_seqnum(j, &seqnum, &seqnum_id);
+ if (r < 0)
+ return log_error_errno(r, "Failed to get seqnum: %m");
+
h = hashmap_new(&string_hash_ops);
if (!h)
return log_oom();
if (r < 0)
goto finish;
+ xsprintf(usecbuf, USEC_FMT, seqnum);
+ r = update_json_data(h, flags, "__SEQNUM", usecbuf, SIZE_MAX);
+ if (r < 0)
+ goto finish;
+
+ r = update_json_data(h, flags, "__SEQNUM_ID", SD_ID128_TO_STRING(seqnum_id), SIZE_MAX);
+ if (r < 0)
+ goto finish;
+
for (;;) {
const void *data;
size_t size;
OutputFlags flags,
const Set *output_fields,
const size_t highlight[2],
- const dual_timestamp *ts,
+ const dual_timestamp *display_ts,
const sd_id128_t *boot_id,
- const dual_timestamp *previous_ts,
+ const dual_timestamp *previous_display_ts,
const sd_id128_t *previous_boot_id) {
int r, prio = LOG_INFO;
assert(j);
assert(f);
- assert(ts);
+ assert(display_ts);
assert(boot_id);
- assert(previous_ts);
+ assert(previous_display_ts);
assert(previous_boot_id);
(void) sd_journal_set_data_threshold(j, 0);
return 0;
}
-static int get_dual_timestamp(sd_journal *j, dual_timestamp *ret_ts, sd_id128_t *ret_boot_id) {
+static int get_display_timestamp(
+ sd_journal *j,
+ dual_timestamp *ret_display_ts,
+ sd_id128_t *ret_boot_id) {
+
const void *data;
_cleanup_free_ char *realtime = NULL, *monotonic = NULL;
size_t length = 0, realtime_len = 0, monotonic_len = 0;
bool realtime_good = false, monotonic_good = false, boot_id_good = false;
assert(j);
- assert(ret_ts);
+ assert(ret_display_ts);
assert(ret_boot_id);
JOURNAL_FOREACH_DATA_RETVAL(j, data, length, r) {
return r;
if (realtime)
- realtime_good = safe_atou64(realtime, &ret_ts->realtime) >= 0;
- if (!realtime_good || !VALID_REALTIME(ret_ts->realtime))
- realtime_good = sd_journal_get_realtime_usec(j, &ret_ts->realtime) >= 0;
+ realtime_good = safe_atou64(realtime, &ret_display_ts->realtime) >= 0;
+ if (!realtime_good || !VALID_REALTIME(ret_display_ts->realtime))
+ realtime_good = sd_journal_get_realtime_usec(j, &ret_display_ts->realtime) >= 0;
if (!realtime_good)
- ret_ts->realtime = USEC_INFINITY;
+ ret_display_ts->realtime = USEC_INFINITY;
if (monotonic)
- monotonic_good = safe_atou64(monotonic, &ret_ts->monotonic) >= 0;
- if (!monotonic_good || !VALID_MONOTONIC(ret_ts->monotonic))
- monotonic_good = boot_id_good = sd_journal_get_monotonic_usec(j, &ret_ts->monotonic, ret_boot_id) >= 0;
+ monotonic_good = safe_atou64(monotonic, &ret_display_ts->monotonic) >= 0;
+ if (!monotonic_good || !VALID_MONOTONIC(ret_display_ts->monotonic))
+ monotonic_good = boot_id_good = sd_journal_get_monotonic_usec(j, &ret_display_ts->monotonic, ret_boot_id) >= 0;
if (!monotonic_good)
- ret_ts->monotonic = USEC_INFINITY;
+ ret_display_ts->monotonic = USEC_INFINITY;
if (!boot_id_good)
boot_id_good = sd_journal_get_monotonic_usec(j, NULL, ret_boot_id) >= 0;
return 0;
}
-static int (*output_funcs[_OUTPUT_MODE_MAX])(
+typedef int (*output_func_t)(
FILE *f,
sd_journal *j,
OutputMode mode,
OutputFlags flags,
const Set *output_fields,
const size_t highlight[2],
- const dual_timestamp *ts,
+ const dual_timestamp *display_ts,
const sd_id128_t *boot_id,
- const dual_timestamp *previous_ts,
- const sd_id128_t *previous_boot_id) = {
+ const dual_timestamp *previous_display_ts,
+ const sd_id128_t *previous_boot_id);
+
+static output_func_t output_funcs[_OUTPUT_MODE_MAX] = {
[OUTPUT_SHORT] = output_short,
[OUTPUT_SHORT_ISO] = output_short,
[OUTPUT_SHORT_ISO_PRECISE] = output_short,
Set *output_fields,
const size_t highlight[2],
bool *ellipsized,
- dual_timestamp *previous_ts,
+ dual_timestamp *previous_display_ts,
sd_id128_t *previous_boot_id) {
- dual_timestamp ts = DUAL_TIMESTAMP_NULL;
+ dual_timestamp display_ts = DUAL_TIMESTAMP_NULL;
sd_id128_t boot_id = SD_ID128_NULL;
int r;
assert(mode >= 0);
assert(mode < _OUTPUT_MODE_MAX);
- assert(previous_ts);
+ assert(previous_display_ts);
assert(previous_boot_id);
if (n_columns <= 0)
n_columns = columns();
- r = get_dual_timestamp(j, &ts, &boot_id);
+ r = get_display_timestamp(j, &display_ts, &boot_id);
if (r == -EBADMSG) {
log_debug_errno(r, "Skipping message we can't read: %m");
return 0;
if (r < 0)
return log_error_errno(r, "Failed to get journal fields: %m");
- r = output_funcs[mode](f, j, mode, n_columns, flags, output_fields, highlight, &ts, &boot_id, previous_ts, previous_boot_id);
+ r = output_funcs[mode](
+ f,
+ j,
+ mode,
+ n_columns,
+ flags,
+ output_fields,
+ highlight,
+ &display_ts,
+ &boot_id,
+ previous_display_ts,
+ previous_boot_id);
/* Store timestamp and boot ID for next iteration */
- *previous_ts = ts;
+ *previous_display_ts = display_ts;
*previous_boot_id = boot_id;
if (ellipsized && r > 0)
unsigned line = 0;
bool need_seek = false;
int warn_cutoff = flags & OUTPUT_WARN_CUTOFF;
- dual_timestamp previous_ts = DUAL_TIMESTAMP_NULL;
+ dual_timestamp previous_display_ts = DUAL_TIMESTAMP_NULL;
sd_id128_t previous_boot_id = SD_ID128_NULL;
assert(j);
line++;
maybe_print_begin_newline(f, &flags);
- r = show_journal_entry(f, j, mode, n_columns, flags, NULL, NULL, ellipsized,
- &previous_ts, &previous_boot_id);
+ r = show_journal_entry(
+ f,
+ j,
+ mode,
+ n_columns,
+ flags,
+ /* output_fields= */ NULL,
+ /* highlight= */ NULL,
+ ellipsized,
+ &previous_display_ts,
+ &previous_boot_id);
if (r < 0)
return r;
}
Set *output_fields,
const size_t highlight[2],
bool *ellipsized,
- dual_timestamp *previous_ts,
+ dual_timestamp *previous_display_ts,
sd_id128_t *previous_boot_id);
int show_journal(
FILE *f,
after_relabel = now(CLOCK_MONOTONIC);
- log_info("Relabelled /dev, /dev/shm, /run, /sys/fs/cgroup%s in %s.",
+ log_info("Relabeled /dev, /dev/shm, /run, /sys/fs/cgroup%s in %s.",
n_extra > 0 ? ", additional files" : "",
FORMAT_TIMESPAN(after_relabel - before_relabel, 0));
}
uint32_t pcr_mask,
char ***ret) {
+#if HAVE_OPENSSL
_cleanup_free_ TPMI_ALG_HASH *algs = NULL;
_cleanup_strv_free_ char **l = NULL;
int n_algs;
*ret = TAKE_PTR(l);
return 0;
+#else /* HAVE_OPENSSL */
+ return log_error_errno(SYNTHETIC_ERRNO(EOPNOTSUPP), "OpenSSL support is disabled.");
+#endif
}
static void hash_pin(const char *pin, size_t len, TPM2B_AUTH *auth) {
sym_Tss2_RC_Decode(rc));
return 0;
-#else
- return log_error_errno(SYNTHETIC_ERRNO(EOPNOTSUPP),
- "OpenSSL not supported on this build.");
+#else /* HAVE_OPENSSL */
+ return log_error_errno(SYNTHETIC_ERRNO(EOPNOTSUPP), "OpenSSL support is disabled.");
#endif
}
#endif
*/
static const uint8_t block_cnt[] = { 0, 0, 0, 1 };
+ assert (salt);
assert (saltlen > 0);
assert (saltlen <= (SIZE_MAX - sizeof(block_cnt)));
assert (passlen > 0);
} membership_data = {};
static const JsonDispatch dispatch_table[] = {
- { "userName", JSON_VARIANT_STRING, json_dispatch_const_string, offsetof(struct membership_data, user_name), JSON_SAFE },
- { "groupName", JSON_VARIANT_STRING, json_dispatch_const_string, offsetof(struct membership_data, group_name), JSON_SAFE },
+ { "userName", JSON_VARIANT_STRING, json_dispatch_user_group_name, offsetof(struct membership_data, user_name), JSON_RELAX },
+ { "groupName", JSON_VARIANT_STRING, json_dispatch_user_group_name, offsetof(struct membership_data, group_name), JSON_RELAX },
{}
};
#include "constants.h"
#include "env-util.h"
#include "log.h"
+#include "main-func.h"
#include "process-util.h"
#include "signal-util.h"
#include "special.h"
+#include "unit-def.h"
static int reload_manager(sd_bus *bus) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
return 0;
}
+static int default_target_is_inactive(sd_bus *bus) {
+ _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
+ _cleanup_free_ char *path = NULL, *state = NULL;
+ int r;
+
+ path = unit_dbus_path_from_name(SPECIAL_DEFAULT_TARGET);
+ if (!path)
+ return log_oom();
+
+ r = sd_bus_get_property_string(bus,
+ "org.freedesktop.systemd1",
+ path,
+ "org.freedesktop.systemd1.Unit",
+ "ActiveState",
+ &error,
+ &state);
+ if (r < 0)
+ return log_error_errno(r, "Failed to retrieve unit state: %s", bus_error_message(&error, r));
+
+ return streq_ptr(state, "inactive");
+}
+
static int start_default_target(sd_bus *bus) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
int r;
fflush(stdout);
}
-int main(int argc, char *argv[]) {
+static int run(int argc, char *argv[]) {
const char* sulogin_cmdline[] = {
SULOGIN,
NULL, /* --force */
NULL
};
- _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
int r;
log_setup();
/* allows passwordless logins if root account is locked. */
sulogin_cmdline[1] = "--force";
- (void) fork_wait(sulogin_cmdline);
+ for (;;) {
+ _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
- r = bus_connect_system_systemd(&bus);
- if (r < 0) {
- log_warning_errno(r, "Failed to get D-Bus connection: %m");
- r = 0;
- } else {
- (void) reload_manager(bus);
+ (void) fork_wait(sulogin_cmdline);
- r = start_default_target(bus);
+ r = bus_connect_system_systemd(&bus);
+ if (r < 0) {
+ log_warning_errno(r, "Failed to get D-Bus connection: %m");
+ goto fallback;
+ }
+
+ if (reload_manager(bus) < 0)
+ goto fallback;
+
+ r = default_target_is_inactive(bus);
+ if (r < 0)
+ goto fallback;
+ if (!r) {
+ log_warning(SPECIAL_DEFAULT_TARGET" is not inactive. Please review the "SPECIAL_DEFAULT_TARGET" setting.\n");
+ goto fallback;
+ }
+
+ if (start_default_target(bus) >= 0)
+ break;
+
+ fallback:
+ log_warning("Fallback to the single-user shell.\n");
}
- return r >= 0 ? EXIT_SUCCESS : EXIT_FAILURE;
+ return 0;
}
+
+DEFINE_MAIN_FUNCTION(run);
int verb_kill(int argc, char *argv[], void *userdata) {
_cleanup_strv_free_ char **names = NULL;
- char *kill_whom = NULL;
+ const char *kill_whom;
sd_bus *bus;
int r, q;
polkit_agent_open_maybe();
- if (!arg_kill_whom)
- arg_kill_whom = "all";
+ kill_whom = arg_kill_whom ?: "all";
/* --fail was specified */
if (streq(arg_job_mode(), "fail"))
- kill_whom = strjoina(arg_kill_whom, "-fail");
+ kill_whom = strjoina(kill_whom, "-fail");
r = expand_unit_names(bus, strv_skip(argv, 1), NULL, &names, NULL);
if (r < 0)
STRV_FOREACH(name, names) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
- q = bus_call_method(
- bus,
- bus_systemd_mgr,
- "KillUnit",
- &error,
- NULL,
- "ssi", *name, kill_whom ?: arg_kill_whom, arg_signal);
+ if (arg_kill_value_set)
+ q = bus_call_method(
+ bus,
+ bus_systemd_mgr,
+ "QueueSignalUnit",
+ &error,
+ NULL,
+ "ssii", *name, kill_whom, arg_signal, arg_kill_value);
+ else
+ q = bus_call_method(
+ bus,
+ bus_systemd_mgr,
+ "KillUnit",
+ &error,
+ NULL,
+ "ssi", *name, kill_whom, arg_signal);
if (q < 0) {
log_error_errno(q, "Failed to kill unit %s: %s", *name, bus_error_message(&error, q));
if (r == 0)
uint64_t memory_current;
uint64_t memory_min;
uint64_t memory_low;
+ uint64_t startup_memory_low;
uint64_t memory_high;
+ uint64_t startup_memory_high;
uint64_t memory_max;
+ uint64_t startup_memory_max;
uint64_t memory_swap_max;
+ uint64_t startup_memory_swap_max;
uint64_t memory_zswap_max;
+ uint64_t startup_memory_zswap_max;
uint64_t memory_limit;
uint64_t memory_available;
uint64_t cpu_usage_nsec;
uint64_t default_memory_min;
uint64_t default_memory_low;
+ uint64_t default_startup_memory_low;
LIST_HEAD(ExecStatusInfo, exec_status_info_list);
} UnitStatusInfo;
if (i->memory_current != UINT64_MAX) {
printf(" Memory: %s", FORMAT_BYTES(i->memory_current));
- if (i->memory_min > 0 || i->memory_low > 0 ||
- i->memory_high != CGROUP_LIMIT_MAX || i->memory_max != CGROUP_LIMIT_MAX ||
- i->memory_swap_max != CGROUP_LIMIT_MAX ||
- i->memory_zswap_max != CGROUP_LIMIT_MAX ||
+ if (i->memory_min > 0 ||
+ i->memory_low > 0 || i->startup_memory_low > 0 ||
+ i->memory_high != CGROUP_LIMIT_MAX || i->startup_memory_high != CGROUP_LIMIT_MAX ||
+ i->memory_max != CGROUP_LIMIT_MAX || i->startup_memory_max != CGROUP_LIMIT_MAX ||
+ i->memory_swap_max != CGROUP_LIMIT_MAX || i->startup_memory_swap_max != CGROUP_LIMIT_MAX ||
+ i->memory_zswap_max != CGROUP_LIMIT_MAX || i->startup_memory_zswap_max != CGROUP_LIMIT_MAX ||
i->memory_available != CGROUP_LIMIT_MAX ||
i->memory_limit != CGROUP_LIMIT_MAX) {
const char *prefix = "";
printf("%slow: %s", prefix, FORMAT_BYTES_CGROUP_PROTECTION(i->memory_low));
prefix = " ";
}
+ if (i->startup_memory_low > 0) {
+ printf("%slow (startup): %s", prefix, FORMAT_BYTES_CGROUP_PROTECTION(i->startup_memory_low));
+ prefix = " ";
+ }
if (i->memory_high != CGROUP_LIMIT_MAX) {
printf("%shigh: %s", prefix, FORMAT_BYTES(i->memory_high));
prefix = " ";
}
+ if (i->startup_memory_high != CGROUP_LIMIT_MAX) {
+ printf("%shigh (startup): %s", prefix, FORMAT_BYTES(i->startup_memory_high));
+ prefix = " ";
+ }
if (i->memory_max != CGROUP_LIMIT_MAX) {
printf("%smax: %s", prefix, FORMAT_BYTES(i->memory_max));
prefix = " ";
}
+ if (i->startup_memory_max != CGROUP_LIMIT_MAX) {
+ printf("%smax (startup): %s", prefix, FORMAT_BYTES(i->startup_memory_max));
+ prefix = " ";
+ }
if (i->memory_swap_max != CGROUP_LIMIT_MAX) {
printf("%sswap max: %s", prefix, FORMAT_BYTES(i->memory_swap_max));
prefix = " ";
}
+ if (i->startup_memory_swap_max != CGROUP_LIMIT_MAX) {
+ printf("%sswap max (startup): %s", prefix, FORMAT_BYTES(i->startup_memory_swap_max));
+ prefix = " ";
+ }
if (i->memory_zswap_max != CGROUP_LIMIT_MAX) {
printf("%szswap max: %s", prefix, FORMAT_BYTES(i->memory_zswap_max));
prefix = " ";
}
+ if (i->startup_memory_zswap_max != CGROUP_LIMIT_MAX) {
+ printf("%szswap max (startup): %s", prefix, FORMAT_BYTES(i->startup_memory_zswap_max));
+ prefix = " ";
+ }
if (i->memory_limit != CGROUP_LIMIT_MAX) {
printf("%slimit: %s", prefix, FORMAT_BYTES(i->memory_limit));
prefix = " ";
{ "MemoryAvailable", "t", NULL, offsetof(UnitStatusInfo, memory_available) },
{ "DefaultMemoryMin", "t", NULL, offsetof(UnitStatusInfo, default_memory_min) },
{ "DefaultMemoryLow", "t", NULL, offsetof(UnitStatusInfo, default_memory_low) },
+ { "DefaultStartupMemoryLow", "t", NULL, offsetof(UnitStatusInfo, default_startup_memory_low) },
{ "MemoryMin", "t", NULL, offsetof(UnitStatusInfo, memory_min) },
{ "MemoryLow", "t", NULL, offsetof(UnitStatusInfo, memory_low) },
+ { "StartupMemoryLow", "t", NULL, offsetof(UnitStatusInfo, startup_memory_low) },
{ "MemoryHigh", "t", NULL, offsetof(UnitStatusInfo, memory_high) },
+ { "StartupMemoryHigh", "t", NULL, offsetof(UnitStatusInfo, startup_memory_high) },
{ "MemoryMax", "t", NULL, offsetof(UnitStatusInfo, memory_max) },
+ { "StartupMemoryMax", "t", NULL, offsetof(UnitStatusInfo, startup_memory_max) },
{ "MemorySwapMax", "t", NULL, offsetof(UnitStatusInfo, memory_swap_max) },
+ { "StartupMemorySwapMax", "t", NULL, offsetof(UnitStatusInfo, startup_memory_swap_max) },
{ "MemoryZSwapMax", "t", NULL, offsetof(UnitStatusInfo, memory_zswap_max) },
+ { "StartupMemoryZSwapMax", "t", NULL, offsetof(UnitStatusInfo, startup_memory_zswap_max) },
{ "MemoryLimit", "t", NULL, offsetof(UnitStatusInfo, memory_limit) },
{ "CPUUsageNSec", "t", NULL, offsetof(UnitStatusInfo, cpu_usage_nsec) },
{ "TasksCurrent", "t", NULL, offsetof(UnitStatusInfo, tasks_current) },
char **arg_wall = NULL;
const char *arg_kill_whom = NULL;
int arg_signal = SIGTERM;
+int arg_kill_value;
+bool arg_kill_value_set = false;
char *arg_root = NULL;
char *arg_image = NULL;
usec_t arg_when = 0;
" sleeping, or hibernating\n"
" -i Shortcut for --check-inhibitors=no\n"
" --kill-whom=WHOM Whom to send signal to\n"
+ " --kill-value=INT Signal value to enqueue\n"
" -s --signal=SIGNAL Which signal to send\n"
" --what=RESOURCES Which types of resources to remove\n"
" --now Start or stop unit after enabling or disabling it\n"
ARG_IMAGE,
ARG_NO_RELOAD,
ARG_KILL_WHOM,
+ ARG_KILL_VALUE,
ARG_NO_ASK_PASSWORD,
ARG_FAILED,
ARG_RUNTIME,
{ "force", no_argument, NULL, 'f' },
{ "no-reload", no_argument, NULL, ARG_NO_RELOAD },
{ "kill-whom", required_argument, NULL, ARG_KILL_WHOM },
+ { "kill-value", required_argument, NULL, ARG_KILL_VALUE },
{ "signal", required_argument, NULL, 's' },
{ "no-ask-password", no_argument, NULL, ARG_NO_ASK_PASSWORD },
{ "host", required_argument, NULL, 'H' },
arg_kill_whom = optarg;
break;
+ case ARG_KILL_VALUE: {
+ unsigned u;
+
+ if (isempty(optarg)) {
+ arg_kill_value_set = false;
+ return 0;
+ }
+
+ /* First, try to parse unsigned, so that we can support the prefixes 0x, 0o, 0b */
+ r = safe_atou_full(optarg, 0, &u);
+ if (r < 0)
+ /* If this didn't work, try as signed integer, without those prefixes */
+ r = safe_atoi(optarg, &arg_kill_value);
+ else if (u > INT_MAX)
+ r = -ERANGE;
+ else
+ arg_kill_value = (int) u;
+ if (r < 0)
+ return log_error_errno(r, "Unable to parse signal queue value: %s", optarg);
+
+ arg_kill_value_set = true;
+ break;
+ }
+
case 's':
r = parse_signal_argument(optarg, &arg_signal);
if (r <= 0)
extern char **arg_wall;
extern const char *arg_kill_whom;
extern int arg_signal;
+extern int arg_kill_value;
+extern bool arg_kill_value_set;
extern char *arg_root;
extern usec_t arg_when;
extern const char *arg_reboot_argument;
int sd_journal_get_realtime_usec(sd_journal *j, uint64_t *ret);
int sd_journal_get_monotonic_usec(sd_journal *j, uint64_t *ret, sd_id128_t *ret_boot_id);
+int sd_journal_get_seqnum(sd_journal *j, uint64_t *ret_seqnum, sd_id128_t *ret_seqnum_id);
int sd_journal_set_data_threshold(sd_journal *j, size_t sz);
int sd_journal_get_data_threshold(sd_journal *j, size_t *sz);
r = acpi_get_boot_usec(&loader_start, &loader_exit);
if (r < 0) {
- bool ok = IN_SET(r, -ENOENT, -ENODATA) || ERRNO_IS_PRIVILEGE(r);
+ bool ok = IN_SET(r, -ENOENT, -ENODATA, -ERANGE) || ERRNO_IS_PRIVILEGE(r);
log_full_errno(ok ? LOG_DEBUG : LOG_ERR, r, "Failed to read ACPI FPDT: %m");
return ok ? 0 : r;
check_p_g_u("/user.slice/user-1000.slice/user@.service/server.service", -ENXIO, NULL);
}
+static void check_p_g_u_p(const char *path, int code, const char *result) {
+ _cleanup_free_ char *unit_path = NULL;
+ int r;
+
+ r = cg_path_get_unit_path(path, &unit_path);
+ printf("%s: %s → %s %d expected %s %d\n", __func__, path, unit_path, r, strnull(result), code);
+ assert_se(r == code);
+ assert_se(streq_ptr(unit_path, result));
+}
+
+TEST(path_get_unit_path) {
+ check_p_g_u_p("/system.slice/foobar.service/sdfdsaf", 0, "/system.slice/foobar.service");
+ check_p_g_u_p("/system.slice/getty@tty5.service", 0, "/system.slice/getty@tty5.service");
+ check_p_g_u_p("/system.slice/getty@tty5.service/aaa/bbb", 0, "/system.slice/getty@tty5.service");
+ check_p_g_u_p("/system.slice/getty@tty5.service/", 0, "/system.slice/getty@tty5.service");
+ check_p_g_u_p("/system.slice/getty@tty6.service/tty5", 0, "/system.slice/getty@tty6.service");
+ check_p_g_u_p("sadfdsafsda", -ENXIO, NULL);
+ check_p_g_u_p("/system.slice/getty####@tty6.service/xxx", -ENXIO, NULL);
+ check_p_g_u_p("/system.slice/system-waldo.slice/foobar.service/sdfdsaf", 0, "/system.slice/system-waldo.slice/foobar.service");
+ check_p_g_u_p("/system.slice/system-waldo.slice/_cpu.service/sdfdsaf", 0, "/system.slice/system-waldo.slice/_cpu.service");
+ check_p_g_u_p("/system.slice/system-waldo.slice/_cpu.service", 0, "/system.slice/system-waldo.slice/_cpu.service");
+ check_p_g_u_p("/user.slice/user-1000.slice/user@1000.service/server.service", 0, "/user.slice/user-1000.slice/user@1000.service");
+ check_p_g_u_p("/user.slice/user-1000.slice/user@.service/server.service", -ENXIO, NULL);
+ check_p_g_u_p("/user.slice/_user-1000.slice/user@1000.service/foobar.slice/foobar@pie.service", 0, "/user.slice/_user-1000.slice/user@1000.service");
+ check_p_g_u_p("/_session-2.scope/_foobar@pie.service/pa/po", 0, "/_session-2.scope");
+}
+
static void check_p_g_u_u(const char *path, int code, const char *result) {
_cleanup_free_ char *unit = NULL;
int r;
if (i >= full_fit)
assert_se(streq(t, escaped));
else if (i >= 3) {
- /* We need up to four columns, so up to three three columns may be wasted */
+ /* We need up to four columns, so up to three columns may be wasted */
assert_se(strlen(t) == i || strlen(t) == i - 1 || strlen(t) == i - 2 || strlen(t) == i - 3);
assert_se(strneq(t, escaped, i - 3) || strneq(t, escaped, i - 4) ||
strneq(t, escaped, i - 5) || strneq(t, escaped, i - 6));
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdio.h>
+#include <sys/mount.h>
#include <sys/prctl.h>
#include <sys/types.h>
#include "manager.h"
#include "missing_prctl.h"
#include "mkdir.h"
+#include "mount-util.h"
#include "path-util.h"
#include "process-util.h"
#include "rm-rf.h"
#include "user-util.h"
#include "virt.h"
+#define PRIVATE_UNIT_DIR "/run/test-execute-unit-dir"
+
static char *user_runtime_unit_dir = NULL;
static bool can_unshare;
n = now(CLOCK_MONOTONIC);
if (ts + timeout < n) {
log_error("Test timeout when testing %s", unit->id);
- r = unit_kill(unit, KILL_ALL, SIGKILL, NULL);
+ r = unit_kill(unit, KILL_ALL, SIGKILL, SI_USER, 0, NULL);
if (r < 0)
log_error_errno(r, "Failed to kill %s: %m", unit->id);
exit(EXIT_FAILURE);
test(m, "exec-cpuaffinity3.service", 0, CLD_EXITED);
}
+static void test_exec_credentials(Manager *m) {
+ test(m, "exec-set-credential.service", 0, CLD_EXITED);
+ test(m, "exec-load-credential.service", MANAGER_IS_SYSTEM(m) ? 0 : EXIT_CREDENTIALS, CLD_EXITED);
+ test(m, "exec-credentials-dir-specifier.service", MANAGER_IS_SYSTEM(m) ? 0 : EXIT_CREDENTIALS, CLD_EXITED);
+}
+
static void test_exec_workingdirectory(Manager *m) {
assert_se(mkdir_p("/tmp/test-exec_workingdirectory", 0755) >= 0);
test(m, "exec-privatedevices-yes.service", can_unshare ? 0 : EXIT_FAILURE, CLD_EXITED);
test(m, "exec-privatedevices-no.service", 0, CLD_EXITED);
test(m, "exec-privatedevices-disabled-by-prefix.service", can_unshare ? 0 : EXIT_FAILURE, CLD_EXITED);
- test(m, "exec-privatedevices-yes-with-group.service", can_unshare ? 0 : EXIT_FAILURE, CLD_EXITED);
+ test(m, "exec-privatedevices-yes-with-group.service", can_unshare ? 0 : MANAGER_IS_SYSTEM(m) ? EXIT_FAILURE : EXIT_GROUP, CLD_EXITED);
/* We use capsh to test if the capabilities are
* properly set, so be sure that it exists */
}
test(m, "exec-privatedevices-yes-capability-mknod.service", 0, CLD_EXITED);
- test(m, "exec-privatedevices-no-capability-mknod.service", 0, CLD_EXITED);
+ test(m, "exec-privatedevices-no-capability-mknod.service", MANAGER_IS_SYSTEM(m) ? 0 : EXIT_FAILURE, CLD_EXITED);
test(m, "exec-privatedevices-yes-capability-sys-rawio.service", 0, CLD_EXITED);
- test(m, "exec-privatedevices-no-capability-sys-rawio.service", 0, CLD_EXITED);
+ test(m, "exec-privatedevices-no-capability-sys-rawio.service", MANAGER_IS_SYSTEM(m) ? 0 : EXIT_FAILURE, CLD_EXITED);
}
static void test_exec_protecthome(Manager *m) {
return;
}
- test(m, "exec-protectkernelmodules-no-capabilities.service", 0, CLD_EXITED);
+ test(m, "exec-protectkernelmodules-no-capabilities.service", MANAGER_IS_SYSTEM(m) ? 0 : EXIT_FAILURE, CLD_EXITED);
test(m, "exec-protectkernelmodules-yes-capabilities.service", 0, CLD_EXITED);
test(m, "exec-protectkernelmodules-yes-mount-propagation.service", can_unshare ? 0 : EXIT_FAILURE, CLD_EXITED);
}
return;
}
- test(m, "exec-systemcallfilter-system-user.service", 0, CLD_EXITED);
+ test(m, "exec-systemcallfilter-system-user.service", MANAGER_IS_SYSTEM(m) ? 0 : EXIT_GROUP, CLD_EXITED);
if (!check_nobody_user_and_group()) {
log_notice("nobody user/group is not synthesized or may conflict to other entries, skipping remaining tests in %s", __func__);
return;
}
- test(m, "exec-systemcallfilter-system-user-" NOBODY_USER_NAME ".service", 0, CLD_EXITED);
+ test(m, "exec-systemcallfilter-system-user-" NOBODY_USER_NAME ".service", MANAGER_IS_SYSTEM(m) ? 0 : EXIT_GROUP, CLD_EXITED);
#endif
}
static void test_exec_user(Manager *m) {
- test(m, "exec-user.service", 0, CLD_EXITED);
+ test(m, "exec-user.service", MANAGER_IS_SYSTEM(m) ? 0 : EXIT_GROUP, CLD_EXITED);
if (!check_nobody_user_and_group()) {
log_notice("nobody user/group is not synthesized or may conflict to other entries, skipping remaining tests in %s", __func__);
return;
}
- test(m, "exec-user-" NOBODY_USER_NAME ".service", 0, CLD_EXITED);
+ test(m, "exec-user-" NOBODY_USER_NAME ".service", MANAGER_IS_SYSTEM(m) ? 0 : EXIT_GROUP, CLD_EXITED);
}
static void test_exec_group(Manager *m) {
- test(m, "exec-group.service", 0, CLD_EXITED);
+ test(m, "exec-group.service", MANAGER_IS_SYSTEM(m) ? 0 : EXIT_GROUP, CLD_EXITED);
if (!check_nobody_user_and_group()) {
log_notice("nobody user/group is not synthesized or may conflict to other entries, skipping remaining tests in %s", __func__);
return;
}
- test(m, "exec-group-" NOBODY_GROUP_NAME ".service", 0, CLD_EXITED);
+ test(m, "exec-group-" NOBODY_GROUP_NAME ".service", MANAGER_IS_SYSTEM(m) ? 0 : EXIT_GROUP, CLD_EXITED);
}
static void test_exec_supplementarygroups(Manager *m) {
- test(m, "exec-supplementarygroups.service", 0, CLD_EXITED);
- test(m, "exec-supplementarygroups-single-group.service", 0, CLD_EXITED);
- test(m, "exec-supplementarygroups-single-group-user.service", 0, CLD_EXITED);
- test(m, "exec-supplementarygroups-multiple-groups-default-group-user.service", 0, CLD_EXITED);
- test(m, "exec-supplementarygroups-multiple-groups-withgid.service", 0, CLD_EXITED);
- test(m, "exec-supplementarygroups-multiple-groups-withuid.service", 0, CLD_EXITED);
+ int status = MANAGER_IS_SYSTEM(m) ? 0 : EXIT_GROUP;
+ test(m, "exec-supplementarygroups.service", status, CLD_EXITED);
+ test(m, "exec-supplementarygroups-single-group.service", status, CLD_EXITED);
+ test(m, "exec-supplementarygroups-single-group-user.service", status, CLD_EXITED);
+ test(m, "exec-supplementarygroups-multiple-groups-default-group-user.service", status, CLD_EXITED);
+ test(m, "exec-supplementarygroups-multiple-groups-withgid.service", status, CLD_EXITED);
+ test(m, "exec-supplementarygroups-multiple-groups-withuid.service", status, CLD_EXITED);
}
static char* private_directory_bad(Manager *m) {
return;
}
- test(m, "exec-dynamicuser-fixeduser.service", can_unshare ? 0 : EXIT_NAMESPACE, CLD_EXITED);
+ int status = can_unshare ? 0 : MANAGER_IS_SYSTEM(m) ? EXIT_NAMESPACE : EXIT_GROUP;
+
+ test(m, "exec-dynamicuser-fixeduser.service", status, CLD_EXITED);
if (check_user_has_group_with_same_name("adm"))
- test(m, "exec-dynamicuser-fixeduser-adm.service", can_unshare ? 0 : EXIT_NAMESPACE, CLD_EXITED);
+ test(m, "exec-dynamicuser-fixeduser-adm.service", status, CLD_EXITED);
if (check_user_has_group_with_same_name("games"))
- test(m, "exec-dynamicuser-fixeduser-games.service", can_unshare ? 0 : EXIT_NAMESPACE, CLD_EXITED);
- test(m, "exec-dynamicuser-fixeduser-one-supplementarygroup.service", can_unshare ? 0 : EXIT_NAMESPACE, CLD_EXITED);
- test(m, "exec-dynamicuser-supplementarygroups.service", can_unshare ? 0 : EXIT_NAMESPACE, CLD_EXITED);
- test(m, "exec-dynamicuser-statedir.service", can_unshare ? 0 : EXIT_NAMESPACE, CLD_EXITED);
+ test(m, "exec-dynamicuser-fixeduser-games.service", status, CLD_EXITED);
+ test(m, "exec-dynamicuser-fixeduser-one-supplementarygroup.service", status, CLD_EXITED);
+ test(m, "exec-dynamicuser-supplementarygroups.service", status, CLD_EXITED);
+ test(m, "exec-dynamicuser-statedir.service", status, CLD_EXITED);
(void) rm_rf("/var/lib/quux", REMOVE_ROOT|REMOVE_PHYSICAL);
(void) rm_rf("/var/lib/test-dynamicuser-migrate", REMOVE_ROOT|REMOVE_PHYSICAL);
(void) rm_rf("/var/lib/private/waldo", REMOVE_ROOT|REMOVE_PHYSICAL);
test(m, "exec-dynamicuser-statedir-migrate-step1.service", 0, CLD_EXITED);
- test(m, "exec-dynamicuser-statedir-migrate-step2.service", can_unshare ? 0 : EXIT_NAMESPACE, CLD_EXITED);
+ test(m, "exec-dynamicuser-statedir-migrate-step2.service", status, CLD_EXITED);
test(m, "exec-dynamicuser-statedir-migrate-step1.service", 0, CLD_EXITED);
(void) rm_rf("/var/lib/test-dynamicuser-migrate", REMOVE_ROOT|REMOVE_PHYSICAL);
(void) rm_rf("/var/lib/private/test-dynamicuser-migrate", REMOVE_ROOT|REMOVE_PHYSICAL);
(void) rm_rf("/var/lib/private/test-dynamicuser-migrate2", REMOVE_ROOT|REMOVE_PHYSICAL);
- test(m, "exec-dynamicuser-runtimedirectory1.service", can_unshare ? 0 : EXIT_NAMESPACE, CLD_EXITED);
- test(m, "exec-dynamicuser-runtimedirectory2.service", can_unshare ? 0 : EXIT_NAMESPACE, CLD_EXITED);
- test(m, "exec-dynamicuser-runtimedirectory3.service", can_unshare ? 0 : EXIT_NAMESPACE, CLD_EXITED);
+ test(m, "exec-dynamicuser-runtimedirectory1.service", status, CLD_EXITED);
+ test(m, "exec-dynamicuser-runtimedirectory2.service", status, CLD_EXITED);
+ test(m, "exec-dynamicuser-runtimedirectory3.service", status, CLD_EXITED);
}
static void test_exec_environment(Manager *m) {
}
static void test_exec_runtimedirectory(Manager *m) {
+ (void) rm_rf("/run/test-exec_runtimedirectory2", REMOVE_ROOT|REMOVE_PHYSICAL);
test(m, "exec-runtimedirectory.service", 0, CLD_EXITED);
+ (void) rm_rf("/run/test-exec_runtimedirectory2", REMOVE_ROOT|REMOVE_PHYSICAL);
+
test(m, "exec-runtimedirectory-mode.service", 0, CLD_EXITED);
- test(m, "exec-runtimedirectory-owner.service", 0, CLD_EXITED);
+ test(m, "exec-runtimedirectory-owner.service", MANAGER_IS_SYSTEM(m) ? 0 : EXIT_GROUP, CLD_EXITED);
if (!check_nobody_user_and_group()) {
log_notice("nobody user/group is not synthesized or may conflict to other entries, skipping remaining tests in %s", __func__);
return;
}
- test(m, "exec-runtimedirectory-owner-" NOBODY_GROUP_NAME ".service", 0, CLD_EXITED);
+ test(m, "exec-runtimedirectory-owner-" NOBODY_GROUP_NAME ".service", MANAGER_IS_SYSTEM(m) ? 0 : EXIT_GROUP, CLD_EXITED);
}
static void test_exec_capabilityboundingset(Manager *m) {
return;
}
- test(m, "exec-privatenetwork-yes.service", can_unshare ? 0 : EXIT_NETWORK, CLD_EXITED);
+ test(m, "exec-privatenetwork-yes.service", can_unshare ? 0 : MANAGER_IS_SYSTEM(m) ? EXIT_NETWORK : EXIT_FAILURE, CLD_EXITED);
}
static void test_exec_oomscoreadjust(Manager *m) {
log_notice("Testing in container, skipping remaining tests in %s", __func__);
return;
}
- test(m, "exec-oomscoreadjust-negative.service", 0, CLD_EXITED);
+ test(m, "exec-oomscoreadjust-negative.service", MANAGER_IS_SYSTEM(m) ? 0 : EXIT_FAILURE, CLD_EXITED);
}
static void test_exec_ioschedulingclass(Manager *m) {
log_notice("Testing in container, skipping remaining tests in %s", __func__);
return;
}
- test(m, "exec-ioschedulingclass-realtime.service", 0, CLD_EXITED);
+ test(m, "exec-ioschedulingclass-realtime.service", MANAGER_IS_SYSTEM(m) ? 0 : EXIT_IOPRIO, CLD_EXITED);
}
static void test_exec_unsetenvironment(Manager *m) {
static void test_exec_specifier(Manager *m) {
test(m, "exec-specifier.service", 0, CLD_EXITED);
+ if (MANAGER_IS_SYSTEM(m))
+ test(m, "exec-specifier-system.service", 0, CLD_EXITED);
+ else
+ test(m, "exec-specifier-user.service", 0, CLD_EXITED);
test(m, "exec-specifier@foo-bar.service", 0, CLD_EXITED);
test(m, "exec-specifier-interpolation.service", 0, CLD_EXITED);
- test(m, "exec-specifier-credentials-dir.service", 0, CLD_EXITED);
}
static void test_exec_standardinput(Manager *m) {
log_notice("Testing without inaccessible, skipping %s", __func__);
return;
}
- test(m, "exec-umask-namespace.service", can_unshare ? 0 : EXIT_NAMESPACE, CLD_EXITED);
+ test(m, "exec-umask-namespace.service", can_unshare ? 0 : MANAGER_IS_SYSTEM(m) ? EXIT_NAMESPACE : EXIT_GROUP, CLD_EXITED);
}
typedef struct test_entry {
#define entry(x) {x, #x}
-static int run_tests(LookupScope scope, const test_entry tests[], char **patterns) {
+static void run_tests(LookupScope scope, char **patterns) {
+ _cleanup_(rm_rf_physical_and_freep) char *runtime_dir = NULL;
+ _cleanup_free_ char *unit_paths = NULL;
_cleanup_(manager_freep) Manager *m = NULL;
int r;
- assert_se(tests);
-
- r = manager_new(scope, MANAGER_TEST_RUN_BASIC, &m);
- m->default_std_output = EXEC_OUTPUT_NULL; /* don't rely on host journald */
- if (manager_errno_skip_test(r))
- return log_tests_skipped_errno(r, "manager_new");
- assert_se(r >= 0);
- assert_se(manager_startup(m, NULL, NULL, NULL) >= 0);
-
- for (const test_entry *test = tests; test->f; test++)
- if (strv_fnmatch_or_empty(patterns, test->name, FNM_NOESCAPE))
- test->f(m);
- else
- log_info("Skipping %s because it does not match any pattern.", test->name);
-
- return 0;
-}
-
-int main(int argc, char *argv[]) {
- _cleanup_(rm_rf_physical_and_freep) char *runtime_dir = NULL;
-
- static const test_entry user_tests[] = {
+ static const test_entry tests[] = {
entry(test_exec_basic),
entry(test_exec_ambientcapabilities),
entry(test_exec_bindpaths),
entry(test_exec_capabilityboundingset),
entry(test_exec_condition),
entry(test_exec_cpuaffinity),
+ entry(test_exec_credentials),
+ entry(test_exec_dynamicuser),
entry(test_exec_environment),
entry(test_exec_environmentfile),
+ entry(test_exec_execsearchpath),
+ entry(test_exec_execsearchpath_environment),
+ entry(test_exec_execsearchpath_environment_files),
+ entry(test_exec_execsearchpath_passenvironment),
+ entry(test_exec_execsearchpath_specifier),
entry(test_exec_group),
entry(test_exec_ignoresigpipe),
entry(test_exec_inaccessiblepaths),
entry(test_exec_readwritepaths),
entry(test_exec_restrictnamespaces),
entry(test_exec_runtimedirectory),
+ entry(test_exec_specifier),
entry(test_exec_standardinput),
entry(test_exec_standardoutput),
entry(test_exec_standardoutput_append),
entry(test_exec_supplementarygroups),
entry(test_exec_systemcallerrornumber),
entry(test_exec_systemcallfilter),
+ entry(test_exec_systemcallfilter_system),
entry(test_exec_temporaryfilesystem),
entry(test_exec_umask),
+ entry(test_exec_umask_namespace),
entry(test_exec_unsetenvironment),
entry(test_exec_user),
entry(test_exec_workingdirectory),
- entry(test_exec_execsearchpath),
- entry(test_exec_execsearchpath_environment),
- entry(test_exec_execsearchpath_environment_files),
- entry(test_exec_execsearchpath_passenvironment),
- {},
- };
- static const test_entry system_tests[] = {
- entry(test_exec_dynamicuser),
- entry(test_exec_specifier),
- entry(test_exec_execsearchpath_specifier),
- entry(test_exec_systemcallfilter_system),
- entry(test_exec_umask_namespace),
{},
};
- int r;
-
- test_setup_logging(LOG_DEBUG);
-
-#if HAS_FEATURE_ADDRESS_SANITIZER
- if (strstr_ptr(ci_environment(), "travis") || strstr_ptr(ci_environment(), "github-actions")) {
- log_notice("Running on Travis CI/GH Actions under ASan, skipping, see https://github.com/systemd/systemd/issues/10696");
- return EXIT_TEST_SKIP;
- }
-#endif
assert_se(unsetenv("USER") == 0);
assert_se(unsetenv("LOGNAME") == 0);
assert_se(unsetenv("HOME") == 0);
assert_se(unsetenv("TMPDIR") == 0);
- can_unshare = have_namespaces();
-
- /* It is needed otherwise cgroup creation fails */
- if (geteuid() != 0 || have_effective_cap(CAP_SYS_ADMIN) <= 0)
- return log_tests_skipped("not privileged");
-
- r = enter_cgroup_subroot(NULL);
- if (r == -ENOMEDIUM)
- return log_tests_skipped("cgroupfs not available");
-
- if (path_is_read_only_fs("/sys") > 0)
- return log_tests_skipped("/sys is mounted read-only");
+ /* Unset VARx, especially, VAR1, VAR2 and VAR3, which are used in the PassEnvironment test cases,
+ * otherwise (and if they are present in the environment), `manager_default_environment` will copy
+ * them into the default environment which is passed to each created job, which will make the tests
+ * that expect those not to be present to fail. */
+ assert_se(unsetenv("VAR1") == 0);
+ assert_se(unsetenv("VAR2") == 0);
+ assert_se(unsetenv("VAR3") == 0);
+ assert_se(unsetenv("VAR4") == 0);
+ assert_se(unsetenv("VAR5") == 0);
- _cleanup_free_ char *unit_dir = NULL, *unit_paths = NULL;
- assert_se(get_testdata_dir("test-execute/", &unit_dir) >= 0);
assert_se(runtime_dir = setup_fake_runtime_dir());
assert_se(user_runtime_unit_dir = path_join(runtime_dir, "systemd/user"));
- assert_se(unit_paths = strjoin(unit_dir, ":", user_runtime_unit_dir));
+ assert_se(unit_paths = strjoin(PRIVATE_UNIT_DIR, ":", user_runtime_unit_dir));
assert_se(set_unit_path(unit_paths) >= 0);
- /* Unset VAR1, VAR2 and VAR3 which are used in the PassEnvironment test
- * cases, otherwise (and if they are present in the environment),
- * `manager_default_environment` will copy them into the default
- * environment which is passed to each created job, which will make the
- * tests that expect those not to be present to fail.
- */
- assert_se(unsetenv("VAR1") == 0);
- assert_se(unsetenv("VAR2") == 0);
- assert_se(unsetenv("VAR3") == 0);
+ r = manager_new(scope, MANAGER_TEST_RUN_BASIC, &m);
+ if (manager_errno_skip_test(r))
+ return (void) log_tests_skipped_errno(r, "manager_new");
+ assert_se(r >= 0);
+
+ m->default_std_output = EXEC_OUTPUT_NULL; /* don't rely on host journald */
+ assert_se(manager_startup(m, NULL, NULL, NULL) >= 0);
+
+ /* Uncomment below if you want to make debugging logs stored to journal. */
+ //manager_override_log_target(m, LOG_TARGET_AUTO);
+ //manager_override_log_level(m, LOG_DEBUG);
+
+ for (const test_entry *test = tests; test->f; test++)
+ if (strv_fnmatch_or_empty(patterns, test->name, FNM_NOESCAPE))
+ test->f(m);
+ else
+ log_info("Skipping %s because it does not match any pattern.", test->name);
+}
+
+static int prepare_ns(const char *process_name) {
+ int r;
+
+ r = safe_fork(process_name,
+ FORK_RESET_SIGNALS |
+ FORK_CLOSE_ALL_FDS |
+ FORK_DEATHSIG |
+ FORK_WAIT |
+ FORK_REOPEN_LOG |
+ FORK_LOG |
+ FORK_NEW_MOUNTNS |
+ FORK_MOUNTNS_SLAVE,
+ NULL);
+ assert_se(r >= 0);
+ if (r == 0) {
+ _cleanup_free_ char *unit_dir = NULL;
- r = run_tests(LOOKUP_SCOPE_USER, user_tests, argv + 1);
- if (r != 0)
- return r;
+ /* Make "/" read-only. */
+ assert_se(mount_nofollow_verbose(LOG_DEBUG, NULL, "/", NULL, MS_BIND|MS_REMOUNT, NULL) >= 0);
- r = run_tests(LOOKUP_SCOPE_SYSTEM, system_tests, argv + 1);
- if (r != 0)
- return r;
+ /* Creating a new user namespace in the above means all MS_SHARED mounts become MS_SLAVE.
+ * Let's put them back to MS_SHARED here, since that's what we want as defaults. (This will
+ * not reconnect propagation, but simply create new peer groups for all our mounts). */
+ assert_se(mount_follow_verbose(LOG_DEBUG, NULL, "/", NULL, MS_SHARED|MS_REC, NULL) >= 0);
+
+ assert_se(mkdir_p(PRIVATE_UNIT_DIR, 0755) >= 0);
+
+ /* Mount tmpfs on the following directories to make not StateDirectory= or friends disturb the host. */
+ FOREACH_STRING(p, "/dev/shm", "/root", "/tmp", "/var/tmp", "/var/lib", PRIVATE_UNIT_DIR)
+ assert_se(mount_nofollow_verbose(LOG_DEBUG, "tmpfs", p, "tmpfs", MS_NOSUID|MS_NODEV, NULL) >= 0);
+
+ /* Copy unit files to make them accessible even when unprivileged. */
+ assert_se(get_testdata_dir("test-execute/", &unit_dir) >= 0);
+ assert_se(copy_directory(unit_dir, PRIVATE_UNIT_DIR, COPY_MERGE_EMPTY) >= 0);
+
+ /* Prepare credstore like tmpfiles.d/credstore.conf for LoadCredential= tests. */
+ FOREACH_STRING(p, "/run/credstore", "/run/credstore.encrypted") {
+ assert_se(mkdir_p(p, 0) >= 0);
+ assert_se(mount_nofollow_verbose(LOG_DEBUG, "tmpfs", p, "tmpfs", MS_NOSUID|MS_NODEV, "mode=0000") >= 0);
+ }
+
+ assert_se(write_string_file("/run/credstore/test-execute.load-credential", "foo", WRITE_STRING_FILE_CREATE) >= 0);
+ }
+
+ return r;
+}
+
+TEST(run_tests_root) {
+ _cleanup_strv_free_ char **filters = NULL;
+
+ if (!have_namespaces())
+ return (void) log_tests_skipped("unshare() is disabled");
+
+ /* safe_fork() clears saved_argv in the child process. Let's copy it. */
+ assert_se(filters = strv_copy(strv_skip(saved_argv, 1)));
+
+ if (prepare_ns("(test-execute-root)") == 0) {
+ can_unshare = true;
+ run_tests(LOOKUP_SCOPE_SYSTEM, filters);
+ _exit(EXIT_SUCCESS);
+ }
+}
+
+TEST(run_tests_without_unshare) {
+ if (!have_namespaces()) {
+ /* unshare() is already filtered. */
+ can_unshare = false;
+ run_tests(LOOKUP_SCOPE_SYSTEM, strv_skip(saved_argv, 1));
+ return;
+ }
#if HAVE_SECCOMP
+ _cleanup_strv_free_ char **filters = NULL;
+ int r;
+
/* The following tests are for 1beab8b0d0ff2d7d1436b52d4a0c3d56dc908962. */
- if (!is_seccomp_available()) {
- log_notice("Seccomp not available, skipping unshare() filtered tests.");
- return 0;
- }
+ if (!is_seccomp_available())
+ return (void) log_tests_skipped("Seccomp not available, cannot run unshare() filtered tests");
+
+ /* safe_fork() clears saved_argv in the child process. Let's copy it. */
+ assert_se(filters = strv_copy(strv_skip(saved_argv, 1)));
- _cleanup_hashmap_free_ Hashmap *s = NULL;
- assert_se(s = hashmap_new(NULL));
- r = seccomp_syscall_resolve_name("unshare");
- assert_se(r != __NR_SCMP_ERROR);
- assert_se(hashmap_put(s, UINT32_TO_PTR(r + 1), INT_TO_PTR(-1)) >= 0);
- assert_se(seccomp_load_syscall_filter_set_raw(SCMP_ACT_ALLOW, s, SCMP_ACT_ERRNO(EOPNOTSUPP), true) >= 0);
- assert_se(unshare(CLONE_NEWNS) < 0);
- assert_se(errno == EOPNOTSUPP);
+ if (prepare_ns("(test-execute-without-unshare)") == 0) {
+ _cleanup_hashmap_free_ Hashmap *s = NULL;
- can_unshare = false;
+ r = seccomp_syscall_resolve_name("unshare");
+ assert_se(r != __NR_SCMP_ERROR);
+ assert_se(hashmap_ensure_put(&s, NULL, UINT32_TO_PTR(r + 1), INT_TO_PTR(-1)) >= 0);
+ assert_se(seccomp_load_syscall_filter_set_raw(SCMP_ACT_ALLOW, s, SCMP_ACT_ERRNO(EOPNOTSUPP), true) >= 0);
- r = run_tests(LOOKUP_SCOPE_USER, user_tests, argv + 1);
- if (r != 0)
- return r;
+ /* Check unshare() is actually filtered. */
+ assert_se(unshare(CLONE_NEWNS) < 0);
+ assert_se(errno == EOPNOTSUPP);
- return run_tests(LOOKUP_SCOPE_SYSTEM, system_tests, argv + 1);
+ can_unshare = false;
+ run_tests(LOOKUP_SCOPE_SYSTEM, filters);
+ _exit(EXIT_SUCCESS);
+ }
#else
- return 0;
+ log_tests_skipped("Built without seccomp support, cannot run unshare() filtered tests");
+#endif
+}
+
+TEST(run_tests_unprivileged) {
+ _cleanup_strv_free_ char **filters = NULL;
+
+ if (!have_namespaces())
+ return (void) log_tests_skipped("unshare() is disabled");
+
+ /* safe_fork() clears saved_argv in the child process. Let's copy it. */
+ assert_se(filters = strv_copy(strv_skip(saved_argv, 1)));
+
+ if (prepare_ns("(test-execute-unprivileged)") == 0) {
+ assert_se(capability_bounding_set_drop(0, /* right_now = */ true) >= 0);
+
+ can_unshare = false;
+ run_tests(LOOKUP_SCOPE_USER, filters);
+ _exit(EXIT_SUCCESS);
+ }
+}
+
+static int intro(void) {
+#if HAS_FEATURE_ADDRESS_SANITIZER
+ if (strstr_ptr(ci_environment(), "travis") || strstr_ptr(ci_environment(), "github-actions"))
+ return log_tests_skipped("Running on Travis CI/GH Actions under ASan, see https://github.com/systemd/systemd/issues/10696");
#endif
+ /* It is needed otherwise cgroup creation fails */
+ if (geteuid() != 0 || have_effective_cap(CAP_SYS_ADMIN) <= 0)
+ return log_tests_skipped("not privileged");
+
+ if (enter_cgroup_subroot(NULL) == -ENOMEDIUM)
+ return log_tests_skipped("cgroupfs not available");
+
+ if (path_is_read_only_fs("/sys") > 0)
+ return log_tests_skipped("/sys is mounted read-only");
+
+ /* Create dummy network interface for testing PrivateNetwork=yes */
+ (void) system("ip link add dummy-test-exec type dummy");
+
+ return EXIT_SUCCESS;
}
+
+static int outro(void) {
+ (void) system("ip link del dummy-test-exec");
+ (void) rmdir(PRIVATE_UNIT_DIR);
+
+ return EXIT_SUCCESS;
+}
+
+DEFINE_TEST_MAIN_FULL(LOG_DEBUG, intro, outro);
assert_se(r == 0);
assert_se(l == 12345);
+ r = safe_atou16("+12345", &l);
+ assert_se(r == 0);
+ assert_se(l == 12345);
+
+ r = safe_atou16(" +12345", &l);
+ assert_se(r == 0);
+ assert_se(l == 12345);
+
r = safe_atou16("123456", &l);
assert_se(r == -ERANGE);
assert_se(r == 0);
assert_se(l == -12345);
+ r = safe_atoi16("+12345", &l);
+ assert_se(r == 0);
+ assert_se(l == 12345);
+
+ r = safe_atoi16(" +12345", &l);
+ assert_se(r == 0);
+ assert_se(l == 12345);
+
r = safe_atoi16("32767", &l);
assert_se(r == 0);
assert_se(l == 32767);
assert_se(r == 0);
assert_se(l == 11603985);
+ r = safe_atoux64("+12345", &l);
+ assert_se(r == 0);
+ assert_se(l == 0x12345);
+
+ r = safe_atoux64(" +12345", &l);
+ assert_se(r == 0);
+ assert_se(l == 0x12345);
+
+ r = safe_atoux64("+0x12345", &l);
+ assert_se(r == 0);
+ assert_se(l == 0x12345);
+
+ r = safe_atoux64("+0b11011", &l);
+ assert_se(r == 0);
+ assert_se(l == 11603985);
+
r = safe_atoux64("0o11011", &l);
assert_se(r == -EINVAL);
assert_se(streq(v[1], "ABC=QER"));
}
+TEST(strv_copy_n) {
+ char **x = STRV_MAKE("a", "b", "c", "d", "e");
+ _cleanup_strv_free_ char **l = NULL;
+
+ l = strv_copy_n(x, 0);
+ assert_se(strv_equal(l, NULL));
+ strv_free(l);
+
+ l = strv_copy_n(x, 0);
+ assert_se(strv_equal(l, (char**) { NULL }));
+ strv_free(l);
+
+ l = strv_copy_n(x, 1);
+ assert_se(strv_equal(l, STRV_MAKE("a")));
+ strv_free(l);
+
+ l = strv_copy_n(x, 2);
+ assert_se(strv_equal(l, STRV_MAKE("a", "b")));
+ strv_free(l);
+
+ l = strv_copy_n(x, 3);
+ assert_se(strv_equal(l, STRV_MAKE("a", "b", "c")));
+ strv_free(l);
+
+ l = strv_copy_n(x, 4);
+ assert_se(strv_equal(l, STRV_MAKE("a", "b", "c", "d")));
+ strv_free(l);
+
+ l = strv_copy_n(x, 5);
+ assert_se(strv_equal(l, STRV_MAKE("a", "b", "c", "d", "e")));
+ strv_free(l);
+
+ l = strv_copy_n(x, 6);
+ assert_se(strv_equal(l, STRV_MAKE("a", "b", "c", "d", "e")));
+ strv_free(l);
+
+ l = strv_copy_n(x, SIZE_MAX);
+ assert_se(strv_equal(l, STRV_MAKE("a", "b", "c", "d", "e")));
+}
+
DEFINE_TEST_MAIN(LOG_INFO);
#include "fd-util.h"
#include "fs-util.h"
#include "macro.h"
+#include "rm-rf.h"
#include "string-util.h"
#include "tests.h"
#include "tmpfile-util.h"
#include "xattr-util.h"
TEST(getxattr_at_malloc) {
- char t[] = "/var/tmp/xattrtestXXXXXX";
+ _cleanup_(rm_rf_physical_and_freep) char *t = NULL;
_cleanup_free_ char *value = NULL;
_cleanup_close_ int fd = -EBADF;
const char *x;
int r;
- assert_se(mkdtemp(t));
+ fd = mkdtemp_open("/var/tmp/test-xattrtestXXXXXX", O_RDONLY|O_NOCTTY, &t);
+ assert_se(fd >= 0);
x = strjoina(t, "/test");
assert_se(touch(x) >= 0);
r = setxattr(x, "user.foo", "bar", 3, 0);
- if (r < 0 && ERRNO_IS_NOT_SUPPORTED(errno)) /* no xattrs supported on /var/tmp... */
- goto cleanup;
+ if (r < 0 && ERRNO_IS_NOT_SUPPORTED(errno))
+ return (void) log_tests_skipped_errno(errno, "no xattrs supported on /var/tmp");
assert_se(r >= 0);
- fd = open(t, O_RDONLY|O_DIRECTORY|O_CLOEXEC|O_NOCTTY);
- assert_se(fd >= 0);
-
assert_se(getxattr_at_malloc(fd, "test", "user.foo", 0, &value) == 3);
assert_se(memcmp(value, "bar", 3) == 0);
value = mfree(value);
assert_se(fd >= 0);
assert_se(getxattr_at_malloc(fd, NULL, "user.foo", 0, &value) == 3);
assert_se(streq(value, "bar"));
-
-cleanup:
- assert_se(unlink(x) >= 0);
- assert_se(rmdir(t) >= 0);
}
TEST(getcrtime) {
+ _cleanup_(rm_rf_physical_and_freep) char *t = NULL;
_cleanup_close_ int fd = -EBADF;
- const char *vt;
usec_t usec, k;
int r;
- assert_se(var_tmp_dir(&vt) >= 0);
-
- fd = open_tmpfile_unlinkable(vt, O_RDWR);
+ fd = mkdtemp_open("/var/tmp/test-xattrtestXXXXXX", 0, &t);
assert_se(fd >= 0);
r = fd_getcrtime(fd, &usec);
}
}
+static void verify_xattr(int dfd, const char *expected) {
+ _cleanup_free_ char *value = NULL;
+
+ assert_se(getxattr_at_malloc(dfd, "test", "user.foo", 0, &value) == (int) strlen(expected));
+ assert_se(streq(value, expected));
+}
+
+TEST(xsetxattr) {
+ _cleanup_(rm_rf_physical_and_freep) char *t = NULL;
+ _cleanup_close_ int dfd = -EBADF, fd = -EBADF;
+ const char *x;
+ int r;
+
+ dfd = mkdtemp_open("/var/tmp/test-xattrtestXXXXXX", O_PATH, &t);
+ assert_se(dfd >= 0);
+ x = strjoina(t, "/test");
+ assert_se(touch(x) >= 0);
+
+ /* by full path */
+ r = xsetxattr(AT_FDCWD, x, "user.foo", "fullpath", SIZE_MAX, 0);
+ if (r < 0 && ERRNO_IS_NOT_SUPPORTED(r))
+ return (void) log_tests_skipped_errno(r, "no xattrs supported on /var/tmp");
+ assert_se(r >= 0);
+ verify_xattr(dfd, "fullpath");
+
+ /* by dirfd */
+ assert_se(xsetxattr(dfd, "test", "user.foo", "dirfd", SIZE_MAX, 0) >= 0);
+ verify_xattr(dfd, "dirfd");
+
+ /* by fd (O_PATH) */
+ fd = openat(dfd, "test", O_PATH|O_CLOEXEC);
+ assert_se(fd >= 0);
+ assert_se(xsetxattr(fd, NULL, "user.foo", "fd_opath", SIZE_MAX, 0) >= 0);
+ verify_xattr(dfd, "fd_opath");
+ assert_se(xsetxattr(fd, "", "user.foo", "fd_opath", SIZE_MAX, 0) == -EINVAL);
+ assert_se(xsetxattr(fd, "", "user.foo", "fd_opath_empty", SIZE_MAX, AT_EMPTY_PATH) >= 0);
+ verify_xattr(dfd, "fd_opath_empty");
+ fd = safe_close(fd);
+
+ fd = openat(dfd, "test", O_RDONLY|O_CLOEXEC);
+ assert_se(xsetxattr(fd, NULL, "user.foo", "fd_regular", SIZE_MAX, 0) >= 0);
+ verify_xattr(dfd, "fd_regular");
+ assert_se(xsetxattr(fd, "", "user.foo", "fd_regular_empty", SIZE_MAX, 0) == -EINVAL);
+ assert_se(xsetxattr(fd, "", "user.foo", "fd_regular_empty", SIZE_MAX, AT_EMPTY_PATH) >= 0);
+ verify_xattr(dfd, "fd_regular_empty");
+}
+
DEFINE_TEST_MAIN(LOG_DEBUG);
return !ether_addr_is_null(&hw_addr->ether) && !ether_addr_is_broadcast(&hw_addr->ether);
case ARPHRD_INFINIBAND:
- /* The last 8 bytes cannot be zero*/
+ /* The last 8 bytes cannot be zero. */
assert(hw_addr->length == INFINIBAND_ALEN);
return !memeqzero(hw_addr->bytes + INFINIBAND_ALEN - 8, 8);
#include "parse-util.h"
#include "path-util.h"
#include "process-util.h"
-#include "rlimit-util.h"
#include "signal-util.h"
#include "stdio-util.h"
#include "string-util.h"
log_device_debug(event->dev, "Starting '%s'", cmd);
- r = safe_fork("(spawn)", FORK_RESET_SIGNALS|FORK_DEATHSIG|FORK_LOG, &pid);
+ r = safe_fork("(spawn)", FORK_RESET_SIGNALS|FORK_DEATHSIG|FORK_LOG|FORK_RLIMIT_NOFILE_SAFE, &pid);
if (r < 0)
return log_device_error_errno(event->dev, r,
"Failed to fork() to execute command '%s': %m", cmd);
_exit(EXIT_FAILURE);
(void) close_all_fds(NULL, 0);
- (void) rlimit_nofile_safe();
DEVICE_TRACE_POINT(spawn_exec, event->dev, cmd);
if (r < 0)
return log_error_errno(r, "Worker: Failed to enable receiving of device: %m");
- r = safe_fork(NULL, FORK_DEATHSIG, &pid);
+ r = safe_fork("(udev-worker)", FORK_DEATHSIG, &pid);
if (r < 0) {
event->state = EVENT_QUEUED;
return log_error_errno(r, "Failed to fork() worker: %m");
return (x + blocksize - 1) // blocksize * blocksize
+def try_import(modname, name=None):
+ try:
+ return __import__(modname)
+ except ImportError as e:
+ raise ValueError(f'Kernel is compressed with {name or modname}, but module unavailable') from e
+
+
def maybe_decompress(filename):
"""Decompress file if compressed. Return contents."""
f = open(filename, 'rb')
return f.read()
if start.startswith(b'\x1f\x8b'):
- import gzip
+ gzip = try_import('gzip')
return gzip.open(f).read()
if start.startswith(b'\x28\xb5\x2f\xfd'):
- import zstd
+ zstd = try_import('zstd')
return zstd.uncompress(f.read())
if start.startswith(b'\x02\x21\x4c\x18'):
- import lz4.frame
+ lz4 = try_import('lz4.frame', 'lz4')
return lz4.frame.decompress(f.read())
if start.startswith(b'\x04\x22\x4d\x18'):
print('Newer lz4 stream format detected! This may not boot!')
- import lz4.frame
+ lz4 = try_import('lz4.frame', 'lz4')
return lz4.frame.decompress(f.read())
if start.startswith(b'\x89LZO'):
raise NotImplementedError('lzo decompression not implemented')
if start.startswith(b'BZh'):
- import bz2
+ bz2 = try_import('bz2', 'bzip2')
return bz2.open(f).read()
if start.startswith(b'\x5d\x00\x00'):
- import lzma
+ lzma = try_import('lzma')
return lzma.open(f).read()
raise NotImplementedError(f'unknown file format (starts with {start})')
seq = []
for file in initrds:
initrd = file.read_bytes()
- padding = b'\0' * round_up(len(initrd), 4) # pad to 32 bit alignment
+ n = len(initrd)
+ padding = b'\0' * (round_up(n, 4) - n) # pad to 32 bit alignment
seq += [initrd, padding]
return b''.join(seq)
uki = UKI(opts.stub)
initrd = join_initrds(opts.initrd)
- # TODO: derive public key from from opts.pcr_private_keys?
+ # TODO: derive public key from opts.pcr_private_keys?
pcrpkey = opts.pcrpkey
if pcrpkey is None:
if opts.pcr_public_keys and len(opts.pcr_public_keys) == 1:
p.add_argument('--stub',
type=pathlib.Path,
- help='path the the sd-stub file [.text,.data,… sections]')
+ help='path to the sd-stub file [.text,.data,… sections]')
p.add_argument('--section',
dest='sections',
int main(int argc, char **argv) {
_cleanup_free_ char
*vc = NULL,
- *vc_keymap = NULL, *vc_keymap_toggle = NULL,
+ *vc_keymap_alloc = NULL, *vc_keymap_toggle = NULL,
*vc_font = NULL, *vc_font_map = NULL, *vc_font_unimap = NULL;
_cleanup_close_ int fd = -EBADF;
+ const char *vc_keymap;
bool utf8, keyboard_ok;
unsigned idx = 0;
int r;
/* Load data from credentials (lowest priority) */
r = read_credential_strings_many(
- "vconsole.keymap", &vc_keymap,
+ "vconsole.keymap", &vc_keymap_alloc,
"vconsole.keymap_toggle", &vc_keymap_toggle,
"vconsole.font", &vc_font,
"vconsole.font_map", &vc_font_map,
/* Load data from configuration file (middle priority) */
r = parse_env_file(NULL, "/etc/vconsole.conf",
- "KEYMAP", &vc_keymap,
+ "KEYMAP", &vc_keymap_alloc,
"KEYMAP_TOGGLE", &vc_keymap_toggle,
"FONT", &vc_font,
"FONT_MAP", &vc_font_map,
/* Let the kernel command line override /etc/vconsole.conf (highest priority) */
r = proc_cmdline_get_key_many(
PROC_CMDLINE_STRIP_RD_PREFIX,
- "vconsole.keymap", &vc_keymap,
+ "vconsole.keymap", &vc_keymap_alloc,
"vconsole.keymap_toggle", &vc_keymap_toggle,
"vconsole.font", &vc_font,
"vconsole.font_map", &vc_font_map,
if (r < 0 && r != -ENOENT)
log_warning_errno(r, "Failed to read /proc/cmdline, ignoring: %m");
+ vc_keymap = isempty(vc_keymap_alloc) ? SYSTEMD_DEFAULT_KEYMAP : vc_keymap_alloc;
+
(void) toggle_utf8_sysfs(utf8);
(void) toggle_utf8_vc(vc, fd, utf8);
# (at your option) any later version.
# The superuser
+g root 0 - -
u root 0:0 "Super User" /root
# The nobody user/group for NFS file systems
mkdir -p "${initdir:?}/etc/systemd/system/init.scope.d/"
cat >>"${initdir:?}/etc/systemd/system/init.scope.d/test-55-oomd.conf" <<EOF
[Scope]
-MemoryHigh=10G
+MemoryHigh=infinity
+StartupMemoryHigh=10G
EOF
)
}
--- /dev/null
+../TEST-01-BASIC/Makefile
\ No newline at end of file
--- /dev/null
+#!/usr/bin/env bash
+# SPDX-License-Identifier: LGPL-2.1-or-later
+set -e
+
+TEST_DESCRIPTION="Test queue signal logic"
+
+# shellcheck source=test/test-functions
+. "$TEST_BASE_DIR/test-functions"
+
+do_test "$@"
Description=Test DynamicUser= migrate StateDirectory= (preparation)
[Service]
-ExecStart=test -w /var/lib/test-dynamicuser-migrate
-ExecStart=test -w /var/lib/test-dynamicuser-migrate2/hoge
-ExecStart=test ! -L /var/lib/test-dynamicuser-migrate
-ExecStart=test ! -L /var/lib/test-dynamicuser-migrate2/hoge
-ExecStart=test -d /var/lib/test-dynamicuser-migrate
-ExecStart=test -d /var/lib/test-dynamicuser-migrate2/hoge
-ExecStart=touch /var/lib/test-dynamicuser-migrate/yay
-ExecStart=touch /var/lib/test-dynamicuser-migrate2/hoge/yayyay
+ExecStart=test -w %S/test-dynamicuser-migrate
+ExecStart=test -w %S/test-dynamicuser-migrate2/hoge
+ExecStart=test ! -L %S/test-dynamicuser-migrate
+ExecStart=test ! -L %S/test-dynamicuser-migrate2/hoge
+ExecStart=test -d %S/test-dynamicuser-migrate
+ExecStart=test -d %S/test-dynamicuser-migrate2/hoge
+ExecStart=touch %S/test-dynamicuser-migrate/yay
+ExecStart=touch %S/test-dynamicuser-migrate2/hoge/yayyay
ExecStart=/bin/sh -x -c 'test "$$STATE_DIRECTORY" = "%S/test-dynamicuser-migrate:%S/test-dynamicuser-migrate2/hoge"'
Type=oneshot
Description=Test DynamicUser= migrate StateDirectory=
[Service]
-ExecStart=test -w /var/lib/test-dynamicuser-migrate
-ExecStart=test -w /var/lib/test-dynamicuser-migrate2/hoge
-ExecStart=test -L /var/lib/test-dynamicuser-migrate
-ExecStart=test -L /var/lib/test-dynamicuser-migrate2/hoge
-ExecStart=test -d /var/lib/test-dynamicuser-migrate
-ExecStart=test -d /var/lib/test-dynamicuser-migrate2/hoge
-ExecStart=test -f /var/lib/test-dynamicuser-migrate/yay
-ExecStart=test -f /var/lib/test-dynamicuser-migrate2/hoge/yayyay
-ExecStart=test -d /var/lib/private/test-dynamicuser-migrate
-ExecStart=test -d /var/lib/private/test-dynamicuser-migrate2/hoge
-ExecStart=test -f /var/lib/private/test-dynamicuser-migrate/yay
-ExecStart=test -f /var/lib/private/test-dynamicuser-migrate2/hoge/yayyay
-ExecStart=touch /var/lib/test-dynamicuser-migrate/yay
-ExecStart=touch /var/lib/test-dynamicuser-migrate2/hoge/yayyay
-ExecStart=touch /var/lib/private/test-dynamicuser-migrate/yay
-ExecStart=touch /var/lib/private/test-dynamicuser-migrate2/hoge/yayyay
+ExecStart=test -w %S/test-dynamicuser-migrate
+ExecStart=test -w %S/test-dynamicuser-migrate2/hoge
+ExecStart=test -L %S/test-dynamicuser-migrate
+ExecStart=test -L %S/test-dynamicuser-migrate2/hoge
+ExecStart=test -d %S/test-dynamicuser-migrate
+ExecStart=test -d %S/test-dynamicuser-migrate2/hoge
+ExecStart=test -f %S/test-dynamicuser-migrate/yay
+ExecStart=test -f %S/test-dynamicuser-migrate2/hoge/yayyay
+ExecStart=test -d %S/private/test-dynamicuser-migrate
+ExecStart=test -d %S/private/test-dynamicuser-migrate2/hoge
+ExecStart=test -f %S/private/test-dynamicuser-migrate/yay
+ExecStart=test -f %S/private/test-dynamicuser-migrate2/hoge/yayyay
+ExecStart=touch %S/test-dynamicuser-migrate/yay
+ExecStart=touch %S/test-dynamicuser-migrate2/hoge/yayyay
+ExecStart=touch %S/private/test-dynamicuser-migrate/yay
+ExecStart=touch %S/private/test-dynamicuser-migrate2/hoge/yayyay
ExecStart=/bin/sh -x -c 'test "$$STATE_DIRECTORY" = "%S/test-dynamicuser-migrate:%S/test-dynamicuser-migrate2/hoge"'
Type=oneshot
Description=Test DynamicUser= with StateDirectory=
[Service]
-ExecStart=test -w /var/lib/waldo
-ExecStart=test -w /var/lib/quux/pief
-ExecStart=test -w /var/lib/aaa
-ExecStart=test -w /var/lib/aaa/bbb
-ExecStart=test -w /var/lib/aaa/ccc
-ExecStart=test -w /var/lib/xxx
-ExecStart=test -w /var/lib/xxx/yyy
-ExecStart=test -w /var/lib/xxx/zzz
-ExecStart=test -w /var/lib/aaa/111
-ExecStart=test -w /var/lib/aaa/222
-ExecStart=test -w /var/lib/aaa/333
+ExecStart=test -w %S/waldo
+ExecStart=test -w %S/quux/pief
+ExecStart=test -w %S/aaa
+ExecStart=test -w %S/aaa/bbb
+ExecStart=test -w %S/aaa/ccc
+ExecStart=test -w %S/xxx
+ExecStart=test -w %S/xxx/yyy
+ExecStart=test -w %S/xxx/zzz
+ExecStart=test -w %S/aaa/111
+ExecStart=test -w %S/aaa/222
+ExecStart=test -w %S/aaa/333
-ExecStart=test -d /var/lib/waldo
-ExecStart=test -d /var/lib/quux/pief
-ExecStart=test -d /var/lib/aaa
-ExecStart=test -d /var/lib/aaa/bbb
-ExecStart=test -d /var/lib/aaa/ccc
-ExecStart=test -d /var/lib/xxx
-ExecStart=test -d /var/lib/xxx/yyy
-ExecStart=test -d /var/lib/xxx/zzz
-ExecStart=test -L /var/lib/aaa/111
-ExecStart=test -L /var/lib/aaa/222
-ExecStart=test -L /var/lib/aaa/333
+ExecStart=test -d %S/waldo
+ExecStart=test -d %S/quux/pief
+ExecStart=test -d %S/aaa
+ExecStart=test -d %S/aaa/bbb
+ExecStart=test -d %S/aaa/ccc
+ExecStart=test -d %S/xxx
+ExecStart=test -d %S/xxx/yyy
+ExecStart=test -d %S/xxx/zzz
+ExecStart=test -L %S/aaa/111
+ExecStart=test -L %S/aaa/222
+ExecStart=test -L %S/aaa/333
-ExecStart=touch /var/lib/waldo/hoge
-ExecStart=touch /var/lib/quux/pief/hoge
-ExecStart=touch /var/lib/aaa/hoge
-ExecStart=touch /var/lib/aaa/bbb/hoge
-ExecStart=touch /var/lib/aaa/ccc/hoge
-ExecStart=touch /var/lib/xxx/hoge
-ExecStart=touch /var/lib/xxx/yyy/hoge
-ExecStart=touch /var/lib/xxx/zzz/hoge
-ExecStart=touch /var/lib/aaa/111/foo
-ExecStart=touch /var/lib/aaa/222/foo
-ExecStart=touch /var/lib/aaa/333/foo
+ExecStart=touch %S/waldo/hoge
+ExecStart=touch %S/quux/pief/hoge
+ExecStart=touch %S/aaa/hoge
+ExecStart=touch %S/aaa/bbb/hoge
+ExecStart=touch %S/aaa/ccc/hoge
+ExecStart=touch %S/xxx/hoge
+ExecStart=touch %S/xxx/yyy/hoge
+ExecStart=touch %S/xxx/zzz/hoge
+ExecStart=touch %S/aaa/111/foo
+ExecStart=touch %S/aaa/222/foo
+ExecStart=touch %S/aaa/333/foo
-ExecStart=test -f /var/lib/waldo/hoge
-ExecStart=test -f /var/lib/quux/pief/hoge
-ExecStart=test -f /var/lib/aaa/hoge
-ExecStart=test -f /var/lib/aaa/bbb/hoge
-ExecStart=test -f /var/lib/aaa/ccc/hoge
-ExecStart=test -f /var/lib/xxx/hoge
-ExecStart=test -f /var/lib/xxx/yyy/hoge
-ExecStart=test -f /var/lib/xxx/zzz/hoge
-ExecStart=test -f /var/lib/aaa/111/foo
-ExecStart=test -f /var/lib/aaa/222/foo
-ExecStart=test -f /var/lib/aaa/333/foo
-ExecStart=test -f /var/lib/xxx/foo
-ExecStart=test -f /var/lib/xxx/yyy/foo
-ExecStart=test -f /var/lib/xxx/zzz/foo
+ExecStart=test -f %S/waldo/hoge
+ExecStart=test -f %S/quux/pief/hoge
+ExecStart=test -f %S/aaa/hoge
+ExecStart=test -f %S/aaa/bbb/hoge
+ExecStart=test -f %S/aaa/ccc/hoge
+ExecStart=test -f %S/xxx/hoge
+ExecStart=test -f %S/xxx/yyy/hoge
+ExecStart=test -f %S/xxx/zzz/hoge
+ExecStart=test -f %S/aaa/111/foo
+ExecStart=test -f %S/aaa/222/foo
+ExecStart=test -f %S/aaa/333/foo
+ExecStart=test -f %S/xxx/foo
+ExecStart=test -f %S/xxx/yyy/foo
+ExecStart=test -f %S/xxx/zzz/foo
-ExecStart=test -f /var/lib/private/waldo/hoge
-ExecStart=test -f /var/lib/private/quux/pief/hoge
-ExecStart=test -f /var/lib/private/aaa/hoge
-ExecStart=test -f /var/lib/private/aaa/bbb/hoge
-ExecStart=test -f /var/lib/private/aaa/ccc/hoge
-ExecStart=test -f /var/lib/private/xxx/hoge
-ExecStart=test -f /var/lib/private/xxx/yyy/hoge
-ExecStart=test -f /var/lib/private/xxx/zzz/hoge
-ExecStart=test -f /var/lib/private/aaa/111/foo
-ExecStart=test -f /var/lib/private/aaa/222/foo
-ExecStart=test -f /var/lib/private/aaa/333/foo
-ExecStart=test -f /var/lib/private/xxx/foo
-ExecStart=test -f /var/lib/private/xxx/yyy/foo
-ExecStart=test -f /var/lib/private/xxx/zzz/foo
+ExecStart=test -f %S/private/waldo/hoge
+ExecStart=test -f %S/private/quux/pief/hoge
+ExecStart=test -f %S/private/aaa/hoge
+ExecStart=test -f %S/private/aaa/bbb/hoge
+ExecStart=test -f %S/private/aaa/ccc/hoge
+ExecStart=test -f %S/private/xxx/hoge
+ExecStart=test -f %S/private/xxx/yyy/hoge
+ExecStart=test -f %S/private/xxx/zzz/hoge
+ExecStart=test -f %S/private/aaa/111/foo
+ExecStart=test -f %S/private/aaa/222/foo
+ExecStart=test -f %S/private/aaa/333/foo
+ExecStart=test -f %S/private/xxx/foo
+ExecStart=test -f %S/private/xxx/yyy/foo
+ExecStart=test -f %S/private/xxx/zzz/foo
ExecStart=sh -x -c 'test "$$STATE_DIRECTORY" = "%S/aaa:%S/aaa/bbb:%S/aaa/ccc:%S/quux/pief:%S/waldo:%S/xxx:%S/xxx/yyy:%S/xxx/zzz"'
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+[Unit]
+Description=Test for LoadCredential=
+
+[Service]
+ExecStart=/bin/sh -x -c 'test "$$(cat %d/test-execute.load-credential)" = "foo"'
+Type=oneshot
+LoadCredential=test-execute.load-credential
[Service]
ExecStart=/bin/sh -x -c '! ip link | grep -E "^[0-9]+: " | grep -Ev ": (lo|(erspan|gre|gretap|ip_vti|ip6_vti|ip6gre|ip6tnl|sit|tunl)0@.*):"'
+ExecStart=/bin/sh -x -c '! ip link | grep -E "^[0-9]+: " | grep -F ": dummy-test-exec:"'
Type=oneshot
PrivateNetwork=yes
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+[Unit]
+Description=Test for SetCredential=
+
+[Service]
+ExecStart=/bin/sh -x -c 'test "$$(cat %d/test-execute.set-credential)" = "hoge"'
+Type=oneshot
+SetCredential=test-execute.set-credential:hoge
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+[Unit]
+Description=Test for specifiers (system)
+
+[Service]
+Type=oneshot
+ExecStart=test %t = /run
+ExecStart=test %S = /var/lib
+ExecStart=test %C = /var/cache
+ExecStart=test %L = /var/log
+ExecStart=test %E = /etc
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+[Unit]
+Description=Test for specifiers
+
+[Service]
+Type=oneshot
+ExecStart=sh -c 'test %t = $$XDG_RUNTIME_DIR'
+ExecStart=sh -c 'test %S = %h/.config'
+ExecStart=sh -c 'test %C = %h/.cache'
+ExecStart=sh -c 'test %L = %h/.config/log'
+ExecStart=sh -c 'test %E = %h/.config'
ExecStart=test %j = specifier
ExecStart=test %J = specifier
ExecStart=test %f = /exec/specifier
-ExecStart=test %t = /run
-ExecStart=test %S = /var/lib
-ExecStart=test %C = /var/cache
-ExecStart=test %L = /var/log
-ExecStart=test %E = /etc
ExecStart=test %T = /tmp
ExecStart=test %V = /var/tmp
ExecStart=test %d = %t/credentials/%n
ExecStart=test %j = specifier
ExecStart=test %J = specifier
ExecStart=test %f = /foo/bar
-ExecStart=test %t = /run
-ExecStart=test %S = /var/lib
-ExecStart=test %C = /var/cache
-ExecStart=test %L = /var/log
-ExecStart=test %E = /etc
ExecStart=sh -c 'test %u = $$(id -un)'
ExecStart=sh -c 'test %U = $$(id -u)'
ExecStart=sh -c 'test %g = $$(id -gn)'
AgeingTimeSec=9
ForwardDelaySec=9
Priority=9
-#GroupForwardMask=9 # This interferes other other settings
+#GroupForwardMask=9 # This interferes with other settings
DefaultPVID=9
MulticastQuerier=yes
MulticastSnooping=yes
--- /dev/null
+root:x:0:
+nobody:x:65534:
+adm:x:999:
+wheel:x:998:
+utmp:x:997:
+audio:x:996:
+cdrom:x:995:
+dialout:x:994:
+disk:x:993:
+input:x:992:
+kmem:x:991:
+kvm:x:990:
+lp:x:989:
+render:x:988:
+sgx:x:987:
+tape:x:986:
+tty:x:5:
+video:x:985:
+users:x:984:
--- /dev/null
+root:x:0:0:Super User:/root:/bin/sh
+nobody:x:65534:65534:Kernel Overflow User:/:NOLOGIN
--- /dev/null
+# This file is part of systemd.
+#
+# systemd is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation; either version 2.1 of the License, or
+# (at your option) any later version.
+
+# The superuser
+g root 0 - -
+u root 0:0 "Super User" /root
+
+# The nobody user/group for NFS file systems
+g nobody 65534 - -
+u nobody 65534:65534 "Kernel Overflow User" -
+
+# Administrator group: can *see* more than normal users
+g adm 999 - -
+
+# Administrator group: can *do* more than normal users
+g wheel 998 - -
+
+# Access to shared database of users on the system
+g utmp 997 - -
+
+# Physical and virtual hardware access groups
+g audio 996 - -
+g cdrom 995 - -
+g dialout 994 - -
+g disk 993 - -
+g input 992 - -
+g kmem 991 - -
+g kvm 990 - -
+g lp 989 - -
+g render 988 - -
+g sgx 987 - -
+g tape 986 - -
+g tty 5 - -
+g video 985 - -
+
+# Default group for normal users
+g users 984 - -
--- /dev/null
+[Unit]
+Description=Test service for delegated logs filtering
+
+[Service]
+Type=simple
+ExecStart=/usr/lib/systemd/tests/testdata/units/delegated_cgroup_filtering_payload.sh
+Delegate=yes
+SyslogLevel=notice
--- /dev/null
+#!/bin/sh
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+mkdir /sys/fs/cgroup/system.slice/delegated-cgroup-filtering.service/the_child
+/bin/sh /usr/lib/systemd/tests/testdata/units/delegated_cgroup_filtering_payload_child.sh &
+
+while true
+do
+ echo "parent_process: hello, world!"
+ echo "parent_process: hello, people!"
+ sleep .15
+done
--- /dev/null
+#!/bin/sh
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+echo $$ >/sys/fs/cgroup/system.slice/delegated-cgroup-filtering.service/the_child/cgroup.procs
+
+while true
+do
+ echo "child_process: hello, world!"
+ echo "child_process: hello, people!"
+ sleep .15
+done
printf $'foo' | systemd-cat -t "$ID" --level-prefix false
journalctl --sync
journalctl -b -o export --output-fields=MESSAGE,FOO --output-fields=PRIORITY,MESSAGE -t "$ID" >/output
-[[ $(grep -c . /output) -eq 6 ]]
+[[ $(grep -c . /output) -eq 8 ]]
grep -q '^__CURSOR=' /output
grep -q '^MESSAGE=foo$' /output
grep -q '^PRIORITY=6$' /output
LOG_FILTER=${3:-""}
mkdir -p /etc/systemd/system/"$UNIT".d/
- echo "[Service]" >/etc/systemd/system/logs-filtering.service.d/"${OVERRIDE_NAME}".conf
- echo "LogFilterPatterns=$LOG_FILTER" >>/etc/systemd/system/logs-filtering.service.d/"${OVERRIDE_NAME}".conf
+ echo "[Service]" >/etc/systemd/system/"$UNIT".d/"${OVERRIDE_NAME}".conf
+ echo "LogFilterPatterns=$LOG_FILTER" >>/etc/systemd/system/"$UNIT".d/"${OVERRIDE_NAME}".conf
systemctl daemon-reload
}
add_logs_filtering_override "logs-filtering.service" "10-allow-with-escape-char" "\x7emore~"
[[ -n $(run_service_and_fetch_logs "logs-filtering.service") ]]
+ add_logs_filtering_override "delegated-cgroup-filtering.service" "00-allow-all" ".*"
+ [[ -n $(run_service_and_fetch_logs "delegated-cgroup-filtering.service") ]]
+
+ add_logs_filtering_override "delegated-cgroup-filtering.service" "01-discard-hello" "~hello"
+ [[ -z $(run_service_and_fetch_logs "delegated-cgroup-filtering.service") ]]
+
rm -rf /etc/systemd/system/logs-filtering.service.d
+ rm -rf /etc/systemd/system/delegated-cgroup-filtering.service.d
fi
+# Check that the seqnum field at least superficially works
+systemd-cat echo "ya"
+journalctl --sync
+SEQNUM1=$(journalctl -o export -n 1 | grep -Ea "^__SEQNUM=" | cut -d= -f2)
+systemd-cat echo "yo"
+journalctl --sync
+SEQNUM2=$(journalctl -o export -n 1 | grep -Ea "^__SEQNUM=" | cut -d= -f2)
+test "$SEQNUM2" -gt "$SEQNUM1"
+
touch /testok
# Now, do the same, but with a cryptsetup binding
truncate -s 20M $img
cryptsetup luksFormat -q --pbkdf pbkdf2 --pbkdf-force-iterations 1000 --use-urandom $img /tmp/passphrase
+ # Ensure that an unrelated signature, when not requested, is not used
+ touch /run/systemd/tpm2-pcr-signature.json
+ systemd-cryptenroll --unlock-key-file=/tmp/passphrase --tpm2-device=auto --tpm2-public-key="/tmp/pcrsign-public.pem" $img
+ # Reset and use the signature now
+ rm -f /run/systemd/tpm2-pcr-signature.json
+ systemd-cryptenroll --wipe-slot=tpm2 $img
systemd-cryptenroll --unlock-key-file=/tmp/passphrase --tpm2-device=auto --tpm2-public-key="/tmp/pcrsign-public.pem" --tpm2-signature="/tmp/pcrsign.sig2" $img
# Check if we can activate that (without the token module stuff)
SYSTEMD_CRYPTSETUP_USE_TOKEN_MODULE=0 /usr/lib/systemd/systemd-cryptsetup attach test-volume2 $img - tpm2-device=auto,tpm2-signature="/tmp/pcrsign.sig2",headless=1
SYSTEMD_CRYPTSETUP_USE_TOKEN_MODULE=0 /usr/lib/systemd/systemd-cryptsetup detach test-volume2
- # Check if we can activate that (and a second time with the the token module stuff enabled)
+ # Check if we can activate that (and a second time with the token module stuff enabled)
SYSTEMD_CRYPTSETUP_USE_TOKEN_MODULE=1 /usr/lib/systemd/systemd-cryptsetup attach test-volume2 $img - tpm2-device=auto,tpm2-signature="/tmp/pcrsign.sig2",headless=1
SYSTEMD_CRYPTSETUP_USE_TOKEN_MODULE=1 /usr/lib/systemd/systemd-cryptsetup detach test-volume2
echo "/usr/lib/systemd/systemd-pcrphase or PCR sysfs files not found, skipping PCR extension test case"
fi
+# Ensure that sandboxing doesn't stop creds from being accessible
+echo "test" > /tmp/testdata
+systemd-creds encrypt /tmp/testdata /tmp/testdata.encrypted --with-key=tpm2
+systemd-run -p PrivateDevices=yes -p LoadCredentialEncrypted=testdata.encrypted:/tmp/testdata.encrypted --pipe --wait systemd-creds cat testdata.encrypted | cmp - /tmp/testdata
+rm /tmp/testdata
+
echo OK >/testok
exit 0
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+[Unit]
+Description=TEST-78-SIGQUEUE
+
+[Service]
+Type=oneshot
+ExecStart=/usr/lib/systemd/tests/testdata/units/%N.sh
--- /dev/null
+#!/usr/bin/env bash
+# SPDX-License-Identifier: LGPL-2.1-or-later
+set -ex
+set -o pipefail
+
+if ! env --block-signal=SIGUSR1 true 2> /dev/null ; then
+ echo "env tool too old, can't block signals, skipping test." >&2
+ echo OK >/testok
+ exit 0
+fi
+
+systemd-analyze log-level debug
+
+UNIT="test-sigqueue-$RANDOM.service"
+
+systemd-run -u "$UNIT" -p Type=notify -p DynamicUser=1 -- env --block-signal=SIGRTMIN+7 systemd-notify --exec --ready \; sleep infinity
+
+systemctl kill --kill-whom=main --kill-value=4 --signal=SIGRTMIN+7 "$UNIT"
+systemctl kill --kill-whom=main --kill-value=4 --signal=SIGRTMIN+7 "$UNIT"
+systemctl kill --kill-whom=main --kill-value=7 --signal=SIGRTMIN+7 "$UNIT"
+systemctl kill --kill-whom=main --kill-value=16 --signal=SIGRTMIN+7 "$UNIT"
+systemctl kill --kill-whom=main --kill-value=32 --signal=SIGRTMIN+7 "$UNIT"
+systemctl kill --kill-whom=main --kill-value=16 --signal=SIGRTMIN+7 "$UNIT"
+
+# We simply check that six signals are queued now. There's no easy way to check
+# from shell wich ones those are, hence we don't check that.
+P=$(systemctl show -P MainPID "$UNIT")
+
+test "$(grep SigQ: /proc/"$P"/status | cut -d: -f2 | cut -d/ -f1)" -eq 6
+
+systemctl stop $UNIT
+
+systemd-analyze log-level info
+echo OK >/testok
+
+exit 0
{% endif %}
C! /etc/locale.conf - - - -
C! /etc/nsswitch.conf - - - -
+C! /etc/vconsole.conf - - - -
{% if HAVE_PAM %}
C! /etc/pam.d - - - -
{% endif %}
Conflicts=shutdown.target
After=systemd-pcrmachine.service
Before=shutdown.target
-AssertPathExists=!/etc/initrd-release
+ConditionPathExists=!/etc/initrd-release
ConditionSecurity=tpm2
ConditionPathExists=/sys/firmware/efi/efivars/StubPcrKernelImage-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f
Conflicts=shutdown.target
After=%i.mount systemd-pcrfs-root.service
Before=shutdown.target
-AssertPathExists=!/etc/initrd-release
+ConditionPathExists=!/etc/initrd-release
ConditionSecurity=tpm2
ConditionPathExists=/sys/firmware/efi/efivars/StubPcrKernelImage-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f
DefaultDependencies=no
Conflicts=shutdown.target
Before=sysinit.target shutdown.target
-AssertPathExists=!/etc/initrd-release
+ConditionPathExists=!/etc/initrd-release
ConditionSecurity=tpm2
ConditionPathExists=/sys/firmware/efi/efivars/StubPcrKernelImage-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f
DefaultDependencies=no
Conflicts=shutdown.target initrd-switch-root.target
Before=sysinit.target cryptsetup-pre.target cryptsetup.target shutdown.target initrd-switch-root.target systemd-sysext.service
-AssertPathExists=/etc/initrd-release
+ConditionPathExists=/etc/initrd-release
ConditionSecurity=tpm2
ConditionPathExists=/sys/firmware/efi/efivars/StubPcrKernelImage-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f
Conflicts=shutdown.target
After=sysinit.target
Before=basic.target shutdown.target
-AssertPathExists=!/etc/initrd-release
+ConditionPathExists=!/etc/initrd-release
ConditionSecurity=tpm2
ConditionPathExists=/sys/firmware/efi/efivars/StubPcrKernelImage-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f
Documentation=man:systemd-pcrphase.service(8)
After=remote-fs.target remote-cryptsetup.target
Before=systemd-user-sessions.service
-AssertPathExists=!/etc/initrd-release
+ConditionPathExists=!/etc/initrd-release
ConditionSecurity=tpm2
ConditionPathExists=/sys/firmware/efi/efivars/StubPcrKernelImage-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f