summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--.mailmap15
-rw-r--r--Makefile.am41
-rw-r--r--NEWS253
-rw-r--r--TODO5
-rwxr-xr-xautogen.sh12
-rw-r--r--catalog/systemd.ko.catalog.in61
-rw-r--r--configure.ac2
-rw-r--r--hwdb/20-OUI.hwdb6343
-rw-r--r--hwdb/20-acpi-vendor.hwdb24
-rw-r--r--hwdb/20-pci-vendor-model.hwdb1391
-rw-r--r--hwdb/20-usb-vendor-model.hwdb1149
-rwxr-xr-xhwdb/parse_hwdb.py10
-rw-r--r--man/crypttab.xml11
-rw-r--r--man/machinectl.xml2
-rw-r--r--man/nss-myhostname.xml2
-rw-r--r--man/nss-mymachines.xml2
-rw-r--r--man/nss-resolve.xml2
-rw-r--r--man/nss-systemd.xml2
-rw-r--r--man/sd_event_source_set_priority.xml6
-rw-r--r--man/sd_journal_stream_fd.xml2
-rw-r--r--man/sd_notify.xml41
-rw-r--r--man/systemctl.xml15
-rw-r--r--man/systemd-detect-virt.xml16
-rw-r--r--man/systemd-escape.xml13
-rw-r--r--man/systemd-machine-id-setup.xml4
-rw-r--r--man/systemd-socket-activate.xml2
-rw-r--r--man/systemd-system.conf.xml7
-rw-r--r--man/systemd-vconsole-setup.service.xml28
-rw-r--r--man/systemd.exec.xml141
-rw-r--r--man/systemd.offline-updates.xml2
-rw-r--r--man/systemd.service.xml4
-rw-r--r--man/systemd.target.xml2
-rw-r--r--man/systemd.unit.xml3
-rw-r--r--man/tmpfiles.d.xml2
-rw-r--r--man/udev.xml4
-rw-r--r--src/basic/log.c2
-rw-r--r--src/basic/mount-util.c3
-rw-r--r--src/basic/path-util.c10
-rw-r--r--src/basic/special.h3
-rw-r--r--src/basic/virt.c70
-rw-r--r--src/basic/virt.h1
-rw-r--r--src/core/dbus-manager.c81
-rw-r--r--src/core/dbus-service.c6
-rw-r--r--src/core/dbus-unit.c12
-rw-r--r--src/core/device.c6
-rw-r--r--src/core/emergency-action.c (renamed from src/core/failure-action.c)65
-rw-r--r--src/core/emergency-action.h (renamed from src/core/failure-action.h)28
-rw-r--r--src/core/execute.c651
-rw-r--r--src/core/job.c21
-rw-r--r--src/core/load-fragment-gperf.gperf.m48
-rw-r--r--src/core/load-fragment.c65
-rw-r--r--src/core/load-fragment.h2
-rw-r--r--src/core/main.c9
-rw-r--r--src/core/manager.c33
-rw-r--r--src/core/manager.h13
-rw-r--r--src/core/mount.c82
-rw-r--r--src/core/org.freedesktop.systemd1.conf4
-rw-r--r--src/core/scope.c53
-rw-r--r--src/core/service.c63
-rw-r--r--src/core/service.h2
-rw-r--r--src/core/slice.c47
-rw-r--r--src/core/swap.c6
-rw-r--r--src/core/unit.c59
-rw-r--r--src/core/unit.h15
-rw-r--r--src/cryptsetup/cryptsetup.c14
-rw-r--r--src/detect-virt/detect-virt.c31
-rw-r--r--src/hwdb/hwdb.c4
-rw-r--r--src/journal/journald-server.c2
-rw-r--r--src/journal/test-compress.c7
-rw-r--r--src/network/networkd-link.c7
-rw-r--r--src/network/networkd-ndisc.c41
-rw-r--r--src/network/networkd-ndisc.h1
-rw-r--r--src/network/networkd-netdev-bond.c6
-rw-r--r--src/network/networkd-network-gperf.gperf2
-rw-r--r--src/network/networkd-network.c50
-rw-r--r--src/network/networkd-network.h1
-rw-r--r--src/nspawn/nspawn-mount.c55
-rw-r--r--src/nspawn/nspawn-seccomp.c18
-rw-r--r--src/nspawn/nspawn.c22
-rw-r--r--src/nss-resolve/nss-resolve.c19
-rw-r--r--src/resolve/resolved-dns-server.c5
-rw-r--r--src/shared/condition.c28
-rw-r--r--src/shared/install.c99
-rw-r--r--src/shared/install.h34
-rw-r--r--src/shared/seccomp-util.c351
-rw-r--r--src/shared/seccomp-util.h39
-rw-r--r--src/shared/switch-root.c25
-rw-r--r--src/sysctl/sysctl.c62
-rw-r--r--src/systemctl/systemctl.c167
-rw-r--r--src/test/test-condition.c60
-rw-r--r--src/test/test-execute.c49
-rw-r--r--src/test/test-install-root.c62
-rw-r--r--src/test/test-install.c38
-rw-r--r--src/test/test-path-util.c41
-rw-r--r--src/test/test-seccomp.c136
-rw-r--r--src/test/test-tables.c4
-rw-r--r--src/test/test-unit-file.c2
-rw-r--r--src/udev/collect/collect.c6
-rw-r--r--src/udev/udev-builtin-net_id.c41
-rw-r--r--src/udev/udev-node.c4
-rw-r--r--src/udev/udev-rules.c8
-rw-r--r--src/udev/udev-watch.c6
-rw-r--r--src/update-done/update-done.c15
-rw-r--r--src/vconsole/90-vconsole.rules.in2
-rw-r--r--src/vconsole/vconsole-setup.c58
-rwxr-xr-xtest/TEST-04-JOURNAL/test-journal.sh8
-rw-r--r--test/TEST-13-NSPAWN-SMOKE/Makefile4
-rw-r--r--test/TEST-13-NSPAWN-SMOKE/has-overflow.c143
-rwxr-xr-xtest/TEST-13-NSPAWN-SMOKE/test.sh19
-rw-r--r--test/test-execute/exec-dynamicuser-fixeduser-one-supplementarygroup.service9
-rw-r--r--test/test-execute/exec-dynamicuser-fixeduser.service8
-rw-r--r--test/test-execute/exec-dynamicuser-supplementarygroups.service8
-rw-r--r--test/test-execute/exec-supplementarygroups-multiple-groups-default-group-user.service7
-rw-r--r--test/test-execute/exec-supplementarygroups-multiple-groups-withgid.service8
-rw-r--r--test/test-execute/exec-supplementarygroups-multiple-groups-withuid.service8
-rw-r--r--test/test-execute/exec-supplementarygroups-single-group-user.service9
-rw-r--r--test/test-execute/exec-supplementarygroups-single-group.service8
-rw-r--r--test/test-execute/exec-supplementarygroups.service7
-rw-r--r--units/dev-hugepages.mount1
-rw-r--r--units/x-.slice12
121 files changed, 9311 insertions, 3611 deletions
diff --git a/.gitignore b/.gitignore
index c925f19f41..21fcf9841c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,6 @@
*.a
*.cache
+*.gch
*.la
*.lo
*.log
@@ -261,6 +262,7 @@
/test-ring
/test-rlimit-util
/test-sched-prio
+/test-seccomp
/test-selinux
/test-set
/test-sizeof
diff --git a/.mailmap b/.mailmap
index d56fb67845..d007ba741e 100644
--- a/.mailmap
+++ b/.mailmap
@@ -74,3 +74,18 @@ Thomas H. P. Andersen <phomes@gmail.com>
Michael Olbrich <m.olbrich@pengutronix.de>
Douglas Christman <DouglasChristman@gmail.com>
Alexander Kuleshov <kuleshovmail@gmail.com> <0xAX@users.noreply.github.com>
+Andreas Henriksson <andreas@fatal.se>
+Daniel Rusek <mail@asciiwolf.com>
+Dennis Wassenberg <dennis.wassenberg@secunet.com>
+Reid Price <reid.price@gmail.com>
+Stefan Schweter <stefan@schweter.it>
+Seraphime Kirkovski <kirkseraph@gmail.com>
+Bart Rulon <barron@lexmark.com>
+Richard W.M. Jones <rjones@redhat.com>
+Roman Stingler <coolx67@gmx.at>
+Michael Hoy <rimmington@gmail.com>
+Tiago Levit <liamgliam@gmail.com>
+Eric Cook <llua@users.noreply.github.com>
+Lukáš Nykrýn <lnykryn@redhat.com>
+Heikki Kemppainen <heikki.kemppainen@nokia.com>
+Hendrik Brueckner <hbrueckner@users.noreply.github.com>
diff --git a/Makefile.am b/Makefile.am
index 00124a29f8..f7652c2346 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -42,9 +42,9 @@ LIBUDEV_CURRENT=7
LIBUDEV_REVISION=5
LIBUDEV_AGE=6
-LIBSYSTEMD_CURRENT=16
+LIBSYSTEMD_CURRENT=17
LIBSYSTEMD_REVISION=0
-LIBSYSTEMD_AGE=16
+LIBSYSTEMD_AGE=17
# Dirs of external packages
dbuspolicydir=@dbuspolicydir@
@@ -493,7 +493,6 @@ dist_systemunit_DATA = \
units/swap.target \
units/slices.target \
units/system.slice \
- units/x-.slice \
units/systemd-initctl.socket \
units/syslog.socket \
units/dev-hugepages.mount \
@@ -637,17 +636,6 @@ GENERAL_ALIASES += \
$(systemunitdir)/reboot.target $(pkgsysconfdir)/system/ctrl-alt-del.target \
$(systemunitdir)/machines.target $(pkgsysconfdir)/system/multi-user.target.wants/machines.target
-# automake is broken and can't handle files with a dash in front
-# http://debbugs.gnu.org/cgi/bugreport.cgi?bug=14728#8
-units-install-hook:
- mv $(DESTDIR)$(systemunitdir)/x-.slice $(DESTDIR)/$(systemunitdir)/-.slice
-
-units-uninstall-hook:
- rm -f $(DESTDIR)/$(systemunitdir)/-.slice
-
-INSTALL_DATA_HOOKS += units-install-hook
-UNINSTALL_DATA_HOOKS += units-uninstall-hook
-
dist_doc_DATA = \
README \
NEWS \
@@ -1275,8 +1263,8 @@ libcore_la_SOURCES = \
src/core/audit-fd.h \
src/core/show-status.c \
src/core/show-status.h \
- src/core/failure-action.c \
- src/core/failure-action.h
+ src/core/emergency-action.c \
+ src/core/emergency-action.h
nodist_libcore_la_SOURCES = \
src/core/load-fragment-gperf.c \
@@ -1570,6 +1558,11 @@ tests += \
test-acl-util
endif
+if HAVE_SECCOMP
+tests += \
+ test-seccomp
+endif
+
EXTRA_DIST += \
test/a.service \
test/basic.target \
@@ -1627,6 +1620,15 @@ EXTRA_DIST += \
test/test-execute/exec-passenvironment.service \
test/test-execute/exec-group.service \
test/test-execute/exec-group-nfsnobody.service \
+ test/test-execute/exec-supplementarygroups.service \
+ test/test-execute/exec-supplementarygroups-single-group.service \
+ test/test-execute/exec-supplementarygroups-single-group-user.service \
+ test/test-execute/exec-supplementarygroups-multiple-groups-default-group-user.service \
+ test/test-execute/exec-supplementarygroups-multiple-groups-withgid.service \
+ test/test-execute/exec-supplementarygroups-multiple-groups-withuid.service \
+ test/test-execute/exec-dynamicuser-fixeduser.service \
+ test/test-execute/exec-dynamicuser-fixeduser-one-supplementarygroup.service \
+ test/test-execute/exec-dynamicuser-supplementarygroups.service \
test/test-execute/exec-ignoresigpipe-no.service \
test/test-execute/exec-ignoresigpipe-yes.service \
test/test-execute/exec-personality-x86-64.service \
@@ -2032,6 +2034,12 @@ test_acl_util_SOURCES = \
test_acl_util_LDADD = \
libsystemd-shared.la
+test_seccomp_SOURCES = \
+ src/test/test-seccomp.c
+
+test_seccomp_LDADD = \
+ libsystemd-shared.la
+
test_namespace_LDADD = \
libcore.la
@@ -6031,7 +6039,6 @@ EXTRA_DIST += \
test/TEST-12-ISSUE-3171/Makefile \
test/TEST-12-ISSUE-3171/test.sh \
test/TEST-13-NSPAWN-SMOKE/Makefile \
- test/TEST-13-NSPAWN-SMOKE/has-overflow.c \
test/TEST-13-NSPAWN-SMOKE/create-busybox-container \
test/TEST-13-NSPAWN-SMOKE/test.sh \
test/test-functions
diff --git a/NEWS b/NEWS
index 24d6ae1bd2..b10a6f538f 100644
--- a/NEWS
+++ b/NEWS
@@ -1,12 +1,13 @@
systemd System and Service Manager
-CHANGES WITH 232 in spe
+CHANGES WITH 232:
* The new RemoveIPC= option can be used to remove IPC objects owned by
the user or group of a service when that service exits.
* The new ProtectKernelModules= option can be used to disable explicit
- load and unload operations of kernel modules by a service.
+ load and unload operations of kernel modules by a service. In
+ addition access to /usr/lib/modules is removed if this option is set.
* ProtectSystem= option gained a new value "strict", which causes the
whole file system tree with the exception of /dev, /proc, and /sys,
@@ -35,14 +36,14 @@ CHANGES WITH 232 in spe
ProtectSystem=strict enabled, so they are not able to make any
permanent modifications to the system.
- The nss-systemd module also always resolves root and nobody, making
+ * The nss-systemd module also always resolves root and nobody, making
it possible to have no /etc/passwd or /etc/group files in minimal
- container systems.
+ container or chroot environments.
* Services may be started with their own user namespace using the new
- PrivateUsers= option. Only root, nobody, and the uid/gid under which
- the service is running are mapped. All other users are mapped to
- nobody.
+ boolean PrivateUsers= option. Only root, nobody, and the uid/gid
+ under which the service is running are mapped. All other users are
+ mapped to nobody.
* Support for the cgroup namespace has been added to systemd-nspawn. If
supported by kernel, the container system started by systemd-nspawn
@@ -57,12 +58,22 @@ CHANGES WITH 232 in spe
options. This controller requires out-of-tree patches for the kernel
and the support is provisional.
- * .automount units may now be transient.
-
- * systemd-mount is a new tool which wraps mount(8) to pull in
- additional dependencies through transient .mount and .automount
- units. For example, this automatically runs fsck on the block device
- before mounting, and allows the automount logic to be used.
+ * Mount and automount units may now be created transiently
+ (i.e. dynamically at runtime via the bus API, instead of requiring
+ unit files in the file system).
+
+ * systemd-mount is a new tool which may mount file systems – much like
+ mount(8), optionally pulling in additional dependencies through
+ transient .mount and .automount units. For example, this tool
+ automatically runs fsck on a backing block device before mounting,
+ and allows the automount logic to be used dynamically from the
+ command line for establishing mount points. This tool is particularly
+ useful when dealing with removable media, as it will ensure fsck is
+ run – if necessary – before the first access and that the file system
+ is quickly unmounted after each access by utilizing the automount
+ logic. This maximizes the chance that the file system on the
+ removable media stays in a clean state, and if it isn't in a clean
+ state is fixed automatically.
* LazyUnmount=yes option for mount units has been added to expose the
umount --lazy option. Similarly, ForceUnmount=yes exposes the --force
@@ -75,6 +86,12 @@ CHANGES WITH 232 in spe
mount the EFI partition on systems where /boot is used for something
else.
+ * When operating on GPT disk images for containers, systemd-nspawn will
+ now mount the ESP to /boot or /efi according to the same rules as PID
+ 1 running on a host. This allows tools like "bootctl" to operate
+ correctly within such containers, in order to make container images
+ bootable on physical systems.
+
* disk/by-id and disk/by-path symlinks are now created for NVMe drives.
* Two new user session targets have been added to support running
@@ -95,7 +112,7 @@ CHANGES WITH 232 in spe
the top of the process hierarchy (which is usually the init process
of the container).
- * systemd-journal-gatewayd learned the --directory option to serve
+ * systemd-journal-gatewayd learned the --directory= option to serve
files from the specified location.
* journalctl --root=… can be used to peruse the journal in the
@@ -112,23 +129,26 @@ CHANGES WITH 232 in spe
a click rate that is different than the one for the vertical wheel.
* systemd-run gained a new --wait option that makes service execution
- synchronous.
+ synchronous. (Specifically, the command will not return until the
+ specified service binary exited.)
- systemctl gained a new --wait option that causes the start command to
+ * systemctl gained a new --wait option that causes the start command to
wait until the units being started have terminated again.
- * A new journal output mode "short-full" has been added which uses
+ * A new journal output mode "short-full" has been added which displays
timestamps with abbreviated English day names and adds a timezone
- suffix. Those timestamps include more information and can be parsed
- by journalctl.
+ suffix. Those timestamps include more information than the default
+ "short" output mode, and can be passed directly to journalctl's
+ --since= and --until= options.
* /etc/resolv.conf will be bind-mounted into containers started by
systemd-nspawn, if possible, so any changes to resolv.conf contents
are automatically propagated to the container.
* The number of instances for socket-activated services originating
- from a single IP can be limited with MaxConnectionsPerSource=,
- extending the existing setting of MaxConnections.
+ from a single IP address can be limited with
+ MaxConnectionsPerSource=, extending the existing setting of
+ MaxConnections=.
* systemd-networkd gained support for vcan ("Virtual CAN") interface
configuration.
@@ -143,21 +163,23 @@ CHANGES WITH 232 in spe
GenericReceiveOffload=, LargeReceiveOffload= options in the
[Link] section of .link files.
- Spanning Tree Protocol enablement, Priority, Aging Time, and the
- Default Port VLAN ID can be configured for bridge devices using the
- new STP=, Priority=, AgeingTimeSec=, and DefaultPVID= settings in the
- [Bridge] section of .netdev files.
+ * The Spanning Tree Protocol, Priority, Aging Time, and the Default
+ Port VLAN ID can be configured for bridge devices using the new STP=,
+ Priority=, AgeingTimeSec=, and DefaultPVID= settings in the [Bridge]
+ section of .netdev files.
- The route table to which routes received over DHCP or RA should be
+ * The route table to which routes received over DHCP or RA should be
added can be configured with the new RouteTable= option in the [DHCP]
and [IPv6AcceptRA] sections of .network files.
- Address Resolution Protocol can be disabled on links managed by
+ * The Address Resolution Protocol can be disabled on links managed by
systemd-networkd using the ARP=no setting in the [Link] section of
.network files.
- * $SERVICE_RESULT, $EXIT_CODE, $EXIT_STATUS are set for ExecStop= and
- ExecStopPost= commands.
+ * New environment variables $SERVICE_RESULT, $EXIT_CODE and
+ $EXIT_STATUS are set for ExecStop= and ExecStopPost= commands, and
+ encode information about the result and exit codes of the current
+ service runtime cycle.
* systemd-sysctl will now configure kernel parameters in the order
they occur in the configuration files. This matches what sysctl
@@ -184,6 +206,149 @@ CHANGES WITH 232 in spe
$SYSTEMD_NSPAWN_SHARE_NS_UTS may be used to control the unsharing of
individual namespaces.
+ * "machinectl list" now shows the IP address of running containers in
+ the output, as well as OS release information.
+
+ * "loginctl list" now shows the TTY of each session in the output.
+
+ * sd-bus gained new API calls sd_bus_track_set_recursive(),
+ sd_bus_track_get_recursive(), sd_bus_track_count_name(),
+ sd_bus_track_count_sender(). They permit usage of sd_bus_track peer
+ tracking objects in a "recursive" mode, where a single client can be
+ counted multiple times, if it takes multiple references.
+
+ * sd-bus gained new API calls sd_bus_set_exit_on_disconnect() and
+ sd_bus_get_exit_on_disconnect(). They may be used to to make a
+ process using sd-bus automatically exit if the bus connection is
+ severed.
+
+ * Bus clients of the service manager may now "pin" loaded units into
+ memory, by taking an explicit reference on them. This is useful to
+ ensure the client can retrieve runtime data about the service even
+ after the service completed execution. Taking such a reference is
+ available only for privileged clients and should be helpful to watch
+ running services in a race-free manner, and in particular collect
+ information about exit statuses and results.
+
+ * The nss-resolve module has been changed to strictly return UNAVAIL
+ when communication via D-Bus with resolved failed, and NOTFOUND when
+ a lookup completed but was negative. This means it is now possible to
+ neatly configure fallbacks using nsswitch.conf result checking
+ expressions. Taking benefit of this, the new recommended
+ configuration line for the "hosts" entry in /etc/nsswitch.conf is:
+
+ hosts: files mymachines resolve [!UNAVAIL=return] dns myhostname
+
+ * A new setting CtrlAltDelBurstAction= has been added to
+ /etc/systemd/system.conf which may be used to configure the precise
+ behaviour if the user on the console presses Ctrl-Alt-Del more often
+ than 7 times in 2s. Previously this would unconditionally result in
+ an expedited, immediate reboot. With this new setting the precise
+ operation may be configured in more detail, and also turned off
+ entirely.
+
+ * In .netdev files two new settings RemoteChecksumTx= and
+ RemoteChecksumRx= are now understood that permit configuring the
+ remote checksumming logic for VXLAN networks.
+
+ * The service manager learnt a new "invocation ID" concept for invoked
+ services. Each runtime cycle of a service will get a new invocation
+ ID (a 128bit random UUID) assigned that identifies the current
+ run of the service uniquely and globally. A new invocation ID
+ is generated each time a service starts up. The journal will store
+ the invocation ID of a service along with any logged messages, thus
+ making the invocation ID useful for matching the online runtime of a
+ service with the offline log data it generated in a safe way without
+ relying on synchronized timestamps. In many ways this new service
+ invocation ID concept is similar to the kernel's boot ID concept that
+ uniquely and globally identifies the runtime of each boot. The
+ invocation ID of a service is passed to the service itself via an
+ environment variable ($INVOCATION_ID). A new bus call
+ GetUnitByInvocationID() has been added that is similar to GetUnit()
+ but instead of retrieving the bus path for a unit by its name
+ retrieves it by its invocation ID. The returned path is valid only as
+ long as the passed invocation ID is current.
+
+ * systemd-resolved gained a new "DNSStubListener" setting in
+ resolved.conf. It either takes a boolean value or the special values
+ "udp" and "tcp", and configures whether to enable the stub DNS
+ listener on 127.0.0.53:53.
+
+ * IP addresses configured via networkd may now carry additional
+ configuration settings supported by the kernel. New options include:
+ HomeAddress=, DuplicateAddressDetection=, ManageTemporaryAddress=,
+ PrefixRoute=, AutoJoin=.
+
+ * The PAM configuration fragment file for "user@.service" shipped with
+ systemd (i.e. the --user instance of systemd) has been stripped to
+ the minimum necessary to make the system boot. Previously, it
+ contained Fedora-specific stanzas that did not apply to other
+ distributions. It is expected that downstream distributions add
+ additional configuration lines, matching their needs to this file,
+ using it only as rough template of what systemd itself needs. Note
+ that this reduced fragment does not even include an invocation of
+ pam_limits which most distributions probably want to add, even though
+ systemd itself does not need it. (There's also the new build time
+ option --with-pamconfdir=no to disable installation of the PAM
+ fragment entirely.)
+
+ * If PrivateDevices=yes is set for a service the CAP_SYS_RAWIO
+ capability is now also dropped from its set (in addition to
+ CAP_SYS_MKNOD as before).
+
+ * In service unit files it is now possible to connect a specific named
+ file descriptor with stdin/stdout/stdout of an executed service. The
+ name may be specified in matching .socket units using the
+ FileDescriptorName= setting.
+
+ * A number of journal settings may now be configured on the kernel
+ command line. Specifically, the following options are now understood:
+ systemd.journald.max_level_console=,
+ systemd.journald.max_level_store=,
+ systemd.journald.max_level_syslog=, systemd.journald.max_level_kmsg=,
+ systemd.journald.max_level_wall=.
+
+ * "systemctl is-enabled --full" will now show by which symlinks a unit
+ file is enabled in the unit dependency tree.
+
+ * Support for VeraCrypt encrypted partitions has been added to the
+ "cryptsetup" logic and /etc/crypttab.
+
+ * systemd-detect-virt gained support for a new --private-users switch
+ that checks whether the invoking processes are running inside a user
+ namespace. Similar, a new special value "private-users" for the
+ existing ConditionVirtualization= setting has been added, permitting
+ skipping of specific units in user namespace environments.
+
+ Contributions from: Alban Crequy, Alexander Kuleshov, Alfie John,
+ Andreas Henriksson, Andrew Jeddeloh, Balázs Úr, Bart Rulon, Benjamin
+ Richter, Ben Gamari, Ben Harris, Brian J. Murrell, Christian Brauner,
+ Christian Rebischke, Clinton Roy, Colin Walters, Cristian Rodríguez,
+ Daniel Hahler, Daniel Mack, Daniel Maixner, Daniel Rusek, Dan Dedrick,
+ Davide Cavalca, David Herrmann, David Michael, Dennis Wassenberg,
+ Djalal Harouni, Dongsu Park, Douglas Christman, Elias Probst, Eric
+ Cook, Erik Karlsson, Evgeny Vereshchagin, Felipe Sateler, Felix Zhang,
+ Franck Bui, George Hilliard, Giuseppe Scrivano, HATAYAMA Daisuke,
+ Heikki Kemppainen, Hendrik Brueckner, hi117, Ismo Puustinen, Ivan
+ Shapovalov, Jakub Filak, Jakub Wilk, Jan Synacek, Jason Kölker,
+ Jean-Sébastien Bour, Jiří Pírko, Jonathan Boulle, Jorge Niedbalski,
+ Keith Busch, kristbaum, Kyle Russell, Lans Zhang, Lennart Poettering,
+ Leonardo Brondani Schenkel, Lucas Werkmeister, Luca Bruno, Lukáš
+ Nykrýn, Maciek Borzecki, Mantas Mikulėnas, Marc-Antoine Perennou,
+ Marcel Holtmann, Marcos Mello, Martin Ejdestig, Martin Pitt, Matej
+ Habrnal, Maxime de Roucy, Michael Biebl, Michael Chapman, Michael Hoy,
+ Michael Olbrich, Michael Pope, Michal Sekletar, Michal Soltys, Mike
+ Gilbert, Nick Owens, Patrik Flykt, Paweł Szewczyk, Peter Hutterer,
+ Piotr Drąg, Reid Price, Richard W.M. Jones, Roman Stingler, Ronny
+ Chevalier, Seraphime Kirkovski, Stefan Schweter, Steve Muir, Susant
+ Sahani, Tejun Heo, Thomas Blume, Thomas H. P. Andersen, Tiago Levit,
+ Tobias Jungel, Tomáš Janoušek, Topi Miettinen, Torstein Husebø, Umut
+ Tezduyar Lindskog, Vito Caputo, WaLyong Cho, Wilhelm Schuster, Yann
+ E. MORIN, Yi EungJun, Yuki Inoguchi, Yu Watanabe, Zbigniew
+ Jędrzejewski-Szmek, Zeal Jagannatha
+
+ — Santa Fe, 2016-11-03
+
CHANGES WITH 231:
* In service units the various ExecXYZ= settings have been extended
@@ -360,7 +525,7 @@ CHANGES WITH 231:
file. It can be used in lieu of %systemd_requires in packages which
don't use any systemd functionality and are intended to be installed
in minimal containers without systemd present. This macro provides
- ordering dependecies to ensure that if the package is installed in
+ ordering dependencies to ensure that if the package is installed in
the same rpm transaction as systemd, systemd will be installed before
the scriptlets for the package are executed, allowing unit presets
to be handled.
@@ -395,7 +560,7 @@ CHANGES WITH 231:
"mkosi" is invoked in the build tree a new raw OS image is generated
incorporating the systemd sources currently being worked on and a
clean, fresh distribution installation. The generated OS image may be
- booted up with "systemd-nspawn -b -i", qemu-kvm or on any physcial
+ booted up with "systemd-nspawn -b -i", qemu-kvm or on any physical
UEFI PC. This functionality is particularly useful to easily test
local changes made to systemd in a pristine, defined environment. See
HACKING for details.
@@ -1058,7 +1223,7 @@ CHANGES WITH 228:
--user instance of systemd these specifiers where correctly
resolved, but hardly made any sense, since the user instance
lacks privileges to do user switches anyway, and User= is
- hence useless. Morever, even in the --user instance of
+ hence useless. Moreover, even in the --user instance of
systemd behaviour was awkward as it would only take settings
from User= assignment placed before the specifier into
account. In order to unify and simplify the logic around
@@ -1194,7 +1359,7 @@ CHANGES WITH 227:
* The RuntimeDirectory= setting now understands unit
specifiers like %i or %f.
- * A new (still internal) libary API sd-ipv4acd has been added,
+ * A new (still internal) library API sd-ipv4acd has been added,
that implements address conflict detection for IPv4. It's
based on code from sd-ipv4ll, and will be useful for
detecting DHCP address conflicts.
@@ -1763,7 +1928,7 @@ CHANGES WITH 220:
* systemd-nspawn gained a new --property= setting to set unit
properties for the container scope. This is useful for
- setting resource parameters (e.g "CPUShares=500") on
+ setting resource parameters (e.g. "CPUShares=500") on
containers started from the command line.
* systemd-nspawn gained a new --private-users= switch to make
@@ -2061,7 +2226,7 @@ CHANGES WITH 219:
files.
* systemd now provides a way to store file descriptors
- per-service in PID 1.This is useful for daemons to ensure
+ per-service in PID 1. This is useful for daemons to ensure
that fds they require are not lost during a daemon
restart. The fds are passed to the daemon on the next
invocation in the same way socket activation fds are
@@ -3109,7 +3274,7 @@ CHANGES WITH 214:
time, the extended attribute calls have moved to glibc, and
libattr is thus unnecessary.
- * Virtualization detection works without priviliges now. This
+ * Virtualization detection works without privileges now. This
means the systemd-detect-virt binary no longer requires
CAP_SYS_PTRACE file capabilities, and our daemons can run
with fewer privileges.
@@ -3833,7 +3998,7 @@ CHANGES WITH 209:
/usr/lib/net/links/99-default.link. Old
80-net-name-slot.rules udev configuration file has been
removed, so local configuration overriding this file should
- be adapated to override 99-default.link instead.
+ be adapted to override 99-default.link instead.
* When the User= switch is used in a unit file, also
initialize $SHELL= based on the user database entry.
@@ -4476,7 +4641,7 @@ CHANGES WITH 206:
* logind's device ACLs may now be applied to these "dead"
devices nodes too, thus finally allowing managed access to
- devices such as /dev/snd/sequencer whithout loading the
+ devices such as /dev/snd/sequencer without loading the
backing module right-away.
* A new RPM macro has been added that may be used to apply
@@ -4967,7 +5132,7 @@ CHANGES WITH 199:
processes executed in parallel based on the number of available
CPUs instead of the amount of available RAM. This is supposed
to provide a more reliable default and limit a too aggressive
- paralellism for setups with 1000s of devices connected.
+ parallelism for setups with 1000s of devices connected.
Contributions from: Auke Kok, Colin Walters, Cristian
Rodríguez, Daniel Buch, Dave Reisner, Frederic Crozat, Hannes
@@ -5305,7 +5470,7 @@ CHANGES WITH 197:
presenting log data.
* systemctl will no longer show control group information for
- a unit if a the control group is empty anyway.
+ a unit if the control group is empty anyway.
* logind can now automatically suspend/hibernate/shutdown the
system on idle.
@@ -6096,7 +6261,7 @@ CHANGES WITH 186:
* The SysV search path is no longer exported on the D-Bus
Manager object.
- * The Names= option is been removed from unit file parsing.
+ * The Names= option has been removed from unit file parsing.
* There's a new man page bootup(7) detailing the boot process.
@@ -6241,7 +6406,7 @@ CHANGES WITH 183:
about this in more detail.
* var-run.mount and var-lock.mount are no longer provided
- (which prevously bind mounted these directories to their new
+ (which previously bind mounted these directories to their new
places). Distributions which have not converted these
directories to symlinks should consider stealing these files
from git history and add them downstream.
@@ -6382,7 +6547,7 @@ CHANGES WITH 44:
* Many bugfixes for the journal, including endianness fixes and
ensuring that disk space enforcement works
- * sd-login.h is C++ comptaible again
+ * sd-login.h is C++ compatible again
* Extend the /etc/os-release format on request of the Debian
folks
@@ -6610,7 +6775,7 @@ CHANGES WITH 38:
* New man pages for all APIs from libsystemd-login.
- * The build tree got reorganized and a the build system is a
+ * The build tree got reorganized and the build system is a
lot more modular allowing embedded setups to specifically
select the components of systemd they are interested in.
diff --git a/TODO b/TODO
index 7e21c3e8d5..c8266a549d 100644
--- a/TODO
+++ b/TODO
@@ -32,6 +32,11 @@ Janitorial Clean-ups:
Features:
+* drop nss-myhostname in favour of nss-resolve?
+
+* drop internal dlopen() based nss-dns fallback in nss-resolve, and rely on the
+ external nsswitch.conf based one
+
* add a percentage syntax for TimeoutStopSec=, e.g. TimeoutStopSec=150%, and
then use that for the setting used in user@.service. It should be understood
relative to the configured default value.
diff --git a/autogen.sh b/autogen.sh
index fa8d2916ad..1897e23b53 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -19,13 +19,11 @@ set -e
verb="$1"
-if [[ -n "$verb" ]]; then
- if [[ "$verb" != [cgals] ]]; then
- echo "Unexpected argument: $verb" >&2
- exit 1
- fi
- shift
-fi
+case "$verb" in
+"") ;;
+[cgals]) shift ;;
+*) echo "Unexpected argument: $verb" >&2; exit 1 ;;
+esac
oldpwd=$(pwd)
topdir=$(dirname $0)
diff --git a/catalog/systemd.ko.catalog.in b/catalog/systemd.ko.catalog.in
index 8a053254ee..0249cba747 100644
--- a/catalog/systemd.ko.catalog.in
+++ b/catalog/systemd.ko.catalog.in
@@ -25,6 +25,7 @@
#
# Translator :
# Seong-ho Cho <darkcircle.0426@gmail.com>, 2015.
+# Dongsu Park <dpark@posteo.net>, 2016.
-- f77379a8490b408bbe5f6940505a777b
Subject: 저널 시작
@@ -42,6 +43,24 @@ Support: %SUPPORT_URL%
시스템 저널 프로세스를 껐고 현재 활성화 중인 저널 파일을 모두
닫았습니다.
+-- ec387f577b844b8fa948f33cad9a75e6
+Subject: 저널이 디스크 공간을 점유중
+Defined-By: systemd
+Support: %SUPPORT_URL%
+
+저널 @JOURNAL_NAME@ (@JOURNAL_PATH@)이 현재 @CURRENT_USE_PRETTY@
+만큼의 용량을 사용하고 있습니다. 최대 허용 용량은
+@MAX_USE_PRETTY@입니다. 최소한 @DISK_KEEP_FREE_PRETTY@의 빈공간을
+남겨둡니다. (현재 디스크 전체 용량은 @DISK_AVAILABLE_PRETTY@)
+따라서 실제 사용 최대 한도는 @LIMIT_PRETTY@으로 설정되며,
+@AVAILABLE_PRETTY@ 만큼의 용량이 계속 비어있습니다.
+
+저널이 차지하는 디스크 공간을 제어하기 위해서는
+/etc/systemd/journald.conf 의 SystemMaxUse=, SystemKeepFree=,
+SystemMaxFileSize=, RuntimeMaxUse=, RuntimeKeepFree=,
+RuntimeMaxFileSize= 변수를 설정합니다. 자세한 내용은
+journald.conf(5)을 살펴보십시오.
+
-- a596d6fe7bfa4994828e72309e95d61e
Subject: 서비스의 메시지를 거절함
Defined-By: systemd
@@ -56,7 +75,7 @@ Documentation: man:journald.conf(5)
메시지 거절 제어 제한 값은 /etc/systemd/journald.conf 의
RateLimitIntervalSec= 변수와 RateLimitBurst= 변수로 설정합니다.
-자세한 내용은 ournald.conf(5)를 살펴보십시오.
+자세한 내용은 journald.conf(5)를 살펴보십시오.
-- e9bf28e6e834481bb6f48f548ad13606
Subject: 저널 메시지 놓침
@@ -246,7 +265,7 @@ Support: %SUPPORT_URL%
두번째 필드 또는 systemd 유닛 파일의 Where= 필드) 비어있지 않습니다.
마운트 과정에 방해가 되진 않지만 이전에 이 디렉터리에 존재하는 파일에
접근할 수 없게 됩니다. 중복으로 마운트한 파일을 보려면, 근본 파일
-시스템의 다음 위치에 직접 마운트하십시오.
+시스템을 별도 위치에 직접 마운트하십시오.
-- 24d8d4452573402496068381a6312df2
Subject: 가상 머신 또는 컨테이너 시작
@@ -262,3 +281,41 @@ Defined-By: systemd
Support: %SUPPORT_URL%
@LEADER@ 프로세스 ID로 동작하는 @NAME@ 가상 머신을 껐습니다.
+
+-- 36db2dfa5a9045e1bd4af5f93e1cf057
+Subject: 서버 미지원으로 인하여 DNSSEC 모드 종료
+Defined-By: systemd
+Support: %SUPPORT_URL%
+Documentation: man:systemd-resolved.service(8) resolved.conf(5)
+
+해당 DNS 서버가 DNSSEC을 지원하지 않는다는 것을 리졸버 서비스
+(systemd-resolved.service)가 인식했습니다. 따라서 DNSSEC 검증 기능도
+꺼집니다.
+
+이 이벤트는 resolved.conf 파일에 DNSSEC=allow-downgrade가 설정되었고, 해당
+DNS 서버가 DNSSEC과 비호환일 경우에만 발생합니다. 이 모드를 켤 경우에는
+DNSSEC 다운그레이드 공격을 허용할수 있다는 점에 주의하세요. 이는 공격자
+역시 다운그레이드가 발생한 통신 채널에 DNS 응답 메시지를 끼워넣는 방식으로
+DNSSEC 검증 기능을 꺼버릴수 있기 때문입니다.
+
+이 이벤트가 의미하는 것은, DNS 서버가 실제로 DNSSEC과 비호환이거나, 또는
+공격자가 위와 같은 다운그레이드 공격을 수행하는데 성공했다는 뜻입니다.
+
+-- 1675d7f172174098b1108bf8c7dc8f5d
+Subject: DNSSEC 검증 실패
+Defined-By: systemd
+Support: %SUPPORT_URL%
+Documentation: man:systemd-resolved.service(8)
+
+DNS 요청 또는 리소스 레코드가 DNSSEC 검증에 실패했습니다. 이것은 보통
+해당 통신 채널이 조작되었다는 뜻입니다.
+
+-- 4d4408cfd0d144859184d1e65d7c8a65
+Subject: DNSSEC 신뢰성 시작점 취소
+Defined-By: systemd
+Support: %SUPPORT_URL%
+Documentation: man:systemd-resolved.service(8)
+
+DNSSEC 신뢰성 시작점이 취소되었습니다. 새로운 신뢰성 시작점이 설정되거나,
+또는 업데이트된 DNSSEC 신뢰성 시작점을 제공하기 위해서 운영체제를 업데이트
+해야 합니다.
diff --git a/configure.ac b/configure.ac
index 0e87adc38f..0b10fc7de7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -20,7 +20,7 @@
AC_PREREQ([2.64])
AC_INIT([systemd],
- [231],
+ [232],
[http://github.com/systemd/systemd/issues],
[systemd],
[http://www.freedesktop.org/wiki/Software/systemd])
diff --git a/hwdb/20-OUI.hwdb b/hwdb/20-OUI.hwdb
index dd63627328..6bce57305d 100644
--- a/hwdb/20-OUI.hwdb
+++ b/hwdb/20-OUI.hwdb
@@ -998,6 +998,108 @@ OUI:70B3D51C8*
OUI:70B3D5142*
ID_OUI_FROM_DATABASE=DAVE SRL
+OUI:70B3D5666*
+ ID_OUI_FROM_DATABASE=Aplex Technology Inc.
+
+OUI:70B3D56A8*
+ ID_OUI_FROM_DATABASE=Vitsch Electronics
+
+OUI:70B3D5EBD*
+ ID_OUI_FROM_DATABASE=midBit Technologies, LLC
+
+OUI:70B3D5A8E*
+ ID_OUI_FROM_DATABASE=OMESH CITY GROUP
+
+OUI:70B3D5779*
+ ID_OUI_FROM_DATABASE=DR.BRIDGE AQUATECH
+
+OUI:70B3D5F5C*
+ ID_OUI_FROM_DATABASE=Nable Communications, Inc.
+
+OUI:70B3D5550*
+ ID_OUI_FROM_DATABASE=Merten GmbH&CoKG
+
+OUI:70B3D51BB*
+ ID_OUI_FROM_DATABASE=EFENTO T P SZYDŁOWSKI K ZARĘBA SPÓŁKA JAWNA
+
+OUI:70B3D5498*
+ ID_OUI_FROM_DATABASE=XGEM SAS
+
+OUI:70B3D5AAA*
+ ID_OUI_FROM_DATABASE=Xemex NV
+
+OUI:70B3D5197*
+ ID_OUI_FROM_DATABASE=Lattech Systems Pty Ltd
+
+OUI:70B3D5593*
+ ID_OUI_FROM_DATABASE=Asis Pro
+
+OUI:70B3D522F*
+ ID_OUI_FROM_DATABASE=Instec, Inc.
+
+OUI:70B3D5DD8*
+ ID_OUI_FROM_DATABASE=EMSCAN Corp.
+
+OUI:70B3D5ACD*
+ ID_OUI_FROM_DATABASE=CRDE
+
+OUI:70B3D5BCC*
+ ID_OUI_FROM_DATABASE=MB connect line GmbH Fernwartungssysteme
+
+OUI:70B3D55D6*
+ ID_OUI_FROM_DATABASE=BMT Messtechnik Gmbh
+
+OUI:70B3D53BE*
+ ID_OUI_FROM_DATABASE=MyDefence Communication ApS
+
+OUI:70B3D5289*
+ ID_OUI_FROM_DATABASE=Shenzhen Rongda Computer Co.,Ltd
+
+OUI:70B3D5C3E*
+ ID_OUI_FROM_DATABASE=DOSADORES ALLTRONIC
+
+OUI:70B3D59FB*
+ ID_OUI_FROM_DATABASE=Unicom Global, Inc.
+
+OUI:70B3D524D*
+ ID_OUI_FROM_DATABASE=INFO CREATIVE (HK) LTD
+
+OUI:70B3D5A36*
+ ID_OUI_FROM_DATABASE=Beijing DamingWuzhou Science&Technology Co., Ltd.
+
+OUI:70B3D59F8*
+ ID_OUI_FROM_DATABASE=Asymmetric Technologies
+
+OUI:70B3D5A85*
+ ID_OUI_FROM_DATABASE=exceet electronics GesmbH
+
+OUI:70B3D5AC5*
+ ID_OUI_FROM_DATABASE=ATOM GIKEN Co.,Ltd.
+
+OUI:70B3D5F07*
+ ID_OUI_FROM_DATABASE=DUVAL MESSIEN
+
+OUI:70B3D5939*
+ ID_OUI_FROM_DATABASE=Invertek Drives Ltd
+
+OUI:70B3D56D0*
+ ID_OUI_FROM_DATABASE=Code Blue Corporation
+
+OUI:70B3D52C3*
+ ID_OUI_FROM_DATABASE=Proterra
+
+OUI:70B3D5816*
+ ID_OUI_FROM_DATABASE=Smith Meter, Inc.
+
+OUI:70B3D5693*
+ ID_OUI_FROM_DATABASE=Altron, a.s.
+
+OUI:70B3D55D3*
+ ID_OUI_FROM_DATABASE=Supracon AG
+
+OUI:70B3D52AD*
+ ID_OUI_FROM_DATABASE=Opgal Optronic Industries
+
OUI:70B3D5D60*
ID_OUI_FROM_DATABASE=Flintab AB
@@ -1040,9 +1142,6 @@ OUI:70B3D5AE0*
OUI:70B3D52B3*
ID_OUI_FROM_DATABASE=HAS co.,ltd.
-OUI:70B3D511D*
- ID_OUI_FROM_DATABASE=Texka Labs
-
OUI:70B3D5D5A*
ID_OUI_FROM_DATABASE=WyreStorm Technologies Ltd
@@ -1817,6 +1916,66 @@ OUI:70B3D513E*
OUI:70B3D50BA*
ID_OUI_FROM_DATABASE=Ayre Acoustics, Inc.
+OUI:70B3D510C*
+ ID_OUI_FROM_DATABASE=Vocality International Ltd
+
+OUI:70B3D5B7D*
+ ID_OUI_FROM_DATABASE=LOGIX ITS Inc
+
+OUI:70B3D5307*
+ ID_OUI_FROM_DATABASE=Energi innovation Aps
+
+OUI:70B3D59FA*
+ ID_OUI_FROM_DATABASE=Ideas srl
+
+OUI:70B3D5649*
+ ID_OUI_FROM_DATABASE=swissled technologies AG
+
+OUI:70B3D5C0E*
+ ID_OUI_FROM_DATABASE=SYSDEV Srl
+
+OUI:70B3D54C7*
+ ID_OUI_FROM_DATABASE=SOLVERIS sp. z o.o.
+
+OUI:70B3D57A4*
+ ID_OUI_FROM_DATABASE=Potter Electric Signal Co. LLC
+
+OUI:70B3D5C86*
+ ID_OUI_FROM_DATABASE=Woodam Co., Ltd.
+
+OUI:70B3D5BE8*
+ ID_OUI_FROM_DATABASE=AndFun Co.,Ltd.
+
+OUI:70B3D527A*
+ ID_OUI_FROM_DATABASE=TD ECOPHISIKA
+
+OUI:70B3D554F*
+ ID_OUI_FROM_DATABASE=Assembly Contracts Limited
+
+OUI:70B3D5C0A*
+ ID_OUI_FROM_DATABASE=Infosocket Co., Ltd.
+
+OUI:70B3D5D95*
+ ID_OUI_FROM_DATABASE=SANO SERVICE Co.,Ltd
+
+OUI:70B3D52AC*
+ ID_OUI_FROM_DATABASE=New Imaging Technologies
+
+OUI:70B3D50D3*
+ ID_OUI_FROM_DATABASE=TSAT AS
+
+OUI:70B3D5A89*
+ ID_OUI_FROM_DATABASE=GBS COMMUNICATIONS, LLC
+
+OUI:70B3D57E1*
+ ID_OUI_FROM_DATABASE=Applied Materials
+
+OUI:70B3D554C*
+ ID_OUI_FROM_DATABASE=Husty M.Styczen J.Hupert Sp.J.
+
+OUI:70B3D5041*
+ ID_OUI_FROM_DATABASE=FIBERNET LTD
+
OUI:70B3D5AAE*
ID_OUI_FROM_DATABASE=Nuviz Oy
@@ -1907,29 +2066,92 @@ OUI:70B3D5238*
OUI:70B3D59B6*
ID_OUI_FROM_DATABASE=Intercomp S.p.A.
-OUI:70B3D510C*
- ID_OUI_FROM_DATABASE=Vocality International Ltd
+OUI:70B3D5E8F*
+ ID_OUI_FROM_DATABASE=DISMUNTEL, S.A.
-OUI:70B3D5B7D*
- ID_OUI_FROM_DATABASE=LOGIX ITS Inc
+OUI:70B3D57B0*
+ ID_OUI_FROM_DATABASE=Medisafe International
-OUI:70B3D5307*
- ID_OUI_FROM_DATABASE=Energi innovation Aps
+OUI:70B3D509F*
+ ID_OUI_FROM_DATABASE=COMTECH Kft.
-OUI:70B3D59FA*
- ID_OUI_FROM_DATABASE=Ideas srl
+OUI:70B3D5009*
+ ID_OUI_FROM_DATABASE=HolidayCoro
-OUI:70B3D5649*
- ID_OUI_FROM_DATABASE=swissled technologies AG
+OUI:70B3D5AB0*
+ ID_OUI_FROM_DATABASE=OSR R&D ISRAEL LTD
-OUI:70B3D5C0E*
- ID_OUI_FROM_DATABASE=SYSDEV Srl
+OUI:70B3D5317*
+ ID_OUI_FROM_DATABASE=Iotopia Solutions
-OUI:70B3D54C7*
- ID_OUI_FROM_DATABASE=SOLVERIS sp. z o.o.
+OUI:70B3D5D32*
+ ID_OUI_FROM_DATABASE=Euklis by GSG International
-OUI:70B3D57A4*
- ID_OUI_FROM_DATABASE=Potter Electric Signal Co. LLC
+OUI:70B3D56B0*
+ ID_OUI_FROM_DATABASE=PTYPE Co., LTD.
+
+OUI:70B3D51E9*
+ ID_OUI_FROM_DATABASE=comtime GmbH
+
+OUI:70B3D586C*
+ ID_OUI_FROM_DATABASE=eeas gmbh
+
+OUI:70B3D5B0C*
+ ID_OUI_FROM_DATABASE=Vigilate srl
+
+OUI:70B3D5B37*
+ ID_OUI_FROM_DATABASE=CODEC Co., Ltd.
+
+OUI:70B3D5597*
+ ID_OUI_FROM_DATABASE=VAPE RAIL INTERNATIONAL
+
+OUI:70B3D5850*
+ ID_OUI_FROM_DATABASE=REO AG
+
+OUI:70B3D537A*
+ ID_OUI_FROM_DATABASE=APG Cash Drawer, LLC
+
+OUI:70B3D5C3D*
+ ID_OUI_FROM_DATABASE=CISTECH Solutions
+
+OUI:70B3D5F8B*
+ ID_OUI_FROM_DATABASE=IOOOTA Srl
+
+OUI:70B3D52EC*
+ ID_OUI_FROM_DATABASE=Grupo Epelsa S.L.
+
+OUI:70B3D599E*
+ ID_OUI_FROM_DATABASE=Trinity College Dublin
+
+OUI:70B3D5462*
+ ID_OUI_FROM_DATABASE=EarTex
+
+OUI:70B3D54CE*
+ ID_OUI_FROM_DATABASE=Agilack
+
+OUI:70B3D5F17*
+ ID_OUI_FROM_DATABASE=VITEC
+
+OUI:70B3D511D*
+ ID_OUI_FROM_DATABASE=Dakton Microlabs LLC
+
+OUI:70B3D5924*
+ ID_OUI_FROM_DATABASE=Meridian Technologies Inc
+
+OUI:70B3D503D*
+ ID_OUI_FROM_DATABASE=QUERCUS TECHNOLOGIES, S.L.
+
+OUI:70B3D5B97*
+ ID_OUI_FROM_DATABASE=Canam Technology, Inc.
+
+OUI:70B3D5352*
+ ID_OUI_FROM_DATABASE=Globalcom Engineering SPA
+
+OUI:70B3D57F4*
+ ID_OUI_FROM_DATABASE=KST technology
+
+OUI:70B3D5122*
+ ID_OUI_FROM_DATABASE=Henri Systems Holland bv
OUI:70B3D5494*
ID_OUI_FROM_DATABASE=Schildknecht AG
@@ -2816,12 +3038,12 @@ OUI:70B3D58B3*
OUI:70B3D5599*
ID_OUI_FROM_DATABASE=LECO Corporation
-OUI:70B3D5896*
- ID_OUI_FROM_DATABASE=Shanghai Longpal Communication Equipment Co., Ltd.
-
OUI:70B3D5692*
ID_OUI_FROM_DATABASE=HOSIN INDUSTRIAL LIMITED
+OUI:70B3D5896*
+ ID_OUI_FROM_DATABASE=Shanghai Longpal Communication Equipment Co., Ltd.
+
OUI:70B3D5AE7*
ID_OUI_FROM_DATABASE=E-T-A Elektrotechnische Apparate GmbH
@@ -2834,15 +3056,15 @@ OUI:70B3D5E0F*
OUI:70B3D512F*
ID_OUI_FROM_DATABASE=DSP4YOU LTd
+OUI:70B3D571B*
+ ID_OUI_FROM_DATABASE=elsys
+
OUI:70B3D59B1*
ID_OUI_FROM_DATABASE=Aplex Technology Inc.
OUI:70B3D5CA4*
ID_OUI_FROM_DATABASE=Netemera Sp. z o.o.
-OUI:70B3D571B*
- ID_OUI_FROM_DATABASE=elsys
-
OUI:70B3D548F*
ID_OUI_FROM_DATABASE=Seiwa Giken
@@ -2858,6 +3080,144 @@ OUI:70B3D5D2F*
OUI:70B3D536A*
ID_OUI_FROM_DATABASE=Becton Dickinson
+OUI:70B3D5C80*
+ ID_OUI_FROM_DATABASE=Link Care Services
+
+OUI:70B3D5607*
+ ID_OUI_FROM_DATABASE=ATEME
+
+OUI:70B3D5A33*
+ ID_OUI_FROM_DATABASE=TIAMA
+
+OUI:70B3D5A19*
+ ID_OUI_FROM_DATABASE=Qualitronix Madrass Pvt Ltd
+
+OUI:70B3D5F81*
+ ID_OUI_FROM_DATABASE=Littlemore Scientific
+
+OUI:70B3D5B3F*
+ ID_OUI_FROM_DATABASE=Orbit International
+
+OUI:70B3D528D*
+ ID_OUI_FROM_DATABASE=Technica Engineering GmbH
+
+OUI:70B3D5B62*
+ ID_OUI_FROM_DATABASE=Sakura Seiki Co.,Ltd.
+
+OUI:70B3D5CCF*
+ ID_OUI_FROM_DATABASE=Netberg
+
+OUI:70B3D5131*
+ ID_OUI_FROM_DATABASE=Inova Design Solutions Ltd
+
+OUI:70B3D5987*
+ ID_OUI_FROM_DATABASE=AXIS CORPORATION
+
+OUI:70B3D52BA*
+ ID_OUI_FROM_DATABASE=Active Brains
+
+OUI:70B3D50CE*
+ ID_OUI_FROM_DATABASE=Innominds Software Inc
+
+OUI:70B3D5644*
+ ID_OUI_FROM_DATABASE=ATX Networks Corp
+
+OUI:70B3D5376*
+ ID_OUI_FROM_DATABASE=Private
+
+OUI:70B3D552C*
+ ID_OUI_FROM_DATABASE=Centuryarks Ltd.,
+
+OUI:70B3D5BC2*
+ ID_OUI_FROM_DATABASE=DWEWOONG ELECTRIC Co., Ltd.
+
+OUI:70B3D5DFC*
+ ID_OUI_FROM_DATABASE=ELECTRONIC SYSTEMS DESIGN SPRL
+
+OUI:70B3D57E5*
+ ID_OUI_FROM_DATABASE=Megaflex Oy
+
+OUI:70B3D5503*
+ ID_OUI_FROM_DATABASE=Itest communication Tech Co., LTD
+
+OUI:70B3D548A*
+ ID_OUI_FROM_DATABASE=George Wilson Industries Ltd
+
+OUI:70B3D50E5*
+ ID_OUI_FROM_DATABASE=Delta Solutions LLC
+
+OUI:70B3D581E*
+ ID_OUI_FROM_DATABASE=Novathings
+
+OUI:70B3D504B*
+ ID_OUI_FROM_DATABASE=Dream I System Co., Ltd
+
+OUI:70B3D549A*
+ ID_OUI_FROM_DATABASE=HAXE SYSTEME
+
+OUI:70B3D563C*
+ ID_OUI_FROM_DATABASE=Pivothead
+
+OUI:70B3D5ADB*
+ ID_OUI_FROM_DATABASE=RF Code
+
+OUI:70B3D5B53*
+ ID_OUI_FROM_DATABASE=Revolution Retail Systems, LLC
+
+OUI:70B3D5C7E*
+ ID_OUI_FROM_DATABASE=BirdDog Australia
+
+OUI:70B3D5F03*
+ ID_OUI_FROM_DATABASE=GMI Ltd
+
+OUI:70B3D58C2*
+ ID_OUI_FROM_DATABASE=F-domain corporation
+
+OUI:70B3D56CF*
+ ID_OUI_FROM_DATABASE=Private
+
+OUI:70B3D572C*
+ ID_OUI_FROM_DATABASE=NuRi&G Engineering co,.Ltd.
+
+OUI:70B3D5735*
+ ID_OUI_FROM_DATABASE=Swiss Audio
+
+OUI:70B3D5260*
+ ID_OUI_FROM_DATABASE=ModuSystems, Inc
+
+OUI:70B3D54EF*
+ ID_OUI_FROM_DATABASE=CMI, Inc.
+
+OUI:70B3D5C12*
+ ID_OUI_FROM_DATABASE=Beijing Wisetone Information Technology Co.,Ltd.
+
+OUI:70B3D5930*
+ ID_OUI_FROM_DATABASE=The Institute of Mine Seismology
+
+OUI:70B3D5188*
+ ID_OUI_FROM_DATABASE=Birket Engineering
+
+OUI:70B3D55E2*
+ ID_OUI_FROM_DATABASE=Grossenbacher Systeme AG
+
+OUI:70B3D525A*
+ ID_OUI_FROM_DATABASE=DEUTA-WERKE GmbH
+
+OUI:70B3D516F*
+ ID_OUI_FROM_DATABASE=NimbeLink Corp
+
+OUI:70B3D59C0*
+ ID_OUI_FROM_DATABASE=Schneider Displaytechnik GmbH
+
+OUI:70B3D5149*
+ ID_OUI_FROM_DATABASE=eleven-x
+
+OUI:70B3D5E98*
+ ID_OUI_FROM_DATABASE=JSC Kaluga Astral
+
+OUI:70B3D5443*
+ ID_OUI_FROM_DATABASE=Slot3 GmbH
+
OUI:70B3D566B*
ID_OUI_FROM_DATABASE=Innitive B.V.
@@ -3626,6 +3986,117 @@ OUI:70B3D5A96*
OUI:70B3D5367*
ID_OUI_FROM_DATABASE=Living Water
+OUI:70B3D58DB*
+ ID_OUI_FROM_DATABASE=Kratos Analytical Ltd
+
+OUI:70B3D5A4F*
+ ID_OUI_FROM_DATABASE=Weltek Technologies Co. Ltd.
+
+OUI:70B3D51A3*
+ ID_OUI_FROM_DATABASE=Telairity Semiconductor
+
+OUI:70B3D5650*
+ ID_OUI_FROM_DATABASE=GIFAS-ELECTRIC GmbH
+
+OUI:70B3D5C63*
+ ID_OUI_FROM_DATABASE=Xentech Solutions Limited
+
+OUI:70B3D5106*
+ ID_OUI_FROM_DATABASE=Aplex Technology Inc.
+
+OUI:70B3D56C5*
+ ID_OUI_FROM_DATABASE=CJSC «Russian telecom equipment company» (CJSC RTEC)
+
+OUI:70B3D5FE9*
+ ID_OUI_FROM_DATABASE=Camsat Przemysław Gralak
+
+OUI:70B3D54C5*
+ ID_OUI_FROM_DATABASE=Moving iMage Technologies LLC
+
+OUI:70B3D591A*
+ ID_OUI_FROM_DATABASE=Fujian Landfone Information Technology Co.,Ltd
+
+OUI:70B3D59EC*
+ ID_OUI_FROM_DATABASE=eSoftThings
+
+OUI:70B3D5761*
+ ID_OUI_FROM_DATABASE=Critical Link LLC
+
+OUI:70B3D5C22*
+ ID_OUI_FROM_DATABASE=Skyriver Communications Inc.
+
+OUI:70B3D53BB*
+ ID_OUI_FROM_DATABASE=A-M Systems
+
+OUI:70B3D5B44*
+ ID_OUI_FROM_DATABASE=ENTEC Electric & Electronic Co., LTD.
+
+OUI:70B3D5584*
+ ID_OUI_FROM_DATABASE=Sertone, a division of Opti-Knights Ltd
+
+OUI:70B3D53EF*
+ ID_OUI_FROM_DATABASE=Vtron Pty Ltd
+
+OUI:70B3D57C2*
+ ID_OUI_FROM_DATABASE=Morgan Schaffer Inc.
+
+OUI:70B3D5697*
+ ID_OUI_FROM_DATABASE=Alazar Technologies Inc.
+
+OUI:70B3D561A*
+ ID_OUI_FROM_DATABASE=Rocket Lab Ltd.
+
+OUI:70B3D5855*
+ ID_OUI_FROM_DATABASE=CRDE
+
+OUI:70B3D5F8D*
+ ID_OUI_FROM_DATABASE=Flextronics Canafa Design Services
+
+OUI:70B3D59AE*
+ ID_OUI_FROM_DATABASE=Volansys technologies pvt ltd
+
+OUI:70B3D542C*
+ ID_OUI_FROM_DATABASE=D.Marchiori Srl
+
+OUI:70B3D5CE5*
+ ID_OUI_FROM_DATABASE=GridBridge Inc
+
+OUI:70B3D51EF*
+ ID_OUI_FROM_DATABASE=ADTEK
+
+OUI:70B3D5EDB*
+ ID_OUI_FROM_DATABASE=Netfort Solutions
+
+OUI:70B3D5CD9*
+ ID_OUI_FROM_DATABASE=Peter Huber Kaeltemaschinenbau GmbH
+
+OUI:70B3D51D7*
+ ID_OUI_FROM_DATABASE=Private
+
+OUI:70B3D5976*
+ ID_OUI_FROM_DATABASE=Atonarp Micro-Systems India Pvt. Ltd.
+
+OUI:70B3D50DA*
+ ID_OUI_FROM_DATABASE=Aquavision Distribution Ltd
+
+OUI:70B3D5989*
+ ID_OUI_FROM_DATABASE=DCNS
+
+OUI:70B3D5833*
+ ID_OUI_FROM_DATABASE=Alpiq InTec Management AG
+
+OUI:70B3D53E8*
+ ID_OUI_FROM_DATABASE=COSMOS web Co., Ltd.
+
+OUI:70B3D597F*
+ ID_OUI_FROM_DATABASE=BISTOS.,Co.,Ltd
+
+OUI:70B3D5C5D*
+ ID_OUI_FROM_DATABASE=FOSHAN SHILANTIAN NETWORK S.T. CO., LTD.
+
+OUI:70B3D573B*
+ ID_OUI_FROM_DATABASE=S-I-C
+
OUI:70B3D5114*
ID_OUI_FROM_DATABASE=Project H Pty Ltd
@@ -3683,83 +4154,104 @@ OUI:70B3D5C4F*
OUI:70B3D5BD9*
ID_OUI_FROM_DATABASE=SolwayTech
-OUI:70B3D58DB*
- ID_OUI_FROM_DATABASE=Kratos Analytical Ltd
+OUI:70B3D5F35*
+ ID_OUI_FROM_DATABASE=carbonTRACK
-OUI:70B3D5A4F*
- ID_OUI_FROM_DATABASE=Weltek Technologies Co. Ltd.
+OUI:70B3D529F*
+ ID_OUI_FROM_DATABASE=Code Hardware SA
-OUI:70B3D51A3*
- ID_OUI_FROM_DATABASE=Telairity Semiconductor
+OUI:70B3D5F76*
+ ID_OUI_FROM_DATABASE=Thermo Fisher Scientific
-OUI:70B3D5650*
- ID_OUI_FROM_DATABASE=GIFAS-ELECTRIC GmbH
+OUI:70B3D52B9*
+ ID_OUI_FROM_DATABASE=BELECTRIC GmbH
-OUI:70B3D5C63*
- ID_OUI_FROM_DATABASE=Xentech Solutions Limited
+OUI:70B3D59AD*
+ ID_OUI_FROM_DATABASE=Fortuna Impex Pvt ltd
-OUI:70B3D5106*
- ID_OUI_FROM_DATABASE=Aplex Technology Inc.
+OUI:70B3D5594*
+ ID_OUI_FROM_DATABASE=ATE Systems Inc
-OUI:70B3D56C5*
- ID_OUI_FROM_DATABASE=CJSC «Russian telecom equipment company» (CJSC RTEC)
+OUI:70B3D58CB*
+ ID_OUI_FROM_DATABASE=WELT Corporation
-OUI:70B3D5FE9*
- ID_OUI_FROM_DATABASE=Camsat Przemysław Gralak
+OUI:70B3D5405*
+ ID_OUI_FROM_DATABASE=MG s.r.l.
-OUI:70B3D54C5*
- ID_OUI_FROM_DATABASE=Moving iMage Technologies LLC
+OUI:70B3D587E*
+ ID_OUI_FROM_DATABASE=Septentrio NV
-OUI:70B3D591A*
- ID_OUI_FROM_DATABASE=Fujian Landfone Information Technology Co.,Ltd
+OUI:70B3D5ECB*
+ ID_OUI_FROM_DATABASE=Re spa - Controlli Industriali - IT01782300154
-OUI:70B3D59EC*
- ID_OUI_FROM_DATABASE=eSoftThings
+OUI:70B3D55F4*
+ ID_OUI_FROM_DATABASE=FDSTiming
-OUI:70B3D5761*
- ID_OUI_FROM_DATABASE=Critical Link LLC
+OUI:70B3D5D75*
+ ID_OUI_FROM_DATABASE=Hyundai MNSOFT
-OUI:70B3D5C22*
- ID_OUI_FROM_DATABASE=Skyriver Communications Inc.
+OUI:70B3D5D9A*
+ ID_OUI_FROM_DATABASE=Wuhan Xingtuxinke ELectronic Co.,Ltd
-OUI:70B3D53BB*
- ID_OUI_FROM_DATABASE=A-M Systems
+OUI:70B3D59C7*
+ ID_OUI_FROM_DATABASE=YUYAMA MFG Co.,Ltd
-OUI:70B3D5B44*
- ID_OUI_FROM_DATABASE=ENTEC Electric & Electronic Co., LTD.
+OUI:70B3D532A*
+ ID_OUI_FROM_DATABASE=Wuhan Xingtuxinke ELectronic Co.,Ltd
-OUI:70B3D5584*
- ID_OUI_FROM_DATABASE=Sertone, a division of Opti-Knights Ltd
+OUI:70B3D560E*
+ ID_OUI_FROM_DATABASE=HDANYWHERE
-OUI:70B3D53EF*
- ID_OUI_FROM_DATABASE=Vtron Pty Ltd
+OUI:70B3D5EBB*
+ ID_OUI_FROM_DATABASE=Beijing Wing ICT Technology Co., Ltd.
-OUI:70B3D57C2*
- ID_OUI_FROM_DATABASE=Morgan Schaffer Inc.
+OUI:70B3D5B09*
+ ID_OUI_FROM_DATABASE=FIRST LIGHT IMAGING
-OUI:70B3D5697*
- ID_OUI_FROM_DATABASE=Alazar Technologies Inc.
+OUI:70B3D518C*
+ ID_OUI_FROM_DATABASE=CMC Industrial Electronics Ltd
-OUI:70B3D561A*
- ID_OUI_FROM_DATABASE=Rocket Lab Ltd.
+OUI:70B3D5AFF*
+ ID_OUI_FROM_DATABASE=digital-spice
-OUI:70B3D5855*
- ID_OUI_FROM_DATABASE=CRDE
+OUI:70B3D5563*
+ ID_OUI_FROM_DATABASE=Zhejiang Hao Teng Electronic Technology Co., Ltd.
-OUI:70B3D5F8D*
- ID_OUI_FROM_DATABASE=Flextronics Canafa Design Services
+OUI:70B3D5C06*
+ ID_OUI_FROM_DATABASE=XotonicsMED GmbH
-OUI:70B3D59AE*
- ID_OUI_FROM_DATABASE=Volansys technologies pvt ltd
+OUI:70B3D52DB*
+ ID_OUI_FROM_DATABASE=ProtoPixel SL
-OUI:70B3D542C*
- ID_OUI_FROM_DATABASE=D.Marchiori Srl
+OUI:70B3D5A58*
+ ID_OUI_FROM_DATABASE=MCQ TECH GmbH
-OUI:70B3D5CE5*
- ID_OUI_FROM_DATABASE=GridBridge Inc
+OUI:70B3D5934*
+ ID_OUI_FROM_DATABASE=RBS Netkom GmbH
-OUI:70B3D51EF*
- ID_OUI_FROM_DATABASE=ADTEK
+OUI:70B3D513D*
+ ID_OUI_FROM_DATABASE=Elsist Srl
+
+OUI:70B3D53B7*
+ ID_OUI_FROM_DATABASE=Paul Scherrer Institut (PSI)
+
+OUI:70B3D594D*
+ ID_OUI_FROM_DATABASE=SEASON DESIGN TECHNOLOGY
+
+OUI:70B3D5A4C*
+ ID_OUI_FROM_DATABASE=Alere Technologies AS
+
+OUI:70B3D590B*
+ ID_OUI_FROM_DATABASE=Matrix Switch Corporation
+
+OUI:70B3D5C4B*
+ ID_OUI_FROM_DATABASE=ANKER-EAST
+
+OUI:70B3D5542*
+ ID_OUI_FROM_DATABASE=RTDS Technologies Inc.
+
+OUI:70B3D568E*
+ ID_OUI_FROM_DATABASE=CEA Technologies Pty Ltd
OUI:70B3D58AB*
ID_OUI_FROM_DATABASE=EMAC, Inc.
@@ -4028,9 +4520,6 @@ OUI:70B3D5EFB*
OUI:70B3D5A81*
ID_OUI_FROM_DATABASE=Sienda New Media Technologies GmbH
-OUI:70B3D5A1B*
- ID_OUI_FROM_DATABASE=Potter Electric Signal Co.
-
OUI:70B3D5EAC*
ID_OUI_FROM_DATABASE=Kentech Instruments Limited
@@ -4067,9 +4556,6 @@ OUI:70B3D5DCF*
OUI:70B3D5A25*
ID_OUI_FROM_DATABASE=PulseTor LLC
-OUI:70B3D5D3B*
- ID_OUI_FROM_DATABASE=NimbeLink Corp
-
OUI:70B3D5882*
ID_OUI_FROM_DATABASE=SIMON TECH, S.L.
@@ -4523,6 +5009,90 @@ OUI:70B3D594F*
OUI:70B3D5DFF*
ID_OUI_FROM_DATABASE=Spanawave Corporation
+OUI:70B3D57B6*
+ ID_OUI_FROM_DATABASE=Amada Miyachi America Inc.
+
+OUI:70B3D555A*
+ ID_OUI_FROM_DATABASE=Sontay Ltd.
+
+OUI:70B3D511C*
+ ID_OUI_FROM_DATABASE=Samriddi Automations Pvt. Ltd.
+
+OUI:70B3D5CB2*
+ ID_OUI_FROM_DATABASE=SECLAB
+
+OUI:70B3D5A91*
+ ID_OUI_FROM_DATABASE=IDEAL INDUSTRIES Ltd t/a Casella
+
+OUI:70B3D5AE5*
+ ID_OUI_FROM_DATABASE=BeatCraft, Inc.
+
+OUI:70B3D51DD*
+ ID_OUI_FROM_DATABASE=RF CREATIONS LTD
+
+OUI:70B3D51DA*
+ ID_OUI_FROM_DATABASE=Promess Inc.
+
+OUI:70B3D555B*
+ ID_OUI_FROM_DATABASE=Procon Electronics Pty Ltd
+
+OUI:70B3D50AE*
+ ID_OUI_FROM_DATABASE=Norsat International Inc.
+
+OUI:70B3D5461*
+ ID_OUI_FROM_DATABASE=TESEC Corporation
+
+OUI:70B3D57FB*
+ ID_OUI_FROM_DATABASE=db Broadcast Products Ltd
+
+OUI:70B3D56FF*
+ ID_OUI_FROM_DATABASE=AKEO PLUS
+
+OUI:70B3D5CD2*
+ ID_OUI_FROM_DATABASE=HBH Microwave GmbH
+
+OUI:70B3D5B23*
+ ID_OUI_FROM_DATABASE=Supervision Test et Pilotage
+
+OUI:70B3D5178*
+ ID_OUI_FROM_DATABASE=Gamber Johnson-LLC
+
+OUI:70B3D5A5C*
+ ID_OUI_FROM_DATABASE=Molekule
+
+OUI:70B3D5012*
+ ID_OUI_FROM_DATABASE=KST technology
+
+OUI:70B3D5FEC*
+ ID_OUI_FROM_DATABASE=Finder SpA
+
+OUI:70B3D519E*
+ ID_OUI_FROM_DATABASE=J-Factor Embedded Technologies
+
+OUI:70B3D5A20*
+ ID_OUI_FROM_DATABASE=Design For Life Systems
+
+OUI:70B3D590A*
+ ID_OUI_FROM_DATABASE=Hangzhou SunTown Intelligent Science & Technology Co.,Ltd.
+
+OUI:70B3D51DB*
+ ID_OUI_FROM_DATABASE=Hudson Robotics
+
+OUI:70B3D55CC*
+ ID_OUI_FROM_DATABASE=Akse srl
+
+OUI:70B3D5973*
+ ID_OUI_FROM_DATABASE=Autonomic Controls, Inc.
+
+OUI:70B3D5083*
+ ID_OUI_FROM_DATABASE=ZAO ZEO
+
+OUI:70B3D542A*
+ ID_OUI_FROM_DATABASE=Critical Link LLC
+
+OUI:70B3D5C0F*
+ ID_OUI_FROM_DATABASE=Honeywell Safety Products USA, Inc
+
OUI:70B3D565C*
ID_OUI_FROM_DATABASE=Aplex Technology Inc.
@@ -4580,9 +5150,6 @@ OUI:70B3D5A4A*
OUI:70B3D585B*
ID_OUI_FROM_DATABASE=TSUBAKIMOTO CHAIN CO.
-OUI:70B3D56FF*
- ID_OUI_FROM_DATABASE=AKEO PLUS
-
OUI:70B3D589B*
ID_OUI_FROM_DATABASE=ControlWorks, Inc.
@@ -4592,62 +5159,104 @@ OUI:70B3D568F*
OUI:70B3D55AB*
ID_OUI_FROM_DATABASE=Sea Air and Land Communications Ltd
-OUI:70B3D5CD2*
- ID_OUI_FROM_DATABASE=HBH Microwave GmbH
+OUI:70B3D5CED*
+ ID_OUI_FROM_DATABASE=Advanced Products Corporation Pte Ltd
-OUI:70B3D5B23*
- ID_OUI_FROM_DATABASE=Supervision Test et Pilotage
+OUI:70B3D5DB0*
+ ID_OUI_FROM_DATABASE=Arnouse Digital Devices Corp
-OUI:70B3D5178*
- ID_OUI_FROM_DATABASE=Gamber Johnson-LLC
+OUI:70B3D5CCD*
+ ID_OUI_FROM_DATABASE=Suzhou PowerCore Technology Co.,Ltd.
-OUI:70B3D57B6*
- ID_OUI_FROM_DATABASE=Amada Miyachi America Inc.
+OUI:70B3D5163*
+ ID_OUI_FROM_DATABASE=BHARAT HEAVY ELECTRICALS LIMITED
-OUI:70B3D555A*
- ID_OUI_FROM_DATABASE=Sontay Ltd.
+OUI:70B3D5227*
+ ID_OUI_FROM_DATABASE=Montalvo
-OUI:70B3D5CB2*
- ID_OUI_FROM_DATABASE=SECLAB
+OUI:70B3D5910*
+ ID_OUI_FROM_DATABASE=Eginity, Inc.
-OUI:70B3D511C*
- ID_OUI_FROM_DATABASE=Samriddi Automations Pvt. Ltd.
+OUI:70B3D57D1*
+ ID_OUI_FROM_DATABASE=Schneider Electric Motion USA
-OUI:70B3D5AE5*
- ID_OUI_FROM_DATABASE=BeatCraft, Inc.
+OUI:70B3D570F*
+ ID_OUI_FROM_DATABASE=Alion Science & Technology
-OUI:70B3D5A91*
- ID_OUI_FROM_DATABASE=IDEAL INDUSTRIES Ltd t/a Casella
+OUI:70B3D5A1B*
+ ID_OUI_FROM_DATABASE=Potter Electric Signal Co. LLC
-OUI:70B3D51DD*
- ID_OUI_FROM_DATABASE=RF CREATIONS LTD
+OUI:70B3D5947*
+ ID_OUI_FROM_DATABASE=Checkbill Co,Ltd.
-OUI:70B3D50AE*
- ID_OUI_FROM_DATABASE=Norsat International Inc.
+OUI:70B3D5B77*
+ ID_OUI_FROM_DATABASE=Motec Pty Ltd
-OUI:70B3D51DA*
- ID_OUI_FROM_DATABASE=Promess Inc.
+OUI:70B3D5D9D*
+ ID_OUI_FROM_DATABASE=Electroimpact, Inc.
-OUI:70B3D555B*
- ID_OUI_FROM_DATABASE=Procon Electronics Pty Ltd
+OUI:70B3D5C6F*
+ ID_OUI_FROM_DATABASE=nyantec UG (haftungsbeschränkt)
-OUI:70B3D5461*
- ID_OUI_FROM_DATABASE=TESEC Corporation
+OUI:70B3D5475*
+ ID_OUI_FROM_DATABASE=EWATTCH
-OUI:70B3D57FB*
- ID_OUI_FROM_DATABASE=db Broadcast Products Ltd
+OUI:70B3D5F30*
+ ID_OUI_FROM_DATABASE=ADE Technology Inc.
-OUI:70B3D5CED*
- ID_OUI_FROM_DATABASE=Advanced Products Corporation Pte Ltd
+OUI:70B3D5F95*
+ ID_OUI_FROM_DATABASE=Get SAT
-OUI:70B3D5DB0*
- ID_OUI_FROM_DATABASE=Arnouse Digital Devices Corp
+OUI:70B3D5457*
+ ID_OUI_FROM_DATABASE=Vivaldi Clima Srl
-OUI:70B3D5CCD*
- ID_OUI_FROM_DATABASE=Suzhou PowerCore Technology Co.,Ltd.
+OUI:70B3D5CD5*
+ ID_OUI_FROM_DATABASE=Apantac LLC
-OUI:70B3D5163*
- ID_OUI_FROM_DATABASE=BHARAT HEAVY ELECTRICALS LIMITED
+OUI:70B3D511F*
+ ID_OUI_FROM_DATABASE=Geppetto Electronics
+
+OUI:70B3D5136*
+ ID_OUI_FROM_DATABASE=Miguel Corporate Services Pte Ltd
+
+OUI:70B3D5E1A*
+ ID_OUI_FROM_DATABASE=BIZERBA LUCEO
+
+OUI:70B3D55D5*
+ ID_OUI_FROM_DATABASE=CT Company
+
+OUI:70B3D5A1F*
+ ID_OUI_FROM_DATABASE=GlobalTest LLC
+
+OUI:70B3D58CA*
+ ID_OUI_FROM_DATABASE=Allied Data Systems
+
+OUI:70B3D5785*
+ ID_OUI_FROM_DATABASE=Density Inc.
+
+OUI:70B3D56B1*
+ ID_OUI_FROM_DATABASE=TTC TELEKOMUNIKACE, s.r.o.
+
+OUI:70B3D5BD5*
+ ID_OUI_FROM_DATABASE=Synics AG
+
+OUI:70B3D55C1*
+ ID_OUI_FROM_DATABASE=Shanghai JaWay Information Technology Co., Ltd.
+
+OUI:70B3D5BE9*
+ ID_OUI_FROM_DATABASE=Telecast Inc.
+
+OUI:70B3D5C62*
+ ID_OUI_FROM_DATABASE=WIZNOVA
+
+OUI:70B3D5D3B*
+ ID_OUI_FROM_DATABASE=NimbeLink Corp
+
+OUI:70B3D5FF4*
+ ID_OUI_FROM_DATABASE=Serveron Corporation
+
+OUI:70B3D5760*
+ ID_OUI_FROM_DATABASE=QUALITTEQ LLC
OUI:1C8776D*
ID_OUI_FROM_DATABASE=Qivivo
@@ -5027,9 +5636,6 @@ OUI:BC34007*
OUI:B01F81D*
ID_OUI_FROM_DATABASE=TAIWAN Anjie Electronics Co.,Ltd.
-OUI:7419F87*
- ID_OUI_FROM_DATABASE=Broadanet S.T.M
-
OUI:A43BFA7*
ID_OUI_FROM_DATABASE=Deatronic srl
@@ -5204,9 +5810,6 @@ OUI:D07650F*
OUI:E81863F*
ID_OUI_FROM_DATABASE=Private
-OUI:3C39E7F*
- ID_OUI_FROM_DATABASE=Private
-
OUI:F80278F*
ID_OUI_FROM_DATABASE=Private
@@ -5300,9 +5903,117 @@ OUI:4CE1737*
OUI:4CE1739*
ID_OUI_FROM_DATABASE=Shenzhen Evolution Dynamics Co., Ltd.
+OUI:1CC0E11*
+ ID_OUI_FROM_DATABASE=Hangzhou Kaierda Electric Welding Machine Co.,Ltd
+
+OUI:1CC0E15*
+ ID_OUI_FROM_DATABASE=Kids Wireless Inc
+
OUI:1CC0E13*
ID_OUI_FROM_DATABASE=HANGZHOU SOFTEL OPTIC CO., LTD
+OUI:1CC0E1E*
+ ID_OUI_FROM_DATABASE=Yun Yang Fire Safety Equipment Co.,Ltd.
+
+OUI:1CC0E1A*
+ ID_OUI_FROM_DATABASE=SECHERON SA
+
+OUI:1CC0E17*
+ ID_OUI_FROM_DATABASE=SHENZHEN KINSTONE D&T DEVELOP CO.,LTD
+
+OUI:4865EE0*
+ ID_OUI_FROM_DATABASE=DefPower Ltd
+
+OUI:4865EEC*
+ ID_OUI_FROM_DATABASE=DNV GL
+
+OUI:3C39E7F*
+ ID_OUI_FROM_DATABASE=Private
+
+OUI:4865EE4*
+ ID_OUI_FROM_DATABASE=Mission Microwave Technologies, Inc
+
+OUI:244E7B2*
+ ID_OUI_FROM_DATABASE=RCC TIME CO .,LIMITED
+
+OUI:244E7B1*
+ ID_OUI_FROM_DATABASE=sonoscape
+
+OUI:244E7B7*
+ ID_OUI_FROM_DATABASE=Nanjing Wanlida Technology Co., Ltd.
+
+OUI:244E7B3*
+ ID_OUI_FROM_DATABASE=Shenzhen Ruixunyun Technology Co.,Ltd.
+
+OUI:244E7BB*
+ ID_OUI_FROM_DATABASE=Mighty Audio, Inc.
+
+OUI:7CCBE28*
+ ID_OUI_FROM_DATABASE=Polarteknik Oy
+
+OUI:7CCBE24*
+ ID_OUI_FROM_DATABASE=Ningbo bird sales co.,LTD
+
+OUI:7CCBE2D*
+ ID_OUI_FROM_DATABASE=optilink networks pvt ltd
+
+OUI:7419F87*
+ ID_OUI_FROM_DATABASE=Heptagon Systems PTY. LTD.
+
+OUI:500B91B*
+ ID_OUI_FROM_DATABASE=thumbzup UK Limited
+
+OUI:500B91C*
+ ID_OUI_FROM_DATABASE=Diamond Traffic Products, Inc
+
+OUI:500B915*
+ ID_OUI_FROM_DATABASE=jiangsu zhongling high-tech CO.,LTD.
+
+OUI:500B914*
+ ID_OUI_FROM_DATABASE=Sinope technologies Inc
+
+OUI:1CC0E14*
+ ID_OUI_FROM_DATABASE=Videri Inc.
+
+OUI:A4580F3*
+ ID_OUI_FROM_DATABASE=Engineered SA
+
+OUI:A4580FD*
+ ID_OUI_FROM_DATABASE=EYE IO, LLC
+
+OUI:40ED981*
+ ID_OUI_FROM_DATABASE=GuangZhou FiiO Electronics Technology Co.,Ltd
+
+OUI:40ED985*
+ ID_OUI_FROM_DATABASE=Cape
+
+OUI:34049E3*
+ ID_OUI_FROM_DATABASE=Nanjing Mythware Information Technology Co., Ltd.
+
+OUI:34049EA*
+ ID_OUI_FROM_DATABASE=i3 International Inc.
+
+OUI:50A4D06*
+ ID_OUI_FROM_DATABASE=PointGrab
+
+OUI:34049EE*
+ ID_OUI_FROM_DATABASE=ND SatCom GmbH
+
+OUI:50A4D05*
+ ID_OUI_FROM_DATABASE=TREXOM S.r.l.
+
+OUI:50A4D01*
+ ID_OUI_FROM_DATABASE=Beijing ANTVR Technology Co., LTD
+
+OUI:50A4D0A*
+ ID_OUI_FROM_DATABASE=Changsha SinoCare, Inc
+
+OUI:8CC8F4C*
+ ID_OUI_FROM_DATABASE=Shenzhen KSTAR Science and Technology Co., Ltd
+
+OUI:40F385D*
+ ID_OUI_FROM_DATABASE=Digital Bros S.p.A.
+
OUI:1C8776C*
ID_OUI_FROM_DATABASE=Strone Technology
@@ -5852,6 +6563,78 @@ OUI:8C192D3*
OUI:8C192D1*
ID_OUI_FROM_DATABASE=Shenzhen Huanuo Internet Technology Co.,Ltd
+OUI:F0ACD72*
+ ID_OUI_FROM_DATABASE=QUANTUM POWER SYSTEMS
+
+OUI:F0ACD71*
+ ID_OUI_FROM_DATABASE=Intenta GmbH
+
+OUI:58E8769*
+ ID_OUI_FROM_DATABASE=TEM Mobile Limited
+
+OUI:58E8765*
+ ID_OUI_FROM_DATABASE=Broad Air Technology Co., LTD.
+
+OUI:C0D3913*
+ ID_OUI_FROM_DATABASE=IXON B.V.
+
+OUI:C0D3916*
+ ID_OUI_FROM_DATABASE=Ernitec
+
+OUI:C0D3912*
+ ID_OUI_FROM_DATABASE=Hofon Automation Co.,Ltd
+
+OUI:C0D391B*
+ ID_OUI_FROM_DATABASE=Private
+
+OUI:84E0F40*
+ ID_OUI_FROM_DATABASE=ShenZhen Panrich Technology Limited
+
+OUI:70F8E79*
+ ID_OUI_FROM_DATABASE=Kontech Electronics Co., Ltd
+
+OUI:70F8E70*
+ ID_OUI_FROM_DATABASE=SHENZHEN Xin JiuNing Electronics Co Ltd
+
+OUI:70F8E74*
+ ID_OUI_FROM_DATABASE=CLIP Inc.
+
+OUI:4CE173D*
+ ID_OUI_FROM_DATABASE=KTC(K-TEL)
+
+OUI:4865EE3*
+ ID_OUI_FROM_DATABASE=Data Technology Inc.
+
+OUI:4865EE1*
+ ID_OUI_FROM_DATABASE=Gopod Group Limited
+
+OUI:7CCBE26*
+ ID_OUI_FROM_DATABASE=SY Electronics Limited
+
+OUI:7CCBE2B*
+ ID_OUI_FROM_DATABASE=Easy Broadband Technology Co., Ltd.
+
+OUI:500B917*
+ ID_OUI_FROM_DATABASE=Shenzhen Xinfa Electronic Co.,ltd
+
+OUI:500B919*
+ ID_OUI_FROM_DATABASE=Machfu, Inc.
+
+OUI:500B913*
+ ID_OUI_FROM_DATABASE=EWIN TECHNOLOGY LIMITED
+
+OUI:A4580F5*
+ ID_OUI_FROM_DATABASE=CoAsia Microelectronics Corp.
+
+OUI:A4580FA*
+ ID_OUI_FROM_DATABASE=GUANGZHOU OPTICAL BRIDGE COMMUNICATION EQUIPMENT CO.,LTD.
+
+OUI:A4580FE*
+ ID_OUI_FROM_DATABASE=Finetree Communications Inc
+
+OUI:40ED980*
+ ID_OUI_FROM_DATABASE=Tsinghua Tongfang Co., LTD
+
OUI:D02212F*
ID_OUI_FROM_DATABASE=Private
@@ -5897,15 +6680,6 @@ OUI:84E0F49*
OUI:84E0F4A*
ID_OUI_FROM_DATABASE=iSolution Technologies Co.,Ltd.
-OUI:70F8E74*
- ID_OUI_FROM_DATABASE=CLIP Inc.
-
-OUI:70F8E70*
- ID_OUI_FROM_DATABASE=SHENZHEN Xin JiuNing Electronics Co Ltd
-
-OUI:70F8E79*
- ID_OUI_FROM_DATABASE=Kontech Electronics Co., Ltd
-
OUI:F81D78C*
ID_OUI_FROM_DATABASE=SHENZHUOYUE TECHNOLOGY.,LTD
@@ -5936,56 +6710,80 @@ OUI:383A21E*
OUI:AC64DD4*
ID_OUI_FROM_DATABASE=8Cups
+OUI:AC64DD5*
+ ID_OUI_FROM_DATABASE=SHANGHAI ZTE TECHNOLOGIES CO.,LTD
+
+OUI:AC64DD8*
+ ID_OUI_FROM_DATABASE=PFDC ELANCYL
+
OUI:AC64DDC*
ID_OUI_FROM_DATABASE=Beijing Hamigua Technology Co., Ltd.
+OUI:AC64DDE*
+ ID_OUI_FROM_DATABASE=DIGIBIRD TECHNOLOGY CO., LTD.
+
OUI:4CE1730*
ID_OUI_FROM_DATABASE=Beijing Sutongwang E-Business Co., Ltd
-OUI:F0ACD72*
- ID_OUI_FROM_DATABASE=QUANTUM POWER SYSTEMS
+OUI:4CE173E*
+ ID_OUI_FROM_DATABASE=Plus One Japan Limited
-OUI:F0ACD71*
- ID_OUI_FROM_DATABASE=Intenta GmbH
+OUI:1CC0E12*
+ ID_OUI_FROM_DATABASE=Abbott Medical Optics Inc.
-OUI:58E8769*
- ID_OUI_FROM_DATABASE=TEM Mobile Limited
+OUI:4CE1736*
+ ID_OUI_FROM_DATABASE=DAIKOKU DENKI CO.,LTD.
-OUI:58E8765*
- ID_OUI_FROM_DATABASE=Broad Air Technology Co., LTD.
+OUI:4865EE6*
+ ID_OUI_FROM_DATABASE=shenzhen sunflower technologies CO., LIMITED
-OUI:C0D3913*
- ID_OUI_FROM_DATABASE=IXON B.V.
+OUI:4865EE9*
+ ID_OUI_FROM_DATABASE=VideoStitch, Inc
-OUI:C0D3916*
- ID_OUI_FROM_DATABASE=Ernitec
+OUI:244E7B9*
+ ID_OUI_FROM_DATABASE=UniMAT Automation Technology Co., Ltd.
-OUI:C0D3912*
- ID_OUI_FROM_DATABASE=Hofon Automation Co.,Ltd
+OUI:4865EE5*
+ ID_OUI_FROM_DATABASE=Swistec Systems AG
-OUI:C0D391B*
- ID_OUI_FROM_DATABASE=Private
+OUI:244E7BA*
+ ID_OUI_FROM_DATABASE=Shenzhen AWT science & technology limited
-OUI:84E0F40*
- ID_OUI_FROM_DATABASE=ShenZhen Panrich Technology Limited
+OUI:500B911*
+ ID_OUI_FROM_DATABASE=SPD Development Company Ltd
-OUI:AC64DD5*
- ID_OUI_FROM_DATABASE=SHANGHAI ZTE TECHNOLOGIES CO.,LTD
+OUI:A4580F0*
+ ID_OUI_FROM_DATABASE=INNOPRO
-OUI:AC64DD8*
- ID_OUI_FROM_DATABASE=PFDC ELANCYL
+OUI:A4580F4*
+ ID_OUI_FROM_DATABASE=Shenzhen City billion Leiden science and Technology Co., Ltd.
-OUI:AC64DDE*
- ID_OUI_FROM_DATABASE=DIGIBIRD TECHNOLOGY CO., LTD.
+OUI:40ED98B*
+ ID_OUI_FROM_DATABASE=Siebert Industrieelektronik GmbH
-OUI:4CE1736*
- ID_OUI_FROM_DATABASE=CHINA CNR CORPORATION LIMITED DALIAN ELECTRIC TRACTION R&D CENTER
+OUI:40ED98A*
+ ID_OUI_FROM_DATABASE=Integrated Design Ltd
-OUI:4CE173D*
- ID_OUI_FROM_DATABASE=KTC(K-TEL)
+OUI:34049ED*
+ ID_OUI_FROM_DATABASE=uikismart
-OUI:4CE173E*
- ID_OUI_FROM_DATABASE=Plus One Japan Limited
+OUI:50A4D03*
+ ID_OUI_FROM_DATABASE=Guangzhou Hysoon Electronic Co., Ltd.
+
+OUI:50A4D07*
+ ID_OUI_FROM_DATABASE=Shanghai Pujiang Smart Card Systems Co., Ltd.
+
+OUI:8CC8F49*
+ ID_OUI_FROM_DATABASE=Swift Navigation Inc
+
+OUI:8CC8F41*
+ ID_OUI_FROM_DATABASE=Lanhomex Technology(Shen Zhen)Co.,Ltd.
+
+OUI:8CC8F4A*
+ ID_OUI_FROM_DATABASE=Trilux Group Management GmbH
+
+OUI:40F3856*
+ ID_OUI_FROM_DATABASE=Lennox International Incorporated
OUI:1C87765*
ID_OUI_FROM_DATABASE=Zhuhai MYZR Technology Co.,Ltd
@@ -6716,6 +7514,72 @@ OUI:4CE1733*
OUI:4CE173C*
ID_OUI_FROM_DATABASE=REMONDE NETWORK
+OUI:1CC0E1B*
+ ID_OUI_FROM_DATABASE=Exigent Sensors
+
+OUI:1CC0E10*
+ ID_OUI_FROM_DATABASE=Shenzhen Highsharp Electronics Ltd.
+
+OUI:4865EE7*
+ ID_OUI_FROM_DATABASE=Venture Research Inc.
+
+OUI:4865EEB*
+ ID_OUI_FROM_DATABASE=EnBW Energie Baden-Württemberg AG
+
+OUI:244E7B0*
+ ID_OUI_FROM_DATABASE=Tekelek Europe Ltd
+
+OUI:500B912*
+ ID_OUI_FROM_DATABASE=annapurnalabs
+
+OUI:500B91A*
+ ID_OUI_FROM_DATABASE=New Audio LLC
+
+OUI:A4580F7*
+ ID_OUI_FROM_DATABASE=Changsha Tai Hui Network Technology Co.,Ltd
+
+OUI:A4580FB*
+ ID_OUI_FROM_DATABASE=ABB AB PGHV
+
+OUI:A4580F1*
+ ID_OUI_FROM_DATABASE=Stone Lock Global, Inc.
+
+OUI:40ED983*
+ ID_OUI_FROM_DATABASE=Knox Company
+
+OUI:40ED989*
+ ID_OUI_FROM_DATABASE=TeraTron GmbH
+
+OUI:40ED982*
+ ID_OUI_FROM_DATABASE=A-IOX INC.
+
+OUI:34049E4*
+ ID_OUI_FROM_DATABASE=Harbin Yantuo Science and Technology Development Co., Ltd
+
+OUI:34049E0*
+ ID_OUI_FROM_DATABASE=GoChip Inc.
+
+OUI:34049E2*
+ ID_OUI_FROM_DATABASE=EFD Induction
+
+OUI:34049E9*
+ ID_OUI_FROM_DATABASE=Private
+
+OUI:50A4D08*
+ ID_OUI_FROM_DATABASE=XinLian'AnBao(Beijing)Technology Co.,LTD.
+
+OUI:8CC8F40*
+ ID_OUI_FROM_DATABASE=Guardtec,Inc
+
+OUI:8CC8F46*
+ ID_OUI_FROM_DATABASE=SHENZHEN D-light Technolgy Limited
+
+OUI:8CC8F48*
+ ID_OUI_FROM_DATABASE=Strongbyte Solutions Limited
+
+OUI:8CC8F4E*
+ ID_OUI_FROM_DATABASE=Evaporcool Solutions
+
OUI:1C8776B*
ID_OUI_FROM_DATABASE=Hekatron Vertriebs GmbH
@@ -7322,6 +8186,93 @@ OUI:7C477CA*
OUI:1C87760*
ID_OUI_FROM_DATABASE=Dspread Technology (Beijing) Inc.
+OUI:F0ACD70*
+ ID_OUI_FROM_DATABASE=Guilin glsun Science and Tech Co.,LTD
+
+OUI:F0ACD7E*
+ ID_OUI_FROM_DATABASE=Fiziico Co., Ltd.
+
+OUI:58E8760*
+ ID_OUI_FROM_DATABASE=Private
+
+OUI:58E8761*
+ ID_OUI_FROM_DATABASE=Beijing Perabytes IS Technology Co., Ltd
+
+OUI:C0D3914*
+ ID_OUI_FROM_DATABASE=Vernier Software & Technology
+
+OUI:C0D3919*
+ ID_OUI_FROM_DATABASE=xxter bv
+
+OUI:C0D391E*
+ ID_OUI_FROM_DATABASE=SAMSARA NETWORKS INC
+
+OUI:84E0F4D*
+ ID_OUI_FROM_DATABASE=Logos01 Srl
+
+OUI:70F8E7E*
+ ID_OUI_FROM_DATABASE=CUAV
+
+OUI:70F8E73*
+ ID_OUI_FROM_DATABASE=Dr. Simon Consulting GmbH
+
+OUI:F81D783*
+ ID_OUI_FROM_DATABASE=SHANGHAI SUN TELECOMMUNICATION CO., LTD.
+
+OUI:383A210*
+ ID_OUI_FROM_DATABASE=R3C Information(Shenzhen) Co.,Ltd.
+
+OUI:383A213*
+ ID_OUI_FROM_DATABASE=Shanghai Greatwall Safety System Co.,Ltd
+
+OUI:AC64DD7*
+ ID_OUI_FROM_DATABASE=Wittmann Kunststoffgeräte GmbH
+
+OUI:4CE1734*
+ ID_OUI_FROM_DATABASE=Huizhou Dehong Technology Co., Ltd.
+
+OUI:4CE173A*
+ ID_OUI_FROM_DATABASE=jvi
+
+OUI:1CC0E19*
+ ID_OUI_FROM_DATABASE=Ospicon Company Limited
+
+OUI:4865EE2*
+ ID_OUI_FROM_DATABASE=CaptionCall
+
+OUI:4865EEE*
+ ID_OUI_FROM_DATABASE=CNU
+
+OUI:4865EED*
+ ID_OUI_FROM_DATABASE=Winn Technology Co.,Ltd
+
+OUI:244E7BC*
+ ID_OUI_FROM_DATABASE=CHUNGHSIN TECHNOLOGY GROUP CO.,LTD
+
+OUI:7CCBE29*
+ ID_OUI_FROM_DATABASE=Hangzhou Haohaokaiche Technology Co.,Ltd.
+
+OUI:7CCBE2C*
+ ID_OUI_FROM_DATABASE=mirakonta s.l.
+
+OUI:7CCBE23*
+ ID_OUI_FROM_DATABASE=Astrum Technologies CC
+
+OUI:244E7BD*
+ ID_OUI_FROM_DATABASE=Private
+
+OUI:500B91D*
+ ID_OUI_FROM_DATABASE=Shenzhen Lucky Sonics Co .,Ltd
+
+OUI:7CCBE2E*
+ ID_OUI_FROM_DATABASE=Aplex Technology Inc.
+
+OUI:A4580F2*
+ ID_OUI_FROM_DATABASE=BLOKS. GmbH
+
+OUI:40ED986*
+ ID_OUI_FROM_DATABASE=Shanghai Broadwan Communications Co.,Ltd
+
OUI:8C192D5*
ID_OUI_FROM_DATABASE=ELCO(TIANJIN)ELECTRONICS CO.,LTD.
@@ -7382,74 +8333,92 @@ OUI:84E0F43*
OUI:1C88798*
ID_OUI_FROM_DATABASE=Toshiba Toko Meter Systems Co., LTD.
-OUI:383A210*
- ID_OUI_FROM_DATABASE=R3C Information(Shenzhen) Co.,Ltd.
+OUI:70F8E7C*
+ ID_OUI_FROM_DATABASE=Fixstars Corporation
-OUI:4CE1734*
- ID_OUI_FROM_DATABASE=Huizhou Dehong Technology Co., Ltd.
+OUI:F81D78D*
+ ID_OUI_FROM_DATABASE=Tofino
-OUI:4CE173A*
- ID_OUI_FROM_DATABASE=jvi
+OUI:F81D787*
+ ID_OUI_FROM_DATABASE=WUHAN GUIDE INFRARED CO.,LTD
-OUI:F0ACD70*
- ID_OUI_FROM_DATABASE=Guilin glsun Science and Tech Co.,LTD
+OUI:F81D789*
+ ID_OUI_FROM_DATABASE=Ophrys Systèmes
-OUI:F0ACD7E*
- ID_OUI_FROM_DATABASE=Fiziico Co., Ltd.
+OUI:383A21D*
+ ID_OUI_FROM_DATABASE=Colooc AB
-OUI:58E8760*
- ID_OUI_FROM_DATABASE=Private
+OUI:AC64DD9*
+ ID_OUI_FROM_DATABASE=Micro Connect Pty Ltd
-OUI:58E8761*
- ID_OUI_FROM_DATABASE=Beijing Perabytes IS Technology Co., Ltd
+OUI:AC64DD3*
+ ID_OUI_FROM_DATABASE=infypower Co., Ltd
-OUI:C0D3914*
- ID_OUI_FROM_DATABASE=Vernier Software & Technology
+OUI:4865EE8*
+ ID_OUI_FROM_DATABASE=SmartDisplayer Technology Co., Ltd.
-OUI:C0D3919*
- ID_OUI_FROM_DATABASE=xxter bv
+OUI:244E7B4*
+ ID_OUI_FROM_DATABASE=Leshi Internet Information & Technology (Beijing) Corp.
-OUI:C0D391E*
- ID_OUI_FROM_DATABASE=SAMSARA NETWORKS INC
+OUI:244E7B6*
+ ID_OUI_FROM_DATABASE=Owasys Advanced Wireless Devices
-OUI:84E0F4D*
- ID_OUI_FROM_DATABASE=Logos01 Srl
+OUI:244E7BE*
+ ID_OUI_FROM_DATABASE=WithWin Technology ShenZhen CO.,LTD
-OUI:70F8E7E*
- ID_OUI_FROM_DATABASE=CUAV
+OUI:244E7B5*
+ ID_OUI_FROM_DATABASE=Jiangsu Xuanbo Electronic Technologies Co.,Ltd
-OUI:70F8E73*
- ID_OUI_FROM_DATABASE=Dr. Simon Consulting GmbH
+OUI:7CCBE25*
+ ID_OUI_FROM_DATABASE=DTECH Labs, Inc.
-OUI:70F8E7C*
- ID_OUI_FROM_DATABASE=Fixstars Corporation
+OUI:7CCBE27*
+ ID_OUI_FROM_DATABASE=Hangzhou Kaicom Communication Co.,Ltd
-OUI:F81D783*
- ID_OUI_FROM_DATABASE=SHANGHAI SUN TELECOMMUNICATION CO., LTD.
+OUI:A4580F8*
+ ID_OUI_FROM_DATABASE=AIR LIQUIDE MEDICAL SYSTEMS
-OUI:F81D78D*
- ID_OUI_FROM_DATABASE=Tofino
+OUI:40ED98C*
+ ID_OUI_FROM_DATABASE=BloomSky,Inc.
-OUI:F81D787*
- ID_OUI_FROM_DATABASE=WUHAN GUIDE INFRARED CO.,LTD
+OUI:40ED98E*
+ ID_OUI_FROM_DATABASE=BORDA TECHNOLOGY
-OUI:F81D789*
- ID_OUI_FROM_DATABASE=Ophrys Systèmes
+OUI:34049E6*
+ ID_OUI_FROM_DATABASE=Life Interface Co., Ltd.
-OUI:383A21D*
- ID_OUI_FROM_DATABASE=Colooc AB
+OUI:34049E1*
+ ID_OUI_FROM_DATABASE=Connected IO Inc.
-OUI:383A213*
- ID_OUI_FROM_DATABASE=Shanghai Greatwall Safety System Co.,Ltd
+OUI:34049EB*
+ ID_OUI_FROM_DATABASE=Eginity, Inc.
-OUI:AC64DD7*
- ID_OUI_FROM_DATABASE=Wittmann Kunststoffgeräte GmbH
+OUI:34049E5*
+ ID_OUI_FROM_DATABASE=Seeiner Technology Co.,LTD
-OUI:AC64DD9*
- ID_OUI_FROM_DATABASE=Micro Connect Pty Ltd
+OUI:34049EC*
+ ID_OUI_FROM_DATABASE=Private
-OUI:AC64DD3*
- ID_OUI_FROM_DATABASE=infypower Co., Ltd
+OUI:50A4D09*
+ ID_OUI_FROM_DATABASE=OEM PRODUCTION INC.
+
+OUI:50A4D00*
+ ID_OUI_FROM_DATABASE=TRAXENS
+
+OUI:50A4D02*
+ ID_OUI_FROM_DATABASE=Seneco A/S
+
+OUI:8CC8F42*
+ ID_OUI_FROM_DATABASE=Dark Horse Connect LLC
+
+OUI:8CC8F4B*
+ ID_OUI_FROM_DATABASE=PTYPE Co., LTD.
+
+OUI:8CC8F45*
+ ID_OUI_FROM_DATABASE=Beijing KXWELL Technology CO., LTD
+
+OUI:8CC8F43*
+ ID_OUI_FROM_DATABASE=TOHO DENKI IND.CO.,LTD
OUI:1C87740*
ID_OUI_FROM_DATABASE=Philips Personal Health Solutions
@@ -7763,9 +8732,6 @@ OUI:D022128*
OUI:100723B*
ID_OUI_FROM_DATABASE=Fujian Quanzhou Dong Ang Electronics Co., Ltd.
-OUI:100723C*
- ID_OUI_FROM_DATABASE=SHENZHEN XINFA ELECTRONIC CO.,LTD
-
OUI:1007235*
ID_OUI_FROM_DATABASE=BEIJING SOOALL INFORMATION TECHNOLOGY CO.,LTD
@@ -7946,6 +8912,78 @@ OUI:6891D0E*
OUI:D0D94FC*
ID_OUI_FROM_DATABASE=ARROWAVE TECHNOLOGIES LIMITED
+OUI:F0ACD7A*
+ ID_OUI_FROM_DATABASE=Groupeer Technologies
+
+OUI:F0ACD74*
+ ID_OUI_FROM_DATABASE=Sercomm Corporation.
+
+OUI:58E876B*
+ ID_OUI_FROM_DATABASE=annapurnalabs
+
+OUI:58E876A*
+ ID_OUI_FROM_DATABASE=SHENZHEN DIGISSIN TECHNOLOGY
+
+OUI:58E8762*
+ ID_OUI_FROM_DATABASE=Coala Life AB
+
+OUI:C0D3917*
+ ID_OUI_FROM_DATABASE=ALNETz Co.,LTD
+
+OUI:C0D3918*
+ ID_OUI_FROM_DATABASE=XENA SECURITY LIMITED
+
+OUI:C0D391C*
+ ID_OUI_FROM_DATABASE=Zhinengguo technology company limited
+
+OUI:84E0F42*
+ ID_OUI_FROM_DATABASE=Hangzhou Uni-Ubi Co.,Ltd.
+
+OUI:84E0F46*
+ ID_OUI_FROM_DATABASE=Liaoning IK'SONYA Science and Technology Co., Ltd.
+
+OUI:383A216*
+ ID_OUI_FROM_DATABASE=Shenzhen Smart-core Technology co., Ltd.
+
+OUI:4CE1735*
+ ID_OUI_FROM_DATABASE=NewVastek
+
+OUI:AC64DD6*
+ ID_OUI_FROM_DATABASE=Kpnetworks Ltd.
+
+OUI:1CC0E18*
+ ID_OUI_FROM_DATABASE=LX Corporation Pty Ltd
+
+OUI:4865EEA*
+ ID_OUI_FROM_DATABASE=Shenzhen Inpor cloud Computing Co., Ltd.
+
+OUI:244E7B8*
+ ID_OUI_FROM_DATABASE=Cyber1st
+
+OUI:7CCBE2A*
+ ID_OUI_FROM_DATABASE=Shanghai Institute of Applied Physics, Chinese Academy of Sciences
+
+OUI:7CCBE21*
+ ID_OUI_FROM_DATABASE=CeoTronics AG
+
+OUI:A44F29F*
+ ID_OUI_FROM_DATABASE=Private
+
+OUI:A4580F9*
+ ID_OUI_FROM_DATABASE=Ksenia Security srl
+
+OUI:A4580FC*
+ ID_OUI_FROM_DATABASE=Homebeaver
+
+OUI:A4580F6*
+ ID_OUI_FROM_DATABASE=Astro, Inc
+
+OUI:40ED984*
+ ID_OUI_FROM_DATABASE=Kendrion Kuhnke Automation GmbH
+
+OUI:40ED987*
+ ID_OUI_FROM_DATABASE=Vaisala Oyj
+
OUI:2836387*
ID_OUI_FROM_DATABASE=Innovative Technology Ltd
@@ -7958,9 +8996,6 @@ OUI:B437D1F*
OUI:0CEFAFF*
ID_OUI_FROM_DATABASE=Private
-OUI:A44F29F*
- ID_OUI_FROM_DATABASE=Private
-
OUI:78C2C0F*
ID_OUI_FROM_DATABASE=Private
@@ -8018,44 +9053,74 @@ OUI:4CE1732*
OUI:4CE1738*
ID_OUI_FROM_DATABASE=Nanjing Tongke Technology Development Co., LTD
-OUI:F0ACD7A*
- ID_OUI_FROM_DATABASE=Groupeer Technologies
+OUI:1CC0E1D*
+ ID_OUI_FROM_DATABASE=NewLand (NZ) Communication Tech Limited
-OUI:F0ACD74*
- ID_OUI_FROM_DATABASE=Sercomm Corporation.
+OUI:1CC0E16*
+ ID_OUI_FROM_DATABASE=Monument Labs, Inc.
-OUI:58E876B*
- ID_OUI_FROM_DATABASE=annapurnalabs
+OUI:1CC0E1C*
+ ID_OUI_FROM_DATABASE=Nitto Seiko
-OUI:58E876A*
- ID_OUI_FROM_DATABASE=SHENZHEN DIGISSIN TECHNOLOGY
+OUI:100723C*
+ ID_OUI_FROM_DATABASE=Shenzhen Xinfa Electronic Co.,ltd
-OUI:58E8762*
- ID_OUI_FROM_DATABASE=Coala Life AB
+OUI:7CCBE20*
+ ID_OUI_FROM_DATABASE=Heyuan Yongyida Technology Holdings Co.,Ltd.
-OUI:C0D3917*
- ID_OUI_FROM_DATABASE=ALNETz Co.,LTD
+OUI:7CCBE22*
+ ID_OUI_FROM_DATABASE=1000eyes GmbH
-OUI:C0D3918*
- ID_OUI_FROM_DATABASE=XENA SECURITY LIMITED
+OUI:500B918*
+ ID_OUI_FROM_DATABASE=Panasonic Enterprise Solutions Company
-OUI:C0D391C*
- ID_OUI_FROM_DATABASE=Zhinengguo technology company limited
+OUI:500B910*
+ ID_OUI_FROM_DATABASE=Igor, Inc.
-OUI:84E0F42*
- ID_OUI_FROM_DATABASE=Hangzhou Uni-Ubi Co.,Ltd.
+OUI:500B916*
+ ID_OUI_FROM_DATABASE=Security Alarms & Co. S.A.
-OUI:84E0F46*
- ID_OUI_FROM_DATABASE=Liaoning IK'SONYA Science and Technology Co., Ltd.
+OUI:500B91E*
+ ID_OUI_FROM_DATABASE=Shenzhen zhong ju Fiber optical Co.Ltd
-OUI:383A216*
- ID_OUI_FROM_DATABASE=Shenzhen Smart-core Technology co., Ltd.
+OUI:40ED98D*
+ ID_OUI_FROM_DATABASE=Hangzhou GANX Technology Co.,Ltd.
-OUI:4CE1735*
- ID_OUI_FROM_DATABASE=NewVastek
+OUI:40ED988*
+ ID_OUI_FROM_DATABASE=GUANGZHOU AURIC INTELLIGENT TECHNOLOGY CO.,LTD.
-OUI:AC64DD6*
- ID_OUI_FROM_DATABASE=Kpnetworks Ltd.
+OUI:34049E8*
+ ID_OUI_FROM_DATABASE=Eclipse Information Technologies
+
+OUI:34049E7*
+ ID_OUI_FROM_DATABASE=Pebble Technology
+
+OUI:50A4D04*
+ ID_OUI_FROM_DATABASE=Raven Industries Inc.
+
+OUI:50A4D0D*
+ ID_OUI_FROM_DATABASE=Axel Technology
+
+OUI:50A4D0C*
+ ID_OUI_FROM_DATABASE=Beijing YangLian Networks Technology co., LTD
+
+OUI:50A4D0E*
+ ID_OUI_FROM_DATABASE=Sagetech Corporation
+
+OUI:50A4D0B*
+ ID_OUI_FROM_DATABASE=ZHENG DIAN ELECTRONICS LIMITED
+
+OUI:8CC8F4D*
+ ID_OUI_FROM_DATABASE=Beijing Xinxunxintong Eletronics Co.,Ltd
+
+OUI:8CC8F47*
+ ID_OUI_FROM_DATABASE=Private
+
+OUI:8CC8F44*
+ ID_OUI_FROM_DATABASE=ITECH Electronic Co.,ltd.
+
+OUI:40F3852*
+ ID_OUI_FROM_DATABASE=Beijing Zongheng Electro-Mechanical Technology Development Co.
OUI:E043DB*
ID_OUI_FROM_DATABASE=Shenzhen ViewAt Technology Co.,Ltd.
@@ -8129,12 +9194,6 @@ OUI:BCEC23*
OUI:8CE748*
ID_OUI_FROM_DATABASE=Private
-OUI:F09CE9*
- ID_OUI_FROM_DATABASE=Aerohive Networks Inc.
-
-OUI:C413E2*
- ID_OUI_FROM_DATABASE=Aerohive Networks Inc.
-
OUI:AC06C7*
ID_OUI_FROM_DATABASE=ServerNet S.r.l.
@@ -8513,24 +9572,6 @@ OUI:283152*
OUI:DCD2FC*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
-OUI:F8A45F*
- ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
-
-OUI:8CBEBE*
- ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
-
-OUI:640980*
- ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
-
-OUI:98FAE3*
- ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
-
-OUI:185936*
- ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
-
-OUI:9C99A0*
- ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
-
OUI:0003DD*
ID_OUI_FROM_DATABASE=Comark Interactive Solutions
@@ -9278,9 +10319,6 @@ OUI:E8162B*
OUI:709F2D*
ID_OUI_FROM_DATABASE=zte corporation
-OUI:5C6B4F*
- ID_OUI_FROM_DATABASE=Private
-
OUI:ECE2FD*
ID_OUI_FROM_DATABASE=SKG Electric Group(Thailand) Co., Ltd.
@@ -9557,9 +10595,6 @@ OUI:BC9CC5*
OUI:505065*
ID_OUI_FROM_DATABASE=TAKT Corporation
-OUI:D00AAB*
- ID_OUI_FROM_DATABASE=Yokogawa Digital Computer Corporation
-
OUI:A4A4D3*
ID_OUI_FROM_DATABASE=Bluebank Communication Technology Co.Ltd
@@ -9656,9 +10691,6 @@ OUI:FC4AE9*
OUI:34E42A*
ID_OUI_FROM_DATABASE=Automatic Bar Controls Inc.
-OUI:B87CF2*
- ID_OUI_FROM_DATABASE=Aerohive Networks Inc.
-
OUI:20A787*
ID_OUI_FROM_DATABASE=Bointec Taiwan Corporation Limited
@@ -9854,9 +10886,6 @@ OUI:80BAE6*
OUI:3C18A0*
ID_OUI_FROM_DATABASE=Luxshare Precision Industry Co.,Ltd.
-OUI:4CB81C*
- ID_OUI_FROM_DATABASE=SAM Electronics GmbH
-
OUI:041A04*
ID_OUI_FROM_DATABASE=WaveIP
@@ -11015,9 +12044,6 @@ OUI:D01AA7*
OUI:B08E1A*
ID_OUI_FROM_DATABASE=URadio Systems Co., Ltd
-OUI:40605A*
- ID_OUI_FROM_DATABASE=Hawkeye Tech Co. Ltd
-
OUI:E05DA6*
ID_OUI_FROM_DATABASE=Detlef Fink Elektronik & Softwareentwicklung
@@ -11036,9 +12062,6 @@ OUI:608C2B*
OUI:EC1120*
ID_OUI_FROM_DATABASE=FloDesign Wind Turbine Corporation
-OUI:D0F73B*
- ID_OUI_FROM_DATABASE=Helmut Mauell GmbH
-
OUI:C495A2*
ID_OUI_FROM_DATABASE=SHENZHEN WEIJIU INDUSTRY AND TRADE DEVELOPMENT CO., LTD
@@ -11297,9 +12320,6 @@ OUI:8C8A6E*
OUI:E0ED1A*
ID_OUI_FROM_DATABASE=vastriver Technology Co., Ltd
-OUI:C83B45*
- ID_OUI_FROM_DATABASE=JRI-Maxant
-
OUI:685E6B*
ID_OUI_FROM_DATABASE=PowerRay Co., Ltd.
@@ -11384,9 +12404,6 @@ OUI:C436DA*
OUI:00FC70*
ID_OUI_FROM_DATABASE=Intrepid Control Systems, Inc.
-OUI:A4EE57*
- ID_OUI_FROM_DATABASE=SEIKO EPSON CORPORATION
-
OUI:D0AFB6*
ID_OUI_FROM_DATABASE=Linktop Technology Co., LTD
@@ -11801,15 +12818,9 @@ OUI:60893C*
OUI:5C17D3*
ID_OUI_FROM_DATABASE=LGE
-OUI:347877*
- ID_OUI_FROM_DATABASE=O-NET Communications(Shenzhen) Limited
-
OUI:70A191*
ID_OUI_FROM_DATABASE=Trendsetter Medical, LLC
-OUI:A49B13*
- ID_OUI_FROM_DATABASE=Burroughs Payment Systems, Inc.
-
OUI:58BC27*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
@@ -12137,9 +13148,6 @@ OUI:448E81*
OUI:2046F9*
ID_OUI_FROM_DATABASE=Advanced Network Devices (dba:AND)
-OUI:681FD8*
- ID_OUI_FROM_DATABASE=Advanced Telemetry
-
OUI:0C8230*
ID_OUI_FROM_DATABASE=SHENZHEN MAGNUS TECHNOLOGIES CO.,LTD
@@ -15512,9 +16520,6 @@ OUI:000E5D*
OUI:000E5E*
ID_OUI_FROM_DATABASE=Raisecom Technology
-OUI:000E58*
- ID_OUI_FROM_DATABASE=Sonos, Inc.
-
OUI:000BE2*
ID_OUI_FROM_DATABASE=Lumenera Corporation
@@ -17234,9 +18239,6 @@ OUI:000189*
OUI:00308B*
ID_OUI_FROM_DATABASE=Brix Networks
-OUI:00014F*
- ID_OUI_FROM_DATABASE=ADTRAN INC
-
OUI:00015A*
ID_OUI_FROM_DATABASE=Digital Video Broadcasting
@@ -18104,9 +19106,6 @@ OUI:006010*
OUI:006044*
ID_OUI_FROM_DATABASE=LITTON/POLY-SCIENTIFIC
-OUI:00609B*
- ID_OUI_FROM_DATABASE=ASTRO-MED, INC.
-
OUI:0060BE*
ID_OUI_FROM_DATABASE=WEBTRONICS
@@ -19463,9 +20462,6 @@ OUI:806C1B*
OUI:A470D6*
ID_OUI_FROM_DATABASE=Motorola Mobility LLC, a Lenovo Company
-OUI:3407FB*
- ID_OUI_FROM_DATABASE=Ericsson AB
-
OUI:001B21*
ID_OUI_FROM_DATABASE=Intel Corporate
@@ -20426,15 +21422,6 @@ OUI:BC307D*
OUI:5410EC*
ID_OUI_FROM_DATABASE=Microchip Technology Inc.
-OUI:00262D*
- ID_OUI_FROM_DATABASE=Wistron Neweb Corporation
-
-OUI:5CFF35*
- ID_OUI_FROM_DATABASE=Wistron Neweb Corporation
-
-OUI:000AE4*
- ID_OUI_FROM_DATABASE=Wistron Neweb Corporation
-
OUI:309BAD*
ID_OUI_FROM_DATABASE=BBK EDUCATIONAL ELECTRONICS CORP.,LTD.
@@ -20705,9 +21692,6 @@ OUI:001A8F*
OUI:E89309*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:00D0B2*
- ID_OUI_FROM_DATABASE=19514
-
OUI:001988*
ID_OUI_FROM_DATABASE=Wi2Wi, Inc
@@ -21233,9 +22217,6 @@ OUI:E0686D*
OUI:A45385*
ID_OUI_FROM_DATABASE=Weifang GoerTek Electronics Co., Ltd.
-OUI:000678*
- ID_OUI_FROM_DATABASE=D&M Holdings Inc.
-
OUI:98B039*
ID_OUI_FROM_DATABASE=Nokia
@@ -21428,6 +22409,300 @@ OUI:50584F*
OUI:00A2EE*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+OUI:98E476*
+ ID_OUI_FROM_DATABASE=Zentan
+
+OUI:18F76B*
+ ID_OUI_FROM_DATABASE=Zhejiang Winsight Technology CO.,LTD
+
+OUI:00609B*
+ ID_OUI_FROM_DATABASE=AstroNova, Inc
+
+OUI:B87CF2*
+ ID_OUI_FROM_DATABASE=Aerohive Networks Inc.
+
+OUI:C413E2*
+ ID_OUI_FROM_DATABASE=Aerohive Networks Inc.
+
+OUI:F09CE9*
+ ID_OUI_FROM_DATABASE=Aerohive Networks Inc.
+
+OUI:48D343*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:CCC5EF*
+ ID_OUI_FROM_DATABASE=Co-Comm Servicios Telecomunicaciones S.L.
+
+OUI:5C6B4F*
+ ID_OUI_FROM_DATABASE=Hello Inc.
+
+OUI:C09C04*
+ ID_OUI_FROM_DATABASE=Shaanxi GuoLian Digital TV Technology Co.,Ltd.
+
+OUI:D0F73B*
+ ID_OUI_FROM_DATABASE=Helmut Mauell GmbH Werk Weida
+
+OUI:D00AAB*
+ ID_OUI_FROM_DATABASE=Yokogawa Digital Computer Corporation
+
+OUI:AC233F*
+ ID_OUI_FROM_DATABASE=Shenzhen Minew Technologies Co., Ltd.
+
+OUI:000E58*
+ ID_OUI_FROM_DATABASE=Sonos, Inc.
+
+OUI:2C598A*
+ ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
+
+OUI:E0508B*
+ ID_OUI_FROM_DATABASE=Zhejiang Dahua Technology Co., Ltd.
+
+OUI:2C6FC9*
+ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+
+OUI:9C99A0*
+ ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
+
+OUI:185936*
+ ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
+
+OUI:98FAE3*
+ ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
+
+OUI:640980*
+ ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
+
+OUI:8CBEBE*
+ ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
+
+OUI:F8A45F*
+ ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
+
+OUI:508A0F*
+ ID_OUI_FROM_DATABASE=SHENZHEN FISE TECHNOLOGY HOLDING CO.,LTD.
+
+OUI:E4B005*
+ ID_OUI_FROM_DATABASE=Beijing IQIYI Science & Technology Co., Ltd.
+
+OUI:C83B45*
+ ID_OUI_FROM_DATABASE=JRI
+
+OUI:1CEEC9*
+ ID_OUI_FROM_DATABASE=Elo touch solutions
+
+OUI:4CB81C*
+ ID_OUI_FROM_DATABASE=SAM Electronics GmbH
+
+OUI:F83F51*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:6C5C14*
+ ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+
+OUI:2CDCAD*
+ ID_OUI_FROM_DATABASE=Wistron Neweb Corporation
+
+OUI:704D7B*
+ ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
+
+OUI:7CF95C*
+ ID_OUI_FROM_DATABASE=U.I. Lapp GmbH
+
+OUI:743A65*
+ ID_OUI_FROM_DATABASE=NEC Corporation
+
+OUI:C80CC8*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:0425C5*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:A4EE57*
+ ID_OUI_FROM_DATABASE=Seiko Epson Corporation
+
+OUI:480033*
+ ID_OUI_FROM_DATABASE=Technicolor CH USA Inc.
+
+OUI:14B31F*
+ ID_OUI_FROM_DATABASE=Dell Inc.
+
+OUI:BC8385*
+ ID_OUI_FROM_DATABASE=Microsoft Corporation
+
+OUI:A03D6F*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
+OUI:40605A*
+ ID_OUI_FROM_DATABASE=Hawkeye Tech Co. Ltd
+
+OUI:5419C8*
+ ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd.
+
+OUI:C0210D*
+ ID_OUI_FROM_DATABASE=SHENZHEN RF-LINK TECHNOLOGY CO.,LTD.
+
+OUI:000678*
+ ID_OUI_FROM_DATABASE=D&M Holdings Inc.
+
+OUI:886B44*
+ ID_OUI_FROM_DATABASE=Sunnovo International Limited
+
+OUI:A408F5*
+ ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS
+
+OUI:54FA96*
+ ID_OUI_FROM_DATABASE=Nokia
+
+OUI:1840A4*
+ ID_OUI_FROM_DATABASE=Shenzhen Trylong Smart Science and Technology Co., Ltd.
+
+OUI:9C50EE*
+ ID_OUI_FROM_DATABASE=Cambridge Industries(Group) Co.,Ltd.
+
+OUI:1077B0*
+ ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD
+
+OUI:F015B9*
+ ID_OUI_FROM_DATABASE=PlayFusion Limited
+
+OUI:70700D*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:E02202*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:24A7DC*
+ ID_OUI_FROM_DATABASE=BSkyB Ltd
+
+OUI:2CD02D*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
+OUI:3478D7*
+ ID_OUI_FROM_DATABASE=Gionee Communication Equipment Co.,Ltd.
+
+OUI:1CEFCE*
+ ID_OUI_FROM_DATABASE=bebro electronic GmbH
+
+OUI:CCB8A8*
+ ID_OUI_FROM_DATABASE=AMPAK Technology, Inc.
+
+OUI:5CFF35*
+ ID_OUI_FROM_DATABASE=Wistron Corporation
+
+OUI:78F29E*
+ ID_OUI_FROM_DATABASE=PEGATRON CORPORATION
+
+OUI:00D0B2*
+ ID_OUI_FROM_DATABASE=Xiotech Corporation
+
+OUI:000AE4*
+ ID_OUI_FROM_DATABASE=Wistron Corporation
+
+OUI:00262D*
+ ID_OUI_FROM_DATABASE=Wistron Corporation
+
+OUI:908674*
+ ID_OUI_FROM_DATABASE=SICHUAN TIANYI COMHEART TELECOMCO., LTD
+
+OUI:F49651*
+ ID_OUI_FROM_DATABASE=NAKAYO Inc
+
+OUI:681FD8*
+ ID_OUI_FROM_DATABASE=Siemens Industry, Inc.
+
+OUI:C43018*
+ ID_OUI_FROM_DATABASE=MCS Logic Inc.
+
+OUI:FCB58A*
+ ID_OUI_FROM_DATABASE=Wapice Ltd.
+
+OUI:DCEFCA*
+ ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd.
+
+OUI:E865D4*
+ ID_OUI_FROM_DATABASE=Tenda Technology Co.,Ltd.Dongguan branch
+
+OUI:285261*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
+OUI:286F7F*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
+OUI:089E08*
+ ID_OUI_FROM_DATABASE=Google, Inc.
+
+OUI:00014F*
+ ID_OUI_FROM_DATABASE=Adtran Inc
+
+OUI:D8E0E1*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:045D4B*
+ ID_OUI_FROM_DATABASE=Sony Corporation
+
+OUI:A80CCA*
+ ID_OUI_FROM_DATABASE=Shenzhen Sundray Technologies Company Limited
+
+OUI:94652D*
+ ID_OUI_FROM_DATABASE=OnePlus Technology (Shenzhen) Co., Ltd
+
+OUI:F8A34F*
+ ID_OUI_FROM_DATABASE=zte corporation
+
+OUI:845A81*
+ ID_OUI_FROM_DATABASE=ffly4u
+
+OUI:347877*
+ ID_OUI_FROM_DATABASE=O-Net Communications (Shenzhen) Limited
+
+OUI:F483E1*
+ ID_OUI_FROM_DATABASE=Shanghai Clouder Semiconductor Co.,Ltd
+
+OUI:08CCA7*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
+OUI:7868F7*
+ ID_OUI_FROM_DATABASE=YSTen Technology Co.,Ltd
+
+OUI:704F57*
+ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
+
+OUI:3407FB*
+ ID_OUI_FROM_DATABASE=Ericsson AB
+
+OUI:6CB4A7*
+ ID_OUI_FROM_DATABASE=Landauer, Inc.
+
+OUI:1C398A*
+ ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD
+
+OUI:F8A5C5*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
+OUI:A49B13*
+ ID_OUI_FROM_DATABASE=Digital Check
+
+OUI:542F8A*
+ ID_OUI_FROM_DATABASE=TELLESCOM INDUSTRIA E COMERCIO EM TELECOMUNICACAO
+
+OUI:6049C1*
+ ID_OUI_FROM_DATABASE=Avaya Inc
+
+OUI:DCC64B*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:043389*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:A0A33B*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:6854C1*
+ ID_OUI_FROM_DATABASE=ColorTokens, Inc.
+
+OUI:887873*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
OUI:0C6F9C*
ID_OUI_FROM_DATABASE=Shaw Communications Inc.
@@ -21524,9 +22799,6 @@ OUI:FC7516*
OUI:7C18CD*
ID_OUI_FROM_DATABASE=E-TRON Co.,Ltd.
-OUI:C8665D*
- ID_OUI_FROM_DATABASE=Aerohive Networks Inc.
-
OUI:3897D6*
ID_OUI_FROM_DATABASE=Hangzhou H3C Technologies Co., Limited
@@ -21539,12 +22811,6 @@ OUI:E498D6*
OUI:606944*
ID_OUI_FROM_DATABASE=Apple, Inc.
-OUI:001977*
- ID_OUI_FROM_DATABASE=Aerohive Networks Inc.
-
-OUI:4018B1*
- ID_OUI_FROM_DATABASE=Aerohive Networks Inc.
-
OUI:8896B6*
ID_OUI_FROM_DATABASE=Global Fire Equipment S.A.
@@ -21863,18 +23129,6 @@ OUI:B4475E*
OUI:90FB5B*
ID_OUI_FROM_DATABASE=Avaya Inc
-OUI:14F65A*
- ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
-
-OUI:0C1DAF*
- ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
-
-OUI:28E31F*
- ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
-
-OUI:F0B429*
- ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
-
OUI:00906F*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
@@ -22313,9 +23567,6 @@ OUI:D8D1CB*
OUI:4C8ECC*
ID_OUI_FROM_DATABASE=SILKAN SA
-OUI:3CEF8C*
- ID_OUI_FROM_DATABASE=ZHEJIANG DAHUA TECHNOLOGY CO.,LTD.
-
OUI:98F428*
ID_OUI_FROM_DATABASE=zte corporation
@@ -22418,9 +23669,6 @@ OUI:68F956*
OUI:58B633*
ID_OUI_FROM_DATABASE=Ruckus Wireless
-OUI:AC60B6*
- ID_OUI_FROM_DATABASE=Ericsson AB
-
OUI:F4E926*
ID_OUI_FROM_DATABASE=Tianjin Zanpu Technology Inc.
@@ -22727,9 +23975,6 @@ OUI:7C7A53*
OUI:4886E8*
ID_OUI_FROM_DATABASE=Microsoft Corporation
-OUI:78FC14*
- ID_OUI_FROM_DATABASE=B Communications Pty Ltd
-
OUI:88E161*
ID_OUI_FROM_DATABASE=Art Beijing Science and Technology Development Co., Ltd.
@@ -22787,9 +24032,6 @@ OUI:908C09*
OUI:1C7E51*
ID_OUI_FROM_DATABASE=3bumen.com
-OUI:60C798*
- ID_OUI_FROM_DATABASE=Verifone, Inc.
-
OUI:380E7B*
ID_OUI_FROM_DATABASE=V.P.S. Thai Co., Ltd
@@ -23111,9 +24353,6 @@ OUI:64E892*
OUI:086DF2*
ID_OUI_FROM_DATABASE=Shenzhen MIMOWAVE Technology Co.,Ltd
-OUI:64EB8C*
- ID_OUI_FROM_DATABASE=Seiko Epson Corporation
-
OUI:48D0CF*
ID_OUI_FROM_DATABASE=Universal Electronics, Inc.
@@ -23153,15 +24392,9 @@ OUI:04DB8A*
OUI:083F76*
ID_OUI_FROM_DATABASE=Intellian Technologies, Inc.
-OUI:0CC47A*
- ID_OUI_FROM_DATABASE=Super Micro Computer, Inc.
-
OUI:D0634D*
ID_OUI_FROM_DATABASE=Meiko Maschinenbau GmbH &amp; Co. KG
-OUI:88C626*
- ID_OUI_FROM_DATABASE=Logitech - Ultimate Ears
-
OUI:889CA6*
ID_OUI_FROM_DATABASE=BTB Korea INC
@@ -23393,9 +24626,6 @@ OUI:988E4A*
OUI:1C4158*
ID_OUI_FROM_DATABASE=Gemalto M2M GmbH
-OUI:ACD657*
- ID_OUI_FROM_DATABASE=Shaanxi Guolian Digital TV Technology Co., Ltd.
-
OUI:541B5D*
ID_OUI_FROM_DATABASE=Techno-Innov
@@ -23609,9 +24839,6 @@ OUI:0868D0*
OUI:103DEA*
ID_OUI_FROM_DATABASE=HFC Technology (Beijing) Ltd. Co.
-OUI:E8E875*
- ID_OUI_FROM_DATABASE=iS5 Communications Inc.
-
OUI:2C7B5A*
ID_OUI_FROM_DATABASE=Milper Ltd
@@ -24605,9 +25832,6 @@ OUI:E878A1*
OUI:3057AC*
ID_OUI_FROM_DATABASE=IRLAB LTD.
-OUI:9002A9*
- ID_OUI_FROM_DATABASE=ZHEJIANG DAHUA TECHNOLOGY CO.,LTD
-
OUI:28AF0A*
ID_OUI_FROM_DATABASE=Sirius XM Radio Inc
@@ -26042,9 +27266,6 @@ OUI:0026B5*
OUI:0026AF*
ID_OUI_FROM_DATABASE=Duelco A/S
-OUI:0026AB*
- ID_OUI_FROM_DATABASE=SEIKO EPSON CORPORATION
-
OUI:0026A5*
ID_OUI_FROM_DATABASE=MICROROBOT.CO.,LTD
@@ -26189,9 +27410,6 @@ OUI:002451*
OUI:00244C*
ID_OUI_FROM_DATABASE=Solartron Metrology Ltd
-OUI:002445*
- ID_OUI_FROM_DATABASE=CommScope Canada Inc.
-
OUI:00243F*
ID_OUI_FROM_DATABASE=Storwize, Inc.
@@ -26387,9 +27605,6 @@ OUI:00235D*
OUI:002356*
ID_OUI_FROM_DATABASE=Packet Forensics LLC
-OUI:00234A*
- ID_OUI_FROM_DATABASE=Private
-
OUI:002313*
ID_OUI_FROM_DATABASE=Qool Technologies Ltd.
@@ -27866,9 +29081,6 @@ OUI:00160A*
OUI:001603*
ID_OUI_FROM_DATABASE=COOLKSKY Co., LTD
-OUI:0015FC*
- ID_OUI_FROM_DATABASE=Littelfuse Startco
-
OUI:0015F7*
ID_OUI_FROM_DATABASE=Wintecronics Ltd.
@@ -28412,9 +29624,6 @@ OUI:00118B*
OUI:001196*
ID_OUI_FROM_DATABASE=Actuality Systems, Inc.
-OUI:00117E*
- ID_OUI_FROM_DATABASE=Progeny, A division of Midmark Corp
-
OUI:001179*
ID_OUI_FROM_DATABASE=Singular Technology Co. Ltd.
@@ -28757,9 +29966,6 @@ OUI:000EE9*
OUI:000EF0*
ID_OUI_FROM_DATABASE=Festo AG & Co. KG
-OUI:000F4F*
- ID_OUI_FROM_DATABASE=Cadmus Technology Ltd
-
OUI:000F35*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
@@ -30170,9 +31376,6 @@ OUI:00042F*
OUI:000429*
ID_OUI_FROM_DATABASE=Pixord Corporation
-OUI:000422*
- ID_OUI_FROM_DATABASE=Gordon Kapes, Inc.
-
OUI:00041C*
ID_OUI_FROM_DATABASE=ipDialog, Inc.
@@ -30371,9 +31574,6 @@ OUI:000311*
OUI:00030A*
ID_OUI_FROM_DATABASE=Argus Technologies
-OUI:000302*
- ID_OUI_FROM_DATABASE=Charles Industries, Ltd.
-
OUI:000305*
ID_OUI_FROM_DATABASE=MSC Vertriebs GmbH
@@ -31712,9 +32912,6 @@ OUI:00E085*
OUI:00E05A*
ID_OUI_FROM_DATABASE=GALEA NETWORK SECURITY
-OUI:00E022*
- ID_OUI_FROM_DATABASE=Analog Devices Inc.
-
OUI:00E0E7*
ID_OUI_FROM_DATABASE=RAYTHEON E-SYSTEMS, INC.
@@ -32855,12 +34052,6 @@ OUI:E09861*
OUI:F4F1E1*
ID_OUI_FROM_DATABASE=Motorola Mobility LLC, a Lenovo Company
-OUI:74C99A*
- ID_OUI_FROM_DATABASE=Ericsson AB
-
-OUI:3C197D*
- ID_OUI_FROM_DATABASE=Ericsson AB
-
OUI:60BEB5*
ID_OUI_FROM_DATABASE=Motorola Mobility LLC, a Lenovo Company
@@ -33836,9 +35027,6 @@ OUI:FCF528*
OUI:588BF3*
ID_OUI_FROM_DATABASE=ZyXEL Communications Corporation
-OUI:EC43F6*
- ID_OUI_FROM_DATABASE=5420
-
OUI:D8B02E*
ID_OUI_FROM_DATABASE=Guangzhou Zonerich Business Machine Co., LTD.
@@ -33863,6 +35051,618 @@ OUI:C4BB4C*
OUI:8C04FF*
ID_OUI_FROM_DATABASE=Technicolor CH USA Inc.
+OUI:001972*
+ ID_OUI_FROM_DATABASE=Plexus (Xiamen) Co.,ltd.
+
+OUI:6488FF*
+ ID_OUI_FROM_DATABASE=Sichuan Changhong Electric Ltd.
+
+OUI:005979*
+ ID_OUI_FROM_DATABASE=Networked Energy Services
+
+OUI:000997*
+ ID_OUI_FROM_DATABASE=Nortel Networks
+
+OUI:000E62*
+ ID_OUI_FROM_DATABASE=Nortel Networks
+
+OUI:000EC0*
+ ID_OUI_FROM_DATABASE=Nortel Networks
+
+OUI:000FCD*
+ ID_OUI_FROM_DATABASE=Nortel Networks
+
+OUI:0004DC*
+ ID_OUI_FROM_DATABASE=Nortel Networks
+
+OUI:02E6D3*
+ ID_OUI_FROM_DATABASE=NIXDORF COMPUTER CORP.
+
+OUI:0016B9*
+ ID_OUI_FROM_DATABASE=ProCurve Networking by HP
+
+OUI:0024A8*
+ ID_OUI_FROM_DATABASE=ProCurve Networking by HP
+
+OUI:CC3ADF*
+ ID_OUI_FROM_DATABASE=Private
+
+OUI:141F78*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:006F64*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:DC6672*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:0025C3*
+ ID_OUI_FROM_DATABASE=21168
+
+OUI:001365*
+ ID_OUI_FROM_DATABASE=Nortel Networks
+
+OUI:001ECA*
+ ID_OUI_FROM_DATABASE=Nortel Networks
+
+OUI:001D42*
+ ID_OUI_FROM_DATABASE=Nortel Networks
+
+OUI:001CEB*
+ ID_OUI_FROM_DATABASE=Nortel Networks
+
+OUI:002363*
+ ID_OUI_FROM_DATABASE=Zhuhai Raysharp Technology Co.,Ltd
+
+OUI:D03742*
+ ID_OUI_FROM_DATABASE=Yulong Computer Telecommunication Scientific (Shenzhen) Co.,Ltd
+
+OUI:001CFD*
+ ID_OUI_FROM_DATABASE=Universal Electronics, Inc.
+
+OUI:080051*
+ ID_OUI_FROM_DATABASE=ExperData
+
+OUI:0080C7*
+ ID_OUI_FROM_DATABASE=XIRCOM
+
+OUI:049FCA*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:C81FBE*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:203DB2*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:48D539*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:10E68F*
+ ID_OUI_FROM_DATABASE=KWANGSUNG ELECTRONICS KOREA CO.,LTD.
+
+OUI:1899F5*
+ ID_OUI_FROM_DATABASE=Sichuan Changhong Electric Ltd.
+
+OUI:E41D2D*
+ ID_OUI_FROM_DATABASE=Mellanox Technologies, Inc.
+
+OUI:B80018*
+ ID_OUI_FROM_DATABASE=Htel
+
+OUI:0081C4*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
+OUI:E8FD90*
+ ID_OUI_FROM_DATABASE=Turbostor
+
+OUI:0017EA*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
+OUI:0017E3*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
+OUI:001834*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
+OUI:00182F*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
+OUI:78DEE4*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
+OUI:B8FFFE*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
+OUI:E0D7BA*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
+OUI:405FC2*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
+OUI:8030DC*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
+OUI:CC78AB*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
+OUI:A4D578*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
+OUI:544A16*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
+OUI:D8DDFD*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
+OUI:20CD39*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
+OUI:987BF3*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
+OUI:247189*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
+OUI:EC1127*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
+OUI:F0C77F*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
+OUI:F45EAB*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
+OUI:001783*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
+OUI:A81B6A*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
+OUI:9884E3*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
+OUI:38D269*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
+OUI:C8FD19*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
+OUI:508CB1*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
+OUI:04BBF9*
+ ID_OUI_FROM_DATABASE=Pavilion Data Systems Inc
+
+OUI:B0F893*
+ ID_OUI_FROM_DATABASE=Shanghai MXCHIP Information Technology Co., Ltd.
+
+OUI:00C017*
+ ID_OUI_FROM_DATABASE=NetScout Systems, Inc.
+
+OUI:D49B5C*
+ ID_OUI_FROM_DATABASE=Chongqing Miedu Technology Co., Ltd.
+
+OUI:EC8CA2*
+ ID_OUI_FROM_DATABASE=Ruckus Wireless
+
+OUI:C411E0*
+ ID_OUI_FROM_DATABASE=Bull Group Co., Ltd
+
+OUI:90842B*
+ ID_OUI_FROM_DATABASE=LEGO System A/S
+
+OUI:84C7EA*
+ ID_OUI_FROM_DATABASE=Sony Mobile Communications AB
+
+OUI:8C6102*
+ ID_OUI_FROM_DATABASE=Beijing Baofengmojing Technologies Co., Ltd
+
+OUI:1005B1*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:10868C*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:1C1B68*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:44E137*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:E83381*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:8461A0*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:0CF893*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:14ABF0*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:ACB313*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:0026D9*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:28C87A*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:54E2E0*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:A055DE*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:A0C562*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:FC6FB7*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001A1B*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:00149A*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001371*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001DBE*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001E5A*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001D6B*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001CC1*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001C11*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001F7E*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:002495*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:2C9E5F*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:C8AA21*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:341FE4*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:400D10*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001596*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:0015A2*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001311*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:0015CE*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:002040*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:0011AE*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:000F9F*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:306023*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001DD6*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001DD1*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:601971*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:0000CA*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001ADB*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:002375*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:0024A1*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:A4ED4E*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:002642*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:000B06*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:00152F*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:00111A*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001626*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:0018A4*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:00D037*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:FC9114*
+ ID_OUI_FROM_DATABASE=Technicolor CH USA Inc.
+
+OUI:1C25E1*
+ ID_OUI_FROM_DATABASE=China Mobile IOT Company Limited
+
+OUI:C0F636*
+ ID_OUI_FROM_DATABASE=Hangzhou Kuaiyue Technologies, Ltd.
+
+OUI:F0038C*
+ ID_OUI_FROM_DATABASE=AzureWave Technology Inc.
+
+OUI:B45D50*
+ ID_OUI_FROM_DATABASE=Aruba Networks
+
+OUI:001E7D*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:3C6200*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:0024E9*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:002399*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:E4E0C5*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:E8039A*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:C4731E*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:78D6F0*
+ ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO MECHANICS CO., LTD.
+
+OUI:B407F9*
+ ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO MECHANICS CO., LTD.
+
+OUI:40B89A*
+ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+
+OUI:A8A795*
+ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+
+OUI:8096CA*
+ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+
+OUI:9CD21E*
+ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+
+OUI:D87988*
+ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+
+OUI:00242B*
+ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+
+OUI:00242C*
+ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+
+OUI:945330*
+ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+
+OUI:EC0EC4*
+ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+
+OUI:7429AF*
+ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+
+OUI:346895*
+ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+
+OUI:A86BAD*
+ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+
+OUI:D80F99*
+ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+
+OUI:78DD08*
+ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+
+OUI:00197E*
+ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+
+OUI:A0AB1B*
+ ID_OUI_FROM_DATABASE=D-Link International
+
+OUI:5C4979*
+ ID_OUI_FROM_DATABASE=AVM Audiovisuelles Marketing und Computersysteme GmbH
+
+OUI:086A0A*
+ ID_OUI_FROM_DATABASE=ASKEY COMPUTER CORP
+
+OUI:101250*
+ ID_OUI_FROM_DATABASE=Integrated Device Technology (Malaysia) Sdn. Bhd.
+
+OUI:8C7712*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:2013E0*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:0007AB*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:0021D2*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:BC4760*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:D0176A*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:F0D9B2*
+ ID_OUI_FROM_DATABASE=EXO S.A.
+
+OUI:2CBABA*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:24920E*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:40D3AE*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:802AA8*
+ ID_OUI_FROM_DATABASE=Ubiquiti Networks Inc.
+
+OUI:00156D*
+ ID_OUI_FROM_DATABASE=Ubiquiti Networks Inc.
+
+OUI:787D48*
+ ID_OUI_FROM_DATABASE=ITEL MOBILE LIMITED
+
+OUI:D46E0E*
+ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
+
+OUI:049790*
+ ID_OUI_FROM_DATABASE=Lartech telecom LLC
+
+OUI:8CEA1B*
+ ID_OUI_FROM_DATABASE=Edgecore Networks Corporation
+
+OUI:001650*
+ ID_OUI_FROM_DATABASE=Kratos EPD
+
+OUI:9CFBD5*
+ ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd.
+
+OUI:583112*
+ ID_OUI_FROM_DATABASE=DRUST
+
+OUI:7C2634*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:58696C*
+ ID_OUI_FROM_DATABASE=Ruijie Networks Co.,LTD
+
+OUI:A0B8F8*
+ ID_OUI_FROM_DATABASE=Amgen U.S.A. Inc.
+
+OUI:14A51A*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:C816A5*
+ ID_OUI_FROM_DATABASE=Masimo Corporation
+
+OUI:9002A9*
+ ID_OUI_FROM_DATABASE=Zhejiang Dahua Technology Co., Ltd.
+
+OUI:ACD657*
+ ID_OUI_FROM_DATABASE=Shaanxi GuoLian Digital TV Technology Co.,Ltd.
+
+OUI:E80945*
+ ID_OUI_FROM_DATABASE=Integrated Device Technology (Malaysia) Sdn. Bhd.
+
+OUI:98FD74*
+ ID_OUI_FROM_DATABASE=ACT.CO.LTD
+
+OUI:60C798*
+ ID_OUI_FROM_DATABASE=Verifone
+
+OUI:A46011*
+ ID_OUI_FROM_DATABASE=Verifone
+
+OUI:2C2131*
+ ID_OUI_FROM_DATABASE=Juniper Networks
+
+OUI:0CC47A*
+ ID_OUI_FROM_DATABASE=Super Micro Computer, Inc.
+
+OUI:60427F*
+ ID_OUI_FROM_DATABASE=SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD
+
+OUI:F8461C*
+ ID_OUI_FROM_DATABASE=Sony Interactive Entertainment Inc.
+
+OUI:40B93C*
+ ID_OUI_FROM_DATABASE=Hewlett Packard Enterprise
+
+OUI:4C7487*
+ ID_OUI_FROM_DATABASE=Leader Phone Communication Technology Co., Ltd.
+
+OUI:F48C50*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
+OUI:E8E875*
+ ID_OUI_FROM_DATABASE=iS5 Communications Inc.
+
+OUI:000422*
+ ID_OUI_FROM_DATABASE=Studio Technologies, Inc
+
+OUI:ACC662*
+ ID_OUI_FROM_DATABASE=MitraStar Technology Corp.
+
+OUI:B8ECA3*
+ ID_OUI_FROM_DATABASE=ZyXEL Communications Corporation
+
+OUI:F01DBC*
+ ID_OUI_FROM_DATABASE=Microsoft Corporation
+
+OUI:404D7F*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:7C04D0*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:BC9FEF*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:8866A5*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:ACDCE5*
+ ID_OUI_FROM_DATABASE=Procter & Gamble Company
+
+OUI:784F43*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:98D293*
+ ID_OUI_FROM_DATABASE=Google, Inc.
+
+OUI:5CCCA0*
+ ID_OUI_FROM_DATABASE=Gridwiz Inc.
+
OUI:104FA8*
ID_OUI_FROM_DATABASE=Sony Corporation
@@ -33875,12 +35675,6 @@ OUI:486B2C*
OUI:00001F*
ID_OUI_FROM_DATABASE=Telco Systems, Inc.
-OUI:0016D3*
- ID_OUI_FROM_DATABASE=Wistron Neweb Corporation
-
-OUI:001F16*
- ID_OUI_FROM_DATABASE=Wistron Neweb Corporation
-
OUI:BC307E*
ID_OUI_FROM_DATABASE=Wistron Neweb Corporation
@@ -34232,9 +36026,6 @@ OUI:1CEA1B*
OUI:B4F81E*
ID_OUI_FROM_DATABASE=Kinova
-OUI:A46011*
- ID_OUI_FROM_DATABASE=VeriFone Inc.
-
OUI:28CA09*
ID_OUI_FROM_DATABASE=ThyssenKrupp Elevators (Shanghai) Co.,Ltd
@@ -34313,527 +36104,251 @@ OUI:FCECDA*
OUI:E07C13*
ID_OUI_FROM_DATABASE=zte corporation
-OUI:58696C*
- ID_OUI_FROM_DATABASE=Ruijie Networks Co.,LTD.
-
-OUI:001972*
- ID_OUI_FROM_DATABASE=Plexus (Xiamen) Co.,ltd.
+OUI:58E16C*
+ ID_OUI_FROM_DATABASE=Ying Hua Information Technology (Shanghai)Co., LTD
-OUI:6488FF*
- ID_OUI_FROM_DATABASE=Sichuan Changhong Electric Ltd.
+OUI:24C1BD*
+ ID_OUI_FROM_DATABASE=CRRC DALIAN R&D CO.,LTD.
-OUI:005979*
- ID_OUI_FROM_DATABASE=Networked Energy Services
+OUI:A81E84*
+ ID_OUI_FROM_DATABASE=QUANTA COMPUTER INC.
-OUI:000997*
- ID_OUI_FROM_DATABASE=Nortel Networks
+OUI:C82158*
+ ID_OUI_FROM_DATABASE=Intel Corporate
-OUI:000E62*
- ID_OUI_FROM_DATABASE=Nortel Networks
+OUI:2420C7*
+ ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS
-OUI:000EC0*
- ID_OUI_FROM_DATABASE=Nortel Networks
+OUI:703D15*
+ ID_OUI_FROM_DATABASE=Hangzhou H3C Technologies Co., Limited
-OUI:000FCD*
- ID_OUI_FROM_DATABASE=Nortel Networks
+OUI:4018B1*
+ ID_OUI_FROM_DATABASE=Aerohive Networks Inc.
-OUI:0004DC*
- ID_OUI_FROM_DATABASE=Nortel Networks
+OUI:001977*
+ ID_OUI_FROM_DATABASE=Aerohive Networks Inc.
-OUI:02E6D3*
- ID_OUI_FROM_DATABASE=NIXDORF COMPUTER CORP.
+OUI:C8665D*
+ ID_OUI_FROM_DATABASE=Aerohive Networks Inc.
-OUI:0016B9*
- ID_OUI_FROM_DATABASE=ProCurve Networking by HP
+OUI:3CEF8C*
+ ID_OUI_FROM_DATABASE=Zhejiang Dahua Technology Co., Ltd.
-OUI:0024A8*
- ID_OUI_FROM_DATABASE=ProCurve Networking by HP
+OUI:A0CC2B*
+ ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd.
-OUI:CC3ADF*
+OUI:00234A*
ID_OUI_FROM_DATABASE=Private
-OUI:141F78*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:006F64*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:DC6672*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:0025C3*
- ID_OUI_FROM_DATABASE=21168
-
-OUI:001365*
- ID_OUI_FROM_DATABASE=Nortel Networks
+OUI:88C626*
+ ID_OUI_FROM_DATABASE=Logitech, Inc
-OUI:001ECA*
- ID_OUI_FROM_DATABASE=Nortel Networks
+OUI:B85001*
+ ID_OUI_FROM_DATABASE=Zebra Technologies Inc.
-OUI:001D42*
- ID_OUI_FROM_DATABASE=Nortel Networks
+OUI:28E31F*
+ ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
-OUI:001CEB*
- ID_OUI_FROM_DATABASE=Nortel Networks
+OUI:0C1DAF*
+ ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
-OUI:002363*
- ID_OUI_FROM_DATABASE=Zhuhai Raysharp Technology Co.,Ltd
+OUI:14F65A*
+ ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
-OUI:D03742*
- ID_OUI_FROM_DATABASE=Yulong Computer Telecommunication Scientific (Shenzhen) Co.,Ltd
+OUI:742344*
+ ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
-OUI:001CFD*
- ID_OUI_FROM_DATABASE=Universal Electronics, Inc.
+OUI:F0B429*
+ ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
-OUI:080051*
- ID_OUI_FROM_DATABASE=ExperData
+OUI:94E979*
+ ID_OUI_FROM_DATABASE=Liteon Technology Corporation
-OUI:0080C7*
- ID_OUI_FROM_DATABASE=XIRCOM
+OUI:AC1F6B*
+ ID_OUI_FROM_DATABASE=Super Micro Computer, Inc.
-OUI:049FCA*
+OUI:80D4A5*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
-OUI:C81FBE*
+OUI:38BC01*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
-OUI:203DB2*
+OUI:04B0E7*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
-OUI:48D539*
+OUI:446A2E*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
-OUI:10E68F*
- ID_OUI_FROM_DATABASE=KWANGSUNG ELECTRONICS KOREA CO.,LTD.
-
-OUI:1899F5*
- ID_OUI_FROM_DATABASE=Sichuan Changhong Electric Ltd.
-
-OUI:E41D2D*
- ID_OUI_FROM_DATABASE=Mellanox Technologies, Inc.
-
-OUI:B80018*
- ID_OUI_FROM_DATABASE=Htel
-
-OUI:0081C4*
- ID_OUI_FROM_DATABASE=Cisco Systems, Inc
-
-OUI:E8FD90*
- ID_OUI_FROM_DATABASE=Turbostor
-
-OUI:0017EA*
- ID_OUI_FROM_DATABASE=Texas Instruments
-
-OUI:0017E3*
- ID_OUI_FROM_DATABASE=Texas Instruments
-
-OUI:001834*
- ID_OUI_FROM_DATABASE=Texas Instruments
-
-OUI:00182F*
- ID_OUI_FROM_DATABASE=Texas Instruments
-
-OUI:78DEE4*
- ID_OUI_FROM_DATABASE=Texas Instruments
-
-OUI:B8FFFE*
- ID_OUI_FROM_DATABASE=Texas Instruments
-
-OUI:E0D7BA*
- ID_OUI_FROM_DATABASE=Texas Instruments
-
-OUI:405FC2*
- ID_OUI_FROM_DATABASE=Texas Instruments
-
-OUI:8030DC*
- ID_OUI_FROM_DATABASE=Texas Instruments
-
-OUI:CC78AB*
- ID_OUI_FROM_DATABASE=Texas Instruments
-
-OUI:A4D578*
- ID_OUI_FROM_DATABASE=Texas Instruments
-
-OUI:544A16*
- ID_OUI_FROM_DATABASE=Texas Instruments
-
-OUI:D8DDFD*
- ID_OUI_FROM_DATABASE=Texas Instruments
-
-OUI:20CD39*
- ID_OUI_FROM_DATABASE=Texas Instruments
-
-OUI:987BF3*
- ID_OUI_FROM_DATABASE=Texas Instruments
-
-OUI:247189*
- ID_OUI_FROM_DATABASE=Texas Instruments
-
-OUI:EC1127*
- ID_OUI_FROM_DATABASE=Texas Instruments
-
-OUI:F0C77F*
- ID_OUI_FROM_DATABASE=Texas Instruments
-
-OUI:F45EAB*
- ID_OUI_FROM_DATABASE=Texas Instruments
-
-OUI:001783*
- ID_OUI_FROM_DATABASE=Texas Instruments
-
-OUI:A81B6A*
- ID_OUI_FROM_DATABASE=Texas Instruments
-
-OUI:9884E3*
- ID_OUI_FROM_DATABASE=Texas Instruments
-
-OUI:38D269*
- ID_OUI_FROM_DATABASE=Texas Instruments
-
-OUI:C8FD19*
- ID_OUI_FROM_DATABASE=Texas Instruments
-
-OUI:508CB1*
- ID_OUI_FROM_DATABASE=Texas Instruments
-
-OUI:04BBF9*
- ID_OUI_FROM_DATABASE=Pavilion Data Systems Inc
-
-OUI:B0F893*
- ID_OUI_FROM_DATABASE=Shanghai MXCHIP Information Technology Co., Ltd.
-
-OUI:00C017*
- ID_OUI_FROM_DATABASE=NetScout Systems, Inc.
-
-OUI:D49B5C*
- ID_OUI_FROM_DATABASE=Chongqing Miedu Technology Co., Ltd.
-
-OUI:EC8CA2*
- ID_OUI_FROM_DATABASE=Ruckus Wireless
-
-OUI:C411E0*
- ID_OUI_FROM_DATABASE=Bull Group Co., Ltd
-
-OUI:90842B*
- ID_OUI_FROM_DATABASE=LEGO System A/S
-
-OUI:84C7EA*
- ID_OUI_FROM_DATABASE=Sony Mobile Communications AB
-
-OUI:8C6102*
- ID_OUI_FROM_DATABASE=Beijing Baofengmojing Technologies Co., Ltd
-
-OUI:1005B1*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:10868C*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:1C1B68*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:44E137*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:E83381*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:8461A0*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:0CF893*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:14ABF0*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:ACB313*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:0026D9*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:28C87A*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:54E2E0*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:A055DE*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:A0C562*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:FC6FB7*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:001A1B*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:00149A*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:001371*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:001DBE*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:001E5A*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:001D6B*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:001CC1*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:001C11*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:001F7E*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:002495*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:2C9E5F*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:C8AA21*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:341FE4*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:400D10*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:001596*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:0015A2*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:001311*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:0015CE*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:002040*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:0011AE*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+OUI:0026AB*
+ ID_OUI_FROM_DATABASE=Seiko Epson Corporation
-OUI:000F9F*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+OUI:64EB8C*
+ ID_OUI_FROM_DATABASE=Seiko Epson Corporation
-OUI:306023*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+OUI:A06FAA*
+ ID_OUI_FROM_DATABASE=LG Innotek
-OUI:001DD6*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+OUI:0015FC*
+ ID_OUI_FROM_DATABASE=Littelfuse Startco
-OUI:001DD1*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+OUI:504B5B*
+ ID_OUI_FROM_DATABASE=CONTROLtronic GmbH
-OUI:601971*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+OUI:A0E0AF*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
-OUI:0000CA*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+OUI:603E7B*
+ ID_OUI_FROM_DATABASE=Gafachi, Inc.
-OUI:001ADB*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+OUI:98F199*
+ ID_OUI_FROM_DATABASE=NEC Platforms, Ltd.
-OUI:002375*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+OUI:78FC14*
+ ID_OUI_FROM_DATABASE=Family Zone Cyber Safety Ltd
-OUI:0024A1*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+OUI:1062EB*
+ ID_OUI_FROM_DATABASE=D-Link International
-OUI:A4ED4E*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+OUI:1C48CE*
+ ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
-OUI:002642*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+OUI:E0A700*
+ ID_OUI_FROM_DATABASE=Verkada Inc
-OUI:000B06*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+OUI:901711*
+ ID_OUI_FROM_DATABASE=Hagenuk Marinekommunikation GmbH
-OUI:00152F*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+OUI:D825B0*
+ ID_OUI_FROM_DATABASE=Rockeetech Systems Co.,Ltd.
-OUI:00111A*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+OUI:74614B*
+ ID_OUI_FROM_DATABASE=Chongqing Huijiatong Information Technology Co., Ltd.
-OUI:001626*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+OUI:C0D9F7*
+ ID_OUI_FROM_DATABASE=ShanDong Domor Intelligent S&T CO.,Ltd
-OUI:0018A4*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+OUI:94FB29*
+ ID_OUI_FROM_DATABASE=Zebra Technologies Inc.
-OUI:00D037*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+OUI:64DBA0*
+ ID_OUI_FROM_DATABASE=Select Comfort
-OUI:FC9114*
- ID_OUI_FROM_DATABASE=Technicolor CH USA Inc.
+OUI:5800E3*
+ ID_OUI_FROM_DATABASE=Liteon Technology Corporation
-OUI:1C25E1*
- ID_OUI_FROM_DATABASE=China Mobile IOT Company Limited
+OUI:64777D*
+ ID_OUI_FROM_DATABASE=Hitron Technologies. Inc
-OUI:C0F636*
- ID_OUI_FROM_DATABASE=Hangzhou Kuaiyue Technologies, Ltd.
+OUI:0495E6*
+ ID_OUI_FROM_DATABASE=Tenda Technology Co.,Ltd.Dongguan branch
-OUI:F0038C*
- ID_OUI_FROM_DATABASE=AzureWave Technology Inc.
+OUI:0016D3*
+ ID_OUI_FROM_DATABASE=Wistron Corporation
-OUI:B45D50*
- ID_OUI_FROM_DATABASE=Aruba Networks
+OUI:001F16*
+ ID_OUI_FROM_DATABASE=Wistron Corporation
-OUI:742344*
- ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
+OUI:4C4E03*
+ ID_OUI_FROM_DATABASE=TCT mobile ltd
-OUI:001E7D*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:50E666*
+ ID_OUI_FROM_DATABASE=Shenzhen Techtion Electronics Co., Ltd.
-OUI:3C6200*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:6831FE*
+ ID_OUI_FROM_DATABASE=Teladin Co.,Ltd.
-OUI:0024E9*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:EC43F6*
+ ID_OUI_FROM_DATABASE=ZyXEL Communications Corporation
-OUI:002399*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:D4B169*
+ ID_OUI_FROM_DATABASE=Le Shi Zhi Xin Electronic Technology (Tianjin) Limited
-OUI:E4E0C5*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:0C3CCD*
+ ID_OUI_FROM_DATABASE=Universal Global Scientific Industrial Co., Ltd.
-OUI:E8039A*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:B04089*
+ ID_OUI_FROM_DATABASE=Senient Systems LTD
-OUI:C4731E*
+OUI:682737*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:78D6F0*
- ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO MECHANICS CO., LTD.
-
-OUI:B407F9*
- ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO MECHANICS CO., LTD.
-
-OUI:40B89A*
- ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
-
-OUI:A8A795*
- ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
-
-OUI:8096CA*
- ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
-
-OUI:9CD21E*
- ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
-
-OUI:D87988*
- ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
-
-OUI:00242B*
- ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
-
-OUI:00242C*
- ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
-
-OUI:945330*
- ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
-
-OUI:EC0EC4*
- ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
-
-OUI:7429AF*
- ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
-
-OUI:346895*
- ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
-
-OUI:A86BAD*
- ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+OUI:002445*
+ ID_OUI_FROM_DATABASE=Adtran Inc
-OUI:D80F99*
- ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+OUI:689FF0*
+ ID_OUI_FROM_DATABASE=zte corporation
-OUI:78DD08*
- ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+OUI:7CC6C4*
+ ID_OUI_FROM_DATABASE=Kolff Computer Supplies b.v.
-OUI:00197E*
- ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+OUI:14B7F8*
+ ID_OUI_FROM_DATABASE=Technicolor CH USA Inc.
-OUI:A0AB1B*
- ID_OUI_FROM_DATABASE=D-Link International
+OUI:F06E32*
+ ID_OUI_FROM_DATABASE=MICROTEL INNOVATION S.R.L.
-OUI:5C4979*
- ID_OUI_FROM_DATABASE=AVM Audiovisuelles Marketing und Computersysteme GmbH
+OUI:00E022*
+ ID_OUI_FROM_DATABASE=Analog Devices, Inc.
-OUI:086A0A*
- ID_OUI_FROM_DATABASE=ASKEY COMPUTER CORP
+OUI:7C67A2*
+ ID_OUI_FROM_DATABASE=Intel Corporate
-OUI:101250*
- ID_OUI_FROM_DATABASE=Integrated Device Technology (Malaysia) Sdn. Bhd.
+OUI:000302*
+ ID_OUI_FROM_DATABASE=Charles Industries, Ltd.
-OUI:8C7712*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:0896AD*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
-OUI:2013E0*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:8CF5A3*
+ ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO-MECHANICS(THAILAND)
-OUI:0007AB*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:B8EAAA*
+ ID_OUI_FROM_DATABASE=ICG NETWORKS CO.,ltd
-OUI:0021D2*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:B8F883*
+ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
-OUI:BC4760*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:DCFE18*
+ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
-OUI:D0176A*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:AC60B6*
+ ID_OUI_FROM_DATABASE=Ericsson AB
-OUI:F0D9B2*
- ID_OUI_FROM_DATABASE=EXO S.A.
+OUI:3C197D*
+ ID_OUI_FROM_DATABASE=Ericsson AB
-OUI:2CBABA*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:74C99A*
+ ID_OUI_FROM_DATABASE=Ericsson AB
-OUI:24920E*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:000F4F*
+ ID_OUI_FROM_DATABASE=PCS Systemtechnik GmbH
-OUI:40D3AE*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:7C5A1C*
+ ID_OUI_FROM_DATABASE=Sophos Ltd
-OUI:802AA8*
- ID_OUI_FROM_DATABASE=Ubiquiti Networks Inc.
+OUI:00E400*
+ ID_OUI_FROM_DATABASE=Sichuan Changhong Electric Ltd.
-OUI:00156D*
- ID_OUI_FROM_DATABASE=Ubiquiti Networks Inc.
+OUI:00117E*
+ ID_OUI_FROM_DATABASE=Midmark Corp
-OUI:787D48*
- ID_OUI_FROM_DATABASE=ITEL MOBILE LIMITED
+OUI:703ACB*
+ ID_OUI_FROM_DATABASE=Google, Inc.
-OUI:D46E0E*
- ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
+OUI:105AF7*
+ ID_OUI_FROM_DATABASE=ADB Italia
-OUI:049790*
- ID_OUI_FROM_DATABASE=Lartech telecom LLC
+OUI:2C55D3*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
-OUI:8CEA1B*
- ID_OUI_FROM_DATABASE=Edgecore Networks Corporation
+OUI:F44C7F*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
-OUI:001650*
- ID_OUI_FROM_DATABASE=Kratos EPD
+OUI:143004*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
-OUI:58E16C*
- ID_OUI_FROM_DATABASE=Ying Hua Information Technology (Shanghai)Co., LTD
+OUI:D481D7*
+ ID_OUI_FROM_DATABASE=Dell Inc.
OUI:5846E1*
ID_OUI_FROM_DATABASE=Baxter International Inc
@@ -34988,9 +36503,6 @@ OUI:0C0535*
OUI:8CF228*
ID_OUI_FROM_DATABASE=SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.
-OUI:08EA44*
- ID_OUI_FROM_DATABASE=Aerohive Networks Inc.
-
OUI:78F882*
ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
@@ -35159,12 +36671,6 @@ OUI:1C994C*
OUI:F02765*
ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd.
-OUI:D4970B*
- ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
-
-OUI:F48B32*
- ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
-
OUI:20A783*
ID_OUI_FROM_DATABASE=miControl GmbH
@@ -35798,9 +37304,6 @@ OUI:C40049*
OUI:50A9DE*
ID_OUI_FROM_DATABASE=Smartcom - Bulgaria AD
-OUI:8809AF*
- ID_OUI_FROM_DATABASE=Masimo Corp.
-
OUI:E8DED6*
ID_OUI_FROM_DATABASE=Intrising Networks, Inc.
@@ -36023,9 +37526,6 @@ OUI:887384*
OUI:584704*
ID_OUI_FROM_DATABASE=Shenzhen Webridge Technology Co.,Ltd
-OUI:749CE3*
- ID_OUI_FROM_DATABASE=Art2Wave Canada Inc.
-
OUI:B856BD*
ID_OUI_FROM_DATABASE=ITT LLC
@@ -36299,9 +37799,6 @@ OUI:2497ED*
OUI:104E07*
ID_OUI_FROM_DATABASE=Shanghai Genvision Industries Co.,Ltd
-OUI:4C11BF*
- ID_OUI_FROM_DATABASE=ZHEJIANG DAHUA TECHNOLOGY CO.,LTD.
-
OUI:FCD5D9*
ID_OUI_FROM_DATABASE=Shenzhen SDMC Technology Co., Ltd.
@@ -36437,9 +37934,6 @@ OUI:7CD30A*
OUI:3481C4*
ID_OUI_FROM_DATABASE=AVM GmbH
-OUI:885BDD*
- ID_OUI_FROM_DATABASE=Aerohive Networks Inc.
-
OUI:085700*
ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
@@ -36596,9 +38090,6 @@ OUI:4CE1BB*
OUI:8CDE99*
ID_OUI_FROM_DATABASE=Comlab Inc.
-OUI:2C9AA4*
- ID_OUI_FROM_DATABASE=NGI SpA
-
OUI:B46698*
ID_OUI_FROM_DATABASE=Zealabs srl
@@ -37259,9 +38750,6 @@ OUI:E0D9A2*
OUI:F0F669*
ID_OUI_FROM_DATABASE=Motion Analysis Corporation
-OUI:F0219D*
- ID_OUI_FROM_DATABASE=Cal-Comp Electronics & Communications Company Ltd.
-
OUI:F8D7BF*
ID_OUI_FROM_DATABASE=REV Ritter GmbH
@@ -37973,9 +39461,6 @@ OUI:B4C799*
OUI:70B921*
ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD
-OUI:948FEE*
- ID_OUI_FROM_DATABASE=Hughes Telematics, Inc.
-
OUI:E8C320*
ID_OUI_FROM_DATABASE=Austco Communication Systems Pty Ltd
@@ -38891,9 +40376,6 @@ OUI:B40832*
OUI:002720*
ID_OUI_FROM_DATABASE=NEW-SOL COM
-OUI:00271C*
- ID_OUI_FROM_DATABASE=MERCURY CORPORATION
-
OUI:002712*
ID_OUI_FROM_DATABASE=MaxVision LLC
@@ -39248,9 +40730,6 @@ OUI:002410*
OUI:002409*
ID_OUI_FROM_DATABASE=The Toro Company
-OUI:0023F7*
- ID_OUI_FROM_DATABASE=Private
-
OUI:0023FD*
ID_OUI_FROM_DATABASE=AFT Atlas Fahrzeugtechnik GmbH
@@ -39317,9 +40796,6 @@ OUI:002485*
OUI:002480*
ID_OUI_FROM_DATABASE=Meteocontrol GmbH
-OUI:002448*
- ID_OUI_FROM_DATABASE=SpiderCloud Wireless, Inc
-
OUI:00244A*
ID_OUI_FROM_DATABASE=Voyant International
@@ -39707,9 +41183,6 @@ OUI:002189*
OUI:002184*
ID_OUI_FROM_DATABASE=POWERSOFT SRL
-OUI:002183*
- ID_OUI_FROM_DATABASE=VATECH HYDRO
-
OUI:00217D*
ID_OUI_FROM_DATABASE=PYXIS S.R.L.
@@ -40700,9 +42173,6 @@ OUI:0017A5*
OUI:0017A0*
ID_OUI_FROM_DATABASE=RoboTech srl
-OUI:00179B*
- ID_OUI_FROM_DATABASE=Chant Sincere CO., LTD.
-
OUI:00170F*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
@@ -42086,9 +43556,6 @@ OUI:000D32*
OUI:000D31*
ID_OUI_FROM_DATABASE=Compellent Technologies, Inc.
-OUI:000D2C*
- ID_OUI_FROM_DATABASE=Patapsco Designs Ltd
-
OUI:000D25*
ID_OUI_FROM_DATABASE=SANDEN CORPORATION
@@ -42383,9 +43850,6 @@ OUI:000B9E*
OUI:000B27*
ID_OUI_FROM_DATABASE=Scion Corporation
-OUI:000B2E*
- ID_OUI_FROM_DATABASE=Cal-Comp Electronics (Thailand) Public Company Limited Taipe
-
OUI:000B1B*
ID_OUI_FROM_DATABASE=Systronix, Inc.
@@ -42875,9 +44339,6 @@ OUI:00071B*
OUI:000722*
ID_OUI_FROM_DATABASE=The Nielsen Company
-OUI:00071C*
- ID_OUI_FROM_DATABASE=AT&T Fixed Wireless Services
-
OUI:00070A*
ID_OUI_FROM_DATABASE=Unicom Automation Co., Ltd.
@@ -44192,9 +45653,6 @@ OUI:0050A5*
OUI:005000*
ID_OUI_FROM_DATABASE=NEXO COMMUNICATIONS, INC.
-OUI:00D071*
- ID_OUI_FROM_DATABASE=ECHELON CORP.
-
OUI:00D066*
ID_OUI_FROM_DATABASE=WINTRISS ENGINEERING CORP.
@@ -44606,9 +46064,6 @@ OUI:00E060*
OUI:00E0A2*
ID_OUI_FROM_DATABASE=MICROSLATE INC.
-OUI:00E06C*
- ID_OUI_FROM_DATABASE=Ultra Electronics Limited (AEP Networks)
-
OUI:00E0CE*
ID_OUI_FROM_DATABASE=ARN
@@ -44642,9 +46097,6 @@ OUI:006002*
OUI:006061*
ID_OUI_FROM_DATABASE=WHISTLE COMMUNICATIONS CORP.
-OUI:0060BD*
- ID_OUI_FROM_DATABASE=HUBBELL-PULSECOM
-
OUI:00E0A1*
ID_OUI_FROM_DATABASE=HIMA PAUL HILDEBRANDT GmbH Co. KG
@@ -45602,9 +47054,6 @@ OUI:0000E7*
OUI:0000F3*
ID_OUI_FROM_DATABASE=GANDALF DATA LIMITED
-OUI:000064*
- ID_OUI_FROM_DATABASE=Yokogawa Electric Corporation
-
OUI:00002C*
ID_OUI_FROM_DATABASE=AUTOTOTE LIMITED
@@ -45668,9 +47117,6 @@ OUI:0000DC*
OUI:000024*
ID_OUI_FROM_DATABASE=CONNECT AS
-OUI:000048*
- ID_OUI_FROM_DATABASE=SEIKO EPSON CORPORATION
-
OUI:008030*
ID_OUI_FROM_DATABASE=NEXUS ELECTRONICS
@@ -45749,9 +47195,6 @@ OUI:080039*
OUI:080030*
ID_OUI_FROM_DATABASE=NETWORK RESEARCH CORPORATION
-OUI:080027*
- ID_OUI_FROM_DATABASE=Cadmus Computer Systems
-
OUI:00009B*
ID_OUI_FROM_DATABASE=INFORMATION INTERNATIONAL, INC
@@ -45923,12 +47366,6 @@ OUI:9068C3*
OUI:408805*
ID_OUI_FROM_DATABASE=Motorola Mobility LLC, a Lenovo Company
-OUI:A4A1C2*
- ID_OUI_FROM_DATABASE=Ericsson AB
-
-OUI:348446*
- ID_OUI_FROM_DATABASE=Ericsson AB
-
OUI:AC2B6E*
ID_OUI_FROM_DATABASE=Intel Corporate
@@ -46676,9 +48113,6 @@ OUI:54511B*
OUI:68536C*
ID_OUI_FROM_DATABASE=SPnS Co.,Ltd
-OUI:64CC2E*
- ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
-
OUI:005BA1*
ID_OUI_FROM_DATABASE=shanghai huayuan chuangxin software CO., LTD.
@@ -47048,9 +48482,6 @@ OUI:40F413*
OUI:2C094D*
ID_OUI_FROM_DATABASE=Raptor Engineering, LLC
-OUI:B0E235*
- ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
-
OUI:88797E*
ID_OUI_FROM_DATABASE=Motorola Mobility LLC, a Lenovo Company
@@ -47324,9 +48755,6 @@ OUI:7C0623*
OUI:002555*
ID_OUI_FROM_DATABASE=Visonic Technologies 1993 Ltd.
-OUI:009058*
- ID_OUI_FROM_DATABASE=Ultra Electronics Limited (AEP Networks)
-
OUI:48FD8E*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
@@ -47444,6 +48872,27 @@ OUI:981E0F*
OUI:548CA0*
ID_OUI_FROM_DATABASE=Liteon Technology Corporation
+OUI:001AAD*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:00195E*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001404*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001BDD*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:0023A2*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001E8D*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:0003E0*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
OUI:707E43*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
@@ -47453,9 +48902,6 @@ OUI:1C1448*
OUI:A47AA4*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-OUI:001AAD*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
OUI:E83EFC*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
@@ -47465,25 +48911,25 @@ OUI:E8892C*
OUI:001DD3*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-OUI:3CDFA9*
+OUI:0015D1*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-OUI:8C09F4*
+OUI:203D66*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-OUI:083E0C*
+OUI:6455B1*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-OUI:D404CD*
+OUI:C005C2*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-OUI:203D66*
+OUI:3CDFA9*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-OUI:6455B1*
+OUI:8C09F4*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-OUI:C005C2*
+OUI:083E0C*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
OUI:001225*
@@ -47492,10 +48938,10 @@ OUI:001225*
OUI:00128A*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-OUI:0003E0*
+OUI:D404CD*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-OUI:0015D1*
+OUI:002493*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
OUI:E46449*
@@ -47519,10 +48965,10 @@ OUI:94E8C5*
OUI:F8A097*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-OUI:BC644B*
+OUI:00230B*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-OUI:347A60*
+OUI:001B52*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
OUI:0023ED*
@@ -47546,28 +48992,10 @@ OUI:3C754A*
OUI:40FC89*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-OUI:002493*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:00195E*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:001404*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:001BDD*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:0023A2*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:001E8D*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:00230B*
+OUI:BC644B*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-OUI:001B52*
+OUI:347A60*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
OUI:84E058*
@@ -47579,88 +49007,82 @@ OUI:003676*
OUI:001CA8*
ID_OUI_FROM_DATABASE=AirTies Wireless Networks
-OUI:001EE2*
+OUI:0017D5*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:001C43*
+OUI:001247*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:001D25*
+OUI:E4121D*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:3C5A37*
+OUI:684898*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:549B12*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:F409D8*
+ ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO-MECHANICS(THAILAND)
-OUI:3C8BFE*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:B479A7*
+ ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO-MECHANICS(THAILAND)
-OUI:00265D*
+OUI:002339*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:D4E8B2*
+OUI:D487D8*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:0017D5*
+OUI:184617*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:001247*
+OUI:5001BB*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:78521A*
+OUI:380A94*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:E4121D*
+OUI:D857EF*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:684898*
+OUI:1C66AA*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:F409D8*
- ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO-MECHANICS(THAILAND)
-
-OUI:B479A7*
- ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO-MECHANICS(THAILAND)
-
-OUI:18D276*
- ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+OUI:58C38B*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:1C66AA*
+OUI:001EE2*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:58C38B*
+OUI:001C43*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:0808C2*
+OUI:001D25*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:B0C4E7*
+OUI:3C5A37*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:D890E8*
+OUI:549B12*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:34AA8B*
+OUI:3C8BFE*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:002339*
+OUI:00265D*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:D487D8*
+OUI:D4E8B2*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:184617*
+OUI:0808C2*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:5001BB*
+OUI:B0C4E7*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:380A94*
+OUI:D890E8*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:D857EF*
+OUI:34AA8B*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
OUI:24C696*
@@ -47678,14 +49100,11 @@ OUI:343111*
OUI:34BE00*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:50CCF8*
- ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO MECHANICS CO., LTD.
-
-OUI:980C82*
- ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO MECHANICS CO., LTD.
+OUI:78521A*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:002119*
- ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO MECHANICS CO., LTD.
+OUI:18D276*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
OUI:7825AD*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
@@ -47705,26 +49124,35 @@ OUI:00166C*
OUI:E47CF9*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:002454*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:90187C*
+ ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO MECHANICS CO., LTD.
-OUI:5C0A5B*
+OUI:FC1F19*
ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO MECHANICS CO., LTD.
-OUI:90187C*
+OUI:50CCF8*
ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO MECHANICS CO., LTD.
-OUI:FC1F19*
+OUI:980C82*
+ ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO MECHANICS CO., LTD.
+
+OUI:002119*
ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO MECHANICS CO., LTD.
+OUI:002454*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
OUI:20D5BF*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
OUI:30CDA7*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:00749C*
- ID_OUI_FROM_DATABASE=RUIJIE NETWORKS CO., LTD.
+OUI:5C0A5B*
+ ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO MECHANICS CO., LTD.
+
+OUI:543530*
+ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
OUI:300ED5*
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
@@ -47744,84 +49172,81 @@ OUI:001DD9*
OUI:001FE2*
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
-OUI:48E244*
+OUI:002269*
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
-OUI:30F772*
+OUI:40490F*
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
-OUI:90489A*
+OUI:28565A*
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
-OUI:543530*
+OUI:001F3A*
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
-OUI:C03896*
+OUI:506313*
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
-OUI:2C337A*
+OUI:78E400*
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
-OUI:ACD1B8*
+OUI:8C7CB5*
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
-OUI:9439E5*
+OUI:EC55F9*
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
-OUI:506313*
+OUI:C03896*
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
-OUI:78E400*
+OUI:2C337A*
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
-OUI:40490F*
+OUI:ACD1B8*
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
-OUI:28565A*
+OUI:48E244*
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
-OUI:001F3A*
+OUI:30F772*
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
-OUI:002269*
+OUI:90489A*
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
-OUI:5C8613*
- ID_OUI_FROM_DATABASE=Beijing Zhoenet Technology Co., Ltd
-
-OUI:8C7CB5*
+OUI:9439E5*
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
-OUI:EC55F9*
- ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+OUI:5C8613*
+ ID_OUI_FROM_DATABASE=Beijing Zhoenet Technology Co., Ltd
OUI:C8B21E*
ID_OUI_FROM_DATABASE=CHIPSEA TECHNOLOGIES (SHENZHEN) CORP.
+OUI:503F98*
+ ID_OUI_FROM_DATABASE=CMITECH
+
OUI:B072BF*
ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd.
OUI:600B03*
ID_OUI_FROM_DATABASE=Hangzhou H3C Technologies Co., Limited
-OUI:503F98*
- ID_OUI_FROM_DATABASE=CMITECH
-
OUI:C09F05*
ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
OUI:AC63BE*
ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
-OUI:38521A*
- ID_OUI_FROM_DATABASE=Nokia
-
OUI:A41437*
ID_OUI_FROM_DATABASE=Hangzhou Hikvision Digital Technology Co.,Ltd.
OUI:884CCF*
ID_OUI_FROM_DATABASE=Pulzze Systems, Inc
+OUI:38521A*
+ ID_OUI_FROM_DATABASE=Nokia
+
OUI:84DBFC*
ID_OUI_FROM_DATABASE=Nokia
@@ -47831,24 +49256,24 @@ OUI:143E60*
OUI:D4E33F*
ID_OUI_FROM_DATABASE=Nokia
-OUI:00233A*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:C87E75*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
OUI:5454CF*
ID_OUI_FROM_DATABASE=PROBEDIGITAL CO.,LTD
OUI:F0D5BF*
ID_OUI_FROM_DATABASE=Intel Corporate
-OUI:748A69*
- ID_OUI_FROM_DATABASE=Korea Image Technology Co., Ltd
+OUI:C87E75*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:00233A*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
OUI:1C9D3E*
ID_OUI_FROM_DATABASE=Integrated Device Technology (Malaysia) Sdn. Bhd.
+OUI:748A69*
+ ID_OUI_FROM_DATABASE=Korea Image Technology Co., Ltd
+
OUI:30B64F*
ID_OUI_FROM_DATABASE=Juniper Networks
@@ -47861,14 +49286,14 @@ OUI:008731*
OUI:B4EFFA*
ID_OUI_FROM_DATABASE=Lemobile Information Technology (Beijing) Co., Ltd.
-OUI:0005EE*
- ID_OUI_FROM_DATABASE=Vanderbilt International (SWE) AB
-
OUI:9495A0*
ID_OUI_FROM_DATABASE=Google, Inc.
-OUI:CCFD17*
- ID_OUI_FROM_DATABASE=TCT mobile ltd
+OUI:0005EE*
+ ID_OUI_FROM_DATABASE=Vanderbilt International (SWE) AB
+
+OUI:38D547*
+ ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
OUI:4CF95D*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
@@ -47879,14 +49304,8 @@ OUI:8421F1*
OUI:707990*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
-OUI:38D547*
- ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
-
-OUI:248894*
- ID_OUI_FROM_DATABASE=shenzhen lensun Communication Technology LTD
-
-OUI:60A4D0*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:CCFD17*
+ ID_OUI_FROM_DATABASE=TCT mobile ltd
OUI:3C8BCD*
ID_OUI_FROM_DATABASE=Alcatel-Lucent Shanghai Bell Co., Ltd
@@ -47894,8 +49313,11 @@ OUI:3C8BCD*
OUI:E43ED7*
ID_OUI_FROM_DATABASE=Arcadyan Corporation
-OUI:38A4ED*
- ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
+OUI:248894*
+ ID_OUI_FROM_DATABASE=shenzhen lensun Communication Technology LTD
+
+OUI:60A4D0*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
OUI:00B0CE*
ID_OUI_FROM_DATABASE=Viveris Technologies
@@ -47921,33 +49343,33 @@ OUI:9840BB*
OUI:CC2D83*
ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
-OUI:4C3275*
- ID_OUI_FROM_DATABASE=Apple, Inc.
-
OUI:E04FBD*
ID_OUI_FROM_DATABASE=SICHUAN TIANYI COMHEART TELECOMCO.,LTD
-OUI:ACE77B*
- ID_OUI_FROM_DATABASE=SICHUAN TIANYI COMHEART TELECOMCO.,LTD
-
OUI:00B0E1*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+OUI:4C3275*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:0006F4*
ID_OUI_FROM_DATABASE=Prime Electronics & Satellitics Inc.
+OUI:ACE77B*
+ ID_OUI_FROM_DATABASE=SICHUAN TIANYI COMHEART TELECOMCO.,LTD
+
OUI:24A43C*
ID_OUI_FROM_DATABASE=Ubiquiti Networks Inc.
-OUI:28EE52*
- ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
-
OUI:D4E90B*
ID_OUI_FROM_DATABASE=CVT CO.,LTD
OUI:788A20*
ID_OUI_FROM_DATABASE=Ubiquiti Networks Inc.
+OUI:28EE52*
+ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
+
OUI:905C44*
ID_OUI_FROM_DATABASE=Compal Broadband Networks, Inc.
@@ -47972,12 +49394,12 @@ OUI:B83A9D*
OUI:00BBC1*
ID_OUI_FROM_DATABASE=CANON INC.
-OUI:2CC260*
- ID_OUI_FROM_DATABASE=Oracle Corporation
-
OUI:1C14B3*
ID_OUI_FROM_DATABASE=Airwire Technologies
+OUI:2CC260*
+ ID_OUI_FROM_DATABASE=Oracle Corporation
+
OUI:407183*
ID_OUI_FROM_DATABASE=Juniper Networks
@@ -47987,6 +49409,330 @@ OUI:0059DC*
OUI:14612F*
ID_OUI_FROM_DATABASE=Avaya Inc
+OUI:ACF85C*
+ ID_OUI_FROM_DATABASE=Private
+
+OUI:00749C*
+ ID_OUI_FROM_DATABASE=Ruijie Networks Co.,LTD
+
+OUI:00271C*
+ ID_OUI_FROM_DATABASE=MERCURY CORPORATION
+
+OUI:E0D9E3*
+ ID_OUI_FROM_DATABASE=Eltex Enterprise Ltd.
+
+OUI:5098F3*
+ ID_OUI_FROM_DATABASE=Rheem Australia Pty Ltd
+
+OUI:701CE7*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
+OUI:CC9470*
+ ID_OUI_FROM_DATABASE=Kinestral Technologies, Inc.
+
+OUI:446AB7*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:F0219D*
+ ID_OUI_FROM_DATABASE=Cal-Comp Electronics & Communications Company Ltd.
+
+OUI:000B2E*
+ ID_OUI_FROM_DATABASE=Cal-Comp Electronics & Communications Company Ltd.
+
+OUI:885BDD*
+ ID_OUI_FROM_DATABASE=Aerohive Networks Inc.
+
+OUI:08EA44*
+ ID_OUI_FROM_DATABASE=Aerohive Networks Inc.
+
+OUI:506B8D*
+ ID_OUI_FROM_DATABASE=Nutanix
+
+OUI:0038DF*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
+OUI:2C9924*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:006BF1*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
+OUI:CC81DA*
+ ID_OUI_FROM_DATABASE=SHANGHAI PHICOMM COMMUNICATION CO.,LTD
+
+OUI:20D25F*
+ ID_OUI_FROM_DATABASE=SmartCap Technologies
+
+OUI:3CFA43*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:145F94*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:4C11BF*
+ ID_OUI_FROM_DATABASE=Zhejiang Dahua Technology Co., Ltd.
+
+OUI:EC0D9A*
+ ID_OUI_FROM_DATABASE=Mellanox Technologies, Inc.
+
+OUI:000064*
+ ID_OUI_FROM_DATABASE=Yokogawa Digital Computer Corporation
+
+OUI:0023F7*
+ ID_OUI_FROM_DATABASE=Private
+
+OUI:90D7BE*
+ ID_OUI_FROM_DATABASE=Wavelab Global Inc.
+
+OUI:686975*
+ ID_OUI_FROM_DATABASE=Angler Labs Inc
+
+OUI:002448*
+ ID_OUI_FROM_DATABASE=SpiderCloud Wireless, Inc
+
+OUI:7C03C9*
+ ID_OUI_FROM_DATABASE=Shenzhen YOUHUA Technology Co., Ltd
+
+OUI:64DB43*
+ ID_OUI_FROM_DATABASE=Motorola (Wuhan) Mobility Technologies Communication Co., Ltd.
+
+OUI:D058A8*
+ ID_OUI_FROM_DATABASE=zte corporation
+
+OUI:D071C4*
+ ID_OUI_FROM_DATABASE=zte corporation
+
+OUI:48F07B*
+ ID_OUI_FROM_DATABASE=ALPS ELECTRIC CO.,LTD.
+
+OUI:3C80AA*
+ ID_OUI_FROM_DATABASE=Ransnet Singapore Pte Ltd
+
+OUI:7CEBAE*
+ ID_OUI_FROM_DATABASE=Ridgeline Instruments
+
+OUI:E89EB4*
+ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+
+OUI:D4970B*
+ ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
+
+OUI:64CC2E*
+ ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
+
+OUI:B0E235*
+ ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
+
+OUI:38A4ED*
+ ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
+
+OUI:F48B32*
+ ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
+
+OUI:0060BD*
+ ID_OUI_FROM_DATABASE=Enginuity Communications
+
+OUI:AC83F3*
+ ID_OUI_FROM_DATABASE=AMPAK Technology, Inc.
+
+OUI:707C69*
+ ID_OUI_FROM_DATABASE=Avaya Inc
+
+OUI:18DBF2*
+ ID_OUI_FROM_DATABASE=Dell Inc.
+
+OUI:000048*
+ ID_OUI_FROM_DATABASE=Seiko Epson Corporation
+
+OUI:C0BFC0*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:A08CF8*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:54B56C*
+ ID_OUI_FROM_DATABASE=Xi'an NovaStar Tech Co., Ltd
+
+OUI:FC3CE9*
+ ID_OUI_FROM_DATABASE=Tsingtong Technologies Co, Ltd.
+
+OUI:04B648*
+ ID_OUI_FROM_DATABASE=ZENNER
+
+OUI:FC10C6*
+ ID_OUI_FROM_DATABASE=Taicang T&W Electronics
+
+OUI:344CC8*
+ ID_OUI_FROM_DATABASE=Echodyne Corp
+
+OUI:948FEE*
+ ID_OUI_FROM_DATABASE=Verizon Telematics
+
+OUI:5C4A1F*
+ ID_OUI_FROM_DATABASE=SICHUAN TIANYI COMHEART TELECOMCO., LTD
+
+OUI:0C8DDB*
+ ID_OUI_FROM_DATABASE=Cisco Meraki
+
+OUI:B0F963*
+ ID_OUI_FROM_DATABASE=Hangzhou H3C Technologies Co., Limited
+
+OUI:E4E4AB*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:58404E*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:DC0C5C*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:2C200B*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:98B6E9*
+ ID_OUI_FROM_DATABASE=Nintendo Co.,Ltd
+
+OUI:8809AF*
+ ID_OUI_FROM_DATABASE=Masimo Corporation
+
+OUI:00E06C*
+ ID_OUI_FROM_DATABASE=Ultra Electronics Command & Control Systems
+
+OUI:009058*
+ ID_OUI_FROM_DATABASE=Ultra Electronics Command & Control Systems
+
+OUI:F8983A*
+ ID_OUI_FROM_DATABASE=Leeman International (HongKong) Limited
+
+OUI:4CECEF*
+ ID_OUI_FROM_DATABASE=Soraa, Inc.
+
+OUI:702D84*
+ ID_OUI_FROM_DATABASE=i4C Innovations
+
+OUI:CC9F7A*
+ ID_OUI_FROM_DATABASE=Chiun Mai Communication Systems, Inc
+
+OUI:446246*
+ ID_OUI_FROM_DATABASE=Comat AG
+
+OUI:C8AA55*
+ ID_OUI_FROM_DATABASE=Hunan Comtom Electronic Incorporated Co.,Ltd
+
+OUI:142FFD*
+ ID_OUI_FROM_DATABASE=LT SECURITY INC
+
+OUI:000D2C*
+ ID_OUI_FROM_DATABASE=Net2Edge Limited
+
+OUI:ECE154*
+ ID_OUI_FROM_DATABASE=Beijing Unisound Information Technology Co.,Ltd.
+
+OUI:60C658*
+ ID_OUI_FROM_DATABASE=PHYTRONIX Co.,Ltd.
+
+OUI:38454C*
+ ID_OUI_FROM_DATABASE=Light Labs, Inc.
+
+OUI:C894BB*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:D0FF98*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:5004B8*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:10B1F8*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:14ABC5*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
+OUI:A462DF*
+ ID_OUI_FROM_DATABASE=DS Global. Co., LTD
+
+OUI:50D213*
+ ID_OUI_FROM_DATABASE=CviLux Corporation
+
+OUI:44D437*
+ ID_OUI_FROM_DATABASE=Inteno Broadband Technology AB
+
+OUI:78AF58*
+ ID_OUI_FROM_DATABASE=GIMASI SA
+
+OUI:00071C*
+ ID_OUI_FROM_DATABASE=AT&T
+
+OUI:2C9AA4*
+ ID_OUI_FROM_DATABASE=Eolo SpA
+
+OUI:002183*
+ ID_OUI_FROM_DATABASE=ANDRITZ HYDRO GmbH
+
+OUI:8404D2*
+ ID_OUI_FROM_DATABASE=Kirale Technologies SL
+
+OUI:083E5D*
+ ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS
+
+OUI:749CE3*
+ ID_OUI_FROM_DATABASE=KodaCloud Canada, Inc
+
+OUI:CC2D21*
+ ID_OUI_FROM_DATABASE=Tenda Technology Co.,Ltd.Dongguan branch
+
+OUI:8C78D7*
+ ID_OUI_FROM_DATABASE=SHENZHEN FAST TECHNOLOGIES CO.,LTD
+
+OUI:3CBD3E*
+ ID_OUI_FROM_DATABASE=Beijing Xiaomi Electronics Co., Ltd.
+
+OUI:2C4D54*
+ ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
+
+OUI:349672*
+ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
+
+OUI:00179B*
+ ID_OUI_FROM_DATABASE=CHANT SINCERE CO.,LTD
+
+OUI:080027*
+ ID_OUI_FROM_DATABASE=PCS Systemtechnik GmbH
+
+OUI:348446*
+ ID_OUI_FROM_DATABASE=Ericsson AB
+
+OUI:A4A1C2*
+ ID_OUI_FROM_DATABASE=Ericsson AB
+
+OUI:B0F1EC*
+ ID_OUI_FROM_DATABASE=AMPAK Technology, Inc.
+
+OUI:B0C46C*
+ ID_OUI_FROM_DATABASE=Senseit
+
+OUI:105611*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:148951*
+ ID_OUI_FROM_DATABASE=LCFC(HeFei) Electronics Technology co., ltd
+
+OUI:F87588*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:BC3F8F*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:E4A749*
+ ID_OUI_FROM_DATABASE=Palo Alto Networks
+
+OUI:04DEF2*
+ ID_OUI_FROM_DATABASE=Shenzhen ECOM Technology Co. Ltd
+
+OUI:00D071*
+ ID_OUI_FROM_DATABASE=ECHELON CORP.
+
OUI:D86CE9*
ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS
@@ -48080,12 +49826,6 @@ OUI:C056E3*
OUI:C8E7D8*
ID_OUI_FROM_DATABASE=SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.
-OUI:E01C41*
- ID_OUI_FROM_DATABASE=Aerohive Networks Inc.
-
-OUI:D854A2*
- ID_OUI_FROM_DATABASE=Aerohive Networks Inc.
-
OUI:9CEFD5*
ID_OUI_FROM_DATABASE=Panda Wireless, Inc.
@@ -48140,9 +49880,6 @@ OUI:C44044*
OUI:3898D8*
ID_OUI_FROM_DATABASE=MERITECH CO.,LTD
-OUI:C8675E*
- ID_OUI_FROM_DATABASE=Aerohive Networks Inc.
-
OUI:000CF1*
ID_OUI_FROM_DATABASE=Intel Corporation
@@ -48293,9 +50030,6 @@ OUI:ACE87B*
OUI:688F84*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
-OUI:ACF7F3*
- ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
-
OUI:889471*
ID_OUI_FROM_DATABASE=Brocade Communications Systems, Inc.
@@ -48494,18 +50228,6 @@ OUI:DCCEC1*
OUI:84B261*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
-OUI:009EC8*
- ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
-
-OUI:7C1DD9*
- ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
-
-OUI:A086C6*
- ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
-
-OUI:584498*
- ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
-
OUI:70E422*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
@@ -49235,9 +50957,6 @@ OUI:ACC73F*
OUI:18BDAD*
ID_OUI_FROM_DATABASE=L-TECH CORPORATION
-OUI:44D244*
- ID_OUI_FROM_DATABASE=Seiko Epson Corporation
-
OUI:10C07C*
ID_OUI_FROM_DATABASE=Blu-ray Disc Association
@@ -52877,9 +54596,6 @@ OUI:00239E*
OUI:002398*
ID_OUI_FROM_DATABASE=Vutlan sro
-OUI:00238A*
- ID_OUI_FROM_DATABASE=Ciena Corporation
-
OUI:002384*
ID_OUI_FROM_DATABASE=GGH Engineering s.r.l.
@@ -53201,9 +54917,6 @@ OUI:00220D*
OUI:00220C*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
-OUI:002207*
- ID_OUI_FROM_DATABASE=Inteno Broadband Technology AB
-
OUI:002202*
ID_OUI_FROM_DATABASE=Excito Elektronik i Skåne AB
@@ -55055,9 +56768,6 @@ OUI:00112E*
OUI:001128*
ID_OUI_FROM_DATABASE=Streamit
-OUI:00111B*
- ID_OUI_FROM_DATABASE=Targa Systems Div L-3 Communications Canada
-
OUI:001122*
ID_OUI_FROM_DATABASE=CIMSYS Inc
@@ -55355,9 +57065,6 @@ OUI:000F80*
OUI:000F7F*
ID_OUI_FROM_DATABASE=UBSTORAGE Co.,Ltd.
-OUI:000FC2*
- ID_OUI_FROM_DATABASE=Uniwell Corporation
-
OUI:000FC9*
ID_OUI_FROM_DATABASE=Allnet GmbH
@@ -55835,9 +57542,6 @@ OUI:000B57*
OUI:000B5C*
ID_OUI_FROM_DATABASE=Newtech Co.,Ltd
-OUI:000B4F*
- ID_OUI_FROM_DATABASE=Verifone, INC.
-
OUI:000B43*
ID_OUI_FROM_DATABASE=Microscan Systems, Inc.
@@ -55862,9 +57566,6 @@ OUI:000B29*
OUI:000B30*
ID_OUI_FROM_DATABASE=Beijing Gongye Science & Technology Co.,Ltd
-OUI:000BA1*
- ID_OUI_FROM_DATABASE=SYSCOM Ltd.
-
OUI:000BA8*
ID_OUI_FROM_DATABASE=HANBACK ELECTRONICS CO., LTD.
@@ -56525,9 +58226,6 @@ OUI:0006E9*
OUI:0005EB*
ID_OUI_FROM_DATABASE=Blue Ridge Networks, Inc.
-OUI:0005F7*
- ID_OUI_FROM_DATABASE=Analog Devices, Inc.
-
OUI:0005E4*
ID_OUI_FROM_DATABASE=Red Lion Controls Inc.
@@ -57119,15 +58817,9 @@ OUI:003028*
OUI:0030FB*
ID_OUI_FROM_DATABASE=AZS Technology AG
-OUI:003048*
- ID_OUI_FROM_DATABASE=Supermicro Computer, Inc.
-
OUI:0001DA*
ID_OUI_FROM_DATABASE=WINCOMM Corporation
-OUI:0001E1*
- ID_OUI_FROM_DATABASE=Kinpo Electronics, Inc.
-
OUI:0001DD*
ID_OUI_FROM_DATABASE=Avail Networks
@@ -57809,9 +59501,6 @@ OUI:0050BE*
OUI:0050AD*
ID_OUI_FROM_DATABASE=CommUnique Wireless Corp.
-OUI:005016*
- ID_OUI_FROM_DATABASE=SST/WOODHEAD INDUSTRIES
-
OUI:005003*
ID_OUI_FROM_DATABASE=Xrite Inc
@@ -58040,9 +59729,6 @@ OUI:00105F*
OUI:0010CB*
ID_OUI_FROM_DATABASE=FACIT K.K.
-OUI:00108C*
- ID_OUI_FROM_DATABASE=FUJITSU TELECOMMUNICATIONS EUROPE, LTD.
-
OUI:001075*
ID_OUI_FROM_DATABASE=Segate Technology LLC
@@ -58112,9 +59798,6 @@ OUI:006027*
OUI:0060C1*
ID_OUI_FROM_DATABASE=WaveSpan Corporation
-OUI:006041*
- ID_OUI_FROM_DATABASE=Yokogawa Electric Corporation
-
OUI:006005*
ID_OUI_FROM_DATABASE=FEEDBACK DATA LTD.
@@ -58256,9 +59939,6 @@ OUI:0060D4*
OUI:006085*
ID_OUI_FROM_DATABASE=Storage Concepts
-OUI:0060D3*
- ID_OUI_FROM_DATABASE=AT&T
-
OUI:006018*
ID_OUI_FROM_DATABASE=STELLAR ONE CORPORATION
@@ -58532,9 +60212,6 @@ OUI:00A06E*
OUI:00A0BB*
ID_OUI_FROM_DATABASE=HILAN GMBH
-OUI:00A0C8*
- ID_OUI_FROM_DATABASE=ADTRAN INC.
-
OUI:00A017*
ID_OUI_FROM_DATABASE=J B M CORPORATION
@@ -58862,9 +60539,6 @@ OUI:0080F2*
OUI:0080EA*
ID_OUI_FROM_DATABASE=ADVA Optical Networking Ltd.
-OUI:008025*
- ID_OUI_FROM_DATABASE=STOLLMANN GMBH
-
OUI:000067*
ID_OUI_FROM_DATABASE=SOFT * RITE, INC.
@@ -59081,9 +60755,6 @@ OUI:080077*
OUI:080071*
ID_OUI_FROM_DATABASE=MATRA (DSIE)
-OUI:08006A*
- ID_OUI_FROM_DATABASE=ATT BELL LABORATORIES
-
OUI:08005F*
ID_OUI_FROM_DATABASE=SABER TECHNOLOGY CORP.
@@ -59234,9 +60905,6 @@ OUI:000000*
OUI:0040D6*
ID_OUI_FROM_DATABASE=LOCAMATION B.V.
-OUI:800010*
- ID_OUI_FROM_DATABASE=ATT BELL LABORATORIES
-
OUI:AA0003*
ID_OUI_FROM_DATABASE=DIGITAL EQUIPMENT CORPORATION
@@ -59945,15 +61613,9 @@ OUI:DC0077*
OUI:0060DC*
ID_OUI_FROM_DATABASE=NEC Magnus Communications,Ltd.
-OUI:9CAED3*
- ID_OUI_FROM_DATABASE=Seiko Epson Corporation
-
OUI:F45C89*
ID_OUI_FROM_DATABASE=Apple, Inc.
-OUI:8C3C4A*
- ID_OUI_FROM_DATABASE=NAKAYO TELECOMMUNICATIONS,INC
-
OUI:0021FD*
ID_OUI_FROM_DATABASE=LACROIX TRAFFIC S.A.U
@@ -59969,9 +61631,6 @@ OUI:9C5C8E*
OUI:70884D*
ID_OUI_FROM_DATABASE=JAPAN RADIO CO., LTD.
-OUI:102AB3*
- ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
-
OUI:4C55CC*
ID_OUI_FROM_DATABASE=Zentri Pty Ltd
@@ -60053,9 +61712,6 @@ OUI:1C6758*
OUI:E85659*
ID_OUI_FROM_DATABASE=Advanced-Connectek Inc.
-OUI:34E70B*
- ID_OUI_FROM_DATABASE=Beijing HAN Networks Co., Ltd
-
OUI:8801F2*
ID_OUI_FROM_DATABASE=Vitec System Engineering Inc.
@@ -60164,9 +61820,6 @@ OUI:042AE2*
OUI:1C1B0D*
ID_OUI_FROM_DATABASE=GIGA-BYTE TECHNOLOGY CO.,LTD.
-OUI:903809*
- ID_OUI_FROM_DATABASE=Ericsson AB
-
OUI:00104F*
ID_OUI_FROM_DATABASE=Oracle Corporation
@@ -60470,375 +62123,6 @@ OUI:38BC1A*
OUI:0004A3*
ID_OUI_FROM_DATABASE=Microchip Technology Inc.
-OUI:98CF53*
- ID_OUI_FROM_DATABASE=BBK EDUCATIONAL ELECTRONICS CORP.,LTD.
-
-OUI:F4CB52*
- ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
-
-OUI:446EE5*
- ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
-
-OUI:2C282D*
- ID_OUI_FROM_DATABASE=BBK EDUCATIONAL ELECTRONICS CORP.,LTD.
-
-OUI:80414E*
- ID_OUI_FROM_DATABASE=BBK EDUCATIONAL ELECTRONICS CORP.,LTD.
-
-OUI:8C7716*
- ID_OUI_FROM_DATABASE=LONGCHEER TELECOMMUNICATION LIMITED
-
-OUI:000A08*
- ID_OUI_FROM_DATABASE=Alpine Electronics, Inc.
-
-OUI:A0143D*
- ID_OUI_FROM_DATABASE=PARROT SA
-
-OUI:00267E*
- ID_OUI_FROM_DATABASE=PARROT SA
-
-OUI:00121C*
- ID_OUI_FROM_DATABASE=PARROT SA
-
-OUI:B85510*
- ID_OUI_FROM_DATABASE=Zioncom Electronics (Shenzhen) Ltd.
-
-OUI:000EE8*
- ID_OUI_FROM_DATABASE=Zioncom Electronics (Shenzhen) Ltd.
-
-OUI:001165*
- ID_OUI_FROM_DATABASE=ZNYX Networks, Inc.
-
-OUI:0060D5*
- ID_OUI_FROM_DATABASE=AMADA MIYACHI Co., Ltd
-
-OUI:000FDB*
- ID_OUI_FROM_DATABASE=Westell Technologies Inc.
-
-OUI:D404FF*
- ID_OUI_FROM_DATABASE=Juniper Networks
-
-OUI:C45444*
- ID_OUI_FROM_DATABASE=QUANTA COMPUTER INC.
-
-OUI:00269E*
- ID_OUI_FROM_DATABASE=QUANTA COMPUTER INC.
-
-OUI:683563*
- ID_OUI_FROM_DATABASE=SHENZHEN LIOWN ELECTRONICS CO.,LTD.
-
-OUI:0003B2*
- ID_OUI_FROM_DATABASE=Radware
-
-OUI:2C600C*
- ID_OUI_FROM_DATABASE=QUANTA COMPUTER INC.
-
-OUI:001E68*
- ID_OUI_FROM_DATABASE=QUANTA COMPUTER INC.
-
-OUI:00A09B*
- ID_OUI_FROM_DATABASE=QPSX COMMUNICATIONS, LTD.
-
-OUI:00E08B*
- ID_OUI_FROM_DATABASE=QLogic Corporation
-
-OUI:00080D*
- ID_OUI_FROM_DATABASE=Toshiba
-
-OUI:0015B7*
- ID_OUI_FROM_DATABASE=Toshiba
-
-OUI:000569*
- ID_OUI_FROM_DATABASE=VMware, Inc.
-
-OUI:0008F1*
- ID_OUI_FROM_DATABASE=Voltaire
-
-OUI:001BDA*
- ID_OUI_FROM_DATABASE=UTStarcom Inc
-
-OUI:FC4DD4*
- ID_OUI_FROM_DATABASE=Universal Global Scientific Industrial Co., Ltd.
-
-OUI:402CF4*
- ID_OUI_FROM_DATABASE=Universal Global Scientific Industrial Co., Ltd.
-
-OUI:0010C6*
- ID_OUI_FROM_DATABASE=Universal Global Scientific Industrial Co., Ltd.
-
-OUI:00247E*
- ID_OUI_FROM_DATABASE=Universal Global Scientific Industrial Co., Ltd.
-
-OUI:001639*
- ID_OUI_FROM_DATABASE=Ubiquam Co., Ltd.
-
-OUI:183919*
- ID_OUI_FROM_DATABASE=Unicoi Systems
-
-OUI:90A46A*
- ID_OUI_FROM_DATABASE=SISNET CO., LTD
-
-OUI:14E7C8*
- ID_OUI_FROM_DATABASE=Integrated Device Technology (Malaysia) Sdn. Bhd.
-
-OUI:280DFC*
- ID_OUI_FROM_DATABASE=Sony Interactive Entertainment Inc.
-
-OUI:0015C1*
- ID_OUI_FROM_DATABASE=Sony Interactive Entertainment Inc.
-
-OUI:0019C5*
- ID_OUI_FROM_DATABASE=Sony Interactive Entertainment Inc.
-
-OUI:ACA213*
- ID_OUI_FROM_DATABASE=Shenzhen Bilian electronic CO.,LTD
-
-OUI:38F8CA*
- ID_OUI_FROM_DATABASE=OWIN Inc.
-
-OUI:54D272*
- ID_OUI_FROM_DATABASE=Nuki Home Solutions GmbH
-
-OUI:9CA3A9*
- ID_OUI_FROM_DATABASE=Guangzhou Juan Optical and Electronical Tech Joint Stock Co., Ltd
-
-OUI:1100AA*
- ID_OUI_FROM_DATABASE=Private
-
-OUI:002067*
- ID_OUI_FROM_DATABASE=Private
-
-OUI:9893CC*
- ID_OUI_FROM_DATABASE=LG ELECTRONICS INC
-
-OUI:3CCD93*
- ID_OUI_FROM_DATABASE=LG ELECTRONICS INC
-
-OUI:583F54*
- ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
-
-OUI:001C62*
- ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
-
-OUI:002483*
- ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
-
-OUI:E417D8*
- ID_OUI_FROM_DATABASE=8BITDO TECHNOLOGY HK LIMITED
-
-OUI:40B0FA*
- ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
-
-OUI:A09169*
- ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
-
-OUI:286C07*
- ID_OUI_FROM_DATABASE=XIAOMI Electronics,CO.,LTD
-
-OUI:84D931*
- ID_OUI_FROM_DATABASE=Hangzhou H3C Technologies Co., Limited
-
-OUI:34FCEF*
- ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
-
-OUI:485929*
- ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
-
-OUI:505527*
- ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
-
-OUI:98D6F7*
- ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
-
-OUI:A8922C*
- ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
-
-OUI:44DC91*
- ID_OUI_FROM_DATABASE=PLANEX COMMUNICATIONS INC.
-
-OUI:9CD332*
- ID_OUI_FROM_DATABASE=PLC Technology Ltd
-
-OUI:94D723*
- ID_OUI_FROM_DATABASE=Shanghai DareGlobal Technologies Co.,Ltd
-
-OUI:A89DD2*
- ID_OUI_FROM_DATABASE=Shanghai DareGlobal Technologies Co.,Ltd
-
-OUI:184A6F*
- ID_OUI_FROM_DATABASE=Alcatel-Lucent Shanghai Bell Co., Ltd
-
-OUI:A0F3E4*
- ID_OUI_FROM_DATABASE=Alcatel-Lucent IPD
-
-OUI:002105*
- ID_OUI_FROM_DATABASE=Alcatel-Lucent IPD
-
-OUI:000772*
- ID_OUI_FROM_DATABASE=Alcatel-Lucent Shanghai Bell Co., Ltd
-
-OUI:F06BCA*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:3423BA*
- ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO-MECHANICS(THAILAND)
-
-OUI:D022BE*
- ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO-MECHANICS(THAILAND)
-
-OUI:D02544*
- ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO-MECHANICS(THAILAND)
-
-OUI:BC20A4*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:14F42A*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:BC851F*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:B85E7B*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:C462EA*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:0023D6*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:002491*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:001B98*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:44F459*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:34C3AC*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:94D771*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:4C3C16*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:9401C2*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:B43A28*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:A8C83A*
- ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
-
-OUI:849FB5*
- ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
-
-OUI:D0C1B1*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:F008F1*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:782079*
- ID_OUI_FROM_DATABASE=ID Tech
-
-OUI:98234E*
- ID_OUI_FROM_DATABASE=Micromedia AG
-
-OUI:E80036*
- ID_OUI_FROM_DATABASE=Befs co,. ltd
-
-OUI:24590B*
- ID_OUI_FROM_DATABASE=White Sky Inc. Limited
-
-OUI:10C60C*
- ID_OUI_FROM_DATABASE=Domino UK Ltd
-
-OUI:3842A6*
- ID_OUI_FROM_DATABASE=Ingenieurbuero Stahlkopf
-
-OUI:E866C4*
- ID_OUI_FROM_DATABASE=Diamanti
-
-OUI:78471D*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:3816D1*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:004A77*
- ID_OUI_FROM_DATABASE=zte corporation
-
-OUI:D48890*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:002566*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:00265F*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:001628*
- ID_OUI_FROM_DATABASE=Magicard Ltd
-
-OUI:E4C801*
- ID_OUI_FROM_DATABASE=BLU Products Inc
-
-OUI:00A6CA*
- ID_OUI_FROM_DATABASE=Cisco Systems, Inc
-
-OUI:9C7DA3*
- ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
-
-OUI:F02FA7*
- ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
-
-OUI:883FD3*
- ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
-
-OUI:A04E01*
- ID_OUI_FROM_DATABASE=CENTRAL ENGINEERING co.,ltd.
-
-OUI:245CBF*
- ID_OUI_FROM_DATABASE=NCSE
-
-OUI:84CD62*
- ID_OUI_FROM_DATABASE=ShenZhen IDWELL Technology CO.,Ltd
-
-OUI:DC9FDB*
- ID_OUI_FROM_DATABASE=Ubiquiti Networks Inc.
-
-OUI:B0958E*
- ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
-
-OUI:001A39*
- ID_OUI_FROM_DATABASE=Merten GmbH&CoKG
-
-OUI:007B18*
- ID_OUI_FROM_DATABASE=SENTRY Co., LTD.
-
-OUI:144D67*
- ID_OUI_FROM_DATABASE=Zioncom Electronics (Shenzhen) Ltd.
-
-OUI:34F39A*
- ID_OUI_FROM_DATABASE=Intel Corporate
-
-OUI:20A8B9*
- ID_OUI_FROM_DATABASE=Siemens
-
-OUI:C81B5C*
- ID_OUI_FROM_DATABASE=BCTech
-
-OUI:3C2AF4*
- ID_OUI_FROM_DATABASE=Brother Industries, LTD.
-
-OUI:20719E*
- ID_OUI_FROM_DATABASE=SF Technology Co.,Ltd
-
OUI:E0DDC0*
ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd.
@@ -61337,9 +62621,6 @@ OUI:18E29F*
OUI:886B0F*
ID_OUI_FROM_DATABASE=Bluegiga Technologies OY
-OUI:001438*
- ID_OUI_FROM_DATABASE=Hewlett Packard Enterprise
-
OUI:98541B*
ID_OUI_FROM_DATABASE=Intel Corporate
@@ -61358,6 +62639,723 @@ OUI:1C40E8*
OUI:C8D3FF*
ID_OUI_FROM_DATABASE=Hewlett Packard
+OUI:805EC0*
+ ID_OUI_FROM_DATABASE=YEALINK(XIAMEN) NETWORK TECHNOLOGY CO.,LTD.
+
+OUI:307496*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:708A09*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:149D09*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:008025*
+ ID_OUI_FROM_DATABASE=Telit Wireless Solutions GmbH
+
+OUI:0001E1*
+ ID_OUI_FROM_DATABASE=Kinpo Electronics, Inc.
+
+OUI:006041*
+ ID_OUI_FROM_DATABASE=Yokogawa Digital Computer Corporation
+
+OUI:14A78B*
+ ID_OUI_FROM_DATABASE=Zhejiang Dahua Technology Co., Ltd.
+
+OUI:D0608C*
+ ID_OUI_FROM_DATABASE=zte corporation
+
+OUI:009EC8*
+ ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
+
+OUI:ACF7F3*
+ ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
+
+OUI:102AB3*
+ ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
+
+OUI:584498*
+ ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
+
+OUI:A086C6*
+ ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
+
+OUI:7C1DD9*
+ ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
+
+OUI:C8662C*
+ ID_OUI_FROM_DATABASE=Beijing Haitai Fangyuan High Technology Co,.Ltd.
+
+OUI:CC8CDA*
+ ID_OUI_FROM_DATABASE=Shenzhen Wei Da Intelligent Technology Go.,Ltd
+
+OUI:D436DB*
+ ID_OUI_FROM_DATABASE=Jiangsu Toppower Automotive Electronics Co., Ltd
+
+OUI:64A68F*
+ ID_OUI_FROM_DATABASE=Zhongshan Readboy Electronics Co.,Ltd
+
+OUI:58EF68*
+ ID_OUI_FROM_DATABASE=Belkin International Inc.
+
+OUI:003048*
+ ID_OUI_FROM_DATABASE=Super Micro Computer, Inc.
+
+OUI:001438*
+ ID_OUI_FROM_DATABASE=Hewlett Packard Enterprise
+
+OUI:50D753*
+ ID_OUI_FROM_DATABASE=CONELCOM GmbH
+
+OUI:4C38D5*
+ ID_OUI_FROM_DATABASE=MITAC COMPUTING TECHNOLOGY CORPORATION
+
+OUI:688AF0*
+ ID_OUI_FROM_DATABASE=zte corporation
+
+OUI:000BA1*
+ ID_OUI_FROM_DATABASE=Fujikura Solutions Ltd.
+
+OUI:AC587B*
+ ID_OUI_FROM_DATABASE=JCT Healthcare
+
+OUI:B0B98A*
+ ID_OUI_FROM_DATABASE=NETGEAR
+
+OUI:30E171*
+ ID_OUI_FROM_DATABASE=Hewlett Packard
+
+OUI:D490E0*
+ ID_OUI_FROM_DATABASE=Wachendorff Automation GmbH & Co KG
+
+OUI:8C3C4A*
+ ID_OUI_FROM_DATABASE=NAKAYO Inc
+
+OUI:98CF53*
+ ID_OUI_FROM_DATABASE=BBK EDUCATIONAL ELECTRONICS CORP.,LTD.
+
+OUI:F4CB52*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:446EE5*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:2C282D*
+ ID_OUI_FROM_DATABASE=BBK EDUCATIONAL ELECTRONICS CORP.,LTD.
+
+OUI:80414E*
+ ID_OUI_FROM_DATABASE=BBK EDUCATIONAL ELECTRONICS CORP.,LTD.
+
+OUI:8C7716*
+ ID_OUI_FROM_DATABASE=LONGCHEER TELECOMMUNICATION LIMITED
+
+OUI:000A08*
+ ID_OUI_FROM_DATABASE=Alpine Electronics, Inc.
+
+OUI:A0143D*
+ ID_OUI_FROM_DATABASE=PARROT SA
+
+OUI:00267E*
+ ID_OUI_FROM_DATABASE=PARROT SA
+
+OUI:00121C*
+ ID_OUI_FROM_DATABASE=PARROT SA
+
+OUI:B85510*
+ ID_OUI_FROM_DATABASE=Zioncom Electronics (Shenzhen) Ltd.
+
+OUI:000EE8*
+ ID_OUI_FROM_DATABASE=Zioncom Electronics (Shenzhen) Ltd.
+
+OUI:001165*
+ ID_OUI_FROM_DATABASE=ZNYX Networks, Inc.
+
+OUI:0060D5*
+ ID_OUI_FROM_DATABASE=AMADA MIYACHI Co., Ltd
+
+OUI:000FDB*
+ ID_OUI_FROM_DATABASE=Westell Technologies Inc.
+
+OUI:D404FF*
+ ID_OUI_FROM_DATABASE=Juniper Networks
+
+OUI:C45444*
+ ID_OUI_FROM_DATABASE=QUANTA COMPUTER INC.
+
+OUI:00269E*
+ ID_OUI_FROM_DATABASE=QUANTA COMPUTER INC.
+
+OUI:683563*
+ ID_OUI_FROM_DATABASE=SHENZHEN LIOWN ELECTRONICS CO.,LTD.
+
+OUI:0003B2*
+ ID_OUI_FROM_DATABASE=Radware
+
+OUI:2C600C*
+ ID_OUI_FROM_DATABASE=QUANTA COMPUTER INC.
+
+OUI:001E68*
+ ID_OUI_FROM_DATABASE=QUANTA COMPUTER INC.
+
+OUI:00A09B*
+ ID_OUI_FROM_DATABASE=QPSX COMMUNICATIONS, LTD.
+
+OUI:00E08B*
+ ID_OUI_FROM_DATABASE=QLogic Corporation
+
+OUI:00080D*
+ ID_OUI_FROM_DATABASE=Toshiba
+
+OUI:0015B7*
+ ID_OUI_FROM_DATABASE=Toshiba
+
+OUI:000569*
+ ID_OUI_FROM_DATABASE=VMware, Inc.
+
+OUI:0008F1*
+ ID_OUI_FROM_DATABASE=Voltaire
+
+OUI:001BDA*
+ ID_OUI_FROM_DATABASE=UTStarcom Inc
+
+OUI:FC4DD4*
+ ID_OUI_FROM_DATABASE=Universal Global Scientific Industrial Co., Ltd.
+
+OUI:402CF4*
+ ID_OUI_FROM_DATABASE=Universal Global Scientific Industrial Co., Ltd.
+
+OUI:0010C6*
+ ID_OUI_FROM_DATABASE=Universal Global Scientific Industrial Co., Ltd.
+
+OUI:00247E*
+ ID_OUI_FROM_DATABASE=Universal Global Scientific Industrial Co., Ltd.
+
+OUI:001639*
+ ID_OUI_FROM_DATABASE=Ubiquam Co., Ltd.
+
+OUI:183919*
+ ID_OUI_FROM_DATABASE=Unicoi Systems
+
+OUI:90A46A*
+ ID_OUI_FROM_DATABASE=SISNET CO., LTD
+
+OUI:14E7C8*
+ ID_OUI_FROM_DATABASE=Integrated Device Technology (Malaysia) Sdn. Bhd.
+
+OUI:280DFC*
+ ID_OUI_FROM_DATABASE=Sony Interactive Entertainment Inc.
+
+OUI:0015C1*
+ ID_OUI_FROM_DATABASE=Sony Interactive Entertainment Inc.
+
+OUI:0019C5*
+ ID_OUI_FROM_DATABASE=Sony Interactive Entertainment Inc.
+
+OUI:ACA213*
+ ID_OUI_FROM_DATABASE=Shenzhen Bilian electronic CO.,LTD
+
+OUI:38F8CA*
+ ID_OUI_FROM_DATABASE=OWIN Inc.
+
+OUI:54D272*
+ ID_OUI_FROM_DATABASE=Nuki Home Solutions GmbH
+
+OUI:9CA3A9*
+ ID_OUI_FROM_DATABASE=Guangzhou Juan Optical and Electronical Tech Joint Stock Co., Ltd
+
+OUI:1100AA*
+ ID_OUI_FROM_DATABASE=Private
+
+OUI:002067*
+ ID_OUI_FROM_DATABASE=Private
+
+OUI:9893CC*
+ ID_OUI_FROM_DATABASE=LG ELECTRONICS INC
+
+OUI:3CCD93*
+ ID_OUI_FROM_DATABASE=LG ELECTRONICS INC
+
+OUI:583F54*
+ ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
+
+OUI:001C62*
+ ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
+
+OUI:002483*
+ ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
+
+OUI:E417D8*
+ ID_OUI_FROM_DATABASE=8BITDO TECHNOLOGY HK LIMITED
+
+OUI:40B0FA*
+ ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
+
+OUI:A09169*
+ ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
+
+OUI:286C07*
+ ID_OUI_FROM_DATABASE=XIAOMI Electronics,CO.,LTD
+
+OUI:84D931*
+ ID_OUI_FROM_DATABASE=Hangzhou H3C Technologies Co., Limited
+
+OUI:34FCEF*
+ ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
+
+OUI:485929*
+ ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
+
+OUI:505527*
+ ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
+
+OUI:98D6F7*
+ ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
+
+OUI:A8922C*
+ ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
+
+OUI:44DC91*
+ ID_OUI_FROM_DATABASE=PLANEX COMMUNICATIONS INC.
+
+OUI:9CD332*
+ ID_OUI_FROM_DATABASE=PLC Technology Ltd
+
+OUI:94D723*
+ ID_OUI_FROM_DATABASE=Shanghai DareGlobal Technologies Co.,Ltd
+
+OUI:A89DD2*
+ ID_OUI_FROM_DATABASE=Shanghai DareGlobal Technologies Co.,Ltd
+
+OUI:184A6F*
+ ID_OUI_FROM_DATABASE=Alcatel-Lucent Shanghai Bell Co., Ltd
+
+OUI:A0F3E4*
+ ID_OUI_FROM_DATABASE=Alcatel-Lucent IPD
+
+OUI:002105*
+ ID_OUI_FROM_DATABASE=Alcatel-Lucent IPD
+
+OUI:000772*
+ ID_OUI_FROM_DATABASE=Alcatel-Lucent Shanghai Bell Co., Ltd
+
+OUI:F06BCA*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:3423BA*
+ ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO-MECHANICS(THAILAND)
+
+OUI:D022BE*
+ ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO-MECHANICS(THAILAND)
+
+OUI:D02544*
+ ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO-MECHANICS(THAILAND)
+
+OUI:BC20A4*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:14F42A*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:BC851F*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:B85E7B*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:C462EA*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:0023D6*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:002491*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:001B98*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:44F459*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:34C3AC*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:94D771*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:4C3C16*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:9401C2*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:B43A28*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:A8C83A*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:849FB5*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:D0C1B1*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:F008F1*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:782079*
+ ID_OUI_FROM_DATABASE=ID Tech
+
+OUI:98234E*
+ ID_OUI_FROM_DATABASE=Micromedia AG
+
+OUI:E80036*
+ ID_OUI_FROM_DATABASE=Befs co,. ltd
+
+OUI:24590B*
+ ID_OUI_FROM_DATABASE=White Sky Inc. Limited
+
+OUI:10C60C*
+ ID_OUI_FROM_DATABASE=Domino UK Ltd
+
+OUI:3842A6*
+ ID_OUI_FROM_DATABASE=Ingenieurbuero Stahlkopf
+
+OUI:E866C4*
+ ID_OUI_FROM_DATABASE=Diamanti
+
+OUI:78471D*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:3816D1*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:004A77*
+ ID_OUI_FROM_DATABASE=zte corporation
+
+OUI:D48890*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:002566*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:00265F*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:001628*
+ ID_OUI_FROM_DATABASE=Magicard Ltd
+
+OUI:E4C801*
+ ID_OUI_FROM_DATABASE=BLU Products Inc
+
+OUI:00A6CA*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
+OUI:9C7DA3*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:F02FA7*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:883FD3*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:A04E01*
+ ID_OUI_FROM_DATABASE=CENTRAL ENGINEERING co.,ltd.
+
+OUI:245CBF*
+ ID_OUI_FROM_DATABASE=NCSE
+
+OUI:84CD62*
+ ID_OUI_FROM_DATABASE=ShenZhen IDWELL Technology CO.,Ltd
+
+OUI:DC9FDB*
+ ID_OUI_FROM_DATABASE=Ubiquiti Networks Inc.
+
+OUI:B0958E*
+ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
+
+OUI:001A39*
+ ID_OUI_FROM_DATABASE=Merten GmbH&CoKG
+
+OUI:007B18*
+ ID_OUI_FROM_DATABASE=SENTRY Co., LTD.
+
+OUI:144D67*
+ ID_OUI_FROM_DATABASE=Zioncom Electronics (Shenzhen) Ltd.
+
+OUI:34F39A*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
+OUI:20A8B9*
+ ID_OUI_FROM_DATABASE=Siemens
+
+OUI:C81B5C*
+ ID_OUI_FROM_DATABASE=BCTech
+
+OUI:3C2AF4*
+ ID_OUI_FROM_DATABASE=Brother Industries, LTD.
+
+OUI:20719E*
+ ID_OUI_FROM_DATABASE=SF Technology Co.,Ltd
+
+OUI:7C95B1*
+ ID_OUI_FROM_DATABASE=Aerohive Networks Inc.
+
+OUI:206C8A*
+ ID_OUI_FROM_DATABASE=Aerohive Networks Inc.
+
+OUI:5CE30E*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:7823AE*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:E49E12*
+ ID_OUI_FROM_DATABASE=FREEBOX SAS
+
+OUI:D854A2*
+ ID_OUI_FROM_DATABASE=Aerohive Networks Inc.
+
+OUI:E01C41*
+ ID_OUI_FROM_DATABASE=Aerohive Networks Inc.
+
+OUI:C8675E*
+ ID_OUI_FROM_DATABASE=Aerohive Networks Inc.
+
+OUI:D4C8B0*
+ ID_OUI_FROM_DATABASE=Prime Electronics & Satellitics Inc.
+
+OUI:000FC2*
+ ID_OUI_FROM_DATABASE=Uniwell Corporation
+
+OUI:A4E6B1*
+ ID_OUI_FROM_DATABASE=Shanghai Joindata Technology Co.,Ltd.
+
+OUI:B4B384*
+ ID_OUI_FROM_DATABASE=ShenZhen Figigantic Electronic Co.,Ltd
+
+OUI:D46A6A*
+ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+
+OUI:A8A5E2*
+ ID_OUI_FROM_DATABASE=MSF-Vathauer Antriebstechnik GmbH & Co KG
+
+OUI:00425A*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
+OUI:000B4F*
+ ID_OUI_FROM_DATABASE=Verifone
+
+OUI:007686*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
+OUI:74FF4C*
+ ID_OUI_FROM_DATABASE=Skyworth Digital Technology(Shenzhen) Co.,Ltd
+
+OUI:A02C36*
+ ID_OUI_FROM_DATABASE=FN-LINK TECHNOLOGY LIMITED
+
+OUI:F8D027*
+ ID_OUI_FROM_DATABASE=Seiko Epson Corporation
+
+OUI:44D244*
+ ID_OUI_FROM_DATABASE=Seiko Epson Corporation
+
+OUI:9CAED3*
+ ID_OUI_FROM_DATABASE=Seiko Epson Corporation
+
+OUI:341E6B*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:48F97C*
+ ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD
+
+OUI:B47447*
+ ID_OUI_FROM_DATABASE=CoreOS
+
+OUI:ACC1EE*
+ ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
+
+OUI:CCA219*
+ ID_OUI_FROM_DATABASE=SHENZHEN ALONG INVESTMENT CO.,LTD
+
+OUI:94A04E*
+ ID_OUI_FROM_DATABASE=Bostex Technology Co., LTD
+
+OUI:8CA5A1*
+ ID_OUI_FROM_DATABASE=Oregano Systems - Design & Consulting GmbH
+
+OUI:64B0A6*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:84FCAC*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:6C19C0*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:20AB37*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:186590*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:2C0BE9*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
+OUI:2C6373*
+ ID_OUI_FROM_DATABASE=SICHUAN TIANYI COMHEART TELECOMCO., LTD
+
+OUI:9CCC83*
+ ID_OUI_FROM_DATABASE=Juniper Networks
+
+OUI:90505A*
+ ID_OUI_FROM_DATABASE=unGlue, Inc
+
+OUI:60D262*
+ ID_OUI_FROM_DATABASE=Tzukuri Pty Ltd
+
+OUI:34FCB9*
+ ID_OUI_FROM_DATABASE=Hewlett Packard Enterprise
+
+OUI:B0E5ED*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:C81451*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:C486E9*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:D8C771*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:F0C850*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:5425EA*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:2816AD*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
+OUI:00A0C8*
+ ID_OUI_FROM_DATABASE=Adtran Inc
+
+OUI:1CB857*
+ ID_OUI_FROM_DATABASE=Becon Technologies Co,.Ltd.
+
+OUI:70918F*
+ ID_OUI_FROM_DATABASE=Weber-Stephen Products LLC
+
+OUI:803A0A*
+ ID_OUI_FROM_DATABASE=Integrated Device Technology (Malaysia) Sdn. Bhd.
+
+OUI:002207*
+ ID_OUI_FROM_DATABASE=Inteno Broadband Technology AB
+
+OUI:3C7F6F*
+ ID_OUI_FROM_DATABASE=Telechips, Inc.
+
+OUI:0060D3*
+ ID_OUI_FROM_DATABASE=AT&T
+
+OUI:800010*
+ ID_OUI_FROM_DATABASE=AT&T
+
+OUI:08006A*
+ ID_OUI_FROM_DATABASE=AT&T
+
+OUI:48A380*
+ ID_OUI_FROM_DATABASE=Gionee Communication Equipment Co.,Ltd.
+
+OUI:5CBA37*
+ ID_OUI_FROM_DATABASE=Microsoft Corporation
+
+OUI:C4836F*
+ ID_OUI_FROM_DATABASE=Ciena Corporation
+
+OUI:C87324*
+ ID_OUI_FROM_DATABASE=Sow Cheng Technology Co. Ltd.
+
+OUI:6854FD*
+ ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
+
+OUI:3CF862*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
+OUI:0823B2*
+ ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd.
+
+OUI:88C3B3*
+ ID_OUI_FROM_DATABASE=SOVICO
+
+OUI:54C415*
+ ID_OUI_FROM_DATABASE=Hangzhou Hikvision Digital Technology Co.,Ltd.
+
+OUI:E05124*
+ ID_OUI_FROM_DATABASE=NXP Semiconductors
+
+OUI:005016*
+ ID_OUI_FROM_DATABASE=Molex Canada Ltd
+
+OUI:0005F7*
+ ID_OUI_FROM_DATABASE=Analog Devices, Inc.
+
+OUI:A084CB*
+ ID_OUI_FROM_DATABASE=SonicSensory,Inc.
+
+OUI:7802F8*
+ ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
+
+OUI:00238A*
+ ID_OUI_FROM_DATABASE=Ciena Corporation
+
+OUI:34E70B*
+ ID_OUI_FROM_DATABASE=HAN Networks Co., Ltd
+
+OUI:D47AE2*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:903809*
+ ID_OUI_FROM_DATABASE=Ericsson AB
+
+OUI:542B57*
+ ID_OUI_FROM_DATABASE=Night Owl SP
+
+OUI:00111B*
+ ID_OUI_FROM_DATABASE=Targa Systems Div L-3 Communications
+
+OUI:2C7E81*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:EC01EE*
+ ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+
+OUI:B8224F*
+ ID_OUI_FROM_DATABASE=SICHUAN TIANYI COMHEART TELECOMCO., LTD
+
+OUI:702084*
+ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co., Ltd.
+
+OUI:F42B48*
+ ID_OUI_FROM_DATABASE=Ubiqam
+
+OUI:68CC6E*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:00108C*
+ ID_OUI_FROM_DATABASE=Fujitsu Services Ltd
+
+OUI:98D3D2*
+ ID_OUI_FROM_DATABASE=MEKRA Lang GmbH & Co. KG
+
+OUI:F4DC41*
+ ID_OUI_FROM_DATABASE=YOUNGZONE CULTURE (SHANGHAI) CORP
+
OUI:2C3996*
ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS
@@ -61397,9 +63395,6 @@ OUI:7081EB*
OUI:086698*
ID_OUI_FROM_DATABASE=Apple, Inc.
-OUI:002926*
- ID_OUI_FROM_DATABASE=Applied Optoelectronics, Inc Taiwan Branch
-
OUI:2CFD37*
ID_OUI_FROM_DATABASE=Blue Calypso, Inc.
@@ -61445,9 +63440,6 @@ OUI:1CA770*
OUI:C42F90*
ID_OUI_FROM_DATABASE=Hangzhou Hikvision Digital Technology Co.,Ltd.
-OUI:9C5D12*
- ID_OUI_FROM_DATABASE=Aerohive Networks Inc.
-
OUI:A42BB0*
ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
@@ -61622,9 +63614,6 @@ OUI:D837BE*
OUI:A4516F*
ID_OUI_FROM_DATABASE=Microsoft Mobile Oy
-OUI:FC64BA*
- ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
-
OUI:246081*
ID_OUI_FROM_DATABASE=razberi technologies
@@ -61877,21 +63866,6 @@ OUI:9017AC*
OUI:94049C*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
-OUI:C46AB7*
- ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
-
-OUI:68DFDD*
- ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
-
-OUI:64B473*
- ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
-
-OUI:7451BA*
- ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
-
-OUI:3480B3*
- ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
-
OUI:5006AB*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
@@ -62975,9 +64949,6 @@ OUI:A8329A*
OUI:B40AC6*
ID_OUI_FROM_DATABASE=DEXON Systems Ltd.
-OUI:480C49*
- ID_OUI_FROM_DATABASE=NAKAYO TELECOMMUNICATIONS,INC
-
OUI:5CB8CB*
ID_OUI_FROM_DATABASE=Allis Communications
@@ -63212,12 +65183,6 @@ OUI:D86194*
OUI:589CFC*
ID_OUI_FROM_DATABASE=FreeBSD Foundation
-OUI:602103*
- ID_OUI_FROM_DATABASE=STCUBE.INC
-
-OUI:085DDD*
- ID_OUI_FROM_DATABASE=Mercury Corporation
-
OUI:98349D*
ID_OUI_FROM_DATABASE=Krauss Maffei Technologies GmbH
@@ -63488,9 +65453,6 @@ OUI:C0A39E*
OUI:088E4F*
ID_OUI_FROM_DATABASE=SF Software Solutions
-OUI:E8EADA*
- ID_OUI_FROM_DATABASE=Denkovi Assembly Electroncs LTD
-
OUI:DCAE04*
ID_OUI_FROM_DATABASE=CELOXICA Ltd
@@ -63587,9 +65549,6 @@ OUI:90DA4E*
OUI:7038B4*
ID_OUI_FROM_DATABASE=Low Tech Solutions
-OUI:AC1826*
- ID_OUI_FROM_DATABASE=SEIKO EPSON CORPORATION
-
OUI:4C804F*
ID_OUI_FROM_DATABASE=Armstrong Monitoring Corp
@@ -63632,9 +65591,6 @@ OUI:D8DCE9*
OUI:54112F*
ID_OUI_FROM_DATABASE=Sulzer Pump Solutions Finland Oy
-OUI:E0DCA0*
- ID_OUI_FROM_DATABASE=Siemens Electrical Apparatus Ltd., Suzhou Chengdu Branch
-
OUI:4C55B8*
ID_OUI_FROM_DATABASE=Turkcell Teknoloji
@@ -64154,9 +66110,6 @@ OUI:64F242*
OUI:60F281*
ID_OUI_FROM_DATABASE=TRANWO TECHNOLOGY CO., LTD.
-OUI:B0E892*
- ID_OUI_FROM_DATABASE=SEIKO EPSON CORPORATION
-
OUI:642400*
ID_OUI_FROM_DATABASE=Xorcom Ltd.
@@ -64229,9 +66182,6 @@ OUI:78BEBD*
OUI:3C9174*
ID_OUI_FROM_DATABASE=ALONG COMMUNICATION TECHNOLOGY
-OUI:B8E937*
- ID_OUI_FROM_DATABASE=Sonos, Inc.
-
OUI:E8D0FA*
ID_OUI_FROM_DATABASE=MKS Instruments Deutschland GmbH
@@ -64685,9 +66635,6 @@ OUI:D4F63F*
OUI:4C0289*
ID_OUI_FROM_DATABASE=LEX COMPUTECH CO., LTD
-OUI:C0E54E*
- ID_OUI_FROM_DATABASE=DENX Computer Systems GmbH
-
OUI:E435FB*
ID_OUI_FROM_DATABASE=Sabre Technology (Hull) Ltd
@@ -65426,9 +67373,6 @@ OUI:F0BDF1*
OUI:288915*
ID_OUI_FROM_DATABASE=CashGuard Sverige AB
-OUI:180675*
- ID_OUI_FROM_DATABASE=DILAX Intelcom GmbH
-
OUI:40618E*
ID_OUI_FROM_DATABASE=Stella-Green Co
@@ -65930,9 +67874,6 @@ OUI:0025A3*
OUI:00259C*
ID_OUI_FROM_DATABASE=Cisco-Linksys, LLC
-OUI:002590*
- ID_OUI_FROM_DATABASE=Super Micro Computer, Inc.
-
OUI:002580*
ID_OUI_FROM_DATABASE=Equipson S.A.
@@ -66431,9 +68372,6 @@ OUI:002377*
OUI:002371*
ID_OUI_FROM_DATABASE=SOAM Systel
-OUI:002365*
- ID_OUI_FROM_DATABASE=ELKA-Elektronik GmbH
-
OUI:00236A*
ID_OUI_FROM_DATABASE=SmartRG Inc
@@ -66629,9 +68567,6 @@ OUI:0021B8*
OUI:0021B1*
ID_OUI_FROM_DATABASE=DIGITAL SOLUTIONS LTD
-OUI:001F82*
- ID_OUI_FROM_DATABASE=Cal-Comp Electronics & Communications Co., Ltd
-
OUI:001F7D*
ID_OUI_FROM_DATABASE=embedded wireless GmbH
@@ -67268,9 +69203,6 @@ OUI:001BCB*
OUI:001BC4*
ID_OUI_FROM_DATABASE=Ultratec, Inc.
-OUI:001BB5*
- ID_OUI_FROM_DATABASE=ZF Electronics GmbH
-
OUI:001BAE*
ID_OUI_FROM_DATABASE=Micro Control Systems, Inc
@@ -67382,9 +69314,6 @@ OUI:0019AA*
OUI:0019AF*
ID_OUI_FROM_DATABASE=Rigol Technologies, Inc.
-OUI:001992*
- ID_OUI_FROM_DATABASE=ADTRAN INC.
-
OUI:001997*
ID_OUI_FROM_DATABASE=Soft Device Sdn Bhd
@@ -72785,9 +74714,6 @@ OUI:944452*
OUI:08863B*
ID_OUI_FROM_DATABASE=Belkin International Inc.
-OUI:2082C0*
- ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
-
OUI:001556*
ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS
@@ -72890,9 +74816,6 @@ OUI:F8E079*
OUI:1430C6*
ID_OUI_FROM_DATABASE=Motorola Mobility LLC, a Lenovo Company
-OUI:044E06*
- ID_OUI_FROM_DATABASE=Ericsson AB
-
OUI:000D67*
ID_OUI_FROM_DATABASE=Ericsson
@@ -73475,9 +75398,6 @@ OUI:0025DC*
OUI:001CFC*
ID_OUI_FROM_DATABASE=Sumitomo Electric Industries,Ltd
-OUI:00D0EC*
- ID_OUI_FROM_DATABASE=NAKAYO TELECOMMUNICATIONS,INC
-
OUI:8CC661*
ID_OUI_FROM_DATABASE=Current, powered by GE
@@ -73904,354 +75824,6 @@ OUI:B0B2DC*
OUI:90EF68*
ID_OUI_FROM_DATABASE=ZyXEL Communications Corporation
-OUI:00248D*
- ID_OUI_FROM_DATABASE=Sony Interactive Entertainment Inc.
-
-OUI:54276C*
- ID_OUI_FROM_DATABASE=Jiangsu Houge Technology Corp.
-
-OUI:00CB00*
- ID_OUI_FROM_DATABASE=Private
-
-OUI:FCFFAA*
- ID_OUI_FROM_DATABASE=IEEE Registration Authority
-
-OUI:40D855*
- ID_OUI_FROM_DATABASE=IEEE Registration Authority
-
-OUI:48DF37*
- ID_OUI_FROM_DATABASE=Hewlett Packard Enterprise
-
-OUI:9C93E4*
- ID_OUI_FROM_DATABASE=Private
-
-OUI:005079*
- ID_OUI_FROM_DATABASE=Private
-
-OUI:0028F8*
- ID_OUI_FROM_DATABASE=Intel Corporate
-
-OUI:8416F9*
- ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
-
-OUI:C44BD1*
- ID_OUI_FROM_DATABASE=Wallys Communications Teachnologies Co.,Ltd.
-
-OUI:2057AF*
- ID_OUI_FROM_DATABASE=Shenzhen FH-NET OPTOELECTRONICS CO.,LTD
-
-OUI:34EA34*
- ID_OUI_FROM_DATABASE=HangZhou Gubei Electronics Technology Co.,Ltd
-
-OUI:F8A9D0*
- ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
-
-OUI:CCFA00*
- ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
-
-OUI:BCF5AC*
- ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
-
-OUI:00AA70*
- ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
-
-OUI:F01C13*
- ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
-
-OUI:CC2D8C*
- ID_OUI_FROM_DATABASE=LG ELECTRONICS INC
-
-OUI:344DF7*
- ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
-
-OUI:C49A02*
- ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
-
-OUI:0022A9*
- ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
-
-OUI:0025E5*
- ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
-
-OUI:10F96F*
- ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
-
-OUI:00116E*
- ID_OUI_FROM_DATABASE=Peplink International Ltd.
-
-OUI:A091C8*
- ID_OUI_FROM_DATABASE=zte corporation
-
-OUI:002597*
- ID_OUI_FROM_DATABASE=Kalki Communication Technologies
-
-OUI:882BD7*
- ID_OUI_FROM_DATABASE=ADDÉNERGIE TECHNOLOGIES
-
-OUI:9CA5C0*
- ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd.
-
-OUI:B4A5EF*
- ID_OUI_FROM_DATABASE=Sercomm Corporation.
-
-OUI:3044A1*
- ID_OUI_FROM_DATABASE=Shanghai Nanchao Information Technology
-
-OUI:C4F1D1*
- ID_OUI_FROM_DATABASE=BEIJING SOGOU TECHNOLOGY DEVELOPMENT CO., LTD.
-
-OUI:38A28C*
- ID_OUI_FROM_DATABASE=SHENZHEN RF-LINK TECHNOLOGY CO.,LTD.
-
-OUI:58528A*
- ID_OUI_FROM_DATABASE=Mitsubishi Electric Corporation
-
-OUI:BCC00F*
- ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD
-
-OUI:B0C287*
- ID_OUI_FROM_DATABASE=Technicolor CH USA Inc.
-
-OUI:CC03FA*
- ID_OUI_FROM_DATABASE=Technicolor CH USA Inc.
-
-OUI:28BE9B*
- ID_OUI_FROM_DATABASE=Technicolor CH USA Inc.
-
-OUI:509F3B*
- ID_OUI_FROM_DATABASE=OI ELECTRIC CO.,LTD
-
-OUI:E4029B*
- ID_OUI_FROM_DATABASE=Intel Corporate
-
-OUI:6002B4*
- ID_OUI_FROM_DATABASE=Wistron Neweb Corporation
-
-OUI:98EECB*
- ID_OUI_FROM_DATABASE=Wistron Infocomm (Zhongshan) Corporation
-
-OUI:70E284*
- ID_OUI_FROM_DATABASE=Wistron Infocomm (Zhongshan) Corporation
-
-OUI:80EA23*
- ID_OUI_FROM_DATABASE=Wistron Neweb Corporation
-
-OUI:D88039*
- ID_OUI_FROM_DATABASE=Microchip Technology Inc.
-
-OUI:001D72*
- ID_OUI_FROM_DATABASE=Wistron Neweb Corporation
-
-OUI:FC3D93*
- ID_OUI_FROM_DATABASE=LONGCHEER TELECOMMUNICATION LIMITED
-
-OUI:48F7C0*
- ID_OUI_FROM_DATABASE=Technicolor CH USA Inc.
-
-OUI:00409F*
- ID_OUI_FROM_DATABASE=Telco Systems, Inc.
-
-OUI:00E09E*
- ID_OUI_FROM_DATABASE=Quantum Corporation
-
-OUI:00148C*
- ID_OUI_FROM_DATABASE=General Dynamics Mission Systems
-
-OUI:A47174*
- ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
-
-OUI:D4A148*
- ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
-
-OUI:D065CA*
- ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
-
-OUI:8CEBC6*
- ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
-
-OUI:B808D7*
- ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
-
-OUI:FCF152*
- ID_OUI_FROM_DATABASE=Sony Corporation
-
-OUI:784476*
- ID_OUI_FROM_DATABASE=Zioncom Electronics (Shenzhen) Ltd.
-
-OUI:00183A*
- ID_OUI_FROM_DATABASE=Westell Technologies Inc.
-
-OUI:E89A8F*
- ID_OUI_FROM_DATABASE=QUANTA COMPUTER INC.
-
-OUI:001B24*
- ID_OUI_FROM_DATABASE=QUANTA COMPUTER INC.
-
-OUI:CC52AF*
- ID_OUI_FROM_DATABASE=Universal Global Scientific Industrial Co., Ltd.
-
-OUI:001A6B*
- ID_OUI_FROM_DATABASE=Universal Global Scientific Industrial Co., Ltd.
-
-OUI:00DD0A*
- ID_OUI_FROM_DATABASE=UNGERMANN-BASS INC.
-
-OUI:00039D*
- ID_OUI_FROM_DATABASE=Qisda Corporation
-
-OUI:000B0E*
- ID_OUI_FROM_DATABASE=Trapeze Networks
-
-OUI:002318*
- ID_OUI_FROM_DATABASE=Toshiba
-
-OUI:E89D87*
- ID_OUI_FROM_DATABASE=Toshiba
-
-OUI:E8E0B7*
- ID_OUI_FROM_DATABASE=Toshiba
-
-OUI:001428*
- ID_OUI_FROM_DATABASE=Vocollect Inc
-
-OUI:006B9E*
- ID_OUI_FROM_DATABASE=Vizio, Inc
-
-OUI:0024FF*
- ID_OUI_FROM_DATABASE=QLogic Corporation
-
-OUI:00A0C6*
- ID_OUI_FROM_DATABASE=Qualcomm Inc.
-
-OUI:ECAAA0*
- ID_OUI_FROM_DATABASE=PEGATRON CORPORATION
-
-OUI:E8886C*
- ID_OUI_FROM_DATABASE=Shenzhen SC Technologies Co.,LTD
-
-OUI:DC35F1*
- ID_OUI_FROM_DATABASE=Positivo Informática SA.
-
-OUI:EC6881*
- ID_OUI_FROM_DATABASE=Palo Alto Networks
-
-OUI:44334C*
- ID_OUI_FROM_DATABASE=Shenzhen Bilian electronic CO.,LTD
-
-OUI:D84FB8*
- ID_OUI_FROM_DATABASE=LG ELECTRONICS
-
-OUI:9C220E*
- ID_OUI_FROM_DATABASE=TASCAN Systems GmbH
-
-OUI:0CA402*
- ID_OUI_FROM_DATABASE=Alcatel-Lucent IPD
-
-OUI:00164D*
- ID_OUI_FROM_DATABASE=Alcatel-Lucent IPD
-
-OUI:FCFAF7*
- ID_OUI_FROM_DATABASE=Shanghai Baud Data Communication Co.,Ltd.
-
-OUI:C8E776*
- ID_OUI_FROM_DATABASE=PTCOM Technology
-
-OUI:5C497D*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:0005CD*
- ID_OUI_FROM_DATABASE=D&M Holdings Inc.
-
-OUI:E0286D*
- ID_OUI_FROM_DATABASE=AVM Audiovisuelles Marketing und Computersysteme GmbH
-
-OUI:7487A9*
- ID_OUI_FROM_DATABASE=OCT Technology Co., Ltd.
-
-OUI:34AA99*
- ID_OUI_FROM_DATABASE=Nokia
-
-OUI:C4084A*
- ID_OUI_FROM_DATABASE=Nokia
-
-OUI:8C90D3*
- ID_OUI_FROM_DATABASE=Nokia
-
-OUI:0C54B9*
- ID_OUI_FROM_DATABASE=Nokia
-
-OUI:444E1A*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:E8E5D6*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:5492BE*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:0021D1*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:101DC0*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:0023B9*
- ID_OUI_FROM_DATABASE=Airbus Defence and Space Deutschland GmbH
-
-OUI:2047ED*
- ID_OUI_FROM_DATABASE=BSkyB Ltd
-
-OUI:C8F946*
- ID_OUI_FROM_DATABASE=LOCOSYS Technology Inc.
-
-OUI:D41D71*
- ID_OUI_FROM_DATABASE=Palo Alto Networks
-
-OUI:5C2443*
- ID_OUI_FROM_DATABASE=O-Sung Telecom Co., Ltd.
-
-OUI:1861C7*
- ID_OUI_FROM_DATABASE=lemonbeat GmbH
-
-OUI:9CDC71*
- ID_OUI_FROM_DATABASE=Hewlett Packard Enterprise
-
-OUI:C8028F*
- ID_OUI_FROM_DATABASE=Nova Electronics (Shanghai) Co., Ltd.
-
-OUI:240D65*
- ID_OUI_FROM_DATABASE=Shenzhen Vsun Communication Technology Co., Ltd.
-
-OUI:D8452B*
- ID_OUI_FROM_DATABASE=Integrated Device Technology (Malaysia) Sdn. Bhd.
-
-OUI:2CDD95*
- ID_OUI_FROM_DATABASE=Taicang T&W Electronics
-
-OUI:5C9960*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:CC088D*
- ID_OUI_FROM_DATABASE=Apple, Inc.
-
-OUI:0080FB*
- ID_OUI_FROM_DATABASE=BVM LIMITED
-
-OUI:107223*
- ID_OUI_FROM_DATABASE=TELLESCOM INDUSTRIA E COMERCIO EM TELECOMUNICACAO
-
-OUI:AC84C9*
- ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS
-
-OUI:14EDBB*
- ID_OUI_FROM_DATABASE=2Wire Inc
-
-OUI:44BA46*
- ID_OUI_FROM_DATABASE=SICHUAN TIANYI COMHEART TELECOMCO.,LTD
-
-OUI:B4D135*
- ID_OUI_FROM_DATABASE=Cloudistics
-
OUI:A8AD3D*
ID_OUI_FROM_DATABASE=Alcatel-Lucent Shanghai Bell Co., Ltd
@@ -74432,103 +76004,103 @@ OUI:001830*
OUI:1CBA8C*
ID_OUI_FROM_DATABASE=Texas Instruments
-OUI:7CA97D*
- ID_OUI_FROM_DATABASE=Objenious
-
OUI:58FB84*
ID_OUI_FROM_DATABASE=Intel Corporate
OUI:E0E7BB*
ID_OUI_FROM_DATABASE=Nureva, Inc.
+OUI:7CA97D*
+ ID_OUI_FROM_DATABASE=Objenious
+
OUI:BC8AA3*
ID_OUI_FROM_DATABASE=NHN Entertainment
OUI:70A84C*
ID_OUI_FROM_DATABASE=MONAD., Inc.
-OUI:407009*
+OUI:00D088*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-OUI:94877C*
+OUI:001675*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-OUI:001DD2*
+OUI:0016B5*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-OUI:9C3426*
+OUI:001784*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-OUI:3C7A8A*
+OUI:0017E2*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-OUI:000FCC*
+OUI:CC7D37*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-OUI:BCCAB5*
+OUI:001A77*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-OUI:5C8FE0*
+OUI:984B4A*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-OUI:6CCA08*
+OUI:0015A4*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-OUI:5465DE*
+OUI:0015A3*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-OUI:F8EDA5*
+OUI:7CBFB1*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-OUI:00A289*
- ID_OUI_FROM_DATABASE=Cisco Systems, Inc
-
-OUI:ACEC80*
+OUI:8096B1*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-OUI:0015A4*
+OUI:00909C*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-OUI:0015A3*
+OUI:001180*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-OUI:7CBFB1*
+OUI:0017EE*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-OUI:8096B1*
+OUI:407009*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-OUI:00909C*
+OUI:94877C*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-OUI:001180*
+OUI:001DD2*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-OUI:0017EE*
+OUI:9C3426*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-OUI:00D088*
+OUI:5C8FE0*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-OUI:001675*
+OUI:6CCA08*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-OUI:0016B5*
+OUI:5465DE*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-OUI:001784*
+OUI:F8EDA5*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-OUI:0017E2*
+OUI:00A289*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
+OUI:ACEC80*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-OUI:CC7D37*
+OUI:3C7A8A*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-OUI:001A77*
+OUI:000FCC*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-OUI:984B4A*
+OUI:BCCAB5*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
OUI:80F503*
@@ -74543,6 +76115,15 @@ OUI:D42C0F*
OUI:E0B7B1*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+OUI:0024A0*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:C0C522*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:5CB066*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
OUI:002210*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
@@ -74555,9 +76136,6 @@ OUI:E48399*
OUI:002636*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-OUI:0024A0*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
OUI:0012C9*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
@@ -74570,18 +76148,12 @@ OUI:001C12*
OUI:001FC4*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-OUI:C0C522*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:5CB066*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+OUI:6C1E90*
+ ID_OUI_FROM_DATABASE=Hansol Technics Co., Ltd.
OUI:486DBB*
ID_OUI_FROM_DATABASE=Vestel Elektronik San ve Tic. A.Ş.
-OUI:6C1E90*
- ID_OUI_FROM_DATABASE=Hansol Technics Co., Ltd.
-
OUI:E09DFA*
ID_OUI_FROM_DATABASE=Wanan Hongsheng Electronic Co.Ltd
@@ -74594,52 +76166,43 @@ OUI:182861*
OUI:8841FC*
ID_OUI_FROM_DATABASE=AirTies Wireless Networks
-OUI:BCB1F3*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:38ECE4*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:CCF9E8*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:F0E77E*
+OUI:182666*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:5CE8EB*
+OUI:C06599*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:B8D9CE*
+OUI:CC07AB*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:6CB7F4*
+OUI:E84E84*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:182666*
+OUI:50FC9F*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:C06599*
+OUI:E432CB*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:CC07AB*
+OUI:889B39*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:E84E84*
+OUI:BCB1F3*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:50FC9F*
+OUI:38ECE4*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:E432CB*
+OUI:CCF9E8*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:889B39*
+OUI:F0E77E*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:BC72B1*
+OUI:5CE8EB*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:78F7BE*
+OUI:B8D9CE*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
OUI:70F927*
@@ -74654,38 +76217,38 @@ OUI:28BAB5*
OUI:103B59*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:7C11CB*
- ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
-
-OUI:A4CAA0*
- ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
-
-OUI:001EE1*
+OUI:6CB7F4*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:F49F54*
+OUI:001EE1*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
OUI:0018AF*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:00214C*
+OUI:BC72B1*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:001632*
+OUI:78F7BE*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:D0667B*
+OUI:F49F54*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:001377*
+OUI:7C11CB*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:A4CAA0*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:00214C*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:50B7C3*
+OUI:001632*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:5CA39D*
- ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO MECHANICS CO., LTD.
+OUI:D0667B*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
OUI:38AA3C*
ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO MECHANICS CO., LTD.
@@ -74693,15 +76256,27 @@ OUI:38AA3C*
OUI:206432*
ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO MECHANICS CO., LTD.
+OUI:002637*
+ ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO MECHANICS CO., LTD.
+
+OUI:001377*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:50B7C3*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
OUI:8018A7*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:002637*
+OUI:5CA39D*
ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO MECHANICS CO., LTD.
OUI:B88EDF*
ID_OUI_FROM_DATABASE=Zencheer Communication Technology Co., Ltd.
+OUI:D85DE2*
+ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+
OUI:707781*
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
@@ -74720,7 +76295,10 @@ OUI:F866D1*
OUI:F80D43*
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
-OUI:785968*
+OUI:002268*
+ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+
+OUI:001FE1*
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
OUI:002556*
@@ -74738,51 +76316,462 @@ OUI:001E4C*
OUI:F8DA0C*
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
-OUI:342387*
- ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
-
OUI:9034FC*
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
OUI:906EBB*
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
-OUI:1C666D*
+OUI:342387*
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
-OUI:CCAF78*
+OUI:689423*
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
-OUI:904CE5*
+OUI:B8763F*
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
-OUI:002268*
+OUI:1C3E84*
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
-OUI:001FE1*
+OUI:C01885*
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
-OUI:689423*
+OUI:785968*
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
-OUI:B8763F*
+OUI:1C666D*
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
-OUI:1C3E84*
+OUI:CCAF78*
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
-OUI:C01885*
+OUI:904CE5*
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
OUI:B01041*
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
-OUI:D85DE2*
+OUI:7487A9*
+ ID_OUI_FROM_DATABASE=OCT Technology Co., Ltd.
+
+OUI:E0286D*
+ ID_OUI_FROM_DATABASE=AVM Audiovisuelles Marketing und Computersysteme GmbH
+
+OUI:444E1A*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:E8E5D6*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:5492BE*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:101DC0*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:0021D1*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:5CA933*
+ ID_OUI_FROM_DATABASE=Luma Home
+
+OUI:2CDD95*
+ ID_OUI_FROM_DATABASE=Taicang T&W Electronics
+
+OUI:AC84C9*
+ ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS
+
+OUI:107223*
+ ID_OUI_FROM_DATABASE=TELLESCOM INDUSTRIA E COMERCIO EM TELECOMUNICACAO
+
+OUI:CCB0DA*
+ ID_OUI_FROM_DATABASE=Liteon Technology Corporation
+
+OUI:14EDBB*
+ ID_OUI_FROM_DATABASE=2Wire Inc
+
+OUI:44BA46*
+ ID_OUI_FROM_DATABASE=SICHUAN TIANYI COMHEART TELECOMCO.,LTD
+
+OUI:B4D135*
+ ID_OUI_FROM_DATABASE=Cloudistics
+
+OUI:085DDD*
+ ID_OUI_FROM_DATABASE=MERCURY CORPORATION
+
+OUI:6CEC5A*
+ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. CO.,Ltd.
+
+OUI:5001D9*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:44C346*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:884477*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:047503*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:2C402B*
+ ID_OUI_FROM_DATABASE=Smart iBlue Technology Limited
+
+OUI:180675*
+ ID_OUI_FROM_DATABASE=Dilax Intelcom GmbH
+
+OUI:30AEA4*
+ ID_OUI_FROM_DATABASE=Espressif Inc.
+
+OUI:0C4933*
+ ID_OUI_FROM_DATABASE=Sichuan Jiuzhou Electronic Technology Co., Ltd.
+
+OUI:7828CA*
+ ID_OUI_FROM_DATABASE=Sonos, Inc.
+
+OUI:B8E937*
+ ID_OUI_FROM_DATABASE=Sonos, Inc.
+
+OUI:B05216*
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+OUI:002926*
+ ID_OUI_FROM_DATABASE=Applied Optoelectronics, Inc Taiwan Branch
+
+OUI:68DFDD*
+ ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
+
+OUI:C46AB7*
+ ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
+
+OUI:FC64BA*
+ ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
+
+OUI:2082C0*
+ ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
+
+OUI:3480B3*
+ ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
+
+OUI:7451BA*
+ ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
+
+OUI:64B473*
+ ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
+
+OUI:8C2FA6*
+ ID_OUI_FROM_DATABASE=Solid Optics B.V.
+
+OUI:B0A2E7*
+ ID_OUI_FROM_DATABASE=Shenzhen TINNO Mobile Technology Corp.
+
+OUI:BCA8A6*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
+OUI:101331*
+ ID_OUI_FROM_DATABASE=Technicolor
+
+OUI:38AFD7*
+ ID_OUI_FROM_DATABASE=FUJITSU LIMITED
+
+OUI:28993A*
+ ID_OUI_FROM_DATABASE=Arista Networks
+
+OUI:B0E892*
+ ID_OUI_FROM_DATABASE=Seiko Epson Corporation
+
+OUI:AC1826*
+ ID_OUI_FROM_DATABASE=Seiko Epson Corporation
+
+OUI:886639*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:D8197A*
+ ID_OUI_FROM_DATABASE=Nuheara Ltd
+
+OUI:8CE117*
+ ID_OUI_FROM_DATABASE=zte corporation
+
+OUI:64136C*
+ ID_OUI_FROM_DATABASE=zte corporation
+
+OUI:0005CD*
+ ID_OUI_FROM_DATABASE=D&M Holdings Inc.
+
+OUI:8C9351*
+ ID_OUI_FROM_DATABASE=Jigowatts Inc.
+
+OUI:D838FC*
+ ID_OUI_FROM_DATABASE=Ruckus Wireless
+
+OUI:00248D*
+ ID_OUI_FROM_DATABASE=Sony Interactive Entertainment Inc.
+
+OUI:54276C*
+ ID_OUI_FROM_DATABASE=Jiangsu Houge Technology Corp.
+
+OUI:00CB00*
+ ID_OUI_FROM_DATABASE=Private
+
+OUI:FCFFAA*
+ ID_OUI_FROM_DATABASE=IEEE Registration Authority
+
+OUI:40D855*
+ ID_OUI_FROM_DATABASE=IEEE Registration Authority
+
+OUI:48DF37*
+ ID_OUI_FROM_DATABASE=Hewlett Packard Enterprise
+
+OUI:9C93E4*
+ ID_OUI_FROM_DATABASE=Private
+
+OUI:005079*
+ ID_OUI_FROM_DATABASE=Private
+
+OUI:0028F8*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
+OUI:8416F9*
+ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
+
+OUI:C44BD1*
+ ID_OUI_FROM_DATABASE=Wallys Communications Teachnologies Co.,Ltd.
+
+OUI:2057AF*
+ ID_OUI_FROM_DATABASE=Shenzhen FH-NET OPTOELECTRONICS CO.,LTD
+
+OUI:34EA34*
+ ID_OUI_FROM_DATABASE=HangZhou Gubei Electronics Technology Co.,Ltd
+
+OUI:F8A9D0*
+ ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
+
+OUI:CCFA00*
+ ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
+
+OUI:BCF5AC*
+ ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
+
+OUI:00AA70*
+ ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
+
+OUI:F01C13*
+ ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
+
+OUI:CC2D8C*
+ ID_OUI_FROM_DATABASE=LG ELECTRONICS INC
+
+OUI:344DF7*
+ ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
+
+OUI:C49A02*
+ ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
+
+OUI:0022A9*
+ ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
+
+OUI:0025E5*
+ ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
+
+OUI:10F96F*
+ ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
+
+OUI:00116E*
+ ID_OUI_FROM_DATABASE=Peplink International Ltd.
+
+OUI:A091C8*
+ ID_OUI_FROM_DATABASE=zte corporation
+
+OUI:002597*
+ ID_OUI_FROM_DATABASE=Kalki Communication Technologies
+
+OUI:882BD7*
+ ID_OUI_FROM_DATABASE=ADDÉNERGIE TECHNOLOGIES
+
+OUI:9CA5C0*
+ ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd.
+
+OUI:B4A5EF*
+ ID_OUI_FROM_DATABASE=Sercomm Corporation.
+
+OUI:3044A1*
+ ID_OUI_FROM_DATABASE=Shanghai Nanchao Information Technology
+
+OUI:C4F1D1*
+ ID_OUI_FROM_DATABASE=BEIJING SOGOU TECHNOLOGY DEVELOPMENT CO., LTD.
+
+OUI:38A28C*
+ ID_OUI_FROM_DATABASE=SHENZHEN RF-LINK TECHNOLOGY CO.,LTD.
+
+OUI:58528A*
+ ID_OUI_FROM_DATABASE=Mitsubishi Electric Corporation
+
+OUI:BCC00F*
+ ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD
+
+OUI:B0C287*
+ ID_OUI_FROM_DATABASE=Technicolor CH USA Inc.
+
+OUI:CC03FA*
+ ID_OUI_FROM_DATABASE=Technicolor CH USA Inc.
+
+OUI:28BE9B*
+ ID_OUI_FROM_DATABASE=Technicolor CH USA Inc.
+
+OUI:509F3B*
+ ID_OUI_FROM_DATABASE=OI ELECTRIC CO.,LTD
+
+OUI:E4029B*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
+OUI:6002B4*
+ ID_OUI_FROM_DATABASE=Wistron Neweb Corporation
+
+OUI:98EECB*
+ ID_OUI_FROM_DATABASE=Wistron Infocomm (Zhongshan) Corporation
+
+OUI:70E284*
+ ID_OUI_FROM_DATABASE=Wistron Infocomm (Zhongshan) Corporation
+
+OUI:80EA23*
+ ID_OUI_FROM_DATABASE=Wistron Neweb Corporation
+
+OUI:D88039*
+ ID_OUI_FROM_DATABASE=Microchip Technology Inc.
+
+OUI:FC3D93*
+ ID_OUI_FROM_DATABASE=LONGCHEER TELECOMMUNICATION LIMITED
+
+OUI:48F7C0*
+ ID_OUI_FROM_DATABASE=Technicolor CH USA Inc.
+
+OUI:00409F*
+ ID_OUI_FROM_DATABASE=Telco Systems, Inc.
+
+OUI:00E09E*
+ ID_OUI_FROM_DATABASE=Quantum Corporation
+
+OUI:00148C*
+ ID_OUI_FROM_DATABASE=General Dynamics Mission Systems
+
+OUI:A47174*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:D4A148*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:D065CA*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:8CEBC6*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:B808D7*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:FCF152*
+ ID_OUI_FROM_DATABASE=Sony Corporation
+
+OUI:784476*
+ ID_OUI_FROM_DATABASE=Zioncom Electronics (Shenzhen) Ltd.
+
+OUI:00183A*
+ ID_OUI_FROM_DATABASE=Westell Technologies Inc.
+
+OUI:E89A8F*
+ ID_OUI_FROM_DATABASE=QUANTA COMPUTER INC.
+
+OUI:001B24*
+ ID_OUI_FROM_DATABASE=QUANTA COMPUTER INC.
+
+OUI:CC52AF*
+ ID_OUI_FROM_DATABASE=Universal Global Scientific Industrial Co., Ltd.
+
+OUI:001A6B*
+ ID_OUI_FROM_DATABASE=Universal Global Scientific Industrial Co., Ltd.
+
+OUI:00DD0A*
+ ID_OUI_FROM_DATABASE=UNGERMANN-BASS INC.
+
+OUI:00039D*
+ ID_OUI_FROM_DATABASE=Qisda Corporation
+
+OUI:000B0E*
+ ID_OUI_FROM_DATABASE=Trapeze Networks
+
+OUI:002318*
+ ID_OUI_FROM_DATABASE=Toshiba
+
+OUI:E89D87*
+ ID_OUI_FROM_DATABASE=Toshiba
+
+OUI:E8E0B7*
+ ID_OUI_FROM_DATABASE=Toshiba
+
+OUI:001428*
+ ID_OUI_FROM_DATABASE=Vocollect Inc
+
+OUI:006B9E*
+ ID_OUI_FROM_DATABASE=Vizio, Inc
+
+OUI:0024FF*
+ ID_OUI_FROM_DATABASE=QLogic Corporation
+
+OUI:00A0C6*
+ ID_OUI_FROM_DATABASE=Qualcomm Inc.
+
+OUI:ECAAA0*
+ ID_OUI_FROM_DATABASE=PEGATRON CORPORATION
+
+OUI:E8886C*
+ ID_OUI_FROM_DATABASE=Shenzhen SC Technologies Co.,LTD
+
+OUI:DC35F1*
+ ID_OUI_FROM_DATABASE=Positivo Informática SA.
+
+OUI:EC6881*
+ ID_OUI_FROM_DATABASE=Palo Alto Networks
+
+OUI:44334C*
+ ID_OUI_FROM_DATABASE=Shenzhen Bilian electronic CO.,LTD
+
+OUI:D84FB8*
+ ID_OUI_FROM_DATABASE=LG ELECTRONICS
+
+OUI:9C220E*
+ ID_OUI_FROM_DATABASE=TASCAN Systems GmbH
+
+OUI:0CA402*
+ ID_OUI_FROM_DATABASE=Alcatel-Lucent IPD
+
+OUI:00164D*
+ ID_OUI_FROM_DATABASE=Alcatel-Lucent IPD
+
+OUI:FCFAF7*
+ ID_OUI_FROM_DATABASE=Shanghai Baud Data Communication Co.,Ltd.
+
+OUI:C8E776*
+ ID_OUI_FROM_DATABASE=PTCOM Technology
+
+OUI:5C497D*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
OUI:949AA9*
ID_OUI_FROM_DATABASE=Microsoft Corporation
+OUI:C4084A*
+ ID_OUI_FROM_DATABASE=Nokia
+
+OUI:0C54B9*
+ ID_OUI_FROM_DATABASE=Nokia
+
+OUI:8C90D3*
+ ID_OUI_FROM_DATABASE=Nokia
+
+OUI:34AA99*
+ ID_OUI_FROM_DATABASE=Nokia
+
OUI:F8633F*
ID_OUI_FROM_DATABASE=Intel Corporate
@@ -74795,11 +76784,38 @@ OUI:A42983*
OUI:702E22*
ID_OUI_FROM_DATABASE=zte corporation
+OUI:0023B9*
+ ID_OUI_FROM_DATABASE=Airbus Defence and Space Deutschland GmbH
+
OUI:B0C128*
ID_OUI_FROM_DATABASE=Adler ELREHA GmbH
-OUI:5CA933*
- ID_OUI_FROM_DATABASE=Luma Home
+OUI:C8F946*
+ ID_OUI_FROM_DATABASE=LOCOSYS Technology Inc.
+
+OUI:2047ED*
+ ID_OUI_FROM_DATABASE=BSkyB Ltd
+
+OUI:D41D71*
+ ID_OUI_FROM_DATABASE=Palo Alto Networks
+
+OUI:5C2443*
+ ID_OUI_FROM_DATABASE=O-Sung Telecom Co., Ltd.
+
+OUI:1861C7*
+ ID_OUI_FROM_DATABASE=lemonbeat GmbH
+
+OUI:9CDC71*
+ ID_OUI_FROM_DATABASE=Hewlett Packard Enterprise
+
+OUI:240D65*
+ ID_OUI_FROM_DATABASE=Shenzhen Vsun Communication Technology Co., Ltd.
+
+OUI:D8452B*
+ ID_OUI_FROM_DATABASE=Integrated Device Technology (Malaysia) Sdn. Bhd.
+
+OUI:C8028F*
+ ID_OUI_FROM_DATABASE=Nova Electronics (Shanghai) Co., Ltd.
OUI:60EFC6*
ID_OUI_FROM_DATABASE=Shenzhen Chima Technologies Co Limited
@@ -74813,12 +76829,21 @@ OUI:20DBAB*
OUI:000DF0*
ID_OUI_FROM_DATABASE=QCOM TECHNOLOGY INC.
+OUI:5C9960*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
OUI:5CF7E6*
ID_OUI_FROM_DATABASE=Apple, Inc.
OUI:A0D795*
ID_OUI_FROM_DATABASE=Apple, Inc.
+OUI:CC088D*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:0080FB*
+ ID_OUI_FROM_DATABASE=BVM LIMITED
+
OUI:002722*
ID_OUI_FROM_DATABASE=Ubiquiti Networks Inc.
@@ -74831,9 +76856,6 @@ OUI:B4FBE4*
OUI:188B15*
ID_OUI_FROM_DATABASE=ShenZhen ZhongRuiJing Technology co.,LTD
-OUI:CCB0DA*
- ID_OUI_FROM_DATABASE=Liteon Technology Corporation
-
OUI:E02CF3*
ID_OUI_FROM_DATABASE=MRS Electronic GmbH
@@ -74851,3 +76873,156 @@ OUI:C0854C*
OUI:00FD45*
ID_OUI_FROM_DATABASE=Hewlett Packard Enterprise
+
+OUI:9C83BF*
+ ID_OUI_FROM_DATABASE=PRO-VISION, Inc.
+
+OUI:9C13AB*
+ ID_OUI_FROM_DATABASE=Chanson Water Co., Ltd.
+
+OUI:883C1C*
+ ID_OUI_FROM_DATABASE=MERCURY CORPORATION
+
+OUI:9C5D12*
+ ID_OUI_FROM_DATABASE=Aerohive Networks Inc.
+
+OUI:001F82*
+ ID_OUI_FROM_DATABASE=Cal-Comp Electronics & Communications Company Ltd.
+
+OUI:E47DBD*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:0C0227*
+ ID_OUI_FROM_DATABASE=Technicolor CH USA Inc.
+
+OUI:C0288D*
+ ID_OUI_FROM_DATABASE=Logitech, Inc
+
+OUI:9C1E95*
+ ID_OUI_FROM_DATABASE=Actiontec Electronics, Inc
+
+OUI:E078A3*
+ ID_OUI_FROM_DATABASE=Shanghai Winner Information Technology Co.,Inc
+
+OUI:B49691*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
+OUI:9CD9CB*
+ ID_OUI_FROM_DATABASE=Lesira Manufacturing Pty Ltd
+
+OUI:34D270*
+ ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
+
+OUI:002590*
+ ID_OUI_FROM_DATABASE=Super Micro Computer, Inc.
+
+OUI:187532*
+ ID_OUI_FROM_DATABASE=SICHUAN TIANYI COMHEART TELECOMCO., LTD
+
+OUI:E0DCA0*
+ ID_OUI_FROM_DATABASE=Siemens Industrial Automation Products Ltd Chengdu
+
+OUI:DCD255*
+ ID_OUI_FROM_DATABASE=Kinpo Electronics, Inc.
+
+OUI:805A04*
+ ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
+
+OUI:B0EE7B*
+ ID_OUI_FROM_DATABASE=Roku, Inc
+
+OUI:E8EADA*
+ ID_OUI_FROM_DATABASE=Denkovi Assembly Electronics LTD
+
+OUI:480C49*
+ ID_OUI_FROM_DATABASE=NAKAYO Inc
+
+OUI:00D0EC*
+ ID_OUI_FROM_DATABASE=NAKAYO Inc
+
+OUI:B0702D*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:D0C5F3*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:60F445*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:00B362*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:F86214*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:C0E54E*
+ ID_OUI_FROM_DATABASE=ARIES Embedded GmbH
+
+OUI:001D72*
+ ID_OUI_FROM_DATABASE=Wistron Corporation
+
+OUI:0C73BE*
+ ID_OUI_FROM_DATABASE=Dongguan Haimai Electronie Technology Co.,Ltd
+
+OUI:20780B*
+ ID_OUI_FROM_DATABASE=Delta Faucet Company
+
+OUI:24D51C*
+ ID_OUI_FROM_DATABASE=Zhongtian broadband technology co., LTD
+
+OUI:E44790*
+ ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+
+OUI:28FECD*
+ ID_OUI_FROM_DATABASE=Lemobile Information Technology (Beijing) Co., Ltd.
+
+OUI:001992*
+ ID_OUI_FROM_DATABASE=Adtran Inc
+
+OUI:002365*
+ ID_OUI_FROM_DATABASE=Insta Elektro GmbH
+
+OUI:4C1694*
+ ID_OUI_FROM_DATABASE=shenzhen sibituo Technology Co., Ltd
+
+OUI:6C160E*
+ ID_OUI_FROM_DATABASE=ShotTracker
+
+OUI:7C1015*
+ ID_OUI_FROM_DATABASE=Brilliant Home Technology, Inc.
+
+OUI:4C7872*
+ ID_OUI_FROM_DATABASE=Cav. Uff. Giacomo Cimberio S.p.A.
+
+OUI:5CAF06*
+ ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
+
+OUI:78C1A7*
+ ID_OUI_FROM_DATABASE=zte corporation
+
+OUI:540384*
+ ID_OUI_FROM_DATABASE=Hangkong Nano IC Technologies Co., Ltd
+
+OUI:004BF3*
+ ID_OUI_FROM_DATABASE=SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.
+
+OUI:28A24B*
+ ID_OUI_FROM_DATABASE=Juniper Networks
+
+OUI:044E06*
+ ID_OUI_FROM_DATABASE=Ericsson AB
+
+OUI:001BB5*
+ ID_OUI_FROM_DATABASE=Cherry GmbH
+
+OUI:6014B3*
+ ID_OUI_FROM_DATABASE=CyberTAN Technology Inc.
+
+OUI:602103*
+ ID_OUI_FROM_DATABASE=I4VINE, INC
+
+OUI:B81DAA*
+ ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
+
+OUI:407D0F*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
diff --git a/hwdb/20-acpi-vendor.hwdb b/hwdb/20-acpi-vendor.hwdb
index 3731b33656..c0fe421c11 100644
--- a/hwdb/20-acpi-vendor.hwdb
+++ b/hwdb/20-acpi-vendor.hwdb
@@ -9,6 +9,9 @@
acpi:3NOD*:
ID_VENDOR_FROM_DATABASE=Shenzhen three Connaught Information Technology Co., Ltd. (3nod Group)
+acpi:AANT*:
+ ID_VENDOR_FROM_DATABASE=AAEON Technology Inc.
+
acpi:AAVA*:
ID_VENDOR_FROM_DATABASE=Aava Mobile Oy
@@ -72,6 +75,9 @@ acpi:FRSC*:
acpi:FTSC*:
ID_VENDOR_FROM_DATABASE=FocalTech Systems Co., Ltd.
+acpi:GHSW*:
+ ID_VENDOR_FROM_DATABASE=Green Hills Software
+
acpi:GOOG*:
ID_VENDOR_FROM_DATABASE=Google, Inc.
@@ -126,6 +132,9 @@ acpi:LNRO*:
acpi:LNUX*:
ID_VENDOR_FROM_DATABASE=The Linux Foundation
+acpi:MCHP*:
+ ID_VENDOR_FROM_DATABASE=Microchip Technology Inc
+
acpi:MIPI*:
ID_VENDOR_FROM_DATABASE=MIPI Alliance
@@ -228,6 +237,9 @@ acpi:AAE*:
acpi:AAM*:
ID_VENDOR_FROM_DATABASE=Aava Mobile Oy
+acpi:AAN*:
+ ID_VENDOR_FROM_DATABASE=AAEON Technology Inc.
+
acpi:AAT*:
ID_VENDOR_FROM_DATABASE=Ann Arbor Technologies
@@ -880,6 +892,9 @@ acpi:AXC*:
ID_VENDOR_FROM_DATABASE=AXIOMTEK CO., LTD.
acpi:AXE*:
+ ID_VENDOR_FROM_DATABASE=Axell Corporation
+
+acpi:AXE*:
ID_VENDOR_FROM_DATABASE=D-Link Systems Inc
acpi:AXI*:
@@ -3684,6 +3699,9 @@ acpi:KOW*:
acpi:KPC*:
ID_VENDOR_FROM_DATABASE=King Phoenix Company
+acpi:KPT*:
+ ID_VENDOR_FROM_DATABASE=TPK Holding Co., Ltd
+
acpi:KRL*:
ID_VENDOR_FROM_DATABASE=Krell Industries Inc.
@@ -6420,6 +6438,9 @@ acpi:TDC*:
acpi:TDD*:
ID_VENDOR_FROM_DATABASE=Tandberg Data Display AS
+acpi:TDG*:
+ ID_VENDOR_FROM_DATABASE=Six15 Technologies
+
acpi:TDK*:
ID_VENDOR_FROM_DATABASE=TDK USA Corporation
@@ -6858,6 +6879,9 @@ acpi:UMG*:
acpi:UMM*:
ID_VENDOR_FROM_DATABASE=Universal Multimedia
+acpi:UMT*:
+ ID_VENDOR_FROM_DATABASE=UltiMachine
+
acpi:UNA*:
ID_VENDOR_FROM_DATABASE=Unisys DSD
diff --git a/hwdb/20-pci-vendor-model.hwdb b/hwdb/20-pci-vendor-model.hwdb
index 0c829c8aec..ea190ff7ca 100644
--- a/hwdb/20-pci-vendor-model.hwdb
+++ b/hwdb/20-pci-vendor-model.hwdb
@@ -644,6 +644,60 @@ pci:v00001000d00000013*
pci:v00001000d00000013sv00001000sd00001000*
ID_MODEL_FROM_DATABASE=53c875a (LSI53C875A PCI to Ultra SCSI Controller)
+pci:v00001000d00000014*
+ ID_MODEL_FROM_DATABASE=MegaRAID Tri-Mode SAS3516
+
+pci:v00001000d00000014sv00001028sd00001FD4*
+ ID_MODEL_FROM_DATABASE=MegaRAID Tri-Mode SAS3516 (PERC H745P MX)
+
+pci:v00001000d00000014sv00001D49sd00000602*
+ ID_MODEL_FROM_DATABASE=MegaRAID Tri-Mode SAS3516 (ThinkSystem RAID 930-16i 4GB Flash PCIe 12Gb Adapter)
+
+pci:v00001000d00000016*
+ ID_MODEL_FROM_DATABASE=MegaRAID Tri-Mode SAS3508
+
+pci:v00001000d00000016sv00001028sd00001FC9*
+ ID_MODEL_FROM_DATABASE=MegaRAID Tri-Mode SAS3508 (PERC H840 Adapter)
+
+pci:v00001000d00000016sv00001028sd00001FCB*
+ ID_MODEL_FROM_DATABASE=MegaRAID Tri-Mode SAS3508 (PERC H740P Adapter)
+
+pci:v00001000d00000016sv00001028sd00001FCD*
+ ID_MODEL_FROM_DATABASE=MegaRAID Tri-Mode SAS3508 (PERC H740P Mini)
+
+pci:v00001000d00000016sv00001028sd00001FCF*
+ ID_MODEL_FROM_DATABASE=MegaRAID Tri-Mode SAS3508 (PERC H740P Mini)
+
+pci:v00001000d00000016sv00001D49sd00000601*
+ ID_MODEL_FROM_DATABASE=MegaRAID Tri-Mode SAS3508 (ThinkSystem RAID 930-8i 2GB Flash PCIe 12Gb Adapter)
+
+pci:v00001000d00000016sv00001D49sd00000603*
+ ID_MODEL_FROM_DATABASE=MegaRAID Tri-Mode SAS3508 (ThinkSystem RAID 930-24i 4GB Flash PCIe 12Gb Adapter)
+
+pci:v00001000d00000016sv00001D49sd00000604*
+ ID_MODEL_FROM_DATABASE=MegaRAID Tri-Mode SAS3508 (ThinkSystem RAID 930-8e 4GB Flash PCIe 12Gb Adapter)
+
+pci:v00001000d00000017*
+ ID_MODEL_FROM_DATABASE=MegaRAID Tri-Mode SAS3408
+
+pci:v00001000d00000017sv00001D49sd00000500*
+ ID_MODEL_FROM_DATABASE=MegaRAID Tri-Mode SAS3408 (ThinkSystem RAID 530-8i PCIe 12Gb Adapter)
+
+pci:v00001000d00000017sv00001D49sd00000502*
+ ID_MODEL_FROM_DATABASE=MegaRAID Tri-Mode SAS3408 (ThinkSystem RAID 530-8i Dense Adapter)
+
+pci:v00001000d0000001B*
+ ID_MODEL_FROM_DATABASE=MegaRAID Tri-Mode SAS3504
+
+pci:v00001000d0000001Bsv00001D49sd00000605*
+ ID_MODEL_FROM_DATABASE=MegaRAID Tri-Mode SAS3504 (ThinkSystem RAID 930-4i 2GB Flash Flex Adapter)
+
+pci:v00001000d0000001C*
+ ID_MODEL_FROM_DATABASE=MegaRAID Tri-Mode SAS3404
+
+pci:v00001000d0000001Csv00001D49sd00000501*
+ ID_MODEL_FROM_DATABASE=MegaRAID Tri-Mode SAS3404 (ThinkSystem RAID 530-4i Flex Adapter)
+
pci:v00001000d00000020*
ID_MODEL_FROM_DATABASE=53c1010 Ultra3 SCSI Adapter
@@ -962,6 +1016,12 @@ pci:v00001000d0000005D*
pci:v00001000d0000005Dsv00001000sd00009361*
ID_MODEL_FROM_DATABASE=MegaRAID SAS-3 3108 [Invader] (MegaRAID SAS 9361-8i)
+pci:v00001000d0000005Dsv00001000sd00009364*
+ ID_MODEL_FROM_DATABASE=MegaRAID SAS-3 3108 [Invader] (MegaRAID SAS 9364-8i)
+
+pci:v00001000d0000005Dsv00001000sd0000936A*
+ ID_MODEL_FROM_DATABASE=MegaRAID SAS-3 3108 [Invader] (MegaRAID SAS 9364-8i)
+
pci:v00001000d0000005Dsv00001028sd00001F41*
ID_MODEL_FROM_DATABASE=MegaRAID SAS-3 3108 [Invader] (PERC H830 Adapter)
@@ -992,12 +1052,18 @@ pci:v00001000d0000005Dsv00001028sd00001F4F*
pci:v00001000d0000005Dsv00001028sd00001F54*
ID_MODEL_FROM_DATABASE=MegaRAID SAS-3 3108 [Invader] (PERC FD33xD)
+pci:v00001000d0000005Dsv00001028sd00001FD1*
+ ID_MODEL_FROM_DATABASE=MegaRAID SAS-3 3108 [Invader] (PERC H730P MX)
+
pci:v00001000d0000005Dsv000017AAsd00001052*
ID_MODEL_FROM_DATABASE=MegaRAID SAS-3 3108 [Invader] (ThinkServer RAID 720i)
pci:v00001000d0000005Dsv000017AAsd00001053*
ID_MODEL_FROM_DATABASE=MegaRAID SAS-3 3108 [Invader] (ThinkServer RAID 720ix)
+pci:v00001000d0000005Dsv00001D49sd00000600*
+ ID_MODEL_FROM_DATABASE=MegaRAID SAS-3 3108 [Invader] (ThinkSystem RAID 730-8i 1GB Cache PCIe 12Gb Adapter)
+
pci:v00001000d0000005E*
ID_MODEL_FROM_DATABASE=SAS1066 PCI-X Fusion-MPT SAS
@@ -1427,6 +1493,9 @@ pci:v00001000d00000087sv00001000sd00003020*
pci:v00001000d00000087sv00001000sd00003040*
ID_MODEL_FROM_DATABASE=SAS2308 PCI-Express Fusion-MPT SAS-2 (9207-8e SAS2.1 HBA)
+pci:v00001000d00000087sv00001000sd00003050*
+ ID_MODEL_FROM_DATABASE=SAS2308 PCI-Express Fusion-MPT SAS-2 (SAS9217-8i)
+
pci:v00001000d00000087sv00001590sd00000044*
ID_MODEL_FROM_DATABASE=SAS2308 PCI-Express Fusion-MPT SAS-2 (H220i)
@@ -1457,12 +1526,57 @@ pci:v00001000d00000096*
pci:v00001000d00000097*
ID_MODEL_FROM_DATABASE=SAS3008 PCI-Express Fusion-MPT SAS-3
+pci:v00001000d00000097sv00001000sd00003090*
+ ID_MODEL_FROM_DATABASE=SAS3008 PCI-Express Fusion-MPT SAS-3 (SAS9311-8i)
+
+pci:v00001000d00000097sv00001000sd000030E0*
+ ID_MODEL_FROM_DATABASE=SAS3008 PCI-Express Fusion-MPT SAS-3 (SAS9300-8i)
+
pci:v00001000d00000097sv00001028sd00001F45*
- ID_MODEL_FROM_DATABASE=SAS3008 PCI-Express Fusion-MPT SAS-3 (12GB/s HBA internal)
+ ID_MODEL_FROM_DATABASE=SAS3008 PCI-Express Fusion-MPT SAS-3 (HBA330 Adapter)
pci:v00001000d00000097sv00001028sd00001F46*
ID_MODEL_FROM_DATABASE=SAS3008 PCI-Express Fusion-MPT SAS-3 (12Gbps HBA)
+pci:v00001000d00000097sv00001028sd00001F53*
+ ID_MODEL_FROM_DATABASE=SAS3008 PCI-Express Fusion-MPT SAS-3 (HBA330 Mini)
+
+pci:v00001000d00000097sv00001028sd00001FD2*
+ ID_MODEL_FROM_DATABASE=SAS3008 PCI-Express Fusion-MPT SAS-3 (HBA330 MX)
+
+pci:v00001000d00000097sv00001028sd00001FD3*
+ ID_MODEL_FROM_DATABASE=SAS3008 PCI-Express Fusion-MPT SAS-3 (HBA330 MMZ)
+
+pci:v00001000d000000AB*
+ ID_MODEL_FROM_DATABASE=SAS3516 Fusion-MPT Tri-Mode RAID On Chip (ROC)
+
+pci:v00001000d000000AC*
+ ID_MODEL_FROM_DATABASE=SAS3416 Fusion-MPT Tri-Mode I/O Controller Chip (IOC)
+
+pci:v00001000d000000ACsv00001D49sd00000201*
+ ID_MODEL_FROM_DATABASE=SAS3416 Fusion-MPT Tri-Mode I/O Controller Chip (IOC) (ThinkSystem 9400-16i PCIe 12Gb HBA)
+
+pci:v00001000d000000ACsv00001D49sd00000203*
+ ID_MODEL_FROM_DATABASE=SAS3416 Fusion-MPT Tri-Mode I/O Controller Chip (IOC) (ThinkSystem 9400-16e PCIe 12Gb HBA)
+
+pci:v00001000d000000AE*
+ ID_MODEL_FROM_DATABASE=SAS3508 Fusion-MPT Tri-Mode RAID On Chip (ROC)
+
+pci:v00001000d000000AF*
+ ID_MODEL_FROM_DATABASE=SAS3408 Fusion-MPT Tri-Mode I/O Controller Chip (IOC)
+
+pci:v00001000d000000AFsv00001D49sd00000200*
+ ID_MODEL_FROM_DATABASE=SAS3408 Fusion-MPT Tri-Mode I/O Controller Chip (IOC) (ThinkSystem 9400-8i PCIe 12Gb HBA)
+
+pci:v00001000d000000AFsv00001D49sd00000202*
+ ID_MODEL_FROM_DATABASE=SAS3408 Fusion-MPT Tri-Mode I/O Controller Chip (IOC) (ThinkSystem 9400-8e PCIe 12Gb HBA)
+
+pci:v00001000d000000BE*
+ ID_MODEL_FROM_DATABASE=SAS3504 Fusion-MPT Tri-Mode RAID On Chip (ROC)
+
+pci:v00001000d000000BF*
+ ID_MODEL_FROM_DATABASE=SAS3404 Fusion-MPT Tri-Mode I/O Controller Chip (IOC)
+
pci:v00001000d000000C0*
ID_MODEL_FROM_DATABASE=SAS3324 PCI-Express Fusion-MPT SAS-3
@@ -1508,6 +1622,15 @@ pci:v00001000d000000CF*
pci:v00001000d000000CFsv00001000sd00009370*
ID_MODEL_FROM_DATABASE=MegaRAID SAS-3 3324 [Intruder] (MegaRAID SAS 9361-24i)
+pci:v00001000d000000D0*
+ ID_MODEL_FROM_DATABASE=SAS3716 Fusion-MPT Tri-Mode RAID Controller Chip (ROC)
+
+pci:v00001000d000000D1*
+ ID_MODEL_FROM_DATABASE=SAS3616 Fusion-MPT Tri-Mode I/O Controller Chip (IOC)
+
+pci:v00001000d000000D3*
+ ID_MODEL_FROM_DATABASE=MegaRAID Tri-Mode SAS3716W
+
pci:v00001000d00000407*
ID_MODEL_FROM_DATABASE=MegaRAID
@@ -4560,31 +4683,34 @@ pci:v00001002d0000665Fsv00001682sd00007360*
ID_MODEL_FROM_DATABASE=Tobago PRO [Radeon R7 360 / R9 360 OEM] (Radeon R7 360)
pci:v00001002d00006660*
- ID_MODEL_FROM_DATABASE=Sun XT [Radeon HD 8670A/8670M/8690M / R5 M330]
+ ID_MODEL_FROM_DATABASE=Sun XT [Radeon HD 8670A/8670M/8690M / R5 M330 / M430]
pci:v00001002d00006660sv00001028sd000005EA*
- ID_MODEL_FROM_DATABASE=Sun XT [Radeon HD 8670A/8670M/8690M / R5 M330] (Radeon HD 8670M)
+ ID_MODEL_FROM_DATABASE=Sun XT [Radeon HD 8670A/8670M/8690M / R5 M330 / M430] (Radeon HD 8670M)
pci:v00001002d00006660sv00001028sd000006BF*
- ID_MODEL_FROM_DATABASE=Sun XT [Radeon HD 8670A/8670M/8690M / R5 M330] (Radeon R5 M335)
+ ID_MODEL_FROM_DATABASE=Sun XT [Radeon HD 8670A/8670M/8690M / R5 M330 / M430] (Radeon R5 M335)
pci:v00001002d00006660sv0000103Csd00001970*
- ID_MODEL_FROM_DATABASE=Sun XT [Radeon HD 8670A/8670M/8690M / R5 M330] (Radeon HD 8670M)
+ ID_MODEL_FROM_DATABASE=Sun XT [Radeon HD 8670A/8670M/8690M / R5 M330 / M430] (Radeon HD 8670M)
pci:v00001002d00006660sv0000103Csd000080BE*
- ID_MODEL_FROM_DATABASE=Sun XT [Radeon HD 8670A/8670M/8690M / R5 M330] (Radeon R5 M330)
+ ID_MODEL_FROM_DATABASE=Sun XT [Radeon HD 8670A/8670M/8690M / R5 M330 / M430] (Radeon R5 M330)
pci:v00001002d00006660sv0000103Csd00008136*
- ID_MODEL_FROM_DATABASE=Sun XT [Radeon HD 8670A/8670M/8690M / R5 M330] (Radeon R5 M330)
+ ID_MODEL_FROM_DATABASE=Sun XT [Radeon HD 8670A/8670M/8690M / R5 M330 / M430] (Radeon R5 M330)
pci:v00001002d00006660sv000017AAsd00003804*
- ID_MODEL_FROM_DATABASE=Sun XT [Radeon HD 8670A/8670M/8690M / R5 M330] (Radeon R5 M330)
+ ID_MODEL_FROM_DATABASE=Sun XT [Radeon HD 8670A/8670M/8690M / R5 M330 / M430] (Radeon R5 M330)
pci:v00001002d00006660sv000017AAsd00003809*
- ID_MODEL_FROM_DATABASE=Sun XT [Radeon HD 8670A/8670M/8690M / R5 M330] (Radeon R5 M330)
+ ID_MODEL_FROM_DATABASE=Sun XT [Radeon HD 8670A/8670M/8690M / R5 M330 / M430] (Radeon R5 M330)
+
+pci:v00001002d00006660sv000017AAsd0000381A*
+ ID_MODEL_FROM_DATABASE=Sun XT [Radeon HD 8670A/8670M/8690M / R5 M330 / M430] (Radeon R5 M430)
pci:v00001002d00006660sv000017AAsd0000390C*
- ID_MODEL_FROM_DATABASE=Sun XT [Radeon HD 8670A/8670M/8690M / R5 M330] (Radeon R5 M330)
+ ID_MODEL_FROM_DATABASE=Sun XT [Radeon HD 8670A/8670M/8690M / R5 M330 / M430] (Radeon R5 M330)
pci:v00001002d00006663*
ID_MODEL_FROM_DATABASE=Sun PRO [Radeon HD 8570A/8570M]
@@ -4592,6 +4718,9 @@ pci:v00001002d00006663*
pci:v00001002d00006663sv00001025sd00000846*
ID_MODEL_FROM_DATABASE=Sun PRO [Radeon HD 8570A/8570M] (Radeon HD 8570A)
+pci:v00001002d00006663sv000017AAsd00003805*
+ ID_MODEL_FROM_DATABASE=Sun PRO [Radeon HD 8570A/8570M] (Radeon HD 8570M)
+
pci:v00001002d00006664*
ID_MODEL_FROM_DATABASE=Jet XT [Radeon R5 M240]
@@ -6348,7 +6477,49 @@ pci:v00001002d000067C0*
ID_MODEL_FROM_DATABASE=Ellesmere [Polaris10]
pci:v00001002d000067DF*
- ID_MODEL_FROM_DATABASE=Ellesmere [Radeon RX 480]
+ ID_MODEL_FROM_DATABASE=Ellesmere [Radeon RX 470/480]
+
+pci:v00001002d000067DFsv00001002sd00000B37*
+ ID_MODEL_FROM_DATABASE=Ellesmere [Radeon RX 470/480] (Radeon RX 480)
+
+pci:v00001002d000067DFsv00001043sd000004A8*
+ ID_MODEL_FROM_DATABASE=Ellesmere [Radeon RX 470/480] (Radeon RX 480)
+
+pci:v00001002d000067DFsv00001043sd000004B0*
+ ID_MODEL_FROM_DATABASE=Ellesmere [Radeon RX 470/480] (Radeon RX 470)
+
+pci:v00001002d000067DFsv00001043sd000004FB*
+ ID_MODEL_FROM_DATABASE=Ellesmere [Radeon RX 470/480] (Radeon RX 480)
+
+pci:v00001002d000067DFsv00001462sd00003411*
+ ID_MODEL_FROM_DATABASE=Ellesmere [Radeon RX 470/480] (Radeon RX 470)
+
+pci:v00001002d000067DFsv00001462sd00003413*
+ ID_MODEL_FROM_DATABASE=Ellesmere [Radeon RX 470/480] (Radeon RX 480)
+
+pci:v00001002d000067DFsv0000148Csd00002372*
+ ID_MODEL_FROM_DATABASE=Ellesmere [Radeon RX 470/480] (Radeon RX 480)
+
+pci:v00001002d000067DFsv0000148Csd00002373*
+ ID_MODEL_FROM_DATABASE=Ellesmere [Radeon RX 470/480] (Radeon RX 470)
+
+pci:v00001002d000067DFsv00001682sd00009470*
+ ID_MODEL_FROM_DATABASE=Ellesmere [Radeon RX 470/480] (Radeon RX 470)
+
+pci:v00001002d000067DFsv00001682sd00009480*
+ ID_MODEL_FROM_DATABASE=Ellesmere [Radeon RX 470/480] (Radeon RX 480)
+
+pci:v00001002d000067DFsv0000174Bsd0000E347*
+ ID_MODEL_FROM_DATABASE=Ellesmere [Radeon RX 470/480] (Radeon RX 470/480)
+
+pci:v00001002d000067DFsv0000174Bsd0000E349*
+ ID_MODEL_FROM_DATABASE=Ellesmere [Radeon RX 470/480] (Radeon RX 470)
+
+pci:v00001002d000067DFsv00001787sd0000A470*
+ ID_MODEL_FROM_DATABASE=Ellesmere [Radeon RX 470/480] (Radeon RX 470)
+
+pci:v00001002d000067DFsv00001787sd0000A480*
+ ID_MODEL_FROM_DATABASE=Ellesmere [Radeon RX 470/480] (Radeon RX 480)
pci:v00001002d000067E0*
ID_MODEL_FROM_DATABASE=Baffin [Polaris11]
@@ -6365,6 +6536,9 @@ pci:v00001002d000067E9*
pci:v00001002d000067EB*
ID_MODEL_FROM_DATABASE=Baffin [Polaris11]
+pci:v00001002d000067EF*
+ ID_MODEL_FROM_DATABASE=Baffin [Radeon RX 460]
+
pci:v00001002d000067FF*
ID_MODEL_FROM_DATABASE=Baffin [Polaris11]
@@ -8328,76 +8502,82 @@ pci:v00001002d000068FE*
ID_MODEL_FROM_DATABASE=Cedar LE
pci:v00001002d00006900*
- ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360]
+ ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360 / M440/M445]
pci:v00001002d00006900sv00001025sd00001056*
- ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360] (Radeon R7 M360 / R8 M365DX)
+ ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360 / M440/M445] (Radeon R7 M360 / R8 M365DX)
pci:v00001002d00006900sv00001028sd00000640*
- ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360] (Radeon R7 M260/M265)
+ ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360 / M440/M445] (Radeon R7 M260/M265)
pci:v00001002d00006900sv00001028sd00000643*
- ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360] (Radeon R7 M260/M265)
+ ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360 / M440/M445] (Radeon R7 M260/M265)
pci:v00001002d00006900sv00001028sd0000067F*
- ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360] (Radeon R7 M260)
+ ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360 / M440/M445] (Radeon R7 M260)
+
+pci:v00001002d00006900sv00001028sd00000767*
+ ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360 / M440/M445] (Radeon R7 M445)
pci:v00001002d00006900sv00001028sd0000130A*
- ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360] (Radeon R7 M260)
+ ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360 / M440/M445] (Radeon R7 M260)
pci:v00001002d00006900sv0000103Csd00002263*
- ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360] (Radeon R7 M260)
+ ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360 / M440/M445] (Radeon R7 M260)
pci:v00001002d00006900sv0000103Csd00002269*
- ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360] (Radeon R7 M260)
+ ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360 / M440/M445] (Radeon R7 M260)
pci:v00001002d00006900sv0000103Csd000022C6*
- ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360] (Radeon R7 M260)
+ ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360 / M440/M445] (Radeon R7 M260)
pci:v00001002d00006900sv0000103Csd000022C8*
- ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360] (Radeon R7 M260)
+ ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360 / M440/M445] (Radeon R7 M260)
pci:v00001002d00006900sv0000103Csd0000808C*
- ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360] (Radeon R7 M260)
+ ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360 / M440/M445] (Radeon R7 M260)
pci:v00001002d00006900sv0000103Csd00008099*
- ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360] (Radeon R7 M360)
+ ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360 / M440/M445] (Radeon R7 M360)
pci:v00001002d00006900sv0000103Csd000080B5*
- ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360] (Radeon R7 M360)
+ ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360 / M440/M445] (Radeon R7 M360)
pci:v00001002d00006900sv0000103Csd000080B9*
- ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360] (Radeon R7 M360)
+ ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360 / M440/M445] (Radeon R7 M360)
pci:v00001002d00006900sv0000103Csd0000811C*
- ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360] (Radeon R7 M340)
+ ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360 / M440/M445] (Radeon R7 M340)
+
+pci:v00001002d00006900sv0000103Csd00008226*
+ ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360 / M440/M445] (Radeon R7 M440)
pci:v00001002d00006900sv000010CFsd00001906*
- ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360] (Radeon R7 M260)
+ ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360 / M440/M445] (Radeon R7 M260)
pci:v00001002d00006900sv00001170sd00009979*
- ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360] (Radeon R7 M360)
+ ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360 / M440/M445] (Radeon R7 M360)
pci:v00001002d00006900sv00001179sd0000F903*
- ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360] (Radeon R7 M260)
+ ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360 / M440/M445] (Radeon R7 M260)
pci:v00001002d00006900sv00001179sd0000F922*
- ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360] (Radeon R7 M260)
+ ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360 / M440/M445] (Radeon R7 M260)
pci:v00001002d00006900sv00001179sd0000F923*
- ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360] (Radeon R7 M260)
+ ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360 / M440/M445] (Radeon R7 M260)
pci:v00001002d00006900sv00001179sd0000F934*
- ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360] (Radeon R7 M260)
+ ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360 / M440/M445] (Radeon R7 M260)
pci:v00001002d00006900sv000017AAsd00003822*
- ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360] (Radeon R7 M360)
+ ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360 / M440/M445] (Radeon R7 M360)
pci:v00001002d00006900sv000017AAsd00003824*
- ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360] (Radeon R7 M360)
+ ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360 / M440/M445] (Radeon R7 M360)
pci:v00001002d00006900sv000017AAsd00005021*
- ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360] (Radeon R7 M260)
+ ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260/M265 / M340/M360 / M440/M445] (Radeon R7 M260)
pci:v00001002d00006901*
ID_MODEL_FROM_DATABASE=Topaz PRO [Radeon R5 M255]
@@ -8405,6 +8585,9 @@ pci:v00001002d00006901*
pci:v00001002d00006901sv0000103Csd00001318*
ID_MODEL_FROM_DATABASE=Topaz PRO [Radeon R5 M255] (Radeon R6 M255DX)
+pci:v00001002d00006907*
+ ID_MODEL_FROM_DATABASE=Meso XT [Radeon R5 M315]
+
pci:v00001002d00006921*
ID_MODEL_FROM_DATABASE=Amethyst XT [Radeon R9 M295X]
@@ -8819,6 +9002,9 @@ pci:v00001002d00007300*
pci:v00001002d00007300sv00001002sd00000B36*
ID_MODEL_FROM_DATABASE=Fiji [Radeon R9 FURY / NANO Series] (Radeon R9 FURY X / NANO)
+pci:v00001002d00007300sv00001002sd00001B36*
+ ID_MODEL_FROM_DATABASE=Fiji [Radeon R9 FURY / NANO Series] (Radeon Pro Duo)
+
pci:v00001002d00007300sv00001043sd0000049E*
ID_MODEL_FROM_DATABASE=Fiji [Radeon R9 FURY / NANO Series] (Radeon R9 FURY)
@@ -9387,7 +9573,7 @@ pci:v00001002d000095CF*
ID_MODEL_FROM_DATABASE=RV620 GL [FirePro 2260]
pci:v00001002d0000960F*
- ID_MODEL_FROM_DATABASE=RS780 HDMI Audio [Radeon (HD) 3000 Series]
+ ID_MODEL_FROM_DATABASE=RS780 HDMI Audio [Radeon 3000/3100 / HD 3200/3300]
pci:v00001002d00009610*
ID_MODEL_FROM_DATABASE=RS780 [Radeon HD 3200]
@@ -9684,7 +9870,7 @@ pci:v00001002d00009919*
ID_MODEL_FROM_DATABASE=Trinity [Radeon HD 7500G]
pci:v00001002d00009920*
- ID_MODEL_FROM_DATABASE=Liverpool Graphics
+ ID_MODEL_FROM_DATABASE=Liverpool [Playstation 4 APU]
pci:v00001002d00009921*
ID_MODEL_FROM_DATABASE=Liverpool HDMI/DP Audio Controller
@@ -9741,28 +9927,31 @@ pci:v00001002d000099A4*
ID_MODEL_FROM_DATABASE=Trinity [Radeon HD 7400G]
pci:v00001002d0000AA00*
- ID_MODEL_FROM_DATABASE=R600 HDMI Audio [Radeon HD 2900 Series]
+ ID_MODEL_FROM_DATABASE=R600 HDMI Audio [Radeon HD 2900 GT/PRO/XT]
+
+pci:v00001002d0000AA01*
+ ID_MODEL_FROM_DATABASE=RV635 HDMI Audio [Radeon HD 3650/3730/3750]
pci:v00001002d0000AA08*
- ID_MODEL_FROM_DATABASE=RV630 HDMI Audio [Radeon HD 2600 Series]
+ ID_MODEL_FROM_DATABASE=RV630 HDMI Audio [Radeon HD 2600 PRO/XT / HD 3610]
pci:v00001002d0000AA10*
- ID_MODEL_FROM_DATABASE=RV610 HDMI Audio [Radeon HD 2350/2400 Series]
+ ID_MODEL_FROM_DATABASE=RV610 HDMI Audio [Radeon HD 2350 PRO / 2400 PRO/XT / HD 3410]
pci:v00001002d0000AA10sv0000174Bsd0000AA10*
- ID_MODEL_FROM_DATABASE=RV610 HDMI Audio [Radeon HD 2350/2400 Series] (Radeon HD 2400 PRO)
+ ID_MODEL_FROM_DATABASE=RV610 HDMI Audio [Radeon HD 2350 PRO / 2400 PRO/XT / HD 3410] (Radeon HD 2400 PRO)
pci:v00001002d0000AA10sv000018BCsd0000AA10*
- ID_MODEL_FROM_DATABASE=RV610 HDMI Audio [Radeon HD 2350/2400 Series] (Radeon HD 2400 PRO)
+ ID_MODEL_FROM_DATABASE=RV610 HDMI Audio [Radeon HD 2350 PRO / 2400 PRO/XT / HD 3410] (Radeon HD 2400 PRO)
pci:v00001002d0000AA18*
ID_MODEL_FROM_DATABASE=RV670/680 HDMI Audio [Radeon HD 3690/3800 Series]
pci:v00001002d0000AA20*
- ID_MODEL_FROM_DATABASE=RV635 HDMI Audio [Radeon HD 3600 Series]
+ ID_MODEL_FROM_DATABASE=RV635 HDMI Audio [Radeon HD 3650/3730/3750]
pci:v00001002d0000AA28*
- ID_MODEL_FROM_DATABASE=RV620 HDMI Audio [Radeon HD 3400 Series]
+ ID_MODEL_FROM_DATABASE=RV620 HDMI Audio [Radeon HD 3450/3470/3550/3570]
pci:v00001002d0000AA30*
ID_MODEL_FROM_DATABASE=RV770 HDMI Audio [Radeon HD 4850/4870]
@@ -9777,7 +9966,7 @@ pci:v00001002d0000AA38sv0000103Csd00003628*
ID_MODEL_FROM_DATABASE=RV710/730 HDMI Audio [Radeon HD 4000 series] (dv6-1190en)
pci:v00001002d0000AA50*
- ID_MODEL_FROM_DATABASE=Cypress HDMI Audio [Radeon HD 5800 Series]
+ ID_MODEL_FROM_DATABASE=Cypress HDMI Audio [Radeon HD 5830/5850/5870 / 6850/6870 Rebrand]
pci:v00001002d0000AA58*
ID_MODEL_FROM_DATABASE=Juniper HDMI Audio [Radeon HD 5700 Series]
@@ -9792,31 +9981,31 @@ pci:v00001002d0000AA60sv00001025sd00000347*
ID_MODEL_FROM_DATABASE=Redwood HDMI Audio [Radeon HD 5000 Series] (Aspire 7740G)
pci:v00001002d0000AA68*
- ID_MODEL_FROM_DATABASE=Cedar HDMI Audio [Radeon HD 5400/6300 Series]
+ ID_MODEL_FROM_DATABASE=Cedar HDMI Audio [Radeon HD 5400/6300/7300 Series]
pci:v00001002d0000AA68sv00001028sd0000AA68*
- ID_MODEL_FROM_DATABASE=Cedar HDMI Audio [Radeon HD 5400/6300 Series] (XPS 8300)
+ ID_MODEL_FROM_DATABASE=Cedar HDMI Audio [Radeon HD 5400/6300/7300 Series] (XPS 8300)
pci:v00001002d0000AA80*
- ID_MODEL_FROM_DATABASE=Cayman/Antilles HDMI Audio [Radeon HD 6900 Series]
+ ID_MODEL_FROM_DATABASE=Cayman/Antilles HDMI Audio [Radeon HD 6930/6950/6970/6990]
pci:v00001002d0000AA88*
- ID_MODEL_FROM_DATABASE=Barts HDMI Audio [Radeon HD 6800 Series]
+ ID_MODEL_FROM_DATABASE=Barts HDMI Audio [Radeon HD 6790/6850/6870 / 7720 OEM]
pci:v00001002d0000AA90*
- ID_MODEL_FROM_DATABASE=Turks/Whistler HDMI Audio [Radeon HD 6000 Series]
+ ID_MODEL_FROM_DATABASE=Turks HDMI Audio [Radeon HD 6500/6600 / 6700M Series]
pci:v00001002d0000AA90sv00001028sd000004A3*
- ID_MODEL_FROM_DATABASE=Turks/Whistler HDMI Audio [Radeon HD 6000 Series] (Precision M4600)
+ ID_MODEL_FROM_DATABASE=Turks HDMI Audio [Radeon HD 6500/6600 / 6700M Series] (Precision M4600)
pci:v00001002d0000AA98*
- ID_MODEL_FROM_DATABASE=Caicos HDMI Audio [Radeon HD 6400 Series]
+ ID_MODEL_FROM_DATABASE=Caicos HDMI Audio [Radeon HD 6450 / 7450/8450/8490 OEM / R5 230/235/235X OEM]
pci:v00001002d0000AA98sv0000174Bsd0000AA98*
- ID_MODEL_FROM_DATABASE=Caicos HDMI Audio [Radeon HD 6400 Series] (Radeon HD 6450 1GB DDR3)
+ ID_MODEL_FROM_DATABASE=Caicos HDMI Audio [Radeon HD 6450 / 7450/8450/8490 OEM / R5 230/235/235X OEM] (Radeon HD 6450 1GB DDR3)
pci:v00001002d0000AAA0*
- ID_MODEL_FROM_DATABASE=Tahiti XT HDMI Audio [Radeon HD 7970 Series]
+ ID_MODEL_FROM_DATABASE=Tahiti HDMI Audio [Radeon HD 7870 XT / 7950/7970]
pci:v00001002d0000AAB0*
ID_MODEL_FROM_DATABASE=Cape Verde/Pitcairn HDMI Audio [Radeon HD 7700/7800 Series]
@@ -9825,7 +10014,7 @@ pci:v00001002d0000AAC0*
ID_MODEL_FROM_DATABASE=Tobago HDMI Audio [Radeon R7 360 / R9 360 OEM]
pci:v00001002d0000AAC8*
- ID_MODEL_FROM_DATABASE=Hawaii HDMI Audio
+ ID_MODEL_FROM_DATABASE=Hawaii HDMI Audio [Radeon R9 290/290X / 390/390X]
pci:v00001002d0000AAD8*
ID_MODEL_FROM_DATABASE=Tonga HDMI Audio [Radeon R9 285/380]
@@ -9834,7 +10023,7 @@ pci:v00001002d0000AAD8sv0000174Bsd0000AAD8*
ID_MODEL_FROM_DATABASE=Tonga HDMI Audio [Radeon R9 285/380] (Radeon R9 285/380 HDMI Audio)
pci:v00001002d0000AAE8*
- ID_MODEL_FROM_DATABASE=Fiji HDMI/DP Audio Controller
+ ID_MODEL_FROM_DATABASE=Fiji HDMI/DP Audio [Radeon R9 Nano / FURY/FURY X]
pci:v00001002d0000AC00*
ID_MODEL_FROM_DATABASE=Theater 600 Pro
@@ -13094,6 +13283,21 @@ pci:v0000102Bd00000540sv0000102Bsd00002280*
pci:v0000102Bd00000540sv0000102Bsd000022C0*
ID_MODEL_FROM_DATABASE=M91XX (M9128 LP PCIe x16)
+pci:v0000102Bd00000550*
+ ID_MODEL_FROM_DATABASE=SV2
+
+pci:v0000102Bd00000550sv0000102Bsd000000C0*
+ ID_MODEL_FROM_DATABASE=SV2 (MURA-IPX-I4EF)
+
+pci:v0000102Bd00000550sv0000102Bsd000000C1*
+ ID_MODEL_FROM_DATABASE=SV2 (MURA-IPX-I4DF)
+
+pci:v0000102Bd00000550sv0000102Bsd000000C3*
+ ID_MODEL_FROM_DATABASE=SV2 (MURA-IPX-I4DHF)
+
+pci:v0000102Bd00000550sv0000102Bsd000000C5*
+ ID_MODEL_FROM_DATABASE=SV2 (MURA-IPX-I4EHF)
+
pci:v0000102Bd00000D10*
ID_MODEL_FROM_DATABASE=MGA Ultima/Impression
@@ -21605,6 +21809,9 @@ pci:v000010B5d00008547*
pci:v000010B5d00008548*
ID_MODEL_FROM_DATABASE=PEX 8548 48-lane, 9-port PCI Express Switch
+pci:v000010B5d00008603*
+ ID_MODEL_FROM_DATABASE=PEX 8603 3-lane, 3-Port PCI Express Gen 2 (5.0 GT/s) Switch
+
pci:v000010B5d00008604*
ID_MODEL_FROM_DATABASE=PEX 8604 4-lane, 4-Port PCI Express Gen 2 (5.0 GT/s) Switch
@@ -21683,6 +21890,9 @@ pci:v000010B5d00008717*
pci:v000010B5d00008718*
ID_MODEL_FROM_DATABASE=PEX 8718 16-Lane, 5-Port PCI Express Gen 3 (8.0 GT/s) Switch
+pci:v000010B5d00008724*
+ ID_MODEL_FROM_DATABASE=PEX 8724 24-Lane, 6-Port PCI Express Gen 3 (8 GT/s) Switch, 19 x 19mm FCBGA
+
pci:v000010B5d00008732*
ID_MODEL_FROM_DATABASE=PEX 8732 32-lane, 8-Port PCI Express Gen 3 (8.0 GT/s) Switch
@@ -21692,6 +21902,9 @@ pci:v000010B5d00008734*
pci:v000010B5d00008747*
ID_MODEL_FROM_DATABASE=PEX 8747 48-Lane, 5-Port PCI Express Gen 3 (8.0 GT/s) Switch
+pci:v000010B5d00008748*
+ ID_MODEL_FROM_DATABASE=PEX 8748 48-Lane, 12-Port PCI Express Gen 3 (8 GT/s) Switch, 27 x 27mm FCBGA
+
pci:v000010B5d000087B0*
ID_MODEL_FROM_DATABASE=PEX 8732 32-lane, 8-Port PCI Express Gen 3 (8.0 GT/s) Switch
@@ -22103,6 +22316,9 @@ pci:v000010B5d00009656sv00001885sd00000701*
pci:v000010B5d00009733*
ID_MODEL_FROM_DATABASE=PEX 9733 33-lane, 9-port PCI Express Gen 3 (8.0 GT/s) Switch
+pci:v000010B5d00009733sv00001D49sd00000001*
+ ID_MODEL_FROM_DATABASE=PEX 9733 33-lane, 9-port PCI Express Gen 3 (8.0 GT/s) Switch (ThinkSystem P310W-4P NVMe Switch Card)
+
pci:v000010B5d00009749*
ID_MODEL_FROM_DATABASE=PEX 9749 49-lane, 13-port PCI Express Gen 3 (8.0 GT/s) Switch
@@ -30255,7 +30471,7 @@ pci:v000010DEd00001140sv0000144Dsd0000C10D*
ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
pci:v000010DEd00001140sv0000144Dsd0000C652*
- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M on NP300E5C series laptop)
pci:v000010DEd00001140sv0000144Dsd0000C709*
ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
@@ -31298,6 +31514,9 @@ pci:v000010DEd000013F9*
pci:v000010DEd000013FA*
ID_MODEL_FROM_DATABASE=GM204GLM [Quadro M3000M]
+pci:v000010DEd000013FAsv000010DEsd000011C9*
+ ID_MODEL_FROM_DATABASE=GM204GLM [Quadro M3000M] (Quadro M3000 SE)
+
pci:v000010DEd000013FB*
ID_MODEL_FROM_DATABASE=GM204GLM [Quadro M5500]
@@ -31374,11 +31593,17 @@ pci:v000010DEd000017FD*
ID_MODEL_FROM_DATABASE=GM200GL [Tesla M40]
pci:v000010DEd00001B00*
- ID_MODEL_FROM_DATABASE=GP102
+ ID_MODEL_FROM_DATABASE=GP102 [TITAN X]
pci:v000010DEd00001B01*
ID_MODEL_FROM_DATABASE=GP102
+pci:v000010DEd00001B30*
+ ID_MODEL_FROM_DATABASE=GP102GL [Quadro P6000]
+
+pci:v000010DEd00001B38*
+ ID_MODEL_FROM_DATABASE=GP102GL [Tesla P40]
+
pci:v000010DEd00001B70*
ID_MODEL_FROM_DATABASE=GP102GL
@@ -31397,11 +31622,14 @@ pci:v000010DEd00001B82*
pci:v000010DEd00001B83*
ID_MODEL_FROM_DATABASE=GP104
+pci:v000010DEd00001BA0*
+ ID_MODEL_FROM_DATABASE=GP104M [GeForce GTX 1080]
+
pci:v000010DEd00001BA1*
ID_MODEL_FROM_DATABASE=GP104M [GeForce GTX 1070]
pci:v000010DEd00001BB0*
- ID_MODEL_FROM_DATABASE=GP104GL
+ ID_MODEL_FROM_DATABASE=GP104GL [Quadro P5000]
pci:v000010DEd00001BB1*
ID_MODEL_FROM_DATABASE=GP104GL
@@ -31422,14 +31650,23 @@ pci:v000010DEd00001C01*
ID_MODEL_FROM_DATABASE=GP106
pci:v000010DEd00001C02*
- ID_MODEL_FROM_DATABASE=GP106
+ ID_MODEL_FROM_DATABASE=GP106 [GeForce GTX 1060 3GB]
pci:v000010DEd00001C03*
- ID_MODEL_FROM_DATABASE=GP106 [GeForce GTX 1060]
+ ID_MODEL_FROM_DATABASE=GP106 [GeForce GTX 1060 6GB]
+
+pci:v000010DEd00001C20*
+ ID_MODEL_FROM_DATABASE=GP106M [GeForce GTX 1060]
pci:v000010DEd00001C30*
ID_MODEL_FROM_DATABASE=GP106GL
+pci:v000010DEd00001C35*
+ ID_MODEL_FROM_DATABASE=GP106
+
+pci:v000010DEd00001C60*
+ ID_MODEL_FROM_DATABASE=GP106M [GeForce GTX 1060]
+
pci:v000010DEd00001C70*
ID_MODEL_FROM_DATABASE=GP106GL
@@ -31437,10 +31674,10 @@ pci:v000010DEd00001C80*
ID_MODEL_FROM_DATABASE=GP107
pci:v000010DEd00001C81*
- ID_MODEL_FROM_DATABASE=GP107
+ ID_MODEL_FROM_DATABASE=GP107 [GeForce GTX 1050]
pci:v000010DEd00001C82*
- ID_MODEL_FROM_DATABASE=GP107
+ ID_MODEL_FROM_DATABASE=GP107 [GeForce GTX 1050 Ti]
pci:v000010DEd00001CA7*
ID_MODEL_FROM_DATABASE=GP107GL
@@ -31958,6 +32195,9 @@ pci:v000010ECd0000525A*
pci:v000010ECd00005286*
ID_MODEL_FROM_DATABASE=RTS5286 PCI Express Card Reader
+pci:v000010ECd00005287*
+ ID_MODEL_FROM_DATABASE=RTL8411B PCI Express Card Reader
+
pci:v000010ECd00005288*
ID_MODEL_FROM_DATABASE=RTS5288 PCI Express Card Reader
@@ -32003,6 +32243,9 @@ pci:v000010ECd00008136*
pci:v000010ECd00008136sv0000103Csd00001985*
ID_MODEL_FROM_DATABASE=RTL8101/2/6E PCI Express Fast/Gigabit Ethernet controller (Pavilion 17-e163sg Notebook PC)
+pci:v000010ECd00008136sv0000103Csd00002A8C*
+ ID_MODEL_FROM_DATABASE=RTL8101/2/6E PCI Express Fast/Gigabit Ethernet controller (Compaq 500B Microtower)
+
pci:v000010ECd00008136sv0000103Csd00002AB1*
ID_MODEL_FROM_DATABASE=RTL8101/2/6E PCI Express Fast/Gigabit Ethernet controller (Pavilion p6774)
@@ -32237,6 +32480,9 @@ pci:v000010ECd00008168sv0000105Bsd00000D7C*
pci:v000010ECd00008168sv000010ECsd00008168*
ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (RTL8111/8168 PCI Express Gigabit Ethernet controller)
+pci:v000010ECd00008168sv0000144Dsd0000C652*
+ ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (RTL8168 on a NP300E5C series laptop)
+
pci:v000010ECd00008168sv00001458sd0000E000*
ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (Onboard Ethernet)
@@ -32327,6 +32573,9 @@ pci:v000010ECd00008174*
pci:v000010ECd00008176*
ID_MODEL_FROM_DATABASE=RTL8188CE 802.11b/g/n WiFi Adapter
+pci:v000010ECd00008176sv00001043sd000084B5*
+ ID_MODEL_FROM_DATABASE=RTL8188CE 802.11b/g/n WiFi Adapter (PCE-N10)
+
pci:v000010ECd00008176sv00001A3Bsd00001139*
ID_MODEL_FROM_DATABASE=RTL8188CE 802.11b/g/n WiFi Adapter (AW-NE139H Half-size Mini PCIe Card)
@@ -32369,6 +32618,9 @@ pci:v000010ECd00008192*
pci:v000010ECd00008193*
ID_MODEL_FROM_DATABASE=RTL8192DE Wireless LAN Controller
+pci:v000010ECd00008196*
+ ID_MODEL_FROM_DATABASE=RTL8196 Integrated PCI-e Bridge
+
pci:v000010ECd00008197*
ID_MODEL_FROM_DATABASE=SmartLAN56 56K Modem
@@ -32453,6 +32705,12 @@ pci:v000010EEd00003FC5*
pci:v000010EEd00003FC6*
ID_MODEL_FROM_DATABASE=RME Hammerfall DSP MADI
+pci:v000010EEd00007038*
+ ID_MODEL_FROM_DATABASE=FPGA Card XC7VX690T
+
+pci:v000010EEd00007038sv000017AAsd0000402F*
+ ID_MODEL_FROM_DATABASE=FPGA Card XC7VX690T (FPGA XC7VX690T-3FFG1157E)
+
pci:v000010EEd00008380*
ID_MODEL_FROM_DATABASE=Ellips ProfiXpress Profibus Master
@@ -35603,6 +35861,9 @@ pci:v0000111Dd00008088sv00001093sd00007600*
pci:v0000111Dd00008088sv00001093sd00007602*
ID_MODEL_FROM_DATABASE=PES32NT8BG2 PCI Express Switch (PXIe-8384)
+pci:v0000111Dd0000808E*
+ ID_MODEL_FROM_DATABASE=PES24NT24G2 PCI Express Switch
+
pci:v0000111Dd0000808F*
ID_MODEL_FROM_DATABASE=PES32NT8AG2
@@ -40490,6 +40751,36 @@ pci:v000011F8d00008032sv0000117Csd0000003B*
pci:v000011F8d00008032sv0000117Csd0000003C*
ID_MODEL_FROM_DATABASE=ATTO Celerity FC8xEN (Celerity FC-84EN Fibre Channel Adapter)
+pci:v000011F8d00008053*
+ ID_MODEL_FROM_DATABASE=PM8053 SXP 12G 24-port SAS/SATA expander
+
+pci:v000011F8d00008054*
+ ID_MODEL_FROM_DATABASE=PM8054 SXP 12G 36-port SAS/SATA expander
+
+pci:v000011F8d00008055*
+ ID_MODEL_FROM_DATABASE=PM8055 SXP 12G 48-port SAS/SATA expander
+
+pci:v000011F8d00008056*
+ ID_MODEL_FROM_DATABASE=PM8056 SXP 12G 68-port SAS/SATA expander
+
+pci:v000011F8d00008060*
+ ID_MODEL_FROM_DATABASE=PM8060 SRCv 12G eight-port SAS/SATA RoC
+
+pci:v000011F8d00008063*
+ ID_MODEL_FROM_DATABASE=PM8063 SRCv 12G 16-port SAS/SATA RoC
+
+pci:v000011F8d00008070*
+ ID_MODEL_FROM_DATABASE=PM8070 Tachyon SPCv 12G eight-port SAS/SATA controller
+
+pci:v000011F8d00008071*
+ ID_MODEL_FROM_DATABASE=PM8071 Tachyon SPCve 12G eight-port SAS/SATA controller
+
+pci:v000011F8d00008072*
+ ID_MODEL_FROM_DATABASE=PM8072 Tachyon SPCv 12G 16-port SAS/SATA controller
+
+pci:v000011F8d00008073*
+ ID_MODEL_FROM_DATABASE=PM8073 Tachyon SPCve 12G 16-port SAS/SATA controller
+
pci:v000011F9*
ID_VENDOR_FROM_DATABASE=I-Cube Inc
@@ -44426,6 +44717,9 @@ pci:v00001360d00000207*
pci:v00001360d00000208*
ID_MODEL_FROM_DATABASE=GPS180AMC GPS Receiver (PCI Express / MicroTCA / AdvancedMC)
+pci:v00001360d00000209*
+ ID_MODEL_FROM_DATABASE=GRC181PEX GPS/GLONASS/BEIDOU receiver (PCI Express)
+
pci:v00001360d00000301*
ID_MODEL_FROM_DATABASE=TCR510PCI IRIG Timecode Reader
@@ -47822,6 +48116,201 @@ pci:v00001425d0000589B*
pci:v00001425d0000589C*
ID_MODEL_FROM_DATABASE=T520-509C Unified Wire Ethernet Controller [VF]
+pci:v00001425d00006001*
+ ID_MODEL_FROM_DATABASE=T6225-CR Unified Wire Ethernet Controller
+
+pci:v00001425d00006002*
+ ID_MODEL_FROM_DATABASE=T6225-SO-CR Unified Wire Ethernet Controller
+
+pci:v00001425d00006003*
+ ID_MODEL_FROM_DATABASE=T6425-CR Unified Wire Ethernet Controller
+
+pci:v00001425d00006004*
+ ID_MODEL_FROM_DATABASE=T6425-SO-CR Unified Wire Ethernet Controller
+
+pci:v00001425d00006005*
+ ID_MODEL_FROM_DATABASE=T6225-OCP-SO Unified Wire Ethernet Controller
+
+pci:v00001425d00006006*
+ ID_MODEL_FROM_DATABASE=T62100-OCP-SO Unified Wire Ethernet Controller
+
+pci:v00001425d00006007*
+ ID_MODEL_FROM_DATABASE=T62100-LP-CR Unified Wire Ethernet Controller
+
+pci:v00001425d00006008*
+ ID_MODEL_FROM_DATABASE=T62100-SO-CR Unified Wire Ethernet Controller
+
+pci:v00001425d00006009*
+ ID_MODEL_FROM_DATABASE=T6210-BT Unified Wire Ethernet Controller
+
+pci:v00001425d0000600D*
+ ID_MODEL_FROM_DATABASE=T62100-CR Unified Wire Ethernet Controller
+
+pci:v00001425d00006011*
+ ID_MODEL_FROM_DATABASE=T6225-LL-CR Unified Wire Ethernet Controller
+
+pci:v00001425d00006014*
+ ID_MODEL_FROM_DATABASE=T61100-OCP-SO Unified Wire Ethernet Controller
+
+pci:v00001425d00006015*
+ ID_MODEL_FROM_DATABASE=T6201-BT Unified Wire Ethernet Controller
+
+pci:v00001425d00006401*
+ ID_MODEL_FROM_DATABASE=T6225-CR Unified Wire Ethernet Controller
+
+pci:v00001425d00006402*
+ ID_MODEL_FROM_DATABASE=T6225-SO-CR Unified Wire Ethernet Controller
+
+pci:v00001425d00006403*
+ ID_MODEL_FROM_DATABASE=T6425-CR Unified Wire Ethernet Controller
+
+pci:v00001425d00006404*
+ ID_MODEL_FROM_DATABASE=T6425-SO-CR Unified Wire Ethernet Controller
+
+pci:v00001425d00006405*
+ ID_MODEL_FROM_DATABASE=T6225-OCP-SO Unified Wire Ethernet Controller
+
+pci:v00001425d00006406*
+ ID_MODEL_FROM_DATABASE=T62100-OCP-SO Unified Wire Ethernet Controller
+
+pci:v00001425d00006407*
+ ID_MODEL_FROM_DATABASE=T62100-LP-CR Unified Wire Ethernet Controller
+
+pci:v00001425d00006408*
+ ID_MODEL_FROM_DATABASE=T62100-SO-CR Unified Wire Ethernet Controller
+
+pci:v00001425d00006409*
+ ID_MODEL_FROM_DATABASE=T6210-BT Unified Wire Ethernet Controller
+
+pci:v00001425d0000640D*
+ ID_MODEL_FROM_DATABASE=T62100-CR Unified Wire Ethernet Controller
+
+pci:v00001425d00006411*
+ ID_MODEL_FROM_DATABASE=T6225-LL-CR Unified Wire Ethernet Controller
+
+pci:v00001425d00006414*
+ ID_MODEL_FROM_DATABASE=T61100-OCP-SO Unified Wire Ethernet Controller
+
+pci:v00001425d00006415*
+ ID_MODEL_FROM_DATABASE=T6201-BT Unified Wire Ethernet Controller
+
+pci:v00001425d00006501*
+ ID_MODEL_FROM_DATABASE=T6225-CR Unified Wire Storage Controller
+
+pci:v00001425d00006502*
+ ID_MODEL_FROM_DATABASE=T6225-SO-CR Unified Wire Storage Controller
+
+pci:v00001425d00006503*
+ ID_MODEL_FROM_DATABASE=T6425-CR Unified Wire Storage Controller
+
+pci:v00001425d00006504*
+ ID_MODEL_FROM_DATABASE=T6425-SO-CR Unified Wire Storage Controller
+
+pci:v00001425d00006505*
+ ID_MODEL_FROM_DATABASE=T6225-OCP-SO Unified Wire Storage Controller
+
+pci:v00001425d00006506*
+ ID_MODEL_FROM_DATABASE=T62100-OCP-SO Unified Wire Storage Controller
+
+pci:v00001425d00006507*
+ ID_MODEL_FROM_DATABASE=T62100-LP-CR Unified Wire Storage Controller
+
+pci:v00001425d00006508*
+ ID_MODEL_FROM_DATABASE=T62100-SO-CR Unified Wire Storage Controller
+
+pci:v00001425d00006509*
+ ID_MODEL_FROM_DATABASE=T6210-BT Unified Wire Storage Controller
+
+pci:v00001425d0000650D*
+ ID_MODEL_FROM_DATABASE=T62100-CR Unified Wire Storage Controller
+
+pci:v00001425d00006511*
+ ID_MODEL_FROM_DATABASE=T6225-LL-CR Unified Wire Storage Controller
+
+pci:v00001425d00006514*
+ ID_MODEL_FROM_DATABASE=T61100-OCP-SO Unified Wire Storage Controller
+
+pci:v00001425d00006515*
+ ID_MODEL_FROM_DATABASE=T6201-BT Unified Wire Storage Controller
+
+pci:v00001425d00006601*
+ ID_MODEL_FROM_DATABASE=T6225-CR Unified Wire Storage Controller
+
+pci:v00001425d00006602*
+ ID_MODEL_FROM_DATABASE=T6225-SO-CR Unified Wire Storage Controller
+
+pci:v00001425d00006603*
+ ID_MODEL_FROM_DATABASE=T6425-CR Unified Wire Storage Controller
+
+pci:v00001425d00006604*
+ ID_MODEL_FROM_DATABASE=T6425-SO-CR Unified Wire Storage Controller
+
+pci:v00001425d00006605*
+ ID_MODEL_FROM_DATABASE=T6225-OCP-SO Unified Wire Storage Controller
+
+pci:v00001425d00006606*
+ ID_MODEL_FROM_DATABASE=T62100-OCP-SO Unified Wire Storage Controller
+
+pci:v00001425d00006607*
+ ID_MODEL_FROM_DATABASE=T62100-LP-CR Unified Wire Storage Controller
+
+pci:v00001425d00006608*
+ ID_MODEL_FROM_DATABASE=T62100-SO-CR Unified Wire Storage Controller
+
+pci:v00001425d00006609*
+ ID_MODEL_FROM_DATABASE=T6210-BT Unified Wire Storage Controller
+
+pci:v00001425d0000660D*
+ ID_MODEL_FROM_DATABASE=T62100-CR Unified Wire Storage Controller
+
+pci:v00001425d00006611*
+ ID_MODEL_FROM_DATABASE=T6225-LL-CR Unified Wire Storage Controller
+
+pci:v00001425d00006614*
+ ID_MODEL_FROM_DATABASE=T61100-OCP-SO Unified Wire Storage Controller
+
+pci:v00001425d00006615*
+ ID_MODEL_FROM_DATABASE=T6201-BT Unified Wire Storage Controller
+
+pci:v00001425d00006801*
+ ID_MODEL_FROM_DATABASE=T6225-CR Unified Wire Ethernet Controller [VF]
+
+pci:v00001425d00006802*
+ ID_MODEL_FROM_DATABASE=T6225-SO-CR Unified Wire Ethernet Controller [VF]
+
+pci:v00001425d00006803*
+ ID_MODEL_FROM_DATABASE=T6425-CR Unified Wire Ethernet Controller [VF]
+
+pci:v00001425d00006804*
+ ID_MODEL_FROM_DATABASE=T6425-SO-CR Unified Wire Ethernet Controller [VF]
+
+pci:v00001425d00006805*
+ ID_MODEL_FROM_DATABASE=T6225-OCP-SO Unified Wire Ethernet Controller [VF]
+
+pci:v00001425d00006806*
+ ID_MODEL_FROM_DATABASE=T62100-OCP-SO Unified Wire Ethernet Controller [VF]
+
+pci:v00001425d00006807*
+ ID_MODEL_FROM_DATABASE=T62100-LP-CR Unified Wire Ethernet Controller [VF]
+
+pci:v00001425d00006808*
+ ID_MODEL_FROM_DATABASE=T62100-SO-CR Unified Wire Ethernet Controller [VF]
+
+pci:v00001425d00006809*
+ ID_MODEL_FROM_DATABASE=T6210-BT Unified Wire Ethernet Controller [VF]
+
+pci:v00001425d0000680D*
+ ID_MODEL_FROM_DATABASE=T62100-CR Unified Wire Ethernet Controller [VF]
+
+pci:v00001425d00006811*
+ ID_MODEL_FROM_DATABASE=T6225-LL-CR Unified Wire Ethernet Controller [VF]
+
+pci:v00001425d00006814*
+ ID_MODEL_FROM_DATABASE=T61100-OCP-SO Unified Wire Ethernet Controller [VF]
+
+pci:v00001425d00006815*
+ ID_MODEL_FROM_DATABASE=T6201-BT Unified Wire Ethernet Controller [VF]
+
pci:v00001425d0000A000*
ID_MODEL_FROM_DATABASE=PE10K Unified Wire Ethernet Controller
@@ -48804,7 +49293,7 @@ pci:v000014E3*
ID_VENDOR_FROM_DATABASE=AMTELCO
pci:v000014E4*
- ID_VENDOR_FROM_DATABASE=Broadcom Corporation
+ ID_VENDOR_FROM_DATABASE=Broadcom Limited
pci:v000014E4d00000576*
ID_MODEL_FROM_DATABASE=BCM43224 802.11a/b/g/n
@@ -49944,49 +50433,70 @@ pci:v000014E4d000016C7sv000014E4sd0000000A*
ID_MODEL_FROM_DATABASE=NetXtreme BCM5703 Gigabit Ethernet (NetXtreme BCM5703 1000Base-SX)
pci:v000014E4d000016C8*
- ID_MODEL_FROM_DATABASE=BCM57301 NetXtreme-C Single-port 10Gb Ethernet
+ ID_MODEL_FROM_DATABASE=BCM57301 NetXtreme-C 10Gb Ethernet Controller
pci:v000014E4d000016C9*
- ID_MODEL_FROM_DATABASE=BCM57302 NetXtreme-C Dual-port 10Gb/25Gb Ethernet
+ ID_MODEL_FROM_DATABASE=BCM57302 NetXtreme-C 10Gb/25Gb Ethernet Controller
pci:v000014E4d000016CA*
- ID_MODEL_FROM_DATABASE=BCM57304 NetXtreme-C Dual-port 10Gb/25Gb/40Gb/50Gb Ethernet
+ ID_MODEL_FROM_DATABASE=BCM57304 NetXtreme-C 10Gb/25Gb/40Gb/50Gb Ethernet Controller
pci:v000014E4d000016CB*
ID_MODEL_FROM_DATABASE=BCM57304 NetXtreme-C Ethernet Virtual Function
+pci:v000014E4d000016CC*
+ ID_MODEL_FROM_DATABASE=BCM57417 NetXtreme-E Ethernet Partition
+
pci:v000014E4d000016CE*
- ID_MODEL_FROM_DATABASE=BCM57311 NetXtreme-C Single-port 10Gb RDMA Ethernet
+ ID_MODEL_FROM_DATABASE=BCM57311 NetXtreme-C 10Gb RDMA Ethernet Controller
pci:v000014E4d000016CF*
- ID_MODEL_FROM_DATABASE=BCM57312 NetXtreme-C Dual-port 10Gb/25Gb RDMA Ethernet
+ ID_MODEL_FROM_DATABASE=BCM57312 NetXtreme-C 10Gb/25Gb RDMA Ethernet Controller
pci:v000014E4d000016D0*
- ID_MODEL_FROM_DATABASE=BCM57402 NetXtreme-E Dual-port 10Gb Ethernet
+ ID_MODEL_FROM_DATABASE=BCM57402 NetXtreme-E 10Gb Ethernet Controller
pci:v000014E4d000016D1*
- ID_MODEL_FROM_DATABASE=BCM57404 NetXtreme-E Dual-port 10Gb/25Gb Ethernet
+ ID_MODEL_FROM_DATABASE=BCM57404 NetXtreme-E 10Gb/25Gb Ethernet Controller
pci:v000014E4d000016D2*
- ID_MODEL_FROM_DATABASE=BCM57406 NetXtreme-E Dual-port 10GBase-T Ethernet
+ ID_MODEL_FROM_DATABASE=BCM57406 NetXtreme-E 10GBASE-T Ethernet Controller
pci:v000014E4d000016D3*
ID_MODEL_FROM_DATABASE=BCM57404 NetXtreme-E Ethernet Virtual Function
pci:v000014E4d000016D4*
- ID_MODEL_FROM_DATABASE=BCM57404 NetXtreme-E Ethernet Partition
+ ID_MODEL_FROM_DATABASE=BCM57402 NetXtreme-E Ethernet Partition
+
+pci:v000014E4d000016D5*
+ ID_MODEL_FROM_DATABASE=BCM57407 NetXtreme-E 10GBase-T Ethernet Controller
pci:v000014E4d000016D6*
- ID_MODEL_FROM_DATABASE=BCM57412 NetXtreme-E Dual-port 10Gb RDMA Ethernet
+ ID_MODEL_FROM_DATABASE=BCM57412 NetXtreme-E 10Gb RDMA Ethernet Controller
pci:v000014E4d000016D7*
- ID_MODEL_FROM_DATABASE=BCM57414 NetXtreme-E Dual-port 10Gb/25Gb RDMA Ethernet
+ ID_MODEL_FROM_DATABASE=BCM57414 NetXtreme-E 10Gb/25Gb RDMA Ethernet Controller
+
+pci:v000014E4d000016D7sv00001590sd0000020E*
+ ID_MODEL_FROM_DATABASE=BCM57414 NetXtreme-E 10Gb/25Gb RDMA Ethernet Controller (Ethernet 25Gb 2-port 631SFP28 Adapter)
+
+pci:v000014E4d000016D7sv00001590sd00000211*
+ ID_MODEL_FROM_DATABASE=BCM57414 NetXtreme-E 10Gb/25Gb RDMA Ethernet Controller (Ethernet 25Gb 2-port 631FLR-SFP28 Adapter)
pci:v000014E4d000016D8*
- ID_MODEL_FROM_DATABASE=BCM57416 NetXtreme-E Dual-port 10GBase-T RDMA Ethernet
+ ID_MODEL_FROM_DATABASE=BCM57416 NetXtreme-E 10GBase-T RDMA Ethernet Controller
+
+pci:v000014E4d000016D8sv00001590sd0000020C*
+ ID_MODEL_FROM_DATABASE=BCM57416 NetXtreme-E 10GBase-T RDMA Ethernet Controller (Ethernet 10Gb 2-port 535T Adapter)
+
+pci:v000014E4d000016D8sv00001590sd00000212*
+ ID_MODEL_FROM_DATABASE=BCM57416 NetXtreme-E 10GBase-T RDMA Ethernet Controller (Ethernet 10Gb 2-port 535FLR-T Adapter)
pci:v000014E4d000016D9*
- ID_MODEL_FROM_DATABASE=BCM57417 NetXtreme-E Dual-port 10GBase-T RDMA Ethernet
+ ID_MODEL_FROM_DATABASE=BCM57417 NetXtreme-E 10GBASE-T RDMA Ethernet Controller
+
+pci:v000014E4d000016D9sv0000108Esd00004866*
+ ID_MODEL_FROM_DATABASE=BCM57417 NetXtreme-E 10GBASE-T RDMA Ethernet Controller (Dual Port 10GBase-T Ethernet Controller)
pci:v000014E4d000016DC*
ID_MODEL_FROM_DATABASE=BCM57414 NetXtreme-E Ethernet Virtual Function
@@ -49995,16 +50505,37 @@ pci:v000014E4d000016DD*
ID_MODEL_FROM_DATABASE=NetLink BCM5781 Gigabit Ethernet PCI Express
pci:v000014E4d000016DE*
- ID_MODEL_FROM_DATABASE=BCM57414 NetXtreme-E Ethernet Partition
+ ID_MODEL_FROM_DATABASE=BCM57412 NetXtreme-E Ethernet Partition
pci:v000014E4d000016DF*
- ID_MODEL_FROM_DATABASE=BCM57314 NetXtreme-C Dual-port 10Gb/25Gb/40Gb/50Gb RDMA Ethernet
+ ID_MODEL_FROM_DATABASE=BCM57314 NetXtreme-C 10Gb/25Gb/40Gb/50Gb RDMA Ethernet Controller
pci:v000014E4d000016E1*
ID_MODEL_FROM_DATABASE=BCM57314 NetXtreme-C Ethernet Virtual Function
pci:v000014E4d000016E2*
- ID_MODEL_FROM_DATABASE=BCM57417 NetXtreme-E Dual-port 10Gb/25Gb RDMA Ethernet
+ ID_MODEL_FROM_DATABASE=BCM57417 NetXtreme-E 10Gb/25Gb RDMA Ethernet Controller
+
+pci:v000014E4d000016E2sv0000108Esd00004866*
+ ID_MODEL_FROM_DATABASE=BCM57417 NetXtreme-E 10Gb/25Gb RDMA Ethernet Controller (Dual Port 10Gb/25Gb SFP28 Ethernet Controller)
+
+pci:v000014E4d000016E3*
+ ID_MODEL_FROM_DATABASE=BCM57416 NetXtreme-E 10Gb RDMA Ethernet Controller
+
+pci:v000014E4d000016E7*
+ ID_MODEL_FROM_DATABASE=BCM57404 NetXtreme-E Ethernet Partition
+
+pci:v000014E4d000016E8*
+ ID_MODEL_FROM_DATABASE=BCM57406 NetXtreme-E Ethernet Partition
+
+pci:v000014E4d000016E9*
+ ID_MODEL_FROM_DATABASE=BCM57407 NetXtreme-E 25Gb Ethernet Controller
+
+pci:v000014E4d000016EC*
+ ID_MODEL_FROM_DATABASE=BCM57414 NetXtreme-E Ethernet Partition
+
+pci:v000014E4d000016EE*
+ ID_MODEL_FROM_DATABASE=BCM57416 NetXtreme-E Ethernet Partition
pci:v000014E4d000016F3*
ID_MODEL_FROM_DATABASE=NetXtreme BCM5727 Gigabit Ethernet PCIe
@@ -52091,6 +52622,9 @@ pci:v00001524d00001410sv00001025sd0000003C*
pci:v00001524d00001410sv00001025sd0000005A*
ID_MODEL_FROM_DATABASE=CB1410 Cardbus Controller (TravelMate 290)
+pci:v00001524d00001410sv0000103Csd000030D5*
+ ID_MODEL_FROM_DATABASE=CB1410 Cardbus Controller (530 Laptop)
+
pci:v00001524d00001411*
ID_MODEL_FROM_DATABASE=CB-710/2/4 Cardbus Controller
@@ -52235,6 +52769,9 @@ pci:v00001542d00009278*
pci:v00001542d00009287*
ID_MODEL_FROM_DATABASE=Analog Output Card
+pci:v00001542d00009290*
+ ID_MODEL_FROM_DATABASE=FPGA Card
+
pci:v00001543*
ID_VENDOR_FROM_DATABASE=SILICON Laboratories
@@ -52760,6 +53297,12 @@ pci:v000015B3d0000020B*
pci:v000015B3d0000020D*
ID_MODEL_FROM_DATABASE=MT28800 Family [ConnectX-5 Flash Recovery]
+pci:v000015B3d0000024E*
+ ID_MODEL_FROM_DATABASE=MT53100 [Spectrum-2, Flash recovery mode]
+
+pci:v000015B3d0000024F*
+ ID_MODEL_FROM_DATABASE=MT53100 [Spectrum-2, Flash recovery mode]
+
pci:v000015B3d00000262*
ID_MODEL_FROM_DATABASE=MT27710 [ConnectX-4 Lx Programmable] EN
@@ -52799,6 +53342,9 @@ pci:v000015B3d00001006*
pci:v000015B3d00001007*
ID_MODEL_FROM_DATABASE=MT27520 Family [ConnectX-3 Pro]
+pci:v000015B3d00001007sv00001014sd000004EB*
+ ID_MODEL_FROM_DATABASE=MT27520 Family [ConnectX-3 Pro] (2-Port 10GbE NIC and RoCE SR PCIe3)
+
pci:v000015B3d00001007sv0000103Csd000022F3*
ID_MODEL_FROM_DATABASE=MT27520 Family [ConnectX-3 Pro] (InfiniBand FDR/Ethernet 10Gb/40Gb 2-port 544+QSFP Adapter)
@@ -52863,16 +53409,16 @@ pci:v000015B3d00001016*
ID_MODEL_FROM_DATABASE=MT27710 Family [ConnectX-4 Lx Virtual Function]
pci:v000015B3d00001017*
- ID_MODEL_FROM_DATABASE=MT27800 Family [ConnectX-5, PCIe 3.0]
+ ID_MODEL_FROM_DATABASE=MT27800 Family [ConnectX-5]
pci:v000015B3d00001018*
- ID_MODEL_FROM_DATABASE=MT28800 Family [ConnectX-5 Virtual Function]
+ ID_MODEL_FROM_DATABASE=MT27800 Family [ConnectX-5 Virtual Function]
pci:v000015B3d00001019*
- ID_MODEL_FROM_DATABASE=MT28800 Family [ConnectX-5, PCIe 4.0]
+ ID_MODEL_FROM_DATABASE=MT28800 Family [ConnectX-5 Ex]
pci:v000015B3d0000101A*
- ID_MODEL_FROM_DATABASE=MT28830
+ ID_MODEL_FROM_DATABASE=MT28800 Family [ConnectX-5 Ex Virtual Function]
pci:v000015B3d0000101B*
ID_MODEL_FROM_DATABASE=MT28831
@@ -52895,6 +53441,12 @@ pci:v000015B3d00001020*
pci:v000015B3d00001021*
ID_MODEL_FROM_DATABASE=MT28861
+pci:v000015B3d00001974*
+ ID_MODEL_FROM_DATABASE=MT28800 Family [ConnectX-5 PCIe Bridge]
+
+pci:v000015B3d00001975*
+ ID_MODEL_FROM_DATABASE=MT416842 Family [BlueField SoC PCIe Bridge]
+
pci:v000015B3d00005274*
ID_MODEL_FROM_DATABASE=MT21108 InfiniBridge
@@ -52961,6 +53513,9 @@ pci:v000015B3d00006746sv0000103Csd00003349*
pci:v000015B3d00006750*
ID_MODEL_FROM_DATABASE=MT26448 [ConnectX EN 10GigE, PCIe 2.0 5GT/s]
+pci:v000015B3d00006750sv00001014sd00000461*
+ ID_MODEL_FROM_DATABASE=MT26448 [ConnectX EN 10GigE, PCIe 2.0 5GT/s] (2-Port 10 GbE RoCE SR LP PCIe2 (rev b0))
+
pci:v000015B3d00006750sv000015B3sd00000018*
ID_MODEL_FROM_DATABASE=MT26448 [ConnectX EN 10GigE, PCIe 2.0 5GT/s] (HP 10 GbE PCI-e G2 Dual-Port NIC (rev C1))
@@ -52997,6 +53552,15 @@ pci:v000015B3d00007122*
pci:v000015B3d00007123*
ID_MODEL_FROM_DATABASE=NPS-600 network interface VF
+pci:v000015B3d0000A2D0*
+ ID_MODEL_FROM_DATABASE=MT416842
+
+pci:v000015B3d0000A2D1*
+ ID_MODEL_FROM_DATABASE=MT416842
+
+pci:v000015B3d0000A2D3*
+ ID_MODEL_FROM_DATABASE=MT416842 BlueField multicore SoC family VF
+
pci:v000015B3d0000C738*
ID_MODEL_FROM_DATABASE=MT51136
@@ -53018,6 +53582,9 @@ pci:v000015B3d0000CB84*
pci:v000015B3d0000CF08*
ID_MODEL_FROM_DATABASE=MT53236
+pci:v000015B3d0000CF6C*
+ ID_MODEL_FROM_DATABASE=MT53100 [Spectrum-2, 64 x 100GbE switch]
+
pci:v000015B3d0000D2F0*
ID_MODEL_FROM_DATABASE=Switch-IB 3 HDR (200Gbps) switch
@@ -53822,6 +54389,9 @@ pci:v0000165Cd00007191*
pci:v0000165Cd000071A1*
ID_MODEL_FROM_DATABASE=Proc10a_66S
+pci:v0000165Cd000071B1*
+ ID_MODEL_FROM_DATABASE=Proc10A
+
pci:v0000165D*
ID_VENDOR_FROM_DATABASE=Hsing Tech. Enterprise Co., Ltd.
@@ -54548,6 +55118,9 @@ pci:v0000168Cd00000032sv0000103Csd00001838*
pci:v0000168Cd00000032sv0000105Bsd0000E044*
ID_MODEL_FROM_DATABASE=AR9485 Wireless Network Adapter (Unex DHXA-225)
+pci:v0000168Cd00000032sv0000144Dsd0000410E*
+ ID_MODEL_FROM_DATABASE=AR9485 Wireless Network Adapter (AR9485WB-EG 802.11b/g/n mini-PCIe card on a series 3 laptop)
+
pci:v0000168Cd00000032sv00001A3Bsd00001186*
ID_MODEL_FROM_DATABASE=AR9485 Wireless Network Adapter (AW-NE186H)
@@ -54947,9 +55520,39 @@ pci:v000016D5d00007013*
pci:v000016D5d00007014*
ID_MODEL_FROM_DATABASE=AP445: 32-Channel Isolated Digital Output Module
+pci:v000016D5d00007016*
+ ID_MODEL_FROM_DATABASE=AP470 48-Channel TTL Level Digital Input/Output Module
+
pci:v000016D5d00007018*
ID_MODEL_FROM_DATABASE=AP408: 32-Channel Digital I/O Module
+pci:v000016D5d0000701A*
+ ID_MODEL_FROM_DATABASE=AP220-16 12-Bit, 16-Channel Analog Output Module
+
+pci:v000016D5d0000701B*
+ ID_MODEL_FROM_DATABASE=AP231-16 16-Bit, 16-Channel Analog Output Module
+
+pci:v000016D5d00007021*
+ ID_MODEL_FROM_DATABASE=APA7-201 Reconfigurable Artix-7 FPGA module 48 TTL channels
+
+pci:v000016D5d00007022*
+ ID_MODEL_FROM_DATABASE=APA7-202 Reconfigurable Artix-7 FPGA module 24 RS485 channels
+
+pci:v000016D5d00007023*
+ ID_MODEL_FROM_DATABASE=APA7-203 Reconfigurable Artix-7 FPGA module 24 TTL & 12 RS485 channels
+
+pci:v000016D5d00007024*
+ ID_MODEL_FROM_DATABASE=APA7-204 Reconfigurable Artix-7 FPGA module 24 LVDS channels
+
+pci:v000016D5d00007042*
+ ID_MODEL_FROM_DATABASE=AP482 Counter Timer Module with TTL Level Input/Output
+
+pci:v000016D5d00007043*
+ ID_MODEL_FROM_DATABASE=AP483 Counter Timer Module with TTL Level and RS422 Input/Output
+
+pci:v000016D5d00007044*
+ ID_MODEL_FROM_DATABASE=AP484 Counter Timer Module with RS422 Input/Output
+
pci:v000016DA*
ID_VENDOR_FROM_DATABASE=Advantech Co., Ltd.
@@ -55605,7 +56208,7 @@ pci:v000017C2*
ID_VENDOR_FROM_DATABASE=Newisys, Inc.
pci:v000017CB*
- ID_VENDOR_FROM_DATABASE=Airgo Networks, Inc.
+ ID_VENDOR_FROM_DATABASE=Qualcomm
pci:v000017CBd00000001*
ID_MODEL_FROM_DATABASE=AGN100 802.11 a/b/g True MIMO Wireless Card
@@ -55625,12 +56228,21 @@ pci:v000017CBd00000002sv00001385sd00006D00*
pci:v000017CBd00000002sv00001737sd00000054*
ID_MODEL_FROM_DATABASE=AGN300 802.11 a/b/g True MIMO Wireless Card (WPC54GX4 v1 802.11g Wireless-G Notebook Adapter with SRX400)
+pci:v000017CBd00000400*
+ ID_MODEL_FROM_DATABASE=Datacenter Technologies QDF2432 PCI Express Root Port
+
+pci:v000017CBd00000401*
+ ID_MODEL_FROM_DATABASE=Datacenter Technologies QDF2400 PCI Express Root Port
+
pci:v000017CC*
ID_VENDOR_FROM_DATABASE=NetChip Technology, Inc
pci:v000017CCd00002280*
ID_MODEL_FROM_DATABASE=USB 2.0
+pci:v000017CD*
+ ID_VENDOR_FROM_DATABASE=Cadence Design Systems, Inc.
+
pci:v000017CF*
ID_VENDOR_FROM_DATABASE=Z-Com, Inc.
@@ -55994,6 +56606,9 @@ pci:v000017F3*
pci:v000017F3d00001010*
ID_MODEL_FROM_DATABASE=R1010 IDE Controller
+pci:v000017F3d00002012*
+ ID_MODEL_FROM_DATABASE=M2012/R3308 VGA-compatible graphics adapter
+
pci:v000017F3d00006020*
ID_MODEL_FROM_DATABASE=R6020 North Bridge
@@ -56624,6 +57239,9 @@ pci:v000018D2*
pci:v000018D2d00003069*
ID_MODEL_FROM_DATABASE=DC-105v2 ISDN controller
+pci:v000018D4*
+ ID_VENDOR_FROM_DATABASE=Celestica
+
pci:v000018D8*
ID_VENDOR_FROM_DATABASE=Dialogue Technology Corp.
@@ -58118,6 +58736,9 @@ pci:v000019A2d00000714sv0000103Csd00003315*
pci:v000019A2d00000714sv0000103Csd0000337B*
ID_MODEL_FROM_DATABASE=OneConnect 10Gb FCoE Initiator (be3) (NC554FLB 10Gb 2-port FlexFabric Converged Network Adapter)
+pci:v000019A2d00000800*
+ ID_MODEL_FROM_DATABASE=ServerView iRMC HTI
+
pci:v000019A8*
ID_VENDOR_FROM_DATABASE=DAQDATA GmbH
@@ -59120,9 +59741,15 @@ pci:v00001BB1d00000100*
pci:v00001BB1d00000100sv00001BB1sd00000101*
ID_MODEL_FROM_DATABASE=Nytro Flash Storage (Nytro XF1440)
+pci:v00001BB1d00000100sv00001BB1sd00000103*
+ ID_MODEL_FROM_DATABASE=Nytro Flash Storage (Nytro 5000)
+
pci:v00001BB1d00000100sv00001BB1sd00000121*
ID_MODEL_FROM_DATABASE=Nytro Flash Storage (Nytro XM1440)
+pci:v00001BB1d00000100sv00001BB1sd00000123*
+ ID_MODEL_FROM_DATABASE=Nytro Flash Storage (Nytro 5000)
+
pci:v00001BB1d00000100sv00001BB1sd000001A1*
ID_MODEL_FROM_DATABASE=Nytro Flash Storage (Nytro XP7102)
@@ -59201,6 +59828,12 @@ pci:v00001BEE*
pci:v00001BEEd00000003*
ID_MODEL_FROM_DATABASE=CAN-IB200/PCIe
+pci:v00001BEF*
+ ID_VENDOR_FROM_DATABASE=Lantiq
+
+pci:v00001BEFd00000011*
+ ID_MODEL_FROM_DATABASE=MIPS SoC PCI Express Port
+
pci:v00001BF4*
ID_VENDOR_FROM_DATABASE=VTI Instruments Corporation
@@ -59223,7 +59856,25 @@ pci:v00001C09d00004256*
ID_MODEL_FROM_DATABASE=10G-PCIE3-8D-2S
pci:v00001C09d00004258*
- ID_MODEL_FROM_DATABASE=10G-PCIE3-8E-2S
+ ID_MODEL_FROM_DATABASE=10G-PCIE3-8E-2S Network Adapter
+
+pci:v00001C09d00004260*
+ ID_MODEL_FROM_DATABASE=10G-PCIE3-8E-4S Network Adapter
+
+pci:v00001C09d00004261*
+ ID_MODEL_FROM_DATABASE=10G-PCIE3-8E-4S Network Adapter
+
+pci:v00001C09d00004262*
+ ID_MODEL_FROM_DATABASE=10G-PCIE3-8E-4S Network Adapter
+
+pci:v00001C09d00004263*
+ ID_MODEL_FROM_DATABASE=10G-PCIE3-8E-4S Network Adapter
+
+pci:v00001C09d00004264*
+ ID_MODEL_FROM_DATABASE=10G-PCIE3-8E-2S Network Adapter
+
+pci:v00001C09d00004265*
+ ID_MODEL_FROM_DATABASE=10G-PCIE3-8E-2S Network Adapter
pci:v00001C1C*
ID_VENDOR_FROM_DATABASE=Symphony
@@ -59498,6 +60149,18 @@ pci:v00001D6Cd0000100E*
pci:v00001D6Cd00004200*
ID_MODEL_FROM_DATABASE=A5PL-E1-10GETI [10 GbE Ethernet Traffic Instrument]
+pci:v00001D78*
+ ID_VENDOR_FROM_DATABASE=DERA
+
+pci:v00001D8F*
+ ID_VENDOR_FROM_DATABASE=Enyx
+
+pci:v00001D95*
+ ID_VENDOR_FROM_DATABASE=Graphcore Ltd
+
+pci:v00001DA1*
+ ID_VENDOR_FROM_DATABASE=Teko Telecom S.r.l.
+
pci:v00001DE1*
ID_VENDOR_FROM_DATABASE=Tekram Technology Co.,Ltd.
@@ -59646,7 +60309,10 @@ pci:v00001FC9d00004026*
ID_MODEL_FROM_DATABASE=TN9610 10GbE SFP+ Ethernet Adapter
pci:v00001FC9d00004027*
- ID_MODEL_FROM_DATABASE=TN9710 10GBase-T/NBASE-T Ethernet Adapter
+ ID_MODEL_FROM_DATABASE=TN9710P 10GBase-T/NBASE-T Ethernet Adapter
+
+pci:v00001FC9d00004527*
+ ID_MODEL_FROM_DATABASE=TN9710Q 5GBase-T/NBASE-T Ethernet Adapter
pci:v00001FCC*
ID_VENDOR_FROM_DATABASE=StreamLabs
@@ -61883,6 +62549,9 @@ pci:v00008086d00000101sv00001028sd000004B2*
pci:v00008086d00000101sv0000106Bsd000000DC*
ID_MODEL_FROM_DATABASE=Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port (MacBookPro8,2 [Core i7, 15", 2011])
+pci:v00008086d00000101sv0000144Dsd0000C652*
+ ID_MODEL_FROM_DATABASE=Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port (NP300E5C series laptop)
+
pci:v00008086d00000102*
ID_MODEL_FROM_DATABASE=2nd Generation Core Processor Family Integrated Graphics Controller
@@ -61907,6 +62576,9 @@ pci:v00008086d00000104sv00001028sd000004DA*
pci:v00008086d00000104sv0000106Bsd000000DC*
ID_MODEL_FROM_DATABASE=2nd Generation Core Processor Family DRAM Controller (MacBookPro8,2 [Core i7, 15", 2011])
+pci:v00008086d00000104sv0000144Dsd0000C652*
+ ID_MODEL_FROM_DATABASE=2nd Generation Core Processor Family DRAM Controller (NP300E5C series laptop)
+
pci:v00008086d00000105*
ID_MODEL_FROM_DATABASE=Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port
@@ -61946,6 +62618,9 @@ pci:v00008086d00000116*
pci:v00008086d00000116sv00001028sd000004DA*
ID_MODEL_FROM_DATABASE=2nd Generation Core Processor Family Integrated Graphics Controller (Vostro 3750)
+pci:v00008086d00000116sv0000144Dsd0000C652*
+ ID_MODEL_FROM_DATABASE=2nd Generation Core Processor Family Integrated Graphics Controller (integrated HD 3000 graphics controller on NP300E5C series laptop)
+
pci:v00008086d00000122*
ID_MODEL_FROM_DATABASE=2nd Generation Core Processor Family Integrated Graphics Controller
@@ -64457,6 +65132,9 @@ pci:v00008086d00001067*
pci:v00008086d00001068*
ID_MODEL_FROM_DATABASE=82562ET/EZ/GT/GZ - PRO/100 VE (LOM) Ethernet Controller Mobile
+pci:v00008086d00001068sv0000103Csd000030D5*
+ ID_MODEL_FROM_DATABASE=82562ET/EZ/GT/GZ - PRO/100 VE (LOM) Ethernet Controller Mobile (530 Laptop)
+
pci:v00008086d00001069*
ID_MODEL_FROM_DATABASE=82562EM/EX/GX - PRO/100 VM (LOM) Ethernet Controller Mobile
@@ -65189,6 +65867,9 @@ pci:v00008086d000010FBsv0000103Csd00002159*
pci:v00008086d000010FBsv0000108Esd00007B11*
ID_MODEL_FROM_DATABASE=82599ES 10-Gigabit SFI/SFP+ Network Connection (Ethernet Server Adapter X520-2)
+pci:v00008086d000010FBsv00001170sd0000004C*
+ ID_MODEL_FROM_DATABASE=82599ES 10-Gigabit SFI/SFP+ Network Connection (82599 DP 10G Mezzanine Adapter)
+
pci:v00008086d000010FBsv00001734sd000011A9*
ID_MODEL_FROM_DATABASE=82599ES 10-Gigabit SFI/SFP+ Network Connection (10 Gigabit Dual Port Network Connection)
@@ -65201,6 +65882,21 @@ pci:v00008086d000010FBsv000017AAsd00004007*
pci:v00008086d000010FBsv000017AAsd0000402B*
ID_MODEL_FROM_DATABASE=82599ES 10-Gigabit SFI/SFP+ Network Connection (82599ES 10Gb 2-port Server Adapter X520-DA2)
+pci:v00008086d000010FBsv000017AAsd0000402F*
+ ID_MODEL_FROM_DATABASE=82599ES 10-Gigabit SFI/SFP+ Network Connection (FPGA Card XC7VX690T-3FFG1157E)
+
+pci:v00008086d000010FBsv000018D4sd00000C09*
+ ID_MODEL_FROM_DATABASE=82599ES 10-Gigabit SFI/SFP+ Network Connection (82599ES 10Gb 2-port SFP+ OCP Mezz Card MOP81-I-10GS2)
+
+pci:v00008086d000010FBsv00001BD4sd0000001B*
+ ID_MODEL_FROM_DATABASE=82599ES 10-Gigabit SFI/SFP+ Network Connection (10G SFP+ DP ER102Fi4 Rack Adapter)
+
+pci:v00008086d000010FBsv00001BD4sd0000002F*
+ ID_MODEL_FROM_DATABASE=82599ES 10-Gigabit SFI/SFP+ Network Connection (10G SFP+ DP EP102Fi4A Adapter)
+
+pci:v00008086d000010FBsv00001BD4sd00000032*
+ ID_MODEL_FROM_DATABASE=82599ES 10-Gigabit SFI/SFP+ Network Connection (10G SFP+ DP EP102Fi4 Adapter)
+
pci:v00008086d000010FBsv00008086sd00000002*
ID_MODEL_FROM_DATABASE=82599ES 10-Gigabit SFI/SFP+ Network Connection (Ethernet Server Adapter X520-DA2)
@@ -65219,6 +65915,9 @@ pci:v00008086d000010FBsv00008086sd0000000A*
pci:v00008086d000010FBsv00008086sd0000000C*
ID_MODEL_FROM_DATABASE=82599ES 10-Gigabit SFI/SFP+ Network Connection (Ethernet Server Adapter X520-2)
+pci:v00008086d000010FBsv00008086sd000010A6*
+ ID_MODEL_FROM_DATABASE=82599ES 10-Gigabit SFI/SFP+ Network Connection (82599ES 10Gb 2 port Server Adapter X520-DA2)
+
pci:v00008086d000010FBsv00008086sd00007A11*
ID_MODEL_FROM_DATABASE=82599ES 10-Gigabit SFI/SFP+ Network Connection (Ethernet Server Adapter X520-2)
@@ -66014,12 +66713,33 @@ pci:v00008086d00001521*
pci:v00008086d00001521sv00001028sd00000602*
ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Gigabit 2P I350-t LOM)
+pci:v00008086d00001521sv00001028sd00000693*
+ ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Gigabit 2P I350-t LOM)
+
+pci:v00008086d00001521sv00001028sd000006E2*
+ ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Gigabit 2P I350-t LOM)
+
+pci:v00008086d00001521sv00001028sd00000757*
+ ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Gigabit I350-t LOM)
+
+pci:v00008086d00001521sv00001028sd0000075A*
+ ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Gigabit I350-t LOM)
+
pci:v00008086d00001521sv00001028sd00001F60*
ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Gigabit 4P I350-t rNDC)
pci:v00008086d00001521sv00001028sd00001F62*
ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Gigabit 4P X540/I350 rNDC)
+pci:v00008086d00001521sv00001028sd00001FA8*
+ ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Ethernet 10G 4P X550/I350 rNDC)
+
+pci:v00008086d00001521sv00001028sd00001FA9*
+ ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Ethernet 10G 4P X550 rNDC)
+
+pci:v00008086d00001521sv00001028sd00001FAA*
+ ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Gigabit 4P X550/I350 rNDC)
+
pci:v00008086d00001521sv00001028sd0000FF9A*
ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Gigabit 4P X710/I350 rNDC)
@@ -66074,6 +66794,15 @@ pci:v00008086d00001521sv000017AAsd00001074*
pci:v00008086d00001521sv000017AAsd00004005*
ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection
+pci:v00008086d00001521sv000018D4sd00000C07*
+ ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (I350 1Gb 2-port RJ45 OCP Mezz Card MOP41-I-1GT2)
+
+pci:v00008086d00001521sv00001BD4sd0000001D*
+ ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (1G base-T QP EP014Ti1 Adapter)
+
+pci:v00008086d00001521sv00001BD4sd00000035*
+ ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (1G base-T QP EP014Ti1 Adapter)
+
pci:v00008086d00001521sv00008086sd00000001*
ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Ethernet Server Adapter I350-T4)
@@ -66203,6 +66932,15 @@ pci:v00008086d00001528sv000017AAsd00001073*
pci:v00008086d00001528sv000017AAsd00004006*
ID_MODEL_FROM_DATABASE=Ethernet Controller 10-Gigabit X540-AT2
+pci:v00008086d00001528sv00001BD4sd0000001A*
+ ID_MODEL_FROM_DATABASE=Ethernet Controller 10-Gigabit X540-AT2 (10G base-T DP ER102Ti3 Rack Adapter)
+
+pci:v00008086d00001528sv00001BD4sd00000033*
+ ID_MODEL_FROM_DATABASE=Ethernet Controller 10-Gigabit X540-AT2 (10G base-T DP EP102Ti3 Adapter)
+
+pci:v00008086d00001528sv00001BD4sd00000034*
+ ID_MODEL_FROM_DATABASE=Ethernet Controller 10-Gigabit X540-AT2 (10G base-T DP EP102Ti3A Adapter)
+
pci:v00008086d00001528sv00008086sd00000001*
ID_MODEL_FROM_DATABASE=Ethernet Controller 10-Gigabit X540-AT2 (Ethernet Converged Network Adapter X540-T2)
@@ -66323,6 +67061,12 @@ pci:v00008086d00001557*
pci:v00008086d00001557sv000017AAsd00004008*
ID_MODEL_FROM_DATABASE=82599 10 Gigabit Network Connection (82599EN 10 Gigabit Network Connection)
+pci:v00008086d00001557sv00001BD4sd0000001C*
+ ID_MODEL_FROM_DATABASE=82599 10 Gigabit Network Connection (10G SFP+ SP ER101Fi4 Rack Adapter)
+
+pci:v00008086d00001557sv00001BD4sd00000030*
+ ID_MODEL_FROM_DATABASE=82599 10 Gigabit Network Connection (10G SFP+ SP EP101Fi4A Adapter)
+
pci:v00008086d00001557sv00008086sd00000001*
ID_MODEL_FROM_DATABASE=82599 10 Gigabit Network Connection (Ethernet OCP Server Adapter X520-1)
@@ -66365,6 +67109,21 @@ pci:v00008086d00001560*
pci:v00008086d00001563*
ID_MODEL_FROM_DATABASE=Ethernet Controller 10G X550T
+pci:v00008086d00001563sv00001028sd00001FA8*
+ ID_MODEL_FROM_DATABASE=Ethernet Controller 10G X550T (Ethernet 10G 4P X550/I350 rNDC)
+
+pci:v00008086d00001563sv00001028sd00001FA9*
+ ID_MODEL_FROM_DATABASE=Ethernet Controller 10G X550T (Ethernet 10G 4P X550 rNDC)
+
+pci:v00008086d00001563sv00001590sd000000D1*
+ ID_MODEL_FROM_DATABASE=Ethernet Controller 10G X550T (Ethernet 10Gb 2-port 562T Adapter)
+
+pci:v00008086d00001563sv00001590sd000000D2*
+ ID_MODEL_FROM_DATABASE=Ethernet Controller 10G X550T (Ethernet 10Gb 2-port 562FLR-T Adapter)
+
+pci:v00008086d00001563sv000018D4sd00000C08*
+ ID_MODEL_FROM_DATABASE=Ethernet Controller 10G X550T (X550 10Gb 2-port RJ45 OCP Mezz Card MOP81-I-10GT2)
+
pci:v00008086d00001563sv00008086sd00000001*
ID_MODEL_FROM_DATABASE=Ethernet Controller 10G X550T (Ethernet Converged Network Adapter X550-T2)
@@ -66437,6 +67196,12 @@ pci:v00008086d00001572sv00001137sd00000000*
pci:v00008086d00001572sv00001137sd0000013B*
ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+ (Ethernet Converged NIC X710-4)
+pci:v00008086d00001572sv00001590sd00000000*
+ ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+ (Ethernet 10GbE 4P 563SFP+ Adapter)
+
+pci:v00008086d00001572sv00001590sd00000225*
+ ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+ (Ethernet 10GbE 4P 563SFP+ Adapter)
+
pci:v00008086d00001572sv000017AAsd00000000*
ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+ (ThinkServer X710 AnyFabric for 10GbE SFP+)
@@ -66612,19 +67377,19 @@ pci:v00008086d00001587*
ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 20GbE backplane
pci:v00008086d00001587sv0000103Csd00000000*
- ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 20GbE backplane (HP Flex-20 20Gb 2-port 660FLB Adapter)
+ ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 20GbE backplane (HPE Ethernet 10/20Gb 2-port 660FLB Adapter)
pci:v00008086d00001587sv0000103Csd000022FE*
- ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 20GbE backplane (HP Flex-20 20Gb 2-port 660FLB Adapter)
+ ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 20GbE backplane (HPE Ethernet 10/20Gb 2-port 660FLB Adapter)
pci:v00008086d00001588*
ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 20GbE backplane
pci:v00008086d00001588sv0000103Csd00000000*
- ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 20GbE backplane (HP Flex-20 20Gb 2-port 660M Adapter)
+ ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 20GbE backplane (HPE Ethernet 10/20Gb 2-port 660M Adapter)
pci:v00008086d00001588sv0000103Csd000022FF*
- ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 20GbE backplane (HP Flex-20 20Gb 2-port 660M Adapter)
+ ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 20GbE backplane (HPE Ethernet 10/20Gb 2-port 660M Adapter)
pci:v00008086d00001589*
ID_MODEL_FROM_DATABASE=Ethernet Controller X710/X557-AT 10GBASE-T
@@ -66647,6 +67412,39 @@ pci:v00008086d00001589sv00008086sd00000002*
pci:v00008086d00001589sv00008086sd00001003*
ID_MODEL_FROM_DATABASE=Ethernet Controller X710/X557-AT 10GBASE-T (Ethernet Converged Network Adapter X710-T)
+pci:v00008086d0000158A*
+ ID_MODEL_FROM_DATABASE=Ethernet Controller XXV710 for 25GbE backplane
+
+pci:v00008086d0000158B*
+ ID_MODEL_FROM_DATABASE=Ethernet Controller XXV710 for 25GbE SFP28
+
+pci:v00008086d0000158Bsv00008086sd00000000*
+ ID_MODEL_FROM_DATABASE=Ethernet Controller XXV710 for 25GbE SFP28 (Ethernet Network Adapter XXV710)
+
+pci:v00008086d0000158Bsv00008086sd00000001*
+ ID_MODEL_FROM_DATABASE=Ethernet Controller XXV710 for 25GbE SFP28 (Ethernet Network Adapter XXV710-2)
+
+pci:v00008086d0000158Bsv00008086sd00000002*
+ ID_MODEL_FROM_DATABASE=Ethernet Controller XXV710 for 25GbE SFP28 (Ethernet Network Adapter XXV710-2)
+
+pci:v00008086d0000158Bsv00008086sd00000003*
+ ID_MODEL_FROM_DATABASE=Ethernet Controller XXV710 for 25GbE SFP28 (Ethernet Network Adapter XXV710-1)
+
+pci:v00008086d0000158Bsv00008086sd00000004*
+ ID_MODEL_FROM_DATABASE=Ethernet Controller XXV710 for 25GbE SFP28 (Ethernet Network Adapter XXV710-1)
+
+pci:v00008086d0000158Bsv00008086sd00000005*
+ ID_MODEL_FROM_DATABASE=Ethernet Controller XXV710 for 25GbE SFP28 (Ethernet Network Adapter OCP XXV710-2)
+
+pci:v00008086d0000158Bsv00008086sd00000006*
+ ID_MODEL_FROM_DATABASE=Ethernet Controller XXV710 for 25GbE SFP28 (Ethernet Network Adapter OCP XXV710-2)
+
+pci:v00008086d0000158Bsv00008086sd00000007*
+ ID_MODEL_FROM_DATABASE=Ethernet Controller XXV710 for 25GbE SFP28 (Ethernet Network Adapter OCP XXV710-1)
+
+pci:v00008086d0000158Bsv00008086sd00000008*
+ ID_MODEL_FROM_DATABASE=Ethernet Controller XXV710 for 25GbE SFP28 (Ethernet Network Adapter OCP XXV710-1)
+
pci:v00008086d000015A0*
ID_MODEL_FROM_DATABASE=Ethernet Connection (2) I218-LM
@@ -66884,12 +67682,18 @@ pci:v00008086d00001904*
pci:v00008086d00001904sv00001028sd000006F3*
ID_MODEL_FROM_DATABASE=Skylake Host Bridge/DRAM Registers (Latitude 3570)
+pci:v00008086d00001904sv000017AAsd0000382A*
+ ID_MODEL_FROM_DATABASE=Skylake Host Bridge/DRAM Registers (B51-80 Laptop)
+
pci:v00008086d00001905*
ID_MODEL_FROM_DATABASE=Skylake PCIe Controller (x8)
pci:v00008086d00001906*
ID_MODEL_FROM_DATABASE=HD Graphics 510
+pci:v00008086d00001906sv000017AAsd0000382A*
+ ID_MODEL_FROM_DATABASE=HD Graphics 510 (B51-80 Laptop)
+
pci:v00008086d00001908*
ID_MODEL_FROM_DATABASE=Skylake Host Bridge/DRAM Registers
@@ -67043,9 +67847,78 @@ pci:v00008086d00001962*
pci:v00008086d00001962sv0000105Asd00000000*
ID_MODEL_FROM_DATABASE=80960RM (i960RM) Microprocessor (SuperTrak SX6000 I2O CPU)
+pci:v00008086d000019AC*
+ ID_MODEL_FROM_DATABASE=DNV SMBus Contoller - Host
+
+pci:v00008086d000019B0*
+ ID_MODEL_FROM_DATABASE=DNV SATA Controller 0
+
+pci:v00008086d000019B1*
+ ID_MODEL_FROM_DATABASE=DNV SATA Controller 0
+
+pci:v00008086d000019B2*
+ ID_MODEL_FROM_DATABASE=DNV SATA Controller 0
+
+pci:v00008086d000019B3*
+ ID_MODEL_FROM_DATABASE=DNV SATA Controller 0
+
+pci:v00008086d000019B4*
+ ID_MODEL_FROM_DATABASE=DNV SATA Controller 0
+
+pci:v00008086d000019B5*
+ ID_MODEL_FROM_DATABASE=DNV SATA Controller 0
+
+pci:v00008086d000019B6*
+ ID_MODEL_FROM_DATABASE=DNV SATA Controller 0
+
+pci:v00008086d000019B7*
+ ID_MODEL_FROM_DATABASE=DNV SATA Controller 0
+
+pci:v00008086d000019BE*
+ ID_MODEL_FROM_DATABASE=DNV SATA Controller 0
+
+pci:v00008086d000019BF*
+ ID_MODEL_FROM_DATABASE=DNV SATA Controller 0
+
+pci:v00008086d000019C0*
+ ID_MODEL_FROM_DATABASE=DNV SATA Controller 1
+
+pci:v00008086d000019C1*
+ ID_MODEL_FROM_DATABASE=DNV SATA Controller 1
+
+pci:v00008086d000019C2*
+ ID_MODEL_FROM_DATABASE=DNV SATA Controller 1
+
+pci:v00008086d000019C3*
+ ID_MODEL_FROM_DATABASE=DNV SATA Controller 1
+
+pci:v00008086d000019C4*
+ ID_MODEL_FROM_DATABASE=DNV SATA Controller 1
+
+pci:v00008086d000019C5*
+ ID_MODEL_FROM_DATABASE=DNV SATA Controller 1
+
+pci:v00008086d000019C6*
+ ID_MODEL_FROM_DATABASE=DNV SATA Controller 1
+
+pci:v00008086d000019C7*
+ ID_MODEL_FROM_DATABASE=DNV SATA Controller 1
+
+pci:v00008086d000019CE*
+ ID_MODEL_FROM_DATABASE=DNV SATA Controller 1
+
+pci:v00008086d000019CF*
+ ID_MODEL_FROM_DATABASE=DNV SATA Controller 1
+
+pci:v00008086d000019DC*
+ ID_MODEL_FROM_DATABASE=DNV LPC or eSPI
+
pci:v00008086d000019DF*
ID_MODEL_FROM_DATABASE=DNV SMBus controller
+pci:v00008086d000019E0*
+ ID_MODEL_FROM_DATABASE=DNV SPI Controller
+
pci:v00008086d00001A21*
ID_MODEL_FROM_DATABASE=82840 840 [Carmel] Chipset Host Bridge (Hub A)
@@ -67679,6 +68552,9 @@ pci:v00008086d00001E00*
pci:v00008086d00001E01*
ID_MODEL_FROM_DATABASE=7 Series Chipset Family 4-port SATA Controller [IDE mode]
+pci:v00008086d00001E01sv0000144Dsd0000C652*
+ ID_MODEL_FROM_DATABASE=7 Series Chipset Family 4-port SATA Controller [IDE mode] (NP300E5C series laptop)
+
pci:v00008086d00001E02*
ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family 6-port SATA Controller [AHCI mode]
@@ -67700,6 +68576,9 @@ pci:v00008086d00001E03sv00001043sd00001477*
pci:v00008086d00001E03sv00001043sd00001517*
ID_MODEL_FROM_DATABASE=7 Series Chipset Family 6-port SATA Controller [AHCI mode] (Zenbook Prime UX31A)
+pci:v00008086d00001E03sv0000144Dsd0000C652*
+ ID_MODEL_FROM_DATABASE=7 Series Chipset Family 6-port SATA Controller [AHCI mode] (NP300E5C series laptop)
+
pci:v00008086d00001E04*
ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family SATA Controller [RAID mode]
@@ -67718,26 +68597,32 @@ pci:v00008086d00001E08*
pci:v00008086d00001E09*
ID_MODEL_FROM_DATABASE=7 Series Chipset Family 2-port SATA Controller [IDE mode]
+pci:v00008086d00001E09sv0000144Dsd0000C652*
+ ID_MODEL_FROM_DATABASE=7 Series Chipset Family 2-port SATA Controller [IDE mode] (NP300E5C series laptop)
+
pci:v00008086d00001E0E*
ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family SATA Controller [RAID mode]
pci:v00008086d00001E10*
- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 1
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family PCI Express Root Port 1
pci:v00008086d00001E10sv00001043sd0000108D*
- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 1 (VivoBook X202EV)
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family PCI Express Root Port 1 (VivoBook X202EV)
pci:v00008086d00001E10sv00001043sd00001477*
- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 1 (N56VZ)
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family PCI Express Root Port 1 (N56VZ)
pci:v00008086d00001E10sv00001043sd00001517*
- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 1 (Zenbook Prime UX31A)
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family PCI Express Root Port 1 (Zenbook Prime UX31A)
pci:v00008086d00001E10sv00001043sd000084CA*
- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 1 (P8H77-I Motherboard)
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family PCI Express Root Port 1 (P8H77-I Motherboard)
+
+pci:v00008086d00001E10sv0000144Dsd0000C652*
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family PCI Express Root Port 1 (NP300E5C series laptop)
pci:v00008086d00001E10sv00001849sd00001E10*
- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 1 (Motherboard)
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family PCI Express Root Port 1 (Motherboard)
pci:v00008086d00001E12*
ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 2
@@ -67755,16 +68640,19 @@ pci:v00008086d00001E14*
ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 3
pci:v00008086d00001E16*
- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 4
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family PCI Express Root Port 4
pci:v00008086d00001E16sv00001043sd0000108D*
- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 4 (VivoBook X202EV)
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family PCI Express Root Port 4 (VivoBook X202EV)
pci:v00008086d00001E16sv00001043sd00001477*
- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 4 (N56VZ)
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family PCI Express Root Port 4 (N56VZ)
+
+pci:v00008086d00001E16sv0000144Dsd0000C652*
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family PCI Express Root Port 4 (NP300E5C series laptop)
pci:v00008086d00001E16sv00001849sd00001618*
- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 4 (Z77 Extreme4 motherboard)
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family PCI Express Root Port 4 (Z77 Extreme4 motherboard)
pci:v00008086d00001E18*
ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 5
@@ -67791,46 +68679,52 @@ pci:v00008086d00001E1Esv00001849sd00001E1E*
ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 8 (Motherboard)
pci:v00008086d00001E20*
- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family High Definition Audio Controller
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family High Definition Audio Controller
pci:v00008086d00001E20sv00001028sd0000054B*
- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family High Definition Audio Controller (Dell XPS One 2710)
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family High Definition Audio Controller (Dell XPS One 2710)
pci:v00008086d00001E20sv00001043sd0000108D*
- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family High Definition Audio Controller (VivoBook X202EV)
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family High Definition Audio Controller (VivoBook X202EV)
pci:v00008086d00001E20sv00001043sd00001477*
- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family High Definition Audio Controller (N56VZ)
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family High Definition Audio Controller (N56VZ)
pci:v00008086d00001E20sv00001043sd00001517*
- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family High Definition Audio Controller (Zenbook Prime UX31A)
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family High Definition Audio Controller (Zenbook Prime UX31A)
pci:v00008086d00001E20sv00001043sd00008415*
- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family High Definition Audio Controller (P8H77-I Motherboard)
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family High Definition Audio Controller (P8H77-I Motherboard)
pci:v00008086d00001E20sv00001043sd00008445*
- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family High Definition Audio Controller (ASUS P8Z77-V LX Motherboard)
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family High Definition Audio Controller (ASUS P8Z77-V LX Motherboard)
+
+pci:v00008086d00001E20sv0000144Dsd0000C652*
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family High Definition Audio Controller (NP300E5C series laptop)
pci:v00008086d00001E20sv00001849sd00001898*
- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family High Definition Audio Controller (Z77 Extreme4 motherboard)
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family High Definition Audio Controller (Z77 Extreme4 motherboard)
pci:v00008086d00001E22*
- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family SMBus Controller
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family SMBus Controller
pci:v00008086d00001E22sv00001043sd0000108D*
- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family SMBus Controller (VivoBook X202EV)
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family SMBus Controller (VivoBook X202EV)
pci:v00008086d00001E22sv00001043sd00001477*
- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family SMBus Controller (N56VZ)
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family SMBus Controller (N56VZ)
pci:v00008086d00001E22sv00001043sd00001517*
- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family SMBus Controller (Zenbook Prime UX31A)
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family SMBus Controller (Zenbook Prime UX31A)
pci:v00008086d00001E22sv00001043sd000084CA*
- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family SMBus Controller (P8 series motherboard)
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family SMBus Controller (P8 series motherboard)
+
+pci:v00008086d00001E22sv0000144Dsd0000C652*
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family SMBus Controller (NP300E5C series laptop)
pci:v00008086d00001E22sv00001849sd00001E22*
- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family SMBus Controller (Motherboard)
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family SMBus Controller (Motherboard)
pci:v00008086d00001E24*
ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family Thermal Management Controller
@@ -67842,40 +68736,46 @@ pci:v00008086d00001E25*
ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family DMI to PCI Bridge
pci:v00008086d00001E26*
- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB Enhanced Host Controller #1
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family USB Enhanced Host Controller #1
pci:v00008086d00001E26sv00001043sd0000108D*
- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB Enhanced Host Controller #1 (VivoBook X202EV)
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family USB Enhanced Host Controller #1 (VivoBook X202EV)
pci:v00008086d00001E26sv00001043sd00001477*
- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB Enhanced Host Controller #1 (N56VZ)
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family USB Enhanced Host Controller #1 (N56VZ)
pci:v00008086d00001E26sv00001043sd00001517*
- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB Enhanced Host Controller #1 (Zenbook Prime UX31A)
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family USB Enhanced Host Controller #1 (Zenbook Prime UX31A)
pci:v00008086d00001E26sv00001043sd000084CA*
- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB Enhanced Host Controller #1 (P8 series motherboard)
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family USB Enhanced Host Controller #1 (P8 series motherboard)
+
+pci:v00008086d00001E26sv0000144Dsd0000C652*
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family USB Enhanced Host Controller #1 (NP300E5C series laptop)
pci:v00008086d00001E26sv00001849sd00001E26*
- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB Enhanced Host Controller #1 (Motherboard)
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family USB Enhanced Host Controller #1 (Motherboard)
pci:v00008086d00001E2D*
- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family USB Enhanced Host Controller #2
pci:v00008086d00001E2Dsv00001043sd0000108D*
- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2 (VivoBook X202EV)
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family USB Enhanced Host Controller #2 (VivoBook X202EV)
pci:v00008086d00001E2Dsv00001043sd00001477*
- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2 (N56VZ)
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family USB Enhanced Host Controller #2 (N56VZ)
pci:v00008086d00001E2Dsv00001043sd00001517*
- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2 (Zenbook Prime UX31A)
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family USB Enhanced Host Controller #2 (Zenbook Prime UX31A)
pci:v00008086d00001E2Dsv00001043sd000084CA*
- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2 (P8 series motherboard)
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family USB Enhanced Host Controller #2 (P8 series motherboard)
+
+pci:v00008086d00001E2Dsv0000144Dsd0000C652*
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family USB Enhanced Host Controller #2 (NP300E5C series laptop)
pci:v00008086d00001E2Dsv00001849sd00001E2D*
- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2 (Motherboard)
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family USB Enhanced Host Controller #2 (Motherboard)
pci:v00008086d00001E31*
ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB xHCI Host Controller
@@ -67902,22 +68802,25 @@ pci:v00008086d00001E33*
ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family LAN Controller
pci:v00008086d00001E3A*
- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family MEI Controller #1
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family MEI Controller #1
pci:v00008086d00001E3Asv00001043sd0000108D*
- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family MEI Controller #1 (VivoBook X202EV)
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family MEI Controller #1 (VivoBook X202EV)
pci:v00008086d00001E3Asv00001043sd00001477*
- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family MEI Controller #1 (N56VZ)
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family MEI Controller #1 (N56VZ)
pci:v00008086d00001E3Asv00001043sd00001517*
- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family MEI Controller #1 (Zenbook Prime UX31A)
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family MEI Controller #1 (Zenbook Prime UX31A)
pci:v00008086d00001E3Asv00001043sd000084CA*
- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family MEI Controller #1 (P8 series motherboard)
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family MEI Controller #1 (P8 series motherboard)
+
+pci:v00008086d00001E3Asv0000144Dsd0000C652*
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family MEI Controller #1 (NP300E5C series laptop)
pci:v00008086d00001E3Asv00001849sd00001E3A*
- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family MEI Controller #1 (Motherboard)
+ ID_MODEL_FROM_DATABASE=7 Series/C216 Chipset Family MEI Controller #1 (Motherboard)
pci:v00008086d00001E3B*
ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family MEI Controller #2
@@ -68030,6 +68933,9 @@ pci:v00008086d00001E5C*
pci:v00008086d00001E5D*
ID_MODEL_FROM_DATABASE=HM75 Express Chipset LPC Controller
+pci:v00008086d00001E5Dsv0000144Dsd0000C652*
+ ID_MODEL_FROM_DATABASE=HM75 Express Chipset LPC Controller (NP300E5C series laptop)
+
pci:v00008086d00001E5E*
ID_MODEL_FROM_DATABASE=7 Series Chipset Family LPC Controller
@@ -68834,6 +69740,9 @@ pci:v00008086d00002448sv00001458sd00005000*
pci:v00008086d00002448sv00001734sd00001055*
ID_MODEL_FROM_DATABASE=82801 Mobile PCI Bridge (Amilo M1420)
+pci:v00008086d00002448sv000017AAsd00002013*
+ ID_MODEL_FROM_DATABASE=82801 Mobile PCI Bridge (ThinkPad R60e)
+
pci:v00008086d00002448sv000017AAsd000020AE*
ID_MODEL_FROM_DATABASE=82801 Mobile PCI Bridge (ThinkPad T61/R61)
@@ -70430,6 +71339,15 @@ pci:v00008086d000024F0sv000010A9sd00008030*
pci:v00008086d000024F0sv000010A9sd00008031*
ID_MODEL_FROM_DATABASE=Omni-Path HFI Silicon 100 Series [discrete] (Omni-path HFI 100 Series, 2-port B-board)
+pci:v00008086d000024F0sv00001590sd000000E7*
+ ID_MODEL_FROM_DATABASE=Omni-Path HFI Silicon 100 Series [discrete] (100Gb 1-port OP101 QSFP28 x8 PCIe Gen3 with Intel Omni-Path Adapter)
+
+pci:v00008086d000024F0sv00001590sd000000E8*
+ ID_MODEL_FROM_DATABASE=Omni-Path HFI Silicon 100 Series [discrete] (100Gb 1-port OP101 QSFP28 x16 PCIe Gen3 with Intel Omni-Path Adapter)
+
+pci:v00008086d000024F0sv00001590sd0000021C*
+ ID_MODEL_FROM_DATABASE=Omni-Path HFI Silicon 100 Series [discrete] (Apollo 100Gb 1-port Intel Omni-Path Architecture 860z Mezzanine FIO Adapter)
+
pci:v00008086d000024F0sv000015D9sd00000934*
ID_MODEL_FROM_DATABASE=Omni-Path HFI Silicon 100 Series [discrete] (Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x16, SIOM Module)
@@ -72059,6 +72977,9 @@ pci:v00008086d000027A0sv0000103Csd000030A1*
pci:v00008086d000027A0sv0000103Csd000030A3*
ID_MODEL_FROM_DATABASE=Mobile 945GM/PM/GMS, 943/940GML and 945GT Express Memory Controller Hub (Compaq nw8440)
+pci:v00008086d000027A0sv0000103Csd000030D5*
+ ID_MODEL_FROM_DATABASE=Mobile 945GM/PM/GMS, 943/940GML and 945GT Express Memory Controller Hub (530 Laptop)
+
pci:v00008086d000027A0sv00001043sd00001237*
ID_MODEL_FROM_DATABASE=Mobile 945GM/PM/GMS, 943/940GML and 945GT Express Memory Controller Hub (A6J-Q008)
@@ -72089,6 +73010,9 @@ pci:v00008086d000027A2*
pci:v00008086d000027A2sv0000103Csd000030A1*
ID_MODEL_FROM_DATABASE=Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller (NC2400)
+pci:v00008086d000027A2sv0000103Csd000030D5*
+ ID_MODEL_FROM_DATABASE=Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller (530 Laptop)
+
pci:v00008086d000027A2sv000017AAsd0000201A*
ID_MODEL_FROM_DATABASE=Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller (ThinkPad R60/T60/X60 series)
@@ -72101,6 +73025,9 @@ pci:v00008086d000027A6*
pci:v00008086d000027A6sv0000103Csd000030A1*
ID_MODEL_FROM_DATABASE=Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller (NC2400)
+pci:v00008086d000027A6sv0000103Csd000030D5*
+ ID_MODEL_FROM_DATABASE=Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller (530 Laptop)
+
pci:v00008086d000027A6sv00001775sd000011CC*
ID_MODEL_FROM_DATABASE=Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller (CC11/CL11 integrated graphics (secondary))
@@ -72137,6 +73064,9 @@ pci:v00008086d000027B8*
pci:v00008086d000027B8sv00001028sd000001E6*
ID_MODEL_FROM_DATABASE=82801GB/GR (ICH7 Family) LPC Interface Bridge (PowerEdge 860)
+pci:v00008086d000027B8sv0000103Csd00002A8C*
+ ID_MODEL_FROM_DATABASE=82801GB/GR (ICH7 Family) LPC Interface Bridge (Compaq 500B Microtower)
+
pci:v00008086d000027B8sv00001043sd00008179*
ID_MODEL_FROM_DATABASE=82801GB/GR (ICH7 Family) LPC Interface Bridge (P5KPL-VM Motherboard)
@@ -72167,6 +73097,9 @@ pci:v00008086d000027B9sv0000103Csd000030A1*
pci:v00008086d000027B9sv0000103Csd000030A3*
ID_MODEL_FROM_DATABASE=82801GBM (ICH7-M) LPC Interface Bridge (Compaq nw8440)
+pci:v00008086d000027B9sv0000103Csd000030D5*
+ ID_MODEL_FROM_DATABASE=82801GBM (ICH7-M) LPC Interface Bridge (530 Laptop)
+
pci:v00008086d000027B9sv00001071sd00008209*
ID_MODEL_FROM_DATABASE=82801GBM (ICH7-M) LPC Interface Bridge (Medion MIM 2240 Notebook PC [MD98100])
@@ -72212,6 +73145,9 @@ pci:v00008086d000027C0sv00001028sd000001DF*
pci:v00008086d000027C0sv00001028sd000001E6*
ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SATA Controller [IDE mode] (PowerEdge 860)
+pci:v00008086d000027C0sv0000103Csd00002A8C*
+ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SATA Controller [IDE mode] (Compaq 500B Microtower)
+
pci:v00008086d000027C0sv00001043sd00008179*
ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SATA Controller [IDE mode] (P5KPL-VM Motherboard)
@@ -72296,6 +73232,9 @@ pci:v00008086d000027C5sv0000103Csd0000309F*
pci:v00008086d000027C5sv0000103Csd000030A3*
ID_MODEL_FROM_DATABASE=82801GBM/GHM (ICH7-M Family) SATA Controller [AHCI mode] (Compaq nw8440)
+pci:v00008086d000027C5sv0000103Csd000030D5*
+ ID_MODEL_FROM_DATABASE=82801GBM/GHM (ICH7-M Family) SATA Controller [AHCI mode] (530 Laptop)
+
pci:v00008086d000027C5sv000017AAsd0000200D*
ID_MODEL_FROM_DATABASE=82801GBM/GHM (ICH7-M Family) SATA Controller [AHCI mode] (ThinkPad R60/T60/X60 series)
@@ -72323,6 +73262,9 @@ pci:v00008086d000027C8sv00001028sd000001E6*
pci:v00008086d000027C8sv0000103Csd00002A3B*
ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #1 (Pavilion A1512X)
+pci:v00008086d000027C8sv0000103Csd00002A8C*
+ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #1 (Compaq 500B Microtower)
+
pci:v00008086d000027C8sv0000103Csd0000309F*
ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #1 (Compaq nx9420 Notebook)
@@ -72332,6 +73274,9 @@ pci:v00008086d000027C8sv0000103Csd000030A1*
pci:v00008086d000027C8sv0000103Csd000030A3*
ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #1 (Compaq nw8440)
+pci:v00008086d000027C8sv0000103Csd000030D5*
+ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #1 (530 Laptop)
+
pci:v00008086d000027C8sv00001043sd00001237*
ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #1 (A6J-Q008)
@@ -72392,6 +73337,9 @@ pci:v00008086d000027C9sv00001028sd000001E6*
pci:v00008086d000027C9sv0000103Csd00002A3B*
ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #2 (Pavilion A1512X)
+pci:v00008086d000027C9sv0000103Csd00002A8C*
+ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #2 (Compaq 500B Microtower)
+
pci:v00008086d000027C9sv0000103Csd0000309F*
ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #2 (Compaq nx9420 Notebook)
@@ -72461,6 +73409,9 @@ pci:v00008086d000027CAsv00001028sd000001E6*
pci:v00008086d000027CAsv0000103Csd00002A3B*
ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #3 (Pavilion A1512X)
+pci:v00008086d000027CAsv0000103Csd00002A8C*
+ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #3 (Compaq 500B Microtower)
+
pci:v00008086d000027CAsv0000103Csd0000309F*
ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #3 (Compaq nx9420 Notebook)
@@ -72524,6 +73475,9 @@ pci:v00008086d000027CBsv00001028sd000001DF*
pci:v00008086d000027CBsv0000103Csd00002A3B*
ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #4 (Pavilion A1512X)
+pci:v00008086d000027CBsv0000103Csd00002A8C*
+ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #4 (Compaq 500B Microtower)
+
pci:v00008086d000027CBsv0000103Csd0000309F*
ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #4 (Compaq nx9420 Notebook)
@@ -72590,6 +73544,9 @@ pci:v00008086d000027CCsv00001028sd000001E6*
pci:v00008086d000027CCsv0000103Csd00002A3B*
ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB2 EHCI Controller (Pavilion A1512X)
+pci:v00008086d000027CCsv0000103Csd00002A8C*
+ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB2 EHCI Controller (Compaq 500B Microtower)
+
pci:v00008086d000027CCsv0000103Csd0000309F*
ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB2 EHCI Controller (Compaq nx9420 Notebook)
@@ -72599,6 +73556,9 @@ pci:v00008086d000027CCsv0000103Csd000030A1*
pci:v00008086d000027CCsv0000103Csd000030A3*
ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB2 EHCI Controller (Compaq nw8440)
+pci:v00008086d000027CCsv0000103Csd000030D5*
+ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB2 EHCI Controller (530 Laptop)
+
pci:v00008086d000027CCsv00001043sd00001237*
ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB2 EHCI Controller (A6J-Q008)
@@ -72659,6 +73619,9 @@ pci:v00008086d000027D0sv00001462sd00007418*
pci:v00008086d000027D0sv00001775sd000011CC*
ID_MODEL_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 1 (CC11/CL11)
+pci:v00008086d000027D0sv000017AAsd00002011*
+ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 1 (ThinkPad R60e)
+
pci:v00008086d000027D0sv00008086sd0000544B*
ID_MODEL_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 1 (Desktop Board D425KT)
@@ -72683,6 +73646,9 @@ pci:v00008086d000027D2sv00001462sd00007418*
pci:v00008086d000027D2sv00001775sd000011CC*
ID_MODEL_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 2 (CC11/CL11)
+pci:v00008086d000027D2sv000017AAsd00002011*
+ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 2 (ThinkPad R60e)
+
pci:v00008086d000027D2sv00008086sd0000544B*
ID_MODEL_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 2 (Desktop Board D425KT)
@@ -72701,6 +73667,9 @@ pci:v00008086d000027D4sv00001462sd00007418*
pci:v00008086d000027D4sv00001775sd000011CC*
ID_MODEL_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 3 (CC11/CL11)
+pci:v00008086d000027D4sv000017AAsd00002011*
+ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 3 (ThinkPad R60e)
+
pci:v00008086d000027D4sv00008086sd0000544B*
ID_MODEL_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 3 (Desktop Board D425KT)
@@ -72722,6 +73691,9 @@ pci:v00008086d000027D6sv00001462sd00007418*
pci:v00008086d000027D6sv00001775sd000011CC*
ID_MODEL_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 4 (CC11/CL11)
+pci:v00008086d000027D6sv000017AAsd00002011*
+ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 4 (ThinkPad R60e)
+
pci:v00008086d000027D6sv00008086sd0000544B*
ID_MODEL_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 4 (Desktop Board D425KT)
@@ -72737,6 +73709,9 @@ pci:v00008086d000027D8sv00001028sd000001D7*
pci:v00008086d000027D8sv0000103Csd00002A3B*
ID_MODEL_FROM_DATABASE=NM10/ICH7 Family High Definition Audio Controller (Pavilion A1512X)
+pci:v00008086d000027D8sv0000103Csd00002A8C*
+ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family High Definition Audio Controller (Compaq 500B Microtower)
+
pci:v00008086d000027D8sv0000103Csd0000309F*
ID_MODEL_FROM_DATABASE=NM10/ICH7 Family High Definition Audio Controller (Compaq nx9420 Notebook)
@@ -72746,6 +73721,9 @@ pci:v00008086d000027D8sv0000103Csd000030A1*
pci:v00008086d000027D8sv0000103Csd000030A3*
ID_MODEL_FROM_DATABASE=NM10/ICH7 Family High Definition Audio Controller (Compaq nw8440)
+pci:v00008086d000027D8sv0000103Csd000030D5*
+ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family High Definition Audio Controller (530 Laptop)
+
pci:v00008086d000027D8sv00001043sd00001123*
ID_MODEL_FROM_DATABASE=NM10/ICH7 Family High Definition Audio Controller (A6J-Q008)
@@ -72839,6 +73817,9 @@ pci:v00008086d000027DAsv00001028sd000001E6*
pci:v00008086d000027DAsv0000103Csd00002A3B*
ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SMBus Controller (Pavilion A1512X)
+pci:v00008086d000027DAsv0000103Csd00002A8C*
+ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SMBus Controller (Compaq 500B Microtower)
+
pci:v00008086d000027DAsv00001043sd00008179*
ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SMBus Controller (P5KPL-VM Motherboard)
@@ -72914,6 +73895,9 @@ pci:v00008086d000027DFsv00001028sd000001E6*
pci:v00008086d000027DFsv0000103Csd00002A3B*
ID_MODEL_FROM_DATABASE=82801G (ICH7 Family) IDE Controller (Pavilion A1512X)
+pci:v00008086d000027DFsv0000103Csd00002A8C*
+ ID_MODEL_FROM_DATABASE=82801G (ICH7 Family) IDE Controller (Compaq 500B Microtower)
+
pci:v00008086d000027DFsv0000103Csd0000309F*
ID_MODEL_FROM_DATABASE=82801G (ICH7 Family) IDE Controller (Compaq nx9420 Notebook)
@@ -72923,6 +73907,9 @@ pci:v00008086d000027DFsv0000103Csd000030A1*
pci:v00008086d000027DFsv0000103Csd000030A3*
ID_MODEL_FROM_DATABASE=82801G (ICH7 Family) IDE Controller (Compaq nw8440)
+pci:v00008086d000027DFsv0000103Csd000030D5*
+ ID_MODEL_FROM_DATABASE=82801G (ICH7 Family) IDE Controller (530 Laptop)
+
pci:v00008086d000027DFsv00001043sd00001237*
ID_MODEL_FROM_DATABASE=82801G (ICH7 Family) IDE Controller (A6J-Q008)
@@ -73055,6 +74042,24 @@ pci:v00008086d00002825sv00001462sd00007235*
pci:v00008086d00002826*
ID_MODEL_FROM_DATABASE=C600/X79 series chipset SATA RAID Controller
+pci:v00008086d00002826sv00001D49sd00000100*
+ ID_MODEL_FROM_DATABASE=C600/X79 series chipset SATA RAID Controller (ThinkSystem RAID 331)
+
+pci:v00008086d00002826sv00001D49sd00000101*
+ ID_MODEL_FROM_DATABASE=C600/X79 series chipset SATA RAID Controller (ThinkSystem RAID 331)
+
+pci:v00008086d00002826sv00001D49sd00000102*
+ ID_MODEL_FROM_DATABASE=C600/X79 series chipset SATA RAID Controller (ThinkSystem RAID 331)
+
+pci:v00008086d00002826sv00001D49sd00000103*
+ ID_MODEL_FROM_DATABASE=C600/X79 series chipset SATA RAID Controller (ThinkSystem RAID 331)
+
+pci:v00008086d00002826sv00001D49sd00000104*
+ ID_MODEL_FROM_DATABASE=C600/X79 series chipset SATA RAID Controller (ThinkSystem RAID 331)
+
+pci:v00008086d00002826sv00001D49sd00000105*
+ ID_MODEL_FROM_DATABASE=C600/X79 series chipset SATA RAID Controller (ThinkSystem RAID 331)
+
pci:v00008086d00002827*
ID_MODEL_FROM_DATABASE=C610/X99 series chipset sSATA Controller [RAID mode]
@@ -75311,12 +76316,18 @@ pci:v00008086d00002E29*
pci:v00008086d00002E30*
ID_MODEL_FROM_DATABASE=4 Series Chipset DRAM Controller
+pci:v00008086d00002E30sv0000103Csd00002A8C*
+ ID_MODEL_FROM_DATABASE=4 Series Chipset DRAM Controller (Compaq 500B Microtower)
+
pci:v00008086d00002E31*
ID_MODEL_FROM_DATABASE=4 Series Chipset PCI Express Root Port
pci:v00008086d00002E32*
ID_MODEL_FROM_DATABASE=4 Series Chipset Integrated Graphics Controller
+pci:v00008086d00002E32sv0000103Csd00002A8C*
+ ID_MODEL_FROM_DATABASE=4 Series Chipset Integrated Graphics Controller (Compaq 500B Microtower)
+
pci:v00008086d00002E33*
ID_MODEL_FROM_DATABASE=4 Series Chipset Integrated Graphics Controller
@@ -75485,6 +76496,15 @@ pci:v00008086d00002F0A*
pci:v00008086d00002F0B*
ID_MODEL_FROM_DATABASE=Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 3
+pci:v00008086d00002F0D*
+ ID_MODEL_FROM_DATABASE=Haswell Xeon Non-Transparent Bridge (Back-to-back)
+
+pci:v00008086d00002F0E*
+ ID_MODEL_FROM_DATABASE=Haswell Xeon Non-Transparent Bridge (Primary Side)
+
+pci:v00008086d00002F0F*
+ ID_MODEL_FROM_DATABASE=Haswell Xeon Non-Transparent Bridge (Secondary Side)
+
pci:v00008086d00002F10*
ID_MODEL_FROM_DATABASE=Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug
@@ -76745,11 +77765,11 @@ pci:v00008086d000037CD*
pci:v00008086d000037CE*
ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 10GbE backplane
-pci:v00008086d000037CEsv00001590sd00000200*
+pci:v00008086d000037CEsv00001590sd00000215*
ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 10GbE backplane (Ethernet 10Gb 2-port 568i Adapter)
-pci:v00008086d000037CEsv00008086sd00000215*
- ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 10GbE backplane (Ethernet 10Gb 2-port 568i Adapter)
+pci:v00008086d000037CEsv000017AAsd00004023*
+ ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 10GbE backplane (Intel Ethernet Connection X722 for 10GbE backplane)
pci:v00008086d000037CF*
ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 10GbE QSFP+
@@ -76757,12 +77777,33 @@ pci:v00008086d000037CF*
pci:v00008086d000037D0*
ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 10GbE SFP+
+pci:v00008086d000037D0sv000017AAsd00004020*
+ ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 10GbE SFP+ (Intel Ethernet Connection X722 for 10G SFP+)
+
+pci:v00008086d000037D0sv000017AAsd00004021*
+ ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 10GbE SFP+ (Intel Ethernet Connection X722 for 10G SFP+)
+
pci:v00008086d000037D1*
ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 1GbE
+pci:v00008086d000037D1sv000017AAsd00004020*
+ ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 1GbE (Intel Ethernet Connection X722 for 1GbE)
+
+pci:v00008086d000037D1sv000017AAsd00004021*
+ ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 1GbE (Intel Ethernet Connection X722 for 1GbE)
+
+pci:v00008086d000037D1sv000017AAsd00004022*
+ ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 1GbE (Intel Ethernet Connection X722 for 1GbE)
+
pci:v00008086d000037D2*
ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 10GBASE-T
+pci:v00008086d000037D2sv000017AAsd00004020*
+ ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 10GBASE-T (Intel Ethernet Connection X722 for 10GBASE)
+
+pci:v00008086d000037D2sv000017AAsd00004021*
+ ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 10GBASE-T (Intel Ethernet Connection X722 for 10GBASE)
+
pci:v00008086d000037D3*
ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 10GbE SFP+
@@ -78017,6 +79058,9 @@ pci:v00008086d00004224*
pci:v00008086d00004227*
ID_MODEL_FROM_DATABASE=PRO/Wireless 3945ABG [Golan] Network Connection
+pci:v00008086d00004227sv00008086sd00001010*
+ ID_MODEL_FROM_DATABASE=PRO/Wireless 3945ABG [Golan] Network Connection (ThinkPad R60e)
+
pci:v00008086d00004227sv00008086sd00001011*
ID_MODEL_FROM_DATABASE=PRO/Wireless 3945ABG [Golan] Network Connection (ThinkPad T60/R60e/X60s)
@@ -80396,24 +81440,51 @@ pci:v00008086d00009D03*
pci:v00008086d00009D03sv00001028sd000006F3*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP SATA Controller [AHCI mode] (Latitude 3570)
+pci:v00008086d00009D03sv000017AAsd0000382A*
+ ID_MODEL_FROM_DATABASE=Sunrise Point-LP SATA Controller [AHCI mode] (B51-80 Laptop)
+
pci:v00008086d00009D14*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP PCI Express Root Port #5
+pci:v00008086d00009D14sv000017AAsd0000382A*
+ ID_MODEL_FROM_DATABASE=Sunrise Point-LP PCI Express Root Port #5 (B51-80 Laptop)
+
pci:v00008086d00009D15*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP PCI Express Root Port #6
+pci:v00008086d00009D15sv000017AAsd0000382A*
+ ID_MODEL_FROM_DATABASE=Sunrise Point-LP PCI Express Root Port #6 (B51-80 Laptop)
+
+pci:v00008086d00009D16*
+ ID_MODEL_FROM_DATABASE=Sunrise Point-LP PCI Express Root Port #7
+
+pci:v00008086d00009D17*
+ ID_MODEL_FROM_DATABASE=Sunrise Point-LP PCI Express Root Port #8
+
+pci:v00008086d00009D18*
+ ID_MODEL_FROM_DATABASE=Sunrise Point-LP PCI Express Root Port #9
+
+pci:v00008086d00009D18sv000017AAsd0000382A*
+ ID_MODEL_FROM_DATABASE=Sunrise Point-LP PCI Express Root Port #9 (B51-80 Laptop)
+
pci:v00008086d00009D21*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP PMC
pci:v00008086d00009D21sv00001028sd000006F3*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP PMC (Latitude 3570)
+pci:v00008086d00009D21sv000017AAsd0000382A*
+ ID_MODEL_FROM_DATABASE=Sunrise Point-LP PMC (B51-80 Laptop)
+
pci:v00008086d00009D23*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP SMBus
pci:v00008086d00009D23sv00001028sd000006F3*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP SMBus (Latitude 3570)
+pci:v00008086d00009D23sv000017AAsd0000382A*
+ ID_MODEL_FROM_DATABASE=Sunrise Point-LP SMBus (B51-80 Laptop)
+
pci:v00008086d00009D27*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP Serial IO UART Controller #0
@@ -80435,18 +81506,33 @@ pci:v00008086d00009D2F*
pci:v00008086d00009D2Fsv00001028sd000006F3*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP USB 3.0 xHCI Controller (Latitude 3570)
+pci:v00008086d00009D2Fsv000017AAsd0000382A*
+ ID_MODEL_FROM_DATABASE=Sunrise Point-LP USB 3.0 xHCI Controller (B51-80 Laptop)
+
pci:v00008086d00009D31*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP Thermal subsystem
pci:v00008086d00009D31sv00001028sd000006F3*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP Thermal subsystem (Latitude 3570)
+pci:v00008086d00009D31sv000017AAsd0000382A*
+ ID_MODEL_FROM_DATABASE=Sunrise Point-LP Thermal subsystem (B51-80 Laptop)
+
pci:v00008086d00009D3A*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP CSME HECI #1
pci:v00008086d00009D3Asv00001028sd000006F3*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP CSME HECI #1 (Latitude 3570)
+pci:v00008086d00009D3Asv000017AAsd0000382A*
+ ID_MODEL_FROM_DATABASE=Sunrise Point-LP CSME HECI #1 (B51-80 Laptop)
+
+pci:v00008086d00009D43*
+ ID_MODEL_FROM_DATABASE=Sunrise Point-LP LPC Controller
+
+pci:v00008086d00009D43sv000017AAsd0000382A*
+ ID_MODEL_FROM_DATABASE=Sunrise Point-LP LPC Controller (B51-80 Laptop)
+
pci:v00008086d00009D48*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP LPC Controller
@@ -80486,6 +81572,9 @@ pci:v00008086d00009D70*
pci:v00008086d00009D70sv00001028sd000006F3*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP HD Audio (Latitude 3570)
+pci:v00008086d00009D70sv000017AAsd0000382A*
+ ID_MODEL_FROM_DATABASE=Sunrise Point-LP HD Audio (B51-80 Laptop)
+
pci:v00008086d0000A000*
ID_MODEL_FROM_DATABASE=Atom Processor D4xx/D5xx/N4xx/N5xx DMI Bridge
@@ -80786,6 +81875,9 @@ pci:v00008086d0000A170*
pci:v00008086d0000A182*
ID_MODEL_FROM_DATABASE=Lewisburg SATA Controller [AHCI mode]
+pci:v00008086d0000A186*
+ ID_MODEL_FROM_DATABASE=Lewisburg SATA Controller [RAID mode]
+
pci:v00008086d0000A190*
ID_MODEL_FROM_DATABASE=Lewisburg PCI Express Root Port #1
@@ -80891,6 +81983,9 @@ pci:v00008086d0000A1C7*
pci:v00008086d0000A1D2*
ID_MODEL_FROM_DATABASE=Lewisburg SSATA Controller [AHCI mode]
+pci:v00008086d0000A1D6*
+ ID_MODEL_FROM_DATABASE=Lewisburg SSATA Controller [RAID mode]
+
pci:v00008086d0000A1E7*
ID_MODEL_FROM_DATABASE=Lewisburg PCI Express Root Port #17
@@ -80924,6 +82019,30 @@ pci:v00008086d0000A1FB*
pci:v00008086d0000A1FC*
ID_MODEL_FROM_DATABASE=Lewisburg IE: HECI #3
+pci:v00008086d0000A202*
+ ID_MODEL_FROM_DATABASE=Lewisburg SATA Controller [AHCI mode]
+
+pci:v00008086d0000A206*
+ ID_MODEL_FROM_DATABASE=Lewisburg SATA Controller [RAID mode]
+
+pci:v00008086d0000A223*
+ ID_MODEL_FROM_DATABASE=Lewisburg SMBus
+
+pci:v00008086d0000A224*
+ ID_MODEL_FROM_DATABASE=Lewisburg SPI Controller
+
+pci:v00008086d0000A242*
+ ID_MODEL_FROM_DATABASE=Lewisburg LPC or eSPI Controller
+
+pci:v00008086d0000A243*
+ ID_MODEL_FROM_DATABASE=Lewisburg LPC or eSPI Controller
+
+pci:v00008086d0000A252*
+ ID_MODEL_FROM_DATABASE=Lewisburg SSATA Controller [AHCI mode]
+
+pci:v00008086d0000A256*
+ ID_MODEL_FROM_DATABASE=Lewisburg SSATA Controller [RAID mode]
+
pci:v00008086d0000A620*
ID_MODEL_FROM_DATABASE=6400/6402 Advanced Memory Buffer (AMB)
diff --git a/hwdb/20-usb-vendor-model.hwdb b/hwdb/20-usb-vendor-model.hwdb
index fec0fb4daa..ec0c26fc35 100644
--- a/hwdb/20-usb-vendor-model.hwdb
+++ b/hwdb/20-usb-vendor-model.hwdb
@@ -287,9 +287,15 @@ usb:v03EBp2140*
usb:v03EBp2141*
ID_MODEL_FROM_DATABASE=ICE debugger
+usb:v03EBp2145*
+ ID_MODEL_FROM_DATABASE=ATMEGA328P-XMINI (CDC ACM)
+
usb:v03EBp2310*
ID_MODEL_FROM_DATABASE=EVK11xx evaluation board
+usb:v03EBp2404*
+ ID_MODEL_FROM_DATABASE=The Micro
+
usb:v03EBp2FE4*
ID_MODEL_FROM_DATABASE=ATxmega32A4U DFU bootloader
@@ -1058,6 +1064,9 @@ usb:v03F0p2212*
usb:v03F0p2217*
ID_MODEL_FROM_DATABASE=color LaserJet 9500 MFP
+usb:v03F0p222A*
+ ID_MODEL_FROM_DATABASE=LaserJet Pro MFP M125nw
+
usb:v03F0p2302*
ID_MODEL_FROM_DATABASE=PhotoSmart 7600 series
@@ -1328,6 +1337,9 @@ usb:v03F0p3902*
usb:v03F0p3912*
ID_MODEL_FROM_DATABASE=Officejet Pro 8500
+usb:v03F0p3917*
+ ID_MODEL_FROM_DATABASE=LaserJet P2014
+
usb:v03F0p3A02*
ID_MODEL_FROM_DATABASE=PhotoSmart 7150
@@ -1814,6 +1826,9 @@ usb:v03F0p8804*
usb:v03F0p8904*
ID_MODEL_FROM_DATABASE=DeskJet 6940 series
+usb:v03F0p8911*
+ ID_MODEL_FROM_DATABASE=Deskjet 1050 J410
+
usb:v03F0p8C07*
ID_MODEL_FROM_DATABASE=Digital Stereo Headset
@@ -6207,7 +6222,7 @@ usb:v045Ep0084*
ID_MODEL_FROM_DATABASE=Basic Optical Mouse
usb:v045Ep008A*
- ID_MODEL_FROM_DATABASE=Wireless Keyboard and Mouse
+ ID_MODEL_FROM_DATABASE=Wireless Optical Desktop Receiver 2.0A
usb:v045Ep008B*
ID_MODEL_FROM_DATABASE=Dual Receiver Wireless Mouse (IntelliPoint)
@@ -6863,6 +6878,9 @@ usb:v045Ep0797*
usb:v045Ep07A5*
ID_MODEL_FROM_DATABASE=Wireless Receiver 1461C
+usb:v045Ep07B9*
+ ID_MODEL_FROM_DATABASE=Wired Keyboard 200
+
usb:v045Ep07CA*
ID_MODEL_FROM_DATABASE=Surface Pro 3 Docking Station Audio Device
@@ -7598,6 +7616,9 @@ usb:v046Dp0B02*
usb:v046Dp8801*
ID_MODEL_FROM_DATABASE=Video Camera
+usb:v046DpB014*
+ ID_MODEL_FROM_DATABASE=Bluetooth Mouse M336/M337/M535
+
usb:v046DpB305*
ID_MODEL_FROM_DATABASE=BT Mini-Receiver
@@ -7955,6 +7976,9 @@ usb:v046DpC22D*
usb:v046DpC22E*
ID_MODEL_FROM_DATABASE=G510 Gaming Keyboard onboard audio
+usb:v046DpC231*
+ ID_MODEL_FROM_DATABASE=G13 Virtual Mouse
+
usb:v046DpC245*
ID_MODEL_FROM_DATABASE=G400 Optical Mouse
@@ -8021,6 +8045,9 @@ usb:v046DpC2A0*
usb:v046DpC2A1*
ID_MODEL_FROM_DATABASE=WingMan Force Feedback Mouse
+usb:v046DpC2AB*
+ ID_MODEL_FROM_DATABASE=G13 Joystick
+
usb:v046DpC301*
ID_MODEL_FROM_DATABASE=iTouch Keyboard
@@ -8093,6 +8120,9 @@ usb:v046DpC31C*
usb:v046DpC31D*
ID_MODEL_FROM_DATABASE=Media Keyboard K200
+usb:v046DpC332*
+ ID_MODEL_FROM_DATABASE=G502 Proteus Spectrum Optical Mouse
+
usb:v046DpC401*
ID_MODEL_FROM_DATABASE=TrackMan Marble Wheel
@@ -9170,6 +9200,9 @@ usb:v0482p0203*
usb:v0482p0204*
ID_MODEL_FROM_DATABASE=iBurst Terminal
+usb:v0482p0408*
+ ID_MODEL_FROM_DATABASE=FS-1320D Printer
+
usb:v0483*
ID_VENDOR_FROM_DATABASE=STMicroelectronics
@@ -9551,6 +9584,9 @@ usb:v0499p1054*
usb:v0499p160F*
ID_MODEL_FROM_DATABASE=P-105
+usb:v0499p1613*
+ ID_MODEL_FROM_DATABASE=Clavinova CLP535
+
usb:v0499p2000*
ID_MODEL_FROM_DATABASE=DGP-7
@@ -10334,6 +10370,9 @@ usb:v04A9p10C4*
usb:v04A9p10C9*
ID_MODEL_FROM_DATABASE=PIXIMA iP4600 Printer
+usb:v04A9p10E3*
+ ID_MODEL_FROM_DATABASE=PIXMA iX6850 Printer
+
usb:v04A9p1404*
ID_MODEL_FROM_DATABASE=W6400PG
@@ -12146,6 +12185,9 @@ usb:v04B4p4611*
usb:v04B4p4616*
ID_MODEL_FROM_DATABASE=Flash Disk (TPP)
+usb:v04B4p4624*
+ ID_MODEL_FROM_DATABASE=DS-Xtreme Flash Card
+
usb:v04B4p5201*
ID_MODEL_FROM_DATABASE=Combi Keyboard-Hub (Hub)
@@ -12407,6 +12449,9 @@ usb:v04B8p0143*
usb:v04B8p0144*
ID_MODEL_FROM_DATABASE=GT-S85
+usb:v04B8p0151*
+ ID_MODEL_FROM_DATABASE=Perfection V800 Photo
+
usb:v04B8p0202*
ID_MODEL_FROM_DATABASE=Receipt Printer M129C/TM-T70
@@ -13094,6 +13139,9 @@ usb:v04C5p10FE*
usb:v04C5p1150*
ID_MODEL_FROM_DATABASE=fi-6230
+usb:v04C5p125A*
+ ID_MODEL_FROM_DATABASE=PalmSecure Sensor Device - MP
+
usb:v04C5p201D*
ID_MODEL_FROM_DATABASE=SATA 3.0 6Gbit/s Adaptor [GROOVY]
@@ -13136,6 +13184,9 @@ usb:v04C8p072D*
usb:v04CA*
ID_VENDOR_FROM_DATABASE=Lite-On Technology Corp.
+usb:v04CAp004B*
+ ID_MODEL_FROM_DATABASE=Keyboard
+
usb:v04CAp004F*
ID_MODEL_FROM_DATABASE=SK-9020 keyboard
@@ -13148,6 +13199,9 @@ usb:v04CAp2004*
usb:v04CAp2006*
ID_MODEL_FROM_DATABASE=Broadcom BCM43142A0 Bluetooth Device
+usb:v04CAp2007*
+ ID_MODEL_FROM_DATABASE=Broadcom BCM43142A0 Bluetooth Device
+
usb:v04CAp3005*
ID_MODEL_FROM_DATABASE=Atheros Bluetooth
@@ -13625,6 +13679,9 @@ usb:v04D8pE11C*
usb:v04D8pF2C4*
ID_MODEL_FROM_DATABASE=Macareux-labs Hygrometry Temperature Sensor
+usb:v04D8pF2F7*
+ ID_MODEL_FROM_DATABASE=Yepkit YKUSH
+
usb:v04D8pF3AA*
ID_MODEL_FROM_DATABASE=Macareux-labs Usbce Bootloader mode
@@ -13724,6 +13781,9 @@ usb:v04D9p2834*
usb:v04D9pA01C*
ID_MODEL_FROM_DATABASE=wireless multimedia keyboard with trackball [Trust ADURA 17911]
+usb:v04D9pA050*
+ ID_MODEL_FROM_DATABASE=Chatman V1
+
usb:v04D9pA055*
ID_MODEL_FROM_DATABASE=Keyboard
@@ -14276,6 +14336,9 @@ usb:v04E8p1006*
usb:v04E8p130C*
ID_MODEL_FROM_DATABASE=NX100
+usb:v04E8p1323*
+ ID_MODEL_FROM_DATABASE=WB700 Camera
+
usb:v04E8p1F05*
ID_MODEL_FROM_DATABASE=S2 Portable [JMicron] (500GB)
@@ -15179,6 +15242,9 @@ usb:v04F2pB1CF*
usb:v04F2pB1D6*
ID_MODEL_FROM_DATABASE=CNF9055 Toshiba Webcam
+usb:v04F2pB1D8*
+ ID_MODEL_FROM_DATABASE=1.3M Webcam
+
usb:v04F2pB1E4*
ID_MODEL_FROM_DATABASE=Toshiba Integrated Webcam
@@ -18611,6 +18677,9 @@ usb:v0557p2011*
usb:v0557p2202*
ID_MODEL_FROM_DATABASE=CS124U Miniview II KVM Switch
+usb:v0557p2212*
+ ID_MODEL_FROM_DATABASE=Keyboard/Mouse
+
usb:v0557p2213*
ID_MODEL_FROM_DATABASE=CS682 2-Port USB 2.0 DVI KVM Switch
@@ -18636,7 +18705,7 @@ usb:v0557p7820*
ID_MODEL_FROM_DATABASE=UC-2322 2xSerial Ports [mos7820]
usb:v0557p8021*
- ID_MODEL_FROM_DATABASE=CS1764A [CubiQ DVI KVMP Switch]
+ ID_MODEL_FROM_DATABASE=Hub
usb:v0558*
ID_VENDOR_FROM_DATABASE=Truevision, Inc.
@@ -21623,6 +21692,9 @@ usb:v05ACp0263*
usb:v05ACp0267*
ID_MODEL_FROM_DATABASE=Magic Keyboard A1644
+usb:v05ACp0269*
+ ID_MODEL_FROM_DATABASE=Magic Mouse 2 (Lightning connector)
+
usb:v05ACp0273*
ID_MODEL_FROM_DATABASE=Internal Keyboard/Trackpad (ISO)
@@ -23384,6 +23456,9 @@ usb:v05E3p0743*
usb:v05E3p0745*
ID_MODEL_FROM_DATABASE=Logilink CR0012
+usb:v05E3p0748*
+ ID_MODEL_FROM_DATABASE=All-in-One Cardreader
+
usb:v05E3p0751*
ID_MODEL_FROM_DATABASE=microSD Card Reader
@@ -23612,6 +23687,9 @@ usb:v05FDp262F*
usb:v05FDpDAAE*
ID_MODEL_FROM_DATABASE=Game Shark
+usb:v05FDpDBAE*
+ ID_MODEL_FROM_DATABASE=Datel XBoxMC
+
usb:v05FE*
ID_VENDOR_FROM_DATABASE=Chic Technology Corp.
@@ -23789,6 +23867,12 @@ usb:v0616*
usb:v0617*
ID_VENDOR_FROM_DATABASE=Swiss Federal Insitute of Technology
+usb:v0617p000A*
+ ID_MODEL_FROM_DATABASE=Thymio-II
+
+usb:v0617p000C*
+ ID_MODEL_FROM_DATABASE=Thymio-II Wireless
+
usb:v0618*
ID_VENDOR_FROM_DATABASE=MacAlly
@@ -24206,6 +24290,9 @@ usb:v064EpF102*
usb:v064EpF103*
ID_MODEL_FROM_DATABASE=Lenovo Integrated Webcam [R5U877]
+usb:v064EpF209*
+ ID_MODEL_FROM_DATABASE=HP Webcam
+
usb:v064EpF300*
ID_MODEL_FROM_DATABASE=UVC 0.3M Webcam
@@ -27812,6 +27899,12 @@ usb:v0781p5580*
usb:v0781p5581*
ID_MODEL_FROM_DATABASE=Ultra
+usb:v0781p5583*
+ ID_MODEL_FROM_DATABASE=Ultra Fit
+
+usb:v0781p5591*
+ ID_MODEL_FROM_DATABASE=Ultra Flair
+
usb:v0781p5E10*
ID_MODEL_FROM_DATABASE=Encrypted
@@ -31874,6 +31967,12 @@ usb:v091Ep0004*
usb:v091Ep0200*
ID_MODEL_FROM_DATABASE=Data Card Programmer (install)
+usb:v091Ep086E*
+ ID_MODEL_FROM_DATABASE=Forerunner 735XT
+
+usb:v091Ep097F*
+ ID_MODEL_FROM_DATABASE=Forerunner 235
+
usb:v091Ep1200*
ID_MODEL_FROM_DATABASE=Data Card Programmer
@@ -32069,6 +32168,9 @@ usb:v0930p000C*
usb:v0930p0010*
ID_MODEL_FROM_DATABASE=Gigabeat S (mtp)
+usb:v0930p01BF*
+ ID_MODEL_FROM_DATABASE=2.5"External Hard Disk
+
usb:v0930p0200*
ID_MODEL_FROM_DATABASE=Integrated Bluetooth (Taiyo Yuden)
@@ -32657,6 +32759,9 @@ usb:v0955p7030*
usb:v0955p7100*
ID_MODEL_FROM_DATABASE=Tegra Device
+usb:v0955p7210*
+ ID_MODEL_FROM_DATABASE=SHIELD Controller
+
usb:v0955p7820*
ID_MODEL_FROM_DATABASE=Tegra 2 AC100 developer mode
@@ -32753,9 +32858,27 @@ usb:v0968*
usb:v096E*
ID_VENDOR_FROM_DATABASE=Feitian Technologies, Inc.
+usb:v096Ep0005*
+ ID_MODEL_FROM_DATABASE=ePass2000
+
usb:v096Ep0120*
ID_MODEL_FROM_DATABASE=Microcosm Ltd Dinkey
+usb:v096Ep0305*
+ ID_MODEL_FROM_DATABASE=ePass2000Auto
+
+usb:v096Ep0309*
+ ID_MODEL_FROM_DATABASE=ePass3000GM
+
+usb:v096Ep0401*
+ ID_MODEL_FROM_DATABASE=ePass3000
+
+usb:v096Ep0702*
+ ID_MODEL_FROM_DATABASE=ePass3003
+
+usb:v096Ep0703*
+ ID_MODEL_FROM_DATABASE=ePass3003Auto
+
usb:v096Ep0802*
ID_MODEL_FROM_DATABASE=ePass2000 (G&D STARCOS SPK 2.4)
@@ -32903,6 +33026,9 @@ usb:v099Ap713A*
usb:v099Ap7160*
ID_MODEL_FROM_DATABASE=Hyper Slim Keyboard
+usb:v099E*
+ ID_VENDOR_FROM_DATABASE=Trimble Navigation, Ltd
+
usb:v09A3*
ID_VENDOR_FROM_DATABASE=PairGain Technologies
@@ -33071,6 +33197,33 @@ usb:v09CA*
usb:v09CAp5544*
ID_MODEL_FROM_DATABASE=PIO
+usb:v09CB*
+ ID_VENDOR_FROM_DATABASE=FLIR Systems
+
+usb:v09CBp1001*
+ ID_MODEL_FROM_DATABASE=Network Adapter
+
+usb:v09CBp1002*
+ ID_MODEL_FROM_DATABASE=Ex-Series RNDIS interface
+
+usb:v09CBp1004*
+ ID_MODEL_FROM_DATABASE=Ex-Series UVC interface
+
+usb:v09CBp1005*
+ ID_MODEL_FROM_DATABASE=Ex-Series RNDIS and UVC interface
+
+usb:v09CBp1006*
+ ID_MODEL_FROM_DATABASE=Ex-Series RNDIS and MSD interface
+
+usb:v09CBp1007*
+ ID_MODEL_FROM_DATABASE=Ex-Series UVC and MSD interface
+
+usb:v09CBp1008*
+ ID_MODEL_FROM_DATABASE=Serial Port
+
+usb:v09CBp1996*
+ ID_MODEL_FROM_DATABASE=FLIR ONE Camera
+
usb:v09CC*
ID_VENDOR_FROM_DATABASE=Workbit Corp.
@@ -33105,7 +33258,7 @@ usb:v09D3p000B*
ID_MODEL_FROM_DATABASE=Bluetooth Adapter class 1 [BlueLight]
usb:v09D7*
- ID_VENDOR_FROM_DATABASE=Novatel Wireless
+ ID_VENDOR_FROM_DATABASE=NovAtel Inc.
usb:v09D7p0100*
ID_MODEL_FROM_DATABASE=NovAtel FlexPack GPS receiver
@@ -33146,6 +33299,9 @@ usb:v09DAp0260*
usb:v09DAp032B*
ID_MODEL_FROM_DATABASE=Wireless Mouse (Battery Free)
+usb:v09DAp1068*
+ ID_MODEL_FROM_DATABASE=Bloody A90 Mouse
+
usb:v09DAp8090*
ID_MODEL_FROM_DATABASE=X-718BK Oscar Optical Gaming Mouse
@@ -33878,9 +34034,15 @@ usb:v0A5Cp2151*
usb:v0A5Cp2154*
ID_MODEL_FROM_DATABASE=BCM92046DG-CL1ROM Bluetooth 2.1 UHE Dongle
+usb:v0A5Cp216A*
+ ID_MODEL_FROM_DATABASE=BCM43142A0 Bluetooth
+
usb:v0A5Cp216C*
ID_MODEL_FROM_DATABASE=BCM43142A0 Bluetooth Device
+usb:v0A5Cp216D*
+ ID_MODEL_FROM_DATABASE=BCM43142A0 Bluetooth 4.0
+
usb:v0A5Cp216F*
ID_MODEL_FROM_DATABASE=BCM20702A0 Bluetooth
@@ -33965,6 +34127,9 @@ usb:v0A5Cp5804*
usb:v0A5Cp6300*
ID_MODEL_FROM_DATABASE=Pirelli Remote NDIS Device
+usb:v0A5Cp6410*
+ ID_MODEL_FROM_DATABASE=BCM20703A1 Bluetooth 4.1 + LE
+
usb:v0A5CpBD11*
ID_MODEL_FROM_DATABASE=TiVo AG0100 802.11bg Wireless Adapter [Broadcom BCM4320]
@@ -35048,6 +35213,12 @@ usb:v0B05p17CB*
usb:v0B05p17D1*
ID_MODEL_FROM_DATABASE=AC51 802.11a/b/g/n/ac Wireless Adapter [Mediatek MT7610/Ralink RT2870]
+usb:v0B05p180A*
+ ID_MODEL_FROM_DATABASE=Broadcom BCM20702 Single-Chip Bluetooth 4.0 + LE
+
+usb:v0B05p1825*
+ ID_MODEL_FROM_DATABASE=Qualcomm Bluetooth 4.1
+
usb:v0B05p4C80*
ID_MODEL_FROM_DATABASE=Transformer Pad TF300TG
@@ -35123,18 +35294,33 @@ usb:v0B0Dp0000*
usb:v0B0E*
ID_VENDOR_FROM_DATABASE=GN Netcom
+usb:v0B0Ep0348*
+ ID_MODEL_FROM_DATABASE=Jabra UC VOICE 550a MS
+
usb:v0B0Ep034C*
ID_MODEL_FROM_DATABASE=Jabra UC Voice 750 MS
+usb:v0B0Ep0410*
+ ID_MODEL_FROM_DATABASE=Jabra SPEAK 410
+
usb:v0B0Ep0420*
ID_MODEL_FROM_DATABASE=Jabra SPEAK 510
usb:v0B0Ep094D*
ID_MODEL_FROM_DATABASE=GN Netcom / Jabra REVO Wireless
+usb:v0B0Ep1017*
+ ID_MODEL_FROM_DATABASE=Jabra PRO 930
+
usb:v0B0Ep1022*
ID_MODEL_FROM_DATABASE=Jabra PRO 9450, Type 9400BS (DECT Headset)
+usb:v0B0Ep1041*
+ ID_MODEL_FROM_DATABASE=Jabra PRO 9460
+
+usb:v0B0Ep1900*
+ ID_MODEL_FROM_DATABASE=Jabra Biz 1900
+
usb:v0B0Ep2007*
ID_MODEL_FROM_DATABASE=GN 2000 Stereo Corded Headset
@@ -35198,6 +35384,9 @@ usb:v0B33*
usb:v0B33p0020*
ID_MODEL_FROM_DATABASE=ShuttleXpress
+usb:v0B33p0030*
+ ID_MODEL_FROM_DATABASE=ShuttlePro v2
+
usb:v0B33p0700*
ID_MODEL_FROM_DATABASE=RollerMouse Pro
@@ -35375,6 +35564,12 @@ usb:v0B48p3012*
usb:v0B48p3014*
ID_MODEL_FROM_DATABASE=TT-TVStick CT2-4400
+usb:v0B48p3015*
+ ID_MODEL_FROM_DATABASE=TT-connect CT2-4650 CI
+
+usb:v0B48p3017*
+ ID_MODEL_FROM_DATABASE=TT-connect S2-4650 CI
+
usb:v0B49*
ID_VENDOR_FROM_DATABASE=ASCII Corp.
@@ -35619,7 +35814,7 @@ usb:v0B95p772B*
ID_MODEL_FROM_DATABASE=AX88772B
usb:v0B95p7E2B*
- ID_MODEL_FROM_DATABASE=AX88772B
+ ID_MODEL_FROM_DATABASE=AX88772B Fast Ethernet Controller
usb:v0B96*
ID_VENDOR_FROM_DATABASE=Sewon Telecom
@@ -36305,15 +36500,24 @@ usb:v0BB4p0CA5*
usb:v0BB4p0CAE*
ID_MODEL_FROM_DATABASE=T-Mobile MyTouch 4G Slide [Doubleshot]
+usb:v0BB4p0DE5*
+ ID_MODEL_FROM_DATABASE=One (M7)
+
usb:v0BB4p0DEA*
ID_MODEL_FROM_DATABASE=M7_UL [HTC One]
usb:v0BB4p0F25*
ID_MODEL_FROM_DATABASE=One M8
+usb:v0BB4p0F63*
+ ID_MODEL_FROM_DATABASE=Desire 610 Via MTP
+
usb:v0BB4p0F64*
ID_MODEL_FROM_DATABASE=Desire 601
+usb:v0BB4p0FB4*
+ ID_MODEL_FROM_DATABASE=Remote NDIS based Device
+
usb:v0BB4p0FF8*
ID_MODEL_FROM_DATABASE=Desire HD (Tethering Mode)
@@ -36386,6 +36590,9 @@ usb:v0BC2p2200*
usb:v0BC2p2300*
ID_MODEL_FROM_DATABASE=Expansion Portable
+usb:v0BC2p231A*
+ ID_MODEL_FROM_DATABASE=Expansion Portable
+
usb:v0BC2p2320*
ID_MODEL_FROM_DATABASE=USB 3.0 bridge [Portable Expansion Drive]
@@ -36425,6 +36632,9 @@ usb:v0BC2p5030*
usb:v0BC2p5031*
ID_MODEL_FROM_DATABASE=FreeAgent GoFlex USB 3.0
+usb:v0BC2p5032*
+ ID_MODEL_FROM_DATABASE=SATA cable
+
usb:v0BC2p5070*
ID_MODEL_FROM_DATABASE=FreeAgent GoFlex Desk
@@ -36461,9 +36671,15 @@ usb:v0BC2pAB20*
usb:v0BC2pAB21*
ID_MODEL_FROM_DATABASE=Backup Plus Slim
+usb:v0BC2pAB24*
+ ID_MODEL_FROM_DATABASE=Backup Plus Portable Drive
+
usb:v0BC2pAB31*
ID_MODEL_FROM_DATABASE=Backup Plus Desktop Drive (5TB)
+usb:v0BC2pAB34*
+ ID_MODEL_FROM_DATABASE=Backup Plus
+
usb:v0BC3*
ID_VENDOR_FROM_DATABASE=IPWireless, Inc.
@@ -36563,6 +36779,9 @@ usb:v0BDAp0107*
usb:v0BDAp0108*
ID_MODEL_FROM_DATABASE=Mass Storage Device
+usb:v0BDAp0109*
+ ID_MODEL_FROM_DATABASE=microSDXC Card Reader [Hama 00091047]
+
usb:v0BDAp0111*
ID_MODEL_FROM_DATABASE=RTS5111 Card Reader Controller
@@ -36600,7 +36819,7 @@ usb:v0BDAp0152*
ID_MODEL_FROM_DATABASE=Mass Storage Device
usb:v0BDAp0153*
- ID_MODEL_FROM_DATABASE=Mass Storage Device
+ ID_MODEL_FROM_DATABASE=3-in-1 (SD/SDHC/SDXC) Card Reader
usb:v0BDAp0156*
ID_MODEL_FROM_DATABASE=Mass Storage Device
@@ -36644,6 +36863,9 @@ usb:v0BDAp0186*
usb:v0BDAp0301*
ID_MODEL_FROM_DATABASE=multicard reader
+usb:v0BDAp0307*
+ ID_MODEL_FROM_DATABASE=Card Reader
+
usb:v0BDAp1724*
ID_MODEL_FROM_DATABASE=RTL8723AU 802.11n WLAN Adapter
@@ -36659,18 +36881,33 @@ usb:v0BDAp2838*
usb:v0BDAp5401*
ID_MODEL_FROM_DATABASE=RTL 8153 USB 3.0 hub with gigabit ethernet
+usb:v0BDAp570C*
+ ID_MODEL_FROM_DATABASE=Asus laptop camera
+
usb:v0BDAp5730*
ID_MODEL_FROM_DATABASE=HP 2.0MP High Definition Webcam
usb:v0BDAp5775*
ID_MODEL_FROM_DATABASE=HP "Truevision HD" laptop camera
+usb:v0BDAp57B3*
+ ID_MODEL_FROM_DATABASE=Acer 640 × 480 laptop camera
+
+usb:v0BDAp57DA*
+ ID_MODEL_FROM_DATABASE=Built-In Video Camera
+
usb:v0BDAp8150*
ID_MODEL_FROM_DATABASE=RTL8150 Fast Ethernet Adapter
usb:v0BDAp8151*
ID_MODEL_FROM_DATABASE=RTL8151 Adapteon Business Mobile Networks BV
+usb:v0BDAp8152*
+ ID_MODEL_FROM_DATABASE=RTL8152 Fast Ethernet Adapter
+
+usb:v0BDAp8153*
+ ID_MODEL_FROM_DATABASE=RTL8153 Gigabit Ethernet Adapter
+
usb:v0BDAp8171*
ID_MODEL_FROM_DATABASE=RTL8188SU 802.11n WLAN Adapter
@@ -36698,6 +36935,9 @@ usb:v0BDAp8187*
usb:v0BDAp8189*
ID_MODEL_FROM_DATABASE=RTL8187B Wireless 802.11g 54Mbps Network Adapter
+usb:v0BDAp818B*
+ ID_MODEL_FROM_DATABASE=ACT-WNP-UA-005 802.11b/g/n WLAN Adapter
+
usb:v0BDAp8192*
ID_MODEL_FROM_DATABASE=RTL8191SU 802.11n Wireless Adapter
@@ -36752,6 +36992,9 @@ usb:v0BDBp190A*
usb:v0BDBp190B*
ID_MODEL_FROM_DATABASE=C3607w v2 Mobile Broadband Module
+usb:v0BDBp1926*
+ ID_MODEL_FROM_DATABASE=H5321 gw Mobile Broadband Driver
+
usb:v0BDC*
ID_VENDOR_FROM_DATABASE=Y Media Corp.
@@ -36851,6 +37094,9 @@ usb:v0BF8p100F*
usb:v0BF8p1017*
ID_MODEL_FROM_DATABASE=Keyboard KB SCR
+usb:v0BF8p101F*
+ ID_MODEL_FROM_DATABASE=Fujitsu Full HD Pro Webcam
+
usb:v0BFD*
ID_VENDOR_FROM_DATABASE=Kvaser AB
@@ -37562,6 +37808,18 @@ usb:v0C45p648B*
usb:v0C45p64BD*
ID_MODEL_FROM_DATABASE=Sony Visual Communication Camera
+usb:v0C45p64D2*
+ ID_MODEL_FROM_DATABASE=Integrated Webcam
+
+usb:v0C45p651B*
+ ID_MODEL_FROM_DATABASE=HP Webcam
+
+usb:v0C45p6705*
+ ID_MODEL_FROM_DATABASE=Integrated HD Webcam
+
+usb:v0C45p6710*
+ ID_MODEL_FROM_DATABASE=Integrated Webcam
+
usb:v0C45p7401*
ID_MODEL_FROM_DATABASE=TEMPer Temperature Sensor
@@ -38075,6 +38333,12 @@ usb:v0CA7*
usb:v0CAD*
ID_VENDOR_FROM_DATABASE=Motorola CGISS
+usb:v0CADp1030*
+ ID_MODEL_FROM_DATABASE=APX Series Radio
+
+usb:v0CADp1602*
+ ID_MODEL_FROM_DATABASE=IMPRES Battery Data Reader
+
usb:v0CADp9001*
ID_MODEL_FROM_DATABASE=PowerPad Pocket PC Device
@@ -38174,9 +38438,6 @@ usb:v0CC5*
usb:v0CC6*
ID_VENDOR_FROM_DATABASE=Intermagic Corp.
-usb:v0CC7*
- ID_VENDOR_FROM_DATABASE=Kontron Medical AG
-
usb:v0CC8*
ID_VENDOR_FROM_DATABASE=Technotools Corp.
@@ -38279,6 +38540,9 @@ usb:v0CCDp0086*
usb:v0CCDp008E*
ID_MODEL_FROM_DATABASE=Cinergy HTC XS
+usb:v0CCDp0096*
+ ID_MODEL_FROM_DATABASE=Grabby
+
usb:v0CCDp0097*
ID_MODEL_FROM_DATABASE=Cinergy T RC MKII
@@ -38297,6 +38561,12 @@ usb:v0CCDp00B3*
usb:v0CCDp00E0*
ID_MODEL_FROM_DATABASE=NOXON DAB/DAB+ Stick V2
+usb:v0CCDp0102*
+ ID_MODEL_FROM_DATABASE=Cinergy S2 Stick
+
+usb:v0CCDp0105*
+ ID_MODEL_FROM_DATABASE=Cinergy S2 Box
+
usb:v0CCDp10A7*
ID_MODEL_FROM_DATABASE=TerraTec G3
@@ -38472,7 +38742,7 @@ usb:v0CF2p6250*
ID_MODEL_FROM_DATABASE=SD card reader (UB6250)
usb:v0CF3*
- ID_VENDOR_FROM_DATABASE=Atheros Communications, Inc.
+ ID_VENDOR_FROM_DATABASE=Qualcomm Atheros Communications
usb:v0CF3p0001*
ID_MODEL_FROM_DATABASE=AR5523
@@ -38519,9 +38789,15 @@ usb:v0CF3p3004*
usb:v0CF3p3005*
ID_MODEL_FROM_DATABASE=AR3011 Bluetooth
+usb:v0CF3p3007*
+ ID_MODEL_FROM_DATABASE=AR3012 Bluetooth 4.0 (no firmware)
+
usb:v0CF3p3008*
ID_MODEL_FROM_DATABASE=Bluetooth (AR3011)
+usb:v0CF3p311F*
+ ID_MODEL_FROM_DATABASE=AR3012 Bluetooth
+
usb:v0CF3p7015*
ID_MODEL_FROM_DATABASE=TP-Link TL-WN821N v3 / TL-WN822N v2 802.11n [Atheros AR7010+AR9287]
@@ -38537,6 +38813,9 @@ usb:v0CF3pB002*
usb:v0CF3pB003*
ID_MODEL_FROM_DATABASE=Ubiquiti WiFiStationEXT 802.11n [Atheros AR9271]
+usb:v0CF3pE006*
+ ID_MODEL_FROM_DATABASE=Dell Wireless 1802 Bluetooth 4.0 LE
+
usb:v0CF4*
ID_VENDOR_FROM_DATABASE=Fomtex Corp.
@@ -39584,6 +39863,9 @@ usb:v0DBAp1000*
usb:v0DBAp3000*
ID_MODEL_FROM_DATABASE=Mbox 2
+usb:v0DBApB011*
+ ID_MODEL_FROM_DATABASE=Eleven Rack
+
usb:v0DBC*
ID_VENDOR_FROM_DATABASE=A&D Medical
@@ -39611,6 +39893,9 @@ usb:v0DBFp0300*
usb:v0DBFp0333*
ID_MODEL_FROM_DATABASE=Storage Adapter
+usb:v0DBFp0502*
+ ID_MODEL_FROM_DATABASE=FSC Storagebird XL hard disk
+
usb:v0DBFp0707*
ID_MODEL_FROM_DATABASE=ZIV Drive
@@ -39639,7 +39924,7 @@ usb:v0DC3p1702*
ID_MODEL_FROM_DATABASE=ASEKey
usb:v0DC4*
- ID_VENDOR_FROM_DATABASE=Macpower Peripherals, Ltd
+ ID_VENDOR_FROM_DATABASE=inXtron, Inc.
usb:v0DC4p0040*
ID_MODEL_FROM_DATABASE=Mass Storage Device
@@ -39959,12 +40244,18 @@ usb:v0DF6p0060*
usb:v0DF6p0062*
ID_MODEL_FROM_DATABASE=WLA-5000 802.11abgn [Ralink RT3572]
+usb:v0DF6p006F*
+ ID_MODEL_FROM_DATABASE=WLA-5100
+
usb:v0DF6p0072*
ID_MODEL_FROM_DATABASE=AX88179 Gigabit Ethernet [Sitecom]
usb:v0DF6p061C*
ID_MODEL_FROM_DATABASE=LN-028 Network USB 2.0 Adapter
+usb:v0DF6p214A*
+ ID_MODEL_FROM_DATABASE=IDE/SATA Combo Adapter [CN-330]
+
usb:v0DF6p21F4*
ID_MODEL_FROM_DATABASE=44 St Bluetooth Device
@@ -40178,20 +40469,11 @@ usb:v0E35*
usb:v0E36*
ID_VENDOR_FROM_DATABASE=TiePie engineering
-usb:v0E36p0008*
- ID_MODEL_FROM_DATABASE=Handyscope HS3
-
usb:v0E36p0009*
- ID_MODEL_FROM_DATABASE=Handyscope HS3 (br)
-
-usb:v0E36p000A*
- ID_MODEL_FROM_DATABASE=Handyscope HS4
+ ID_MODEL_FROM_DATABASE=Handyscope HS3
usb:v0E36p000B*
- ID_MODEL_FROM_DATABASE=Handyscope HS4 (br)
-
-usb:v0E36p000E*
- ID_MODEL_FROM_DATABASE=Handyscope HS4-DIFF
+ ID_MODEL_FROM_DATABASE=Handyscope HS4
usb:v0E36p000F*
ID_MODEL_FROM_DATABASE=Handyscope HS4-DIFF (br)
@@ -40496,12 +40778,18 @@ usb:v0E8Dp0004*
usb:v0E8Dp0023*
ID_MODEL_FROM_DATABASE=S103
+usb:v0E8Dp00A5*
+ ID_MODEL_FROM_DATABASE=GSM modem [Medion Surfstick Model:S4222]
+
usb:v0E8Dp1806*
ID_MODEL_FROM_DATABASE=Samsung SE-208 Slim Portable DVD Writer
usb:v0E8Dp1836*
ID_MODEL_FROM_DATABASE=Samsung SE-S084 Super WriteMaster Slim External DVD writer
+usb:v0E8Dp1956*
+ ID_MODEL_FROM_DATABASE=Samsung SE-506 Portable BluRay Disc Writer
+
usb:v0E8Dp2000*
ID_MODEL_FROM_DATABASE=MT65xx Preloader
@@ -40856,6 +41144,15 @@ usb:v0F0Dp0011*
usb:v0F0E*
ID_VENDOR_FROM_DATABASE=Energy Full Corp.
+usb:v0F0F*
+ ID_VENDOR_FROM_DATABASE=Silego Technology Inc
+
+usb:v0F0Fp0006*
+ ID_MODEL_FROM_DATABASE=GreenPak Universal Dev Board (Active Mode)
+
+usb:v0F0Fp8006*
+ ID_MODEL_FROM_DATABASE=GreenPak Universal Dev Board (Reset Mode)
+
usb:v0F11*
ID_VENDOR_FROM_DATABASE=LD Didactic GmbH
@@ -40913,6 +41210,9 @@ usb:v0F14*
usb:v0F14p0012*
ID_MODEL_FROM_DATABASE=Vital'Act 3S
+usb:v0F14p0038*
+ ID_MODEL_FROM_DATABASE=XIRING Smart Card Terminal LEO V2
+
usb:v0F18*
ID_VENDOR_FROM_DATABASE=Finger Lakes Instrumentation
@@ -41375,6 +41675,24 @@ usb:v0FCEp0172*
usb:v0FCEp0177*
ID_MODEL_FROM_DATABASE=Xperia Ion [Mass Storage]
+usb:v0FCEp0188*
+ ID_MODEL_FROM_DATABASE=ST26i
+
+usb:v0FCEp019C*
+ ID_MODEL_FROM_DATABASE=C6833
+
+usb:v0FCEp019E*
+ ID_MODEL_FROM_DATABASE=C6903
+
+usb:v0FCEp01A5*
+ ID_MODEL_FROM_DATABASE=SO-04F
+
+usb:v0FCEp01A7*
+ ID_MODEL_FROM_DATABASE=D5503
+
+usb:v0FCEp01BA*
+ ID_MODEL_FROM_DATABASE=D6603 [Xperia Z3]
+
usb:v0FCEp01BB*
ID_MODEL_FROM_DATABASE=D5803 [Xperia Z3 Compact] (MTP mode)
@@ -41426,6 +41744,9 @@ usb:v0FCEp5177*
usb:v0FCEp518C*
ID_MODEL_FROM_DATABASE=C1605 [Xperia E dual] MTD mode
+usb:v0FCEp51A7*
+ ID_MODEL_FROM_DATABASE=D5503 (Xperia Z1 Compact)
+
usb:v0FCEp614F*
ID_MODEL_FROM_DATABASE=Xperia X12 (debug mode)
@@ -41594,6 +41915,42 @@ usb:v0FCEpE167*
usb:v0FCEpE19B*
ID_MODEL_FROM_DATABASE=C2005 [Xperia M dual] (Mass Storage)
+usb:v0FCEpE1A9*
+ ID_MODEL_FROM_DATABASE=D5303
+
+usb:v0FCEpE1AA*
+ ID_MODEL_FROM_DATABASE=D2303
+
+usb:v0FCEpE1AD*
+ ID_MODEL_FROM_DATABASE=D5103
+
+usb:v0FCEpE1B0*
+ ID_MODEL_FROM_DATABASE=D6708
+
+usb:v0FCEpE1B5*
+ ID_MODEL_FROM_DATABASE=D2004
+
+usb:v0FCEpE1BA*
+ ID_MODEL_FROM_DATABASE=D6683
+
+usb:v0FCEpE1BB*
+ ID_MODEL_FROM_DATABASE=SO-02G
+
+usb:v0FCEpE1BC*
+ ID_MODEL_FROM_DATABASE=D2203
+
+usb:v0FCEpE1C0*
+ ID_MODEL_FROM_DATABASE=SGP621
+
+usb:v0FCEpE1C2*
+ ID_MODEL_FROM_DATABASE=D2533
+
+usb:v0FCEpE1C9*
+ ID_MODEL_FROM_DATABASE=E6553
+
+usb:v0FCEpE1CF*
+ ID_MODEL_FROM_DATABASE=SGP771
+
usb:v0FCEpF0FA*
ID_MODEL_FROM_DATABASE=MN800 / Smartwatch 2 (DFU mode)
@@ -41690,6 +42047,9 @@ usb:v0FE0p0101*
usb:v0FE0p0200*
ID_MODEL_FROM_DATABASE=Bluetooth Keypad
+usb:v0FE2*
+ ID_VENDOR_FROM_DATABASE=Air Techniques
+
usb:v0FE4*
ID_VENDOR_FROM_DATABASE=IN-Tech Electronics, Ltd
@@ -41697,7 +42057,7 @@ usb:v0FE5*
ID_VENDOR_FROM_DATABASE=Greenconn (U.S.A.), Inc.
usb:v0FE6*
- ID_VENDOR_FROM_DATABASE=Kontron (Industrial Computer Source / ICS Advent)
+ ID_VENDOR_FROM_DATABASE=ICS Advent
usb:v0FE6p8101*
ID_MODEL_FROM_DATABASE=DM9601 Fast Ethernet Adapter
@@ -41714,6 +42074,9 @@ usb:v0FE9*
usb:v0FE9p4020*
ID_MODEL_FROM_DATABASE=TViX M-6500
+usb:v0FE9p9010*
+ ID_MODEL_FROM_DATABASE=FusionRemote IR receiver
+
usb:v0FE9pDB00*
ID_MODEL_FROM_DATABASE=FusionHDTV DVB-T (MT352+LgZ201) (uninitialized)
@@ -41831,8 +42194,11 @@ usb:v1004p61FC*
usb:v1004p61FE*
ID_MODEL_FROM_DATABASE=Optimus Android Phone [USB tethering mode]
+usb:v1004p627F*
+ ID_MODEL_FROM_DATABASE=G3 (VS985) Android Phone (MTP/Download mode)
+
usb:v1004p6300*
- ID_MODEL_FROM_DATABASE=G2/Optimus Android Phone
+ ID_MODEL_FROM_DATABASE=G2/Optimus Android Phone [Charge mode]
usb:v1004p631C*
ID_MODEL_FROM_DATABASE=G2/Optimus Android Phone [MTP mode]
@@ -41847,7 +42213,7 @@ usb:v1004p631F*
ID_MODEL_FROM_DATABASE=Optimus Android Phone (Charge Mode)
usb:v1004p633E*
- ID_MODEL_FROM_DATABASE=G2 Android Phone [MTP mode]
+ ID_MODEL_FROM_DATABASE=G2/G3 Android Phone [MTP/PTP/Download mode]
usb:v1004p6344*
ID_MODEL_FROM_DATABASE=G2 Android Phone [tethering mode]
@@ -42365,15 +42731,33 @@ usb:v1058p0748*
usb:v1058p07A8*
ID_MODEL_FROM_DATABASE=My Passport (WDBBEP), My Passport for Mac (WDBLUZ)
+usb:v1058p07AE*
+ ID_MODEL_FROM_DATABASE=My Passport Edge for Mac (WDBJBH)
+
+usb:v1058p07BA*
+ ID_MODEL_FROM_DATABASE=PiDrive (WDLB)
+
usb:v1058p0810*
ID_MODEL_FROM_DATABASE=My Passport Ultra (WDBZFP)
+usb:v1058p0816*
+ ID_MODEL_FROM_DATABASE=My Passport Air (WDBBLW)
+
usb:v1058p0820*
ID_MODEL_FROM_DATABASE=My Passport Ultra (WDBMWV, WDBZFP)
+usb:v1058p0822*
+ ID_MODEL_FROM_DATABASE=My Passport Ultra (WDBBUZ)
+
+usb:v1058p0824*
+ ID_MODEL_FROM_DATABASE=My Passport Slim (WDBPDZ)
+
usb:v1058p0830*
ID_MODEL_FROM_DATABASE=My Passport Ultra (WDBZFP)
+usb:v1058p0837*
+ ID_MODEL_FROM_DATABASE=My Passport Ultra (WDBBKD)
+
usb:v1058p0900*
ID_MODEL_FROM_DATABASE=MyBook Essential External HDD
@@ -42386,6 +42770,9 @@ usb:v1058p0902*
usb:v1058p0903*
ID_MODEL_FROM_DATABASE=My Book Premium Edition
+usb:v1058p0905*
+ ID_MODEL_FROM_DATABASE=My Book Pro Edition II (WD10000C033-001)
+
usb:v1058p0910*
ID_MODEL_FROM_DATABASE=My Book Essential Edition (Green Ring) (WDG1U)
@@ -42410,6 +42797,9 @@ usb:v1058p1042*
usb:v1058p1048*
ID_MODEL_FROM_DATABASE=Elements Portable (WDBU6Y)
+usb:v1058p1078*
+ ID_MODEL_FROM_DATABASE=Elements Portable (WDBUZG)
+
usb:v1058p107C*
ID_MODEL_FROM_DATABASE=Elements Desktop (WDBWLG)
@@ -42456,7 +42846,16 @@ usb:v1058p1140*
ID_MODEL_FROM_DATABASE=My Book Essential (WDBACW)
usb:v1058p1230*
- ID_MODEL_FROM_DATABASE=My Book (WDBFJK0030HBK)
+ ID_MODEL_FROM_DATABASE=My Book (WDBFJK)
+
+usb:v1058p1235*
+ ID_MODEL_FROM_DATABASE=My Book (WDBFJK0040HBK)
+
+usb:v1058p259D*
+ ID_MODEL_FROM_DATABASE=My Passport Ultra (WDBBKD)
+
+usb:v1058p259F*
+ ID_MODEL_FROM_DATABASE=My Passport Ultra (WD10JMVW)
usb:v1059*
ID_VENDOR_FROM_DATABASE=Giesecke & Devrient GmbH
@@ -49376,9 +49775,72 @@ usb:v18ECp3299*
usb:v18ECp3366*
ID_MODEL_FROM_DATABASE=Bresser Biolux NV
+usb:v18F8*
+ ID_VENDOR_FROM_DATABASE=[Maxxter]
+
+usb:v18F8p0F99*
+ ID_MODEL_FROM_DATABASE=Optical gaming mouse
+
+usb:v18FB*
+ ID_VENDOR_FROM_DATABASE=Scriptel Corporation
+
+usb:v18FBp01C0*
+ ID_MODEL_FROM_DATABASE=ST1501-STN
+
+usb:v18FBp01C1*
+ ID_MODEL_FROM_DATABASE=ST1526-STN
+
+usb:v18FBp01C2*
+ ID_MODEL_FROM_DATABASE=ST1501-PYJ
+
+usb:v18FBp01C3*
+ ID_MODEL_FROM_DATABASE=ST1501B-PYJ
+
+usb:v18FBp01C4*
+ ID_MODEL_FROM_DATABASE=ST1501-PUN
+
+usb:v18FBp01C5*
+ ID_MODEL_FROM_DATABASE=ST1401-STN
+
+usb:v18FBp01C7*
+ ID_MODEL_FROM_DATABASE=ST1526-PYJ
+
+usb:v18FBp01C8*
+ ID_MODEL_FROM_DATABASE=ST1501-ECA
+
+usb:v18FBp01C9*
+ ID_MODEL_FROM_DATABASE=ST1476-STN
+
+usb:v18FBp01CB*
+ ID_MODEL_FROM_DATABASE=ST1571-STN
+
+usb:v18FBp0200*
+ ID_MODEL_FROM_DATABASE=ST1500
+
+usb:v18FBp0201*
+ ID_MODEL_FROM_DATABASE=ST1550
+
+usb:v18FBp0202*
+ ID_MODEL_FROM_DATABASE=ST1525
+
+usb:v18FBp0204*
+ ID_MODEL_FROM_DATABASE=ST1400
+
+usb:v18FBp0206*
+ ID_MODEL_FROM_DATABASE=ST1475
+
+usb:v18FBp0207*
+ ID_MODEL_FROM_DATABASE=ST1570
+
usb:v18FD*
ID_VENDOR_FROM_DATABASE=FineArch Inc.
+usb:v1901*
+ ID_VENDOR_FROM_DATABASE=GE Healthcare
+
+usb:v1901p0015*
+ ID_MODEL_FROM_DATABASE=Nemo Tracker
+
usb:v1908*
ID_VENDOR_FROM_DATABASE=GEMBIRD
@@ -49409,6 +49871,12 @@ usb:v1915p2235*
usb:v1915p2236*
ID_MODEL_FROM_DATABASE=Linksys WUSB11 v3.0 802.11b Adapter [Intersil PRISM 3]
+usb:v191C*
+ ID_VENDOR_FROM_DATABASE=Innovative Technology LTD
+
+usb:v191Cp4104*
+ ID_MODEL_FROM_DATABASE=Banknote validator NV-150
+
usb:v1923*
ID_VENDOR_FROM_DATABASE=FitLinxx
@@ -49535,6 +50003,12 @@ usb:v1934p0702*
usb:v1934p5168*
ID_MODEL_FROM_DATABASE=F71610A or F71612A Consumer Infrared Receiver/Transceiver
+usb:v1938*
+ ID_VENDOR_FROM_DATABASE=Meinberg Funkuhren GmbH & Co. KG
+
+usb:v1938p0501*
+ ID_MODEL_FROM_DATABASE=TCR51USB IRIG Time Code Reader
+
usb:v1941*
ID_VENDOR_FROM_DATABASE=Dream Link
@@ -51309,19 +51783,19 @@ usb:v1D50*
ID_VENDOR_FROM_DATABASE=OpenMoko, Inc.
usb:v1D50p1DB5*
- ID_MODEL_FROM_DATABASE=IDBG DFU
+ ID_MODEL_FROM_DATABASE=IDBG (DFU)
usb:v1D50p1DB6*
ID_MODEL_FROM_DATABASE=IDBG
usb:v1D50p5117*
- ID_MODEL_FROM_DATABASE=Neo1973/FreeRunner kernel usbnet (g_ether, CDC Ethernet) Mode
+ ID_MODEL_FROM_DATABASE=Neo1973/FreeRunner kernel usbnet (g_ether, CDC Ethernet) mode
usb:v1D50p5118*
- ID_MODEL_FROM_DATABASE=Debug Board (FT2232D) for Neo1973/FreeRunner
+ ID_MODEL_FROM_DATABASE=Neo1973/FreeRunner Debug board (V2+)
usb:v1D50p5119*
- ID_MODEL_FROM_DATABASE=GTA01/GTA02 U-Boot Bootloader
+ ID_MODEL_FROM_DATABASE=Neo1973/FreeRunner u-boot cdc_acm serial port
usb:v1D50p511A*
ID_MODEL_FROM_DATABASE=HXD8 u-boot usbtty CDC ACM Mode
@@ -51336,31 +51810,34 @@ usb:v1D50p511D*
ID_MODEL_FROM_DATABASE=QT2410 u-boot usbtty CDC ACM mode
usb:v1D50p5120*
- ID_MODEL_FROM_DATABASE=Neo1973/FreeRunner u-boot generic serial mode
+ ID_MODEL_FROM_DATABASE=Neo1973/FreeRunner u-boot usbtty generic serial
usb:v1D50p5121*
ID_MODEL_FROM_DATABASE=Neo1973/FreeRunner kernel mass storage (g_storage) mode
usb:v1D50p5122*
- ID_MODEL_FROM_DATABASE=Neo1973/FreeRunner kernel usbnet (g_ether, RNDIS) mode
+ ID_MODEL_FROM_DATABASE=Neo1973/FreeRunner kernel cdc_ether USB network
usb:v1D50p5123*
- ID_MODEL_FROM_DATABASE=Neo1973/FreeRunner internal Bluetooth CSR4 module
+ ID_MODEL_FROM_DATABASE=Neo1973/FreeRunner internal USB CSR4 module
usb:v1D50p5124*
ID_MODEL_FROM_DATABASE=Neo1973/FreeRunner Bluetooth Device ID service
+usb:v1D50p5300*
+ ID_MODEL_FROM_DATABASE=Rockbox
+
usb:v1D50p6000*
ID_MODEL_FROM_DATABASE=Ubertooth Zero
usb:v1D50p6001*
- ID_MODEL_FROM_DATABASE=Ubertooth Zero DFU
+ ID_MODEL_FROM_DATABASE=Ubertooth Zero (DFU)
usb:v1D50p6002*
ID_MODEL_FROM_DATABASE=Ubertooth One
usb:v1D50p6003*
- ID_MODEL_FROM_DATABASE=Ubertooth One DFU
+ ID_MODEL_FROM_DATABASE=Ubertooth One (DFU)
usb:v1D50p6004*
ID_MODEL_FROM_DATABASE=LeoLipo
@@ -51380,26 +51857,620 @@ usb:v1D50p6008*
usb:v1D50p6009*
ID_MODEL_FROM_DATABASE=Adjacent Reality Tracker
+usb:v1D50p600A*
+ ID_MODEL_FROM_DATABASE=AVR Programmer
+
+usb:v1D50p600B*
+ ID_MODEL_FROM_DATABASE=Hypna Go Go
+
+usb:v1D50p600C*
+ ID_MODEL_FROM_DATABASE=CatNip LPC1343 development board
+
+usb:v1D50p600D*
+ ID_MODEL_FROM_DATABASE=Enhanced RoboBrrd Brain board
+
+usb:v1D50p600E*
+ ID_MODEL_FROM_DATABASE=OpenRISC Ordb2a-ep4ce22 development board
+
+usb:v1D50p600F*
+ ID_MODEL_FROM_DATABASE=Paparazzi Lisa/M (DFU)
+
+usb:v1D50p6010*
+ ID_MODEL_FROM_DATABASE=OpenPipe: OSHW Bagpipes MIDI controller
+
+usb:v1D50p6011*
+ ID_MODEL_FROM_DATABASE=LeoLipo (DFU)
+
+usb:v1D50p6012*
+ ID_MODEL_FROM_DATABASE=Universal C64 Cartridge
+
+usb:v1D50p6013*
+ ID_MODEL_FROM_DATABASE=DiscFerret magnetic disc analyser (bootloader)
+
+usb:v1D50p6014*
+ ID_MODEL_FROM_DATABASE=DiscFerret magnetic disc analyser
+
+usb:v1D50p6015*
+ ID_MODEL_FROM_DATABASE=Smoothieboard
+
+usb:v1D50p6016*
+ ID_MODEL_FROM_DATABASE=phInterface
+
+usb:v1D50p6017*
+ ID_MODEL_FROM_DATABASE=Black Magic Debug Probe (DFU)
+
+usb:v1D50p6018*
+ ID_MODEL_FROM_DATABASE=Black Magic Debug Probe (Application)
+
+usb:v1D50p6019*
+ ID_MODEL_FROM_DATABASE=4pi 5 axis motion controller
+
+usb:v1D50p601A*
+ ID_MODEL_FROM_DATABASE=Paparazzi Lisa/M
+
+usb:v1D50p601B*
+ ID_MODEL_FROM_DATABASE=IST-2 chronograph for bullet speeds
+
+usb:v1D50p601C*
+ ID_MODEL_FROM_DATABASE=EPOSMote II
+
+usb:v1D50p601E*
+ ID_MODEL_FROM_DATABASE=5x5 STM32 prototyping board
+
+usb:v1D50p601F*
+ ID_MODEL_FROM_DATABASE=uNSF
+
+usb:v1D50p6020*
+ ID_MODEL_FROM_DATABASE=Toad3
+
+usb:v1D50p6021*
+ ID_MODEL_FROM_DATABASE=AlphaSphere
+
+usb:v1D50p6022*
+ ID_MODEL_FROM_DATABASE=LightPack
+
+usb:v1D50p6023*
+ ID_MODEL_FROM_DATABASE=Pixelkit
+
+usb:v1D50p6024*
+ ID_MODEL_FROM_DATABASE=Illucia
+
+usb:v1D50p6025*
+ ID_MODEL_FROM_DATABASE=Keyglove (HID)
+
+usb:v1D50p6027*
+ ID_MODEL_FROM_DATABASE=Key64 Keyboard
+
usb:v1D50p6028*
ID_MODEL_FROM_DATABASE=Teensy 2.0 Development Board [ErgoDox Keyboard]
+usb:v1D50p602A*
+ ID_MODEL_FROM_DATABASE=Marlin 2.0 (Mass Storage)
+
usb:v1D50p602B*
ID_MODEL_FROM_DATABASE=FPGALink
+usb:v1D50p602C*
+ ID_MODEL_FROM_DATABASE=5nes5snes (5x8)
+
+usb:v1D50p602D*
+ ID_MODEL_FROM_DATABASE=5nes5snes (4x12)
+
+usb:v1D50p602E*
+ ID_MODEL_FROM_DATABASE=Flexibity
+
+usb:v1D50p602F*
+ ID_MODEL_FROM_DATABASE=K-copter
+
+usb:v1D50p6030*
+ ID_MODEL_FROM_DATABASE=USB-oscope
+
+usb:v1D50p6031*
+ ID_MODEL_FROM_DATABASE=Handmade GSM GPS tracker
+
+usb:v1D50p6033*
+ ID_MODEL_FROM_DATABASE=frobiac / adnw keyboard
+
+usb:v1D50p6034*
+ ID_MODEL_FROM_DATABASE=Tiflomag Ergo 2
+
+usb:v1D50p6035*
+ ID_MODEL_FROM_DATABASE=FreeLaserTag Gun
+
+usb:v1D50p6036*
+ ID_MODEL_FROM_DATABASE=FreeLaserTag Big Brother
+
+usb:v1D50p6037*
+ ID_MODEL_FROM_DATABASE=FreeLaserTag Node
+
+usb:v1D50p6038*
+ ID_MODEL_FROM_DATABASE=Monaka
+
+usb:v1D50p6039*
+ ID_MODEL_FROM_DATABASE=eXtreme Feedback Device
+
+usb:v1D50p603A*
+ ID_MODEL_FROM_DATABASE=TiLDA
+
+usb:v1D50p603B*
+ ID_MODEL_FROM_DATABASE=Raspiface
+
+usb:v1D50p603C*
+ ID_MODEL_FROM_DATABASE=Paparazzi (bootloader)
+
+usb:v1D50p603D*
+ ID_MODEL_FROM_DATABASE=Paparazzi (Serial)
+
+usb:v1D50p603E*
+ ID_MODEL_FROM_DATABASE=Paparazzi (Mass Storage)
+
+usb:v1D50p603F*
+ ID_MODEL_FROM_DATABASE=airGuitar
+
+usb:v1D50p6040*
+ ID_MODEL_FROM_DATABASE=moco
+
+usb:v1D50p6041*
+ ID_MODEL_FROM_DATABASE=AlphaSphere (bootloader)
+
+usb:v1D50p6042*
+ ID_MODEL_FROM_DATABASE=Dspace robot controller
+
+usb:v1D50p6043*
+ ID_MODEL_FROM_DATABASE=pc-power
+
+usb:v1D50p6044*
+ ID_MODEL_FROM_DATABASE=open-usb-can (DFU)
+
+usb:v1D50p6045*
+ ID_MODEL_FROM_DATABASE=open-usb-can
+
+usb:v1D50p6046*
+ ID_MODEL_FROM_DATABASE=mimus-weigand
+
+usb:v1D50p6047*
+ ID_MODEL_FROM_DATABASE=RfCat Chronos Dongle
+
+usb:v1D50p6048*
+ ID_MODEL_FROM_DATABASE=RfCat Dons Dongle
+
+usb:v1D50p6049*
+ ID_MODEL_FROM_DATABASE=RfCat Chronos bootloader
+
+usb:v1D50p604A*
+ ID_MODEL_FROM_DATABASE=RfCat Dons bootloader
+
usb:v1D50p604B*
ID_MODEL_FROM_DATABASE=HackRF Jawbreaker Software-Defined Radio
+usb:v1D50p604C*
+ ID_MODEL_FROM_DATABASE=Makibox A6
+
+usb:v1D50p604D*
+ ID_MODEL_FROM_DATABASE=Paella Pulse height analyzer
+
+usb:v1D50p604E*
+ ID_MODEL_FROM_DATABASE=Miniscope v2b
+
+usb:v1D50p604F*
+ ID_MODEL_FROM_DATABASE=Miniscope v2c
+
+usb:v1D50p6050*
+ ID_MODEL_FROM_DATABASE=GoodFET
+
+usb:v1D50p6051*
+ ID_MODEL_FROM_DATABASE=pinocc.io
+
+usb:v1D50p6052*
+ ID_MODEL_FROM_DATABASE=APB Team Robotic Development Board
+
usb:v1D50p6053*
ID_MODEL_FROM_DATABASE=Darkgame Controller
+usb:v1D50p6054*
+ ID_MODEL_FROM_DATABASE=Satlab/AAUSAT3 BlueBox
+
+usb:v1D50p6056*
+ ID_MODEL_FROM_DATABASE=The Glitch
+
+usb:v1D50p605B*
+ ID_MODEL_FROM_DATABASE=RfCat YARD Stick One
+
+usb:v1D50p605C*
+ ID_MODEL_FROM_DATABASE=YARD Stick One bootloader
+
+usb:v1D50p605D*
+ ID_MODEL_FROM_DATABASE=Funky Sensor v2
+
+usb:v1D50p605E*
+ ID_MODEL_FROM_DATABASE=Blinkiverse Analog LED Fader
+
+usb:v1D50p605F*
+ ID_MODEL_FROM_DATABASE=Small DIP package Cypress FX2
+
+usb:v1D50p6060*
+ ID_MODEL_FROM_DATABASE=Data logger using the Cypress FX2
+
+usb:v1D50p6061*
+ ID_MODEL_FROM_DATABASE=Power Manager
+
+usb:v1D50p6063*
+ ID_MODEL_FROM_DATABASE=CPC FPGA
+
+usb:v1D50p6064*
+ ID_MODEL_FROM_DATABASE=CPC FPGA (DFU)
+
+usb:v1D50p6065*
+ ID_MODEL_FROM_DATABASE=CPC FPGA (Serial)
+
+usb:v1D50p6066*
+ ID_MODEL_FROM_DATABASE=Nuand BladeRF
+
+usb:v1D50p6067*
+ ID_MODEL_FROM_DATABASE=Orbotron 9000 (Serial)
+
+usb:v1D50p6068*
+ ID_MODEL_FROM_DATABASE=Orbotron 9000 (HID)
+
+usb:v1D50p6069*
+ ID_MODEL_FROM_DATABASE=xser (DFU)
+
+usb:v1D50p606A*
+ ID_MODEL_FROM_DATABASE=xser (legacy)
+
+usb:v1D50p606B*
+ ID_MODEL_FROM_DATABASE=S08-245, urJtag compatible firmware for S08JS
+
+usb:v1D50p606C*
+ ID_MODEL_FROM_DATABASE=Blinkytape full-color light tape
+
+usb:v1D50p606D*
+ ID_MODEL_FROM_DATABASE=TinyG open source motion controller
+
+usb:v1D50p606E*
+ ID_MODEL_FROM_DATABASE=Reefangel Evolution 1.0
+
+usb:v1D50p6070*
+ ID_MODEL_FROM_DATABASE=Open Pinball Project
+
+usb:v1D50p6071*
+ ID_MODEL_FROM_DATABASE=The Glitch HID
+
+usb:v1D50p6072*
+ ID_MODEL_FROM_DATABASE=The Glitch Disk
+
+usb:v1D50p6073*
+ ID_MODEL_FROM_DATABASE=The Glitch Serial
+
+usb:v1D50p6074*
+ ID_MODEL_FROM_DATABASE=The Glitch MIDI
+
+usb:v1D50p6075*
+ ID_MODEL_FROM_DATABASE=The Glitch RawHID
+
+usb:v1D50p6076*
+ ID_MODEL_FROM_DATABASE=Vultureprog BIOS chip programmer
+
+usb:v1D50p6077*
+ ID_MODEL_FROM_DATABASE=PaintDuino
+
+usb:v1D50p6078*
+ ID_MODEL_FROM_DATABASE=DTplug
+
+usb:v1D50p607A*
+ ID_MODEL_FROM_DATABASE=Fadecandy
+
+usb:v1D50p607B*
+ ID_MODEL_FROM_DATABASE=RCDongle for IR remote control
+
+usb:v1D50p607C*
+ ID_MODEL_FROM_DATABASE=OpenVizsla USB sniffer/analyzer
+
+usb:v1D50p607D*
+ ID_MODEL_FROM_DATABASE=Spark Core Arduino-compatible board with WiFi
+
+usb:v1D50p607F*
+ ID_MODEL_FROM_DATABASE=Spark Core Arduino-compatible board with WiFi (bootloader)
+
+usb:v1D50p6080*
+ ID_MODEL_FROM_DATABASE=arcin arcade controller
+
+usb:v1D50p6081*
+ ID_MODEL_FROM_DATABASE=BladeRF (bootloader)
+
+usb:v1D50p6082*
+ ID_MODEL_FROM_DATABASE=Facecandy (DFU)
+
+usb:v1D50p6083*
+ ID_MODEL_FROM_DATABASE=LightUp (bootloader)
+
+usb:v1D50p6084*
+ ID_MODEL_FROM_DATABASE=arcin arcade controller (DFU)
+
+usb:v1D50p6085*
+ ID_MODEL_FROM_DATABASE=IRKit for controlloing home electronics from iOS devices
+
+usb:v1D50p6086*
+ ID_MODEL_FROM_DATABASE=OneRNG entropy device
+
+usb:v1D50p6088*
+ ID_MODEL_FROM_DATABASE=picp PIC16F145x based PIC16F145x programmer
+
usb:v1D50p6089*
- ID_MODEL_FROM_DATABASE=Great Scott Gadgets HackRF One
+ ID_MODEL_FROM_DATABASE=Great Scott Gadgets HackRF One SDR
+
+usb:v1D50p608A*
+ ID_MODEL_FROM_DATABASE=BLEduino
+
+usb:v1D50p608B*
+ ID_MODEL_FROM_DATABASE=Loctronix ASR-2300 SDR/motion sensing module
+
+usb:v1D50p608C*
+ ID_MODEL_FROM_DATABASE=Fx2lafw
+
+usb:v1D50p608D*
+ ID_MODEL_FROM_DATABASE=Fx2lafw
+
+usb:v1D50p608E*
+ ID_MODEL_FROM_DATABASE=Fx2lafw
+
+usb:v1D50p608F*
+ ID_MODEL_FROM_DATABASE=Fx2lafw
+
+usb:v1D50p6090*
+ ID_MODEL_FROM_DATABASE=Fx2lafw
+
+usb:v1D50p6091*
+ ID_MODEL_FROM_DATABASE=Fx2lafw
+
+usb:v1D50p6092*
+ ID_MODEL_FROM_DATABASE=Fx2lafw
+
+usb:v1D50p6093*
+ ID_MODEL_FROM_DATABASE=Fx2lafw
+
+usb:v1D50p6094*
+ ID_MODEL_FROM_DATABASE=Fx2lafw
+
+usb:v1D50p6095*
+ ID_MODEL_FROM_DATABASE=Fx2lafw
+
+usb:v1D50p6096*
+ ID_MODEL_FROM_DATABASE=LightUp (sketch)
+
+usb:v1D50p6097*
+ ID_MODEL_FROM_DATABASE=Tessel JavaScript enabled Microcontroller with built-in WiFi
+
+usb:v1D50p6098*
+ ID_MODEL_FROM_DATABASE=RFIDler
+
+usb:v1D50p6099*
+ ID_MODEL_FROM_DATABASE=RASDR Radio Astronomy SDR Rx Interface
+
+usb:v1D50p609A*
+ ID_MODEL_FROM_DATABASE=RASDR Radio Astronomy SDR Tx Interface
+
+usb:v1D50p609B*
+ ID_MODEL_FROM_DATABASE=RASDR Radio Astronomy SDR (bootloader)
+
+usb:v1D50p609C*
+ ID_MODEL_FROM_DATABASE=antiAFK keyboard
+
+usb:v1D50p609D*
+ ID_MODEL_FROM_DATABASE=PIC16F145x bootloader
+
+usb:v1D50p609E*
+ ID_MODEL_FROM_DATABASE=Clyde Lamp by Fabule (bootloader)
+
+usb:v1D50p609F*
+ ID_MODEL_FROM_DATABASE=Clyde Lamp by Fabule (sketch)
+
+usb:v1D50p60A0*
+ ID_MODEL_FROM_DATABASE=Smoothiepanel robotic control interface
usb:v1D50p60A1*
ID_MODEL_FROM_DATABASE=Airspy
+usb:v1D50p60A2*
+ ID_MODEL_FROM_DATABASE=barebox (DFU)
+
+usb:v1D50p60A3*
+ ID_MODEL_FROM_DATABASE=keyboard (bootloader)
+
+usb:v1D50p60A4*
+ ID_MODEL_FROM_DATABASE=Papilio Duo (AVR)
+
+usb:v1D50p60A5*
+ ID_MODEL_FROM_DATABASE=Papilio Duo (FPGA)
+
+usb:v1D50p60A6*
+ ID_MODEL_FROM_DATABASE=HydraBus/HydraNFC (bootloader)
+
+usb:v1D50p60A7*
+ ID_MODEL_FROM_DATABASE=HydraBus/HydraNFC
+
+usb:v1D50p60A8*
+ ID_MODEL_FROM_DATABASE=reserved
+
+usb:v1D50p60A9*
+ ID_MODEL_FROM_DATABASE=Blinky Light Controller (DFU)
+
+usb:v1D50p60AA*
+ ID_MODEL_FROM_DATABASE=Blinky Light Controller
+
+usb:v1D50p60AB*
+ ID_MODEL_FROM_DATABASE=AllPixel
+
+usb:v1D50p60AC*
+ ID_MODEL_FROM_DATABASE=OpenBLT generic microcontroller (bootloader)
+
+usb:v1D50p60B0*
+ ID_MODEL_FROM_DATABASE=Waterott Arduino based Clock (caterina bootloader)
+
+usb:v1D50p60B1*
+ ID_MODEL_FROM_DATABASE=Drinkbot (processing)
+
+usb:v1D50p60B2*
+ ID_MODEL_FROM_DATABASE=Drinkbot (OTG-tablet support)
+
+usb:v1D50p60B3*
+ ID_MODEL_FROM_DATABASE=calc.pw password generator device (standard)
+
+usb:v1D50p60B4*
+ ID_MODEL_FROM_DATABASE=calc.pw password generator device (enhanced)
+
+usb:v1D50p60B5*
+ ID_MODEL_FROM_DATABASE=TimVideos' HDMI2USB (FX2) - Unconfigured device
+
+usb:v1D50p60B6*
+ ID_MODEL_FROM_DATABASE=TimVideos' HDMI2USB (FX2) - Firmware load/upgrade
+
+usb:v1D50p60B7*
+ ID_MODEL_FROM_DATABASE=TimVideos' HDMI2USB (FX2) - HDMI/DVI Capture Device
+
+usb:v1D50p60B8*
+ ID_MODEL_FROM_DATABASE=TimVideos' HDMI2USB (Soft+UTMI) - Unconfigured device
+
+usb:v1D50p60B9*
+ ID_MODEL_FROM_DATABASE=TimVideos' HDMI2USB (Soft+UTMI) - Firmware upgrade
+
+usb:v1D50p60BA*
+ ID_MODEL_FROM_DATABASE=TimVideos' HDMI2USB (Soft+UTMI) - HDMI/DVI Capture Device
+
+usb:v1D50p60BC*
+ ID_MODEL_FROM_DATABASE=Simple CC25xx programmer / serial board
+
+usb:v1D50p60BD*
+ ID_MODEL_FROM_DATABASE=Open Source control interface for multimedia applications
+
+usb:v1D50p60BE*
+ ID_MODEL_FROM_DATABASE=Pixelmatix Aurora (bootloader)
+
+usb:v1D50p60BF*
+ ID_MODEL_FROM_DATABASE=Pixelmatix Aurora
+
+usb:v1D50p60C1*
+ ID_MODEL_FROM_DATABASE=BrewBit Model-T pOSHW temperature controller for homebrewers (bootloader)
+
+usb:v1D50p60C2*
+ ID_MODEL_FROM_DATABASE=BrewBit Model-T pOSHW temperature controller for homebrewers
+
+usb:v1D50p60C3*
+ ID_MODEL_FROM_DATABASE=X Antenna Tracker arduino board
+
+usb:v1D50p60C6*
+ ID_MODEL_FROM_DATABASE=USBtrng hardware random number generator
+
+usb:v1D50p60C7*
+ ID_MODEL_FROM_DATABASE=Zubax GNSS positioning module for light UAV systems
+
+usb:v1D50p60C8*
+ ID_MODEL_FROM_DATABASE=Xlink data transfer and control system for Commodore C64
+
+usb:v1D50p60C9*
+ ID_MODEL_FROM_DATABASE=random number generator
+
+usb:v1D50p60CA*
+ ID_MODEL_FROM_DATABASE=FinalKey password manager
+
+usb:v1D50p60CB*
+ ID_MODEL_FROM_DATABASE=PteroDAQ Data Acquisition on FRDM-KL25Z and future boards
+
+usb:v1D50p60CC*
+ ID_MODEL_FROM_DATABASE=LamDiNao
+
+usb:v1D50p60DE*
+ ID_MODEL_FROM_DATABASE=Cryptech.is random number generator
+
+usb:v1D50p60DF*
+ ID_MODEL_FROM_DATABASE=Numato Opsis HDMI2USB board (unconfigured)
+
+usb:v1D50p60E0*
+ ID_MODEL_FROM_DATABASE=Numato Opsis HDMI2USB board (JTAG Programming Mode)
+
+usb:v1D50p60E1*
+ ID_MODEL_FROM_DATABASE=Numato Opsis HDMI2USB board (User Mode)
+
+usb:v1D50p60E2*
+ ID_MODEL_FROM_DATABASE=Osmocom SIMtrace 2 (DFU)
+
+usb:v1D50p60E3*
+ ID_MODEL_FROM_DATABASE=Osmocom SIMtrace 2
+
+usb:v1D50p60E4*
+ ID_MODEL_FROM_DATABASE=3D printed racing game - (Catalina CDC bootloader)
+
+usb:v1D50p60E5*
+ ID_MODEL_FROM_DATABASE=3D printed racing game
+
+usb:v1D50p60E6*
+ ID_MODEL_FROM_DATABASE=replacement for GoodFET/FaceDancer - GreatFet
+
+usb:v1D50p60E7*
+ ID_MODEL_FROM_DATABASE=replacement for GoodFET/FaceDancer - GreatFet target
+
+usb:v1D50p60E8*
+ ID_MODEL_FROM_DATABASE=Alpen Clack keyboard
+
+usb:v1D50p60E9*
+ ID_MODEL_FROM_DATABASE=keyman64 keyboard itercepter
+
+usb:v1D50p60EA*
+ ID_MODEL_FROM_DATABASE=Wiggleport FPGA-based I/O board
+
+usb:v1D50p60EC*
+ ID_MODEL_FROM_DATABASE=Duet 3D Printer Controller
+
+usb:v1D50p60F0*
+ ID_MODEL_FROM_DATABASE=UDAD-T1 data aquisition device (boot)
+
+usb:v1D50p60F1*
+ ID_MODEL_FROM_DATABASE=UDAD-T1 data aquisition device
+
+usb:v1D50p60F2*
+ ID_MODEL_FROM_DATABASE=UDAD-T2 data aquisition device (boot)
+
+usb:v1D50p60F3*
+ ID_MODEL_FROM_DATABASE=UDAD-T2 data aquisition device
+
+usb:v1D50p60F4*
+ ID_MODEL_FROM_DATABASE=Uniti ARC motor controller
+
+usb:v1D50p60F5*
+ ID_MODEL_FROM_DATABASE=EightByEight Blinky Badge (DFU)
+
+usb:v1D50p60F6*
+ ID_MODEL_FROM_DATABASE=EightByEight Blinky Badge
+
+usb:v1D50p60F7*
+ ID_MODEL_FROM_DATABASE=cardio NFC/RFID card reader (bootloader)
+
+usb:v1D50p60F8*
+ ID_MODEL_FROM_DATABASE=cardio NFC/RFID card reader
+
+usb:v1D50p60FC*
+ ID_MODEL_FROM_DATABASE=OnlyKey Two-factor Authentication and Password Solution
+
+usb:v1D50p6100*
+ ID_MODEL_FROM_DATABASE=overlay64 video overlay module
+
+usb:v1D50p6104*
+ ID_MODEL_FROM_DATABASE=ScopeFun open source instrumentation
+
+usb:v1D50p6108*
+ ID_MODEL_FROM_DATABASE=Myriad-RF LimeSDR
+
+usb:v1D50p610C*
+ ID_MODEL_FROM_DATABASE=Magic Keys (boot)
+
+usb:v1D50p610D*
+ ID_MODEL_FROM_DATABASE=Magic Keys
+
+usb:v1D50p8085*
+ ID_MODEL_FROM_DATABASE=Box0 (box0-v5)
+
usb:v1D50pCC15*
- ID_MODEL_FROM_DATABASE=CCCAMP2015 rad1o badge
+ ID_MODEL_FROM_DATABASE=rad1o badge for CCC congress 2015
usb:v1D57*
ID_VENDOR_FROM_DATABASE=Xenta
@@ -53531,6 +54602,12 @@ usb:v2A45p200C*
usb:v2A45p2012*
ID_MODEL_FROM_DATABASE=MX Phone (MTP & ACM)
+usb:v2B24*
+ ID_VENDOR_FROM_DATABASE=KeepKey LLC
+
+usb:v2B24p0001*
+ ID_MODEL_FROM_DATABASE=Bitcoin hardware wallet
+
usb:v2C02*
ID_VENDOR_FROM_DATABASE=Planex Communications
diff --git a/hwdb/parse_hwdb.py b/hwdb/parse_hwdb.py
index 2540c8c2f6..5d4c5ea64d 100755
--- a/hwdb/parse_hwdb.py
+++ b/hwdb/parse_hwdb.py
@@ -49,6 +49,12 @@ except ImportError:
ecodes = None
print('WARNING: evdev is not available')
+try:
+ from functools import lru_cache
+except ImportError:
+ # don't do caching on old python
+ lru_cache = lambda: (lambda f: f)
+
EOL = LineEnd().suppress()
EMPTYLINE = LineStart() + LineEnd()
COMMENTLINE = pythonStyleComment + EOL
@@ -62,7 +68,7 @@ TYPES = {'mouse': ('usb', 'bluetooth', 'ps2', '*'),
'keyboard': ('name', ),
}
-@functools.lru_cache()
+@lru_cache()
def hwdb_grammar():
ParserElement.setDefaultWhitespaceChars('')
@@ -83,7 +89,7 @@ def hwdb_grammar():
return grammar
-@functools.lru_cache()
+@lru_cache()
def property_grammar():
ParserElement.setDefaultWhitespaceChars(' ')
diff --git a/man/crypttab.xml b/man/crypttab.xml
index 4b8d4aa3d6..17976f3704 100644
--- a/man/crypttab.xml
+++ b/man/crypttab.xml
@@ -327,6 +327,17 @@
</varlistentry>
<varlistentry>
+ <term><option>tcrypt-veracrypt</option></term>
+
+ <listitem><para>Check for a VeraCrypt volume. VeraCrypt is a fork of
+ TrueCrypt that is mostly compatible, but uses different, stronger key
+ derivation algorithms that cannot be detected without this flag.
+ Enabling this option could substantially slow down unlocking, because
+ VeraCrypt's key derivation takes much longer than TrueCrypt's. This
+ option implies <option>tcrypt</option>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
<term><option>timeout=</option></term>
<listitem><para>Specifies the timeout for querying for a
diff --git a/man/machinectl.xml b/man/machinectl.xml
index 0d57c01765..5a6ec294d2 100644
--- a/man/machinectl.xml
+++ b/man/machinectl.xml
@@ -188,7 +188,7 @@
<listitem><para>When used with the <command>shell</command> command, chooses the user ID to
open the interactive shell session as. If the argument to the <command>shell</command>
- command also specifies an user name, this option is ignored. If the name is not specified
+ command also specifies a user name, this option is ignored. If the name is not specified
in either way, <literal>root</literal> will be used by default. Note that this switch is
not supported for the <command>login</command> command (see below).</para></listitem>
</varlistentry>
diff --git a/man/nss-myhostname.xml b/man/nss-myhostname.xml
index b1daaba02b..c25476ecc8 100644
--- a/man/nss-myhostname.xml
+++ b/man/nss-myhostname.xml
@@ -110,7 +110,7 @@
group: compat mymachines systemd
shadow: compat
-hosts: files mymachines resolve <command>myhostname</command>
+hosts: files mymachines resolve [!UNAVAIL=return] dns <command>myhostname</command>
networks: files
protocols: db files
diff --git a/man/nss-mymachines.xml b/man/nss-mymachines.xml
index a70119e256..00bcc53ec0 100644
--- a/man/nss-mymachines.xml
+++ b/man/nss-mymachines.xml
@@ -86,7 +86,7 @@
group: compat <command>mymachines</command> systemd
shadow: compat
-hosts: files <command>mymachines</command> resolve myhostname
+hosts: files <command>mymachines</command> resolve [!UNAVAIL=return] dns myhostname
networks: files
protocols: db files
diff --git a/man/nss-resolve.xml b/man/nss-resolve.xml
index d66e8ba521..9f24f65019 100644
--- a/man/nss-resolve.xml
+++ b/man/nss-resolve.xml
@@ -85,7 +85,7 @@
group: compat mymachines systemd
shadow: compat
-hosts: files mymachines <command>resolve [!UNAVAIL=return]</command> dns
+hosts: files mymachines <command>resolve [!UNAVAIL=return]</command> dns myhostname
networks: files
protocols: db files
diff --git a/man/nss-systemd.xml b/man/nss-systemd.xml
index 56d26e7d1f..71aed4df83 100644
--- a/man/nss-systemd.xml
+++ b/man/nss-systemd.xml
@@ -83,7 +83,7 @@
group: compat mymachines <command>systemd</command>
shadow: compat
-hosts: files mymachines resolve myhostname
+hosts: files mymachines resolve [!UNAVAIL=return] dns myhostname
networks: files
protocols: db files
diff --git a/man/sd_event_source_set_priority.xml b/man/sd_event_source_set_priority.xml
index 6e7032fc80..b6bab6d316 100644
--- a/man/sd_event_source_set_priority.xml
+++ b/man/sd_event_source_set_priority.xml
@@ -57,9 +57,9 @@
<funcsynopsisinfo>#include &lt;systemd/sd-event.h&gt;</funcsynopsisinfo>
<funcsynopsisinfo><token>enum</token> {
- <constant>SD_EVENT_SOURCE_IMPORTANT</constant> = -100,
- <constant>SD_EVENT_SOURCE_NORMAL</constant> = 0,
- <constant>SD_EVENT_SOURCE_IDLE</constant> = 100,
+ <constant>SD_EVENT_PRIORITY_IMPORTANT</constant> = -100,
+ <constant>SD_EVENT_PRIORITY_NORMAL</constant> = 0,
+ <constant>SD_EVENT_PRIORITY_IDLE</constant> = 100,
};</funcsynopsisinfo>
<funcprototype>
diff --git a/man/sd_journal_stream_fd.xml b/man/sd_journal_stream_fd.xml
index 226298ae1b..db88eba1bc 100644
--- a/man/sd_journal_stream_fd.xml
+++ b/man/sd_journal_stream_fd.xml
@@ -104,7 +104,7 @@
<refsect1>
<title>Notes</title>
- <para>Function <function>sd_journal_stream_fd()</function> is thread-safe and may be be called
+ <para>Function <function>sd_journal_stream_fd()</function> is thread-safe and may be called
from multiple threads. All calls will return the same file descriptor, although temporarily
multiple file descriptors may be open.</para>
diff --git a/man/sd_notify.xml b/man/sd_notify.xml
index 025fbec6c1..94542b80b8 100644
--- a/man/sd_notify.xml
+++ b/man/sd_notify.xml
@@ -205,28 +205,25 @@
<varlistentry>
<term>FDSTORE=1</term>
- <listitem><para>Stores additional file descriptors in the
- service manager. File descriptors sent this way will be
- maintained per-service by the service manager and be passed
- again using the usual file descriptor passing logic on the
- next invocation of the service (see
- <citerefentry><refentrytitle>sd_listen_fds</refentrytitle><manvolnum>3</manvolnum></citerefentry>).
- This is useful for implementing service restart schemes where
- services serialize their state to <filename>/run</filename>,
- push their file descriptors to the system manager, and are
- then restarted, retrieving their state again via socket
- passing and <filename>/run</filename>. Note that the service
- manager will accept messages for a service only if
- <varname>FileDescriptorStoreMax=</varname> is set to non-zero
- for it (defaults to zero). See
- <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>
- for details. Multiple arrays of file descriptors may be sent
- in separate messages, in which case the arrays are combined.
- Note that the service manager removes duplicate file
- descriptors before passing them to the service. Use
- <function>sd_pid_notify_with_fds()</function> to send messages
- with <literal>FDSTORE=1</literal>, see
- below.</para></listitem>
+ <listitem><para>Stores additional file descriptors in the service manager. File
+ descriptors sent this way will be maintained per-service by the service manager
+ and will be passed again using the usual file descriptor passing logic on the next
+ invocation of the service, see
+ <citerefentry><refentrytitle>sd_listen_fds</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
+ This is useful for implementing service restart schemes where services serialize
+ their state to <filename>/run</filename>, push their file descriptors to the
+ system manager, and are then restarted, retrieving their state again via socket
+ passing and <filename>/run</filename>. Note that the service manager will accept
+ messages for a service only if <varname>FileDescriptorStoreMax=</varname> is set
+ to non-zero for it (defaults to zero, see
+ <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>).
+ File descriptors must be pollable, see
+ <citerefentry><refentrytitle>epoll_ctl</refentrytitle><manvolnum>2</manvolnum></citerefentry>.
+ Multiple arrays of file descriptors may be sent in separate messages, in which
+ case the arrays are combined. Note that the service manager removes duplicate
+ file descriptors before passing them to the service. Use
+ <function>sd_pid_notify_with_fds()</function> to send messages with
+ <literal>FDSTORE=1</literal>, see below.</para></listitem>
</varlistentry>
<varlistentry>
diff --git a/man/systemctl.xml b/man/systemctl.xml
index 75885bcf02..dfa00e0c03 100644
--- a/man/systemctl.xml
+++ b/man/systemctl.xml
@@ -233,6 +233,8 @@
of <command>status</command>, <command>list-units</command>,
<command>list-jobs</command>, and
<command>list-timers</command>.</para>
+ <para>Also, show installation targets in the output of
+ <command>is-enabled</command>.</para>
</listitem>
</varlistentry>
@@ -875,8 +877,8 @@ kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service
<para>Show properties of one or more units, jobs, or the
manager itself. If no argument is specified, properties of
the manager will be shown. If a unit name is specified,
- properties of the unit is shown, and if a job ID is
- specified, properties of the job is shown. By default, empty
+ properties of the unit are shown, and if a job ID is
+ specified, properties of the job are shown. By default, empty
properties are suppressed. Use <option>--all</option> to
show those too. To select specific properties to show, use
<option>--property=</option>. This command is intended to be
@@ -892,7 +894,11 @@ kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service
<para>Show backing files of one or more units. Prints the
"fragment" and "drop-ins" (source files) of units. Each
file is preceded by a comment which includes the file
- name.</para>
+ name. Note that this shows the contents of the backing files
+ on disk, which may not match the system manager's
+ understanding of these units if any unit files were
+ updated on disk and the <command>daemon-reload</command>
+ command wasn't issued since.</para>
</listitem>
</varlistentry>
<varlistentry>
@@ -1136,6 +1142,7 @@ kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service
exit code of 0 if at least one is enabled, non-zero
otherwise. Prints the current enable status (see table).
To suppress this output, use <option>--quiet</option>.
+ To show installation targets, use <option>--full</option>.
</para>
<table>
@@ -1258,7 +1265,7 @@ kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service
<literal>foo.service.d/</literal> with all their contained files are removed, both below the persistent and
runtime configuration directories (i.e. below <filename>/etc/systemd/system</filename> and
<filename>/run/systemd/system</filename>); if the unit file has a vendor-supplied version (i.e. a unit file
- located below <filename>/usr</filename>) any matching peristent or runtime unit file that overrides it is
+ located below <filename>/usr</filename>) any matching persistent or runtime unit file that overrides it is
removed, too. Note that if a unit file has no vendor-supplied version (i.e. is only defined below
<filename>/etc/systemd/system</filename> or <filename>/run/systemd/system</filename>, but not in a unit
file stored below <filename>/usr</filename>), then it is not removed. Also, if a unit is masked, it is
diff --git a/man/systemd-detect-virt.xml b/man/systemd-detect-virt.xml
index 61a5f8937f..996c2fa256 100644
--- a/man/systemd-detect-virt.xml
+++ b/man/systemd-detect-virt.xml
@@ -50,7 +50,8 @@
<refsynopsisdiv>
<cmdsynopsis>
- <command>systemd-detect-virt <arg choice="opt" rep="repeat">OPTIONS</arg></command>
+ <command>systemd-detect-virt</command>
+ <arg choice="opt" rep="repeat">OPTIONS</arg>
</cmdsynopsis>
</refsynopsisdiv>
@@ -218,6 +219,16 @@
</varlistentry>
<varlistentry>
+ <term><option>--private-users</option></term>
+
+ <listitem><para>Detect whether invoked in a user namespace. In this mode, no
+ output is written, but the return value indicates whether the process was invoked
+ inside of a user namespace or not. See
+ <citerefentry project='man-pages'><refentrytitle>user_namespaces</refentrytitle><manvolnum>7</manvolnum></citerefentry>
+ for more information.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
<term><option>-q</option></term>
<term><option>--quiet</option></term>
@@ -243,7 +254,8 @@
<para>
<citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd-nspawn</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
- <citerefentry><refentrytitle>chroot</refentrytitle><manvolnum>2</manvolnum></citerefentry>
+ <citerefentry><refentrytitle>chroot</refentrytitle><manvolnum>2</manvolnum></citerefentry>,
+ <citerefentry project='man-pages'><refentrytitle>namespaces</refentrytitle><manvolnum>7</manvolnum></citerefentry>
</para>
</refsect1>
diff --git a/man/systemd-escape.xml b/man/systemd-escape.xml
index dbb3869a24..5e95e22536 100644
--- a/man/systemd-escape.xml
+++ b/man/systemd-escape.xml
@@ -97,7 +97,7 @@
<listitem><para>Inserts the escaped strings in a unit name
template. Takes a unit name template such as
- <filename>foobar@.service</filename> May not be used in
+ <filename>foobar@.service</filename>. May not be used in
conjunction with <option>--suffix=</option>,
<option>--unescape</option> or
<option>--mangle</option>.</para></listitem>
@@ -108,9 +108,10 @@
<term><option>-p</option></term>
<listitem><para>When escaping or unescaping a string, assume
- it refers to a file system path. This enables special
- processing of the initial <literal>/</literal> of the
- path.</para></listitem>
+ it refers to a file system path. This eliminates leading,
+ trailing or duplicate <literal>/</literal> characters
+ and rejects <literal>.</literal> and <literal>..</literal>
+ path components.</para></listitem>
</varlistentry>
<varlistentry>
@@ -143,7 +144,7 @@
<refsect1>
<title>Examples</title>
- <para>Escape a single string:</para>
+ <para>To escape a single string:</para>
<programlisting>$ systemd-escape 'Hallöchen, Meister'
Hall\xc3\xb6chen\x2c\x20Meister</programlisting>
@@ -155,7 +156,7 @@ Hallöchen, Meister</programlisting>
<programlisting>$ systemd-escape -p --suffix=mount "/tmp//waldi/foobar/"
tmp-waldi-foobar.mount</programlisting>
- <para>To generate instance names of three strings</para>
+ <para>To generate instance names of three strings:</para>
<programlisting>$ systemd-escape --template=systemd-nspawn@.service 'My Container 1' 'containerb' 'container/III'
systemd-nspawn@My\x20Container\x201.service systemd-nspawn@containerb.service systemd-nspawn@container-III.service</programlisting>
</refsect1>
diff --git a/man/systemd-machine-id-setup.xml b/man/systemd-machine-id-setup.xml
index 749987a937..944e899bd4 100644
--- a/man/systemd-machine-id-setup.xml
+++ b/man/systemd-machine-id-setup.xml
@@ -82,7 +82,7 @@
<filename>/etc/machine-id</filename>.</para></listitem>
<listitem><para>If run inside a KVM virtual machine and a UUID
- is was configured (via the <option>-uuid</option>
+ is configured (via the <option>-uuid</option>
option), this UUID is used to initialize the machine ID. The
caller must ensure that the UUID passed is sufficiently unique
and is different for every booted instance of the
@@ -154,7 +154,7 @@
<varlistentry>
<term><option>--print</option></term>
- <listitem><para>Print the machine ID generated or commited after the operation is complete.</para></listitem>
+ <listitem><para>Print the machine ID generated or committed after the operation is complete.</para></listitem>
</varlistentry>
<xi:include href="standard-options.xml" xpointer="help" />
diff --git a/man/systemd-socket-activate.xml b/man/systemd-socket-activate.xml
index 2cf3a7d377..1c0619a840 100644
--- a/man/systemd-socket-activate.xml
+++ b/man/systemd-socket-activate.xml
@@ -142,7 +142,7 @@
<varname>FileDescriptorName=</varname> in socket unit files, and enables use of
<citerefentry><refentrytitle>sd_listen_fds_with_names</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
Multiple entries may be specifies using separate options or by separating names with colons
- (<literal>:</literal>) in one option. In case more names are given than descriptors, superfluous ones willl be
+ (<literal>:</literal>) in one option. In case more names are given than descriptors, superfluous ones will be
ignored. In case less names are given than descriptors, the remaining file descriptors will be unnamed.
</para></listitem>
</varlistentry>
diff --git a/man/systemd-system.conf.xml b/man/systemd-system.conf.xml
index 1d995f143e..e4e81f7f2e 100644
--- a/man/systemd-system.conf.xml
+++ b/man/systemd-system.conf.xml
@@ -110,8 +110,9 @@
<listitem><para>Defines what action will be performed
if user presses Ctrl-Alt-Delete more than 7 times in 2s.
- Can be set to <literal>reboot-force</literal>, <literal>poweroff-force</literal>
- or disabled with <literal>ignore</literal>. Defaults to
+ Can be set to <literal>reboot-force</literal>, <literal>poweroff-force</literal>,
+ <literal>reboot-immediate</literal>, <literal>poweroff-immediate</literal>
+ or disabled with <literal>none</literal>. Defaults to
<literal>reboot-force</literal>.
</para></listitem>
</varlistentry>
@@ -329,7 +330,7 @@
<varname>TasksAccounting=</varname>. See
<citerefentry><refentrytitle>systemd.resource-control</refentrytitle><manvolnum>5</manvolnum></citerefentry>
for details on the per-unit
- settings. <varname>DefaulTasksAccounting=</varname> defaults
+ settings. <varname>DefaultTasksAccounting=</varname> defaults
to on, the other three settings to off.</para></listitem>
</varlistentry>
diff --git a/man/systemd-vconsole-setup.service.xml b/man/systemd-vconsole-setup.service.xml
index e048258621..f2da2a7b77 100644
--- a/man/systemd-vconsole-setup.service.xml
+++ b/man/systemd-vconsole-setup.service.xml
@@ -43,23 +43,35 @@
<refnamediv>
<refname>systemd-vconsole-setup.service</refname>
<refname>systemd-vconsole-setup</refname>
- <refpurpose>Configure the virtual console at boot</refpurpose>
+ <refpurpose>Configure the virtual consoles</refpurpose>
</refnamediv>
<refsynopsisdiv>
<para><filename>systemd-vconsole-setup.service</filename></para>
- <para><filename>/usr/lib/systemd/systemd-vconsole-setup</filename></para>
+ <cmdsynopsis>
+ <command>/usr/lib/systemd/systemd-vconsole-setup</command>
+ <arg choice="opt">TTY</arg>
+ </cmdsynopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>
- <para><filename>systemd-vconsole-setup.service</filename> is an
- early boot service that configures the virtual console font and
- console keymap. Internally it calls
- <citerefentry project='mankier'><refentrytitle>loadkeys</refentrytitle><manvolnum>1</manvolnum></citerefentry>
- and
- <citerefentry project='die-net'><refentrytitle>setfont</refentrytitle><manvolnum>8</manvolnum></citerefentry>.</para>
+ <para><filename>systemd-vconsole-setup</filename> is a helper used to prepare either all virtual consoles, or — if
+ the optional <replaceable>TTY</replaceable> parameter is provided — a specific one. When the system is booting up
+ it's called by <citerefentry><command>udev</command></citerefentry> during vtconsole subsystem initialization.
+ <productname>Systemd</productname> also calls it internally as needed via
+ <filename>systemd-vconsole-setup.service</filename>. The helper calls
+ <citerefentry project='mankier'><refentrytitle>loadkeys</refentrytitle><manvolnum>1</manvolnum></citerefentry> and
+ <citerefentry project='die-net'><refentrytitle>setfont</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+ internally.
+ </para>
+
+ <para>
+ You may want to use this helper whenever you change <filename>vconsole.conf</filename> to
+ refresh the settings on your consoles — either through the <command>systemctl restart</command> /
+ <command>systemctl start</command> command or directly through the executable.
+ </para>
<para>See
<citerefentry><refentrytitle>vconsole.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>
diff --git a/man/systemd.exec.xml b/man/systemd.exec.xml
index dbe4594730..3c350df11f 100644
--- a/man/systemd.exec.xml
+++ b/man/systemd.exec.xml
@@ -1090,7 +1090,7 @@
mechanism. Almost no services need to write to these at runtime; it is hence recommended to turn this on for
most services. For this setting the same restrictions regarding mount propagation and privileges apply as for
<varname>ReadOnlyPaths=</varname> and related calls, see above. Defaults to off.
- Note that this option does not prevent kernel tuning through IPC interfaces and exeternal programs. However
+ Note that this option does not prevent kernel tuning through IPC interfaces and external programs. However
<varname>InaccessiblePaths=</varname> can be used to make some IPC file system objects
inaccessible.</para></listitem>
</varlistentry>
@@ -1234,42 +1234,49 @@
<varlistentry>
<term><varname>NoNewPrivileges=</varname></term>
- <listitem><para>Takes a boolean argument. If true, ensures
- that the service process and all its children can never gain
- new privileges. This option is more powerful than the
- respective secure bits flags (see above), as it also prohibits
- UID changes of any kind. This is the simplest, most effective
- way to ensure that a process and its children can never
- elevate privileges again.</para></listitem>
+ <listitem><para>Takes a boolean argument. If true, ensures that the service
+ process and all its children can never gain new privileges. This option is more
+ powerful than the respective secure bits flags (see above), as it also prohibits
+ UID changes of any kind. This is the simplest and most effective way to ensure that
+ a process and its children can never elevate privileges again. Defaults to false,
+ but in the user manager instance certain settings force
+ <varname>NoNewPrivileges=yes</varname>, ignoring the value of this setting.
+ Those is the case when <varname>SystemCallFilter=</varname>,
+ <varname>SystemCallArchitectures=</varname>,
+ <varname>RestrictAddressFamilies=</varname>,
+ <varname>PrivateDevices=</varname>,
+ <varname>ProtectKernelTunables=</varname>,
+ <varname>ProtectKernelModules=</varname>,
+ <varname>MemoryDenyWriteExecute=</varname>, or
+ <varname>RestrictRealtime=</varname> are specified.
+ </para></listitem>
</varlistentry>
<varlistentry>
<term><varname>SystemCallFilter=</varname></term>
- <listitem><para>Takes a space-separated list of system call
- names. If this setting is used, all system calls executed by
- the unit processes except for the listed ones will result in
- immediate process termination with the
- <constant>SIGSYS</constant> signal (whitelisting). If the
- first character of the list is <literal>~</literal>, the
- effect is inverted: only the listed system calls will result
- in immediate process termination (blacklisting). If running in
- user mode, or in system mode, but without the
- <constant>CAP_SYS_ADMIN</constant> capability (e.g. setting
- <varname>User=nobody</varname>),
- <varname>NoNewPrivileges=yes</varname> is implied. This
- feature makes use of the Secure Computing Mode 2 interfaces of
- the kernel ('seccomp filtering') and is useful for enforcing a
- minimal sandboxing environment. Note that the
- <function>execve</function>,
- <function>rt_sigreturn</function>,
- <function>sigreturn</function>,
- <function>exit_group</function>, <function>exit</function>
- system calls are implicitly whitelisted and do not need to be
- listed explicitly. This option may be specified more than once,
- in which case the filter masks are merged. If the empty string
- is assigned, the filter is reset, all prior assignments will
- have no effect. This does not affect commands prefixed with <literal>+</literal>.</para>
+ <listitem><para>Takes a space-separated list of system call names. If this setting is used, all system calls
+ executed by the unit processes except for the listed ones will result in immediate process termination with the
+ <constant>SIGSYS</constant> signal (whitelisting). If the first character of the list is <literal>~</literal>,
+ the effect is inverted: only the listed system calls will result in immediate process termination
+ (blacklisting). If running in user mode, or in system mode, but without the <constant>CAP_SYS_ADMIN</constant>
+ capability (e.g. setting <varname>User=nobody</varname>), <varname>NoNewPrivileges=yes</varname> is
+ implied. This feature makes use of the Secure Computing Mode 2 interfaces of the kernel ('seccomp filtering')
+ and is useful for enforcing a minimal sandboxing environment. Note that the <function>execve</function>,
+ <function>exit</function>, <function>exit_group</function>, <function>getrlimit</function>,
+ <function>rt_sigreturn</function>, <function>sigreturn</function> system calls and the system calls for
+ querying time and sleeping are implicitly whitelisted and do not need to be listed explicitly. This option may
+ be specified more than once, in which case the filter masks are merged. If the empty string is assigned, the
+ filter is reset, all prior assignments will have no effect. This does not affect commands prefixed with
+ <literal>+</literal>.</para>
+
+ <para>Note that strict system call filters may impact execution and error handling code paths of the service
+ invocation. Specifically, access to the <function>execve</function> system call is required for the execution
+ of the service binary — if it is blocked service invocation will necessarily fail. Also, if execution of the
+ service binary fails for some reason (for example: missing service executable), the error handling logic might
+ require access to an additional set of system calls in order to process and log this failure correctly. It
+ might be necessary to temporarily disable system call filters in order to simplify debugging of such
+ failures.</para>
<para>If you specify both types of this option (i.e.
whitelisting and blacklisting), the first encountered will
@@ -1303,6 +1310,10 @@
</thead>
<tbody>
<row>
+ <entry>@basic-io</entry>
+ <entry>System calls for basic I/O: reading, writing, seeking, file descriptor duplication and closing (<citerefentry project='man-pages'><refentrytitle>read</refentrytitle><manvolnum>2</manvolnum></citerefentry>, <citerefentry project='man-pages'><refentrytitle>write</refentrytitle><manvolnum>2</manvolnum></citerefentry>, and related calls)</entry>
+ </row>
+ <row>
<entry>@clock</entry>
<entry>System calls for changing the system clock (<citerefentry project='man-pages'><refentrytitle>adjtimex</refentrytitle><manvolnum>2</manvolnum></citerefentry>, <citerefentry project='man-pages'><refentrytitle>settimeofday</refentrytitle><manvolnum>2</manvolnum></citerefentry>, and related calls)</entry>
</row>
@@ -1320,7 +1331,7 @@
</row>
<row>
<entry>@ipc</entry>
- <entry>SysV IPC, POSIX Message Queues or other IPC (<citerefentry project='man-pages'><refentrytitle>mq_overview</refentrytitle><manvolnum>7</manvolnum></citerefentry>, <citerefentry project='man-pages'><refentrytitle>svipc</refentrytitle><manvolnum>7</manvolnum></citerefentry>)</entry>
+ <entry>Pipes, SysV IPC, POSIX Message Queues and other IPC (<citerefentry project='man-pages'><refentrytitle>mq_overview</refentrytitle><manvolnum>7</manvolnum></citerefentry>, <citerefentry project='man-pages'><refentrytitle>svipc</refentrytitle><manvolnum>7</manvolnum></citerefentry>)</entry>
</row>
<row>
<entry>@keyring</entry>
@@ -1348,17 +1359,21 @@
</row>
<row>
<entry>@process</entry>
- <entry>Process control, execution, namespaces (<citerefentry project='man-pages'><refentrytitle>execve</refentrytitle><manvolnum>2</manvolnum></citerefentry>, <citerefentry project='man-pages'><refentrytitle>kill</refentrytitle><manvolnum>2</manvolnum></citerefentry>, <citerefentry project='man-pages'><refentrytitle>namespaces</refentrytitle><manvolnum>7</manvolnum></citerefentry>, …</entry>
+ <entry>Process control, execution, namespaces (<citerefentry project='man-pages'><refentrytitle>clone</refentrytitle><manvolnum>2</manvolnum></citerefentry>, <citerefentry project='man-pages'><refentrytitle>kill</refentrytitle><manvolnum>2</manvolnum></citerefentry>, <citerefentry project='man-pages'><refentrytitle>namespaces</refentrytitle><manvolnum>7</manvolnum></citerefentry>, …</entry>
</row>
<row>
<entry>@raw-io</entry>
- <entry>Raw I/O port access (<citerefentry project='man-pages'><refentrytitle>ioperm</refentrytitle><manvolnum>2</manvolnum></citerefentry>, <citerefentry project='man-pages'><refentrytitle>iopl</refentrytitle><manvolnum>2</manvolnum></citerefentry>, <function>pciconfig_read()</function>, …</entry>
+ <entry>Raw I/O port access (<citerefentry project='man-pages'><refentrytitle>ioperm</refentrytitle><manvolnum>2</manvolnum></citerefentry>, <citerefentry project='man-pages'><refentrytitle>iopl</refentrytitle><manvolnum>2</manvolnum></citerefentry>, <function>pciconfig_read()</function>, …)</entry>
+ </row>
+ <row>
+ <entry>@resources</entry>
+ <entry>System calls for changing resource limits, memory and scheduling parameters (<citerefentry project='man-pages'><refentrytitle>setrlimit</refentrytitle><manvolnum>2</manvolnum></citerefentry>, <citerefentry project='man-pages'><refentrytitle>setpriority</refentrytitle><manvolnum>2</manvolnum></citerefentry>, …)</entry>
</row>
</tbody>
</tgroup>
</table>
- Note, that as new system calls are added to the kernel, additional system calls might be added to the groups
+ Note that as new system calls are added to the kernel, additional system calls might be added to the groups
above, so the contents of the sets may change between systemd versions.</para>
<para>It is recommended to combine the file system namespacing related options with
@@ -1387,28 +1402,25 @@
<varlistentry>
<term><varname>SystemCallArchitectures=</varname></term>
- <listitem><para>Takes a space-separated list of architecture
- identifiers to include in the system call filter. The known
- architecture identifiers are <constant>x86</constant>,
- <constant>x86-64</constant>, <constant>x32</constant>,
- <constant>arm</constant>, <constant>s390</constant>,
- <constant>s390x</constant> as well as the special identifier
- <constant>native</constant>. Only system calls of the
- specified architectures will be permitted to processes of this
- unit. This is an effective way to disable compatibility with
- non-native architectures for processes, for example to
- prohibit execution of 32-bit x86 binaries on 64-bit x86-64
- systems. The special <constant>native</constant> identifier
- implicitly maps to the native architecture of the system (or
- more strictly: to the architecture the system manager is
- compiled for). If running in user mode, or in system mode,
- but without the <constant>CAP_SYS_ADMIN</constant>
- capability (e.g. setting <varname>User=nobody</varname>),
- <varname>NoNewPrivileges=yes</varname> is implied. Note
- that setting this option to a non-empty list implies that
- <constant>native</constant> is included too. By default, this
- option is set to the empty list, i.e. no architecture system
- call filtering is applied.</para></listitem>
+ <listitem><para>Takes a space-separated list of architecture identifiers to
+ include in the system call filter. The known architecture identifiers are the same
+ as for <varname>ConditionArchitecture=</varname> described in
+ <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+ as well as <constant>x32</constant>, <constant>mips64-n32</constant>,
+ <constant>mips64-le-n32</constant>, and the special identifier
+ <constant>native</constant>. Only system calls of the specified architectures will
+ be permitted to processes of this unit. This is an effective way to disable
+ compatibility with non-native architectures for processes, for example to prohibit
+ execution of 32-bit x86 binaries on 64-bit x86-64 systems. The special
+ <constant>native</constant> identifier implicitly maps to the native architecture
+ of the system (or more strictly: to the architecture the system manager is
+ compiled for). If running in user mode, or in system mode, but without the
+ <constant>CAP_SYS_ADMIN</constant> capability (e.g. setting
+ <varname>User=nobody</varname>), <varname>NoNewPrivileges=yes</varname> is
+ implied. Note that setting this option to a non-empty list implies that
+ <constant>native</constant> is included too. By default, this option is set to the
+ empty list, i.e. no architecture system call filtering is applied.
+ </para></listitem>
</varlistentry>
<varlistentry>
@@ -1455,7 +1467,7 @@
<listitem><para>Takes a boolean argument. If true, explicit module loading will
be denied. This allows to turn off module load and unload operations on modular
- kernels. It is recomended to turn this on for most services that do not need special
+ kernels. It is recommended to turn this on for most services that do not need special
file systems or extra kernel modules to work. Default to off. Enabling this option
removes <constant>CAP_SYS_MODULE</constant> from the capability bounding set for
the unit, and installs a system call filter to block module system calls,
@@ -1516,12 +1528,15 @@
<term><varname>MemoryDenyWriteExecute=</varname></term>
<listitem><para>Takes a boolean argument. If set, attempts to create memory mappings that are writable and
- executable at the same time, or to change existing memory mappings to become executable are prohibited.
+ executable at the same time, or to change existing memory mappings to become executable, or mapping shared memory
+ segments as executable are prohibited.
Specifically, a system call filter is added that rejects
<citerefentry><refentrytitle>mmap</refentrytitle><manvolnum>2</manvolnum></citerefentry>
- system calls with both <constant>PROT_EXEC</constant> and <constant>PROT_WRITE</constant> set
- and <citerefentry><refentrytitle>mprotect</refentrytitle><manvolnum>2</manvolnum></citerefentry>
- system calls with <constant>PROT_EXEC</constant> set. Note that this option is incompatible with programs
+ system calls with both <constant>PROT_EXEC</constant> and <constant>PROT_WRITE</constant> set,
+ <citerefentry><refentrytitle>mprotect</refentrytitle><manvolnum>2</manvolnum></citerefentry>
+ system calls with <constant>PROT_EXEC</constant> set and
+ <citerefentry><refentrytitle>shmat</refentrytitle><manvolnum>2</manvolnum></citerefentry>
+ system calls with <constant>SHM_EXEC</constant> set. Note that this option is incompatible with programs
that generate program code dynamically at runtime, such as JIT execution engines, or programs compiled making
use of the code "trampoline" feature of various C compilers. This option improves service security, as it makes
harder for software exploits to change running code dynamically.
diff --git a/man/systemd.offline-updates.xml b/man/systemd.offline-updates.xml
index f404c8d72f..07a5225512 100644
--- a/man/systemd.offline-updates.xml
+++ b/man/systemd.offline-updates.xml
@@ -143,7 +143,7 @@
<varname>FailureAction=</varname> makes sure that the specified unit is activated if your
script exits uncleanly (by non-zero error code, or signal/coredump). If your script succeeds
you should trigger the reboot in your own code, for example by invoking logind's
- <command>Reboot()</command> call or calling <command>systemct reboot</command>. See
+ <command>Reboot()</command> call or calling <command>systemctl reboot</command>. See
<ulink url="http://www.freedesktop.org/wiki/Software/systemd/logind">logind dbus API</ulink>
for details.</para>
</listitem>
diff --git a/man/systemd.service.xml b/man/systemd.service.xml
index 90b1312603..5c65957bda 100644
--- a/man/systemd.service.xml
+++ b/man/systemd.service.xml
@@ -852,13 +852,13 @@
serialized to <filename>/run</filename> and the file
descriptors passed to the service manager, to allow restarts
without losing state. Defaults to 0, i.e. no file descriptors
- may be stored in the service manager by default. All file
+ may be stored in the service manager. All file
descriptors passed to the service manager from a specific
service are passed back to the service's main process on the
next service restart. Any file descriptors passed to the
service manager are automatically closed when POLLHUP or
POLLERR is seen on them, or when the service is fully stopped
- and no job queued or being executed for it.</para></listitem>
+ and no job is queued or being executed for it.</para></listitem>
</varlistentry>
<varlistentry>
diff --git a/man/systemd.target.xml b/man/systemd.target.xml
index 2e35e54fc4..b3cccd4e52 100644
--- a/man/systemd.target.xml
+++ b/man/systemd.target.xml
@@ -83,7 +83,7 @@
<title>Automatic Dependencies</title>
<para>Unless <varname>DefaultDependencies=</varname> is set to
- <option>no</option> in either of releated units or an explicit ordering
+ <option>no</option> in either of related units or an explicit ordering
dependency is already defined, target units will implicitly complement all
configured dependencies of type <varname>Wants=</varname> or
<varname>Requires=</varname> with dependencies of type
diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml
index 04efee2891..40c4cfd854 100644
--- a/man/systemd.unit.xml
+++ b/man/systemd.unit.xml
@@ -908,7 +908,8 @@
<varname>systemd-nspawn</varname>,
<varname>docker</varname>,
<varname>rkt</varname> to test
- against a specific implementation. See
+ against a specific implementation, or
+ <varname>private-users</varname> to check whether we are running in a user namespace. See
<citerefentry><refentrytitle>systemd-detect-virt</refentrytitle><manvolnum>1</manvolnum></citerefentry>
for a full list of known virtualization technologies and their
identifiers. If multiple virtualization technologies are
diff --git a/man/tmpfiles.d.xml b/man/tmpfiles.d.xml
index 75fb901102..e040a1636d 100644
--- a/man/tmpfiles.d.xml
+++ b/man/tmpfiles.d.xml
@@ -644,7 +644,7 @@ d /run/uscreens 0755 root screen 10d12h
t /run/cups - - - - security.SMACK64=printing user.attr-with-spaces="foo bar"
</programlisting>
- <para>The direcory will be owned by root and have default mode. It's contents are
+ <para>The directory will be owned by root and have default mode. Its contents are
not subject to time based cleanup, but will be obliterated when
<command>systemd-tmpfiles --remove</command> runs.</para>
</example>
diff --git a/man/udev.xml b/man/udev.xml
index dd5563605c..3359fb0865 100644
--- a/man/udev.xml
+++ b/man/udev.xml
@@ -577,8 +577,8 @@
<para>The <varname>NAME</varname>, <varname>SYMLINK</varname>,
<varname>PROGRAM</varname>, <varname>OWNER</varname>,
- <varname>GROUP</varname>, <varname>MODE</varname>, and
- <varname>RUN</varname> fields support simple string substitutions.
+ <varname>GROUP</varname>, <varname>MODE</varname>, <varname>SECLABEL</varname>,
+ and <varname>RUN</varname> fields support simple string substitutions.
The <varname>RUN</varname> substitutions are performed after all rules
have been processed, right before the program is executed, allowing for
the use of device properties set by earlier matching rules. For all other
diff --git a/src/basic/log.c b/src/basic/log.c
index 2ff70be255..4919d175da 100644
--- a/src/basic/log.c
+++ b/src/basic/log.c
@@ -782,7 +782,7 @@ static void log_assert(
return;
DISABLE_WARNING_FORMAT_NONLITERAL;
- xsprintf(buffer, format, text, file, line, func);
+ snprintf(buffer, sizeof buffer, format, text, file, line, func);
REENABLE_WARNING;
log_abort_msg = buffer;
diff --git a/src/basic/mount-util.c b/src/basic/mount-util.c
index b221309a4d..5d37fb48be 100644
--- a/src/basic/mount-util.c
+++ b/src/basic/mount-util.c
@@ -162,7 +162,7 @@ int fd_is_mount_point(int fd, const char *filename, int flags) {
fallback_fdinfo:
r = fd_fdinfo_mnt_id(fd, filename, flags, &mount_id);
- if (r == -EOPNOTSUPP)
+ if (IN_SET(r, -EOPNOTSUPP, -EACCES))
goto fallback_fstat;
if (r < 0)
return r;
@@ -525,6 +525,7 @@ bool fstype_is_network(const char *fstype) {
"glusterfs\0"
"pvfs2\0" /* OrangeFS */
"ocfs2\0"
+ "lustre\0"
;
const char *x;
diff --git a/src/basic/path-util.c b/src/basic/path-util.c
index e438f27df5..5cdac50c68 100644
--- a/src/basic/path-util.c
+++ b/src/basic/path-util.c
@@ -354,6 +354,16 @@ char* path_startswith(const char *path, const char *prefix) {
assert(path);
assert(prefix);
+ /* Returns a pointer to the start of the first component after the parts matched by
+ * the prefix, iff
+ * - both paths are absolute or both paths are relative,
+ * and
+ * - each component in prefix in turn matches a component in path at the same position.
+ * An empty string will be returned when the prefix and path are equivalent.
+ *
+ * Returns NULL otherwise.
+ */
+
if ((path[0] == '/') != (prefix[0] == '/'))
return NULL;
diff --git a/src/basic/special.h b/src/basic/special.h
index 084d3dfa23..5276bcf598 100644
--- a/src/basic/special.h
+++ b/src/basic/special.h
@@ -117,3 +117,6 @@
/* The scope unit systemd itself lives in. */
#define SPECIAL_INIT_SCOPE "init.scope"
+
+/* The root directory. */
+#define SPECIAL_ROOT_MOUNT "-.mount"
diff --git a/src/basic/virt.c b/src/basic/virt.c
index 41012d52a0..69b0f96183 100644
--- a/src/basic/virt.c
+++ b/src/basic/virt.c
@@ -485,6 +485,76 @@ int detect_virtualization(void) {
return r;
}
+static int userns_has_mapping(const char *name) {
+ _cleanup_fclose_ FILE *f = NULL;
+ _cleanup_free_ char *buf = NULL;
+ size_t n_allocated = 0;
+ ssize_t n;
+ uint32_t a, b, c;
+ int r;
+
+ f = fopen(name, "re");
+ if (!f) {
+ log_debug_errno(errno, "Failed to open %s: %m", name);
+ return errno == -ENOENT ? false : -errno;
+ }
+
+ n = getline(&buf, &n_allocated, f);
+ if (n < 0) {
+ if (feof(f)) {
+ log_debug("%s is empty, we're in an uninitialized user namespace", name);
+ return true;
+ }
+
+ return log_debug_errno(errno, "Failed to read %s: %m", name);
+ }
+
+ r = sscanf(buf, "%"PRIu32" %"PRIu32" %"PRIu32, &a, &b, &c);
+ if (r < 3)
+ return log_debug_errno(errno, "Failed to parse %s: %m", name);
+
+ if (a == 0 && b == 0 && c == UINT32_MAX) {
+ /* The kernel calls mappings_overlap() and does not allow overlaps */
+ log_debug("%s has a full 1:1 mapping", name);
+ return false;
+ }
+
+ /* Anything else implies that we are in a user namespace */
+ log_debug("Mapping found in %s, we're in a user namespace", name);
+ return true;
+}
+
+int running_in_userns(void) {
+ _cleanup_free_ char *line = NULL;
+ int r;
+
+ r = userns_has_mapping("/proc/self/uid_map");
+ if (r != 0)
+ return r;
+
+ r = userns_has_mapping("/proc/self/gid_map");
+ if (r != 0)
+ return r;
+
+ /* "setgroups" file was added in kernel v3.18-rc6-15-g9cc46516dd. It is also
+ * possible to compile a kernel without CONFIG_USER_NS, in which case "setgroups"
+ * also does not exist. We cannot distinguish those two cases, so assume that
+ * we're running on a stripped-down recent kernel, rather than on an old one,
+ * and if the file is not found, return false.
+ */
+ r = read_one_line_file("/proc/self/setgroups", &line);
+ if (r < 0) {
+ log_debug_errno(r, "/proc/self/setgroups: %m");
+ return r == -ENOENT ? false : r;
+ }
+
+ truncate_nl(line);
+ r = streq(line, "deny");
+ /* See user_namespaces(7) for a description of this "setgroups" contents. */
+ log_debug("/proc/self/setgroups contains \"%s\", %s user namespace", line, r ? "in" : "not in");
+ return r;
+}
+
int running_in_chroot(void) {
int ret;
diff --git a/src/basic/virt.h b/src/basic/virt.h
index bc5b3ae94d..7d15169112 100644
--- a/src/basic/virt.h
+++ b/src/basic/virt.h
@@ -67,6 +67,7 @@ int detect_vm(void);
int detect_container(void);
int detect_virtualization(void);
+int running_in_userns(void);
int running_in_chroot(void);
const char *virtualization_to_string(int v) _const_;
diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c
index 12eb55cb7f..d7d3d3c8ce 100644
--- a/src/core/dbus-manager.c
+++ b/src/core/dbus-manager.c
@@ -47,6 +47,11 @@
#include "virt.h"
#include "watchdog.h"
+static UnitFileFlags unit_file_bools_to_flags(bool runtime, bool force) {
+ return (runtime ? UNIT_FILE_RUNTIME : 0) |
+ (force ? UNIT_FILE_FORCE : 0);
+}
+
static int property_get_version(
sd_bus *bus,
const char *path,
@@ -1948,13 +1953,14 @@ static int install_error(
static int method_enable_unit_files_generic(
sd_bus_message *message,
Manager *m,
- int (*call)(UnitFileScope scope, bool runtime, const char *root_dir, char *files[], bool force, UnitFileChange **changes, unsigned *n_changes),
+ int (*call)(UnitFileScope scope, UnitFileFlags flags, const char *root_dir, char *files[], UnitFileChange **changes, unsigned *n_changes),
bool carries_install_info,
sd_bus_error *error) {
_cleanup_strv_free_ char **l = NULL;
UnitFileChange *changes = NULL;
unsigned n_changes = 0;
+ UnitFileFlags flags;
int runtime, force, r;
assert(message);
@@ -1968,13 +1974,15 @@ static int method_enable_unit_files_generic(
if (r < 0)
return r;
+ flags = unit_file_bools_to_flags(runtime, force);
+
r = bus_verify_manage_unit_files_async(m, message, error);
if (r < 0)
return r;
if (r == 0)
return 1; /* No authorization for now, but the async polkit stuff will call us again when it has it */
- r = call(m->unit_file_scope, runtime, NULL, l, force, &changes, &n_changes);
+ r = call(m->unit_file_scope, flags, NULL, l, &changes, &n_changes);
if (r < 0)
return install_error(error, r, changes, n_changes);
@@ -1993,8 +2001,8 @@ static int method_link_unit_files(sd_bus_message *message, void *userdata, sd_bu
return method_enable_unit_files_generic(message, userdata, unit_file_link, false, error);
}
-static int unit_file_preset_without_mode(UnitFileScope scope, bool runtime, const char *root_dir, char **files, bool force, UnitFileChange **changes, unsigned *n_changes) {
- return unit_file_preset(scope, runtime, root_dir, files, UNIT_FILE_PRESET_FULL, force, changes, n_changes);
+static int unit_file_preset_without_mode(UnitFileScope scope, UnitFileFlags flags, const char *root_dir, char **files, UnitFileChange **changes, unsigned *n_changes) {
+ return unit_file_preset(scope, flags, root_dir, files, UNIT_FILE_PRESET_FULL, changes, n_changes);
}
static int method_preset_unit_files(sd_bus_message *message, void *userdata, sd_bus_error *error) {
@@ -2013,6 +2021,7 @@ static int method_preset_unit_files_with_mode(sd_bus_message *message, void *use
Manager *m = userdata;
UnitFilePresetMode mm;
int runtime, force, r;
+ UnitFileFlags flags;
const char *mode;
assert(message);
@@ -2026,6 +2035,8 @@ static int method_preset_unit_files_with_mode(sd_bus_message *message, void *use
if (r < 0)
return r;
+ flags = unit_file_bools_to_flags(runtime, force);
+
if (isempty(mode))
mm = UNIT_FILE_PRESET_FULL;
else {
@@ -2040,7 +2051,7 @@ static int method_preset_unit_files_with_mode(sd_bus_message *message, void *use
if (r == 0)
return 1; /* No authorization for now, but the async polkit stuff will call us again when it has it */
- r = unit_file_preset(m->unit_file_scope, runtime, NULL, l, mm, force, &changes, &n_changes);
+ r = unit_file_preset(m->unit_file_scope, flags, NULL, l, mm, &changes, &n_changes);
if (r < 0)
return install_error(error, r, changes, n_changes);
@@ -2050,7 +2061,7 @@ static int method_preset_unit_files_with_mode(sd_bus_message *message, void *use
static int method_disable_unit_files_generic(
sd_bus_message *message,
Manager *m,
- int (*call)(UnitFileScope scope, bool runtime, const char *root_dir, char *files[], UnitFileChange **changes, unsigned *n_changes),
+ int (*call)(UnitFileScope scope, UnitFileFlags flags, const char *root_dir, char *files[], UnitFileChange **changes, unsigned *n_changes),
sd_bus_error *error) {
_cleanup_strv_free_ char **l = NULL;
@@ -2075,7 +2086,7 @@ static int method_disable_unit_files_generic(
if (r == 0)
return 1; /* No authorization for now, but the async polkit stuff will call us again when it has it */
- r = call(m->unit_file_scope, runtime, NULL, l, &changes, &n_changes);
+ r = call(m->unit_file_scope, runtime ? UNIT_FILE_RUNTIME : 0, NULL, l, &changes, &n_changes);
if (r < 0)
return install_error(error, r, changes, n_changes);
@@ -2141,7 +2152,7 @@ static int method_set_default_target(sd_bus_message *message, void *userdata, sd
if (r == 0)
return 1; /* No authorization for now, but the async polkit stuff will call us again when it has it */
- r = unit_file_set_default(m->unit_file_scope, NULL, name, force, &changes, &n_changes);
+ r = unit_file_set_default(m->unit_file_scope, force ? UNIT_FILE_FORCE : 0, NULL, name, &changes, &n_changes);
if (r < 0)
return install_error(error, r, changes, n_changes);
@@ -2154,6 +2165,7 @@ static int method_preset_all_unit_files(sd_bus_message *message, void *userdata,
Manager *m = userdata;
UnitFilePresetMode mm;
const char *mode;
+ UnitFileFlags flags;
int force, runtime, r;
assert(message);
@@ -2167,6 +2179,8 @@ static int method_preset_all_unit_files(sd_bus_message *message, void *userdata,
if (r < 0)
return r;
+ flags = unit_file_bools_to_flags(runtime, force);
+
if (isempty(mode))
mm = UNIT_FILE_PRESET_FULL;
else {
@@ -2181,7 +2195,7 @@ static int method_preset_all_unit_files(sd_bus_message *message, void *userdata,
if (r == 0)
return 1; /* No authorization for now, but the async polkit stuff will call us again when it has it */
- r = unit_file_preset_all(m->unit_file_scope, runtime, NULL, mm, force, &changes, &n_changes);
+ r = unit_file_preset_all(m->unit_file_scope, flags, NULL, mm, &changes, &n_changes);
if (r < 0)
return install_error(error, r, changes, n_changes);
@@ -2196,6 +2210,7 @@ static int method_add_dependency_unit_files(sd_bus_message *message, void *userd
int runtime, force, r;
char *target, *type;
UnitDependency dep;
+ UnitFileFlags flags;
assert(message);
assert(m);
@@ -2214,17 +2229,62 @@ static int method_add_dependency_unit_files(sd_bus_message *message, void *userd
if (r < 0)
return r;
+ flags = unit_file_bools_to_flags(runtime, force);
+
dep = unit_dependency_from_string(type);
if (dep < 0)
return -EINVAL;
- r = unit_file_add_dependency(m->unit_file_scope, runtime, NULL, l, target, dep, force, &changes, &n_changes);
+ r = unit_file_add_dependency(m->unit_file_scope, flags, NULL, l, target, dep, &changes, &n_changes);
if (r < 0)
return install_error(error, r, changes, n_changes);
return reply_unit_file_changes_and_free(m, message, -1, changes, n_changes);
}
+static int method_get_unit_file_links(sd_bus_message *message, void *userdata, sd_bus_error *error) {
+ _cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL;
+ UnitFileChange *changes = NULL;
+ unsigned n_changes = 0, i;
+ UnitFileFlags flags;
+ const char *name;
+ char **p;
+ int runtime, r;
+
+ r = sd_bus_message_read(message, "sb", &name, &runtime);
+ if (r < 0)
+ return r;
+
+ r = sd_bus_message_new_method_return(message, &reply);
+ if (r < 0)
+ return r;
+
+ r = sd_bus_message_open_container(reply, SD_BUS_TYPE_ARRAY, "s");
+ if (r < 0)
+ return r;
+
+ p = STRV_MAKE(name);
+ flags = UNIT_FILE_DRY_RUN |
+ (runtime ? UNIT_FILE_RUNTIME : 0);
+
+ r = unit_file_disable(UNIT_FILE_SYSTEM, flags, NULL, p, &changes, &n_changes);
+ if (r < 0)
+ return log_error_errno(r, "Failed to get file links for %s: %m", name);
+
+ for (i = 0; i < n_changes; i++)
+ if (changes[i].type == UNIT_FILE_UNLINK) {
+ r = sd_bus_message_append(reply, "s", changes[i].path);
+ if (r < 0)
+ return r;
+ }
+
+ r = sd_bus_message_close_container(reply);
+ if (r < 0)
+ return r;
+
+ return sd_bus_send(NULL, reply, NULL);
+}
+
const sd_bus_vtable bus_manager_vtable[] = {
SD_BUS_VTABLE_START(0),
@@ -2370,6 +2430,7 @@ const sd_bus_vtable bus_manager_vtable[] = {
SD_BUS_METHOD("GetDefaultTarget", NULL, "s", method_get_default_target, SD_BUS_VTABLE_UNPRIVILEGED),
SD_BUS_METHOD("PresetAllUnitFiles", "sbb", "a(sss)", method_preset_all_unit_files, SD_BUS_VTABLE_UNPRIVILEGED),
SD_BUS_METHOD("AddDependencyUnitFiles", "asssbb", "a(sss)", method_add_dependency_unit_files, SD_BUS_VTABLE_UNPRIVILEGED),
+ SD_BUS_METHOD("GetUnitFileLinks", "sb", "as", method_get_unit_file_links, SD_BUS_VTABLE_UNPRIVILEGED),
SD_BUS_METHOD("SetExitCode", "y", NULL, method_set_exit_code, SD_BUS_VTABLE_UNPRIVILEGED),
SD_BUS_METHOD("LookupDynamicUserByName", "s", "u", method_lookup_dynamic_user_by_name, SD_BUS_VTABLE_UNPRIVILEGED),
SD_BUS_METHOD("LookupDynamicUserByUID", "u", "s", method_lookup_dynamic_user_by_uid, SD_BUS_VTABLE_UNPRIVILEGED),
diff --git a/src/core/dbus-service.c b/src/core/dbus-service.c
index 3c55e0f7fe..61b83d2d62 100644
--- a/src/core/dbus-service.c
+++ b/src/core/dbus-service.c
@@ -36,7 +36,7 @@ static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_type, service_type, ServiceType
static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_result, service_result, ServiceResult);
static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_restart, service_restart, ServiceRestart);
static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_notify_access, notify_access, NotifyAccess);
-static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_failure_action, failure_action, FailureAction);
+static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_emergency_action, emergency_action, EmergencyAction);
const sd_bus_vtable bus_service_vtable[] = {
SD_BUS_VTABLE_START(0),
@@ -50,7 +50,7 @@ const sd_bus_vtable bus_service_vtable[] = {
SD_BUS_PROPERTY("RuntimeMaxUSec", "t", bus_property_get_usec, offsetof(Service, runtime_max_usec), SD_BUS_VTABLE_PROPERTY_CONST),
SD_BUS_PROPERTY("WatchdogUSec", "t", bus_property_get_usec, offsetof(Service, watchdog_usec), SD_BUS_VTABLE_PROPERTY_CONST),
BUS_PROPERTY_DUAL_TIMESTAMP("WatchdogTimestamp", offsetof(Service, watchdog_timestamp), 0),
- SD_BUS_PROPERTY("FailureAction", "s", property_get_failure_action, offsetof(Service, failure_action), SD_BUS_VTABLE_PROPERTY_CONST),
+ SD_BUS_PROPERTY("FailureAction", "s", property_get_emergency_action, offsetof(Service, emergency_action), SD_BUS_VTABLE_PROPERTY_CONST),
SD_BUS_PROPERTY("PermissionsStartOnly", "b", bus_property_get_bool, offsetof(Service, permissions_start_only), SD_BUS_VTABLE_PROPERTY_CONST),
SD_BUS_PROPERTY("RootDirectoryStartOnly", "b", bus_property_get_bool, offsetof(Service, root_directory_start_only), SD_BUS_VTABLE_PROPERTY_CONST),
SD_BUS_PROPERTY("RemainAfterExit", "b", bus_property_get_bool, offsetof(Service, remain_after_exit), SD_BUS_VTABLE_PROPERTY_CONST),
@@ -79,7 +79,7 @@ const sd_bus_vtable bus_service_vtable[] = {
/* The following four are obsolete, and thus marked hidden here. They moved into the Unit interface */
SD_BUS_PROPERTY("StartLimitInterval", "t", bus_property_get_usec, offsetof(Unit, start_limit.interval), SD_BUS_VTABLE_PROPERTY_CONST|SD_BUS_VTABLE_HIDDEN),
SD_BUS_PROPERTY("StartLimitBurst", "u", bus_property_get_unsigned, offsetof(Unit, start_limit.burst), SD_BUS_VTABLE_PROPERTY_CONST|SD_BUS_VTABLE_HIDDEN),
- SD_BUS_PROPERTY("StartLimitAction", "s", property_get_failure_action, offsetof(Unit, start_limit_action), SD_BUS_VTABLE_PROPERTY_CONST|SD_BUS_VTABLE_HIDDEN),
+ SD_BUS_PROPERTY("StartLimitAction", "s", property_get_emergency_action, offsetof(Unit, start_limit_action), SD_BUS_VTABLE_PROPERTY_CONST|SD_BUS_VTABLE_HIDDEN),
SD_BUS_PROPERTY("RebootArgument", "s", NULL, offsetof(Unit, reboot_arg), SD_BUS_VTABLE_PROPERTY_CONST|SD_BUS_VTABLE_HIDDEN),
SD_BUS_VTABLE_END
};
diff --git a/src/core/dbus-unit.c b/src/core/dbus-unit.c
index 6948daf682..b6cb6e1350 100644
--- a/src/core/dbus-unit.c
+++ b/src/core/dbus-unit.c
@@ -37,7 +37,7 @@
static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_load_state, unit_load_state, UnitLoadState);
static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_job_mode, job_mode, JobMode);
-static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_failure_action, failure_action, FailureAction);
+static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_emergency_action, emergency_action, EmergencyAction);
static int property_get_names(
sd_bus *bus,
@@ -263,10 +263,7 @@ static int property_get_can_stop(
assert(reply);
assert(u);
- /* On the lower levels we assume that every unit we can start
- * we can also stop */
-
- return sd_bus_message_append(reply, "b", unit_can_start(u) && !u->refuse_manual_stop);
+ return sd_bus_message_append(reply, "b", unit_can_stop(u) && !u->refuse_manual_stop);
}
static int property_get_can_reload(
@@ -750,7 +747,7 @@ const sd_bus_vtable bus_unit_vtable[] = {
SD_BUS_PROPERTY("IgnoreOnIsolate", "b", bus_property_get_bool, offsetof(Unit, ignore_on_isolate), SD_BUS_VTABLE_PROPERTY_CONST),
SD_BUS_PROPERTY("NeedDaemonReload", "b", property_get_need_daemon_reload, 0, SD_BUS_VTABLE_PROPERTY_CONST),
SD_BUS_PROPERTY("JobTimeoutUSec", "t", bus_property_get_usec, offsetof(Unit, job_timeout), SD_BUS_VTABLE_PROPERTY_CONST),
- SD_BUS_PROPERTY("JobTimeoutAction", "s", property_get_failure_action, offsetof(Unit, job_timeout_action), SD_BUS_VTABLE_PROPERTY_CONST),
+ SD_BUS_PROPERTY("JobTimeoutAction", "s", property_get_emergency_action, offsetof(Unit, job_timeout_action), SD_BUS_VTABLE_PROPERTY_CONST),
SD_BUS_PROPERTY("JobTimeoutRebootArgument", "s", NULL, offsetof(Unit, job_timeout_reboot_arg), SD_BUS_VTABLE_PROPERTY_CONST),
SD_BUS_PROPERTY("ConditionResult", "b", bus_property_get_bool, offsetof(Unit, condition_result), SD_BUS_VTABLE_PROPERTY_EMITS_CHANGE),
SD_BUS_PROPERTY("AssertResult", "b", bus_property_get_bool, offsetof(Unit, assert_result), SD_BUS_VTABLE_PROPERTY_EMITS_CHANGE),
@@ -760,9 +757,10 @@ const sd_bus_vtable bus_unit_vtable[] = {
SD_BUS_PROPERTY("Asserts", "a(sbbsi)", property_get_conditions, offsetof(Unit, asserts), 0),
SD_BUS_PROPERTY("LoadError", "(ss)", property_get_load_error, 0, SD_BUS_VTABLE_PROPERTY_CONST),
SD_BUS_PROPERTY("Transient", "b", bus_property_get_bool, offsetof(Unit, transient), SD_BUS_VTABLE_PROPERTY_CONST),
+ SD_BUS_PROPERTY("Perpetual", "b", bus_property_get_bool, offsetof(Unit, perpetual), SD_BUS_VTABLE_PROPERTY_CONST),
SD_BUS_PROPERTY("StartLimitIntervalSec", "t", bus_property_get_usec, offsetof(Unit, start_limit.interval), SD_BUS_VTABLE_PROPERTY_CONST),
SD_BUS_PROPERTY("StartLimitBurst", "u", bus_property_get_unsigned, offsetof(Unit, start_limit.burst), SD_BUS_VTABLE_PROPERTY_CONST),
- SD_BUS_PROPERTY("StartLimitAction", "s", property_get_failure_action, offsetof(Unit, start_limit_action), SD_BUS_VTABLE_PROPERTY_CONST),
+ SD_BUS_PROPERTY("StartLimitAction", "s", property_get_emergency_action, offsetof(Unit, start_limit_action), SD_BUS_VTABLE_PROPERTY_CONST),
SD_BUS_PROPERTY("RebootArgument", "s", NULL, offsetof(Unit, reboot_arg), SD_BUS_VTABLE_PROPERTY_CONST),
SD_BUS_PROPERTY("InvocationID", "ay", bus_property_get_id128, offsetof(Unit, invocation_id), 0),
diff --git a/src/core/device.c b/src/core/device.c
index bb10148223..498351af11 100644
--- a/src/core/device.c
+++ b/src/core/device.c
@@ -331,11 +331,7 @@ static int device_setup_unit(Manager *m, struct udev_device *dev, const char *pa
if (!u) {
delete = true;
- u = unit_new(m, sizeof(Device));
- if (!u)
- return log_oom();
-
- r = unit_add_name(u, e);
+ r = unit_new_for_name(m, sizeof(Device), e, &u);
if (r < 0)
goto fail;
diff --git a/src/core/failure-action.c b/src/core/emergency-action.c
index ddae46190f..90232bc57a 100644
--- a/src/core/failure-action.c
+++ b/src/core/emergency-action.c
@@ -23,59 +23,60 @@
#include "bus-error.h"
#include "bus-util.h"
-#include "failure-action.h"
+#include "emergency-action.h"
#include "special.h"
#include "string-table.h"
#include "terminal-util.h"
-static void log_and_status(Manager *m, const char *message) {
- log_warning("%s", message);
+static void log_and_status(Manager *m, const char *message, const char *reason) {
+ log_warning("%s: %s", message, reason);
manager_status_printf(m, STATUS_TYPE_EMERGENCY,
ANSI_HIGHLIGHT_RED " !! " ANSI_NORMAL,
- "%s", message);
+ "%s: %s", message, reason);
}
-int failure_action(
+int emergency_action(
Manager *m,
- FailureAction action,
- const char *reboot_arg) {
+ EmergencyAction action,
+ const char *reboot_arg,
+ const char *reason) {
assert(m);
assert(action >= 0);
- assert(action < _FAILURE_ACTION_MAX);
+ assert(action < _EMERGENCY_ACTION_MAX);
- if (action == FAILURE_ACTION_NONE)
+ if (action == EMERGENCY_ACTION_NONE)
return -ECANCELED;
if (!MANAGER_IS_SYSTEM(m)) {
/* Downgrade all options to simply exiting if we run
* in user mode */
- log_warning("Exiting as result of failure.");
+ log_warning("Exiting: %s", reason);
m->exit_code = MANAGER_EXIT;
return -ECANCELED;
}
switch (action) {
- case FAILURE_ACTION_REBOOT:
- log_and_status(m, "Rebooting as result of failure.");
+ case EMERGENCY_ACTION_REBOOT:
+ log_and_status(m, "Rebooting", reason);
(void) update_reboot_parameter_and_warn(reboot_arg);
(void) manager_add_job_by_name_and_warn(m, JOB_START, SPECIAL_REBOOT_TARGET, JOB_REPLACE_IRREVERSIBLY, NULL);
break;
- case FAILURE_ACTION_REBOOT_FORCE:
- log_and_status(m, "Forcibly rebooting as result of failure.");
+ case EMERGENCY_ACTION_REBOOT_FORCE:
+ log_and_status(m, "Forcibly rebooting", reason);
(void) update_reboot_parameter_and_warn(reboot_arg);
m->exit_code = MANAGER_REBOOT;
break;
- case FAILURE_ACTION_REBOOT_IMMEDIATE:
- log_and_status(m, "Rebooting immediately as result of failure.");
+ case EMERGENCY_ACTION_REBOOT_IMMEDIATE:
+ log_and_status(m, "Rebooting immediately", reason);
sync();
@@ -89,18 +90,18 @@ int failure_action(
reboot(RB_AUTOBOOT);
break;
- case FAILURE_ACTION_POWEROFF:
- log_and_status(m, "Powering off as result of failure.");
+ case EMERGENCY_ACTION_POWEROFF:
+ log_and_status(m, "Powering off", reason);
(void) manager_add_job_by_name_and_warn(m, JOB_START, SPECIAL_POWEROFF_TARGET, JOB_REPLACE_IRREVERSIBLY, NULL);
break;
- case FAILURE_ACTION_POWEROFF_FORCE:
- log_and_status(m, "Forcibly powering off as result of failure.");
+ case EMERGENCY_ACTION_POWEROFF_FORCE:
+ log_and_status(m, "Forcibly powering off", reason);
m->exit_code = MANAGER_POWEROFF;
break;
- case FAILURE_ACTION_POWEROFF_IMMEDIATE:
- log_and_status(m, "Powering off immediately as result of failure.");
+ case EMERGENCY_ACTION_POWEROFF_IMMEDIATE:
+ log_and_status(m, "Powering off immediately", reason);
sync();
@@ -109,19 +110,19 @@ int failure_action(
break;
default:
- assert_not_reached("Unknown failure action");
+ assert_not_reached("Unknown emergency action");
}
return -ECANCELED;
}
-static const char* const failure_action_table[_FAILURE_ACTION_MAX] = {
- [FAILURE_ACTION_NONE] = "none",
- [FAILURE_ACTION_REBOOT] = "reboot",
- [FAILURE_ACTION_REBOOT_FORCE] = "reboot-force",
- [FAILURE_ACTION_REBOOT_IMMEDIATE] = "reboot-immediate",
- [FAILURE_ACTION_POWEROFF] = "poweroff",
- [FAILURE_ACTION_POWEROFF_FORCE] = "poweroff-force",
- [FAILURE_ACTION_POWEROFF_IMMEDIATE] = "poweroff-immediate"
+static const char* const emergency_action_table[_EMERGENCY_ACTION_MAX] = {
+ [EMERGENCY_ACTION_NONE] = "none",
+ [EMERGENCY_ACTION_REBOOT] = "reboot",
+ [EMERGENCY_ACTION_REBOOT_FORCE] = "reboot-force",
+ [EMERGENCY_ACTION_REBOOT_IMMEDIATE] = "reboot-immediate",
+ [EMERGENCY_ACTION_POWEROFF] = "poweroff",
+ [EMERGENCY_ACTION_POWEROFF_FORCE] = "poweroff-force",
+ [EMERGENCY_ACTION_POWEROFF_IMMEDIATE] = "poweroff-immediate"
};
-DEFINE_STRING_TABLE_LOOKUP(failure_action, FailureAction);
+DEFINE_STRING_TABLE_LOOKUP(emergency_action, EmergencyAction);
diff --git a/src/core/failure-action.h b/src/core/emergency-action.h
index 1adac4ad5c..8804b59752 100644
--- a/src/core/failure-action.h
+++ b/src/core/emergency-action.h
@@ -20,22 +20,22 @@
along with systemd; If not, see <http://www.gnu.org/licenses/>.
***/
-typedef enum FailureAction {
- FAILURE_ACTION_NONE,
- FAILURE_ACTION_REBOOT,
- FAILURE_ACTION_REBOOT_FORCE,
- FAILURE_ACTION_REBOOT_IMMEDIATE,
- FAILURE_ACTION_POWEROFF,
- FAILURE_ACTION_POWEROFF_FORCE,
- FAILURE_ACTION_POWEROFF_IMMEDIATE,
- _FAILURE_ACTION_MAX,
- _FAILURE_ACTION_INVALID = -1
-} FailureAction;
+typedef enum EmergencyAction {
+ EMERGENCY_ACTION_NONE,
+ EMERGENCY_ACTION_REBOOT,
+ EMERGENCY_ACTION_REBOOT_FORCE,
+ EMERGENCY_ACTION_REBOOT_IMMEDIATE,
+ EMERGENCY_ACTION_POWEROFF,
+ EMERGENCY_ACTION_POWEROFF_FORCE,
+ EMERGENCY_ACTION_POWEROFF_IMMEDIATE,
+ _EMERGENCY_ACTION_MAX,
+ _EMERGENCY_ACTION_INVALID = -1
+} EmergencyAction;
#include "macro.h"
#include "manager.h"
-int failure_action(Manager *m, FailureAction action, const char *reboot_arg);
+int emergency_action(Manager *m, EmergencyAction action, const char *reboot_arg, const char *reason);
-const char* failure_action_to_string(FailureAction i) _const_;
-FailureAction failure_action_from_string(const char *s) _pure_;
+const char* emergency_action_to_string(EmergencyAction i) _const_;
+EmergencyAction emergency_action_from_string(const char *s) _pure_;
diff --git a/src/core/execute.c b/src/core/execute.c
index 23a702e93e..5bb23e2e4a 100644
--- a/src/core/execute.c
+++ b/src/core/execute.c
@@ -29,8 +29,10 @@
#include <sys/mman.h>
#include <sys/personality.h>
#include <sys/prctl.h>
+#include <sys/shm.h>
#include <sys/socket.h>
#include <sys/stat.h>
+#include <sys/types.h>
#include <sys/un.h>
#include <unistd.h>
#include <utmpx.h>
@@ -730,74 +732,157 @@ static int ask_for_confirmation(char *response, char **argv) {
return r;
}
-static int enforce_groups(const ExecContext *context, const char *username, gid_t gid) {
- bool keep_groups = false;
+static int get_fixed_user(const ExecContext *c, const char **user,
+ uid_t *uid, gid_t *gid,
+ const char **home, const char **shell) {
int r;
+ const char *name;
- assert(context);
+ assert(c);
+
+ if (!c->user)
+ return 0;
+
+ /* Note that we don't set $HOME or $SHELL if they are not particularly enlightening anyway
+ * (i.e. are "/" or "/bin/nologin"). */
+
+ name = c->user;
+ r = get_user_creds_clean(&name, uid, gid, home, shell);
+ if (r < 0)
+ return r;
+
+ *user = name;
+ return 0;
+}
+
+static int get_fixed_group(const ExecContext *c, const char **group, gid_t *gid) {
+ int r;
+ const char *name;
+
+ assert(c);
+
+ if (!c->group)
+ return 0;
+
+ name = c->group;
+ r = get_group_creds(&name, gid);
+ if (r < 0)
+ return r;
+
+ *group = name;
+ return 0;
+}
- /* Lookup and set GID and supplementary group list. Here too
- * we avoid NSS lookups for gid=0. */
+static int get_supplementary_groups(const ExecContext *c, const char *user,
+ const char *group, gid_t gid,
+ gid_t **supplementary_gids, int *ngids) {
+ char **i;
+ int r, k = 0;
+ int ngroups_max;
+ bool keep_groups = false;
+ gid_t *groups = NULL;
+ _cleanup_free_ gid_t *l_gids = NULL;
- if (context->group || username) {
+ assert(c);
+
+ /*
+ * If user is given, then lookup GID and supplementary groups list.
+ * We avoid NSS lookups for gid=0. Also we have to initialize groups
+ * here and as early as possible so we keep the list of supplementary
+ * groups of the caller.
+ */
+ if (user && gid_is_valid(gid) && gid != 0) {
/* First step, initialize groups from /etc/groups */
- if (username && gid != 0) {
- if (initgroups(username, gid) < 0)
- return -errno;
+ if (initgroups(user, gid) < 0)
+ return -errno;
- keep_groups = true;
- }
+ keep_groups = true;
+ }
- /* Second step, set our gids */
- if (setresgid(gid, gid, gid) < 0)
+ if (!c->supplementary_groups)
+ return 0;
+
+ /*
+ * If SupplementaryGroups= was passed then NGROUPS_MAX has to
+ * be positive, otherwise fail.
+ */
+ errno = 0;
+ ngroups_max = (int) sysconf(_SC_NGROUPS_MAX);
+ if (ngroups_max <= 0) {
+ if (errno > 0)
return -errno;
+ else
+ return -EOPNOTSUPP; /* For all other values */
}
- if (context->supplementary_groups) {
- int ngroups_max, k;
- gid_t *gids;
- char **i;
+ l_gids = new(gid_t, ngroups_max);
+ if (!l_gids)
+ return -ENOMEM;
- /* Final step, initialize any manually set supplementary groups */
- assert_se((ngroups_max = (int) sysconf(_SC_NGROUPS_MAX)) > 0);
+ if (keep_groups) {
+ /*
+ * Lookup the list of groups that the user belongs to, we
+ * avoid NSS lookups here too for gid=0.
+ */
+ k = ngroups_max;
+ if (getgrouplist(user, gid, l_gids, &k) < 0)
+ return -EINVAL;
+ } else
+ k = 0;
- if (!(gids = new(gid_t, ngroups_max)))
- return -ENOMEM;
+ STRV_FOREACH(i, c->supplementary_groups) {
+ const char *g;
- if (keep_groups) {
- k = getgroups(ngroups_max, gids);
- if (k < 0) {
- free(gids);
- return -errno;
- }
- } else
- k = 0;
+ if (k >= ngroups_max)
+ return -E2BIG;
- STRV_FOREACH(i, context->supplementary_groups) {
- const char *g;
+ g = *i;
+ r = get_group_creds(&g, l_gids+k);
+ if (r < 0)
+ return r;
- if (k >= ngroups_max) {
- free(gids);
- return -E2BIG;
- }
+ k++;
+ }
- g = *i;
- r = get_group_creds(&g, gids+k);
- if (r < 0) {
- free(gids);
- return r;
- }
+ /*
+ * Sets ngids to zero to drop all supplementary groups, happens
+ * when we are under root and SupplementaryGroups= is empty.
+ */
+ if (k == 0) {
+ *ngids = 0;
+ return 0;
+ }
- k++;
- }
+ /* Otherwise get the final list of supplementary groups */
+ groups = memdup(l_gids, sizeof(gid_t) * k);
+ if (!groups)
+ return -ENOMEM;
- r = maybe_setgroups(k, gids);
- if (r < 0) {
- free(gids);
+ *supplementary_gids = groups;
+ *ngids = k;
+
+ groups = NULL;
+
+ return 0;
+}
+
+static int enforce_groups(const ExecContext *context, gid_t gid,
+ gid_t *supplementary_gids, int ngids) {
+ int r;
+
+ assert(context);
+
+ /* Handle SupplementaryGroups= even if it is empty */
+ if (context->supplementary_groups) {
+ r = maybe_setgroups(ngids, supplementary_gids);
+ if (r < 0)
return r;
- }
+ }
- free(gids);
+ if (gid_is_valid(gid)) {
+ /* Then set our gids */
+ if (setresgid(gid, gid, gid) < 0)
+ return -errno;
}
return 0;
@@ -806,6 +891,9 @@ static int enforce_groups(const ExecContext *context, const char *username, gid_
static int enforce_user(const ExecContext *context, uid_t uid) {
assert(context);
+ if (!uid_is_valid(uid))
+ return 0;
+
/* Sets (but doesn't look up) the uid and make sure we keep the
* capabilities while doing so. */
@@ -1099,18 +1187,19 @@ static void rename_process_from_path(const char *path) {
#ifdef HAVE_SECCOMP
static bool skip_seccomp_unavailable(const Unit* u, const char* msg) {
- if (!is_seccomp_available()) {
- log_open();
- log_unit_debug(u, "SECCOMP features not detected in the kernel, skipping %s", msg);
- log_close();
- return true;
- }
- return false;
+
+ if (is_seccomp_available())
+ return false;
+
+ log_open();
+ log_unit_debug(u, "SECCOMP features not detected in the kernel, skipping %s", msg);
+ log_close();
+ return true;
}
static int apply_seccomp(const Unit* u, const ExecContext *c) {
uint32_t negative_action, action;
- scmp_filter_ctx *seccomp;
+ scmp_filter_ctx seccomp;
Iterator i;
void *id;
int r;
@@ -1161,7 +1250,7 @@ finish:
}
static int apply_address_families(const Unit* u, const ExecContext *c) {
- scmp_filter_ctx *seccomp;
+ scmp_filter_ctx seccomp;
Iterator i;
int r;
@@ -1170,13 +1259,9 @@ static int apply_address_families(const Unit* u, const ExecContext *c) {
if (skip_seccomp_unavailable(u, "RestrictAddressFamilies="))
return 0;
- seccomp = seccomp_init(SCMP_ACT_ALLOW);
- if (!seccomp)
- return -ENOMEM;
-
- r = seccomp_add_secondary_archs(seccomp);
+ r = seccomp_init_conservative(&seccomp, SCMP_ACT_ALLOW);
if (r < 0)
- goto finish;
+ return r;
if (c->address_families_whitelist) {
int af, first = 0, last = 0;
@@ -1273,10 +1358,6 @@ static int apply_address_families(const Unit* u, const ExecContext *c) {
}
}
- r = seccomp_attr_set(seccomp, SCMP_FLTATR_CTL_NNP, 0);
- if (r < 0)
- goto finish;
-
r = seccomp_load(seccomp);
finish:
@@ -1285,7 +1366,7 @@ finish:
}
static int apply_memory_deny_write_execute(const Unit* u, const ExecContext *c) {
- scmp_filter_ctx *seccomp;
+ scmp_filter_ctx seccomp;
int r;
assert(c);
@@ -1293,13 +1374,9 @@ static int apply_memory_deny_write_execute(const Unit* u, const ExecContext *c)
if (skip_seccomp_unavailable(u, "MemoryDenyWriteExecute="))
return 0;
- seccomp = seccomp_init(SCMP_ACT_ALLOW);
- if (!seccomp)
- return -ENOMEM;
-
- r = seccomp_add_secondary_archs(seccomp);
+ r = seccomp_init_conservative(&seccomp, SCMP_ACT_ALLOW);
if (r < 0)
- goto finish;
+ return r;
r = seccomp_rule_add(
seccomp,
@@ -1319,7 +1396,12 @@ static int apply_memory_deny_write_execute(const Unit* u, const ExecContext *c)
if (r < 0)
goto finish;
- r = seccomp_attr_set(seccomp, SCMP_FLTATR_CTL_NNP, 0);
+ r = seccomp_rule_add(
+ seccomp,
+ SCMP_ACT_ERRNO(EPERM),
+ SCMP_SYS(shmat),
+ 1,
+ SCMP_A2(SCMP_CMP_MASKED_EQ, SHM_EXEC, SHM_EXEC));
if (r < 0)
goto finish;
@@ -1337,7 +1419,7 @@ static int apply_restrict_realtime(const Unit* u, const ExecContext *c) {
SCHED_IDLE,
};
- scmp_filter_ctx *seccomp;
+ scmp_filter_ctx seccomp;
unsigned i;
int r, p, max_policy = 0;
@@ -1346,13 +1428,9 @@ static int apply_restrict_realtime(const Unit* u, const ExecContext *c) {
if (skip_seccomp_unavailable(u, "RestrictRealtime="))
return 0;
- seccomp = seccomp_init(SCMP_ACT_ALLOW);
- if (!seccomp)
- return -ENOMEM;
-
- r = seccomp_add_secondary_archs(seccomp);
+ r = seccomp_init_conservative(&seccomp, SCMP_ACT_ALLOW);
if (r < 0)
- goto finish;
+ return r;
/* Determine the highest policy constant we want to allow */
for (i = 0; i < ELEMENTSOF(permitted_policies); i++)
@@ -1396,10 +1474,6 @@ static int apply_restrict_realtime(const Unit* u, const ExecContext *c) {
if (r < 0)
goto finish;
- r = seccomp_attr_set(seccomp, SCMP_FLTATR_CTL_NNP, 0);
- if (r < 0)
- goto finish;
-
r = seccomp_load(seccomp);
finish:
@@ -1407,8 +1481,8 @@ finish:
return r;
}
-static int apply_protect_sysctl(Unit *u, const ExecContext *c) {
- scmp_filter_ctx *seccomp;
+static int apply_protect_sysctl(const Unit *u, const ExecContext *c) {
+ scmp_filter_ctx seccomp;
int r;
assert(c);
@@ -1419,13 +1493,9 @@ static int apply_protect_sysctl(Unit *u, const ExecContext *c) {
if (skip_seccomp_unavailable(u, "ProtectKernelTunables="))
return 0;
- seccomp = seccomp_init(SCMP_ACT_ALLOW);
- if (!seccomp)
- return -ENOMEM;
-
- r = seccomp_add_secondary_archs(seccomp);
+ r = seccomp_init_conservative(&seccomp, SCMP_ACT_ALLOW);
if (r < 0)
- goto finish;
+ return r;
r = seccomp_rule_add(
seccomp,
@@ -1435,10 +1505,6 @@ static int apply_protect_sysctl(Unit *u, const ExecContext *c) {
if (r < 0)
goto finish;
- r = seccomp_attr_set(seccomp, SCMP_FLTATR_CTL_NNP, 0);
- if (r < 0)
- goto finish;
-
r = seccomp_load(seccomp);
finish:
@@ -1446,57 +1512,18 @@ finish:
return r;
}
-static int apply_protect_kernel_modules(Unit *u, const ExecContext *c) {
- static const int module_syscalls[] = {
- SCMP_SYS(delete_module),
- SCMP_SYS(finit_module),
- SCMP_SYS(init_module),
- };
-
- scmp_filter_ctx *seccomp;
- unsigned i;
- int r;
-
+static int apply_protect_kernel_modules(const Unit *u, const ExecContext *c) {
assert(c);
- /* Turn of module syscalls on ProtectKernelModules=yes */
+ /* Turn off module syscalls on ProtectKernelModules=yes */
if (skip_seccomp_unavailable(u, "ProtectKernelModules="))
return 0;
- seccomp = seccomp_init(SCMP_ACT_ALLOW);
- if (!seccomp)
- return -ENOMEM;
-
- r = seccomp_add_secondary_archs(seccomp);
- if (r < 0)
- goto finish;
-
- for (i = 0; i < ELEMENTSOF(module_syscalls); i++) {
- r = seccomp_rule_add(seccomp, SCMP_ACT_ERRNO(EPERM),
- module_syscalls[i], 0);
- if (r < 0)
- goto finish;
- }
-
- r = seccomp_attr_set(seccomp, SCMP_FLTATR_CTL_NNP, 0);
- if (r < 0)
- goto finish;
-
- r = seccomp_load(seccomp);
-
-finish:
- seccomp_release(seccomp);
- return r;
+ return seccomp_load_filter_set(SCMP_ACT_ALLOW, syscall_filter_sets + SYSCALL_FILTER_SET_MODULE, SCMP_ACT_ERRNO(EPERM));
}
-static int apply_private_devices(Unit *u, const ExecContext *c) {
- const SystemCallFilterSet *set;
- scmp_filter_ctx *seccomp;
- const char *sys;
- bool syscalls_found = false;
- int r;
-
+static int apply_private_devices(const Unit *u, const ExecContext *c) {
assert(c);
/* If PrivateDevices= is set, also turn off iopl and all @raw-io syscalls. */
@@ -1504,61 +1531,7 @@ static int apply_private_devices(Unit *u, const ExecContext *c) {
if (skip_seccomp_unavailable(u, "PrivateDevices="))
return 0;
- seccomp = seccomp_init(SCMP_ACT_ALLOW);
- if (!seccomp)
- return -ENOMEM;
-
- r = seccomp_add_secondary_archs(seccomp);
- if (r < 0)
- goto finish;
-
- for (set = syscall_filter_sets; set->set_name; set++)
- if (streq(set->set_name, "@raw-io")) {
- syscalls_found = true;
- break;
- }
-
- /* We should never fail here */
- if (!syscalls_found) {
- r = -EOPNOTSUPP;
- goto finish;
- }
-
- NULSTR_FOREACH(sys, set->value) {
- int id;
- bool add = true;
-
-#ifndef __NR_s390_pci_mmio_read
- if (streq(sys, "s390_pci_mmio_read"))
- add = false;
-#endif
-#ifndef __NR_s390_pci_mmio_write
- if (streq(sys, "s390_pci_mmio_write"))
- add = false;
-#endif
-
- if (!add)
- continue;
-
- id = seccomp_syscall_resolve_name(sys);
-
- r = seccomp_rule_add(
- seccomp,
- SCMP_ACT_ERRNO(EPERM),
- id, 0);
- if (r < 0)
- goto finish;
- }
-
- r = seccomp_attr_set(seccomp, SCMP_FLTATR_CTL_NNP, 0);
- if (r < 0)
- goto finish;
-
- r = seccomp_load(seccomp);
-
-finish:
- seccomp_release(seccomp);
- return r;
+ return seccomp_load_filter_set(SCMP_ACT_ALLOW, syscall_filter_sets + SYSCALL_FILTER_SET_RAW_IO, SCMP_ACT_ERRNO(EPERM));
}
#endif
@@ -1804,9 +1777,9 @@ static int setup_private_users(uid_t uid, gid_t gid) {
asprintf(&uid_map,
"0 0 1\n" /* Map root → root */
UID_FMT " " UID_FMT " 1\n", /* Map $UID → $UID */
- uid, uid); /* The case where the above is the same */
+ uid, uid);
else
- uid_map = strdup("0 0 1\n");
+ uid_map = strdup("0 0 1\n"); /* The case where the above is the same */
if (!uid_map)
return -ENOMEM;
@@ -2041,6 +2014,92 @@ static int compile_read_write_paths(
return 0;
}
+static int apply_mount_namespace(Unit *u, const ExecContext *context,
+ const ExecParameters *params,
+ ExecRuntime *runtime) {
+ int r;
+ _cleanup_free_ char **rw = NULL;
+ char *tmp = NULL, *var = NULL;
+ const char *root_dir = NULL;
+ NameSpaceInfo ns_info = {
+ .private_dev = context->private_devices,
+ .protect_control_groups = context->protect_control_groups,
+ .protect_kernel_tunables = context->protect_kernel_tunables,
+ .protect_kernel_modules = context->protect_kernel_modules,
+ };
+
+ assert(context);
+
+ /* The runtime struct only contains the parent of the private /tmp,
+ * which is non-accessible to world users. Inside of it there's a /tmp
+ * that is sticky, and that's the one we want to use here. */
+
+ if (context->private_tmp && runtime) {
+ if (runtime->tmp_dir)
+ tmp = strjoina(runtime->tmp_dir, "/tmp");
+ if (runtime->var_tmp_dir)
+ var = strjoina(runtime->var_tmp_dir, "/tmp");
+ }
+
+ r = compile_read_write_paths(context, params, &rw);
+ if (r < 0)
+ return r;
+
+ if (params->flags & EXEC_APPLY_CHROOT)
+ root_dir = context->root_directory;
+
+ r = setup_namespace(root_dir, &ns_info, rw,
+ context->read_only_paths,
+ context->inaccessible_paths,
+ tmp,
+ var,
+ context->protect_home,
+ context->protect_system,
+ context->mount_flags);
+
+ /* If we couldn't set up the namespace this is probably due to a
+ * missing capability. In this case, silently proceeed. */
+ if (IN_SET(r, -EPERM, -EACCES)) {
+ log_open();
+ log_unit_debug_errno(u, r, "Failed to set up namespace, assuming containerized execution, ignoring: %m");
+ log_close();
+ r = 0;
+ }
+
+ return r;
+}
+
+static int apply_working_directory(const ExecContext *context,
+ const ExecParameters *params,
+ const char *home,
+ const bool needs_mount_ns) {
+ const char *d;
+ const char *wd;
+
+ assert(context);
+
+ if (context->working_directory_home)
+ wd = home;
+ else if (context->working_directory)
+ wd = context->working_directory;
+ else
+ wd = "/";
+
+ if (params->flags & EXEC_APPLY_CHROOT) {
+ if (!needs_mount_ns && context->root_directory)
+ if (chroot(context->root_directory) < 0)
+ return -errno;
+
+ d = wd;
+ } else
+ d = strjoina(strempty(context->root_directory), "/", strempty(wd));
+
+ if (chdir(d) < 0 && !context->working_directory_missing_ok)
+ return -errno;
+
+ return 0;
+}
+
static void append_socket_pair(int *array, unsigned *n, int pair[2]) {
assert(array);
assert(n);
@@ -2175,13 +2234,15 @@ static int exec_child(
_cleanup_strv_free_ char **our_env = NULL, **pass_env = NULL, **accum_env = NULL, **final_argv = NULL;
_cleanup_free_ char *mac_selinux_context_net = NULL;
- const char *username = NULL, *home = NULL, *shell = NULL, *wd;
+ _cleanup_free_ gid_t *supplementary_gids = NULL;
+ const char *username = NULL, *groupname = NULL;
+ const char *home = NULL, *shell = NULL;
dev_t journal_stream_dev = 0;
ino_t journal_stream_ino = 0;
bool needs_mount_namespace;
uid_t uid = UID_INVALID;
gid_t gid = GID_INVALID;
- int i, r;
+ int i, r, ngids = 0;
assert(unit);
assert(command);
@@ -2273,29 +2334,27 @@ static int exec_child(
username = dcreds->user->name;
} else {
- if (context->user) {
- username = context->user;
- r = get_user_creds_clean(&username, &uid, &gid, &home, &shell);
- if (r < 0) {
- *exit_status = EXIT_USER;
- return r;
- }
-
- /* Note that we don't set $HOME or $SHELL if they are not particularly enlightening anyway
- * (i.e. are "/" or "/bin/nologin"). */
+ r = get_fixed_user(context, &username, &uid, &gid, &home, &shell);
+ if (r < 0) {
+ *exit_status = EXIT_USER;
+ return r;
}
- if (context->group) {
- const char *g = context->group;
-
- r = get_group_creds(&g, &gid);
- if (r < 0) {
- *exit_status = EXIT_GROUP;
- return r;
- }
+ r = get_fixed_group(context, &groupname, &gid);
+ if (r < 0) {
+ *exit_status = EXIT_GROUP;
+ return r;
}
}
+ /* Initialize user supplementary groups and get SupplementaryGroups= ones */
+ r = get_supplementary_groups(context, username, groupname, gid,
+ &supplementary_gids, &ngids);
+ if (r < 0) {
+ *exit_status = EXIT_GROUP;
+ return r;
+ }
+
r = send_user_lookup(unit, user_lookup_fd, uid, gid);
if (r < 0) {
*exit_status = EXIT_USER;
@@ -2480,12 +2539,6 @@ static int exec_child(
(void) umask(context->umask);
if ((params->flags & EXEC_APPLY_PERMISSIONS) && !command->privileged) {
- r = setup_smack(context, command);
- if (r < 0) {
- *exit_status = EXIT_SMACK_PROCESS_LABEL;
- return r;
- }
-
if (context->pam_name && username) {
r = setup_pam(context->pam_name, username, uid, gid, context->tty_path, &accum_env, fds, n_fds);
if (r < 0) {
@@ -2505,97 +2558,29 @@ static int exec_child(
needs_mount_namespace = exec_needs_mount_namespace(context, params, runtime);
if (needs_mount_namespace) {
- _cleanup_free_ char **rw = NULL;
- char *tmp = NULL, *var = NULL;
- NameSpaceInfo ns_info = {
- .private_dev = context->private_devices,
- .protect_control_groups = context->protect_control_groups,
- .protect_kernel_tunables = context->protect_kernel_tunables,
- .protect_kernel_modules = context->protect_kernel_modules,
- };
-
- /* The runtime struct only contains the parent
- * of the private /tmp, which is
- * non-accessible to world users. Inside of it
- * there's a /tmp that is sticky, and that's
- * the one we want to use here. */
-
- if (context->private_tmp && runtime) {
- if (runtime->tmp_dir)
- tmp = strjoina(runtime->tmp_dir, "/tmp");
- if (runtime->var_tmp_dir)
- var = strjoina(runtime->var_tmp_dir, "/tmp");
- }
-
- r = compile_read_write_paths(context, params, &rw);
+ r = apply_mount_namespace(unit, context, params, runtime);
if (r < 0) {
*exit_status = EXIT_NAMESPACE;
return r;
}
+ }
- r = setup_namespace(
- (params->flags & EXEC_APPLY_CHROOT) ? context->root_directory : NULL,
- &ns_info,
- rw,
- context->read_only_paths,
- context->inaccessible_paths,
- tmp,
- var,
- context->protect_home,
- context->protect_system,
- context->mount_flags);
-
- /* If we couldn't set up the namespace this is
- * probably due to a missing capability. In this case,
- * silently proceeed. */
- if (r == -EPERM || r == -EACCES) {
- log_open();
- log_unit_debug_errno(unit, r, "Failed to set up namespace, assuming containerized execution, ignoring: %m");
- log_close();
- } else if (r < 0) {
- *exit_status = EXIT_NAMESPACE;
- return r;
- }
+ /* Apply just after mount namespace setup */
+ r = apply_working_directory(context, params, home, needs_mount_namespace);
+ if (r < 0) {
+ *exit_status = EXIT_CHROOT;
+ return r;
}
+ /* Drop groups as early as possbile */
if ((params->flags & EXEC_APPLY_PERMISSIONS) && !command->privileged) {
- r = enforce_groups(context, username, gid);
+ r = enforce_groups(context, gid, supplementary_gids, ngids);
if (r < 0) {
*exit_status = EXIT_GROUP;
return r;
}
}
- if (context->working_directory_home)
- wd = home;
- else if (context->working_directory)
- wd = context->working_directory;
- else
- wd = "/";
-
- if (params->flags & EXEC_APPLY_CHROOT) {
- if (!needs_mount_namespace && context->root_directory)
- if (chroot(context->root_directory) < 0) {
- *exit_status = EXIT_CHROOT;
- return -errno;
- }
-
- if (chdir(wd) < 0 &&
- !context->working_directory_missing_ok) {
- *exit_status = EXIT_CHDIR;
- return -errno;
- }
- } else {
- const char *d;
-
- d = strjoina(strempty(context->root_directory), "/", strempty(wd));
- if (chdir(d) < 0 &&
- !context->working_directory_missing_ok) {
- *exit_status = EXIT_CHDIR;
- return -errno;
- }
- }
-
#ifdef HAVE_SELINUX
if ((params->flags & EXEC_APPLY_PERMISSIONS) &&
mac_selinux_use() &&
@@ -2703,6 +2688,41 @@ static int exec_child(
}
}
+ /* Apply the MAC contexts late, but before seccomp syscall filtering, as those should really be last to
+ * influence our own codepaths as little as possible. Moreover, applying MAC contexts usually requires
+ * syscalls that are subject to seccomp filtering, hence should probably be applied before the syscalls
+ * are restricted. */
+
+#ifdef HAVE_SELINUX
+ if (mac_selinux_use()) {
+ char *exec_context = mac_selinux_context_net ?: context->selinux_context;
+
+ if (exec_context) {
+ r = setexeccon(exec_context);
+ if (r < 0) {
+ *exit_status = EXIT_SELINUX_CONTEXT;
+ return r;
+ }
+ }
+ }
+#endif
+
+ r = setup_smack(context, command);
+ if (r < 0) {
+ *exit_status = EXIT_SMACK_PROCESS_LABEL;
+ return r;
+ }
+
+#ifdef HAVE_APPARMOR
+ if (context->apparmor_profile && mac_apparmor_use()) {
+ r = aa_change_onexec(context->apparmor_profile);
+ if (r < 0 && !context->apparmor_profile_ignore) {
+ *exit_status = EXIT_APPARMOR_PROFILE;
+ return -errno;
+ }
+ }
+#endif
+
/* PR_GET_SECUREBITS is not privileged, while
* PR_SET_SECUREBITS is. So to suppress
* potential EPERMs we'll try not to call
@@ -2768,6 +2788,8 @@ static int exec_child(
}
}
+ /* This really should remain the last step before the execve(), to make sure our own code is unaffected
+ * by the filter as little as possible. */
if (context_has_syscall_filters(context)) {
r = apply_seccomp(unit, context);
if (r < 0) {
@@ -2776,30 +2798,6 @@ static int exec_child(
}
}
#endif
-
-#ifdef HAVE_SELINUX
- if (mac_selinux_use()) {
- char *exec_context = mac_selinux_context_net ?: context->selinux_context;
-
- if (exec_context) {
- r = setexeccon(exec_context);
- if (r < 0) {
- *exit_status = EXIT_SELINUX_CONTEXT;
- return r;
- }
- }
- }
-#endif
-
-#ifdef HAVE_APPARMOR
- if (context->apparmor_profile && mac_apparmor_use()) {
- r = aa_change_onexec(context->apparmor_profile);
- if (r < 0 && !context->apparmor_profile_ignore) {
- *exit_status = EXIT_APPARMOR_PROFILE;
- return -errno;
- }
- }
-#endif
}
final_argv = replace_env_argv(argv, accum_env);
@@ -3621,7 +3619,8 @@ char *exec_command_line(char **argv) {
STRV_FOREACH(a, argv)
k += strlen(*a)+3;
- if (!(n = new(char, k)))
+ n = new(char, k);
+ if (!n)
return NULL;
p = n;
diff --git a/src/core/job.c b/src/core/job.c
index 7faf2ef686..ac6910a906 100644
--- a/src/core/job.c
+++ b/src/core/job.c
@@ -690,16 +690,16 @@ _pure_ static const char *job_get_status_message_format(Unit *u, JobType t, JobR
}
static void job_print_status_message(Unit *u, JobType t, JobResult result) {
- static struct {
+ static const struct {
const char *color, *word;
} const statuses[_JOB_RESULT_MAX] = {
- [JOB_DONE] = {ANSI_GREEN, " OK "},
- [JOB_TIMEOUT] = {ANSI_HIGHLIGHT_RED, " TIME "},
- [JOB_FAILED] = {ANSI_HIGHLIGHT_RED, "FAILED"},
- [JOB_DEPENDENCY] = {ANSI_HIGHLIGHT_YELLOW, "DEPEND"},
- [JOB_SKIPPED] = {ANSI_HIGHLIGHT, " INFO "},
- [JOB_ASSERT] = {ANSI_HIGHLIGHT_YELLOW, "ASSERT"},
- [JOB_UNSUPPORTED] = {ANSI_HIGHLIGHT_YELLOW, "UNSUPP"},
+ [JOB_DONE] = { ANSI_GREEN, " OK " },
+ [JOB_TIMEOUT] = { ANSI_HIGHLIGHT_RED, " TIME " },
+ [JOB_FAILED] = { ANSI_HIGHLIGHT_RED, "FAILED" },
+ [JOB_DEPENDENCY] = { ANSI_HIGHLIGHT_YELLOW, "DEPEND" },
+ [JOB_SKIPPED] = { ANSI_HIGHLIGHT, " INFO " },
+ [JOB_ASSERT] = { ANSI_HIGHLIGHT_YELLOW, "ASSERT" },
+ [JOB_UNSUPPORTED] = { ANSI_HIGHLIGHT_YELLOW, "UNSUPP" },
};
const char *format;
@@ -767,8 +767,9 @@ static void job_log_status_message(Unit *u, JobType t, JobResult result) {
if (!format)
return;
+ /* The description might be longer than the buffer, but that's OK, we'll just truncate it here */
DISABLE_WARNING_FORMAT_NONLITERAL;
- xsprintf(buf, format, unit_description(u));
+ snprintf(buf, sizeof(buf), format, unit_description(u));
REENABLE_WARNING;
switch (t) {
@@ -927,7 +928,7 @@ static int job_dispatch_timer(sd_event_source *s, uint64_t monotonic, void *user
u = j->unit;
job_finish_and_invalidate(j, JOB_TIMEOUT, true, false);
- failure_action(u->manager, u->job_timeout_action, u->job_timeout_reboot_arg);
+ emergency_action(u->manager, u->job_timeout_action, u->job_timeout_reboot_arg, "job timed out");
return 0;
}
diff --git a/src/core/load-fragment-gperf.gperf.m4 b/src/core/load-fragment-gperf.gperf.m4
index 08c88b6b53..af2f9d960b 100644
--- a/src/core/load-fragment-gperf.gperf.m4
+++ b/src/core/load-fragment-gperf.gperf.m4
@@ -188,13 +188,13 @@ Unit.OnFailureIsolate, config_parse_job_mode_isolate, 0,
Unit.IgnoreOnIsolate, config_parse_bool, 0, offsetof(Unit, ignore_on_isolate)
Unit.IgnoreOnSnapshot, config_parse_warn_compat, DISABLED_LEGACY, 0
Unit.JobTimeoutSec, config_parse_sec_fix_0, 0, offsetof(Unit, job_timeout)
-Unit.JobTimeoutAction, config_parse_failure_action, 0, offsetof(Unit, job_timeout_action)
+Unit.JobTimeoutAction, config_parse_emergency_action, 0, offsetof(Unit, job_timeout_action)
Unit.JobTimeoutRebootArgument, config_parse_string, 0, offsetof(Unit, job_timeout_reboot_arg)
Unit.StartLimitIntervalSec, config_parse_sec, 0, offsetof(Unit, start_limit.interval)
m4_dnl The following is a legacy alias name for compatibility
Unit.StartLimitInterval, config_parse_sec, 0, offsetof(Unit, start_limit.interval)
Unit.StartLimitBurst, config_parse_unsigned, 0, offsetof(Unit, start_limit.burst)
-Unit.StartLimitAction, config_parse_failure_action, 0, offsetof(Unit, start_limit_action)
+Unit.StartLimitAction, config_parse_emergency_action, 0, offsetof(Unit, start_limit_action)
Unit.RebootArgument, config_parse_string, 0, offsetof(Unit, reboot_arg)
Unit.ConditionPathExists, config_parse_unit_condition_path, CONDITION_PATH_EXISTS, offsetof(Unit, conditions)
Unit.ConditionPathExistsGlob, config_parse_unit_condition_path, CONDITION_PATH_EXISTS_GLOB, offsetof(Unit, conditions)
@@ -251,9 +251,9 @@ Service.WatchdogSec, config_parse_sec, 0,
m4_dnl The following three only exist for compatibility, they moved into Unit, see above
Service.StartLimitInterval, config_parse_sec, 0, offsetof(Unit, start_limit.interval)
Service.StartLimitBurst, config_parse_unsigned, 0, offsetof(Unit, start_limit.burst)
-Service.StartLimitAction, config_parse_failure_action, 0, offsetof(Unit, start_limit_action)
+Service.StartLimitAction, config_parse_emergency_action, 0, offsetof(Unit, start_limit_action)
Service.RebootArgument, config_parse_string, 0, offsetof(Unit, reboot_arg)
-Service.FailureAction, config_parse_failure_action, 0, offsetof(Service, failure_action)
+Service.FailureAction, config_parse_emergency_action, 0, offsetof(Service, emergency_action)
Service.Type, config_parse_service_type, 0, offsetof(Service, type)
Service.Restart, config_parse_service_restart, 0, offsetof(Service, restart)
Service.PermissionsStartOnly, config_parse_bool, 0, offsetof(Service, permissions_start_only)
diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c
index a69f60097d..cbc826809e 100644
--- a/src/core/load-fragment.c
+++ b/src/core/load-fragment.c
@@ -2523,7 +2523,7 @@ int config_parse_unit_condition_null(
}
DEFINE_CONFIG_PARSE_ENUM(config_parse_notify_access, notify_access, NotifyAccess, "Failed to parse notify access specifier");
-DEFINE_CONFIG_PARSE_ENUM(config_parse_failure_action, failure_action, FailureAction, "Failed to parse failure action specifier");
+DEFINE_CONFIG_PARSE_ENUM(config_parse_emergency_action, emergency_action, EmergencyAction, "Failed to parse failure action specifier");
int config_parse_unit_requires_mounts_for(
const char *unit,
@@ -2618,6 +2618,7 @@ int config_parse_documentation(const char *unit,
}
#ifdef HAVE_SECCOMP
+
static int syscall_filter_parse_one(
const char *unit,
const char *filename,
@@ -2628,27 +2629,29 @@ static int syscall_filter_parse_one(
bool warn) {
int r;
- if (*t == '@') {
- const SystemCallFilterSet *set;
+ if (t[0] == '@') {
+ const SyscallFilterSet *set;
+ const char *i;
- for (set = syscall_filter_sets; set->set_name; set++)
- if (streq(set->set_name, t)) {
- const char *sys;
+ set = syscall_filter_set_find(t);
+ if (!set) {
+ if (warn)
+ log_syntax(unit, LOG_WARNING, filename, line, 0, "Don't know system call group, ignoring: %s", t);
+ return 0;
+ }
- NULSTR_FOREACH(sys, set->value) {
- r = syscall_filter_parse_one(unit, filename, line, c, invert, sys, false);
- if (r < 0)
- return r;
- }
- break;
- }
+ NULSTR_FOREACH(i, set->value) {
+ r = syscall_filter_parse_one(unit, filename, line, c, invert, i, false);
+ if (r < 0)
+ return r;
+ }
} else {
int id;
id = seccomp_syscall_resolve_name(t);
if (id == __NR_SCMP_ERROR) {
if (warn)
- log_syntax(unit, LOG_ERR, filename, line, 0, "Failed to parse system call, ignoring: %s", t);
+ log_syntax(unit, LOG_WARNING, filename, line, 0, "Failed to parse system call, ignoring: %s", t);
return 0;
}
@@ -2662,8 +2665,9 @@ static int syscall_filter_parse_one(
if (r < 0)
return log_oom();
} else
- set_remove(c->syscall_filter, INT_TO_PTR(id + 1));
+ (void) set_remove(c->syscall_filter, INT_TO_PTR(id + 1));
}
+
return 0;
}
@@ -2682,8 +2686,7 @@ int config_parse_syscall_filter(
ExecContext *c = data;
Unit *u = userdata;
bool invert = false;
- const char *word, *state;
- size_t l;
+ const char *p;
int r;
assert(filename);
@@ -2722,24 +2725,24 @@ int config_parse_syscall_filter(
}
}
- FOREACH_WORD_QUOTED(word, l, rvalue, state) {
- _cleanup_free_ char *t = NULL;
+ p = rvalue;
+ for (;;) {
+ _cleanup_free_ char *word = NULL;
- t = strndup(word, l);
- if (!t)
+ r = extract_first_word(&p, &word, NULL, 0);
+ if (r == 0)
+ break;
+ if (r == -ENOMEM)
return log_oom();
+ if (r < 0) {
+ log_syntax(unit, LOG_WARNING, filename, line, r, "Invalid syntax, ignoring: %s", rvalue);
+ break;
+ }
- r = syscall_filter_parse_one(unit, filename, line, c, invert, t, true);
+ r = syscall_filter_parse_one(unit, filename, line, c, invert, word, true);
if (r < 0)
return r;
}
- if (!isempty(state))
- log_syntax(unit, LOG_ERR, filename, line, 0, "Trailing garbage, ignoring.");
-
- /* Turn on NNP, but only if it wasn't configured explicitly
- * before, and only if we are in user mode. */
- if (!c->no_new_privileges_set && MANAGER_IS_USER(u->manager))
- c->no_new_privileges = true;
return 0;
}
@@ -3829,7 +3832,7 @@ int config_parse_no_new_privileges(
return 0;
}
- c->no_new_privileges = !!k;
+ c->no_new_privileges = k;
c->no_new_privileges_set = true;
return 0;
@@ -4315,7 +4318,7 @@ void unit_dump_config_items(FILE *f) {
{ config_parse_unit_slice, "SLICE" },
{ config_parse_documentation, "URL" },
{ config_parse_service_timeout, "SECONDS" },
- { config_parse_failure_action, "ACTION" },
+ { config_parse_emergency_action, "ACTION" },
{ config_parse_set_status, "STATUS" },
{ config_parse_service_sockets, "SOCKETS" },
{ config_parse_environ, "ENVIRON" },
diff --git a/src/core/load-fragment.h b/src/core/load-fragment.h
index 6d1fe55bcd..c05f205c37 100644
--- a/src/core/load-fragment.h
+++ b/src/core/load-fragment.h
@@ -75,7 +75,7 @@ int config_parse_unit_condition_string(const char *unit, const char *filename, u
int config_parse_unit_condition_null(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
int config_parse_kill_mode(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
int config_parse_notify_access(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
-int config_parse_failure_action(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
+int config_parse_emergency_action(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
int config_parse_unit_requires_mounts_for(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
int config_parse_syscall_filter(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
int config_parse_syscall_archs(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
diff --git a/src/core/main.c b/src/core/main.c
index ffc7725f16..94602611a7 100644
--- a/src/core/main.c
+++ b/src/core/main.c
@@ -89,6 +89,7 @@
#include "user-util.h"
#include "virt.h"
#include "watchdog.h"
+#include "emergency-action.h"
static enum {
ACTION_RUN,
@@ -131,7 +132,7 @@ static bool arg_default_memory_accounting = false;
static bool arg_default_tasks_accounting = true;
static uint64_t arg_default_tasks_max = UINT64_MAX;
static sd_id128_t arg_machine_id = {};
-static CADBurstAction arg_cad_burst_action = CAD_BURST_ACTION_REBOOT;
+static EmergencyAction arg_cad_burst_action = EMERGENCY_ACTION_REBOOT_FORCE;
noreturn static void freeze_or_reboot(void) {
@@ -649,8 +650,6 @@ static int config_parse_join_controllers(const char *unit,
return 0;
}
-static DEFINE_CONFIG_PARSE_ENUM(config_parse_cad_burst_action, cad_burst_action, CADBurstAction, "Failed to parse service restart specifier");
-
static int parse_config_file(void) {
const ConfigTableItem items[] = {
@@ -705,7 +704,7 @@ static int parse_config_file(void) {
{ "Manager", "DefaultMemoryAccounting", config_parse_bool, 0, &arg_default_memory_accounting },
{ "Manager", "DefaultTasksAccounting", config_parse_bool, 0, &arg_default_tasks_accounting },
{ "Manager", "DefaultTasksMax", config_parse_tasks_max, 0, &arg_default_tasks_max },
- { "Manager", "CtrlAltDelBurstAction", config_parse_cad_burst_action, 0, &arg_cad_burst_action},
+ { "Manager", "CtrlAltDelBurstAction", config_parse_emergency_action, 0, &arg_cad_burst_action },
{}
};
@@ -1778,7 +1777,7 @@ int main(int argc, char *argv[]) {
(void) bump_rlimit_nofile(&saved_rlimit_nofile);
if (empty_etc) {
- r = unit_file_preset_all(UNIT_FILE_SYSTEM, false, NULL, UNIT_FILE_PRESET_ENABLE_ONLY, false, NULL, 0);
+ r = unit_file_preset_all(UNIT_FILE_SYSTEM, 0, NULL, UNIT_FILE_PRESET_ENABLE_ONLY, NULL, 0);
if (r < 0)
log_full_errno(r == -EEXIST ? LOG_NOTICE : LOG_WARNING, r, "Failed to populate /etc with preset unit settings, ignoring: %m");
else
diff --git a/src/core/manager.c b/src/core/manager.c
index fa02389167..52174eac07 100644
--- a/src/core/manager.c
+++ b/src/core/manager.c
@@ -1911,28 +1911,11 @@ static void manager_handle_ctrl_alt_del(Manager *m) {
* 7 times within 2s, we reboot/shutdown immediately,
* unless it was disabled in system.conf */
- if (ratelimit_test(&m->ctrl_alt_del_ratelimit) || m->cad_burst_action == CAD_BURST_ACTION_IGNORE)
+ if (ratelimit_test(&m->ctrl_alt_del_ratelimit) || m->cad_burst_action == EMERGENCY_ACTION_NONE)
manager_start_target(m, SPECIAL_CTRL_ALT_DEL_TARGET, JOB_REPLACE_IRREVERSIBLY);
- else {
- switch (m->cad_burst_action) {
-
- case CAD_BURST_ACTION_REBOOT:
- m->exit_code = MANAGER_REBOOT;
- break;
-
- case CAD_BURST_ACTION_POWEROFF:
- m->exit_code = MANAGER_POWEROFF;
- break;
-
- default:
- assert_not_reached("Unknown action.");
- }
-
- log_notice("Ctrl-Alt-Del was pressed more than 7 times within 2s, performing immediate %s.",
- cad_burst_action_to_string(m->cad_burst_action));
- status_printf(NULL, true, false, "Ctrl-Alt-Del was pressed more than 7 times within 2s, performing immediate %s.",
- cad_burst_action_to_string(m->cad_burst_action));
- }
+ else
+ emergency_action(m, m->cad_burst_action, NULL,
+ "Ctrl-Alt-Del was pressed more than 7 times within 2s");
}
static int manager_dispatch_signal_fd(sd_event_source *source, int fd, uint32_t revents, void *userdata) {
@@ -3591,11 +3574,3 @@ static const char *const manager_state_table[_MANAGER_STATE_MAX] = {
};
DEFINE_STRING_TABLE_LOOKUP(manager_state, ManagerState);
-
-static const char *const cad_burst_action_table[_CAD_BURST_ACTION_MAX] = {
- [CAD_BURST_ACTION_IGNORE] = "ignore",
- [CAD_BURST_ACTION_REBOOT] = "reboot-force",
- [CAD_BURST_ACTION_POWEROFF] = "poweroff-force",
-};
-
-DEFINE_STRING_TABLE_LOOKUP(cad_burst_action, CADBurstAction);
diff --git a/src/core/manager.h b/src/core/manager.h
index 29fe14e10b..35172fdba9 100644
--- a/src/core/manager.h
+++ b/src/core/manager.h
@@ -62,14 +62,6 @@ typedef enum ManagerExitCode {
_MANAGER_EXIT_CODE_INVALID = -1
} ManagerExitCode;
-typedef enum CADBurstAction {
- CAD_BURST_ACTION_IGNORE,
- CAD_BURST_ACTION_REBOOT,
- CAD_BURST_ACTION_POWEROFF,
- _CAD_BURST_ACTION_MAX,
- _CAD_BURST_ACTION_INVALID = -1
-} CADBurstAction;
-
typedef enum StatusType {
STATUS_TYPE_EPHEMERAL,
STATUS_TYPE_NORMAL,
@@ -315,7 +307,7 @@ struct Manager {
/* When the user hits C-A-D more than 7 times per 2s, do something immediately... */
RateLimit ctrl_alt_del_ratelimit;
- CADBurstAction cad_burst_action;
+ EmergencyAction cad_burst_action;
const char *unit_log_field;
const char *unit_log_format_string;
@@ -411,6 +403,3 @@ void manager_deserialize_gid_refs_one(Manager *m, const char *value);
const char *manager_state_to_string(ManagerState m) _const_;
ManagerState manager_state_from_string(const char *s) _pure_;
-
-const char *cad_burst_action_to_string(CADBurstAction a) _const_;
-CADBurstAction cad_burst_action_from_string(const char *s) _pure_;
diff --git a/src/core/mount.c b/src/core/mount.c
index da480001e1..d749e49df5 100644
--- a/src/core/mount.c
+++ b/src/core/mount.c
@@ -159,17 +159,6 @@ static void mount_init(Unit *u) {
m->timeout_usec = u->manager->default_timeout_start_usec;
m->directory_mode = 0755;
- if (unit_has_name(u, "-.mount")) {
- /* Don't allow start/stop for root directory */
- u->refuse_manual_start = true;
- u->refuse_manual_stop = true;
- } else {
- /* The stdio/kmsg bridge socket is on /, in order to avoid a
- * dep loop, don't use kmsg logging for -.mount */
- m->exec_context.std_output = u->manager->default_std_output;
- m->exec_context.std_error = u->manager->default_std_error;
- }
-
/* We need to make sure that /usr/bin/mount is always called
* in the same process group as us, so that the autofs kernel
* side doesn't send us another mount request while we are
@@ -577,6 +566,25 @@ static int mount_add_extras(Mount *m) {
return 0;
}
+static int mount_load_root_mount(Unit *u) {
+ assert(u);
+
+ if (!unit_has_name(u, SPECIAL_ROOT_MOUNT))
+ return 0;
+
+ u->perpetual = true;
+ u->default_dependencies = false;
+
+ /* The stdio/kmsg bridge socket is on /, in order to avoid a dep loop, don't use kmsg logging for -.mount */
+ MOUNT(u)->exec_context.std_output = EXEC_OUTPUT_NULL;
+ MOUNT(u)->exec_context.std_input = EXEC_INPUT_NULL;
+
+ if (!u->description)
+ u->description = strdup("Root Mount");
+
+ return 1;
+}
+
static int mount_load(Unit *u) {
Mount *m = MOUNT(u);
int r;
@@ -584,11 +592,14 @@ static int mount_load(Unit *u) {
assert(u);
assert(u->load_state == UNIT_STUB);
- if (m->from_proc_self_mountinfo)
+ r = mount_load_root_mount(u);
+ if (r < 0)
+ return r;
+
+ if (m->from_proc_self_mountinfo || u->perpetual)
r = unit_load_fragment_and_dropin_optional(u);
else
r = unit_load_fragment_and_dropin(u);
-
if (r < 0)
return r;
@@ -1393,11 +1404,7 @@ static int mount_setup_unit(
if (!u) {
delete = true;
- u = unit_new(m, sizeof(Mount));
- if (!u)
- return log_oom();
-
- r = unit_add_name(u, e);
+ r = unit_new_for_name(m, sizeof(Mount), e, &u);
if (r < 0)
goto fail;
@@ -1592,11 +1599,46 @@ static int mount_get_timeout(Unit *u, usec_t *timeout) {
return 1;
}
+static int synthesize_root_mount(Manager *m) {
+ Unit *u;
+ int r;
+
+ assert(m);
+
+ /* Whatever happens, we know for sure that the root directory is around, and cannot go away. Let's
+ * unconditionally synthesize it here and mark it as perpetual. */
+
+ u = manager_get_unit(m, SPECIAL_ROOT_MOUNT);
+ if (!u) {
+ r = unit_new_for_name(m, sizeof(Mount), SPECIAL_ROOT_MOUNT, &u);
+ if (r < 0)
+ return log_error_errno(r, "Failed to allocate the special " SPECIAL_ROOT_MOUNT " unit: %m");
+ }
+
+ u->perpetual = true;
+ MOUNT(u)->deserialized_state = MOUNT_MOUNTED;
+
+ unit_add_to_load_queue(u);
+ unit_add_to_dbus_queue(u);
+
+ return 0;
+}
+
+static bool mount_is_mounted(Mount *m) {
+ assert(m);
+
+ return UNIT(m)->perpetual || m->is_mounted;
+}
+
static void mount_enumerate(Manager *m) {
int r;
assert(m);
+ r = synthesize_root_mount(m);
+ if (r < 0)
+ goto fail;
+
mnt_init_debug(0);
if (!m->mount_monitor) {
@@ -1703,7 +1745,7 @@ static int mount_dispatch_io(sd_event_source *source, int fd, uint32_t revents,
LIST_FOREACH(units_by_type, u, m->units_by_type[UNIT_MOUNT]) {
Mount *mount = MOUNT(u);
- if (!mount->is_mounted) {
+ if (!mount_is_mounted(mount)) {
/* A mount point is not around right now. It
* might be gone, or might never have
@@ -1764,7 +1806,7 @@ static int mount_dispatch_io(sd_event_source *source, int fd, uint32_t revents,
}
}
- if (mount->is_mounted &&
+ if (mount_is_mounted(mount) &&
mount->from_proc_self_mountinfo &&
mount->parameters_proc_self_mountinfo.what) {
diff --git a/src/core/org.freedesktop.systemd1.conf b/src/core/org.freedesktop.systemd1.conf
index 6caa15b0b8..a61677e645 100644
--- a/src/core/org.freedesktop.systemd1.conf
+++ b/src/core/org.freedesktop.systemd1.conf
@@ -94,6 +94,10 @@
<allow send_destination="org.freedesktop.systemd1"
send_interface="org.freedesktop.systemd1.Manager"
+ send_member="GetUnitFileLinks"/>
+
+ <allow send_destination="org.freedesktop.systemd1"
+ send_interface="org.freedesktop.systemd1.Manager"
send_member="ListJobs"/>
<allow send_destination="org.freedesktop.systemd1"
diff --git a/src/core/scope.c b/src/core/scope.c
index e7583f6d89..d6e1f8e392 100644
--- a/src/core/scope.c
+++ b/src/core/scope.c
@@ -147,6 +147,32 @@ static int scope_verify(Scope *s) {
return 0;
}
+static int scope_load_init_scope(Unit *u) {
+ assert(u);
+
+ if (!unit_has_name(u, SPECIAL_INIT_SCOPE))
+ return 0;
+
+ u->transient = true;
+ u->perpetual = true;
+
+ /* init.scope is a bit special, as it has to stick around forever. Because of its special semantics we
+ * synthesize it here, instead of relying on the unit file on disk. */
+
+ u->default_dependencies = false;
+ u->ignore_on_isolate = true;
+
+ SCOPE(u)->kill_context.kill_signal = SIGRTMIN+14;
+
+ /* Prettify things, if we can. */
+ if (!u->description)
+ u->description = strdup("System and Service Manager");
+ if (!u->documentation)
+ (void) strv_extend(&u->documentation, "man:systemd(1)");
+
+ return 1;
+}
+
static int scope_load(Unit *u) {
Scope *s = SCOPE(u);
int r;
@@ -158,6 +184,9 @@ static int scope_load(Unit *u) {
/* Refuse to load non-transient scope units, but allow them while reloading. */
return -ENOENT;
+ r = scope_load_init_scope(u);
+ if (r < 0)
+ return r;
r = unit_load_fragment_and_dropin_optional(u);
if (r < 0)
return r;
@@ -534,34 +563,16 @@ static void scope_enumerate(Manager *m) {
u = manager_get_unit(m, SPECIAL_INIT_SCOPE);
if (!u) {
- u = unit_new(m, sizeof(Scope));
- if (!u) {
- log_oom();
- return;
- }
-
- r = unit_add_name(u, SPECIAL_INIT_SCOPE);
+ r = unit_new_for_name(m, sizeof(Scope), SPECIAL_INIT_SCOPE, &u);
if (r < 0) {
- unit_free(u);
- log_error_errno(r, "Failed to add init.scope name");
+ log_error_errno(r, "Failed to allocate the special " SPECIAL_INIT_SCOPE " unit: %m");
return;
}
}
u->transient = true;
- u->default_dependencies = false;
- u->no_gc = true;
- u->ignore_on_isolate = true;
- u->refuse_manual_start = true;
- u->refuse_manual_stop = true;
+ u->perpetual = true;
SCOPE(u)->deserialized_state = SCOPE_RUNNING;
- SCOPE(u)->kill_context.kill_signal = SIGRTMIN+14;
-
- /* Prettify things, if we can. */
- if (!u->description)
- u->description = strdup("System and Service Manager");
- if (!u->documentation)
- (void) strv_extend(&u->documentation, "man:systemd(1)");
unit_add_to_load_queue(u);
unit_add_to_dbus_queue(u);
diff --git a/src/core/service.c b/src/core/service.c
index 5a9b01dadb..f6acc2f129 100644
--- a/src/core/service.c
+++ b/src/core/service.c
@@ -289,7 +289,17 @@ static void service_fd_store_unlink(ServiceFDStore *fs) {
free(fs);
}
-static void service_release_resources(Unit *u) {
+static void service_release_fd_store(Service *s) {
+ assert(s);
+
+ log_unit_debug(UNIT(s), "Releasing all stored fds");
+ while (s->fd_store)
+ service_fd_store_unlink(s->fd_store);
+
+ assert(s->n_fd_store == 0);
+}
+
+static void service_release_resources(Unit *u, bool inactive) {
Service *s = SERVICE(u);
assert(s);
@@ -297,16 +307,14 @@ static void service_release_resources(Unit *u) {
if (!s->fd_store && s->stdin_fd < 0 && s->stdout_fd < 0 && s->stderr_fd < 0)
return;
- log_unit_debug(u, "Releasing all resources.");
+ log_unit_debug(u, "Releasing resources.");
s->stdin_fd = safe_close(s->stdin_fd);
s->stdout_fd = safe_close(s->stdout_fd);
s->stderr_fd = safe_close(s->stderr_fd);
- while (s->fd_store)
- service_fd_store_unlink(s->fd_store);
-
- assert(s->n_fd_store == 0);
+ if (inactive)
+ service_release_fd_store(s);
}
static void service_done(Unit *u) {
@@ -350,7 +358,7 @@ static void service_done(Unit *u) {
s->timer_event_source = sd_event_source_unref(s->timer_event_source);
- service_release_resources(u);
+ service_release_resources(u, true);
}
static int on_fd_store_io(sd_event_source *e, int fd, uint32_t revents, void *userdata) {
@@ -360,6 +368,10 @@ static int on_fd_store_io(sd_event_source *e, int fd, uint32_t revents, void *us
assert(fs);
/* If we get either EPOLLHUP or EPOLLERR, it's time to remove this entry from the fd store */
+ log_unit_debug(UNIT(fs->service),
+ "Received %s on stored fd %d (%s), closing.",
+ revents & EPOLLERR ? "EPOLLERR" : "EPOLLHUP",
+ fs->fd, strna(fs->fdname));
service_fd_store_unlink(fs);
return 0;
}
@@ -368,20 +380,23 @@ static int service_add_fd_store(Service *s, int fd, const char *name) {
ServiceFDStore *fs;
int r;
+ /* fd is always consumed if we return >= 0 */
+
assert(s);
assert(fd >= 0);
if (s->n_fd_store >= s->n_fd_store_max)
- return 0;
+ return -EXFULL; /* Our store is full.
+ * Use this errno rather than E[NM]FILE to distinguish from
+ * the case where systemd itself hits the file limit. */
LIST_FOREACH(fd_store, fs, s->fd_store) {
r = same_fd(fs->fd, fd);
if (r < 0)
return r;
if (r > 0) {
- /* Already included */
safe_close(fd);
- return 1;
+ return 0; /* fd already included */
}
}
@@ -409,7 +424,7 @@ static int service_add_fd_store(Service *s, int fd, const char *name) {
LIST_PREPEND(fd_store, s->fd_store, fs);
s->n_fd_store++;
- return 1;
+ return 1; /* fd newly stored */
}
static int service_add_fd_store_set(Service *s, FDSet *fds, const char *name) {
@@ -417,10 +432,7 @@ static int service_add_fd_store_set(Service *s, FDSet *fds, const char *name) {
assert(s);
- if (fdset_size(fds) <= 0)
- return 0;
-
- while (s->n_fd_store < s->n_fd_store_max) {
+ while (fdset_size(fds) > 0) {
_cleanup_close_ int fd = -1;
fd = fdset_steal_first(fds);
@@ -428,17 +440,17 @@ static int service_add_fd_store_set(Service *s, FDSet *fds, const char *name) {
break;
r = service_add_fd_store(s, fd, name);
+ if (r == -EXFULL)
+ return log_unit_warning_errno(UNIT(s), r,
+ "Cannot store more fds than FileDescriptorStoreMax=%u, closing remaining.",
+ s->n_fd_store_max);
if (r < 0)
- return log_unit_error_errno(UNIT(s), r, "Couldn't add fd to fd store: %m");
- if (r > 0) {
- log_unit_debug(UNIT(s), "Added fd to fd store.");
- fd = -1;
- }
+ return log_unit_error_errno(UNIT(s), r, "Failed to add fd to store: %m");
+ if (r > 0)
+ log_unit_debug(UNIT(s), "Added fd %u (%s) to fd store.", fd, strna(name));
+ fd = -1;
}
- if (fdset_size(fds) > 0)
- log_unit_warning(UNIT(s), "Tried to store more fds than FileDescriptorStoreMax=%u allows, closing remaining.", s->n_fd_store_max);
-
return 0;
}
@@ -1225,6 +1237,7 @@ static int service_spawn(
return r;
n_fds = r;
+ log_unit_debug(UNIT(s), "Passing %i fds to service", n_fds);
}
r = service_arm_timer(s, usec_add(now(CLOCK_MONOTONIC), timeout));
@@ -1455,7 +1468,7 @@ static void service_enter_dead(Service *s, ServiceResult f, bool allow_restart)
if (s->result != SERVICE_SUCCESS) {
log_unit_warning(UNIT(s), "Failed with result '%s'.", service_result_to_string(s->result));
- failure_action(UNIT(s)->manager, s->failure_action, UNIT(s)->reboot_arg);
+ emergency_action(UNIT(s)->manager, s->emergency_action, UNIT(s)->reboot_arg, "service failed");
}
if (allow_restart && service_shall_restart(s)) {
@@ -2336,7 +2349,7 @@ static int service_deserialize_item(Unit *u, const char *key, const char *value,
r = service_add_fd_store(s, fd, t);
if (r < 0)
log_unit_error_errno(u, r, "Failed to add fd to store: %m");
- else if (r > 0)
+ else
fdset_remove(fds, fd);
}
diff --git a/src/core/service.h b/src/core/service.h
index 888007cc0b..2869144fcb 100644
--- a/src/core/service.h
+++ b/src/core/service.h
@@ -178,7 +178,7 @@ struct Service {
char *status_text;
int status_errno;
- FailureAction failure_action;
+ EmergencyAction emergency_action;
UnitRef accept_socket;
diff --git a/src/core/slice.c b/src/core/slice.c
index 03fe797f27..ed5d3fd701 100644
--- a/src/core/slice.c
+++ b/src/core/slice.c
@@ -130,6 +130,28 @@ static int slice_verify(Slice *s) {
return 0;
}
+static int slice_load_root_slice(Unit *u) {
+ assert(u);
+
+ if (!unit_has_name(u, SPECIAL_ROOT_SLICE))
+ return 0;
+
+ u->perpetual = true;
+
+ /* The root slice is a bit special. For example it is always running and cannot be terminated. Because of its
+ * special semantics we synthesize it here, instead of relying on the unit file on disk. */
+
+ u->default_dependencies = false;
+ u->ignore_on_isolate = true;
+
+ if (!u->description)
+ u->description = strdup("Root Slice");
+ if (!u->documentation)
+ u->documentation = strv_new("man:systemd.special(7)", NULL);
+
+ return 1;
+}
+
static int slice_load(Unit *u) {
Slice *s = SLICE(u);
int r;
@@ -137,6 +159,9 @@ static int slice_load(Unit *u) {
assert(s);
assert(u->load_state == UNIT_STUB);
+ r = slice_load_root_slice(u);
+ if (r < 0)
+ return r;
r = unit_load_fragment_and_dropin_optional(u);
if (r < 0)
return r;
@@ -274,32 +299,16 @@ static void slice_enumerate(Manager *m) {
u = manager_get_unit(m, SPECIAL_ROOT_SLICE);
if (!u) {
- u = unit_new(m, sizeof(Slice));
- if (!u) {
- log_oom();
- return;
- }
-
- r = unit_add_name(u, SPECIAL_ROOT_SLICE);
+ r = unit_new_for_name(m, sizeof(Slice), SPECIAL_ROOT_SLICE, &u);
if (r < 0) {
- unit_free(u);
- log_error_errno(r, "Failed to add -.slice name");
+ log_error_errno(r, "Failed to allocate the special " SPECIAL_ROOT_SLICE " unit: %m");
return;
}
}
- u->default_dependencies = false;
- u->no_gc = true;
- u->ignore_on_isolate = true;
- u->refuse_manual_start = true;
- u->refuse_manual_stop = true;
+ u->perpetual = true;
SLICE(u)->deserialized_state = SLICE_ACTIVE;
- if (!u->description)
- u->description = strdup("Root Slice");
- if (!u->documentation)
- (void) strv_extend(&u->documentation, "man:systemd.special(7)");
-
unit_add_to_load_queue(u);
unit_add_to_dbus_queue(u);
}
diff --git a/src/core/swap.c b/src/core/swap.c
index b592abb9fb..2228a254bb 100644
--- a/src/core/swap.c
+++ b/src/core/swap.c
@@ -381,11 +381,7 @@ static int swap_setup_unit(
if (!u) {
delete = true;
- u = unit_new(m, sizeof(Swap));
- if (!u)
- return log_oom();
-
- r = unit_add_name(u, e);
+ r = unit_new_for_name(m, sizeof(Swap), e, &u);
if (r < 0)
goto fail;
diff --git a/src/core/unit.c b/src/core/unit.c
index 14e1d7d20d..fa1f3d9d4b 100644
--- a/src/core/unit.c
+++ b/src/core/unit.c
@@ -109,6 +109,24 @@ Unit *unit_new(Manager *m, size_t size) {
return u;
}
+int unit_new_for_name(Manager *m, size_t size, const char *name, Unit **ret) {
+ Unit *u;
+ int r;
+
+ u = unit_new(m, size);
+ if (!u)
+ return -ENOMEM;
+
+ r = unit_add_name(u, name);
+ if (r < 0) {
+ unit_free(u);
+ return r;
+ }
+
+ *ret = u;
+ return r;
+}
+
bool unit_has_name(Unit *u, const char *name) {
assert(u);
assert(name);
@@ -302,6 +320,7 @@ int unit_set_description(Unit *u, const char *description) {
bool unit_check_gc(Unit *u) {
UnitActiveState state;
+ bool inactive;
assert(u);
if (u->job)
@@ -311,19 +330,20 @@ bool unit_check_gc(Unit *u) {
return true;
state = unit_active_state(u);
+ inactive = state == UNIT_INACTIVE;
/* If the unit is inactive and failed and no job is queued for
* it, then release its runtime resources */
if (UNIT_IS_INACTIVE_OR_FAILED(state) &&
UNIT_VTABLE(u)->release_resources)
- UNIT_VTABLE(u)->release_resources(u);
+ UNIT_VTABLE(u)->release_resources(u, inactive);
/* But we keep the unit object around for longer when it is
* referenced or configured to not be gc'ed */
- if (state != UNIT_INACTIVE)
+ if (!inactive)
return true;
- if (u->no_gc)
+ if (u->perpetual)
return true;
if (u->refs)
@@ -924,6 +944,7 @@ void unit_dump(Unit *u, FILE *f, const char *prefix) {
"%s\tGC Check Good: %s\n"
"%s\tNeed Daemon Reload: %s\n"
"%s\tTransient: %s\n"
+ "%s\tPerpetual: %s\n"
"%s\tSlice: %s\n"
"%s\tCGroup: %s\n"
"%s\tCGroup realized: %s\n"
@@ -942,6 +963,7 @@ void unit_dump(Unit *u, FILE *f, const char *prefix) {
prefix, yes_no(unit_check_gc(u)),
prefix, yes_no(unit_need_daemon_reload(u)),
prefix, yes_no(u->transient),
+ prefix, yes_no(u->perpetual),
prefix, strna(unit_slice_name(u)),
prefix, strna(u->cgroup_path),
prefix, yes_no(u->cgroup_realized),
@@ -982,8 +1004,8 @@ void unit_dump(Unit *u, FILE *f, const char *prefix) {
if (u->job_timeout != USEC_INFINITY)
fprintf(f, "%s\tJob Timeout: %s\n", prefix, format_timespan(timespan, sizeof(timespan), u->job_timeout, 0));
- if (u->job_timeout_action != FAILURE_ACTION_NONE)
- fprintf(f, "%s\tJob Timeout Action: %s\n", prefix, failure_action_to_string(u->job_timeout_action));
+ if (u->job_timeout_action != EMERGENCY_ACTION_NONE)
+ fprintf(f, "%s\tJob Timeout Action: %s\n", prefix, emergency_action_to_string(u->job_timeout_action));
if (u->job_timeout_reboot_arg)
fprintf(f, "%s\tJob Timeout Reboot Argument: %s\n", prefix, u->job_timeout_reboot_arg);
@@ -1450,7 +1472,7 @@ static void unit_status_log_starting_stopping_reloading(Unit *u, JobType t) {
format = unit_get_status_message_format(u, t);
DISABLE_WARNING_FORMAT_NONLITERAL;
- xsprintf(buf, format, unit_description(u));
+ snprintf(buf, sizeof buf, format, unit_description(u));
REENABLE_WARNING;
mid = t == JOB_START ? SD_MESSAGE_UNIT_STARTING :
@@ -1490,7 +1512,7 @@ int unit_start_limit_test(Unit *u) {
log_unit_warning(u, "Start request repeated too quickly.");
u->start_limit_hit = true;
- return failure_action(u->manager, u->start_limit_action, u->reboot_arg);
+ return emergency_action(u->manager, u->start_limit_action, u->reboot_arg, "unit failed");
}
/* Errors:
@@ -1616,6 +1638,18 @@ int unit_stop(Unit *u) {
return UNIT_VTABLE(u)->stop(u);
}
+bool unit_can_stop(Unit *u) {
+ assert(u);
+
+ if (!unit_supported(u))
+ return false;
+
+ if (u->perpetual)
+ return false;
+
+ return !!UNIT_VTABLE(u)->stop;
+}
+
/* Errors:
* -EBADR: This unit type does not support reloading.
* -ENOEXEC: Unit is not started.
@@ -2150,13 +2184,20 @@ bool unit_job_is_applicable(Unit *u, JobType j) {
case JOB_VERIFY_ACTIVE:
case JOB_START:
- case JOB_STOP:
case JOB_NOP:
+ /* Note that we don't check unit_can_start() here. That's because .device units and suchlike are not
+ * startable by us but may appear due to external events, and it thus makes sense to permit enqueing
+ * jobs for it. */
return true;
+ case JOB_STOP:
+ /* Similar as above. However, perpetual units can never be stopped (neither explicitly nor due to
+ * external events), hence it makes no sense to permit enqueing such a request either. */
+ return !u->perpetual;
+
case JOB_RESTART:
case JOB_TRY_RESTART:
- return unit_can_start(u);
+ return unit_can_stop(u) && unit_can_start(u);
case JOB_RELOAD:
case JOB_TRY_RELOAD:
diff --git a/src/core/unit.h b/src/core/unit.h
index a8dd3e602c..991543664b 100644
--- a/src/core/unit.h
+++ b/src/core/unit.h
@@ -29,7 +29,7 @@ typedef struct UnitRef UnitRef;
typedef struct UnitStatusMessageFormats UnitStatusMessageFormats;
#include "condition.h"
-#include "failure-action.h"
+#include "emergency-action.h"
#include "install.h"
#include "list.h"
#include "unit-name.h"
@@ -114,7 +114,7 @@ struct Unit {
/* Job timeout and action to take */
usec_t job_timeout;
- FailureAction job_timeout_action;
+ EmergencyAction job_timeout_action;
char *job_timeout_reboot_arg;
/* References to this */
@@ -178,7 +178,7 @@ struct Unit {
/* Put a ratelimit on unit starting */
RateLimit start_limit;
- FailureAction start_limit_action;
+ EmergencyAction start_limit_action;
char *reboot_arg;
/* Make sure we never enter endless loops with the check unneeded logic, or the BindsTo= logic */
@@ -236,6 +236,9 @@ struct Unit {
/* Is this a transient unit? */
bool transient;
+ /* Is this a unit that is always running and cannot be stopped? */
+ bool perpetual;
+
bool in_load_queue:1;
bool in_dbus_queue:1;
bool in_cleanup_queue:1;
@@ -244,8 +247,6 @@ struct Unit {
bool sent_dbus_new_signal:1;
- bool no_gc:1;
-
bool in_audit:1;
bool cgroup_realized:1;
@@ -372,7 +373,7 @@ struct UnitVTable {
/* When the unit is not running and no job for it queued we
* shall release its runtime resources */
- void (*release_resources)(Unit *u);
+ void (*release_resources)(Unit *u, bool inactive);
/* Invoked on every child that died */
void (*sigchld_event)(Unit *u, pid_t pid, int code, int status);
@@ -480,6 +481,7 @@ DEFINE_CAST(SCOPE, Scope);
Unit *unit_new(Manager *m, size_t size);
void unit_free(Unit *u);
+int unit_new_for_name(Manager *m, size_t size, const char *name, Unit **ret);
int unit_add_name(Unit *u, const char *name);
int unit_add_dependency(Unit *u, UnitDependency d, Unit *other, bool add_reference);
@@ -524,6 +526,7 @@ void unit_dump(Unit *u, FILE *f, const char *prefix);
bool unit_can_reload(Unit *u) _pure_;
bool unit_can_start(Unit *u) _pure_;
+bool unit_can_stop(Unit *u) _pure_;
bool unit_can_isolate(Unit *u) _pure_;
int unit_start(Unit *u);
diff --git a/src/cryptsetup/cryptsetup.c b/src/cryptsetup/cryptsetup.c
index 1e17fbbb03..01e7ee9973 100644
--- a/src/cryptsetup/cryptsetup.c
+++ b/src/cryptsetup/cryptsetup.c
@@ -52,6 +52,7 @@ static bool arg_verify = false;
static bool arg_discards = false;
static bool arg_tcrypt_hidden = false;
static bool arg_tcrypt_system = false;
+static bool arg_tcrypt_veracrypt = false;
static char **arg_tcrypt_keyfiles = NULL;
static uint64_t arg_offset = 0;
static uint64_t arg_skip = 0;
@@ -177,6 +178,14 @@ static int parse_one_option(const char *option) {
} else if (streq(option, "tcrypt-system")) {
arg_type = CRYPT_TCRYPT;
arg_tcrypt_system = true;
+ } else if (streq(option, "tcrypt-veracrypt")) {
+#ifdef CRYPT_TCRYPT_VERA_MODES
+ arg_type = CRYPT_TCRYPT;
+ arg_tcrypt_veracrypt = true;
+#else
+ log_error("This version of cryptsetup does not support tcrypt-veracrypt; refusing.");
+ return -EINVAL;
+#endif
} else if (STR_IN_SET(option, "plain", "swap", "tmp"))
arg_type = CRYPT_PLAIN;
else if ((val = startswith(option, "timeout="))) {
@@ -438,6 +447,11 @@ static int attach_tcrypt(
if (arg_tcrypt_system)
params.flags |= CRYPT_TCRYPT_SYSTEM_HEADER;
+#ifdef CRYPT_TCRYPT_VERA_MODES
+ if (arg_tcrypt_veracrypt)
+ params.flags |= CRYPT_TCRYPT_VERA_MODES;
+#endif
+
if (key_file) {
r = read_one_line_file(key_file, &passphrase);
if (r < 0) {
diff --git a/src/detect-virt/detect-virt.c b/src/detect-virt/detect-virt.c
index 5d51589a31..4b8956f0ad 100644
--- a/src/detect-virt/detect-virt.c
+++ b/src/detect-virt/detect-virt.c
@@ -31,6 +31,7 @@ static enum {
ONLY_VM,
ONLY_CONTAINER,
ONLY_CHROOT,
+ ONLY_PRIVATE_USERS,
} arg_mode = ANY_VIRTUALIZATION;
static void help(void) {
@@ -41,6 +42,7 @@ static void help(void) {
" -c --container Only detect whether we are run in a container\n"
" -v --vm Only detect whether we are run in a VM\n"
" -r --chroot Detect whether we are run in a chroot() environment\n"
+ " --private-users Only detect whether we are running in a user namespace\n"
" -q --quiet Don't output anything, just set return value\n"
, program_invocation_short_name);
}
@@ -48,16 +50,18 @@ static void help(void) {
static int parse_argv(int argc, char *argv[]) {
enum {
- ARG_VERSION = 0x100
+ ARG_VERSION = 0x100,
+ ARG_PRIVATE_USERS,
};
static const struct option options[] = {
- { "help", no_argument, NULL, 'h' },
- { "version", no_argument, NULL, ARG_VERSION },
- { "container", no_argument, NULL, 'c' },
- { "vm", no_argument, NULL, 'v' },
- { "chroot", no_argument, NULL, 'r' },
- { "quiet", no_argument, NULL, 'q' },
+ { "help", no_argument, NULL, 'h' },
+ { "version", no_argument, NULL, ARG_VERSION },
+ { "container", no_argument, NULL, 'c' },
+ { "vm", no_argument, NULL, 'v' },
+ { "chroot", no_argument, NULL, 'r' },
+ { "private-users", no_argument, NULL, ARG_PRIVATE_USERS },
+ { "quiet", no_argument, NULL, 'q' },
{}
};
@@ -85,6 +89,10 @@ static int parse_argv(int argc, char *argv[]) {
arg_mode = ONLY_CONTAINER;
break;
+ case ARG_PRIVATE_USERS:
+ arg_mode = ONLY_PRIVATE_USERS;
+ break;
+
case 'v':
arg_mode = ONLY_VM;
break;
@@ -151,6 +159,15 @@ int main(int argc, char *argv[]) {
return r ? EXIT_SUCCESS : EXIT_FAILURE;
+ case ONLY_PRIVATE_USERS:
+ r = running_in_userns();
+ if (r < 0) {
+ log_error_errno(r, "Failed to check for user namespace: %m");
+ return EXIT_FAILURE;
+ }
+
+ return r ? EXIT_SUCCESS : EXIT_FAILURE;
+
case ANY_VIRTUALIZATION:
default:
r = detect_virtualization();
diff --git a/src/hwdb/hwdb.c b/src/hwdb/hwdb.c
index 42e68e676a..1d16d9f8aa 100644
--- a/src/hwdb/hwdb.c
+++ b/src/hwdb/hwdb.c
@@ -172,8 +172,8 @@ static int trie_node_add_value(struct trie *trie, struct trie_node *node,
if (v < 0)
return v;
fn = strbuf_add_string(trie->strings, filename, strlen(filename));
- if (v < 0)
- return v;
+ if (fn < 0)
+ return fn;
if (node->values_count) {
struct trie_value_entry search = {
diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c
index 1ed223636c..dee153a4cf 100644
--- a/src/journal/journald-server.c
+++ b/src/journal/journald-server.c
@@ -131,8 +131,6 @@ static void cache_space_invalidate(JournalStorageSpace *space) {
}
static int cache_space_refresh(Server *s, JournalStorage *storage) {
-
- _cleanup_closedir_ DIR *d = NULL;
JournalStorageSpace *space;
JournalMetrics *metrics;
uint64_t vfs_used, vfs_avail, avail;
diff --git a/src/journal/test-compress.c b/src/journal/test-compress.c
index 00e5222a1c..72cadf1771 100644
--- a/src/journal/test-compress.c
+++ b/src/journal/test-compress.c
@@ -247,6 +247,9 @@ int main(int argc, char *argv[]) {
"text\0foofoofoofoo AAAA aaaaaaaaa ghost busters barbarbar FFF"
"foofoofoofoo AAAA aaaaaaaaa ghost busters barbarbar FFF";
+ /* The file to test compression on can be specified as the first argument */
+ const char *srcfile = argc > 1 ? argv[1] : argv[0];
+
char data[512] = "random\0";
char huge[4096*1024];
@@ -275,7 +278,7 @@ int main(int argc, char *argv[]) {
huge, sizeof(huge), true);
test_compress_stream(OBJECT_COMPRESSED_XZ, "xzcat",
- compress_stream_xz, decompress_stream_xz, argv[0]);
+ compress_stream_xz, decompress_stream_xz, srcfile);
#else
log_info("/* XZ test skipped */");
#endif
@@ -297,7 +300,7 @@ int main(int argc, char *argv[]) {
huge, sizeof(huge), true);
test_compress_stream(OBJECT_COMPRESSED_LZ4, "lz4cat",
- compress_stream_lz4, decompress_stream_lz4, argv[0]);
+ compress_stream_lz4, decompress_stream_lz4, srcfile);
test_lz4_decompress_partial();
#else
diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c
index d9e060b6cf..aefe7335b9 100644
--- a/src/network/networkd-link.c
+++ b/src/network/networkd-link.c
@@ -514,13 +514,12 @@ static void link_free(Link *link) {
sd_lldp_unref(link->lldp);
free(link->lldp_file);
+ ndisc_flush(link);
+
sd_ipv4ll_unref(link->ipv4ll);
sd_dhcp6_client_unref(link->dhcp6_client);
sd_ndisc_unref(link->ndisc);
- set_free_free(link->ndisc_rdnss);
- set_free_free(link->ndisc_dnssl);
-
if (link->manager)
hashmap_remove(link->manager->links, INT_TO_PTR(link->ifindex));
@@ -2427,6 +2426,8 @@ static int link_drop_config(Link *link) {
return r;
}
+ ndisc_flush(link);
+
return 0;
}
diff --git a/src/network/networkd-ndisc.c b/src/network/networkd-ndisc.c
index c2b7970623..4853791aa5 100644
--- a/src/network/networkd-ndisc.c
+++ b/src/network/networkd-ndisc.c
@@ -57,6 +57,8 @@ static void ndisc_router_process_default(Link *link, sd_ndisc_router *rt) {
unsigned preference;
usec_t time_now;
int r;
+ Address *address;
+ Iterator i;
assert(link);
assert(rt);
@@ -75,6 +77,32 @@ static void ndisc_router_process_default(Link *link, sd_ndisc_router *rt) {
return;
}
+ SET_FOREACH(address, link->addresses, i) {
+ if (!memcmp(&gateway, &address->in_addr.in6,
+ sizeof(address->in_addr.in6))) {
+ char buffer[INET6_ADDRSTRLEN];
+
+ log_link_debug(link, "No NDisc route added, gateway %s matches local address",
+ inet_ntop(AF_INET6,
+ &address->in_addr.in6,
+ buffer, sizeof(buffer)));
+ return;
+ }
+ }
+
+ SET_FOREACH(address, link->addresses_foreign, i) {
+ if (!memcmp(&gateway, &address->in_addr.in6,
+ sizeof(address->in_addr.in6))) {
+ char buffer[INET6_ADDRSTRLEN];
+
+ log_link_debug(link, "No NDisc route added, gateway %s matches local address",
+ inet_ntop(AF_INET6,
+ &address->in_addr.in6,
+ buffer, sizeof(buffer)));
+ return;
+ }
+ }
+
r = sd_ndisc_router_get_preference(rt, &preference);
if (r < 0) {
log_link_warning_errno(link, r, "Failed to get default router preference from RA: %m");
@@ -652,13 +680,22 @@ void ndisc_vacuum(Link *link) {
SET_FOREACH(r, link->ndisc_rdnss, i)
if (r->valid_until < time_now) {
- (void) set_remove(link->ndisc_rdnss, r);
+ free(set_remove(link->ndisc_rdnss, r));
link_dirty(link);
}
SET_FOREACH(d, link->ndisc_dnssl, i)
if (d->valid_until < time_now) {
- (void) set_remove(link->ndisc_dnssl, d);
+ free(set_remove(link->ndisc_dnssl, d));
link_dirty(link);
}
}
+
+void ndisc_flush(Link *link) {
+ assert(link);
+
+ /* Removes all RDNSS and DNSSL entries, without exception */
+
+ link->ndisc_rdnss = set_free_free(link->ndisc_rdnss);
+ link->ndisc_dnssl = set_free_free(link->ndisc_dnssl);
+}
diff --git a/src/network/networkd-ndisc.h b/src/network/networkd-ndisc.h
index 2002f55107..127126190e 100644
--- a/src/network/networkd-ndisc.h
+++ b/src/network/networkd-ndisc.h
@@ -37,3 +37,4 @@ static inline char* NDISC_DNSSL_DOMAIN(const NDiscDNSSL *n) {
int ndisc_configure(Link *link);
void ndisc_vacuum(Link *link);
+void ndisc_flush(Link *link);
diff --git a/src/network/networkd-netdev-bond.c b/src/network/networkd-netdev-bond.c
index 7913b0088e..46d1669337 100644
--- a/src/network/networkd-netdev-bond.c
+++ b/src/network/networkd-netdev-bond.c
@@ -268,13 +268,13 @@ static int netdev_bond_fill_message_create(NetDev *netdev, Link *link, sd_netlin
if (b->arp_all_targets != _NETDEV_BOND_ARP_ALL_TARGETS_INVALID) {
r = sd_netlink_message_append_u32(m, IFLA_BOND_ARP_ALL_TARGETS, b->arp_all_targets);
if (r < 0)
- return log_netdev_error_errno(netdev, r, "Could not append IFLA_BOND_ARP_VALIDATE attribute: %m");
+ return log_netdev_error_errno(netdev, r, "Could not append IFLA_BOND_ARP_ALL_TARGETS attribute: %m");
}
if (b->primary_reselect != _NETDEV_BOND_PRIMARY_RESELECT_INVALID) {
- r = sd_netlink_message_append_u32(m, IFLA_BOND_ARP_ALL_TARGETS, b->primary_reselect);
+ r = sd_netlink_message_append_u8(m, IFLA_BOND_PRIMARY_RESELECT, b->primary_reselect);
if (r < 0)
- return log_netdev_error_errno(netdev, r, "Could not append IFLA_BOND_ARP_ALL_TARGETS attribute: %m");
+ return log_netdev_error_errno(netdev, r, "Could not append IFLA_BOND_PRIMARY_RESELECT attribute: %m");
}
if (b->resend_igmp <= RESEND_IGMP_MAX) {
diff --git a/src/network/networkd-network-gperf.gperf b/src/network/networkd-network-gperf.gperf
index 5587961b9f..bcf8186c33 100644
--- a/src/network/networkd-network-gperf.gperf
+++ b/src/network/networkd-network-gperf.gperf
@@ -49,7 +49,7 @@ Network.EmitLLDP, config_parse_lldp_emit,
Network.Address, config_parse_address, 0, 0
Network.Gateway, config_parse_gateway, 0, 0
Network.Domains, config_parse_domains, 0, 0
-Network.DNS, config_parse_strv, 0, offsetof(Network, dns)
+Network.DNS, config_parse_dns, 0, 0
Network.LLMNR, config_parse_resolve_support, 0, offsetof(Network, llmnr)
Network.MulticastDNS, config_parse_resolve_support, 0, offsetof(Network, mdns)
Network.DNSSEC, config_parse_dnssec_mode, 0, offsetof(Network, dnssec_mode)
diff --git a/src/network/networkd-network.c b/src/network/networkd-network.c
index 584cb96979..042232fcac 100644
--- a/src/network/networkd-network.c
+++ b/src/network/networkd-network.c
@@ -979,6 +979,56 @@ int config_parse_dhcp_server_ntp(
}
}
+int config_parse_dns(
+ const char *unit,
+ const char *filename,
+ unsigned line,
+ const char *section,
+ unsigned section_line,
+ const char *lvalue,
+ int ltype,
+ const char *rvalue,
+ void *data,
+ void *userdata) {
+
+ Network *n = userdata;
+ int r;
+
+ assert(filename);
+ assert(lvalue);
+ assert(rvalue);
+
+ for (;;) {
+ _cleanup_free_ char *w = NULL;
+ union in_addr_union a;
+ int family;
+
+ r = extract_first_word(&rvalue, &w, WHITESPACE, EXTRACT_QUOTES|EXTRACT_RETAIN_ESCAPE);
+ if (r == 0)
+ break;
+ if (r == -ENOMEM)
+ return log_oom();
+ if (r < 0) {
+ log_syntax(unit, LOG_ERR, filename, line, r, "Invalid syntax, ignoring: %s", rvalue);
+ break;
+ }
+
+ r = in_addr_from_string_auto(w, &family, &a);
+ if (r < 0) {
+ log_syntax(unit, LOG_ERR, filename, line, 0, "Failed to parse dns server address, ignoring: %s", w);
+ continue;
+ }
+
+ r = strv_consume(&n->dns, w);
+ if (r < 0)
+ return log_oom();
+
+ w = NULL;
+ }
+
+ return 0;
+}
+
int config_parse_dnssec_negative_trust_anchors(
const char *unit,
const char *filename,
diff --git a/src/network/networkd-network.h b/src/network/networkd-network.h
index ef4b499ab9..42fc82d392 100644
--- a/src/network/networkd-network.h
+++ b/src/network/networkd-network.h
@@ -220,6 +220,7 @@ int config_parse_netdev(const char *unit, const char *filename, unsigned line, c
int config_parse_domains(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
int config_parse_tunnel(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
int config_parse_dhcp(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
+int config_parse_dns(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
int config_parse_dhcp_client_identifier(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
int config_parse_ipv6token(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
int config_parse_ipv6_privacy_extensions(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
diff --git a/src/nspawn/nspawn-mount.c b/src/nspawn/nspawn-mount.c
index 2cad84b5a1..392498d1bb 100644
--- a/src/nspawn/nspawn-mount.c
+++ b/src/nspawn/nspawn-mount.c
@@ -294,6 +294,59 @@ int mount_sysfs(const char *dest) {
MS_BIND|MS_RDONLY|MS_NOSUID|MS_NOEXEC|MS_NODEV|MS_REMOUNT, NULL);
}
+static int mkdir_userns(const char *path, mode_t mode, bool in_userns, uid_t uid_shift) {
+ int r;
+
+ assert(path);
+
+ r = mkdir(path, mode);
+ if (r < 0 && errno != EEXIST)
+ return -errno;
+
+ if (!in_userns) {
+ r = lchown(path, uid_shift, uid_shift);
+ if (r < 0)
+ return -errno;
+ }
+
+ return 0;
+}
+
+static int mkdir_userns_p(const char *prefix, const char *path, mode_t mode, bool in_userns, uid_t uid_shift) {
+ const char *p, *e;
+ int r;
+
+ assert(path);
+
+ if (prefix && !path_startswith(path, prefix))
+ return -ENOTDIR;
+
+ /* create every parent directory in the path, except the last component */
+ p = path + strspn(path, "/");
+ for (;;) {
+ char t[strlen(path) + 1];
+
+ e = p + strcspn(p, "/");
+ p = e + strspn(e, "/");
+
+ /* Is this the last component? If so, then we're done */
+ if (*p == 0)
+ break;
+
+ memcpy(t, path, e - path);
+ t[e-path] = 0;
+
+ if (prefix && path_startswith(prefix, t))
+ continue;
+
+ r = mkdir_userns(t, mode, in_userns, uid_shift);
+ if (r < 0)
+ return r;
+ }
+
+ return mkdir_userns(path, mode, in_userns, uid_shift);
+}
+
int mount_all(const char *dest,
bool use_userns, bool in_userns,
bool use_netns,
@@ -355,7 +408,7 @@ int mount_all(const char *dest,
if (mount_table[k].what && r > 0)
continue;
- r = mkdir_p(where, 0755);
+ r = mkdir_userns_p(dest, where, 0755, in_userns, uid_shift);
if (r < 0 && r != -EEXIST) {
if (mount_table[k].fatal)
return log_error_errno(r, "Failed to create directory %s: %m", where);
diff --git a/src/nspawn/nspawn-seccomp.c b/src/nspawn/nspawn-seccomp.c
index 44a0b397ab..03a397d30c 100644
--- a/src/nspawn/nspawn-seccomp.c
+++ b/src/nspawn/nspawn-seccomp.c
@@ -135,15 +135,9 @@ int setup_seccomp(uint64_t cap_list_retain) {
return 0;
}
- seccomp = seccomp_init(SCMP_ACT_ALLOW);
- if (!seccomp)
- return log_oom();
-
- r = seccomp_add_secondary_archs(seccomp);
- if (r < 0) {
- log_error_errno(r, "Failed to add secondary archs to seccomp filter: %m");
- goto finish;
- }
+ r = seccomp_init_conservative(&seccomp, SCMP_ACT_ALLOW);
+ if (r < 0)
+ return log_error_errno(r, "Failed to allocate seccomp object: %m");
r = seccomp_add_default_syscall_filter(seccomp, cap_list_retain);
if (r < 0)
@@ -171,12 +165,6 @@ int setup_seccomp(uint64_t cap_list_retain) {
goto finish;
}
- r = seccomp_attr_set(seccomp, SCMP_FLTATR_CTL_NNP, 0);
- if (r < 0) {
- log_error_errno(r, "Failed to unset NO_NEW_PRIVS: %m");
- goto finish;
- }
-
r = seccomp_load(seccomp);
if (r < 0) {
log_error_errno(r, "Failed to install seccomp audit filter: %m");
diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
index e013417cb4..673e616911 100644
--- a/src/nspawn/nspawn.c
+++ b/src/nspawn/nspawn.c
@@ -2260,7 +2260,7 @@ static int dissect_image(
static int mount_device(const char *what, const char *where, const char *directory, bool rw) {
#ifdef HAVE_BLKID
_cleanup_blkid_free_probe_ blkid_probe b = NULL;
- const char *fstype, *p;
+ const char *fstype, *p, *options;
int r;
assert(what);
@@ -2309,7 +2309,17 @@ static int mount_device(const char *what, const char *where, const char *directo
return -EOPNOTSUPP;
}
- return mount_verbose(LOG_ERR, what, p, fstype, MS_NODEV|(rw ? 0 : MS_RDONLY), NULL);
+ /* If this is a loopback device then let's mount the image with discard, so that the underlying file remains
+ * sparse when possible. */
+ if (STR_IN_SET(fstype, "btrfs", "ext4", "vfat", "xfs")) {
+ const char *l;
+
+ l = path_startswith(what, "/dev");
+ if (l && startswith(l, "loop"))
+ options = "discard";
+ }
+
+ return mount_verbose(LOG_ERR, what, p, fstype, MS_NODEV|(rw ? 0 : MS_RDONLY), options);
#else
log_error("--image= is not supported, compiled without blkid support.");
return -EOPNOTSUPP;
@@ -2684,6 +2694,10 @@ static int inner_child(
}
}
+ r = reset_uid_gid();
+ if (r < 0)
+ return log_error_errno(r, "Couldn't become new root: %m");
+
r = mount_all(NULL,
arg_userns_mode != USER_NAMESPACE_NO,
true,
@@ -2726,10 +2740,6 @@ static int inner_child(
return r;
}
- r = reset_uid_gid();
- if (r < 0)
- return log_error_errno(r, "Couldn't become new root: %m");
-
r = setup_boot_id(NULL);
if (r < 0)
return r;
diff --git a/src/nss-resolve/nss-resolve.c b/src/nss-resolve/nss-resolve.c
index eea91e3e88..d46a3afe91 100644
--- a/src/nss-resolve/nss-resolve.c
+++ b/src/nss-resolve/nss-resolve.c
@@ -121,6 +121,7 @@ enum nss_status _nss_resolve_gethostbyname4_r(
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
struct gaih_addrtuple *r_tuple, *r_tuple_first = NULL;
_cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
+ enum nss_status ret = NSS_STATUS_UNAVAIL;
const char *canonical = NULL;
size_t l, ms, idx;
char *r_name;
@@ -167,6 +168,10 @@ enum nss_status _nss_resolve_gethostbyname4_r(
if (bus_error_shall_fallback(&error))
goto fallback;
+ /* Treat all other error conditions as NOTFOUND, and fail. This includes DNSSEC errors and
+ suchlike. (We don't use UNAVAIL in this case so that the nsswitch.conf configuration can distuingish
+ such executed but negative replies from complete failure to talk to resolved. */
+ ret = NSS_STATUS_NOTFOUND;
goto fail;
}
@@ -279,12 +284,9 @@ fallback:
}
fail:
- /* When we arrive here, resolved runs and has answered (fallback to
- * "dns" is handled earlier). So we have a definitive "no" answer and
- * should not fall back to subsequent NSS modules via "UNAVAIL". */
*errnop = -r;
*h_errnop = NO_RECOVERY;
- return NSS_STATUS_NOTFOUND;
+ return ret;
}
enum nss_status _nss_resolve_gethostbyname3_r(
@@ -300,6 +302,7 @@ enum nss_status _nss_resolve_gethostbyname3_r(
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
char *r_name, *r_aliases, *r_addr, *r_addr_list;
_cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
+ enum nss_status ret = NSS_STATUS_UNAVAIL;
size_t l, idx, ms, alen;
const char *canonical;
int c, r, i = 0;
@@ -353,6 +356,7 @@ enum nss_status _nss_resolve_gethostbyname3_r(
if (bus_error_shall_fallback(&error))
goto fallback;
+ ret = NSS_STATUS_NOTFOUND;
goto fail;
}
@@ -479,7 +483,7 @@ fallback:
fail:
*errnop = -r;
*h_errnop = NO_RECOVERY;
- return NSS_STATUS_NOTFOUND;
+ return ret;
}
enum nss_status _nss_resolve_gethostbyaddr2_r(
@@ -494,6 +498,7 @@ enum nss_status _nss_resolve_gethostbyaddr2_r(
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
char *r_name, *r_aliases, *r_addr, *r_addr_list;
_cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
+ enum nss_status ret = NSS_STATUS_UNAVAIL;
unsigned c = 0, i = 0;
size_t ms = 0, idx;
const char *n;
@@ -560,7 +565,7 @@ enum nss_status _nss_resolve_gethostbyaddr2_r(
if (bus_error_shall_fallback(&error))
goto fallback;
-
+ ret = NSS_STATUS_NOTFOUND;
goto fail;
}
@@ -669,7 +674,7 @@ fallback:
fail:
*errnop = -r;
*h_errnop = NO_RECOVERY;
- return NSS_STATUS_NOTFOUND;
+ return ret;
}
NSS_GETHOSTBYNAME_FALLBACKS(resolve);
diff --git a/src/resolve/resolved-dns-server.c b/src/resolve/resolved-dns-server.c
index 7282848e35..22c64e8491 100644
--- a/src/resolve/resolved-dns-server.c
+++ b/src/resolve/resolved-dns-server.c
@@ -575,8 +575,7 @@ void dns_server_warn_downgrade(DnsServer *server) {
server->warned_downgrade = true;
}
-bool dns_server_limited_domains(DnsServer *server)
-{
+bool dns_server_limited_domains(DnsServer *server) {
DnsSearchDomain *domain;
bool domain_restricted = false;
@@ -589,7 +588,7 @@ bool dns_server_limited_domains(DnsServer *server)
if (domain->route_only) {
domain_restricted = true;
/* ~. means "any domain", thus it is a global server */
- if (streq(DNS_SEARCH_DOMAIN_NAME(domain), "."))
+ if (dns_name_is_root(DNS_SEARCH_DOMAIN_NAME(domain)))
return false;
}
diff --git a/src/shared/condition.c b/src/shared/condition.c
index f13fa6a9fd..8bd6a51a99 100644
--- a/src/shared/condition.c
+++ b/src/shared/condition.c
@@ -146,25 +146,24 @@ static int condition_test_virtualization(Condition *c) {
assert(c->parameter);
assert(c->type == CONDITION_VIRTUALIZATION);
+ if (streq(c->parameter, "private-users"))
+ return running_in_userns();
+
v = detect_virtualization();
if (v < 0)
return v;
/* First, compare with yes/no */
b = parse_boolean(c->parameter);
-
- if (v > 0 && b > 0)
- return true;
-
- if (v == 0 && b == 0)
- return true;
+ if (b >= 0)
+ return b == !!v;
/* Then, compare categorization */
- if (VIRTUALIZATION_IS_VM(v) && streq(c->parameter, "vm"))
- return true;
+ if (streq(c->parameter, "vm"))
+ return VIRTUALIZATION_IS_VM(v);
- if (VIRTUALIZATION_IS_CONTAINER(v) && streq(c->parameter, "container"))
- return true;
+ if (streq(c->parameter, "container"))
+ return VIRTUALIZATION_IS_CONTAINER(v);
/* Finally compare id */
return v != VIRTUALIZATION_NONE && streq(c->parameter, virtualization_to_string(v));
@@ -329,9 +328,9 @@ static int condition_test_needs_update(Condition *c) {
uint64_t timestamp;
int r;
- r = parse_env_file(p, NULL, "TimestampNSec", &timestamp_str, NULL);
+ r = parse_env_file(p, NULL, "TIMESTAMP_NSEC", &timestamp_str, NULL);
if (r < 0) {
- log_error_errno(-r, "Failed to parse timestamp file '%s', using mtime: %m", p);
+ log_error_errno(r, "Failed to parse timestamp file '%s', using mtime: %m", p);
return true;
} else if (r == 0) {
log_debug("No data in timestamp file '%s', using mtime", p);
@@ -340,12 +339,11 @@ static int condition_test_needs_update(Condition *c) {
r = safe_atou64(timestamp_str, &timestamp);
if (r < 0) {
- log_error_errno(-r, "Failed to parse timestamp value '%s' in file '%s', using mtime: %m",
- timestamp_str, p);
+ log_error_errno(r, "Failed to parse timestamp value '%s' in file '%s', using mtime: %m", timestamp_str, p);
return true;
}
- other.st_mtim.tv_nsec = timestamp % NSEC_PER_SEC;
+ timespec_store(&other.st_mtim, timestamp);
}
return usr.st_mtim.tv_nsec > other.st_mtim.tv_nsec;
diff --git a/src/shared/install.c b/src/shared/install.c
index 21cb57bc5a..474426d927 100644
--- a/src/shared/install.c
+++ b/src/shared/install.c
@@ -518,6 +518,7 @@ static int remove_marked_symlinks_fd(
const char *path,
const char *config_path,
const LookupPaths *lp,
+ bool dry_run,
bool *restart,
UnitFileChange **changes,
unsigned *n_changes) {
@@ -566,7 +567,7 @@ static int remove_marked_symlinks_fd(
}
/* This will close nfd, regardless whether it succeeds or not */
- q = remove_marked_symlinks_fd(remove_symlinks_to, nfd, p, config_path, lp, restart, changes, n_changes);
+ q = remove_marked_symlinks_fd(remove_symlinks_to, nfd, p, config_path, lp, dry_run, restart, changes, n_changes);
if (q < 0 && r == 0)
r = q;
@@ -603,14 +604,16 @@ static int remove_marked_symlinks_fd(
if (!found)
continue;
- if (unlinkat(fd, de->d_name, 0) < 0 && errno != ENOENT) {
- if (r == 0)
- r = -errno;
- unit_file_changes_add(changes, n_changes, -errno, p, NULL);
- continue;
- }
+ if (!dry_run) {
+ if (unlinkat(fd, de->d_name, 0) < 0 && errno != ENOENT) {
+ if (r == 0)
+ r = -errno;
+ unit_file_changes_add(changes, n_changes, -errno, p, NULL);
+ continue;
+ }
- (void) rmdir_parents(p, config_path);
+ (void) rmdir_parents(p, config_path);
+ }
unit_file_changes_add(changes, n_changes, UNIT_FILE_UNLINK, p, NULL);
@@ -621,7 +624,7 @@ static int remove_marked_symlinks_fd(
q = mark_symlink_for_removal(&remove_symlinks_to, rp ?: p);
if (q < 0)
return q;
- if (q > 0)
+ if (q > 0 && !dry_run)
*restart = true;
}
}
@@ -633,6 +636,7 @@ static int remove_marked_symlinks(
Set *remove_symlinks_to,
const char *config_path,
const LookupPaths *lp,
+ bool dry_run,
UnitFileChange **changes,
unsigned *n_changes) {
@@ -659,7 +663,7 @@ static int remove_marked_symlinks(
return -errno;
/* This takes possession of cfd and closes it */
- q = remove_marked_symlinks_fd(remove_symlinks_to, cfd, config_path, config_path, lp, &restart, changes, n_changes);
+ q = remove_marked_symlinks_fd(remove_symlinks_to, cfd, config_path, config_path, lp, dry_run, &restart, changes, n_changes);
if (r == 0)
r = q;
} while (restart);
@@ -1805,10 +1809,9 @@ static int install_context_mark_for_removal(
int unit_file_mask(
UnitFileScope scope,
- bool runtime,
+ UnitFileFlags flags,
const char *root_dir,
char **files,
- bool force,
UnitFileChange **changes,
unsigned *n_changes) {
@@ -1824,7 +1827,7 @@ int unit_file_mask(
if (r < 0)
return r;
- config_path = runtime ? paths.runtime_config : paths.persistent_config;
+ config_path = (flags & UNIT_FILE_RUNTIME) ? paths.runtime_config : paths.persistent_config;
STRV_FOREACH(i, files) {
_cleanup_free_ char *path = NULL;
@@ -1840,7 +1843,7 @@ int unit_file_mask(
if (!path)
return -ENOMEM;
- q = create_symlink(&paths, "/dev/null", path, force, changes, n_changes);
+ q = create_symlink(&paths, "/dev/null", path, !!(flags & UNIT_FILE_FORCE), changes, n_changes);
if (q < 0 && r >= 0)
r = q;
}
@@ -1850,7 +1853,7 @@ int unit_file_mask(
int unit_file_unmask(
UnitFileScope scope,
- bool runtime,
+ UnitFileFlags flags,
const char *root_dir,
char **files,
UnitFileChange **changes,
@@ -1862,6 +1865,7 @@ int unit_file_unmask(
size_t n_todo = 0, n_allocated = 0;
const char *config_path;
char **i;
+ bool dry_run;
int r, q;
assert(scope >= 0);
@@ -1871,7 +1875,8 @@ int unit_file_unmask(
if (r < 0)
return r;
- config_path = runtime ? paths.runtime_config : paths.persistent_config;
+ config_path = (flags & UNIT_FILE_RUNTIME) ? paths.runtime_config : paths.persistent_config;
+ dry_run = !!(flags & UNIT_FILE_DRY_RUN);
STRV_FOREACH(i, files) {
_cleanup_free_ char *path = NULL;
@@ -1908,7 +1913,7 @@ int unit_file_unmask(
if (!path)
return -ENOMEM;
- if (unlink(path) < 0) {
+ if (!dry_run && unlink(path) < 0) {
if (errno != ENOENT) {
if (r >= 0)
r = -errno;
@@ -1926,7 +1931,7 @@ int unit_file_unmask(
return q;
}
- q = remove_marked_symlinks(remove_symlinks_to, config_path, &paths, changes, n_changes);
+ q = remove_marked_symlinks(remove_symlinks_to, config_path, &paths, dry_run, changes, n_changes);
if (r >= 0)
r = q;
@@ -1935,10 +1940,9 @@ int unit_file_unmask(
int unit_file_link(
UnitFileScope scope,
- bool runtime,
+ UnitFileFlags flags,
const char *root_dir,
char **files,
- bool force,
UnitFileChange **changes,
unsigned *n_changes) {
@@ -1956,7 +1960,7 @@ int unit_file_link(
if (r < 0)
return r;
- config_path = runtime ? paths.runtime_config : paths.persistent_config;
+ config_path = (flags & UNIT_FILE_RUNTIME) ? paths.runtime_config : paths.persistent_config;
STRV_FOREACH(i, files) {
_cleanup_free_ char *full = NULL;
@@ -2005,7 +2009,7 @@ int unit_file_link(
if (!new_path)
return -ENOMEM;
- q = create_symlink(&paths, *i, new_path, force, changes, n_changes);
+ q = create_symlink(&paths, *i, new_path, !!(flags & UNIT_FILE_FORCE), changes, n_changes);
if (q < 0 && r >= 0)
r = q;
}
@@ -2177,11 +2181,11 @@ int unit_file_revert(
return q;
}
- q = remove_marked_symlinks(remove_symlinks_to, paths.runtime_config, &paths, changes, n_changes);
+ q = remove_marked_symlinks(remove_symlinks_to, paths.runtime_config, &paths, false, changes, n_changes);
if (r >= 0)
r = q;
- q = remove_marked_symlinks(remove_symlinks_to, paths.persistent_config, &paths, changes, n_changes);
+ q = remove_marked_symlinks(remove_symlinks_to, paths.persistent_config, &paths, false, changes, n_changes);
if (r >= 0)
r = q;
@@ -2190,12 +2194,11 @@ int unit_file_revert(
int unit_file_add_dependency(
UnitFileScope scope,
- bool runtime,
+ UnitFileFlags flags,
const char *root_dir,
char **files,
const char *target,
UnitDependency dep,
- bool force,
UnitFileChange **changes,
unsigned *n_changes) {
@@ -2220,7 +2223,7 @@ int unit_file_add_dependency(
if (r < 0)
return r;
- config_path = runtime ? paths.runtime_config : paths.persistent_config;
+ config_path = (flags & UNIT_FILE_RUNTIME) ? paths.runtime_config : paths.persistent_config;
r = install_info_discover(scope, &c, &paths, target, SEARCH_FOLLOW_CONFIG_SYMLINKS,
&target_info, changes, n_changes);
@@ -2260,15 +2263,14 @@ int unit_file_add_dependency(
return -ENOMEM;
}
- return install_context_apply(scope, &c, &paths, config_path, force, SEARCH_FOLLOW_CONFIG_SYMLINKS, changes, n_changes);
+ return install_context_apply(scope, &c, &paths, config_path, !!(flags & UNIT_FILE_FORCE), SEARCH_FOLLOW_CONFIG_SYMLINKS, changes, n_changes);
}
int unit_file_enable(
UnitFileScope scope,
- bool runtime,
+ UnitFileFlags flags,
const char *root_dir,
char **files,
- bool force,
UnitFileChange **changes,
unsigned *n_changes) {
@@ -2286,7 +2288,7 @@ int unit_file_enable(
if (r < 0)
return r;
- config_path = runtime ? paths.runtime_config : paths.persistent_config;
+ config_path = (flags & UNIT_FILE_RUNTIME) ? paths.runtime_config : paths.persistent_config;
STRV_FOREACH(f, files) {
r = install_info_discover(scope, &c, &paths, *f, SEARCH_LOAD|SEARCH_FOLLOW_CONFIG_SYMLINKS,
@@ -2305,12 +2307,12 @@ int unit_file_enable(
is useful to determine whether the passed files had any
installation data at all. */
- return install_context_apply(scope, &c, &paths, config_path, force, SEARCH_LOAD, changes, n_changes);
+ return install_context_apply(scope, &c, &paths, config_path, !!(flags & UNIT_FILE_FORCE), SEARCH_LOAD, changes, n_changes);
}
int unit_file_disable(
UnitFileScope scope,
- bool runtime,
+ UnitFileFlags flags,
const char *root_dir,
char **files,
UnitFileChange **changes,
@@ -2330,7 +2332,7 @@ int unit_file_disable(
if (r < 0)
return r;
- config_path = runtime ? paths.runtime_config : paths.persistent_config;
+ config_path = (flags & UNIT_FILE_RUNTIME) ? paths.runtime_config : paths.persistent_config;
STRV_FOREACH(i, files) {
if (!unit_name_is_valid(*i, UNIT_NAME_ANY))
@@ -2345,15 +2347,14 @@ int unit_file_disable(
if (r < 0)
return r;
- return remove_marked_symlinks(remove_symlinks_to, config_path, &paths, changes, n_changes);
+ return remove_marked_symlinks(remove_symlinks_to, config_path, &paths, !!(flags & UNIT_FILE_DRY_RUN), changes, n_changes);
}
int unit_file_reenable(
UnitFileScope scope,
- bool runtime,
+ UnitFileFlags flags,
const char *root_dir,
char **files,
- bool force,
UnitFileChange **changes,
unsigned *n_changes) {
@@ -2368,19 +2369,19 @@ int unit_file_reenable(
n[i] = basename(files[i]);
n[i] = NULL;
- r = unit_file_disable(scope, runtime, root_dir, n, changes, n_changes);
+ r = unit_file_disable(scope, flags, root_dir, n, changes, n_changes);
if (r < 0)
return r;
/* But the enable command with the full name */
- return unit_file_enable(scope, runtime, root_dir, files, force, changes, n_changes);
+ return unit_file_enable(scope, flags, root_dir, files, changes, n_changes);
}
int unit_file_set_default(
UnitFileScope scope,
+ UnitFileFlags flags,
const char *root_dir,
const char *name,
- bool force,
UnitFileChange **changes,
unsigned *n_changes) {
@@ -2411,7 +2412,7 @@ int unit_file_set_default(
return r;
new_path = strjoina(paths.persistent_config, "/" SPECIAL_DEFAULT_TARGET);
- return create_symlink(&paths, i->path, new_path, force, changes, n_changes);
+ return create_symlink(&paths, i->path, new_path, !!(flags & UNIT_FILE_FORCE), changes, n_changes);
}
int unit_file_get_default(
@@ -2735,7 +2736,7 @@ static int execute_preset(
if (r < 0)
return r;
- r = remove_marked_symlinks(remove_symlinks_to, config_path, paths, changes, n_changes);
+ r = remove_marked_symlinks(remove_symlinks_to, config_path, paths, false, changes, n_changes);
} else
r = 0;
@@ -2803,11 +2804,10 @@ static int preset_prepare_one(
int unit_file_preset(
UnitFileScope scope,
- bool runtime,
+ UnitFileFlags flags,
const char *root_dir,
char **files,
UnitFilePresetMode mode,
- bool force,
UnitFileChange **changes,
unsigned *n_changes) {
@@ -2826,7 +2826,7 @@ int unit_file_preset(
if (r < 0)
return r;
- config_path = runtime ? paths.runtime_config : paths.persistent_config;
+ config_path = (flags & UNIT_FILE_RUNTIME) ? paths.runtime_config : paths.persistent_config;
r = read_presets(scope, root_dir, &presets);
if (r < 0)
@@ -2838,15 +2838,14 @@ int unit_file_preset(
return r;
}
- return execute_preset(scope, &plus, &minus, &paths, config_path, files, mode, force, changes, n_changes);
+ return execute_preset(scope, &plus, &minus, &paths, config_path, files, mode, !!(flags & UNIT_FILE_FORCE), changes, n_changes);
}
int unit_file_preset_all(
UnitFileScope scope,
- bool runtime,
+ UnitFileFlags flags,
const char *root_dir,
UnitFilePresetMode mode,
- bool force,
UnitFileChange **changes,
unsigned *n_changes) {
@@ -2865,7 +2864,7 @@ int unit_file_preset_all(
if (r < 0)
return r;
- config_path = runtime ? paths.runtime_config : paths.persistent_config;
+ config_path = (flags & UNIT_FILE_RUNTIME) ? paths.runtime_config : paths.persistent_config;
r = read_presets(scope, root_dir, &presets);
if (r < 0)
@@ -2906,7 +2905,7 @@ int unit_file_preset_all(
}
}
- return execute_preset(scope, &plus, &minus, &paths, config_path, NULL, mode, force, changes, n_changes);
+ return execute_preset(scope, &plus, &minus, &paths, config_path, NULL, mode, !!(flags & UNIT_FILE_FORCE), changes, n_changes);
}
static void unit_file_list_free_one(UnitFileList *f) {
diff --git a/src/shared/install.h b/src/shared/install.h
index b1f220693b..7a5859e729 100644
--- a/src/shared/install.h
+++ b/src/shared/install.h
@@ -23,6 +23,7 @@ typedef enum UnitFileScope UnitFileScope;
typedef enum UnitFileState UnitFileState;
typedef enum UnitFilePresetMode UnitFilePresetMode;
typedef enum UnitFileChangeType UnitFileChangeType;
+typedef enum UnitFileFlags UnitFileFlags;
typedef enum UnitFileType UnitFileType;
typedef struct UnitFileChange UnitFileChange;
typedef struct UnitFileList UnitFileList;
@@ -78,6 +79,12 @@ enum UnitFileChangeType {
_UNIT_FILE_CHANGE_INVALID = INT_MIN
};
+enum UnitFileFlags {
+ UNIT_FILE_RUNTIME = 1,
+ UNIT_FILE_FORCE = 1 << 1,
+ UNIT_FILE_DRY_RUN = 1 << 2,
+};
+
/* type can either one of the UnitFileChangeTypes listed above, or a negative error.
* If source is specified, it should be the contents of the path symlink.
* In case of an error, source should be the existing symlink contents or NULL
@@ -144,65 +151,59 @@ bool unit_type_may_template(UnitType type) _const_;
int unit_file_enable(
UnitFileScope scope,
- bool runtime,
+ UnitFileFlags flags,
const char *root_dir,
char **files,
- bool force,
UnitFileChange **changes,
unsigned *n_changes);
int unit_file_disable(
UnitFileScope scope,
- bool runtime,
+ UnitFileFlags flags,
const char *root_dir,
char **files,
UnitFileChange **changes,
unsigned *n_changes);
int unit_file_reenable(
UnitFileScope scope,
- bool runtime,
+ UnitFileFlags flags,
const char *root_dir,
char **files,
- bool force,
UnitFileChange **changes,
unsigned *n_changes);
int unit_file_preset(
UnitFileScope scope,
- bool runtime,
+ UnitFileFlags flags,
const char *root_dir,
char **files,
UnitFilePresetMode mode,
- bool force,
UnitFileChange **changes,
unsigned *n_changes);
int unit_file_preset_all(
UnitFileScope scope,
- bool runtime,
+ UnitFileFlags flags,
const char *root_dir,
UnitFilePresetMode mode,
- bool force,
UnitFileChange **changes,
unsigned *n_changes);
int unit_file_mask(
UnitFileScope scope,
- bool runtime,
+ UnitFileFlags flags,
const char *root_dir,
char **files,
- bool force,
UnitFileChange **changes,
unsigned *n_changes);
int unit_file_unmask(
UnitFileScope scope,
- bool runtime,
+ UnitFileFlags flags,
const char *root_dir,
char **files,
UnitFileChange **changes,
unsigned *n_changes);
int unit_file_link(
UnitFileScope scope,
- bool runtime,
+ UnitFileFlags flags,
const char *root_dir,
char **files,
- bool force,
UnitFileChange **changes,
unsigned *n_changes);
int unit_file_revert(
@@ -213,9 +214,9 @@ int unit_file_revert(
unsigned *n_changes);
int unit_file_set_default(
UnitFileScope scope,
+ UnitFileFlags flags,
const char *root_dir,
const char *file,
- bool force,
UnitFileChange **changes,
unsigned *n_changes);
int unit_file_get_default(
@@ -224,12 +225,11 @@ int unit_file_get_default(
char **name);
int unit_file_add_dependency(
UnitFileScope scope,
- bool runtime,
+ UnitFileFlags flags,
const char *root_dir,
char **files,
const char *target,
UnitDependency dep,
- bool force,
UnitFileChange **changes,
unsigned *n_changes);
diff --git a/src/shared/seccomp-util.c b/src/shared/seccomp-util.c
index 8116c7671f..c9b24f1065 100644
--- a/src/shared/seccomp-util.c
+++ b/src/shared/seccomp-util.c
@@ -26,25 +26,52 @@
#include "macro.h"
#include "seccomp-util.h"
#include "string-util.h"
+#include "util.h"
const char* seccomp_arch_to_string(uint32_t c) {
+ /* Maintain order used in <seccomp.h>.
+ *
+ * Names used here should be the same as those used for ConditionArchitecture=,
+ * except for "subarchitectures" like x32. */
- if (c == SCMP_ARCH_NATIVE)
+ switch(c) {
+ case SCMP_ARCH_NATIVE:
return "native";
- if (c == SCMP_ARCH_X86)
+ case SCMP_ARCH_X86:
return "x86";
- if (c == SCMP_ARCH_X86_64)
+ case SCMP_ARCH_X86_64:
return "x86-64";
- if (c == SCMP_ARCH_X32)
+ case SCMP_ARCH_X32:
return "x32";
- if (c == SCMP_ARCH_ARM)
+ case SCMP_ARCH_ARM:
return "arm";
- if (c == SCMP_ARCH_S390)
+ case SCMP_ARCH_AARCH64:
+ return "arm64";
+ case SCMP_ARCH_MIPS:
+ return "mips";
+ case SCMP_ARCH_MIPS64:
+ return "mips64";
+ case SCMP_ARCH_MIPS64N32:
+ return "mips64-n32";
+ case SCMP_ARCH_MIPSEL:
+ return "mips-le";
+ case SCMP_ARCH_MIPSEL64:
+ return "mips64-le";
+ case SCMP_ARCH_MIPSEL64N32:
+ return "mips64-le-n32";
+ case SCMP_ARCH_PPC:
+ return "ppc";
+ case SCMP_ARCH_PPC64:
+ return "ppc64";
+ case SCMP_ARCH_PPC64LE:
+ return "ppc64-le";
+ case SCMP_ARCH_S390:
return "s390";
- if (c == SCMP_ARCH_S390X)
+ case SCMP_ARCH_S390X:
return "s390x";
-
- return NULL;
+ default:
+ return NULL;
+ }
}
int seccomp_arch_from_string(const char *n, uint32_t *ret) {
@@ -63,6 +90,26 @@ int seccomp_arch_from_string(const char *n, uint32_t *ret) {
*ret = SCMP_ARCH_X32;
else if (streq(n, "arm"))
*ret = SCMP_ARCH_ARM;
+ else if (streq(n, "arm64"))
+ *ret = SCMP_ARCH_AARCH64;
+ else if (streq(n, "mips"))
+ *ret = SCMP_ARCH_MIPS;
+ else if (streq(n, "mips64"))
+ *ret = SCMP_ARCH_MIPS64;
+ else if (streq(n, "mips64-n32"))
+ *ret = SCMP_ARCH_MIPS64N32;
+ else if (streq(n, "mips-le"))
+ *ret = SCMP_ARCH_MIPSEL;
+ else if (streq(n, "mips64-le"))
+ *ret = SCMP_ARCH_MIPSEL64;
+ else if (streq(n, "mips64-le-n32"))
+ *ret = SCMP_ARCH_MIPSEL64N32;
+ else if (streq(n, "ppc"))
+ *ret = SCMP_ARCH_PPC;
+ else if (streq(n, "ppc64"))
+ *ret = SCMP_ARCH_PPC64;
+ else if (streq(n, "ppc64-le"))
+ *ret = SCMP_ARCH_PPC64LE;
else if (streq(n, "s390"))
*ret = SCMP_ARCH_S390;
else if (streq(n, "s390x"))
@@ -73,44 +120,81 @@ int seccomp_arch_from_string(const char *n, uint32_t *ret) {
return 0;
}
-int seccomp_add_secondary_archs(scmp_filter_ctx *c) {
-
-#if defined(__i386__) || defined(__x86_64__)
+int seccomp_init_conservative(scmp_filter_ctx *ret, uint32_t default_action) {
+ scmp_filter_ctx seccomp;
int r;
- /* Add in all possible secondary archs we are aware of that
- * this kernel might support. */
+ /* Much like seccomp_init(), but tries to be a bit more conservative in its defaults: all secondary archs are
+ * added by default, and NNP is turned off. */
- r = seccomp_arch_add(c, SCMP_ARCH_X86);
- if (r < 0 && r != -EEXIST)
- return r;
+ seccomp = seccomp_init(default_action);
+ if (!seccomp)
+ return -ENOMEM;
- r = seccomp_arch_add(c, SCMP_ARCH_X86_64);
- if (r < 0 && r != -EEXIST)
- return r;
+ r = seccomp_add_secondary_archs(seccomp);
+ if (r < 0)
+ goto finish;
- r = seccomp_arch_add(c, SCMP_ARCH_X32);
- if (r < 0 && r != -EEXIST)
- return r;
+ r = seccomp_attr_set(seccomp, SCMP_FLTATR_CTL_NNP, 0);
+ if (r < 0)
+ goto finish;
-#elif defined(__s390__) || defined(__s390x__)
- int r;
+ *ret = seccomp;
+ return 0;
+
+finish:
+ seccomp_release(seccomp);
+ return r;
+}
+
+int seccomp_add_secondary_archs(scmp_filter_ctx ctx) {
/* Add in all possible secondary archs we are aware of that
* this kernel might support. */
- r = seccomp_arch_add(c, SCMP_ARCH_S390);
- if (r < 0 && r != -EEXIST)
- return r;
+ static const int seccomp_arches[] = {
+#if defined(__i386__) || defined(__x86_64__)
+ SCMP_ARCH_X86,
+ SCMP_ARCH_X86_64,
+ SCMP_ARCH_X32,
- r = seccomp_arch_add(c, SCMP_ARCH_S390X);
- if (r < 0 && r != -EEXIST)
- return r;
+#elif defined(__arm__) || defined(__aarch64__)
+ SCMP_ARCH_ARM,
+ SCMP_ARCH_AARCH64,
+
+#elif defined(__arm__) || defined(__aarch64__)
+ SCMP_ARCH_ARM,
+ SCMP_ARCH_AARCH64,
+
+#elif defined(__mips__) || defined(__mips64__)
+ SCMP_ARCH_MIPS,
+ SCMP_ARCH_MIPS64,
+ SCMP_ARCH_MIPS64N32,
+ SCMP_ARCH_MIPSEL,
+ SCMP_ARCH_MIPSEL64,
+ SCMP_ARCH_MIPSEL64N32,
+#elif defined(__powerpc__) || defined(__powerpc64__)
+ SCMP_ARCH_PPC,
+ SCMP_ARCH_PPC64,
+ SCMP_ARCH_PPC64LE,
+
+#elif defined(__s390__) || defined(__s390x__)
+ SCMP_ARCH_S390,
+ SCMP_ARCH_S390X,
#endif
+ };
- return 0;
+ unsigned i;
+ int r;
+ for (i = 0; i < ELEMENTSOF(seccomp_arches); i++) {
+ r = seccomp_arch_add(ctx, seccomp_arches[i]);
+ if (r < 0 && r != -EEXIST)
+ return r;
+ }
+
+ return 0;
}
static bool is_basic_seccomp_available(void) {
@@ -132,28 +216,48 @@ bool is_seccomp_available(void) {
return cached_enabled;
}
-const SystemCallFilterSet syscall_filter_sets[] = {
- {
+const SyscallFilterSet syscall_filter_sets[_SYSCALL_FILTER_SET_MAX] = {
+ [SYSCALL_FILTER_SET_BASIC_IO] = {
+ /* Basic IO */
+ .name = "@basic-io",
+ .value =
+ "close\0"
+ "dup2\0"
+ "dup3\0"
+ "dup\0"
+ "lseek\0"
+ "pread64\0"
+ "preadv\0"
+ "pwrite64\0"
+ "pwritev\0"
+ "read\0"
+ "readv\0"
+ "write\0"
+ "writev\0"
+ },
+ [SYSCALL_FILTER_SET_CLOCK] = {
/* Clock */
- .set_name = "@clock",
+ .name = "@clock",
.value =
"adjtimex\0"
"clock_adjtime\0"
"clock_settime\0"
"settimeofday\0"
"stime\0"
- }, {
+ },
+ [SYSCALL_FILTER_SET_CPU_EMULATION] = {
/* CPU emulation calls */
- .set_name = "@cpu-emulation",
+ .name = "@cpu-emulation",
.value =
"modify_ldt\0"
"subpage_prot\0"
"switch_endian\0"
"vm86\0"
"vm86old\0"
- }, {
+ },
+ [SYSCALL_FILTER_SET_DEBUG] = {
/* Debugging/Performance Monitoring/Tracing */
- .set_name = "@debug",
+ .name = "@debug",
.value =
"lookup_dcookie\0"
"perf_event_open\0"
@@ -161,21 +265,32 @@ const SystemCallFilterSet syscall_filter_sets[] = {
"process_vm_writev\0"
"ptrace\0"
"rtas\0"
+#ifdef __NR_s390_runtime_instr
"s390_runtime_instr\0"
+#endif
"sys_debug_setcontext\0"
- }, {
- /* Default list */
- .set_name = "@default",
+ },
+ [SYSCALL_FILTER_SET_DEFAULT] = {
+ /* Default list: the most basic of operations */
+ .name = "@default",
.value =
+ "clock_getres\0"
+ "clock_gettime\0"
+ "clock_nanosleep\0"
"execve\0"
"exit\0"
"exit_group\0"
"getrlimit\0" /* make sure processes can query stack size and such */
+ "gettimeofday\0"
+ "nanosleep\0"
+ "pause\0"
"rt_sigreturn\0"
"sigreturn\0"
- }, {
+ "time\0"
+ },
+ [SYSCALL_FILTER_SET_IO_EVENT] = {
/* Event loop use */
- .set_name = "@io-event",
+ .name = "@io-event",
.value =
"_newselect\0"
"epoll_create1\0"
@@ -191,10 +306,12 @@ const SystemCallFilterSet syscall_filter_sets[] = {
"ppoll\0"
"pselect6\0"
"select\0"
- }, {
- /* Message queues, SYSV IPC or other IPC: unusual */
- .set_name = "@ipc",
+ },
+ [SYSCALL_FILTER_SET_IPC] = {
+ /* Message queues, SYSV IPC or other IPC */
+ .name = "@ipc",
.value = "ipc\0"
+ "memfd_create\0"
"mq_getsetattr\0"
"mq_notify\0"
"mq_open\0"
@@ -205,6 +322,8 @@ const SystemCallFilterSet syscall_filter_sets[] = {
"msgget\0"
"msgrcv\0"
"msgsnd\0"
+ "pipe2\0"
+ "pipe\0"
"process_vm_readv\0"
"process_vm_writev\0"
"semctl\0"
@@ -215,33 +334,36 @@ const SystemCallFilterSet syscall_filter_sets[] = {
"shmctl\0"
"shmdt\0"
"shmget\0"
- }, {
+ },
+ [SYSCALL_FILTER_SET_KEYRING] = {
/* Keyring */
- .set_name = "@keyring",
+ .name = "@keyring",
.value =
"add_key\0"
"keyctl\0"
"request_key\0"
- }, {
+ },
+ [SYSCALL_FILTER_SET_MODULE] = {
/* Kernel module control */
- .set_name = "@module",
+ .name = "@module",
.value =
"delete_module\0"
"finit_module\0"
"init_module\0"
- }, {
+ },
+ [SYSCALL_FILTER_SET_MOUNT] = {
/* Mounting */
- .set_name = "@mount",
+ .name = "@mount",
.value =
"chroot\0"
"mount\0"
- "oldumount\0"
"pivot_root\0"
"umount2\0"
"umount\0"
- }, {
+ },
+ [SYSCALL_FILTER_SET_NETWORK_IO] = {
/* Network or Unix socket IO, should not be needed if not network facing */
- .set_name = "@network-io",
+ .name = "@network-io",
.value =
"accept4\0"
"accept\0"
@@ -264,9 +386,10 @@ const SystemCallFilterSet syscall_filter_sets[] = {
"socket\0"
"socketcall\0"
"socketpair\0"
- }, {
+ },
+ [SYSCALL_FILTER_SET_OBSOLETE] = {
/* Unusual, obsolete or unimplemented, some unknown even to libseccomp */
- .set_name = "@obsolete",
+ .name = "@obsolete",
.value =
"_sysctl\0"
"afs_syscall\0"
@@ -292,9 +415,10 @@ const SystemCallFilterSet syscall_filter_sets[] = {
"uselib\0"
"ustat\0"
"vserver\0"
- }, {
+ },
+ [SYSCALL_FILTER_SET_PRIVILEGED] = {
/* Nice grab-bag of all system calls which need superuser capabilities */
- .set_name = "@privileged",
+ .name = "@privileged",
.value =
"@clock\0"
"@module\0"
@@ -331,15 +455,15 @@ const SystemCallFilterSet syscall_filter_sets[] = {
"setuid\0"
"swapoff\0"
"swapon\0"
- "sysctl\0"
+ "_sysctl\0"
"vhangup\0"
- }, {
+ },
+ [SYSCALL_FILTER_SET_PROCESS] = {
/* Process control, execution, namespaces */
- .set_name = "@process",
+ .name = "@process",
.value =
"arch_prctl\0"
"clone\0"
- "execve\0"
"execveat\0"
"fork\0"
"kill\0"
@@ -349,19 +473,106 @@ const SystemCallFilterSet syscall_filter_sets[] = {
"tkill\0"
"unshare\0"
"vfork\0"
- }, {
+ },
+ [SYSCALL_FILTER_SET_RAW_IO] = {
/* Raw I/O ports */
- .set_name = "@raw-io",
+ .name = "@raw-io",
.value =
"ioperm\0"
"iopl\0"
"pciconfig_iobase\0"
"pciconfig_read\0"
"pciconfig_write\0"
+#ifdef __NR_s390_pci_mmio_read
"s390_pci_mmio_read\0"
+#endif
+#ifdef __NR_s390_pci_mmio_write
"s390_pci_mmio_write\0"
- }, {
- .set_name = NULL,
- .value = NULL
- }
+#endif
+ },
+ [SYSCALL_FILTER_SET_RESOURCES] = {
+ /* Alter resource settings */
+ .name = "@resources",
+ .value =
+ "sched_setparam\0"
+ "sched_setscheduler\0"
+ "sched_setaffinity\0"
+ "setpriority\0"
+ "setrlimit\0"
+ "set_mempolicy\0"
+ "migrate_pages\0"
+ "move_pages\0"
+ "mbind\0"
+ "sched_setattr\0"
+ "prlimit64\0"
+ },
};
+
+const SyscallFilterSet *syscall_filter_set_find(const char *name) {
+ unsigned i;
+
+ if (isempty(name) || name[0] != '@')
+ return NULL;
+
+ for (i = 0; i < _SYSCALL_FILTER_SET_MAX; i++)
+ if (streq(syscall_filter_sets[i].name, name))
+ return syscall_filter_sets + i;
+
+ return NULL;
+}
+
+int seccomp_add_syscall_filter_set(scmp_filter_ctx seccomp, const SyscallFilterSet *set, uint32_t action) {
+ const char *sys;
+ int r;
+
+ assert(seccomp);
+ assert(set);
+
+ NULSTR_FOREACH(sys, set->value) {
+ int id;
+
+ if (sys[0] == '@') {
+ const SyscallFilterSet *other;
+
+ other = syscall_filter_set_find(sys);
+ if (!other)
+ return -EINVAL;
+
+ r = seccomp_add_syscall_filter_set(seccomp, other, action);
+ } else {
+ id = seccomp_syscall_resolve_name(sys);
+ if (id == __NR_SCMP_ERROR)
+ return -EINVAL;
+
+ r = seccomp_rule_add(seccomp, action, id, 0);
+ }
+ if (r < 0)
+ return r;
+ }
+
+ return 0;
+}
+
+int seccomp_load_filter_set(uint32_t default_action, const SyscallFilterSet *set, uint32_t action) {
+ scmp_filter_ctx seccomp;
+ int r;
+
+ assert(set);
+
+ /* The one-stop solution: allocate a seccomp object, add a filter to it, and apply it */
+
+ r = seccomp_init_conservative(&seccomp, default_action);
+ if (r < 0)
+ return r;
+
+ r = seccomp_add_syscall_filter_set(seccomp, set, action);
+ if (r < 0)
+ goto finish;
+
+ r = seccomp_load(seccomp);
+
+finish:
+ seccomp_release(seccomp);
+ return r;
+
+}
diff --git a/src/shared/seccomp-util.h b/src/shared/seccomp-util.h
index cca7c17912..8e209efef2 100644
--- a/src/shared/seccomp-util.h
+++ b/src/shared/seccomp-util.h
@@ -20,18 +20,47 @@
***/
#include <seccomp.h>
+#include <stdbool.h>
#include <stdint.h>
const char* seccomp_arch_to_string(uint32_t c);
int seccomp_arch_from_string(const char *n, uint32_t *ret);
-int seccomp_add_secondary_archs(scmp_filter_ctx *c);
+int seccomp_init_conservative(scmp_filter_ctx *ret, uint32_t default_action);
+
+int seccomp_add_secondary_archs(scmp_filter_ctx c);
bool is_seccomp_available(void);
-typedef struct SystemCallFilterSet {
- const char *set_name;
+typedef struct SyscallFilterSet {
+ const char *name;
const char *value;
-} SystemCallFilterSet;
+} SyscallFilterSet;
+
+enum {
+ SYSCALL_FILTER_SET_BASIC_IO,
+ SYSCALL_FILTER_SET_CLOCK,
+ SYSCALL_FILTER_SET_CPU_EMULATION,
+ SYSCALL_FILTER_SET_DEBUG,
+ SYSCALL_FILTER_SET_DEFAULT,
+ SYSCALL_FILTER_SET_IO_EVENT,
+ SYSCALL_FILTER_SET_IPC,
+ SYSCALL_FILTER_SET_KEYRING,
+ SYSCALL_FILTER_SET_MODULE,
+ SYSCALL_FILTER_SET_MOUNT,
+ SYSCALL_FILTER_SET_NETWORK_IO,
+ SYSCALL_FILTER_SET_OBSOLETE,
+ SYSCALL_FILTER_SET_PRIVILEGED,
+ SYSCALL_FILTER_SET_PROCESS,
+ SYSCALL_FILTER_SET_RAW_IO,
+ SYSCALL_FILTER_SET_RESOURCES,
+ _SYSCALL_FILTER_SET_MAX
+};
+
+extern const SyscallFilterSet syscall_filter_sets[];
+
+const SyscallFilterSet *syscall_filter_set_find(const char *name);
+
+int seccomp_add_syscall_filter_set(scmp_filter_ctx seccomp, const SyscallFilterSet *set, uint32_t action);
-extern const SystemCallFilterSet syscall_filter_sets[];
+int seccomp_load_filter_set(uint32_t default_action, const SyscallFilterSet *set, uint32_t action);
diff --git a/src/shared/switch-root.c b/src/shared/switch-root.c
index 47d3a5a1fa..4eff4f692e 100644
--- a/src/shared/switch-root.c
+++ b/src/shared/switch-root.c
@@ -75,17 +75,29 @@ int switch_root(const char *new_root, const char *oldroot, bool detach_oldroot,
NULSTR_FOREACH(i, move_mounts) {
char new_mount[PATH_MAX];
struct stat sb;
+ size_t n;
- xsprintf(new_mount, "%s%s", new_root, i);
+ n = snprintf(new_mount, sizeof new_mount, "%s%s", new_root, i);
+ if (n >= sizeof new_mount) {
+ bool move = mountflags & MS_MOVE;
+
+ log_warning("New path is too long, %s: %s%s",
+ move ? "forcing unmount instead" : "ignoring",
+ new_root, i);
+
+ if (move)
+ if (umount2(i, MNT_FORCE) < 0)
+ log_warning_errno(errno, "Failed to unmount %s: %m", i);
+ continue;
+ }
mkdir_p_label(new_mount, 0755);
- if ((stat(new_mount, &sb) < 0) ||
+ if (stat(new_mount, &sb) < 0 ||
sb.st_dev != new_root_stat.st_dev) {
/* Mount point seems to be mounted already or
- * stat failed. Unmount the old mount
- * point. */
+ * stat failed. Unmount the old mount point. */
if (umount2(i, MNT_DETACH) < 0)
log_warning_errno(errno, "Failed to unmount %s: %m", i);
continue;
@@ -97,10 +109,9 @@ int switch_root(const char *new_root, const char *oldroot, bool detach_oldroot,
if (umount2(i, MNT_FORCE) < 0)
log_warning_errno(errno, "Failed to unmount %s: %m", i);
- }
- if (mountflags & MS_BIND)
- log_error_errno(errno, "Failed to bind mount %s to %s: %m", i, new_mount);
+ } else if (mountflags & MS_BIND)
+ log_error_errno(errno, "Failed to bind mount %s to %s: %m", i, new_mount);
}
}
diff --git a/src/sysctl/sysctl.c b/src/sysctl/sysctl.c
index fbc1e0eb1a..b3587e249d 100644
--- a/src/sysctl/sysctl.c
+++ b/src/sysctl/sysctl.c
@@ -51,19 +51,46 @@ static int apply_all(OrderedHashmap *sysctl_options) {
k = sysctl_write(property, value);
if (k < 0) {
- log_full_errno(k == -ENOENT ? LOG_INFO : LOG_WARNING, k,
- "Couldn't write '%s' to '%s', ignoring: %m", value, property);
-
- if (r == 0 && k != -ENOENT)
- r = k;
+ /* If the sysctl is not available in the kernel or we are running with reduced privileges and
+ * cannot write it, then log about the issue at LOG_NOTICE level, and proceed without
+ * failing. (EROFS is treated as a permission problem here, since that's how container managers
+ * usually protected their sysctls.) In all other cases log an error and make the tool fail. */
+
+ if (IN_SET(k, -EPERM, -EACCES, -EROFS, -ENOENT))
+ log_notice_errno(k, "Couldn't write '%s' to '%s', ignoring: %m", value, property);
+ else {
+ log_error_errno(k, "Couldn't write '%s' to '%s': %m", value, property);
+ if (r == 0)
+ r = k;
+ }
}
}
return r;
}
+static bool test_prefix(const char *p) {
+ char **i;
+
+ if (strv_isempty(arg_prefixes))
+ return true;
+
+ STRV_FOREACH(i, arg_prefixes) {
+ const char *t;
+
+ t = path_startswith(*i, "/proc/sys/");
+ if (!t)
+ t = *i;
+ if (path_startswith(p, t))
+ return true;
+ }
+
+ return false;
+}
+
static int parse_file(OrderedHashmap *sysctl_options, const char *path, bool ignore_enoent) {
_cleanup_fclose_ FILE *f = NULL;
+ unsigned c = 0;
int r;
assert(path);
@@ -77,7 +104,7 @@ static int parse_file(OrderedHashmap *sysctl_options, const char *path, bool ign
}
log_debug("Parsing %s", path);
- while (!feof(f)) {
+ for (;;) {
char l[LINE_MAX], *p, *value, *new_value, *property, *existing;
void *v;
int k;
@@ -89,6 +116,8 @@ static int parse_file(OrderedHashmap *sysctl_options, const char *path, bool ign
return log_error_errno(errno, "Failed to read file '%s', ignoring: %m", path);
}
+ c++;
+
p = strstrip(l);
if (!*p)
continue;
@@ -98,7 +127,7 @@ static int parse_file(OrderedHashmap *sysctl_options, const char *path, bool ign
value = strchr(p, '=');
if (!value) {
- log_error("Line is not an assignment in file '%s': %s", path, value);
+ log_error("Line is not an assignment at '%s:%u': %s", path, c, value);
if (r == 0)
r = -EINVAL;
@@ -111,26 +140,15 @@ static int parse_file(OrderedHashmap *sysctl_options, const char *path, bool ign
p = sysctl_normalize(strstrip(p));
value = strstrip(value);
- if (!strv_isempty(arg_prefixes)) {
- char **i, *t;
- STRV_FOREACH(i, arg_prefixes) {
- t = path_startswith(*i, "/proc/sys/");
- if (t == NULL)
- t = *i;
- if (path_startswith(p, t))
- goto found;
- }
- /* not found */
+ if (!test_prefix(p))
continue;
- }
-found:
existing = ordered_hashmap_get2(sysctl_options, p, &v);
if (existing) {
if (streq(value, existing))
continue;
- log_debug("Overwriting earlier assignment of %s in file '%s'.", p, path);
+ log_debug("Overwriting earlier assignment of %s at '%s:%u'.", p, path, c);
free(ordered_hashmap_remove(sysctl_options, p));
free(v);
}
@@ -229,12 +247,12 @@ static int parse_argv(int argc, char *argv[]) {
}
int main(int argc, char *argv[]) {
+ OrderedHashmap *sysctl_options = NULL;
int r = 0, k;
- OrderedHashmap *sysctl_options;
r = parse_argv(argc, argv);
if (r <= 0)
- return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;
+ goto finish;
log_set_target(LOG_TARGET_AUTO);
log_parse_environment();
diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
index 2f20a250c2..9e723b0261 100644
--- a/src/systemctl/systemctl.c
+++ b/src/systemctl/systemctl.c
@@ -189,6 +189,11 @@ typedef enum BusFocus {
static sd_bus *busses[_BUS_FOCUS_MAX] = {};
+static UnitFileFlags args_to_flags(void) {
+ return (arg_runtime ? UNIT_FILE_RUNTIME : 0) |
+ (arg_force ? UNIT_FILE_FORCE : 0);
+}
+
static int acquire_bus(BusFocus focus, sd_bus **ret) {
int r;
@@ -405,23 +410,24 @@ static bool output_show_unit(const UnitInfo *u, char **patterns) {
}
static int output_units_list(const UnitInfo *unit_infos, unsigned c) {
- unsigned circle_len = 0, id_len, max_id_len, load_len, active_len, sub_len, job_len;
+ unsigned circle_len = 0, id_len, max_id_len, load_len, active_len, sub_len, job_len, desc_len, max_desc_len;
const UnitInfo *u;
unsigned n_shown = 0;
- int job_count = 0, desc_len;
+ int job_count = 0;
max_id_len = strlen("UNIT");
load_len = strlen("LOAD");
active_len = strlen("ACTIVE");
sub_len = strlen("SUB");
job_len = strlen("JOB");
- desc_len = 0;
+ max_desc_len = strlen("DESCRIPTION");
for (u = unit_infos; u < unit_infos + c; u++) {
max_id_len = MAX(max_id_len, strlen(u->id) + (u->machine ? strlen(u->machine)+1 : 0));
load_len = MAX(load_len, strlen(u->load_state));
active_len = MAX(active_len, strlen(u->active_state));
sub_len = MAX(sub_len, strlen(u->sub_state));
+ max_desc_len = MAX(max_desc_len, strlen(u->description));
if (u->job_id != 0) {
job_len = MAX(job_len, strlen(u->job_type));
@@ -437,7 +443,7 @@ static int output_units_list(const UnitInfo *unit_infos, unsigned c) {
if (!arg_full && original_stdout_is_tty) {
unsigned basic_len;
- id_len = MIN(max_id_len, 25u);
+ id_len = MIN(max_id_len, 25u); /* as much as it needs, but at most 25 for now */
basic_len = circle_len + 5 + id_len + 5 + active_len + sub_len;
if (job_count)
@@ -450,19 +456,21 @@ static int output_units_list(const UnitInfo *unit_infos, unsigned c) {
/* Either UNIT already got 25, or is fully satisfied.
* Grant up to 25 to DESC now. */
incr = MIN(extra_len, 25u);
- desc_len += incr;
+ desc_len = incr;
extra_len -= incr;
- /* split the remaining space between UNIT and DESC,
- * but do not give UNIT more than it needs. */
+ /* Of the remainder give as much as the ID needs to the ID, and give the rest to the
+ * description but not more than it needs. */
if (extra_len > 0) {
- incr = MIN(extra_len / 2, max_id_len - id_len);
+ incr = MIN(max_id_len - id_len, extra_len);
id_len += incr;
- desc_len += extra_len - incr;
+ desc_len += MIN(extra_len - incr, max_desc_len - desc_len);
}
}
- } else
+ } else {
id_len = max_id_len;
+ desc_len = max_desc_len;
+ }
for (u = unit_infos; u < unit_infos + c; u++) {
_cleanup_free_ char *e = NULL, *j = NULL;
@@ -488,8 +496,9 @@ static int output_units_list(const UnitInfo *unit_infos, unsigned c) {
if (job_count)
printf("%-*s ", job_len, "JOB");
- printf("%.*s%s\n",
- !arg_full && arg_no_pager ? desc_len : -1,
+ printf("%-*.*s%s\n",
+ desc_len,
+ !arg_full && arg_no_pager ? (int) desc_len : -1,
"DESCRIPTION",
ansi_normal());
}
@@ -508,13 +517,13 @@ static int output_units_list(const UnitInfo *unit_infos, unsigned c) {
off_circle = ansi_normal();
circle = true;
on_loaded = underline ? ansi_highlight_red_underline() : ansi_highlight_red();
- off_loaded = on_underline;
+ off_loaded = underline ? on_underline : ansi_normal();
} else if (streq(u->active_state, "failed") && !arg_plain) {
on_circle = ansi_highlight_red();
off_circle = ansi_normal();
circle = true;
on_active = underline ? ansi_highlight_red_underline() : ansi_highlight_red();
- off_active = on_underline;
+ off_active = underline ? on_underline : ansi_normal();
}
if (u->machine) {
@@ -545,8 +554,9 @@ static int output_units_list(const UnitInfo *unit_infos, unsigned c) {
sub_len, u->sub_state, off_active,
job_count ? job_len + 1 : 0, u->job_id ? u->job_type : "");
- printf("%.*s%s\n",
- desc_len > 0 ? desc_len : -1,
+ printf("%-*.*s%s\n",
+ desc_len,
+ !arg_full && arg_no_pager ? (int) desc_len : -1,
u->description,
off_underline);
}
@@ -2137,7 +2147,7 @@ static int set_default(int argc, char *argv[], void *userdata) {
return log_error_errno(r, "Failed to mangle unit name: %m");
if (install_client_side()) {
- r = unit_file_set_default(arg_scope, arg_root, unit, true, &changes, &n_changes);
+ r = unit_file_set_default(arg_scope, UNIT_FILE_FORCE, arg_root, unit, &changes, &n_changes);
unit_file_dump_changes(r, "set default", changes, n_changes, arg_quiet);
if (r > 0)
@@ -2716,7 +2726,7 @@ typedef struct {
static void wait_context_free(WaitContext *c) {
c->match = sd_bus_slot_unref(c->match);
c->event = sd_event_unref(c->event);
- c->unit_paths = set_free(c->unit_paths);
+ c->unit_paths = set_free_free(c->unit_paths);
}
static int on_properties_changed(sd_bus_message *m, void *userdata, sd_bus_error *error) {
@@ -2733,31 +2743,37 @@ static int on_properties_changed(sd_bus_message *m, void *userdata, sd_bus_error
r = sd_bus_message_skip(m, "s");
if (r < 0)
return bus_log_parse_error(r);
+
r = sd_bus_message_enter_container(m, SD_BUS_TYPE_ARRAY, "{sv}");
if (r < 0)
return bus_log_parse_error(r);
while ((r = sd_bus_message_enter_container(m, SD_BUS_TYPE_DICT_ENTRY, "sv")) > 0) {
const char *s;
- bool is_failed;
r = sd_bus_message_read(m, "s", &s);
if (r < 0)
return bus_log_parse_error(r);
+
if (streq(s, "ActiveState")) {
+ bool is_failed;
+
r = sd_bus_message_enter_container(m, SD_BUS_TYPE_VARIANT, "s");
if (r < 0)
return bus_log_parse_error(r);
+
r = sd_bus_message_read(m, "s", &s);
if (r < 0)
return bus_log_parse_error(r);
+
is_failed = streq(s, "failed");
if (streq(s, "inactive") || is_failed) {
log_debug("%s became %s, dropping from --wait tracking", path, s);
- set_remove(c->unit_paths, path);
- c->any_failed |= is_failed;
+ free(set_remove(c->unit_paths, path));
+ c->any_failed = c->any_failed || is_failed;
} else
log_debug("ActiveState on %s changed to %s", path, s);
+
break; /* no need to dissect the rest of the message */
} else {
/* other property */
@@ -5261,6 +5277,20 @@ static int cat(int argc, char *argv[], void *userdata) {
else
puts("");
+ if (need_daemon_reload(bus, *name) > 0) /* ignore errors (<0), this is informational output */
+ fprintf(stderr,
+ "%s# Warning: %s changed on disk, the version systemd has loaded is outdated.\n"
+ "%s# This output shows the current version of the unit's original fragment and drop-in files.\n"
+ "%s# If fragments or drop-ins were added or removed, they are not properly reflected in this output.\n"
+ "%s# Run 'systemctl%s daemon-reload' to reload units.%s\n",
+ ansi_highlight_red(),
+ *name,
+ ansi_highlight_red(),
+ ansi_highlight_red(),
+ ansi_highlight_red(),
+ arg_scope == UNIT_FILE_SYSTEM ? "" : " --user",
+ ansi_normal());
+
if (fragment_path) {
r = cat_file(fragment_path, false);
if (r < 0)
@@ -5955,22 +5985,25 @@ static int enable_unit(int argc, char *argv[], void *userdata) {
}
if (install_client_side()) {
+ UnitFileFlags flags;
+
+ flags = args_to_flags();
if (streq(verb, "enable")) {
- r = unit_file_enable(arg_scope, arg_runtime, arg_root, names, arg_force, &changes, &n_changes);
+ r = unit_file_enable(arg_scope, flags, arg_root, names, &changes, &n_changes);
carries_install_info = r;
} else if (streq(verb, "disable"))
- r = unit_file_disable(arg_scope, arg_runtime, arg_root, names, &changes, &n_changes);
+ r = unit_file_disable(arg_scope, flags, arg_root, names, &changes, &n_changes);
else if (streq(verb, "reenable")) {
- r = unit_file_reenable(arg_scope, arg_runtime, arg_root, names, arg_force, &changes, &n_changes);
+ r = unit_file_reenable(arg_scope, flags, arg_root, names, &changes, &n_changes);
carries_install_info = r;
} else if (streq(verb, "link"))
- r = unit_file_link(arg_scope, arg_runtime, arg_root, names, arg_force, &changes, &n_changes);
+ r = unit_file_link(arg_scope, flags, arg_root, names, &changes, &n_changes);
else if (streq(verb, "preset")) {
- r = unit_file_preset(arg_scope, arg_runtime, arg_root, names, arg_preset_mode, arg_force, &changes, &n_changes);
+ r = unit_file_preset(arg_scope, flags, arg_root, names, arg_preset_mode, &changes, &n_changes);
} else if (streq(verb, "mask"))
- r = unit_file_mask(arg_scope, arg_runtime, arg_root, names, arg_force, &changes, &n_changes);
+ r = unit_file_mask(arg_scope, flags, arg_root, names, &changes, &n_changes);
else if (streq(verb, "unmask"))
- r = unit_file_unmask(arg_scope, arg_runtime, arg_root, names, &changes, &n_changes);
+ r = unit_file_unmask(arg_scope, flags, arg_root, names, &changes, &n_changes);
else if (streq(verb, "revert"))
r = unit_file_revert(arg_scope, arg_root, names, &changes, &n_changes);
else
@@ -6152,7 +6185,7 @@ static int add_dependency(int argc, char *argv[], void *userdata) {
assert_not_reached("Unknown verb");
if (install_client_side()) {
- r = unit_file_add_dependency(arg_scope, arg_runtime, arg_root, names, target, dep, arg_force, &changes, &n_changes);
+ r = unit_file_add_dependency(arg_scope, args_to_flags(), arg_root, names, target, dep, &changes, &n_changes);
unit_file_dump_changes(r, "add dependency on", changes, n_changes, arg_quiet);
if (r > 0)
@@ -6214,7 +6247,7 @@ static int preset_all(int argc, char *argv[], void *userdata) {
int r;
if (install_client_side()) {
- r = unit_file_preset_all(arg_scope, arg_runtime, arg_root, arg_preset_mode, arg_force, &changes, &n_changes);
+ r = unit_file_preset_all(arg_scope, args_to_flags(), arg_root, arg_preset_mode, &changes, &n_changes);
unit_file_dump_changes(r, "preset", changes, n_changes, arg_quiet);
if (r > 0)
@@ -6263,6 +6296,63 @@ finish:
return r;
}
+static int show_installation_targets_client_side(const char *name) {
+ UnitFileChange *changes = NULL;
+ unsigned n_changes = 0, i;
+ UnitFileFlags flags;
+ char **p;
+ int r;
+
+ p = STRV_MAKE(name);
+ flags = UNIT_FILE_DRY_RUN |
+ (arg_runtime ? UNIT_FILE_RUNTIME : 0);
+
+ r = unit_file_disable(UNIT_FILE_SYSTEM, flags, NULL, p, &changes, &n_changes);
+ if (r < 0)
+ return log_error_errno(r, "Failed to get file links for %s: %m", name);
+
+ for (i = 0; i < n_changes; i++)
+ if (changes[i].type == UNIT_FILE_UNLINK)
+ printf(" %s\n", changes[i].path);
+
+ return 0;
+}
+
+static int show_installation_targets(sd_bus *bus, const char *name) {
+ _cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL;
+ _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
+ const char *link;
+ int r;
+
+ r = sd_bus_call_method(
+ bus,
+ "org.freedesktop.systemd1",
+ "/org/freedesktop/systemd1",
+ "org.freedesktop.systemd1.Manager",
+ "GetUnitFileLinks",
+ &error,
+ &reply,
+ "sb", name, arg_runtime);
+ if (r < 0)
+ return log_error_errno(r, "Failed to get unit file links for %s: %s", name, bus_error_message(&error, r));
+
+ r = sd_bus_message_enter_container(reply, SD_BUS_TYPE_ARRAY, "s");
+ if (r < 0)
+ return bus_log_parse_error(r);
+
+ while ((r = sd_bus_message_read(reply, "s", &link)) > 0)
+ printf(" %s\n", link);
+
+ if (r < 0)
+ return bus_log_parse_error(r);
+
+ r = sd_bus_message_exit_container(reply);
+ if (r < 0)
+ return bus_log_parse_error(r);
+
+ return 0;
+}
+
static int unit_is_enabled(int argc, char *argv[], void *userdata) {
_cleanup_strv_free_ char **names = NULL;
@@ -6281,7 +6371,6 @@ static int unit_is_enabled(int argc, char *argv[], void *userdata) {
enabled = r > 0;
if (install_client_side()) {
-
STRV_FOREACH(name, names) {
UnitFileState state;
@@ -6297,8 +6386,14 @@ static int unit_is_enabled(int argc, char *argv[], void *userdata) {
UNIT_FILE_GENERATED))
enabled = true;
- if (!arg_quiet)
+ if (!arg_quiet) {
puts(unit_file_state_to_string(state));
+ if (arg_full) {
+ r = show_installation_targets_client_side(*name);
+ if (r < 0)
+ return r;
+ }
+ }
}
r = 0;
@@ -6333,8 +6428,14 @@ static int unit_is_enabled(int argc, char *argv[], void *userdata) {
if (STR_IN_SET(s, "enabled", "enabled-runtime", "static", "indirect", "generated"))
enabled = true;
- if (!arg_quiet)
+ if (!arg_quiet) {
puts(s);
+ if (arg_full) {
+ r = show_installation_targets(bus, *name);
+ if (r < 0)
+ return r;
+ }
+ }
}
}
diff --git a/src/test/test-condition.c b/src/test/test-condition.c
index 6f7d71ef9a..dd985f5863 100644
--- a/src/test/test-condition.c
+++ b/src/test/test-condition.c
@@ -31,6 +31,8 @@
#include "macro.h"
#include "selinux-util.h"
#include "smack-util.h"
+#include "strv.h"
+#include "virt.h"
#include "util.h"
static void test_condition_test_path(void) {
@@ -265,7 +267,64 @@ static void test_condition_test_security(void) {
condition_free(condition);
}
+static void test_condition_test_virtualization(void) {
+ Condition *condition;
+ const char *virt;
+ int r;
+
+ condition = condition_new(CONDITION_VIRTUALIZATION, "garbage oifdsjfoidsjoj", false, false);
+ assert_se(condition);
+ r = condition_test(condition);
+ log_info("ConditionVirtualization=garbage → %i", r);
+ assert_se(r == 0);
+ condition_free(condition);
+
+ condition = condition_new(CONDITION_VIRTUALIZATION, "container", false, false);
+ assert_se(condition);
+ r = condition_test(condition);
+ log_info("ConditionVirtualization=container → %i", r);
+ assert_se(r == !!detect_container());
+ condition_free(condition);
+
+ condition = condition_new(CONDITION_VIRTUALIZATION, "vm", false, false);
+ assert_se(condition);
+ r = condition_test(condition);
+ log_info("ConditionVirtualization=vm → %i", r);
+ assert_se(r == (detect_vm() && !detect_container()));
+ condition_free(condition);
+
+ condition = condition_new(CONDITION_VIRTUALIZATION, "private-users", false, false);
+ assert_se(condition);
+ r = condition_test(condition);
+ log_info("ConditionVirtualization=private-users → %i", r);
+ assert_se(r == !!running_in_userns());
+ condition_free(condition);
+
+ NULSTR_FOREACH(virt,
+ "kvm\0"
+ "qemu\0"
+ "bochs\0"
+ "xen\0"
+ "uml\0"
+ "vmware\0"
+ "oracle\0"
+ "microsoft\0"
+ "zvm\0"
+ "parallels\0"
+ "bhyve\0"
+ "vm_other\0") {
+
+ condition = condition_new(CONDITION_VIRTUALIZATION, virt, false, false);
+ assert_se(condition);
+ r = condition_test(condition);
+ log_info("ConditionVirtualization=%s → %i", virt, r);
+ assert_se(r >= 0);
+ condition_free(condition);
+ }
+}
+
int main(int argc, char *argv[]) {
+ log_set_max_level(LOG_DEBUG);
log_parse_environment();
log_open();
@@ -276,6 +335,7 @@ int main(int argc, char *argv[]) {
test_condition_test_kernel_command_line();
test_condition_test_null();
test_condition_test_security();
+ test_condition_test_virtualization();
return 0;
}
diff --git a/src/test/test-execute.c b/src/test/test-execute.c
index e8ff02adaf..6029853e3e 100644
--- a/src/test/test-execute.c
+++ b/src/test/test-execute.c
@@ -70,6 +70,24 @@ static void check(Manager *m, Unit *unit, int status_expected, int code_expected
assert_se(service->main_exec_status.code == code_expected);
}
+static bool is_inaccessible_available(void) {
+ char *p;
+
+ FOREACH_STRING(p,
+ "/run/systemd/inaccessible/reg",
+ "/run/systemd/inaccessible/dir",
+ "/run/systemd/inaccessible/chr",
+ "/run/systemd/inaccessible/blk",
+ "/run/systemd/inaccessible/fifo",
+ "/run/systemd/inaccessible/sock"
+ ) {
+ if (access(p, F_OK) < 0)
+ return false;
+ }
+
+ return true;
+}
+
static void test(Manager *m, const char *unit_name, int status_expected, int code_expected) {
Unit *unit;
@@ -129,6 +147,11 @@ static void test_exec_privatedevices(Manager *m) {
log_notice("testing in container, skipping private device tests");
return;
}
+ if (!is_inaccessible_available()) {
+ log_notice("testing without inaccessible, skipping private device tests");
+ return;
+ }
+
test(m, "exec-privatedevices-yes.service", 0, CLD_EXITED);
test(m, "exec-privatedevices-no.service", 0, CLD_EXITED);
}
@@ -138,6 +161,11 @@ static void test_exec_privatedevices_capabilities(Manager *m) {
log_notice("testing in container, skipping private device tests");
return;
}
+ if (!is_inaccessible_available()) {
+ log_notice("testing without inaccessible, skipping private device tests");
+ return;
+ }
+
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-yes-capability-sys-rawio.service", 0, CLD_EXITED);
@@ -149,6 +177,10 @@ static void test_exec_protectkernelmodules(Manager *m) {
log_notice("testing in container, skipping protectkernelmodules tests");
return;
}
+ if (!is_inaccessible_available()) {
+ log_notice("testing without inaccessible, skipping protectkernelmodules tests");
+ return;
+ }
test(m, "exec-protectkernelmodules-no-capabilities.service", 0, CLD_EXITED);
test(m, "exec-protectkernelmodules-yes-capabilities.service", 0, CLD_EXITED);
@@ -218,6 +250,21 @@ static void test_exec_group(Manager *m) {
log_error_errno(errno, "Skipping test_exec_group, could not find nobody/nfsnobody group: %m");
}
+static void test_exec_supplementary_groups(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);
+}
+
+static void test_exec_dynamic_user(Manager *m) {
+ test(m, "exec-dynamicuser-fixeduser.service", 0, CLD_EXITED);
+ test(m, "exec-dynamicuser-fixeduser-one-supplementarygroup.service", 0, CLD_EXITED);
+ test(m, "exec-dynamicuser-supplementarygroups.service", 0, CLD_EXITED);
+}
+
static void test_exec_environment(Manager *m) {
test(m, "exec-environment.service", 0, CLD_EXITED);
test(m, "exec-environment-multiple.service", 0, CLD_EXITED);
@@ -390,6 +437,8 @@ int main(int argc, char *argv[]) {
test_exec_systemcallerrornumber,
test_exec_user,
test_exec_group,
+ test_exec_supplementary_groups,
+ test_exec_dynamic_user,
test_exec_environment,
test_exec_environmentfile,
test_exec_passenvironment,
diff --git a/src/test/test-install-root.c b/src/test/test-install-root.c
index 1686054d2a..a98de76b43 100644
--- a/src/test/test-install-root.c
+++ b/src/test/test-install-root.c
@@ -64,7 +64,7 @@ static void test_basic_mask_and_enable(const char *root) {
assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "d.service", NULL) >= 0);
assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "d.service", &state) >= 0 && state == UNIT_FILE_DISABLED);
- assert_se(unit_file_mask(UNIT_FILE_SYSTEM, false, root, STRV_MAKE("a.service"), false, &changes, &n_changes) >= 0);
+ assert_se(unit_file_mask(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("a.service"), &changes, &n_changes) >= 0);
assert_se(n_changes == 1);
assert_se(changes[0].type == UNIT_FILE_SYMLINK);
assert_se(streq(changes[0].source, "/dev/null"));
@@ -80,11 +80,11 @@ static void test_basic_mask_and_enable(const char *root) {
assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "d.service", &state) >= 0 && state == UNIT_FILE_MASKED);
/* Enabling a masked unit should fail! */
- assert_se(unit_file_enable(UNIT_FILE_SYSTEM, false, root, STRV_MAKE("a.service"), false, &changes, &n_changes) == -ERFKILL);
+ assert_se(unit_file_enable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("a.service"), &changes, &n_changes) == -ERFKILL);
unit_file_changes_free(changes, n_changes);
changes = NULL; n_changes = 0;
- assert_se(unit_file_unmask(UNIT_FILE_SYSTEM, false, root, STRV_MAKE("a.service"), &changes, &n_changes) >= 0);
+ assert_se(unit_file_unmask(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("a.service"), &changes, &n_changes) >= 0);
assert_se(n_changes == 1);
assert_se(changes[0].type == UNIT_FILE_UNLINK);
p = strjoina(root, SYSTEM_CONFIG_UNIT_PATH"/a.service");
@@ -92,7 +92,7 @@ static void test_basic_mask_and_enable(const char *root) {
unit_file_changes_free(changes, n_changes);
changes = NULL; n_changes = 0;
- assert_se(unit_file_enable(UNIT_FILE_SYSTEM, false, root, STRV_MAKE("a.service"), false, &changes, &n_changes) == 1);
+ assert_se(unit_file_enable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("a.service"), &changes, &n_changes) == 1);
assert_se(n_changes == 1);
assert_se(changes[0].type == UNIT_FILE_SYMLINK);
assert_se(streq(changes[0].source, "/usr/lib/systemd/system/a.service"));
@@ -107,12 +107,12 @@ static void test_basic_mask_and_enable(const char *root) {
assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "d.service", &state) >= 0 && state == UNIT_FILE_ENABLED);
/* Enabling it again should succeed but be a NOP */
- assert_se(unit_file_enable(UNIT_FILE_SYSTEM, false, root, STRV_MAKE("a.service"), false, &changes, &n_changes) >= 0);
+ assert_se(unit_file_enable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("a.service"), &changes, &n_changes) >= 0);
assert_se(n_changes == 0);
unit_file_changes_free(changes, n_changes);
changes = NULL; n_changes = 0;
- assert_se(unit_file_disable(UNIT_FILE_SYSTEM, false, root, STRV_MAKE("a.service"), &changes, &n_changes) >= 0);
+ assert_se(unit_file_disable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("a.service"), &changes, &n_changes) >= 0);
assert_se(n_changes == 1);
assert_se(changes[0].type == UNIT_FILE_UNLINK);
p = strjoina(root, SYSTEM_CONFIG_UNIT_PATH"/multi-user.target.wants/a.service");
@@ -126,13 +126,13 @@ static void test_basic_mask_and_enable(const char *root) {
assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "d.service", &state) >= 0 && state == UNIT_FILE_DISABLED);
/* Disabling a disabled unit must suceed but be a NOP */
- assert_se(unit_file_disable(UNIT_FILE_SYSTEM, false, root, STRV_MAKE("a.service"), &changes, &n_changes) >= 0);
+ assert_se(unit_file_disable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("a.service"), &changes, &n_changes) >= 0);
assert_se(n_changes == 0);
unit_file_changes_free(changes, n_changes);
changes = NULL; n_changes = 0;
/* Let's enable this indirectly via a symlink */
- assert_se(unit_file_enable(UNIT_FILE_SYSTEM, false, root, STRV_MAKE("d.service"), false, &changes, &n_changes) >= 0);
+ assert_se(unit_file_enable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("d.service"), &changes, &n_changes) >= 0);
assert_se(n_changes == 1);
assert_se(changes[0].type == UNIT_FILE_SYMLINK);
assert_se(streq(changes[0].source, "/usr/lib/systemd/system/a.service"));
@@ -148,7 +148,7 @@ static void test_basic_mask_and_enable(const char *root) {
/* Let's try to reenable */
- assert_se(unit_file_reenable(UNIT_FILE_SYSTEM, false, root, STRV_MAKE("b.service"), false, &changes, &n_changes) >= 0);
+ assert_se(unit_file_reenable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("b.service"), &changes, &n_changes) >= 0);
assert_se(n_changes == 2);
assert_se(changes[0].type == UNIT_FILE_UNLINK);
p = strjoina(root, SYSTEM_CONFIG_UNIT_PATH"/multi-user.target.wants/a.service");
@@ -217,7 +217,7 @@ static void test_linked_units(const char *root) {
assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "linked3.service", &state) >= 0 && state == UNIT_FILE_LINKED);
/* First, let's link the unit into the search path */
- assert_se(unit_file_link(UNIT_FILE_SYSTEM, false, root, STRV_MAKE("/opt/linked.service"), false, &changes, &n_changes) >= 0);
+ assert_se(unit_file_link(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("/opt/linked.service"), &changes, &n_changes) >= 0);
assert_se(n_changes == 1);
assert_se(changes[0].type == UNIT_FILE_SYMLINK);
assert_se(streq(changes[0].source, "/opt/linked.service"));
@@ -229,7 +229,7 @@ static void test_linked_units(const char *root) {
assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "linked.service", &state) >= 0 && state == UNIT_FILE_LINKED);
/* Let's unlink it from the search path again */
- assert_se(unit_file_disable(UNIT_FILE_SYSTEM, false, root, STRV_MAKE("linked.service"), &changes, &n_changes) >= 0);
+ assert_se(unit_file_disable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("linked.service"), &changes, &n_changes) >= 0);
assert_se(n_changes == 1);
assert_se(changes[0].type == UNIT_FILE_UNLINK);
p = strjoina(root, SYSTEM_CONFIG_UNIT_PATH"/linked.service");
@@ -240,7 +240,7 @@ static void test_linked_units(const char *root) {
assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "linked.service", NULL) == -ENOENT);
/* Now, let's not just link it, but also enable it */
- assert_se(unit_file_enable(UNIT_FILE_SYSTEM, false, root, STRV_MAKE("/opt/linked.service"), false, &changes, &n_changes) >= 0);
+ assert_se(unit_file_enable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("/opt/linked.service"), &changes, &n_changes) >= 0);
assert_se(n_changes == 2);
p = strjoina(root, SYSTEM_CONFIG_UNIT_PATH"/multi-user.target.wants/linked.service");
q = strjoina(root, SYSTEM_CONFIG_UNIT_PATH"/linked.service");
@@ -262,7 +262,7 @@ static void test_linked_units(const char *root) {
assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "linked.service", &state) >= 0 && state == UNIT_FILE_ENABLED);
/* And let's unlink it again */
- assert_se(unit_file_disable(UNIT_FILE_SYSTEM, false, root, STRV_MAKE("linked.service"), &changes, &n_changes) >= 0);
+ assert_se(unit_file_disable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("linked.service"), &changes, &n_changes) >= 0);
assert_se(n_changes == 2);
p = strjoina(root, SYSTEM_CONFIG_UNIT_PATH"/multi-user.target.wants/linked.service");
q = strjoina(root, SYSTEM_CONFIG_UNIT_PATH"/linked.service");
@@ -282,7 +282,7 @@ static void test_linked_units(const char *root) {
assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "linked.service", NULL) == -ENOENT);
- assert_se(unit_file_enable(UNIT_FILE_SYSTEM, false, root, STRV_MAKE("linked2.service"), false, &changes, &n_changes) >= 0);
+ assert_se(unit_file_enable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("linked2.service"), &changes, &n_changes) >= 0);
assert_se(n_changes == 2);
p = strjoina(root, SYSTEM_CONFIG_UNIT_PATH"/multi-user.target.wants/linked2.service");
q = strjoina(root, SYSTEM_CONFIG_UNIT_PATH"/linked2.service");
@@ -301,7 +301,7 @@ static void test_linked_units(const char *root) {
unit_file_changes_free(changes, n_changes);
changes = NULL; n_changes = 0;
- assert_se(unit_file_enable(UNIT_FILE_SYSTEM, false, root, STRV_MAKE("linked3.service"), false, &changes, &n_changes) >= 0);
+ assert_se(unit_file_enable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("linked3.service"), &changes, &n_changes) >= 0);
assert_se(n_changes == 1);
assert_se(changes[0].type == UNIT_FILE_SYMLINK);
assert_se(startswith(changes[0].path, root));
@@ -325,7 +325,7 @@ static void test_default(const char *root) {
assert_se(unit_file_get_default(UNIT_FILE_SYSTEM, root, &def) == -ENOENT);
- assert_se(unit_file_set_default(UNIT_FILE_SYSTEM, root, "idontexist.target", false, &changes, &n_changes) == -ENOENT);
+ assert_se(unit_file_set_default(UNIT_FILE_SYSTEM, 0, root, "idontexist.target", &changes, &n_changes) == -ENOENT);
assert_se(n_changes == 1);
assert_se(changes[0].type == -ENOENT);
assert_se(streq_ptr(changes[0].path, "idontexist.target"));
@@ -334,7 +334,7 @@ static void test_default(const char *root) {
assert_se(unit_file_get_default(UNIT_FILE_SYSTEM, root, &def) == -ENOENT);
- assert_se(unit_file_set_default(UNIT_FILE_SYSTEM, root, "test-default.target", false, &changes, &n_changes) >= 0);
+ assert_se(unit_file_set_default(UNIT_FILE_SYSTEM, 0, root, "test-default.target", &changes, &n_changes) >= 0);
assert_se(n_changes == 1);
assert_se(changes[0].type == UNIT_FILE_SYMLINK);
assert_se(streq(changes[0].source, "/usr/lib/systemd/system/test-default-real.target"));
@@ -364,7 +364,7 @@ static void test_add_dependency(const char *root) {
p = strjoina(root, "/usr/lib/systemd/system/add-dependency-test-service.service");
assert_se(symlink("real-add-dependency-test-service.service", p) >= 0);
- assert_se(unit_file_add_dependency(UNIT_FILE_SYSTEM, false, root, STRV_MAKE("add-dependency-test-service.service"), "add-dependency-test-target.target", UNIT_WANTS, false, &changes, &n_changes) >= 0);
+ assert_se(unit_file_add_dependency(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("add-dependency-test-service.service"), "add-dependency-test-target.target", UNIT_WANTS, &changes, &n_changes) >= 0);
assert_se(n_changes == 1);
assert_se(changes[0].type == UNIT_FILE_SYMLINK);
assert_se(streq(changes[0].source, "/usr/lib/systemd/system/real-add-dependency-test-service.service"));
@@ -401,7 +401,7 @@ static void test_template_enable(const char *root) {
assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template-symlink@def.service", &state) >= 0 && state == UNIT_FILE_DISABLED);
assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template-symlink@foo.service", &state) >= 0 && state == UNIT_FILE_DISABLED);
- assert_se(unit_file_enable(UNIT_FILE_SYSTEM, false, root, STRV_MAKE("template@.service"), false, &changes, &n_changes) >= 0);
+ assert_se(unit_file_enable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("template@.service"), &changes, &n_changes) >= 0);
assert_se(n_changes == 1);
assert_se(changes[0].type == UNIT_FILE_SYMLINK);
assert_se(streq(changes[0].source, "/usr/lib/systemd/system/template@.service"));
@@ -417,7 +417,7 @@ static void test_template_enable(const char *root) {
assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template-symlink@def.service", &state) >= 0 && state == UNIT_FILE_ENABLED);
assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template-symlink@foo.service", &state) >= 0 && state == UNIT_FILE_DISABLED);
- assert_se(unit_file_disable(UNIT_FILE_SYSTEM, false, root, STRV_MAKE("template@.service"), &changes, &n_changes) >= 0);
+ assert_se(unit_file_disable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("template@.service"), &changes, &n_changes) >= 0);
assert_se(n_changes == 1);
assert_se(changes[0].type == UNIT_FILE_UNLINK);
assert_se(streq(changes[0].path, p));
@@ -431,7 +431,7 @@ static void test_template_enable(const char *root) {
assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template-symlink@def.service", &state) >= 0 && state == UNIT_FILE_DISABLED);
assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template-symlink@foo.service", &state) >= 0 && state == UNIT_FILE_DISABLED);
- assert_se(unit_file_enable(UNIT_FILE_SYSTEM, false, root, STRV_MAKE("template@foo.service"), false, &changes, &n_changes) >= 0);
+ assert_se(unit_file_enable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("template@foo.service"), &changes, &n_changes) >= 0);
assert_se(changes[0].type == UNIT_FILE_SYMLINK);
assert_se(streq(changes[0].source, "/usr/lib/systemd/system/template@.service"));
p = strjoina(root, SYSTEM_CONFIG_UNIT_PATH"/multi-user.target.wants/template@foo.service");
@@ -446,7 +446,7 @@ static void test_template_enable(const char *root) {
assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template-symlink@def.service", &state) >= 0 && state == UNIT_FILE_DISABLED);
assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template-symlink@foo.service", &state) >= 0 && state == UNIT_FILE_ENABLED);
- assert_se(unit_file_disable(UNIT_FILE_SYSTEM, false, root, STRV_MAKE("template@foo.service"), &changes, &n_changes) >= 0);
+ assert_se(unit_file_disable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("template@foo.service"), &changes, &n_changes) >= 0);
assert_se(n_changes == 1);
assert_se(changes[0].type == UNIT_FILE_UNLINK);
assert_se(streq(changes[0].path, p));
@@ -462,7 +462,7 @@ static void test_template_enable(const char *root) {
assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template-symlink@foo.service", &state) >= 0 && state == UNIT_FILE_DISABLED);
assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "template-symlink@quux.service", &state) >= 0 && state == UNIT_FILE_DISABLED);
- assert_se(unit_file_enable(UNIT_FILE_SYSTEM, false, root, STRV_MAKE("template-symlink@quux.service"), false, &changes, &n_changes) >= 0);
+ assert_se(unit_file_enable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("template-symlink@quux.service"), &changes, &n_changes) >= 0);
assert_se(changes[0].type == UNIT_FILE_SYMLINK);
assert_se(streq(changes[0].source, "/usr/lib/systemd/system/template@.service"));
p = strjoina(root, SYSTEM_CONFIG_UNIT_PATH"/multi-user.target.wants/template@quux.service");
@@ -507,7 +507,7 @@ static void test_indirect(const char *root) {
assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "indirectb.service", &state) >= 0 && state == UNIT_FILE_DISABLED);
assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "indirectc.service", &state) >= 0 && state == UNIT_FILE_INDIRECT);
- assert_se(unit_file_enable(UNIT_FILE_SYSTEM, false, root, STRV_MAKE("indirectc.service"), false, &changes, &n_changes) >= 0);
+ assert_se(unit_file_enable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("indirectc.service"), &changes, &n_changes) >= 0);
assert_se(n_changes == 1);
assert_se(changes[0].type == UNIT_FILE_SYMLINK);
assert_se(streq(changes[0].source, "/usr/lib/systemd/system/indirectb.service"));
@@ -520,7 +520,7 @@ static void test_indirect(const char *root) {
assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "indirectb.service", &state) >= 0 && state == UNIT_FILE_ENABLED);
assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "indirectc.service", &state) >= 0 && state == UNIT_FILE_INDIRECT);
- assert_se(unit_file_disable(UNIT_FILE_SYSTEM, false, root, STRV_MAKE("indirectc.service"), &changes, &n_changes) >= 0);
+ assert_se(unit_file_disable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("indirectc.service"), &changes, &n_changes) >= 0);
assert_se(n_changes == 1);
assert_se(changes[0].type == UNIT_FILE_UNLINK);
p = strjoina(root, SYSTEM_CONFIG_UNIT_PATH"/multi-user.target.wants/indirectb.service");
@@ -560,7 +560,7 @@ static void test_preset_and_list(const char *root) {
assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "preset-yes.service", &state) >= 0 && state == UNIT_FILE_DISABLED);
assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "preset-no.service", &state) >= 0 && state == UNIT_FILE_DISABLED);
- assert_se(unit_file_preset(UNIT_FILE_SYSTEM, false, root, STRV_MAKE("preset-yes.service"), UNIT_FILE_PRESET_FULL, false, &changes, &n_changes) >= 0);
+ assert_se(unit_file_preset(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("preset-yes.service"), UNIT_FILE_PRESET_FULL, &changes, &n_changes) >= 0);
assert_se(n_changes == 1);
assert_se(changes[0].type == UNIT_FILE_SYMLINK);
assert_se(streq(changes[0].source, "/usr/lib/systemd/system/preset-yes.service"));
@@ -572,7 +572,7 @@ static void test_preset_and_list(const char *root) {
assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "preset-yes.service", &state) >= 0 && state == UNIT_FILE_ENABLED);
assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "preset-no.service", &state) >= 0 && state == UNIT_FILE_DISABLED);
- assert_se(unit_file_disable(UNIT_FILE_SYSTEM, false, root, STRV_MAKE("preset-yes.service"), &changes, &n_changes) >= 0);
+ assert_se(unit_file_disable(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("preset-yes.service"), &changes, &n_changes) >= 0);
assert_se(n_changes == 1);
assert_se(changes[0].type == UNIT_FILE_UNLINK);
p = strjoina(root, SYSTEM_CONFIG_UNIT_PATH"/multi-user.target.wants/preset-yes.service");
@@ -583,7 +583,7 @@ static void test_preset_and_list(const char *root) {
assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "preset-yes.service", &state) >= 0 && state == UNIT_FILE_DISABLED);
assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "preset-no.service", &state) >= 0 && state == UNIT_FILE_DISABLED);
- assert_se(unit_file_preset(UNIT_FILE_SYSTEM, false, root, STRV_MAKE("preset-no.service"), UNIT_FILE_PRESET_FULL, false, &changes, &n_changes) >= 0);
+ assert_se(unit_file_preset(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("preset-no.service"), UNIT_FILE_PRESET_FULL, &changes, &n_changes) >= 0);
assert_se(n_changes == 0);
unit_file_changes_free(changes, n_changes);
changes = NULL; n_changes = 0;
@@ -591,7 +591,7 @@ static void test_preset_and_list(const char *root) {
assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "preset-yes.service", &state) >= 0 && state == UNIT_FILE_DISABLED);
assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "preset-no.service", &state) >= 0 && state == UNIT_FILE_DISABLED);
- assert_se(unit_file_preset_all(UNIT_FILE_SYSTEM, false, root, UNIT_FILE_PRESET_FULL, false, &changes, &n_changes) >= 0);
+ assert_se(unit_file_preset_all(UNIT_FILE_SYSTEM, 0, root, UNIT_FILE_PRESET_FULL, &changes, &n_changes) >= 0);
assert_se(n_changes > 0);
@@ -716,7 +716,7 @@ static void test_preset_order(const char *root) {
assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "prefix-1.service", &state) >= 0 && state == UNIT_FILE_DISABLED);
assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "prefix-2.service", &state) >= 0 && state == UNIT_FILE_DISABLED);
- assert_se(unit_file_preset(UNIT_FILE_SYSTEM, false, root, STRV_MAKE("prefix-1.service"), UNIT_FILE_PRESET_FULL, false, &changes, &n_changes) >= 0);
+ assert_se(unit_file_preset(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("prefix-1.service"), UNIT_FILE_PRESET_FULL, &changes, &n_changes) >= 0);
assert_se(n_changes == 1);
assert_se(changes[0].type == UNIT_FILE_SYMLINK);
assert_se(streq(changes[0].source, "/usr/lib/systemd/system/prefix-1.service"));
@@ -728,7 +728,7 @@ static void test_preset_order(const char *root) {
assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "prefix-1.service", &state) >= 0 && state == UNIT_FILE_ENABLED);
assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "prefix-2.service", &state) >= 0 && state == UNIT_FILE_DISABLED);
- assert_se(unit_file_preset(UNIT_FILE_SYSTEM, false, root, STRV_MAKE("prefix-2.service"), UNIT_FILE_PRESET_FULL, false, &changes, &n_changes) >= 0);
+ assert_se(unit_file_preset(UNIT_FILE_SYSTEM, 0, root, STRV_MAKE("prefix-2.service"), UNIT_FILE_PRESET_FULL, &changes, &n_changes) >= 0);
assert_se(n_changes == 0);
assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "prefix-1.service", &state) >= 0 && state == UNIT_FILE_ENABLED);
diff --git a/src/test/test-install.c b/src/test/test-install.c
index 0ac85f040a..fb36aa83ca 100644
--- a/src/test/test-install.c
+++ b/src/test/test-install.c
@@ -70,12 +70,12 @@ int main(int argc, char* argv[]) {
log_info("/*** enable **/");
- r = unit_file_enable(UNIT_FILE_SYSTEM, false, NULL, (char**) files, false, &changes, &n_changes);
+ r = unit_file_enable(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes);
assert_se(r >= 0);
log_info("/*** enable2 **/");
- r = unit_file_enable(UNIT_FILE_SYSTEM, false, NULL, (char**) files, false, &changes, &n_changes);
+ r = unit_file_enable(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes);
assert_se(r >= 0);
dump_changes(changes, n_changes);
@@ -89,7 +89,7 @@ int main(int argc, char* argv[]) {
changes = NULL;
n_changes = 0;
- r = unit_file_disable(UNIT_FILE_SYSTEM, false, NULL, (char**) files, &changes, &n_changes);
+ r = unit_file_disable(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes);
assert_se(r >= 0);
dump_changes(changes, n_changes);
@@ -103,10 +103,10 @@ int main(int argc, char* argv[]) {
changes = NULL;
n_changes = 0;
- r = unit_file_mask(UNIT_FILE_SYSTEM, false, NULL, (char**) files, false, &changes, &n_changes);
+ r = unit_file_mask(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes);
assert_se(r >= 0);
log_info("/*** mask2 ***/");
- r = unit_file_mask(UNIT_FILE_SYSTEM, false, NULL, (char**) files, false, &changes, &n_changes);
+ r = unit_file_mask(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes);
assert_se(r >= 0);
dump_changes(changes, n_changes);
@@ -120,10 +120,10 @@ int main(int argc, char* argv[]) {
changes = NULL;
n_changes = 0;
- r = unit_file_unmask(UNIT_FILE_SYSTEM, false, NULL, (char**) files, &changes, &n_changes);
+ r = unit_file_unmask(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes);
assert_se(r >= 0);
log_info("/*** unmask2 ***/");
- r = unit_file_unmask(UNIT_FILE_SYSTEM, false, NULL, (char**) files, &changes, &n_changes);
+ r = unit_file_unmask(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes);
assert_se(r >= 0);
dump_changes(changes, n_changes);
@@ -137,7 +137,7 @@ int main(int argc, char* argv[]) {
changes = NULL;
n_changes = 0;
- r = unit_file_mask(UNIT_FILE_SYSTEM, false, NULL, (char**) files, false, &changes, &n_changes);
+ r = unit_file_mask(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes);
assert_se(r >= 0);
dump_changes(changes, n_changes);
@@ -151,10 +151,10 @@ int main(int argc, char* argv[]) {
changes = NULL;
n_changes = 0;
- r = unit_file_disable(UNIT_FILE_SYSTEM, false, NULL, (char**) files, &changes, &n_changes);
+ r = unit_file_disable(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes);
assert_se(r >= 0);
log_info("/*** disable2 ***/");
- r = unit_file_disable(UNIT_FILE_SYSTEM, false, NULL, (char**) files, &changes, &n_changes);
+ r = unit_file_disable(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes);
assert_se(r >= 0);
dump_changes(changes, n_changes);
@@ -168,7 +168,7 @@ int main(int argc, char* argv[]) {
changes = NULL;
n_changes = 0;
- r = unit_file_unmask(UNIT_FILE_SYSTEM, false, NULL, (char**) files, &changes, &n_changes);
+ r = unit_file_unmask(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, &changes, &n_changes);
assert_se(r >= 0);
dump_changes(changes, n_changes);
@@ -182,7 +182,7 @@ int main(int argc, char* argv[]) {
changes = NULL;
n_changes = 0;
- r = unit_file_enable(UNIT_FILE_SYSTEM, false, NULL, (char**) files2, false, &changes, &n_changes);
+ r = unit_file_enable(UNIT_FILE_SYSTEM, 0, NULL, (char**) files2, &changes, &n_changes);
assert_se(r >= 0);
dump_changes(changes, n_changes);
@@ -196,7 +196,7 @@ int main(int argc, char* argv[]) {
changes = NULL;
n_changes = 0;
- r = unit_file_disable(UNIT_FILE_SYSTEM, false, NULL, STRV_MAKE(basename(files2[0])), &changes, &n_changes);
+ r = unit_file_disable(UNIT_FILE_SYSTEM, 0, NULL, STRV_MAKE(basename(files2[0])), &changes, &n_changes);
assert_se(r >= 0);
dump_changes(changes, n_changes);
@@ -209,7 +209,7 @@ int main(int argc, char* argv[]) {
changes = NULL;
n_changes = 0;
- r = unit_file_link(UNIT_FILE_SYSTEM, false, NULL, (char**) files2, false, &changes, &n_changes);
+ r = unit_file_link(UNIT_FILE_SYSTEM, 0, NULL, (char**) files2, &changes, &n_changes);
assert_se(r >= 0);
dump_changes(changes, n_changes);
@@ -223,7 +223,7 @@ int main(int argc, char* argv[]) {
changes = NULL;
n_changes = 0;
- r = unit_file_disable(UNIT_FILE_SYSTEM, false, NULL, STRV_MAKE(basename(files2[0])), &changes, &n_changes);
+ r = unit_file_disable(UNIT_FILE_SYSTEM, 0, NULL, STRV_MAKE(basename(files2[0])), &changes, &n_changes);
assert_se(r >= 0);
dump_changes(changes, n_changes);
@@ -236,7 +236,7 @@ int main(int argc, char* argv[]) {
changes = NULL;
n_changes = 0;
- r = unit_file_link(UNIT_FILE_SYSTEM, false, NULL, (char**) files2, false, &changes, &n_changes);
+ r = unit_file_link(UNIT_FILE_SYSTEM, 0, NULL, (char**) files2, &changes, &n_changes);
assert_se(r >= 0);
dump_changes(changes, n_changes);
@@ -250,7 +250,7 @@ int main(int argc, char* argv[]) {
changes = NULL;
n_changes = 0;
- r = unit_file_reenable(UNIT_FILE_SYSTEM, false, NULL, (char**) files2, false, &changes, &n_changes);
+ r = unit_file_reenable(UNIT_FILE_SYSTEM, 0, NULL, (char**) files2, &changes, &n_changes);
assert_se(r >= 0);
dump_changes(changes, n_changes);
@@ -264,7 +264,7 @@ int main(int argc, char* argv[]) {
changes = NULL;
n_changes = 0;
- r = unit_file_disable(UNIT_FILE_SYSTEM, false, NULL, STRV_MAKE(basename(files2[0])), &changes, &n_changes);
+ r = unit_file_disable(UNIT_FILE_SYSTEM, 0, NULL, STRV_MAKE(basename(files2[0])), &changes, &n_changes);
assert_se(r >= 0);
dump_changes(changes, n_changes);
@@ -276,7 +276,7 @@ int main(int argc, char* argv[]) {
changes = NULL;
n_changes = 0;
- r = unit_file_preset(UNIT_FILE_SYSTEM, false, NULL, (char**) files, UNIT_FILE_PRESET_FULL, false, &changes, &n_changes);
+ r = unit_file_preset(UNIT_FILE_SYSTEM, 0, NULL, (char**) files, UNIT_FILE_PRESET_FULL, &changes, &n_changes);
assert_se(r >= 0);
dump_changes(changes, n_changes);
diff --git a/src/test/test-path-util.c b/src/test/test-path-util.c
index 0b10d8e25e..a6a09a0031 100644
--- a/src/test/test-path-util.c
+++ b/src/test/test-path-util.c
@@ -263,16 +263,37 @@ static void test_strv_resolve(void) {
}
static void test_path_startswith(void) {
- assert_se(path_startswith("/foo/bar/barfoo/", "/foo"));
- assert_se(path_startswith("/foo/bar/barfoo/", "/foo/"));
- assert_se(path_startswith("/foo/bar/barfoo/", "/"));
- assert_se(path_startswith("/foo/bar/barfoo/", "////"));
- assert_se(path_startswith("/foo/bar/barfoo/", "/foo//bar/////barfoo///"));
- assert_se(path_startswith("/foo/bar/barfoo/", "/foo/bar/barfoo////"));
- assert_se(path_startswith("/foo/bar/barfoo/", "/foo/bar///barfoo/"));
- assert_se(path_startswith("/foo/bar/barfoo/", "/foo////bar/barfoo/"));
- assert_se(path_startswith("/foo/bar/barfoo/", "////foo/bar/barfoo/"));
- assert_se(path_startswith("/foo/bar/barfoo/", "/foo/bar/barfoo"));
+ const char *p;
+
+ p = path_startswith("/foo/bar/barfoo/", "/foo");
+ assert_se(streq_ptr(p, "bar/barfoo/"));
+
+ p = path_startswith("/foo/bar/barfoo/", "/foo/");
+ assert_se(streq_ptr(p, "bar/barfoo/"));
+
+ p = path_startswith("/foo/bar/barfoo/", "/");
+ assert_se(streq_ptr(p, "foo/bar/barfoo/"));
+
+ p = path_startswith("/foo/bar/barfoo/", "////");
+ assert_se(streq_ptr(p, "foo/bar/barfoo/"));
+
+ p = path_startswith("/foo/bar/barfoo/", "/foo//bar/////barfoo///");
+ assert_se(streq_ptr(p, ""));
+
+ p = path_startswith("/foo/bar/barfoo/", "/foo/bar/barfoo////");
+ assert_se(streq_ptr(p, ""));
+
+ p = path_startswith("/foo/bar/barfoo/", "/foo/bar///barfoo/");
+ assert_se(streq_ptr(p, ""));
+
+ p = path_startswith("/foo/bar/barfoo/", "/foo////bar/barfoo/");
+ assert_se(streq_ptr(p, ""));
+
+ p = path_startswith("/foo/bar/barfoo/", "////foo/bar/barfoo/");
+ assert_se(streq_ptr(p, ""));
+
+ p = path_startswith("/foo/bar/barfoo/", "/foo/bar/barfoo");
+ assert_se(streq_ptr(p, ""));
assert_se(!path_startswith("/foo/bar/barfoo/", "/foo/bar/barfooa/"));
assert_se(!path_startswith("/foo/bar/barfoo/", "/foo/bar/barfooa"));
diff --git a/src/test/test-seccomp.c b/src/test/test-seccomp.c
new file mode 100644
index 0000000000..43d1567288
--- /dev/null
+++ b/src/test/test-seccomp.c
@@ -0,0 +1,136 @@
+/***
+ This file is part of systemd.
+
+ Copyright 2016 Lennart Poettering
+
+ systemd is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 2.1 of the License, or
+ (at your option) any later version.
+
+ systemd is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with systemd; If not, see <http://www.gnu.org/licenses/>.
+***/
+
+#include <stdlib.h>
+#include <sys/eventfd.h>
+#include <unistd.h>
+
+#include "fd-util.h"
+#include "macro.h"
+#include "process-util.h"
+#include "seccomp-util.h"
+#include "string-util.h"
+#include "util.h"
+
+static void test_seccomp_arch_to_string(void) {
+ uint32_t a, b;
+ const char *name;
+
+ a = seccomp_arch_native();
+ assert_se(a > 0);
+ name = seccomp_arch_to_string(a);
+ assert_se(name);
+ assert_se(seccomp_arch_from_string(name, &b) >= 0);
+ assert_se(a == b);
+}
+
+static void test_architecture_table(void) {
+ const char *n, *n2;
+
+ NULSTR_FOREACH(n,
+ "native\0"
+ "x86\0"
+ "x86-64\0"
+ "x32\0"
+ "arm\0"
+ "arm64\0"
+ "mips\0"
+ "mips64\0"
+ "mips64-n32\0"
+ "mips-le\0"
+ "mips64-le\0"
+ "mips64-le-n32\0"
+ "ppc\0"
+ "ppc64\0"
+ "ppc64-le\0"
+ "s390\0"
+ "s390x\0") {
+ uint32_t c;
+
+ assert_se(seccomp_arch_from_string(n, &c) >= 0);
+ n2 = seccomp_arch_to_string(c);
+ log_info("seccomp-arch: %s → 0x%"PRIx32" → %s", n, c, n2);
+ assert_se(streq_ptr(n, n2));
+ }
+}
+
+static void test_syscall_filter_set_find(void) {
+ assert_se(!syscall_filter_set_find(NULL));
+ assert_se(!syscall_filter_set_find(""));
+ assert_se(!syscall_filter_set_find("quux"));
+ assert_se(!syscall_filter_set_find("@quux"));
+
+ assert_se(syscall_filter_set_find("@clock") == syscall_filter_sets + SYSCALL_FILTER_SET_CLOCK);
+ assert_se(syscall_filter_set_find("@default") == syscall_filter_sets + SYSCALL_FILTER_SET_DEFAULT);
+ assert_se(syscall_filter_set_find("@raw-io") == syscall_filter_sets + SYSCALL_FILTER_SET_RAW_IO);
+}
+
+static void test_filter_sets(void) {
+ unsigned i;
+ int r;
+
+ if (!is_seccomp_available())
+ return;
+
+ if (geteuid() != 0)
+ return;
+
+ for (i = 0; i < _SYSCALL_FILTER_SET_MAX; i++) {
+ pid_t pid;
+
+ log_info("Testing %s", syscall_filter_sets[i].name);
+
+ pid = fork();
+ assert_se(pid >= 0);
+
+ if (pid == 0) { /* Child? */
+ int fd;
+
+ if (i == SYSCALL_FILTER_SET_DEFAULT) /* if we look at the default set, whitelist instead of blacklist */
+ r = seccomp_load_filter_set(SCMP_ACT_ERRNO(EPERM), syscall_filter_sets + i, SCMP_ACT_ALLOW);
+ else
+ r = seccomp_load_filter_set(SCMP_ACT_ALLOW, syscall_filter_sets + i, SCMP_ACT_ERRNO(EPERM));
+ if (r < 0)
+ _exit(EXIT_FAILURE);
+
+ /* Test the sycall filter with one random system call */
+ fd = eventfd(0, EFD_NONBLOCK|EFD_CLOEXEC);
+ if (IN_SET(i, SYSCALL_FILTER_SET_IO_EVENT, SYSCALL_FILTER_SET_DEFAULT))
+ assert_se(fd < 0 && errno == EPERM);
+ else {
+ assert_se(fd >= 0);
+ safe_close(fd);
+ }
+
+ _exit(EXIT_SUCCESS);
+ }
+
+ assert_se(wait_for_terminate_and_warn(syscall_filter_sets[i].name, pid, true) == EXIT_SUCCESS);
+ }
+}
+
+int main(int argc, char *argv[]) {
+
+ test_seccomp_arch_to_string();
+ test_architecture_table();
+ test_syscall_filter_set_find();
+ test_filter_sets();
+
+ return 0;
+}
diff --git a/src/test/test-tables.c b/src/test/test-tables.c
index 0be74921fc..294d219869 100644
--- a/src/test/test-tables.c
+++ b/src/test/test-tables.c
@@ -48,6 +48,7 @@
#include "unit-name.h"
#include "unit.h"
#include "util.h"
+#include "virt.h"
int main(int argc, char **argv) {
test_table(architecture, ARCHITECTURE);
@@ -63,7 +64,7 @@ int main(int argc, char **argv) {
test_table(device_state, DEVICE_STATE);
test_table(exec_input, EXEC_INPUT);
test_table(exec_output, EXEC_OUTPUT);
- test_table(failure_action, FAILURE_ACTION);
+ test_table(emergency_action, EMERGENCY_ACTION);
test_table(job_mode, JOB_MODE);
test_table(job_result, JOB_RESULT);
test_table(job_state, JOB_STATE);
@@ -114,6 +115,7 @@ int main(int argc, char **argv) {
test_table(unit_load_state, UNIT_LOAD_STATE);
test_table(unit_type, UNIT_TYPE);
test_table(locale_variable, VARIABLE_LC);
+ test_table(virtualization, VIRTUALIZATION);
test_table_sparse(object_compressed, OBJECT_COMPRESSED);
diff --git a/src/test/test-unit-file.c b/src/test/test-unit-file.c
index 7ef087a2e3..12f48bf435 100644
--- a/src/test/test-unit-file.c
+++ b/src/test/test-unit-file.c
@@ -589,7 +589,7 @@ static void test_install_printf(void) {
assert_se(specifier_machine_id('m', NULL, NULL, &mid) >= 0 && mid);
assert_se(specifier_boot_id('b', NULL, NULL, &bid) >= 0 && bid);
assert_se((host = gethostname_malloc()));
- assert_se((user = getusername_malloc()));
+ assert_se((user = uid_to_name(getuid())));
assert_se(asprintf(&uid, UID_FMT, getuid()) >= 0);
#define expect(src, pattern, result) \
diff --git a/src/udev/collect/collect.c b/src/udev/collect/collect.c
index 349585b634..0e973cd521 100644
--- a/src/udev/collect/collect.c
+++ b/src/udev/collect/collect.c
@@ -85,16 +85,16 @@ static void usage(void)
*/
static int prepare(char *dir, char *filename)
{
- char buf[512];
+ char buf[PATH_MAX];
int r, fd;
r = mkdir(dir, 0700);
if (r < 0 && errno != EEXIST)
return -errno;
- xsprintf(buf, "%s/%s", dir, filename);
+ snprintf(buf, sizeof buf, "%s/%s", dir, filename);
- fd = open(buf,O_RDWR|O_CREAT|O_CLOEXEC, S_IRUSR|S_IWUSR);
+ fd = open(buf, O_RDWR|O_CREAT|O_CLOEXEC, S_IRUSR|S_IWUSR);
if (fd < 0)
fprintf(stderr, "Cannot open %s: %m\n", buf);
diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c
index a7be2a4eed..fe9d6f4482 100644
--- a/src/udev/udev-builtin-net_id.c
+++ b/src/udev/udev-builtin-net_id.c
@@ -35,10 +35,12 @@
* Type of names:
* b<number> — BCMA bus core number
* c<bus_id> — CCW bus group name, without leading zeros [s390]
- * o<index>[d<dev_port>] — on-board device index number
- * s<slot>[f<function>][d<dev_port>] — hotplug slot index number
+ * o<index>[n<phys_port_name>|d<dev_port>]
+ * — on-board device index number
+ * s<slot>[f<function>][n<phys_port_name>|d<dev_port>]
+ * — hotplug slot index number
* x<MAC> — MAC address
- * [P<domain>]p<bus>s<slot>[f<function>][d<dev_port>]
+ * [P<domain>]p<bus>s<slot>[f<function>][n<phys_port_name>|d<dev_port>]
* — PCI geographical location
* [P<domain>]p<bus>s<slot>[f<function>][u<port>][..][c<config>][i<interface>]
* — USB port number chain
@@ -137,7 +139,7 @@ static int dev_pci_onboard(struct udev_device *dev, struct netnames *names) {
unsigned dev_port = 0;
size_t l;
char *s;
- const char *attr;
+ const char *attr, *port_name;
int idx;
/* ACPI _DSM — device specific method for naming a PCI or PCI Express device */
@@ -164,10 +166,15 @@ static int dev_pci_onboard(struct udev_device *dev, struct netnames *names) {
if (attr)
dev_port = strtol(attr, NULL, 10);
+ /* kernel provided front panel port name for multiple port PCI device */
+ port_name = udev_device_get_sysattr_value(dev, "phys_port_name");
+
s = names->pci_onboard;
l = sizeof(names->pci_onboard);
l = strpcpyf(&s, l, "o%d", idx);
- if (dev_port > 0)
+ if (port_name)
+ l = strpcpyf(&s, l, "n%s", port_name);
+ else if (dev_port > 0)
l = strpcpyf(&s, l, "d%d", dev_port);
if (l == 0)
names->pci_onboard[0] = '\0';
@@ -202,9 +209,9 @@ static int dev_pci_slot(struct udev_device *dev, struct netnames *names) {
unsigned domain, bus, slot, func, dev_port = 0;
size_t l;
char *s;
- const char *attr;
+ const char *attr, *port_name;
struct udev_device *pci = NULL;
- char slots[256], str[256];
+ char slots[PATH_MAX];
_cleanup_closedir_ DIR *dir = NULL;
struct dirent *dent;
int hotplug_slot = 0, err = 0;
@@ -217,6 +224,9 @@ static int dev_pci_slot(struct udev_device *dev, struct netnames *names) {
if (attr)
dev_port = strtol(attr, NULL, 10);
+ /* kernel provided front panel port name for multiple port PCI device */
+ port_name = udev_device_get_sysattr_value(dev, "phys_port_name");
+
/* compose a name based on the raw kernel's PCI bus, slot numbers */
s = names->pci_path;
l = sizeof(names->pci_path);
@@ -225,7 +235,9 @@ static int dev_pci_slot(struct udev_device *dev, struct netnames *names) {
l = strpcpyf(&s, l, "p%us%u", bus, slot);
if (func > 0 || is_pci_multifunction(names->pcidev))
l = strpcpyf(&s, l, "f%u", func);
- if (dev_port > 0)
+ if (port_name)
+ l = strpcpyf(&s, l, "n%s", port_name);
+ else if (dev_port > 0)
l = strpcpyf(&s, l, "d%u", dev_port);
if (l == 0)
names->pci_path[0] = '\0';
@@ -236,7 +248,8 @@ static int dev_pci_slot(struct udev_device *dev, struct netnames *names) {
err = -ENOENT;
goto out;
}
- xsprintf(slots, "%s/slots", udev_device_get_syspath(pci));
+
+ snprintf(slots, sizeof slots, "%s/slots", udev_device_get_syspath(pci));
dir = opendir(slots);
if (!dir) {
err = -errno;
@@ -245,8 +258,7 @@ static int dev_pci_slot(struct udev_device *dev, struct netnames *names) {
for (dent = readdir(dir); dent != NULL; dent = readdir(dir)) {
int i;
- char *rest;
- char *address;
+ char *rest, *address, str[PATH_MAX];
if (dent->d_name[0] == '.')
continue;
@@ -255,7 +267,8 @@ static int dev_pci_slot(struct udev_device *dev, struct netnames *names) {
continue;
if (i < 1)
continue;
- xsprintf(str, "%s/%s/address", slots, dent->d_name);
+
+ snprintf(str, sizeof str, "%s/%s/address", slots, dent->d_name);
if (read_one_line_file(str, &address) >= 0) {
/* match slot address with device by stripping the function */
if (strneq(address, udev_device_get_sysname(names->pcidev), strlen(address)))
@@ -275,7 +288,9 @@ static int dev_pci_slot(struct udev_device *dev, struct netnames *names) {
l = strpcpyf(&s, l, "s%d", hotplug_slot);
if (func > 0 || is_pci_multifunction(names->pcidev))
l = strpcpyf(&s, l, "f%d", func);
- if (dev_port > 0)
+ if (port_name)
+ l = strpcpyf(&s, l, "n%s", port_name);
+ else if (dev_port > 0)
l = strpcpyf(&s, l, "d%d", dev_port);
if (l == 0)
names->pci_slot[0] = '\0';
diff --git a/src/udev/udev-node.c b/src/udev/udev-node.c
index 5d2997fd8f..43004bc0bc 100644
--- a/src/udev/udev-node.c
+++ b/src/udev/udev-node.c
@@ -337,7 +337,7 @@ out:
void udev_node_add(struct udev_device *dev, bool apply,
mode_t mode, uid_t uid, gid_t gid,
struct udev_list *seclabel_list) {
- char filename[UTIL_PATH_SIZE];
+ char filename[sizeof("/dev/block/:") + 2*DECIMAL_STR_MAX(unsigned)];
struct udev_list_entry *list_entry;
log_debug("handling device node '%s', devnum=%s, mode=%#o, uid="UID_FMT", gid="GID_FMT,
@@ -360,7 +360,7 @@ void udev_node_add(struct udev_device *dev, bool apply,
void udev_node_remove(struct udev_device *dev) {
struct udev_list_entry *list_entry;
- char filename[UTIL_PATH_SIZE];
+ char filename[sizeof("/dev/block/:") + 2*DECIMAL_STR_MAX(unsigned)];
/* remove/update symlinks, remove symlinks from name index */
udev_list_entry_foreach(list_entry, udev_device_get_devlinks_list_entry(dev))
diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c
index 7619c8371b..f6c416bf70 100644
--- a/src/udev/udev-rules.c
+++ b/src/udev/udev-rules.c
@@ -2218,10 +2218,16 @@ void udev_rules_apply_to_event(struct udev_rules *rules,
rule->rule.filename_line);
break;
case TK_A_SECLABEL: {
+ char label_str[UTIL_LINE_SIZE] = {};
const char *name, *label;
name = rules_str(rules, cur->key.attr_off);
- label = rules_str(rules, cur->key.value_off);
+ udev_event_apply_format(event, rules_str(rules, cur->key.value_off), label_str, sizeof(label_str));
+ if (label_str[0] != '\0')
+ label = label_str;
+ else
+ label = rules_str(rules, cur->key.value_off);
+
if (cur->key.op == OP_ASSIGN || cur->key.op == OP_ASSIGN_FINAL)
udev_list_cleanup(&event->seclabel_list);
udev_list_entry_add(&event->seclabel_list, name, label);
diff --git a/src/udev/udev-watch.c b/src/udev/udev-watch.c
index 9ce5e975de..bc9096ed0c 100644
--- a/src/udev/udev-watch.c
+++ b/src/udev/udev-watch.c
@@ -89,7 +89,7 @@ unlink:
}
void udev_watch_begin(struct udev *udev, struct udev_device *dev) {
- char filename[UTIL_PATH_SIZE];
+ char filename[sizeof("/run/udev/watch/") + DECIMAL_STR_MAX(int)];
int wd;
int r;
@@ -116,7 +116,7 @@ void udev_watch_begin(struct udev *udev, struct udev_device *dev) {
void udev_watch_end(struct udev *udev, struct udev_device *dev) {
int wd;
- char filename[UTIL_PATH_SIZE];
+ char filename[sizeof("/run/udev/watch/") + DECIMAL_STR_MAX(int)];
if (inotify_fd < 0)
return;
@@ -135,7 +135,7 @@ void udev_watch_end(struct udev *udev, struct udev_device *dev) {
}
struct udev_device *udev_watch_lookup(struct udev *udev, int wd) {
- char filename[UTIL_PATH_SIZE];
+ char filename[sizeof("/run/udev/watch/") + DECIMAL_STR_MAX(int)];
char device[UTIL_NAME_SIZE];
ssize_t len;
diff --git a/src/update-done/update-done.c b/src/update-done/update-done.c
index 5cc5abfddf..48c2a3fff4 100644
--- a/src/update-done/update-done.c
+++ b/src/update-done/update-done.c
@@ -18,6 +18,7 @@
***/
#include "fd-util.h"
+#include "fileio.h"
#include "io-util.h"
#include "selinux-util.h"
#include "util.h"
@@ -32,8 +33,8 @@ static int apply_timestamp(const char *path, struct timespec *ts) {
*ts,
*ts
};
- int fd = -1;
_cleanup_fclose_ FILE *f = NULL;
+ int fd = -1;
int r;
assert(path);
@@ -59,18 +60,20 @@ static int apply_timestamp(const char *path, struct timespec *ts) {
return log_error_errno(errno, "Failed to create/open timestamp file %s: %m", path);
}
- f = fdopen(fd, "w");
+ f = fdopen(fd, "we");
if (!f) {
safe_close(fd);
return log_error_errno(errno, "Failed to fdopen() timestamp file %s: %m", path);
}
(void) fprintf(f,
- "%s"
- "TimestampNSec=" NSEC_FMT "\n",
- MESSAGE, timespec_load_nsec(ts));
+ MESSAGE
+ "TIMESTAMP_NSEC=" NSEC_FMT "\n",
+ timespec_load_nsec(ts));
- fflush(f);
+ r = fflush_and_check(f);
+ if (r < 0)
+ return log_error_errno(r, "Failed to write timestamp file: %m");
if (futimens(fd, twice) < 0)
return log_error_errno(errno, "Failed to update timestamp on %s: %m", path);
diff --git a/src/vconsole/90-vconsole.rules.in b/src/vconsole/90-vconsole.rules.in
index 35b9ad5151..84b4d575bd 100644
--- a/src/vconsole/90-vconsole.rules.in
+++ b/src/vconsole/90-vconsole.rules.in
@@ -7,4 +7,4 @@
# Each vtcon keeps its own state of fonts.
#
-ACTION=="add", SUBSYSTEM=="vtconsole", KERNEL=="vtcon*", RUN+="@rootlibexecdir@/systemd-vconsole-setup"
+ACTION=="add", SUBSYSTEM=="vtconsole", KERNEL=="vtcon*", ATTR{name}!="*dummy device", RUN+="@rootlibexecdir@/systemd-vconsole-setup"
diff --git a/src/vconsole/vconsole-setup.c b/src/vconsole/vconsole-setup.c
index ac4ceb1486..a0ab5990fc 100644
--- a/src/vconsole/vconsole-setup.c
+++ b/src/vconsole/vconsole-setup.c
@@ -208,9 +208,9 @@ static int font_load_and_wait(const char *vc, const char *font, const char *map,
*/
static void setup_remaining_vcs(int fd, bool utf8) {
struct console_font_op cfo = {
- .op = KD_FONT_OP_GET, .flags = 0,
- .width = 32, .height = 32,
- .charcount = 512,
+ .op = KD_FONT_OP_GET,
+ .width = UINT_MAX, .height = UINT_MAX,
+ .charcount = UINT_MAX,
};
struct vt_stat vcs = {};
struct unimapinit adv = {};
@@ -225,12 +225,6 @@ static void setup_remaining_vcs(int fd, bool utf8) {
return;
}
- fontbuf = malloc(cfo.width * cfo.height * cfo.charcount / 8);
- if (!fontbuf) {
- log_oom();
- return;
- }
-
/* get active, and 16 bit mask of used VT numbers */
r = ioctl(fd, VT_GETSTATE, &vcs);
if (r < 0) {
@@ -238,21 +232,47 @@ static void setup_remaining_vcs(int fd, bool utf8) {
return;
}
- /* get fonts from source console */
- cfo.data = fontbuf;
+ /* get metadata of the current font (width, height, count) */
r = ioctl(fd, KDFONTOP, &cfo);
if (r < 0)
- log_warning_errno(errno, "KD_FONT_OP_GET failed, fonts will not be copied: %m");
+ log_warning_errno(errno, "KD_FONT_OP_GET failed while trying to get the font metadata: %m");
else {
- unimapd.entries = unipairs;
- unimapd.entry_ct = USHRT_MAX;
- r = ioctl(fd, GIO_UNIMAP, &unimapd);
- if (r < 0)
- log_warning_errno(errno, "GIO_UNIMAP failed, fonts will not be copied: %m");
- else
- cfo.op = KD_FONT_OP_SET;
+ /* verify parameter sanity first */
+ if (cfo.width > 32 || cfo.height > 32 || cfo.charcount > 512)
+ log_warning("Invalid font metadata - width: %u (max 32), height: %u (max 32), count: %u (max 512)",
+ cfo.width, cfo.height, cfo.charcount);
+ else {
+ /*
+ * Console fonts supported by the kernel are limited in size to 32 x 32 and maximum 512
+ * characters. Thus with 1 bit per pixel it requires up to 65536 bytes. The height always
+ * requries 32 per glyph, regardless of the actual height - see the comment above #define
+ * max_font_size 65536 in drivers/tty/vt/vt.c for more details.
+ */
+ fontbuf = malloc((cfo.width + 7) / 8 * 32 * cfo.charcount);
+ if (!fontbuf) {
+ log_oom();
+ return;
+ }
+ /* get fonts from source console */
+ cfo.data = fontbuf;
+ r = ioctl(fd, KDFONTOP, &cfo);
+ if (r < 0)
+ log_warning_errno(errno, "KD_FONT_OP_GET failed while trying to read the font data: %m");
+ else {
+ unimapd.entries = unipairs;
+ unimapd.entry_ct = USHRT_MAX;
+ r = ioctl(fd, GIO_UNIMAP, &unimapd);
+ if (r < 0)
+ log_warning_errno(errno, "GIO_UNIMAP failed while trying to read unicode mappings: %m");
+ else
+ cfo.op = KD_FONT_OP_SET;
+ }
+ }
}
+ if (cfo.op != KD_FONT_OP_SET)
+ log_warning("Fonts will not be copied to remaining consoles");
+
for (i = 1; i <= 63; i++) {
char ttyname[strlen("/dev/tty") + DECIMAL_STR_MAX(int)];
_cleanup_close_ int fd_d = -1;
diff --git a/test/TEST-04-JOURNAL/test-journal.sh b/test/TEST-04-JOURNAL/test-journal.sh
index 6646eccfa7..493ff00ce0 100755
--- a/test/TEST-04-JOURNAL/test-journal.sh
+++ b/test/TEST-04-JOURNAL/test-journal.sh
@@ -59,4 +59,12 @@ sleep 3
systemctl stop forever-print-hola
[[ ! -f "/i-lose-my-logs" ]]
+# https://github.com/systemd/systemd/issues/4408
+rm -f /i-lose-my-logs
+systemctl start forever-print-hola
+sleep 3
+systemctl kill --signal=SIGKILL systemd-journald
+sleep 3
+[[ ! -f "/i-lose-my-logs" ]]
+
touch /testok
diff --git a/test/TEST-13-NSPAWN-SMOKE/Makefile b/test/TEST-13-NSPAWN-SMOKE/Makefile
index 2ca5b12cf3..ff1470f852 100644
--- a/test/TEST-13-NSPAWN-SMOKE/Makefile
+++ b/test/TEST-13-NSPAWN-SMOKE/Makefile
@@ -1,7 +1,7 @@
-all: has-overflow
+all:
@make -s --no-print-directory -C ../.. all
@basedir=../.. TEST_BASE_DIR=../ ./test.sh --all
-setup: has-overflow
+setup:
@make --no-print-directory -C ../.. all
@basedir=../.. TEST_BASE_DIR=../ ./test.sh --setup
clean:
diff --git a/test/TEST-13-NSPAWN-SMOKE/has-overflow.c b/test/TEST-13-NSPAWN-SMOKE/has-overflow.c
deleted file mode 100644
index 1b3331fad7..0000000000
--- a/test/TEST-13-NSPAWN-SMOKE/has-overflow.c
+++ /dev/null
@@ -1,143 +0,0 @@
-#define _GNU_SOURCE
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <sys/mount.h>
-#include <sched.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <sys/wait.h>
-#include <signal.h>
-#include <fcntl.h>
-#include <stdio.h>
-#include <string.h>
-#include <limits.h>
-#include <errno.h>
-#include <grp.h>
-
-#define errExit(msg) do { perror(msg); exit(EXIT_FAILURE); } while (0)
-
-struct child_args {
- int pipe_fd[2]; /* Pipe used to synchronize parent and child */
-};
-
-static void usage(char *pname) {
- fprintf(stderr, "Options can be:\n");
- fprintf(stderr, "\t-M uid_map Specify UID map for user namespace\n");
- fprintf(stderr, "\t-G gid_map Specify GID map for user namespace\n");
-
- exit(EXIT_FAILURE);
-}
-
-static void update_map(char *mapping, char *map_file) {
- int fd, j;
- size_t map_len;
-
- map_len = strlen(mapping);
-
- fd = open(map_file, O_RDWR);
- if (fd == -1) {
- fprintf(stderr, "ERROR: open %s: %s\n", map_file, strerror(errno));
- exit(EXIT_FAILURE);
- }
-
- if (write(fd, mapping, map_len) != map_len) {
- fprintf(stderr, "ERROR: write %s: %s\n", map_file, strerror(errno));
- exit(EXIT_FAILURE);
- }
-
- close(fd);
-}
-
-static void proc_setgroups_write(pid_t child_pid, char *str) {
- char setgroups_path[PATH_MAX];
- int fd;
-
- snprintf(setgroups_path, PATH_MAX, "/proc/%ld/setgroups", (long) child_pid);
-
- fd = open(setgroups_path, O_RDWR);
- if (fd == -1) {
- if (errno != ENOENT)
- fprintf(stderr, "ERROR: open %s: %s\n", setgroups_path, strerror(errno));
- return;
- }
-
- if (write(fd, str, strlen(str)) == -1)
- fprintf(stderr, "ERROR: write %s: %s\n", setgroups_path, strerror(errno));
-
- close(fd);
-}
-
-static int child_func(void *arg) {
- struct child_args *args = (struct child_args *) arg;
- char ch;
-
- close(args->pipe_fd[1]);
- if (read(args->pipe_fd[0], &ch, 1) != 0) {
- fprintf(stderr, "Failure in child: read from pipe returned != 0\n");
- exit(EXIT_FAILURE);
- }
-
- mount("tmpfs", "/tmp", "tmpfs", MS_MGC_VAL, "mode=777,uid=0,gid=0");
- if (mkdir("/tmp/hey", 0777) < 0)
- exit(EXIT_FAILURE);
-
- exit(EXIT_SUCCESS);
-}
-
-#define STACK_SIZE (1024 * 1024)
-
-static char child_stack[STACK_SIZE];
-
-int main(int argc, char *argv[]) {
- int flags, opt;
- pid_t child_pid;
- struct child_args args;
- char *uid_map, *gid_map;
- const int MAP_BUF_SIZE = 100;
- char map_buf[MAP_BUF_SIZE];
- char map_path[PATH_MAX];
- int status;
-
- flags = 0;
- gid_map = NULL;
- uid_map = NULL;
- while ((opt = getopt(argc, argv, "+M:G:")) != -1) {
- switch (opt) {
- case 'M':
- uid_map = optarg;
- break;
- case 'G':
- gid_map = optarg;
- break;
- default:
- usage(argv[0]);
- }
- }
-
- if (!uid_map || !gid_map)
- usage(argv[0]);
-
- flags |= CLONE_NEWNS;
- flags |= CLONE_NEWUSER;
-
- if (pipe(args.pipe_fd) == -1)
- errExit("pipe");
-
- child_pid = clone(child_func, child_stack + STACK_SIZE, flags | SIGCHLD, &args);
- if (child_pid == -1)
- errExit("clone");
-
- snprintf(map_path, PATH_MAX, "/proc/%ld/uid_map", (long) child_pid);
- update_map(uid_map, map_path);
-
- proc_setgroups_write(child_pid, "allow");
- snprintf(map_path, PATH_MAX, "/proc/%ld/gid_map", (long) child_pid);
- update_map(gid_map, map_path);
-
- close(args.pipe_fd[1]);
-
- if (waitpid(child_pid, &status, 0) == -1)
- errExit("waitpid");
-
- exit(WIFEXITED(status) && WEXITSTATUS(status) == EXIT_SUCCESS ? EXIT_FAILURE : EXIT_SUCCESS);
-}
diff --git a/test/TEST-13-NSPAWN-SMOKE/test.sh b/test/TEST-13-NSPAWN-SMOKE/test.sh
index dfc437c0ee..e6977a7f1c 100755
--- a/test/TEST-13-NSPAWN-SMOKE/test.sh
+++ b/test/TEST-13-NSPAWN-SMOKE/test.sh
@@ -40,7 +40,6 @@ test_setup() {
setup_basic_environment
dracut_install busybox chmod rmdir
- dracut_install ./has-overflow
cp create-busybox-container $initdir/
@@ -93,22 +92,8 @@ function run {
/create-busybox-container "$_root"
UNIFIED_CGROUP_HIERARCHY="$1" SYSTEMD_NSPAWN_USE_CGNS="$2" systemd-nspawn --register=no -D "$_root" -b
UNIFIED_CGROUP_HIERARCHY="$1" SYSTEMD_NSPAWN_USE_CGNS="$2" systemd-nspawn --register=no -D "$_root" --private-network -b
-
- if ! UNIFIED_CGROUP_HIERARCHY="$1" SYSTEMD_NSPAWN_USE_CGNS="$2" systemd-nspawn --register=no -D "$_root" -U -b; then
- if [[ "$1" = "no" && "$2" = "yes" ]] && /has-overflow -M '0 1073283072 65536' -G '0 1073283072 65536'; then
- printf "Failure expected, ignoring (see https://github.com/systemd/systemd/issues/4352)\n" >&2
- else
- return 1
- fi
- fi
-
- if ! UNIFIED_CGROUP_HIERARCHY="$1" SYSTEMD_NSPAWN_USE_CGNS="$2" systemd-nspawn --register=no -D "$_root" --private-network -U -b; then
- if [[ "$1" = "no" && "$2" = "yes" ]] && /has-overflow -M '0 1073283072 65536' -G '0 1073283072 65536'; then
- printf "Failure expected, ignoring (see https://github.com/systemd/systemd/issues/4352)\n" >&2
- else
- return 1
- fi
- fi
+ UNIFIED_CGROUP_HIERARCHY="$1" SYSTEMD_NSPAWN_USE_CGNS="$2" systemd-nspawn --register=no -D "$_root" -U -b
+ UNIFIED_CGROUP_HIERARCHY="$1" SYSTEMD_NSPAWN_USE_CGNS="$2" systemd-nspawn --register=no -D "$_root" --private-network -U -b
return 0
}
diff --git a/test/test-execute/exec-dynamicuser-fixeduser-one-supplementarygroup.service b/test/test-execute/exec-dynamicuser-fixeduser-one-supplementarygroup.service
new file mode 100644
index 0000000000..de1a6e7303
--- /dev/null
+++ b/test/test-execute/exec-dynamicuser-fixeduser-one-supplementarygroup.service
@@ -0,0 +1,9 @@
+[Unit]
+Description=Test DynamicUser with User= and SupplementaryGroups=
+
+[Service]
+ExecStart=/bin/sh -x -c 'test "$$(id -G)" = "1" && test "$$(id -g)" = "1" && test "$$(id -u)" = "1"'
+Type=oneshot
+User=1
+DynamicUser=yes
+SupplementaryGroups=1
diff --git a/test/test-execute/exec-dynamicuser-fixeduser.service b/test/test-execute/exec-dynamicuser-fixeduser.service
new file mode 100644
index 0000000000..1d84af02ed
--- /dev/null
+++ b/test/test-execute/exec-dynamicuser-fixeduser.service
@@ -0,0 +1,8 @@
+[Unit]
+Description=Test DynamicUser with User=
+
+[Service]
+ExecStart=/bin/sh -x -c 'test "$$(id -G)" = "1" && test "$$(id -g)" = "1" && test "$$(id -u)" = "1"'
+Type=oneshot
+User=1
+DynamicUser=yes
diff --git a/test/test-execute/exec-dynamicuser-supplementarygroups.service b/test/test-execute/exec-dynamicuser-supplementarygroups.service
new file mode 100644
index 0000000000..a47b7fab78
--- /dev/null
+++ b/test/test-execute/exec-dynamicuser-supplementarygroups.service
@@ -0,0 +1,8 @@
+[Unit]
+Description=Test DynamicUser with SupplementaryGroups=
+
+[Service]
+ExecStart=/bin/sh -x -c 'test "$$(id -G | cut -d " " --complement -f 1)" = "1 2 3"'
+Type=oneshot
+DynamicUser=yes
+SupplementaryGroups=1 2 3
diff --git a/test/test-execute/exec-supplementarygroups-multiple-groups-default-group-user.service b/test/test-execute/exec-supplementarygroups-multiple-groups-default-group-user.service
new file mode 100644
index 0000000000..a49c9d26a1
--- /dev/null
+++ b/test/test-execute/exec-supplementarygroups-multiple-groups-default-group-user.service
@@ -0,0 +1,7 @@
+[Unit]
+Description=Test for Supplementary Group with multiple groups without Group and User
+
+[Service]
+ExecStart=/bin/sh -x -c 'test "$$(id -G)" = "0 1 2 3" && test "$$(id -g)" = "0" && test "$$(id -u)" = "0"'
+Type=oneshot
+SupplementaryGroups=1 2 3
diff --git a/test/test-execute/exec-supplementarygroups-multiple-groups-withgid.service b/test/test-execute/exec-supplementarygroups-multiple-groups-withgid.service
new file mode 100644
index 0000000000..5c62c1d639
--- /dev/null
+++ b/test/test-execute/exec-supplementarygroups-multiple-groups-withgid.service
@@ -0,0 +1,8 @@
+[Unit]
+Description=Test for Supplementary Group with multiple groups and Group=1
+
+[Service]
+ExecStart=/bin/sh -x -c 'test "$$(id -G)" = "1 2 3" && test "$$(id -g)" = "1" && test "$$(id -u)" = "0"'
+Type=oneshot
+Group=1
+SupplementaryGroups=1 2 3
diff --git a/test/test-execute/exec-supplementarygroups-multiple-groups-withuid.service b/test/test-execute/exec-supplementarygroups-multiple-groups-withuid.service
new file mode 100644
index 0000000000..00523e383b
--- /dev/null
+++ b/test/test-execute/exec-supplementarygroups-multiple-groups-withuid.service
@@ -0,0 +1,8 @@
+[Unit]
+Description=Test for Supplementary Group with multiple groups and Uid=1
+
+[Service]
+ExecStart=/bin/sh -x -c 'test "$$(id -G)" = "1 2 3" && test "$$(id -g)" = "1" && test "$$(id -u)" = "1"'
+Type=oneshot
+User=1
+SupplementaryGroups=1 2 3
diff --git a/test/test-execute/exec-supplementarygroups-single-group-user.service b/test/test-execute/exec-supplementarygroups-single-group-user.service
new file mode 100644
index 0000000000..ed6276d303
--- /dev/null
+++ b/test/test-execute/exec-supplementarygroups-single-group-user.service
@@ -0,0 +1,9 @@
+[Unit]
+Description=Test for Supplementary Group with only one group and uid 1
+
+[Service]
+ExecStart=/bin/sh -x -c 'test "$$(id -G)" = "1" && test "$$(id -g)" = "1" && test "$$(id -u)" = "1"'
+Type=oneshot
+User=1
+Group=1
+SupplementaryGroups=1
diff --git a/test/test-execute/exec-supplementarygroups-single-group.service b/test/test-execute/exec-supplementarygroups-single-group.service
new file mode 100644
index 0000000000..ee502b3d37
--- /dev/null
+++ b/test/test-execute/exec-supplementarygroups-single-group.service
@@ -0,0 +1,8 @@
+[Unit]
+Description=Test for Supplementary Group with only one group
+
+[Service]
+ExecStart=/bin/sh -x -c 'test "$$(id -G)" = "1" && test "$$(id -g)" = "1" && test "$$(id -u)" = "0"'
+Type=oneshot
+Group=1
+SupplementaryGroups=1
diff --git a/test/test-execute/exec-supplementarygroups.service b/test/test-execute/exec-supplementarygroups.service
new file mode 100644
index 0000000000..43a9a981f2
--- /dev/null
+++ b/test/test-execute/exec-supplementarygroups.service
@@ -0,0 +1,7 @@
+[Unit]
+Description=Test for Supplementary Group
+
+[Service]
+ExecStart=/bin/sh -x -c 'test "$$(id -G)" = "0 1"'
+Type=oneshot
+SupplementaryGroups=1
diff --git a/units/dev-hugepages.mount b/units/dev-hugepages.mount
index 882adb4545..489cc777e4 100644
--- a/units/dev-hugepages.mount
+++ b/units/dev-hugepages.mount
@@ -13,6 +13,7 @@ DefaultDependencies=no
Before=sysinit.target
ConditionPathExists=/sys/kernel/mm/hugepages
ConditionCapability=CAP_SYS_ADMIN
+ConditionVirtualization=!private-users
[Mount]
What=hugetlbfs
diff --git a/units/x-.slice b/units/x-.slice
deleted file mode 100644
index ac82c35874..0000000000
--- a/units/x-.slice
+++ /dev/null
@@ -1,12 +0,0 @@
-# This file is part of systemd.
-#
-# systemd is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as published by
-# the Free Software Foundation; either version 2.1 of the License, or
-# (at your option) any later version.
-
-[Unit]
-Description=Root Slice
-Documentation=man:systemd.special(7)
-DefaultDependencies=no
-Before=slices.target