summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--ENVIRONMENT.md5
-rw-r--r--HACKING4
-rw-r--r--Makefile-man.am5
-rw-r--r--Makefile.am32
-rw-r--r--hwdb/20-OUI.hwdb4249
-rw-r--r--hwdb/20-acpi-vendor.hwdb18
-rw-r--r--hwdb/20-pci-vendor-model.hwdb920
-rw-r--r--hwdb/20-usb-vendor-model.hwdb473
-rw-r--r--man/coredump.conf.xml2
-rw-r--r--man/machinectl.xml34
-rw-r--r--man/sd-id128.xml15
-rw-r--r--man/systemd-coredump.xml47
-rw-r--r--man/systemd-nspawn.xml7
-rw-r--r--man/systemd.special.xml47
-rw-r--r--rules/60-persistent-storage.rules1
-rw-r--r--src/basic/btrfs-util.c2
-rw-r--r--src/basic/copy.c129
-rw-r--r--src/basic/copy.h22
-rw-r--r--src/basic/hostname-util.c2
-rw-r--r--src/basic/journal-importer.c481
-rw-r--r--src/basic/journal-importer.h70
-rw-r--r--src/basic/log.c2
-rw-r--r--src/basic/log.h3
-rw-r--r--src/basic/virt.c6
-rw-r--r--src/core/execute.c4
-rw-r--r--src/core/hostname-setup.c6
-rw-r--r--src/core/job.c14
-rw-r--r--src/core/manager.c8
-rw-r--r--src/core/socket.c4
-rw-r--r--src/core/unit.c15
-rw-r--r--src/coredump/coredump.c376
-rw-r--r--src/coredump/coredumpctl.c130
-rw-r--r--src/firstboot/firstboot.c2
-rw-r--r--src/import/pull-raw.c4
-rw-r--r--src/import/pull-tar.c2
-rw-r--r--src/journal-remote/journal-remote-parse.c431
-rw-r--r--src/journal-remote/journal-remote-parse.h35
-rw-r--r--src/journal-remote/journal-remote-write.c33
-rw-r--r--src/journal-remote/journal-remote-write.h12
-rw-r--r--src/journal-remote/journal-remote.c21
-rw-r--r--src/journal/journald-kmsg.c3
-rw-r--r--src/journal/journald-native.c1
-rw-r--r--src/journal/journald-native.h5
-rw-r--r--src/journal/journald-server.c16
-rw-r--r--src/journal/journald-server.h2
-rw-r--r--src/journal/journald-syslog.c3
-rw-r--r--src/journal/journald.c6
-rw-r--r--src/libsystemd-network/sd-ipv4acd.c2
-rw-r--r--src/login/logind-button.c14
-rw-r--r--src/login/logind-dbus.c2
-rw-r--r--src/login/logind-seat.c4
-rw-r--r--src/login/logind-session.c4
-rw-r--r--src/machine/image-dbus.c2
-rw-r--r--src/machine/machine-dbus.c49
-rw-r--r--src/machine/machine-dbus.h1
-rw-r--r--src/machine/machine.c95
-rw-r--r--src/machine/machine.h2
-rw-r--r--src/machine/machinectl.c59
-rw-r--r--src/machine/machined-dbus.c21
-rw-r--r--src/machine/operation.c4
-rw-r--r--src/machine/org.freedesktop.machine1.conf8
-rw-r--r--src/nspawn/nspawn.c6
-rw-r--r--src/nss-myhostname/nss-myhostname.c8
-rw-r--r--src/nss-mymachines/nss-mymachines.c18
-rw-r--r--src/nss-resolve/nss-resolve.c14
-rw-r--r--src/nss-systemd/nss-systemd.c8
-rw-r--r--src/resolve/resolved-dns-server.c2
-rw-r--r--src/resolve/resolved-dns-transaction.c2
-rw-r--r--src/resolve/resolved-dns-trust-anchor.c2
-rw-r--r--src/resolve/resolved-manager.c78
-rw-r--r--src/resolve/test-dns-packet.c5
-rw-r--r--src/shared/machine-image.c4
-rw-r--r--src/shared/pager.c2
-rw-r--r--src/shared/tests.c35
-rw-r--r--src/shared/tests.h2
-rw-r--r--src/sleep/sleep.c4
-rw-r--r--src/systemctl/systemctl.c4
-rw-r--r--src/systemd/sd-id128.h3
-rw-r--r--src/systemd/sd-messages.h157
-rw-r--r--src/sysusers/sysusers.c2
-rw-r--r--src/test/test-cgroup-mask.c6
-rw-r--r--src/test/test-copy.c25
-rw-r--r--src/test/test-engine.c5
-rw-r--r--src/test/test-execute.c3
-rw-r--r--src/test/test-helper.h5
-rw-r--r--src/test/test-journal-importer.c90
-rw-r--r--src/test/test-path.c2
-rw-r--r--src/test/test-sched-prio.c5
-rw-r--r--src/timedate/timedated.c4
-rw-r--r--src/tmpfiles/tmpfiles.c2
-rw-r--r--src/udev/udev-builtin-net_id.c58
-rw-r--r--test/journal-data/journal-1.txtbin0 -> 586 bytes
-rw-r--r--test/journal-data/journal-2.txtbin0 -> 513 bytes
94 files changed, 6160 insertions, 2378 deletions
diff --git a/.gitignore b/.gitignore
index fe7859c265..924b995bb3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -220,6 +220,7 @@
/test-journal
/test-journal-enum
/test-journal-flush
+/test-journal-importer
/test-journal-init
/test-journal-interleaving
/test-journal-match
diff --git a/ENVIRONMENT.md b/ENVIRONMENT.md
index 1ad2addfee..e542d4ec6f 100644
--- a/ENVIRONMENT.md
+++ b/ENVIRONMENT.md
@@ -59,3 +59,8 @@ systemd-logind:
* `$SYSTEMD_BYPASS_HIBERNATION_MEMORY_CHECK=1` — if set, report that
hibernation is available even if the swap devices do not provide enough room
for it.
+
+installed systemd tests:
+
+* `$SYSTEMD_TEST_DATA` — override the location of test data. This is useful if
+ a test executable is moved to an arbitrary location.
diff --git a/HACKING b/HACKING
index 3ee1c7e340..0d1a93e211 100644
--- a/HACKING
+++ b/HACKING
@@ -51,12 +51,14 @@ systemd's build dependencies:
Putting this all together, here's a series of commands for preparing a patch
for systemd (this example is for Fedora):
+ $ sudo dnf builddep systemd # install build dependencies
+ $ sudo dnf install mkosi # install tool to quickly build images
$ git clone https://github.com/systemd/systemd.git
$ cd systemd
$ vim src/core/main.c # or wherever you'd like to make your changes
- $ dnf builddep systemd # install build dependencies
$ ./autogen.sh c # configure the source tree
$ make -j `nproc` # build it locally, see if everything compiles fine
+ $ make -j `nproc` check # run some simple regression tests
$ sudo mkosi # build a test image
$ sudo systemd-nspawn -bi image.raw # boot up the test image
$ git add -p # interactively put together your patch
diff --git a/Makefile-man.am b/Makefile-man.am
index 6f59658445..e20187d0df 100644
--- a/Makefile-man.am
+++ b/Makefile-man.am
@@ -240,6 +240,7 @@ MANPAGES_ALIAS += \
man/SD_ID128_FORMAT_STR.3 \
man/SD_ID128_FORMAT_VAL.3 \
man/SD_ID128_MAKE.3 \
+ man/SD_ID128_MAKE_STR.3 \
man/SD_ID128_NULL.3 \
man/SD_INFO.3 \
man/SD_JOURNAL_APPEND.3 \
@@ -597,6 +598,7 @@ man/SD_ID128_CONST_STR.3: man/sd-id128.3
man/SD_ID128_FORMAT_STR.3: man/sd-id128.3
man/SD_ID128_FORMAT_VAL.3: man/sd-id128.3
man/SD_ID128_MAKE.3: man/sd-id128.3
+man/SD_ID128_MAKE_STR.3: man/sd-id128.3
man/SD_ID128_NULL.3: man/sd-id128.3
man/SD_INFO.3: man/sd-daemon.3
man/SD_JOURNAL_APPEND.3: man/sd_journal_get_fd.3
@@ -1066,6 +1068,9 @@ man/SD_ID128_FORMAT_VAL.html: man/sd-id128.html
man/SD_ID128_MAKE.html: man/sd-id128.html
$(html-alias)
+man/SD_ID128_MAKE_STR.html: man/sd-id128.html
+ $(html-alias)
+
man/SD_ID128_NULL.html: man/sd-id128.html
$(html-alias)
diff --git a/Makefile.am b/Makefile.am
index c45755f36e..dd10aabd36 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -152,7 +152,6 @@ endif
AM_TESTS_ENVIRONMENT = \
export SYSTEMD_KBD_MODEL_MAP=$(abs_top_srcdir)/src/locale/kbd-model-map; \
export SYSTEMD_LANGUAGE_FALLBACK_MAP=$(abs_top_srcdir)/src/locale/language-fallback-map; \
- export TEST_DIR=$(abs_top_srcdir)/test; \
export PATH=$(abs_top_builddir):$$PATH;
if ENABLE_BASH_COMPLETION
@@ -252,6 +251,8 @@ AM_CPPFLAGS = \
-I $(top_srcdir)/src/libsystemd/sd-device \
-I $(top_srcdir)/src/libsystemd/sd-id128 \
-I $(top_srcdir)/src/libsystemd-network \
+ -DABS_SRC_DIR=\"$(abs_top_srcdir)\" \
+ -DABS_BUILD_DIR=\"$(abs_top_builddir)\" \
$(OUR_CPPFLAGS)
AM_CFLAGS = $(OUR_CFLAGS)
@@ -960,7 +961,9 @@ libbasic_la_SOURCES = \
src/basic/format-util.h \
src/basic/nss-util.h \
src/basic/khash.h \
- src/basic/khash.c
+ src/basic/khash.c \
+ src/basic/journal-importer.h \
+ src/basic/journal-importer.c
nodist_libbasic_la_SOURCES = \
src/basic/errno-from-name.h \
@@ -1596,7 +1599,8 @@ tests += \
test-rlimit-util \
test-signal-util \
test-selinux \
- test-sizeof
+ test-sizeof \
+ test-journal-importer
if HAVE_ACL
tests += \
@@ -1733,6 +1737,8 @@ TEST_DATA_FILES += \
test/test-execute/exec-restrict-namespaces-mnt.service \
test/test-execute/exec-restrict-namespaces-mnt-blacklist.service \
test/test-execute/exec-read-only-path-succeed.service \
+ test/test-execute/exec-privatedevices-yes-capability-sys-rawio.service \
+ test/test-execute/exec-privatedevices-no-capability-sys-rawio.service \
test/bus-policy/hello.conf \
test/bus-policy/methods.conf \
test/bus-policy/ownerships.conf \
@@ -2460,6 +2466,16 @@ test_arphrd_list_SOURCES = \
test_arphrd_list_LDADD = \
libsystemd-shared.la
+test_journal_importer_SOURCES = \
+ src/test/test-journal-importer.c
+
+test_journal_importer_LDADD = \
+ libsystemd-shared.la
+
+TEST_DATA_FILES += \
+ test/journal-data/journal-1.txt \
+ test/journal-data/journal-2.txt
+
# ------------------------------------------------------------------------------
## .PHONY so it always rebuilds it
.PHONY: coverage lcov-run lcov-report coverage-sync
@@ -6600,7 +6616,7 @@ valgrind-tests: $(TESTS)
if $(LIBTOOL) --mode=execute file $$f | grep -q shell; then \
echo -e "$${x}Skipping non-binary $$f"; else \
echo -e "$${x}Running $$f"; \
- $(LIBTOOL) --mode=execute valgrind -q --leak-check=full --max-stackframe=5242880 --error-exitcode=55 $(builddir)/$$f ; fi; \
+ $(AM_TESTS_ENVIRONMENT) $(LIBTOOL) --mode=execute valgrind -q --leak-check=full --max-stackframe=5242880 --error-exitcode=55 $(builddir)/$$f ; fi; \
x="\n\n"; \
done
@@ -6701,14 +6717,14 @@ tests += \
.PHONY: install-tests
install-tests: $(tests) $(TEST_DATA_FILES)
for f in $(tests); do \
- if [ -x .libs/$$f ]; then \
- install -D -m 755 .libs/$$f $(DESTDIR)/$(testsdir)/$$f; \
+ if [ -x $(top_builddir)/.libs/$$f ]; then \
+ install -D -m 755 $(top_builddir)/.libs/$$f $(DESTDIR)/$(testsdir)/$$f; \
else \
- install -D -m 755 $$f $(DESTDIR)/$(testsdir)/$$f; \
+ install -D -m 755 $(top_builddir)/$$f $(DESTDIR)/$(testsdir)/$$f; \
fi; \
done
for f in $(TEST_DATA_FILES); do \
- install -D -m 644 $$f $(DESTDIR)/$(testsdir)/testdata/$${f#test/}; \
+ install -D -m 644 $(top_srcdir)/$$f $(DESTDIR)/$(testsdir)/testdata/$${f#test/}; \
done
diff --git a/hwdb/20-OUI.hwdb b/hwdb/20-OUI.hwdb
index 6bce57305d..f638b0dc34 100644
--- a/hwdb/20-OUI.hwdb
+++ b/hwdb/20-OUI.hwdb
@@ -356,9 +356,6 @@ OUI:70B3D5660*
OUI:70B3D5EFE*
ID_OUI_FROM_DATABASE=MEIDEN SYSTEM SOLUTIONS
-OUI:70B3D5C60*
- ID_OUI_FROM_DATABASE=Aircell Inc
-
OUI:70B3D5C03*
ID_OUI_FROM_DATABASE=XAVi Technologies Corp.
@@ -1100,6 +1097,105 @@ OUI:70B3D55D3*
OUI:70B3D52AD*
ID_OUI_FROM_DATABASE=Opgal Optronic Industries
+OUI:70B3D58EC*
+ ID_OUI_FROM_DATABASE=Rudy Tellert
+
+OUI:70B3D5CF5*
+ ID_OUI_FROM_DATABASE=Petring Energietechnik GmbH
+
+OUI:70B3D5269*
+ ID_OUI_FROM_DATABASE=Gilbarco Veeder-Root ‎
+
+OUI:70B3D5FF7*
+ ID_OUI_FROM_DATABASE=Cybercom AB
+
+OUI:70B3D5DCC*
+ ID_OUI_FROM_DATABASE=Eutron SPA
+
+OUI:70B3D515C*
+ ID_OUI_FROM_DATABASE=Woods Hole Oceanographic Institution
+
+OUI:70B3D5173*
+ ID_OUI_FROM_DATABASE=National TeleConsultants LLC
+
+OUI:70B3D5CAE*
+ ID_OUI_FROM_DATABASE=THEMA
+
+OUI:70B3D55BC*
+ ID_OUI_FROM_DATABASE=LAMTEC Meß- und Regeltechnik für Feuerungen GmbH & Co. KG
+
+OUI:70B3D51B8*
+ ID_OUI_FROM_DATABASE=OES Inc.
+
+OUI:70B3D585A*
+ ID_OUI_FROM_DATABASE=BRUSHIES
+
+OUI:70B3D5FAF*
+ ID_OUI_FROM_DATABASE=Radig Hard & Software
+
+OUI:70B3D50BC*
+ ID_OUI_FROM_DATABASE=Practical Software Studio LLC
+
+OUI:70B3D57A2*
+ ID_OUI_FROM_DATABASE=Alpha ESS Co., Ltd.
+
+OUI:70B3D5724*
+ ID_OUI_FROM_DATABASE=Quan International Co., Ltd.
+
+OUI:70B3D553B*
+ ID_OUI_FROM_DATABASE=Mr.Loop
+
+OUI:70B3D5EBE*
+ ID_OUI_FROM_DATABASE=Sierra Pacific Innovations Corp
+
+OUI:70B3D5103*
+ ID_OUI_FROM_DATABASE=HANYOUNG NUX CO.,LTD
+
+OUI:70B3D504A*
+ ID_OUI_FROM_DATABASE=Gecko Robotics Inc
+
+OUI:70B3D5040*
+ ID_OUI_FROM_DATABASE=Savari Inc
+
+OUI:70B3D592A*
+ ID_OUI_FROM_DATABASE=Miravue
+
+OUI:70B3D5063*
+ ID_OUI_FROM_DATABASE=PoolDigital GmbH & Co. KG
+
+OUI:70B3D5209*
+ ID_OUI_FROM_DATABASE=SmartNodes
+
+OUI:70B3D514C*
+ ID_OUI_FROM_DATABASE=CRDE
+
+OUI:70B3D5AB8*
+ ID_OUI_FROM_DATABASE=HORIBA MEDICAL
+
+OUI:70B3D5F9E*
+ ID_OUI_FROM_DATABASE=International Center for Elementary Particle Physics, The University of Tokyo
+
+OUI:70B3D59C6*
+ ID_OUI_FROM_DATABASE=Overspeed SARL
+
+OUI:70B3D507A*
+ ID_OUI_FROM_DATABASE=ZAO ZEO
+
+OUI:70B3D506B*
+ ID_OUI_FROM_DATABASE=U-Tech
+
+OUI:70B3D5F77*
+ ID_OUI_FROM_DATABASE=Satcube AB
+
+OUI:70B3D57A1*
+ ID_OUI_FROM_DATABASE=Excelfore Corporation
+
+OUI:70B3D590D*
+ ID_OUI_FROM_DATABASE=Modtronix Engineering
+
+OUI:70B3D5C60*
+ ID_OUI_FROM_DATABASE=Gogo BA
+
OUI:70B3D5D60*
ID_OUI_FROM_DATABASE=Flintab AB
@@ -2153,6 +2249,117 @@ OUI:70B3D57F4*
OUI:70B3D5122*
ID_OUI_FROM_DATABASE=Henri Systems Holland bv
+OUI:70B3D5767*
+ ID_OUI_FROM_DATABASE=FRANKLIN FRANCE
+
+OUI:70B3D5465*
+ ID_OUI_FROM_DATABASE=ENERGISME
+
+OUI:70B3D5E09*
+ ID_OUI_FROM_DATABASE=L-3 communications ComCept Division
+
+OUI:70B3D5A07*
+ ID_OUI_FROM_DATABASE=IoTrek Technology Private Limited
+
+OUI:70B3D521D*
+ ID_OUI_FROM_DATABASE=iRF - Intelligent RF Solutions, LLC
+
+OUI:70B3D5E9C*
+ ID_OUI_FROM_DATABASE=ATG UV Technology
+
+OUI:70B3D5267*
+ ID_OUI_FROM_DATABASE=Zehntner Testing Instruments
+
+OUI:70B3D539E*
+ ID_OUI_FROM_DATABASE=Lanmark Controls Inc.
+
+OUI:70B3D5C2E*
+ ID_OUI_FROM_DATABASE=Triax A/S
+
+OUI:70B3D50EF*
+ ID_OUI_FROM_DATABASE=Dextera Labs
+
+OUI:70B3D54C2*
+ ID_OUI_FROM_DATABASE=hera Laborsysteme GmbH
+
+OUI:70B3D50A1*
+ ID_OUI_FROM_DATABASE=PTN Electronics Limited
+
+OUI:70B3D5AA4*
+ ID_OUI_FROM_DATABASE=Pullnet Technology,S.L.
+
+OUI:70B3D5C68*
+ ID_OUI_FROM_DATABASE=Mini Solution Co. Ltd.
+
+OUI:70B3D581A*
+ ID_OUI_FROM_DATABASE=Joehl & Koeferli AG
+
+OUI:70B3D586E*
+ ID_OUI_FROM_DATABASE=Profcon AB
+
+OUI:70B3D50E8*
+ ID_OUI_FROM_DATABASE=Grossenbacher Systeme AG
+
+OUI:70B3D59D9*
+ ID_OUI_FROM_DATABASE=ATX Networks Corp
+
+OUI:70B3D5348*
+ ID_OUI_FROM_DATABASE=BÄR Bahnsicherung AG
+
+OUI:70B3D5A30*
+ ID_OUI_FROM_DATABASE=SHEN ZHEN HUAWANG TECHNOLOGY CO; LTD
+
+OUI:70B3D5DFD*
+ ID_OUI_FROM_DATABASE=Contiweb
+
+OUI:70B3D5B30*
+ ID_OUI_FROM_DATABASE=Systolé Hardware B.V.
+
+OUI:70B3D5745*
+ ID_OUI_FROM_DATABASE=TMSI LLC
+
+OUI:70B3D53BF*
+ ID_OUI_FROM_DATABASE=Star Electronics GmbH & Co. KG
+
+OUI:70B3D5D1C*
+ ID_OUI_FROM_DATABASE=Specialised Imaging Limited
+
+OUI:70B3D5E8E*
+ ID_OUI_FROM_DATABASE=Macnica Technology
+
+OUI:70B3D5ADF*
+ ID_OUI_FROM_DATABASE=Seraphim Optronics Ltd
+
+OUI:70B3D522C*
+ ID_OUI_FROM_DATABASE=Hiquel Elektronik- und Anlagenbau GmbH
+
+OUI:70B3D52A2*
+ ID_OUI_FROM_DATABASE=Visualware, Inc.
+
+OUI:70B3D5DCE*
+ ID_OUI_FROM_DATABASE=Stahl GmbH
+
+OUI:70B3D5D08*
+ ID_OUI_FROM_DATABASE=Veeco Instruments
+
+OUI:70B3D5630*
+ ID_OUI_FROM_DATABASE=LGE
+
+OUI:70B3D5873*
+ ID_OUI_FROM_DATABASE=Vishay Nobel AB
+
+OUI:70B3D5653*
+ ID_OUI_FROM_DATABASE=Luxar Tech, Inc.
+
+OUI:70B3D5F1F*
+ ID_OUI_FROM_DATABASE=HKC Limited
+
+OUI:70B3D5AF6*
+ ID_OUI_FROM_DATABASE=S.C.E. srl
+
+OUI:70B3D5F37*
+ ID_OUI_FROM_DATABASE=Mitsubishi Electric Micro-Computer Application Software Co.,Ltd.
+
OUI:70B3D5494*
ID_OUI_FROM_DATABASE=Schildknecht AG
@@ -2225,9 +2432,6 @@ OUI:70B3D5061*
OUI:70B3D5383*
ID_OUI_FROM_DATABASE=LPA Excil Electronics
-OUI:70B3D59F6*
- ID_OUI_FROM_DATABASE=Edgeware AB
-
OUI:70B3D5504*
ID_OUI_FROM_DATABASE=Xsight Systems Ltd.
@@ -3218,6 +3422,84 @@ OUI:70B3D5E98*
OUI:70B3D5443*
ID_OUI_FROM_DATABASE=Slot3 GmbH
+OUI:70B3D5952*
+ ID_OUI_FROM_DATABASE=REQUEA
+
+OUI:70B3D5BAA*
+ ID_OUI_FROM_DATABASE=Device Solutions Ltd
+
+OUI:70B3D5C5C*
+ ID_OUI_FROM_DATABASE=Layer Logic Inc
+
+OUI:70B3D5F3B*
+ ID_OUI_FROM_DATABASE=Epdm Pty Ltd
+
+OUI:70B3D59F6*
+ ID_OUI_FROM_DATABASE=Edgeware AB
+
+OUI:70B3D536F*
+ ID_OUI_FROM_DATABASE=BuddyGuard GmbH
+
+OUI:70B3D5222*
+ ID_OUI_FROM_DATABASE=Marioff Corporation Oy
+
+OUI:70B3D50E3*
+ ID_OUI_FROM_DATABASE=SinTau SrL
+
+OUI:70B3D52E5*
+ ID_OUI_FROM_DATABASE=Fläkt Woods AB
+
+OUI:70B3D588D*
+ ID_OUI_FROM_DATABASE=LG Electronics
+
+OUI:70B3D5A8B*
+ ID_OUI_FROM_DATABASE=Giant Power Technology Biomedical Corporation
+
+OUI:70B3D50F1*
+ ID_OUI_FROM_DATABASE=Beijing One City Science & Technology Co., LTD
+
+OUI:70B3D5F70*
+ ID_OUI_FROM_DATABASE=Honeywell
+
+OUI:70B3D59CE*
+ ID_OUI_FROM_DATABASE=Terragene S.A
+
+OUI:70B3D5CEA*
+ ID_OUI_FROM_DATABASE=Computerwise, Inc.
+
+OUI:70B3D5F1D*
+ ID_OUI_FROM_DATABASE=Critical Link LLC
+
+OUI:70B3D5F05*
+ ID_OUI_FROM_DATABASE=Motomuto Aps
+
+OUI:70B3D5FFC*
+ ID_OUI_FROM_DATABASE=Symetrics Industries d.b.a. Extant Aerospace
+
+OUI:70B3D530E*
+ ID_OUI_FROM_DATABASE=Private
+
+OUI:70B3D54F8*
+ ID_OUI_FROM_DATABASE=Private
+
+OUI:70B3D55E0*
+ ID_OUI_FROM_DATABASE=Hexagon Metrology SAS
+
+OUI:70B3D5B2B*
+ ID_OUI_FROM_DATABASE=Vtron Pty Ltd
+
+OUI:70B3D59D0*
+ ID_OUI_FROM_DATABASE=RJ45 Technologies
+
+OUI:70B3D5672*
+ ID_OUI_FROM_DATABASE=KLEIBER Infrared GmbH
+
+OUI:70B3D5572*
+ ID_OUI_FROM_DATABASE=CRDE
+
+OUI:70B3D5927*
+ ID_OUI_FROM_DATABASE=LG Electronics
+
OUI:70B3D566B*
ID_OUI_FROM_DATABASE=Innitive B.V.
@@ -3629,9 +3911,6 @@ OUI:70B3D5010*
OUI:70B3D586D*
ID_OUI_FROM_DATABASE=Census Digital Incorporated
-OUI:70B3D560B*
- ID_OUI_FROM_DATABASE=Edgeware AB
-
OUI:70B3D5ADD*
ID_OUI_FROM_DATABASE=GHL Systems Berhad
@@ -4247,11 +4526,146 @@ OUI:70B3D590B*
OUI:70B3D5C4B*
ID_OUI_FROM_DATABASE=ANKER-EAST
+OUI:70B3D568E*
+ ID_OUI_FROM_DATABASE=CEA Technologies Pty Ltd
+
OUI:70B3D5542*
ID_OUI_FROM_DATABASE=RTDS Technologies Inc.
-OUI:70B3D568E*
- ID_OUI_FROM_DATABASE=CEA Technologies Pty Ltd
+OUI:70B3D51E4*
+ ID_OUI_FROM_DATABASE=Tecnologix s.r.l.
+
+OUI:70B3D51C5*
+ ID_OUI_FROM_DATABASE=ELSAG
+
+OUI:70B3D5635*
+ ID_OUI_FROM_DATABASE=Cosylab d.d.
+
+OUI:70B3D5D84*
+ ID_OUI_FROM_DATABASE=Sentry360
+
+OUI:70B3D575A*
+ ID_OUI_FROM_DATABASE=Standard Backhaul Communications
+
+OUI:70B3D5482*
+ ID_OUI_FROM_DATABASE=Aeryon Labs Inc
+
+OUI:70B3D5FBF*
+ ID_OUI_FROM_DATABASE=SenSys (Design Electronics Ltd)
+
+OUI:70B3D5825*
+ ID_OUI_FROM_DATABASE=TATTILE SRL
+
+OUI:70B3D5D37*
+ ID_OUI_FROM_DATABASE=Sicon srl
+
+OUI:70B3D5039*
+ ID_OUI_FROM_DATABASE=DoWoo Digitech
+
+OUI:70B3D527E*
+ ID_OUI_FROM_DATABASE=Mettler Toledo Hi Speed
+
+OUI:70B3D5F83*
+ ID_OUI_FROM_DATABASE=Tata Communications Ltd.
+
+OUI:70B3D560B*
+ ID_OUI_FROM_DATABASE=Edgeware AB
+
+OUI:70B3D50D9*
+ ID_OUI_FROM_DATABASE=Brechbuehler AG
+
+OUI:70B3D537C*
+ ID_OUI_FROM_DATABASE=Merus Power Dynamics Ltd.
+
+OUI:70B3D5EF8*
+ ID_OUI_FROM_DATABASE=DKS Dienstl.ges. f. Komm.anl. d. Stadt- u. Reg.verk. mbH
+
+OUI:70B3D54CF*
+ ID_OUI_FROM_DATABASE=GREEN HOUSE CO., LTD.
+
+OUI:70B3D5D58*
+ ID_OUI_FROM_DATABASE=Idyllic Engineering Pte Ltd
+
+OUI:70B3D5954*
+ ID_OUI_FROM_DATABASE=Dot System S.r.l.
+
+OUI:70B3D5D40*
+ ID_OUI_FROM_DATABASE=CRDE
+
+OUI:70B3D5880*
+ ID_OUI_FROM_DATABASE=Skopei B.V.
+
+OUI:70B3D551C*
+ ID_OUI_FROM_DATABASE=ATX Networks Corp
+
+OUI:70B3D5FBD*
+ ID_OUI_FROM_DATABASE=MB connect line GmbH Fernwartungssysteme
+
+OUI:70B3D5511*
+ ID_OUI_FROM_DATABASE=Next Sight srl
+
+OUI:70B3D5FA7*
+ ID_OUI_FROM_DATABASE=Nordson Corporation
+
+OUI:70B3D585E*
+ ID_OUI_FROM_DATABASE=XLOGIC srl
+
+OUI:70B3D531C*
+ ID_OUI_FROM_DATABASE=FINANCIERE DE L'OMBREE (eolane)
+
+OUI:70B3D5C41*
+ ID_OUI_FROM_DATABASE=Merlin CSI
+
+OUI:70B3D5902*
+ ID_OUI_FROM_DATABASE=Unlimiterhear co.,ltd. taiwan branch
+
+OUI:70B3D5AD1*
+ ID_OUI_FROM_DATABASE=Sensile Technologies SA
+
+OUI:70B3D5397*
+ ID_OUI_FROM_DATABASE=Guangxi Hunter Information Industry Co.,Ltd
+
+OUI:70B3D5637*
+ ID_OUI_FROM_DATABASE=INEO-SENSE
+
+OUI:70B3D5378*
+ ID_OUI_FROM_DATABASE=synchrotron SOLEIL
+
+OUI:70B3D57B2*
+ ID_OUI_FROM_DATABASE=Rail Power Systems GmbH
+
+OUI:70B3D5F12*
+ ID_OUI_FROM_DATABASE=Incoil Induktion AB
+
+OUI:70B3D5997*
+ ID_OUI_FROM_DATABASE=ProTom International
+
+OUI:70B3D5288*
+ ID_OUI_FROM_DATABASE=Bresslergroup
+
+OUI:70B3D54BE*
+ ID_OUI_FROM_DATABASE=GY-FX SAS
+
+OUI:70B3D510F*
+ ID_OUI_FROM_DATABASE=neQis
+
+OUI:70B3D598C*
+ ID_OUI_FROM_DATABASE=University of Wisconsin Madison - Department of High Energy Physics
+
+OUI:70B3D5E04*
+ ID_OUI_FROM_DATABASE=Combilent
+
+OUI:70B3D5022*
+ ID_OUI_FROM_DATABASE=Ravelin Ltd
+
+OUI:70B3D5135*
+ ID_OUI_FROM_DATABASE=DORLET SAU
+
+OUI:70B3D5002*
+ ID_OUI_FROM_DATABASE=Gogo BA
+
+OUI:70B3D5FF1*
+ ID_OUI_FROM_DATABASE=Data Strategy Limited
OUI:70B3D58AB*
ID_OUI_FROM_DATABASE=EMAC, Inc.
@@ -5258,6 +5672,129 @@ OUI:70B3D5FF4*
OUI:70B3D5760*
ID_OUI_FROM_DATABASE=QUALITTEQ LLC
+OUI:70B3D5272*
+ ID_OUI_FROM_DATABASE=TELECOM SANTE
+
+OUI:70B3D520D*
+ ID_OUI_FROM_DATABASE=Engage Technologies
+
+OUI:70B3D5D55*
+ ID_OUI_FROM_DATABASE=WM Design s.r.o
+
+OUI:70B3D5E67*
+ ID_OUI_FROM_DATABASE=APPLIED PROCESSING
+
+OUI:70B3D5523*
+ ID_OUI_FROM_DATABASE=Tibit Communications
+
+OUI:70B3D5241*
+ ID_OUI_FROM_DATABASE=Bolide Technology Group, Inc.
+
+OUI:70B3D5D25*
+ ID_OUI_FROM_DATABASE=ENGenesis
+
+OUI:70B3D54A9*
+ ID_OUI_FROM_DATABASE=WARECUBE,INC
+
+OUI:70B3D52F8*
+ ID_OUI_FROM_DATABASE=Tunstall A/S
+
+OUI:70B3D50A3*
+ ID_OUI_FROM_DATABASE=Solace Systems Inc.
+
+OUI:70B3D5FC2*
+ ID_OUI_FROM_DATABASE=HUNTER LIBERTY CORPORATION
+
+OUI:70B3D561C*
+ ID_OUI_FROM_DATABASE=Earth Works
+
+OUI:70B3D56EA*
+ ID_OUI_FROM_DATABASE=Edgeware AB
+
+OUI:70B3D5A05*
+ ID_OUI_FROM_DATABASE=Transas Marine Limited
+
+OUI:70B3D5AA6*
+ ID_OUI_FROM_DATABASE=Proximus
+
+OUI:70B3D51D4*
+ ID_OUI_FROM_DATABASE=Brinkmann Audio GmbH
+
+OUI:70B3D55E5*
+ ID_OUI_FROM_DATABASE=HAIYANG OLIX CO.,LTD.
+
+OUI:70B3D5E2C*
+ ID_OUI_FROM_DATABASE=Fourth Frontier Technologies Private Limited
+
+OUI:70B3D55CA*
+ ID_OUI_FROM_DATABASE=ACD Elekronik GmbH
+
+OUI:70B3D5427*
+ ID_OUI_FROM_DATABASE=Key Chemical & Equipment Company
+
+OUI:70B3D5753*
+ ID_OUI_FROM_DATABASE=HCH. Kündig & CIE. AG
+
+OUI:70B3D5A18*
+ ID_OUI_FROM_DATABASE=Embedded Systems Lukasz Panasiuk
+
+OUI:70B3D50C2*
+ ID_OUI_FROM_DATABASE=LOOK EASY INTERNATIONAL LIMITED
+
+OUI:70B3D51DE*
+ ID_OUI_FROM_DATABASE=DYCEC, S.A.
+
+OUI:70B3D516C*
+ ID_OUI_FROM_DATABASE=OCEAN
+
+OUI:70B3D5778*
+ ID_OUI_FROM_DATABASE=Lumacron Technology Ltd.
+
+OUI:70B3D505D*
+ ID_OUI_FROM_DATABASE=KOMS Co.,Ltd.
+
+OUI:70B3D5EC8*
+ ID_OUI_FROM_DATABASE=Viko Elektrik-Elektronik A.Ş.
+
+OUI:70B3D53F0*
+ ID_OUI_FROM_DATABASE=Intervala
+
+OUI:70B3D5BD1*
+ ID_OUI_FROM_DATABASE=CableLabs
+
+OUI:70B3D5B1A*
+ ID_OUI_FROM_DATABASE=Aaronia AG
+
+OUI:70B3D5F0D*
+ ID_OUI_FROM_DATABASE=MeQ Inc.
+
+OUI:70B3D5215*
+ ID_OUI_FROM_DATABASE=Dataspeed Inc
+
+OUI:70B3D5115*
+ ID_OUI_FROM_DATABASE=Welltec Corp.
+
+OUI:70B3D5C45*
+ ID_OUI_FROM_DATABASE=Stiebel Eltron GmbH
+
+OUI:70B3D5B56*
+ ID_OUI_FROM_DATABASE=Power Electronics Espana, S.L.
+
+OUI:70B3D5911*
+ ID_OUI_FROM_DATABASE=Equatel
+
+OUI:70B3D5661*
+ ID_OUI_FROM_DATABASE=DesignA Electronics Limited
+
+OUI:70B3D5011*
+ ID_OUI_FROM_DATABASE=Sumer Data S.L
+
+OUI:70B3D52C2*
+ ID_OUI_FROM_DATABASE=Quantum Detectors
+
+OUI:70B3D5BF3*
+ ID_OUI_FROM_DATABASE=CG-WIRELESS
+
OUI:1C8776D*
ID_OUI_FROM_DATABASE=Qivivo
@@ -5690,9 +6227,6 @@ OUI:78CA83E*
OUI:38B8EBB*
ID_OUI_FROM_DATABASE=ExaScaler Inc.
-OUI:38FDFEC*
- ID_OUI_FROM_DATABASE=New Garden Co., Ltd.
-
OUI:38FDFE5*
ID_OUI_FROM_DATABASE=CaptiveAire Systems Inc.
@@ -6014,6 +6548,81 @@ OUI:8CC8F4C*
OUI:40F385D*
ID_OUI_FROM_DATABASE=Digital Bros S.p.A.
+OUI:40F3854*
+ ID_OUI_FROM_DATABASE=Embedded IQ
+
+OUI:40F3859*
+ ID_OUI_FROM_DATABASE=Fast Precision Technologies Co. Ltd.
+
+OUI:40F3850*
+ ID_OUI_FROM_DATABASE=SubPac
+
+OUI:1CA0D32*
+ ID_OUI_FROM_DATABASE=NovTech, Inc.
+
+OUI:38FDFEC*
+ ID_OUI_FROM_DATABASE=New Garden Co., Ltd.
+
+OUI:1CA0D3E*
+ ID_OUI_FROM_DATABASE=Exicom Tele-Systems Ltd.
+
+OUI:A411630*
+ ID_OUI_FROM_DATABASE=Adetel Equipment
+
+OUI:A411637*
+ ID_OUI_FROM_DATABASE=SHENZHEN YIWANJIA INFORMATION TECHNOLOGY CO.,LTD
+
+OUI:144FD72*
+ ID_OUI_FROM_DATABASE=FedEx Services OTI
+
+OUI:144FD79*
+ ID_OUI_FROM_DATABASE=Emerson Network Power (India) Pvt. Ltd.
+
+OUI:144FD7D*
+ ID_OUI_FROM_DATABASE=Shanghai B&A Technology Co., Ltd
+
+OUI:144FD73*
+ ID_OUI_FROM_DATABASE=Qingdao Wodatong Electronics Co., Ltd.
+
+OUI:98AAFC0*
+ ID_OUI_FROM_DATABASE=Dalian Eastern Display Co., Ltd.
+
+OUI:98AAFC9*
+ ID_OUI_FROM_DATABASE=BEAM Authentic
+
+OUI:98AAFCE*
+ ID_OUI_FROM_DATABASE=Comarch S.A.
+
+OUI:98AAFC8*
+ ID_OUI_FROM_DATABASE=Beijing Tiandi-Marco Electro-Hydraulic Control System Company Ltd.
+
+OUI:98AAFCC*
+ ID_OUI_FROM_DATABASE=dots Inc.
+
+OUI:08ED023*
+ ID_OUI_FROM_DATABASE=Jiangsu Logread Network Technology Co., LTD.
+
+OUI:08ED026*
+ ID_OUI_FROM_DATABASE=SANGO ELECTRONICS CO
+
+OUI:08ED024*
+ ID_OUI_FROM_DATABASE=Fio Corporation
+
+OUI:60D7E3D*
+ ID_OUI_FROM_DATABASE=Quantronix, Inc.
+
+OUI:60D7E36*
+ ID_OUI_FROM_DATABASE=Ameli s.r.l.
+
+OUI:60D7E3B*
+ ID_OUI_FROM_DATABASE=Nextivity
+
+OUI:60D7E30*
+ ID_OUI_FROM_DATABASE=Avalun
+
+OUI:F023B98*
+ ID_OUI_FROM_DATABASE=G3 TECHNOLOGIES< INC
+
OUI:1C8776C*
ID_OUI_FROM_DATABASE=Strone Technology
@@ -6785,6 +7394,66 @@ OUI:8CC8F4A*
OUI:40F3856*
ID_OUI_FROM_DATABASE=Lennox International Incorporated
+OUI:40F3855*
+ ID_OUI_FROM_DATABASE=KATO ENGINEERING INC.
+
+OUI:1CA0D35*
+ ID_OUI_FROM_DATABASE=Dynamic Connect (Suzhou) Hi-Tech Electronic Co.,Ltd.
+
+OUI:1CA0D37*
+ ID_OUI_FROM_DATABASE=Private
+
+OUI:A411634*
+ ID_OUI_FROM_DATABASE=AlterG, Inc.
+
+OUI:1CA0D33*
+ ID_OUI_FROM_DATABASE=SAVELEC
+
+OUI:A411631*
+ ID_OUI_FROM_DATABASE=INTER CONTROL Hermann Köhler Elektrik GmbH & Co.KG
+
+OUI:144FD77*
+ ID_OUI_FROM_DATABASE=Shenzhen V-Streaming Technology Co., Ltd.
+
+OUI:144FD7A*
+ ID_OUI_FROM_DATABASE=Unirobot Corporation
+
+OUI:98AAFC1*
+ ID_OUI_FROM_DATABASE=SURTEC
+
+OUI:08ED028*
+ ID_OUI_FROM_DATABASE=HANTAS CO., LTD.
+
+OUI:08ED027*
+ ID_OUI_FROM_DATABASE=Eleven Engineering Incorporated
+
+OUI:08ED022*
+ ID_OUI_FROM_DATABASE=TES Touch Embedded Solutions Inc.
+
+OUI:08ED02E*
+ ID_OUI_FROM_DATABASE=Telstra Corporation Limited
+
+OUI:60D7E3C*
+ ID_OUI_FROM_DATABASE=Zhejiang Send Intelligent Technology,Ltd
+
+OUI:60D7E38*
+ ID_OUI_FROM_DATABASE=HindlePower, Inc
+
+OUI:60D7E3A*
+ ID_OUI_FROM_DATABASE=Wilderness Labs Inc.
+
+OUI:60D7E31*
+ ID_OUI_FROM_DATABASE=Elap s.r.l.
+
+OUI:04714B1*
+ ID_OUI_FROM_DATABASE=uAvionix Corporation
+
+OUI:04714B2*
+ ID_OUI_FROM_DATABASE=Shenzhen WayOS Technology Crop., Ltd.
+
+OUI:04714B8*
+ ID_OUI_FROM_DATABASE=Energport Inc
+
OUI:1C87765*
ID_OUI_FROM_DATABASE=Zhuhai MYZR Technology Co.,Ltd
@@ -7505,9 +8174,6 @@ OUI:AC64DDD*
OUI:AC64DD0*
ID_OUI_FROM_DATABASE=Jia-Teng
-OUI:4CE1731*
- ID_OUI_FROM_DATABASE=Datastorm Technologies Inc.
-
OUI:4CE1733*
ID_OUI_FROM_DATABASE=outpaceIO
@@ -7580,6 +8246,93 @@ OUI:8CC8F48*
OUI:8CC8F4E*
ID_OUI_FROM_DATABASE=Evaporcool Solutions
+OUI:40F385B*
+ ID_OUI_FROM_DATABASE=URMET Home & Building Solutions Pty Ltd
+
+OUI:40F3858*
+ ID_OUI_FROM_DATABASE=Teleepoch Ltd
+
+OUI:1CA0D3B*
+ ID_OUI_FROM_DATABASE=Guang Dong He Zheng Network Technology Co.,Ltd
+
+OUI:1CA0D3D*
+ ID_OUI_FROM_DATABASE=ERATO (HK) Corporation Limited
+
+OUI:1CA0D3A*
+ ID_OUI_FROM_DATABASE=DSM Messtechnik GmbH
+
+OUI:1CA0D38*
+ ID_OUI_FROM_DATABASE=Desarrollos y Soluciones Guinea I+D S.L.
+
+OUI:A411638*
+ ID_OUI_FROM_DATABASE=Dspread Technology (Beijing) Inc.
+
+OUI:A411639*
+ ID_OUI_FROM_DATABASE=accesso Technology Group
+
+OUI:A41163A*
+ ID_OUI_FROM_DATABASE=ISE GmbH
+
+OUI:A411635*
+ ID_OUI_FROM_DATABASE=Carbon, Inc.
+
+OUI:4CE1731*
+ ID_OUI_FROM_DATABASE=Nexoforge Inc.
+
+OUI:144FD70*
+ ID_OUI_FROM_DATABASE=annapurnalabs
+
+OUI:144FD75*
+ ID_OUI_FROM_DATABASE=FLS FINLAND OY
+
+OUI:144FD74*
+ ID_OUI_FROM_DATABASE=Red Technology Limited
+
+OUI:98AAFCD*
+ ID_OUI_FROM_DATABASE=MCS Micronic Computer Systeme GmbH
+
+OUI:98AAFC7*
+ ID_OUI_FROM_DATABASE=Shenzhen Hubsan Technology Co.,LTD.
+
+OUI:08ED02C*
+ ID_OUI_FROM_DATABASE=Guard RFID Solutions
+
+OUI:08ED021*
+ ID_OUI_FROM_DATABASE=Imperx, Inc
+
+OUI:60D7E34*
+ ID_OUI_FROM_DATABASE=Hemisphere GNSS
+
+OUI:60D7E37*
+ ID_OUI_FROM_DATABASE=Phase One A/S
+
+OUI:60D7E33*
+ ID_OUI_FROM_DATABASE=SKS Automaatio oy
+
+OUI:60D7E3E*
+ ID_OUI_FROM_DATABASE=HuBDIC CO.,LTD
+
+OUI:04714BB*
+ ID_OUI_FROM_DATABASE=DIGIBEST TECHNOLOGY CO., LTD.
+
+OUI:04714B6*
+ ID_OUI_FROM_DATABASE=Armstrong Fluid Technology
+
+OUI:04714B4*
+ ID_OUI_FROM_DATABASE=Apparatebau Gauting GmbH
+
+OUI:04714BE*
+ ID_OUI_FROM_DATABASE=Gimso Mobile Ltd
+
+OUI:F023B90*
+ ID_OUI_FROM_DATABASE=Aquametro AG
+
+OUI:F023B99*
+ ID_OUI_FROM_DATABASE=Emu Technology
+
+OUI:F023B91*
+ ID_OUI_FROM_DATABASE=Ubiant
+
OUI:1C8776B*
ID_OUI_FROM_DATABASE=Hekatron Vertriebs GmbH
@@ -8420,6 +9173,78 @@ OUI:8CC8F45*
OUI:8CC8F43*
ID_OUI_FROM_DATABASE=TOHO DENKI IND.CO.,LTD
+OUI:40F385A*
+ ID_OUI_FROM_DATABASE=Creanord
+
+OUI:40F3857*
+ ID_OUI_FROM_DATABASE=PALAZZETTI LELIO SPA
+
+OUI:1CA0D34*
+ ID_OUI_FROM_DATABASE=NPO TELECOM JSC
+
+OUI:1CA0D30*
+ ID_OUI_FROM_DATABASE=OOO Tekhnotronika
+
+OUI:1CA0D3C*
+ ID_OUI_FROM_DATABASE=LYT inc.
+
+OUI:1CA0D39*
+ ID_OUI_FROM_DATABASE=Cirque Audio Technology Co., Ltd
+
+OUI:1CA0D31*
+ ID_OUI_FROM_DATABASE=Jabil circuit italia srl
+
+OUI:A41163B*
+ ID_OUI_FROM_DATABASE=Moog Music Inc.
+
+OUI:A41163D*
+ ID_OUI_FROM_DATABASE=SHENZHEN ZHISHI TECHNOLOGY CO., LTD.
+
+OUI:A411632*
+ ID_OUI_FROM_DATABASE=Allgo Tech. (Beijing) Co.,Ltd
+
+OUI:144FD7C*
+ ID_OUI_FROM_DATABASE=D&S Cable Industries (HK) Limited
+
+OUI:144FD7B*
+ ID_OUI_FROM_DATABASE=Arkus-ST Ltd
+
+OUI:98AAFCA*
+ ID_OUI_FROM_DATABASE=SENKO Co.,Ltd.
+
+OUI:98AAFC6*
+ ID_OUI_FROM_DATABASE=Mekotronics Co., Ltd
+
+OUI:08ED029*
+ ID_OUI_FROM_DATABASE=Savox Communications
+
+OUI:08ED02B*
+ ID_OUI_FROM_DATABASE=Szok Energy and Communication Co., Ltd.
+
+OUI:60D7E39*
+ ID_OUI_FROM_DATABASE=LongSung Technology (Shanghai) Co.,Ltd.
+
+OUI:04714BC*
+ ID_OUI_FROM_DATABASE=KittyHawk Corporation
+
+OUI:04714B7*
+ ID_OUI_FROM_DATABASE=Omylis Pte Ltd
+
+OUI:04714B5*
+ ID_OUI_FROM_DATABASE=Bureau Electronique Appliquee
+
+OUI:04714B0*
+ ID_OUI_FROM_DATABASE=Neurio Technology Inc.
+
+OUI:F023B9B*
+ ID_OUI_FROM_DATABASE=Q Core Medical Ltd
+
+OUI:F023B9D*
+ ID_OUI_FROM_DATABASE=Private
+
+OUI:F023B96*
+ ID_OUI_FROM_DATABASE=Xiamen Jinhaode Electronic Co.,Ltd
+
OUI:1C87740*
ID_OUI_FROM_DATABASE=Philips Personal Health Solutions
@@ -8861,9 +9686,6 @@ OUI:38FDFEB*
OUI:38FDFE4*
ID_OUI_FROM_DATABASE=New Telecom Solutions LLC
-OUI:38FDFE9*
- ID_OUI_FROM_DATABASE=OOO Group of Industrial Technologies
-
OUI:5CF2860*
ID_OUI_FROM_DATABASE=Hangzhou Signwei Electronics Technology Co., Ltd
@@ -9122,6 +9944,96 @@ OUI:8CC8F44*
OUI:40F3852*
ID_OUI_FROM_DATABASE=Beijing Zongheng Electro-Mechanical Technology Development Co.
+OUI:40F3853*
+ ID_OUI_FROM_DATABASE=IntelliDesign Pty Ltd
+
+OUI:40F3851*
+ ID_OUI_FROM_DATABASE=Johnson Matthey
+
+OUI:40F385C*
+ ID_OUI_FROM_DATABASE=Clixxo Broadband Private Limited
+
+OUI:40F385E*
+ ID_OUI_FROM_DATABASE=BBB Inc.
+
+OUI:1CA0D36*
+ ID_OUI_FROM_DATABASE=Intertecno SRL NISUTA
+
+OUI:A411636*
+ ID_OUI_FROM_DATABASE=Beijing XiaoRui Technology Co., Ltd
+
+OUI:A411633*
+ ID_OUI_FROM_DATABASE=Pax
+
+OUI:A41163C*
+ ID_OUI_FROM_DATABASE=Viloc
+
+OUI:A41163E*
+ ID_OUI_FROM_DATABASE=tinylogics
+
+OUI:144FD78*
+ ID_OUI_FROM_DATABASE=NPort Networks Inc.,
+
+OUI:144FD76*
+ ID_OUI_FROM_DATABASE=i-SENS, Inc.
+
+OUI:144FD71*
+ ID_OUI_FROM_DATABASE=Zehnder Group AG
+
+OUI:144FD7E*
+ ID_OUI_FROM_DATABASE=Edan Instruments, Inc.
+
+OUI:98AAFC5*
+ ID_OUI_FROM_DATABASE=SPM Instrument AB
+
+OUI:98AAFC2*
+ ID_OUI_FROM_DATABASE=Shenzhen UniStrong Science & Technology Co., Ltd
+
+OUI:38FDFE9*
+ ID_OUI_FROM_DATABASE=OOO Group of Industrial Technologies
+
+OUI:98AAFC4*
+ ID_OUI_FROM_DATABASE=RPE RADICO
+
+OUI:98AAFC3*
+ ID_OUI_FROM_DATABASE=Nexus Electrical(Jiaxing) Limited
+
+OUI:98AAFCB*
+ ID_OUI_FROM_DATABASE=Resonant Systems Inc.
+
+OUI:08ED025*
+ ID_OUI_FROM_DATABASE=Vigitron Inc.
+
+OUI:08ED02D*
+ ID_OUI_FROM_DATABASE=Origami Energy Ltd
+
+OUI:08ED020*
+ ID_OUI_FROM_DATABASE=D2SLink Systems
+
+OUI:08ED02A*
+ ID_OUI_FROM_DATABASE=Victiana SRL
+
+OUI:60D7E35*
+ ID_OUI_FROM_DATABASE=Revol Technologies inc
+
+OUI:60D7E32*
+ ID_OUI_FROM_DATABASE=Novo innovations Ltd
+
+OUI:04714B3*
+ ID_OUI_FROM_DATABASE=Griesser Electronic AG
+
+OUI:04714B9*
+ ID_OUI_FROM_DATABASE=Lighthouse AI, Inc
+
+OUI:04714BD*
+ ID_OUI_FROM_DATABASE=Shenzhen BoClouds Technology Co.,Ltd.
+
+OUI:04714BA*
+ ID_OUI_FROM_DATABASE=Observables, Inc.
+
+OUI:F023B97*
+ ID_OUI_FROM_DATABASE=Transcend Building Automation control network corporation
+
OUI:E043DB*
ID_OUI_FROM_DATABASE=Shenzhen ViewAt Technology Co.,Ltd.
@@ -9371,12 +10283,6 @@ OUI:BC7670*
OUI:24DBAC*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
-OUI:BC3AEA*
- ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
-
-OUI:E8BBA8*
- ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
-
OUI:0021E8*
ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd.
@@ -10577,9 +11483,6 @@ OUI:3C46D8*
OUI:6C0273*
ID_OUI_FROM_DATABASE=Shenzhen Jin Yun Video Equipment Co., Ltd.
-OUI:2CFAA2*
- ID_OUI_FROM_DATABASE=Alcatel-Lucent
-
OUI:F0761C*
ID_OUI_FROM_DATABASE=COMPAL INFORMATION (KUNSHAN) CO., LTD.
@@ -11369,9 +12272,6 @@ OUI:48F230*
OUI:B0C95B*
ID_OUI_FROM_DATABASE=Beijing Symtech CO.,LTD
-OUI:881544*
- ID_OUI_FROM_DATABASE=Meraki, Inc.
-
OUI:DCA989*
ID_OUI_FROM_DATABASE=MACANDC
@@ -17159,9 +18059,6 @@ OUI:00089D*
OUI:000890*
ID_OUI_FROM_DATABASE=AVILINKS SA
-OUI:000889*
- ID_OUI_FROM_DATABASE=Echostar Technologies Corp
-
OUI:000884*
ID_OUI_FROM_DATABASE=Index Braille AB
@@ -18509,9 +19406,6 @@ OUI:00D00E*
OUI:00D055*
ID_OUI_FROM_DATABASE=KATHREIN-WERKE KG
-OUI:00D095*
- ID_OUI_FROM_DATABASE=Alcatel-Lucent, Enterprise Business Group
-
OUI:00D000*
ID_OUI_FROM_DATABASE=FERRAN SCIENTIFIC, INC.
@@ -20363,9 +21257,6 @@ OUI:000FB0*
OUI:1C7508*
ID_OUI_FROM_DATABASE=COMPAL INFORMATION (KUNSHAN) CO., LTD.
-OUI:8C0EE3*
- ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
-
OUI:3829DD*
ID_OUI_FROM_DATABASE=ONvocal Inc
@@ -20630,9 +21521,6 @@ OUI:6487D7*
OUI:00E098*
ID_OUI_FROM_DATABASE=AboCom
-OUI:F0A225*
- ID_OUI_FROM_DATABASE=Private
-
OUI:0000B1*
ID_OUI_FROM_DATABASE=Alpha Micro
@@ -20804,18 +21692,6 @@ OUI:E0CBEE*
OUI:64B853*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:988389*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:244B03*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:FC8F90*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:1816C9*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
OUI:F4428F*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
@@ -20864,9 +21740,6 @@ OUI:D059E4*
OUI:64B310*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:78ABBB*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
OUI:000B3B*
ID_OUI_FROM_DATABASE=devolo AG
@@ -20990,9 +21863,6 @@ OUI:246968*
OUI:8CA2FD*
ID_OUI_FROM_DATABASE=Starry, Inc.
-OUI:14BB6E*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
OUI:AC61EA*
ID_OUI_FROM_DATABASE=Apple, Inc.
@@ -21065,9 +21935,6 @@ OUI:D8803C*
OUI:703C03*
ID_OUI_FROM_DATABASE=RadiAnt Co.,Ltd
-OUI:F0D2F1*
- ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
-
OUI:583277*
ID_OUI_FROM_DATABASE=Reliance Communications LLC
@@ -21137,9 +22004,6 @@ OUI:001706*
OUI:30F6B9*
ID_OUI_FROM_DATABASE=Ecocentric Energy
-OUI:1C3ADE*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
OUI:004268*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
@@ -21839,156 +22703,9 @@ OUI:24E43F*
OUI:A00460*
ID_OUI_FROM_DATABASE=NETGEAR
-OUI:946269*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:D40598*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:78719C*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:E0B70A*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:C83FB4*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:207355*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:900DCB*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:14CFE2*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:0015D0*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:E86D52*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:3C438E*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:90B134*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:20E564*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:40B7F3*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:94CCB9*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:00ACE0*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:3C36E4*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:0000C5*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:D039B3*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:8C7F3B*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:903EAB*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:CCA462*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:001DCD*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:001DD4*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:001DCE*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:0050E3*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:00080E*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:00159A*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:00192C*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:D40AA9*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:384C90*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:44AAF5*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:7085C6*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:D0E54D*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:B4F2E8*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:FC8E7E*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:005094*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:002143*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:0023EE*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:64ED57*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:0023A3*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:F87B7A*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:0025F1*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:001A66*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:0018C0*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:001E46*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:001ADE*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:0023AF*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
OUI:240AC4*
ID_OUI_FROM_DATABASE=Espressif Inc.
-OUI:5856E8*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
OUI:E4C1F1*
ID_OUI_FROM_DATABASE=SHENZHEN SPOTMAU INFORMATION TECHNOLIGY CO., Ltd
@@ -22382,9 +23099,6 @@ OUI:A4D9A4*
OUI:484D7E*
ID_OUI_FROM_DATABASE=Dell Inc.
-OUI:8871E5*
- ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
-
OUI:F4B549*
ID_OUI_FROM_DATABASE=Xiamen Yeastar Information Technology Co., Ltd.
@@ -22427,9 +23141,6 @@ OUI:C413E2*
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.
@@ -22493,12 +23204,6 @@ OUI:1CEEC9*
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
@@ -22568,9 +23273,6 @@ OUI:F015B9*
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
@@ -22634,9 +23336,6 @@ OUI:089E08*
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
@@ -22703,6 +23402,495 @@ OUI:6854C1*
OUI:887873*
ID_OUI_FROM_DATABASE=Intel Corporate
+OUI:6C750D*
+ ID_OUI_FROM_DATABASE=WiFiSONG
+
+OUI:E45D51*
+ ID_OUI_FROM_DATABASE=SFR
+
+OUI:346E9D*
+ ID_OUI_FROM_DATABASE=Ericsson AB
+
+OUI:B816DB*
+ ID_OUI_FROM_DATABASE=CHANT SINCERE CO.,LTD
+
+OUI:D461FE*
+ ID_OUI_FROM_DATABASE=Hangzhou H3C Technologies Co., Limited
+
+OUI:54E1AD*
+ ID_OUI_FROM_DATABASE=LCFC(HeFei) Electronics Technology co., ltd
+
+OUI:94F551*
+ ID_OUI_FROM_DATABASE=Cadi Scientific Pte Ltd
+
+OUI:BC452E*
+ ID_OUI_FROM_DATABASE=Knowledge Development for POF S.L.
+
+OUI:E8D11B*
+ ID_OUI_FROM_DATABASE=ASKEY COMPUTER CORP
+
+OUI:44032C*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
+OUI:14987D*
+ ID_OUI_FROM_DATABASE=Technicolor CH USA Inc.
+
+OUI:D4CF37*
+ ID_OUI_FROM_DATABASE=Symbolic IO
+
+OUI:283F69*
+ ID_OUI_FROM_DATABASE=Sony Mobile Communications AB
+
+OUI:F0D2F1*
+ ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
+
+OUI:8871E5*
+ ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
+
+OUI:7C5049*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:F0A225*
+ ID_OUI_FROM_DATABASE=Private
+
+OUI:E048AF*
+ ID_OUI_FROM_DATABASE=Premietech Limited
+
+OUI:2C3311*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
+OUI:503A7D*
+ ID_OUI_FROM_DATABASE=AlphaTech PLC Int’l Co., Ltd.
+
+OUI:BC024A*
+ ID_OUI_FROM_DATABASE=HMD Global Oy
+
+OUI:9CFCD1*
+ ID_OUI_FROM_DATABASE=Aetheris Technology (Shanghai) Co., Ltd.
+
+OUI:949901*
+ ID_OUI_FROM_DATABASE=Shenzhen YITOA Digital Appliance CO.,LTD
+
+OUI:E89E0C*
+ ID_OUI_FROM_DATABASE=Private
+
+OUI:D8A105*
+ ID_OUI_FROM_DATABASE=Syslane, Co., Ltd.
+
+OUI:C4B9CD*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
+OUI:10954B*
+ ID_OUI_FROM_DATABASE=Megabyte Ltd.
+
+OUI:900628*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:C4700B*
+ ID_OUI_FROM_DATABASE=GUANGZHOU CHIP TECHNOLOGIES CO.,LTD
+
+OUI:D4AE05*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:3C0518*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:04946B*
+ ID_OUI_FROM_DATABASE=TECNO MOBILE LIMITED
+
+OUI:A04C5B*
+ ID_OUI_FROM_DATABASE=Shenzhen TINNO Mobile Technology Corp.
+
+OUI:98DDEA*
+ ID_OUI_FROM_DATABASE=Infinix mobility limited
+
+OUI:D4619D*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:B0481A*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:989E63*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:DCA904*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:48A195*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:6CAB31*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:503237*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:000889*
+ ID_OUI_FROM_DATABASE=Echostar Technologies Corp
+
+OUI:2C029F*
+ ID_OUI_FROM_DATABASE=3ALogics
+
+OUI:58D9D5*
+ ID_OUI_FROM_DATABASE=Tenda Technology Co.,Ltd.Dongguan branch
+
+OUI:60E78A*
+ ID_OUI_FROM_DATABASE=UNISEM
+
+OUI:6C5976*
+ ID_OUI_FROM_DATABASE=Shanghai Tricheer Technology Co.,Ltd.
+
+OUI:F4A739*
+ ID_OUI_FROM_DATABASE=Juniper Networks
+
+OUI:2CFAA2*
+ ID_OUI_FROM_DATABASE=Alcatel-Lucent Enterprise
+
+OUI:00D095*
+ ID_OUI_FROM_DATABASE=Alcatel-Lucent Enterprise
+
+OUI:4095BD*
+ ID_OUI_FROM_DATABASE=NTmore.Co.,Ltd
+
+OUI:2CABEB*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
+OUI:BC66DE*
+ ID_OUI_FROM_DATABASE=Shadow Creator Information Technology Co.,Ltd.
+
+OUI:A0086F*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:C4FF1F*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:7C7B8B*
+ ID_OUI_FROM_DATABASE=Control Concepts, Inc.
+
+OUI:C40BCB*
+ ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
+
+OUI:D8C06A*
+ ID_OUI_FROM_DATABASE=Hunantv.com Interactive Entertainment Media Co.,Ltd.
+
+OUI:9C32A9*
+ ID_OUI_FROM_DATABASE=SICHUAN TIANYI COMHEART TELECOMCO., LTD
+
+OUI:601466*
+ ID_OUI_FROM_DATABASE=zte corporation
+
+OUI:30D386*
+ ID_OUI_FROM_DATABASE=zte corporation
+
+OUI:900E83*
+ ID_OUI_FROM_DATABASE=Monico Monitoring, Inc.
+
+OUI:E8BBA8*
+ ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+
+OUI:BC3AEA*
+ ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+
+OUI:8C0EE3*
+ ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+
+OUI:6C5C14*
+ ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+
+OUI:F894C2*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
+OUI:7CB960*
+ ID_OUI_FROM_DATABASE=Shanghai X-Cheng telecom LTD
+
+OUI:A8D579*
+ ID_OUI_FROM_DATABASE=Beijing Chushang Science and Technology Co.,Ltd
+
+OUI:28C63F*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
+OUI:600837*
+ ID_OUI_FROM_DATABASE=ivvi Scientific(Nanchang)Co.Ltd
+
+OUI:D860B3*
+ ID_OUI_FROM_DATABASE=Guangdong Global Electronic Technology CO.,LTD
+
+OUI:3C9509*
+ ID_OUI_FROM_DATABASE=Liteon Technology Corporation
+
+OUI:44B412*
+ ID_OUI_FROM_DATABASE=SIUS AG
+
+OUI:3CA308*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
+OUI:00F82C*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
+OUI:00C1B1*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
+OUI:D0F88C*
+ ID_OUI_FROM_DATABASE=Motorola (Wuhan) Mobility Technologies Communication Co., Ltd.
+
+OUI:2CB115*
+ ID_OUI_FROM_DATABASE=Integrated Device Technology (Malaysia) Sdn. Bhd.
+
+OUI:78ABBB*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:1816C9*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:FC8F90*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:244B03*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:988389*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:14BB6E*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:1C3ADE*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:F83F51*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:D8E0E1*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:50FF20*
+ ID_OUI_FROM_DATABASE=Keenetic Limited
+
+OUI:ECF342*
+ ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+
+OUI:D4C1C8*
+ ID_OUI_FROM_DATABASE=zte corporation
+
+OUI:EC237B*
+ ID_OUI_FROM_DATABASE=zte corporation
+
+OUI:881544*
+ ID_OUI_FROM_DATABASE=Cisco Meraki
+
+OUI:F44156*
+ ID_OUI_FROM_DATABASE=Arrikto Inc.
+
+OUI:D4258B*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
+OUI:B4F2E8*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:D0E54D*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:7085C6*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:44AAF5*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:005094*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:FC8E7E*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:00E18C*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
+OUI:903EAB*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:14CFE2*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:900DCB*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:207355*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:C83FB4*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:E0B70A*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:78719C*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:D40598*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:946269*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:8C7F3B*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:40B7F3*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:20E564*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:90B134*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:3C438E*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:E86D52*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:0015D0*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001DCE*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001DD4*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001DCD*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:CCA462*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:D039B3*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:0000C5*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:3C36E4*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:00ACE0*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:384C90*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:D40AA9*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:48D343*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:E02202*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:2C1DB8*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:E45740*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:0023A3*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:64ED57*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:0023EE*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:002143*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:0023AF*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001ADE*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:00159A*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:00080E*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:0050E3*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:94CCB9*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001E46*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:0018C0*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001A66*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:00192C*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:0025F1*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:F87B7A*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:5856E8*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:145E45*
+ ID_OUI_FROM_DATABASE=Kaleao Limited
+
+OUI:88D7F6*
+ ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
+
+OUI:1C1FD4*
+ ID_OUI_FROM_DATABASE=LifeBEAM Technologies LTD
+
+OUI:88BD78*
+ ID_OUI_FROM_DATABASE=Flaircomm Microelectronics,Inc.
+
+OUI:5092B9*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:B4BFF6*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:C8D7B0*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:60720B*
+ ID_OUI_FROM_DATABASE=BLU Products Inc
+
+OUI:F4A997*
+ ID_OUI_FROM_DATABASE=CANON INC.
+
+OUI:3C4CD0*
+ ID_OUI_FROM_DATABASE=CERAGON NETWORKS
+
+OUI:B04E26*
+ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
+
+OUI:FC06ED*
+ ID_OUI_FROM_DATABASE=M2Motive Technology Inc.
+
+OUI:54C9DF*
+ ID_OUI_FROM_DATABASE=FN-LINK TECHNOLOGY LIMITED
+
+OUI:30C3D9*
+ ID_OUI_FROM_DATABASE=ALPS ELECTRIC CO.,LTD.
+
+OUI:FC4D8C*
+ ID_OUI_FROM_DATABASE=SHENZHEN PANTE ELECTRONICS TECHNOLOGY CO., LTD
+
OUI:0C6F9C*
ID_OUI_FROM_DATABASE=Shaw Communications Inc.
@@ -23021,12 +24209,6 @@ OUI:80717A*
OUI:F49FF3*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
-OUI:2C5BB8*
- ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
-
-OUI:B0AA36*
- ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
-
OUI:784B87*
ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd.
@@ -23582,9 +24764,6 @@ OUI:84100D*
OUI:D88B4C*
ID_OUI_FROM_DATABASE=KingTing Tech.
-OUI:E81363*
- ID_OUI_FROM_DATABASE=Comstock RD, Inc.
-
OUI:6C9354*
ID_OUI_FROM_DATABASE=Yaojin Technology (Shenzhen) Co., LTD.
@@ -23852,9 +25031,6 @@ OUI:E03560*
OUI:0CB5DE*
ID_OUI_FROM_DATABASE=Alcatel Lucent
-OUI:04C9D9*
- ID_OUI_FROM_DATABASE=EchoStar Technologies Corp
-
OUI:E4CE70*
ID_OUI_FROM_DATABASE=Health & Life co., Ltd.
@@ -24086,9 +25262,6 @@ OUI:68F06D*
OUI:54F876*
ID_OUI_FROM_DATABASE=ABB AG
-OUI:4857DD*
- ID_OUI_FROM_DATABASE=Facebook
-
OUI:84930C*
ID_OUI_FROM_DATABASE=InCoax Networks Europe AB
@@ -24215,9 +25388,6 @@ OUI:18D5B6*
OUI:C8FF77*
ID_OUI_FROM_DATABASE=Dyson Limited
-OUI:C03D46*
- ID_OUI_FROM_DATABASE=Shanghai Mochui Network Technology Co., Ltd
-
OUI:DCF110*
ID_OUI_FROM_DATABASE=Nokia Corporation
@@ -24521,9 +25691,6 @@ OUI:284430*
OUI:9843DA*
ID_OUI_FROM_DATABASE=INTERTECH
-OUI:285767*
- ID_OUI_FROM_DATABASE=Echostar Technologies Corp
-
OUI:B07908*
ID_OUI_FROM_DATABASE=Cummings Engineering
@@ -24803,9 +25970,6 @@ OUI:148692*
OUI:1832A2*
ID_OUI_FROM_DATABASE=LAON TECHNOLOGY CO., LTD.
-OUI:6854ED*
- ID_OUI_FROM_DATABASE=Alcatel-Lucent - Nuage
-
OUI:985C93*
ID_OUI_FROM_DATABASE=SBG Systems SAS
@@ -26342,9 +27506,6 @@ OUI:948D50*
OUI:94E226*
ID_OUI_FROM_DATABASE=D. ORtiz Consulting, LLC
-OUI:E8E732*
- ID_OUI_FROM_DATABASE=Alcatel-Lucent
-
OUI:386E21*
ID_OUI_FROM_DATABASE=Wasion Group Ltd.
@@ -27323,9 +28484,6 @@ OUI:0023D2*
OUI:0024B4*
ID_OUI_FROM_DATABASE=ESCATRONIC GmbH
-OUI:0024AF*
- ID_OUI_FROM_DATABASE=EchoStar Technologies
-
OUI:0024AD*
ID_OUI_FROM_DATABASE=Adolf Thies Gmbh & Co. KG
@@ -29618,9 +30776,6 @@ OUI:00118C*
OUI:001191*
ID_OUI_FROM_DATABASE=CTS-Clima Temperatur Systeme GmbH
-OUI:00118B*
- ID_OUI_FROM_DATABASE=Alcatel-Lucent, Enterprise Business Group
-
OUI:001196*
ID_OUI_FROM_DATABASE=Actuality Systems, Inc.
@@ -31667,9 +32822,6 @@ OUI:00049B*
OUI:00049C*
ID_OUI_FROM_DATABASE=Surgient Networks, Inc.
-OUI:000496*
- ID_OUI_FROM_DATABASE=Extreme Networks
-
OUI:00048F*
ID_OUI_FROM_DATABASE=TD Systems Corporation
@@ -32741,9 +33893,6 @@ OUI:00E0AD*
OUI:00E025*
ID_OUI_FROM_DATABASE=dit Co., Ltd.
-OUI:00E0B1*
- ID_OUI_FROM_DATABASE=Alcatel-Lucent, Enterprise Business Group
-
OUI:00E0E4*
ID_OUI_FROM_DATABASE=FANUC ROBOTICS NORTH AMERICA, Inc.
@@ -32897,9 +34046,6 @@ OUI:00A05B*
OUI:00A08D*
ID_OUI_FROM_DATABASE=JACOMO CORPORATION
-OUI:00A06F*
- ID_OUI_FROM_DATABASE=THE APPCON GROUP, INC.
-
OUI:00A08E*
ID_OUI_FROM_DATABASE=Check Point Software Technologies
@@ -33488,9 +34634,6 @@ OUI:004020*
OUI:00406E*
ID_OUI_FROM_DATABASE=COROLLARY, INC.
-OUI:004066*
- ID_OUI_FROM_DATABASE=Hitachi Metals, Ltd.
-
OUI:004016*
ID_OUI_FROM_DATABASE=ADC - Global Connectivity Solutions Division
@@ -33578,9 +34721,6 @@ OUI:008002*
OUI:00805C*
ID_OUI_FROM_DATABASE=AGILIS CORPORATION
-OUI:0080E7*
- ID_OUI_FROM_DATABASE=LYNWOOD SCIENTIFIC DEV. LTD.
-
OUI:008070*
ID_OUI_FROM_DATABASE=COMPUTADORAS MICRON
@@ -34223,12 +35363,6 @@ OUI:001802*
OUI:ECCD6D*
ID_OUI_FROM_DATABASE=Allied Telesis, Inc.
-OUI:74C246*
- ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
-
-OUI:F0272D*
- ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
-
OUI:00225F*
ID_OUI_FROM_DATABASE=Liteon Technology Corporation
@@ -34388,9 +35522,6 @@ OUI:B0EC71*
OUI:3CBBFD*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:24F5AA*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
OUI:2CAE2B*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
@@ -34421,9 +35552,6 @@ OUI:680571*
OUI:6C2F2C*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:5056BF*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
OUI:000136*
ID_OUI_FROM_DATABASE=CyberTAN Technology Inc.
@@ -34634,9 +35762,6 @@ OUI:0090F9*
OUI:04C103*
ID_OUI_FROM_DATABASE=Clover Network, Inc.
-OUI:F877B8*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
OUI:1C553A*
ID_OUI_FROM_DATABASE=QianGua Corp.
@@ -35258,162 +36383,6 @@ OUI:84C7EA*
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.
@@ -35570,9 +36539,6 @@ OUI:9CFBD5*
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
@@ -36143,9 +37109,6 @@ OUI:00234A*
OUI:88C626*
ID_OUI_FROM_DATABASE=Logitech, Inc
-OUI:B85001*
- ID_OUI_FROM_DATABASE=Zebra Technologies Inc.
-
OUI:28E31F*
ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
@@ -36209,9 +37172,6 @@ OUI:78FC14*
OUI:1062EB*
ID_OUI_FROM_DATABASE=D-Link International
-OUI:1C48CE*
- ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
-
OUI:E0A700*
ID_OUI_FROM_DATABASE=Verkada Inc
@@ -36269,9 +37229,6 @@ OUI:0C3CCD*
OUI:B04089*
ID_OUI_FROM_DATABASE=Senient Systems LTD
-OUI:682737*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
OUI:002445*
ID_OUI_FROM_DATABASE=Adtran Inc
@@ -36350,6 +37307,435 @@ OUI:143004*
OUI:D481D7*
ID_OUI_FROM_DATABASE=Dell Inc.
+OUI:7C4685*
+ ID_OUI_FROM_DATABASE=Motorola (Wuhan) Mobility Technologies Communication Co., Ltd.
+
+OUI:E05163*
+ ID_OUI_FROM_DATABASE=Arcadyan Corporation
+
+OUI:00A06F*
+ ID_OUI_FROM_DATABASE=Color Sentinel Systems, LLC
+
+OUI:0C5F35*
+ ID_OUI_FROM_DATABASE=Niagara Video Corporation
+
+OUI:7C3866*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
+OUI:50F14A*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
+OUI:9C1D58*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
+OUI:B85001*
+ ID_OUI_FROM_DATABASE=Extreme Networks
+
+OUI:000496*
+ ID_OUI_FROM_DATABASE=Extreme Networks
+
+OUI:500FF5*
+ ID_OUI_FROM_DATABASE=Tenda Technology Co.,Ltd.Dongguan branch
+
+OUI:1C1EE3*
+ ID_OUI_FROM_DATABASE=Hui Zhou Gaoshengda Technology Co.,LTD
+
+OUI:F0272D*
+ ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
+
+OUI:74C246*
+ ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
+
+OUI:08B258*
+ ID_OUI_FROM_DATABASE=Juniper Networks
+
+OUI:F4C4D6*
+ ID_OUI_FROM_DATABASE=Shenzhen Xinfa Electronic Co.,ltd
+
+OUI:C03D46*
+ ID_OUI_FROM_DATABASE=Shanghai Sango Network Technology Co.,Ltd
+
+OUI:E89FEC*
+ ID_OUI_FROM_DATABASE=CHENGDU KT ELECTRONIC HI-TECH CO.,LTD
+
+OUI:D47DFC*
+ ID_OUI_FROM_DATABASE=TECNO MOBILE LIMITED
+
+OUI:BCA042*
+ ID_OUI_FROM_DATABASE=SHANGHAI FLYCO ELECTRICAL APPLIANCE CO.,LTD
+
+OUI:14568E*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:6837E9*
+ ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
+
+OUI:8058F8*
+ ID_OUI_FROM_DATABASE=Motorola Mobility LLC, a Lenovo Company
+
+OUI:443708*
+ ID_OUI_FROM_DATABASE=MRV Comunications
+
+OUI:F0D7AA*
+ ID_OUI_FROM_DATABASE=Motorola Mobility LLC, a Lenovo Company
+
+OUI:28FF3E*
+ ID_OUI_FROM_DATABASE=zte corporation
+
+OUI:70F087*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:886B6E*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:4C74BF*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:285767*
+ ID_OUI_FROM_DATABASE=Echostar Technologies Corp
+
+OUI:0024AF*
+ ID_OUI_FROM_DATABASE=Echostar Technologies Corp
+
+OUI:04C9D9*
+ ID_OUI_FROM_DATABASE=Echostar Technologies Corp
+
+OUI:C49DED*
+ ID_OUI_FROM_DATABASE=Microsoft Corporation
+
+OUI:98A40E*
+ ID_OUI_FROM_DATABASE=Snap, Inc.
+
+OUI:D0498B*
+ ID_OUI_FROM_DATABASE=ZOOM SERVER
+
+OUI:AC7409*
+ ID_OUI_FROM_DATABASE=Hangzhou H3C Technologies Co., Limited
+
+OUI:2C5A0F*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
+OUI:4C8120*
+ ID_OUI_FROM_DATABASE=Taicang T&W Electronics
+
+OUI:E8E732*
+ ID_OUI_FROM_DATABASE=Alcatel-Lucent Enterprise
+
+OUI:00118B*
+ ID_OUI_FROM_DATABASE=Alcatel-Lucent Enterprise
+
+OUI:00E0B1*
+ ID_OUI_FROM_DATABASE=Alcatel-Lucent Enterprise
+
+OUI:E037BF*
+ ID_OUI_FROM_DATABASE=Wistron Neweb Corporation
+
+OUI:6854ED*
+ ID_OUI_FROM_DATABASE=Alcatel-Lucent
+
+OUI:E8DE8E*
+ ID_OUI_FROM_DATABASE=Integrated Device Technology (Malaysia) Sdn. Bhd.
+
+OUI:B42A0E*
+ ID_OUI_FROM_DATABASE=Technicolor CH USA Inc.
+
+OUI:40C8CB*
+ ID_OUI_FROM_DATABASE=AM Telecom co., Ltd.
+
+OUI:14A0F8*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:28B448*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:E442A6*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
+OUI:6045CB*
+ ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
+
+OUI:74C9A3*
+ ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD
+
+OUI:84AFEC*
+ ID_OUI_FROM_DATABASE=BUFFALO.INC
+
+OUI:AC202E*
+ ID_OUI_FROM_DATABASE=Hitron Technologies. Inc
+
+OUI:3C5282*
+ ID_OUI_FROM_DATABASE=Hewlett Packard
+
+OUI:48A74E*
+ ID_OUI_FROM_DATABASE=zte corporation
+
+OUI:004066*
+ ID_OUI_FROM_DATABASE=APRESIA Systems Ltd
+
+OUI:B0AA36*
+ ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+
+OUI:2C5BB8*
+ ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+
+OUI:1C48CE*
+ ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+
+OUI:9CAC6D*
+ ID_OUI_FROM_DATABASE=Universal Electronics, Inc.
+
+OUI:B03D96*
+ ID_OUI_FROM_DATABASE=Vision Valley FZ LLC
+
+OUI:B02628*
+ ID_OUI_FROM_DATABASE=Broadcom Limited
+
+OUI:24792A*
+ ID_OUI_FROM_DATABASE=Ruckus Wireless
+
+OUI:0080E7*
+ ID_OUI_FROM_DATABASE=Leonardo Tactical Systems.
+
+OUI:44AA50*
+ ID_OUI_FROM_DATABASE=Juniper Networks
+
+OUI:E81363*
+ ID_OUI_FROM_DATABASE=Comstock RD, Inc.
+
+OUI:688DB6*
+ ID_OUI_FROM_DATABASE=AETEK INC.
+
+OUI:481063*
+ ID_OUI_FROM_DATABASE=NTT Innovation Institute, Inc.
+
+OUI:24F5AA*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:F877B8*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:5056BF*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:682737*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:D428D5*
+ ID_OUI_FROM_DATABASE=TCT mobile ltd
+
+OUI:405CFD*
+ ID_OUI_FROM_DATABASE=Dell Inc.
+
+OUI:041B6D*
+ ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
+
+OUI:FC6FB7*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:A0C562*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:A055DE*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:54E2E0*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:28C87A*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:0026D9*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:C8AA21*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:2C9E5F*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:002495*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:002642*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:A4ED4E*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:0024A1*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001D6B*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001E5A*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001DBE*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001371*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:00149A*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001A1B*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:0018A4*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:002375*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001ADB*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001F7E*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001C11*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001CC1*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:400D10*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:341FE4*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:00D037*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001DD6*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:306023*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:ACB313*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:14ABF0*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:0CF893*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:8461A0*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:E83381*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:44E137*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:0015CE*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001311*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:0015A2*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001596*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:0000CA*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:601971*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001DD1*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001626*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:00111A*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:00152F*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:000B06*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:000F9F*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:0011AE*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:002040*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:1C1B68*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:10868C*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:1005B1*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:7C2634*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:A0094C*
+ ID_OUI_FROM_DATABASE=CenturyLink
+
+OUI:00A38E*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
+OUI:DCC8F5*
+ ID_OUI_FROM_DATABASE=Shanghai UMEinfo CO.,LTD.
+
+OUI:64DFE9*
+ ID_OUI_FROM_DATABASE=ATEME
+
+OUI:9097F3*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:58C5CB*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:ACAFB9*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:308976*
+ ID_OUI_FROM_DATABASE=DALIAN LAMBA TECHNOLOGY CO.,LTD
+
+OUI:447BBB*
+ ID_OUI_FROM_DATABASE=Shenzhen YOUHUA Technology Co., Ltd
+
+OUI:A4F4C2*
+ ID_OUI_FROM_DATABASE=VNPT TECHNOLOGY
+
+OUI:C0A5DD*
+ ID_OUI_FROM_DATABASE=SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.
+
+OUI:1835D1*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:4C38D8*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:DCBE7A*
+ ID_OUI_FROM_DATABASE=Zhejiang Nurotron Biotechnology Co.
+
+OUI:206BE7*
+ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
+
+OUI:4857DD*
+ ID_OUI_FROM_DATABASE=Facebook Inc
+
OUI:5846E1*
ID_OUI_FROM_DATABASE=Baxter International Inc
@@ -36365,9 +37751,6 @@ OUI:D084B0*
OUI:00FEC8*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
-OUI:0030C5*
- ID_OUI_FROM_DATABASE=CADENCE DESIGN SYSTEMS, INC.
-
OUI:EC2280*
ID_OUI_FROM_DATABASE=D-Link International
@@ -36449,9 +37832,6 @@ OUI:984BE1*
OUI:68B599*
ID_OUI_FROM_DATABASE=Hewlett Packard
-OUI:0C47C9*
- ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
-
OUI:14D64D*
ID_OUI_FROM_DATABASE=D-Link International
@@ -36659,9 +38039,6 @@ OUI:808917*
OUI:5C899A*
ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
-OUI:A81B5A*
- ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
-
OUI:E422A5*
ID_OUI_FROM_DATABASE=PLANTRONICS, INC.
@@ -37265,9 +38642,6 @@ OUI:54A3FA*
OUI:9023EC*
ID_OUI_FROM_DATABASE=Availink, Inc.
-OUI:7467F7*
- ID_OUI_FROM_DATABASE=Zebra Technologoes
-
OUI:3891D5*
ID_OUI_FROM_DATABASE=Hangzhou H3C Technologies Co., Limited
@@ -37805,9 +39179,6 @@ OUI:FCD5D9*
OUI:007532*
ID_OUI_FROM_DATABASE=INID BV
-OUI:A002DC*
- ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
-
OUI:907EBA*
ID_OUI_FROM_DATABASE=UTEK TECHNOLOGY (SHENZHEN) CO.,LTD
@@ -38486,9 +39857,6 @@ OUI:BC261D*
OUI:888964*
ID_OUI_FROM_DATABASE=GSI Electronics Inc.
-OUI:4C82CF*
- ID_OUI_FROM_DATABASE=Echostar Technologies
-
OUI:9CA577*
ID_OUI_FROM_DATABASE=Osorno Enterprises Inc.
@@ -38693,9 +40061,6 @@ OUI:48B8DE*
OUI:1065CF*
ID_OUI_FROM_DATABASE=IQSIM
-OUI:B877C3*
- ID_OUI_FROM_DATABASE=Decagon Devices, Inc.
-
OUI:849DC5*
ID_OUI_FROM_DATABASE=Centera Photonics Inc.
@@ -39455,9 +40820,6 @@ OUI:FC2E2D*
OUI:E84E06*
ID_OUI_FROM_DATABASE=EDUP INTERNATIONAL (HK) CO., LTD
-OUI:B4C799*
- ID_OUI_FROM_DATABASE=Zebra Technologies Inc
-
OUI:70B921*
ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD
@@ -40073,9 +41435,6 @@ OUI:58570D*
OUI:0C826A*
ID_OUI_FROM_DATABASE=Wuhan Huagong Genuine Optics Technology Co., Ltd
-OUI:5C0E8B*
- ID_OUI_FROM_DATABASE=Zebra Technologies Inc
-
OUI:38C7BA*
ID_OUI_FROM_DATABASE=CS Services Co.,Ltd.
@@ -40430,9 +41789,6 @@ OUI:00268F*
OUI:6C8CDB*
ID_OUI_FROM_DATABASE=Otus Technologies Ltd
-OUI:B4417A*
- ID_OUI_FROM_DATABASE=ShenZhen Gongjin Electronics Co.,Ltd
-
OUI:401597*
ID_OUI_FROM_DATABASE=Protect America, Inc.
@@ -44078,9 +45434,6 @@ OUI:000940*
OUI:00093F*
ID_OUI_FROM_DATABASE=Double-Win Enterpirse CO., LTD
-OUI:00093A*
- ID_OUI_FROM_DATABASE=Molex Fiber Optics
-
OUI:000933*
ID_OUI_FROM_DATABASE=Ophit Co.Ltd.
@@ -46070,9 +47423,6 @@ OUI:00E0CE*
OUI:00E05F*
ID_OUI_FROM_DATABASE=e-Net, Inc.
-OUI:00E02B*
- ID_OUI_FROM_DATABASE=EXTREME NETWORKS
-
OUI:00E0C7*
ID_OUI_FROM_DATABASE=EUROTECH SRL
@@ -47306,9 +48656,6 @@ OUI:001B38*
OUI:E46F13*
ID_OUI_FROM_DATABASE=D-Link International
-OUI:DC6DCD*
- ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
-
OUI:94C150*
ID_OUI_FROM_DATABASE=2Wire Inc
@@ -47516,18 +48863,12 @@ OUI:18FE34*
OUI:54F6C5*
ID_OUI_FROM_DATABASE=FUJIAN STAR-NET COMMUNICATION CO.,LTD
-OUI:28EF01*
- ID_OUI_FROM_DATABASE=Private
-
OUI:5C338E*
ID_OUI_FROM_DATABASE=Alpha Networks Inc.
OUI:001AEB*
ID_OUI_FROM_DATABASE=Allied Telesis R&D Center K.K.
-OUI:747548*
- ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
-
OUI:A43111*
ID_OUI_FROM_DATABASE=ZIV
@@ -47714,21 +49055,6 @@ OUI:0CB319*
OUI:08EE8B*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:84A466*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:981DFA*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:FCF136*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:0C8910*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:54FA3E*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
OUI:A89FBA*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
@@ -47801,9 +49127,6 @@ OUI:A4EBD3*
OUI:28987B*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:1867B0*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
OUI:F40E22*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
@@ -48086,9 +49409,6 @@ OUI:1866DA*
OUI:981FB1*
ID_OUI_FROM_DATABASE=Shenzhen Lemon Network Technology Co.,Ltd
-OUI:CCB11A*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
OUI:40476A*
ID_OUI_FROM_DATABASE=AG Acquisition Corp. d.b.a. ASTRO Gaming
@@ -48371,12 +49691,6 @@ OUI:C09727*
OUI:2C5A8D*
ID_OUI_FROM_DATABASE=SYSTRONIK Elektronik u. Systemtechnik GmbH
-OUI:B8BBAF*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:60C5AD*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
OUI:8C897A*
ID_OUI_FROM_DATABASE=AUGTEK
@@ -48836,9 +50150,6 @@ OUI:70FF76*
OUI:507224*
ID_OUI_FROM_DATABASE=Texas Instruments
-OUI:440444*
- ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
-
OUI:506583*
ID_OUI_FROM_DATABASE=Texas Instruments
@@ -48872,138 +50183,6 @@ 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.
-
-OUI:1C1448*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:A47AA4*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:E83EFC*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:E8892C*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:001DD3*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:0015D1*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:203D66*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:6455B1*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:C005C2*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:3CDFA9*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:8C09F4*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:083E0C*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:001225*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:00128A*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:D404CD*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:002493*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:E46449*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:745612*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:74EAE8*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:A811FC*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:044E5A*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:94E8C5*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:F8A097*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:00230B*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:001B52*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:0023ED*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:002395*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:0022B4*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:002136*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:0024C1*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:3C754A*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:40FC89*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:BC644B*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:347A60*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:84E058*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:003676*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
OUI:001CA8*
ID_OUI_FROM_DATABASE=AirTies Wireless Networks
@@ -49232,12 +50411,6 @@ OUI:B072BF*
OUI:600B03*
ID_OUI_FROM_DATABASE=Hangzhou H3C Technologies Co., Limited
-OUI:C09F05*
- ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
-
-OUI:AC63BE*
- ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
-
OUI:A41437*
ID_OUI_FROM_DATABASE=Hangzhou Hikvision Digital Technology Co.,Ltd.
@@ -49340,9 +50513,6 @@ OUI:9C8BA0*
OUI:9840BB*
ID_OUI_FROM_DATABASE=Dell Inc.
-OUI:CC2D83*
- ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
-
OUI:E04FBD*
ID_OUI_FROM_DATABASE=SICHUAN TIANYI COMHEART TELECOMCO.,LTD
@@ -49430,9 +50600,6 @@ OUI:701CE7*
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.
@@ -49451,9 +50618,6 @@ OUI:506B8D*
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
@@ -49712,9 +50876,6 @@ OUI:B0F1EC*
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
@@ -49733,6 +50894,444 @@ OUI:04DEF2*
OUI:00D071*
ID_OUI_FROM_DATABASE=ECHELON CORP.
+OUI:504061*
+ ID_OUI_FROM_DATABASE=Nokia
+
+OUI:0030C5*
+ ID_OUI_FROM_DATABASE=CADENCE DESIGN SYSTEMS, INC.
+
+OUI:54E3F6*
+ ID_OUI_FROM_DATABASE=Alcatel-Lucent
+
+OUI:7467F7*
+ ID_OUI_FROM_DATABASE=Extreme Networks
+
+OUI:B0C205*
+ ID_OUI_FROM_DATABASE=BIONIME
+
+OUI:0C61CF*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
+OUI:B4C799*
+ ID_OUI_FROM_DATABASE=Extreme Networks
+
+OUI:5C0E8B*
+ ID_OUI_FROM_DATABASE=Extreme Networks
+
+OUI:00E02B*
+ ID_OUI_FROM_DATABASE=Extreme Networks
+
+OUI:7C2664*
+ ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS
+
+OUI:A002DC*
+ ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
+
+OUI:0C47C9*
+ ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
+
+OUI:E47DEB*
+ ID_OUI_FROM_DATABASE=Shanghai Notion Information Technology CO.,LTD.
+
+OUI:28EF01*
+ ID_OUI_FROM_DATABASE=Private
+
+OUI:747548*
+ ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
+
+OUI:AC63BE*
+ ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
+
+OUI:DCA4CA*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:8C8FE9*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:40FA7F*
+ ID_OUI_FROM_DATABASE=Preh Car Connect GmbH
+
+OUI:F8AB05*
+ ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS
+
+OUI:C0028D*
+ ID_OUI_FROM_DATABASE=WINSTAR Display CO.,Ltd
+
+OUI:D83214*
+ ID_OUI_FROM_DATABASE=Tenda Technology Co.,Ltd.Dongguan branch
+
+OUI:7C787E*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:C0D3C0*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:F097E5*
+ ID_OUI_FROM_DATABASE=TAMIO, INC
+
+OUI:F4E4AD*
+ ID_OUI_FROM_DATABASE=zte corporation
+
+OUI:F85971*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
+OUI:9810E8*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:B49CDF*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:4C82CF*
+ ID_OUI_FROM_DATABASE=Echostar Technologies Corp
+
+OUI:F49634*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
+OUI:F470AB*
+ ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd.
+
+OUI:341A35*
+ ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD
+
+OUI:6C4B90*
+ ID_OUI_FROM_DATABASE=LiteON
+
+OUI:08028E*
+ ID_OUI_FROM_DATABASE=NETGEAR
+
+OUI:F8FF0B*
+ ID_OUI_FROM_DATABASE=Electronic Technology Inc.
+
+OUI:38F135*
+ ID_OUI_FROM_DATABASE=SensorTec-Canada
+
+OUI:90F305*
+ ID_OUI_FROM_DATABASE=HUMAX Co., Ltd.
+
+OUI:00093A*
+ ID_OUI_FROM_DATABASE=Molex
+
+OUI:C8F86D*
+ ID_OUI_FROM_DATABASE=Alcatel-Lucent Shanghai Bell Co., Ltd
+
+OUI:B8D50B*
+ ID_OUI_FROM_DATABASE=Sunitec Enterprise Co.,Ltd
+
+OUI:28A6DB*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:D45F25*
+ ID_OUI_FROM_DATABASE=Shenzhen YOUHUA Technology Co., Ltd
+
+OUI:9CE951*
+ ID_OUI_FROM_DATABASE=Shenzhen Sang Fei Consumer Communications Ltd., Co.
+
+OUI:DC0856*
+ ID_OUI_FROM_DATABASE=Alcatel-Lucent Enterprise
+
+OUI:E8FDE8*
+ ID_OUI_FROM_DATABASE=CeLa Link Corporation
+
+OUI:181212*
+ ID_OUI_FROM_DATABASE=Cepton Technologies
+
+OUI:B4417A*
+ ID_OUI_FROM_DATABASE=SHENZHEN GONGJIN ELECTRONICS CO.,LT
+
+OUI:F4DE0C*
+ ID_OUI_FROM_DATABASE=ESPOD Ltd.
+
+OUI:BC8AE8*
+ ID_OUI_FROM_DATABASE=QING DAO HAIER TELECOM CO.,LTD.
+
+OUI:A81B5A*
+ ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+
+OUI:DC6DCD*
+ ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+
+OUI:440444*
+ ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+
+OUI:C09F05*
+ ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+
+OUI:CC2D83*
+ ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+
+OUI:38295A*
+ ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+
+OUI:4C1A3D*
+ ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+
+OUI:185207*
+ ID_OUI_FROM_DATABASE=SICHUAN TIANYI COMHEART TELECOMCO., LTD
+
+OUI:70D379*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
+OUI:7C4F7D*
+ ID_OUI_FROM_DATABASE=Sawwave
+
+OUI:9874DA*
+ ID_OUI_FROM_DATABASE=Infinix mobility limited
+
+OUI:143F27*
+ ID_OUI_FROM_DATABASE=Noccela Oy
+
+OUI:64351C*
+ ID_OUI_FROM_DATABASE=e-CON SYSTEMS INDIA PVT LTD
+
+OUI:5C6A80*
+ ID_OUI_FROM_DATABASE=ZyXEL Communications Corporation
+
+OUI:A8B86E*
+ ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
+
+OUI:0CB912*
+ ID_OUI_FROM_DATABASE=JM-DATA GmbH
+
+OUI:1893D7*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
+OUI:EC363F*
+ ID_OUI_FROM_DATABASE=Markov Corporation
+
+OUI:54FA3E*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:B8BBAF*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:60C5AD*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:28395E*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:C4AE12*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:10D07A*
+ ID_OUI_FROM_DATABASE=AMPAK Technology, Inc.
+
+OUI:0C8910*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:FCF136*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:981DFA*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:84A466*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:1867B0*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:CCB11A*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:80B234*
+ ID_OUI_FROM_DATABASE=Technicolor CH USA Inc.
+
+OUI:B877C3*
+ ID_OUI_FROM_DATABASE=METER Group
+
+OUI:F07485*
+ ID_OUI_FROM_DATABASE=NGD Systems, Inc.
+
+OUI:BC644B*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:F8A097*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:94E8C5*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:044E5A*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:74EAE8*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:A811FC*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:745612*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:E46449*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001BDD*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001404*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:00195E*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001AAD*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:A47AA4*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:1C1448*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:002493*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:40FC89*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:3C754A*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:0024C1*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:002136*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:0022B4*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:002395*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:0023ED*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001B52*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:00230B*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001E8D*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:0023A2*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:0015D1*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001DD3*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:E8892C*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:E83EFC*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:707E43*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:0003E0*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:00128A*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001225*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:083E0C*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:8C09F4*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:3CDFA9*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:003676*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:84E058*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:347A60*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:C005C2*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:6455B1*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:203D66*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:D404CD*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:446AB7*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:2C9924*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:105611*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:DC74A8*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:C087EB*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:2C3AE8*
+ ID_OUI_FROM_DATABASE=Espressif Inc.
+
+OUI:74F61C*
+ ID_OUI_FROM_DATABASE=HTC Corporation
+
+OUI:E8B6C2*
+ ID_OUI_FROM_DATABASE=Juniper Networks
+
+OUI:B0DAF9*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:3438B7*
+ ID_OUI_FROM_DATABASE=HUMAX Co., Ltd.
+
+OUI:5C1A6F*
+ ID_OUI_FROM_DATABASE=Cambridge Industries(Group) Co.,Ltd.
+
+OUI:487D2E*
+ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
+
+OUI:B089C2*
+ ID_OUI_FROM_DATABASE=Zyptonite
+
+OUI:F0D4F6*
+ ID_OUI_FROM_DATABASE=Lars Thrane A/S
+
+OUI:0403D6*
+ ID_OUI_FROM_DATABASE=Nintendo Co.,Ltd
+
+OUI:A0AFBD*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
+OUI:34D954*
+ ID_OUI_FROM_DATABASE=WiBotic Inc.
+
+OUI:A47886*
+ ID_OUI_FROM_DATABASE=Avaya Inc
+
+OUI:6C60EB*
+ ID_OUI_FROM_DATABASE=ZHI YUAN ELECTRONICS CO., LIMITED
+
OUI:D86CE9*
ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS
@@ -50825,9 +52424,6 @@ OUI:F46A92*
OUI:14AEDB*
ID_OUI_FROM_DATABASE=VTech Telecommunications Ltd.
-OUI:EC4F82*
- ID_OUI_FROM_DATABASE=Calix Inc.
-
OUI:B8C3BF*
ID_OUI_FROM_DATABASE=Henan Chengshi NetWork Technology Co.,Ltd
@@ -51245,9 +52841,6 @@ OUI:90DA6A*
OUI:A45DA1*
ID_OUI_FROM_DATABASE=ADB Broadband Italia
-OUI:A43D78*
- ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
-
OUI:E8EF89*
ID_OUI_FROM_DATABASE=OPMEX Tech.
@@ -51956,9 +53549,6 @@ OUI:D81EDE*
OUI:6897E8*
ID_OUI_FROM_DATABASE=Society of Motion Picture &amp; Television Engineers
-OUI:24EA40*
- ID_OUI_FROM_DATABASE=Systeme Helmholz GmbH
-
OUI:FC58FA*
ID_OUI_FROM_DATABASE=Shen Zhen Shi Xin Zhong Xin Technology Co.,Ltd.
@@ -52013,9 +53603,6 @@ OUI:7CD844*
OUI:F4C6D7*
ID_OUI_FROM_DATABASE=blackned GmbH
-OUI:68A40E*
- ID_OUI_FROM_DATABASE=BSH Bosch and Siemens Home Appliances GmbH
-
OUI:4CCA53*
ID_OUI_FROM_DATABASE=Skyera, Inc.
@@ -52868,9 +54455,6 @@ OUI:B826D4*
OUI:14E4EC*
ID_OUI_FROM_DATABASE=mLogic LLC
-OUI:FC0A81*
- ID_OUI_FROM_DATABASE=Zebra Technologies Inc
-
OUI:AC0DFE*
ID_OUI_FROM_DATABASE=Ekon GmbH - myGEKKO
@@ -54089,9 +55673,6 @@ OUI:6CAC60*
OUI:DC0265*
ID_OUI_FROM_DATABASE=Meditech Kft
-OUI:986DC8*
- ID_OUI_FROM_DATABASE=TOSHIBA MITSUBISHI-ELECTRIC INDUSTRIAL SYSTEMS CORPORATION
-
OUI:68A1B7*
ID_OUI_FROM_DATABASE=Honghao Mingchuan Technology (Beijing) CO.,Ltd.
@@ -56246,9 +57827,6 @@ OUI:0014B3*
OUI:00149B*
ID_OUI_FROM_DATABASE=Nokota Communications, LLC
-OUI:00143F*
- ID_OUI_FROM_DATABASE=Hotway Technology Corporation
-
OUI:001431*
ID_OUI_FROM_DATABASE=PDL Electronics Ltd
@@ -56891,9 +58469,6 @@ OUI:000FFD*
OUI:000FEE*
ID_OUI_FROM_DATABASE=XTec, Incorporated
-OUI:000FF4*
- ID_OUI_FROM_DATABASE=Guntermann & Drunck GmbH
-
OUI:001275*
ID_OUI_FROM_DATABASE=Sentilla Corporation
@@ -58373,9 +59948,6 @@ OUI:000641*
OUI:00063D*
ID_OUI_FROM_DATABASE=Microwave Data Systems Inc.
-OUI:000631*
- ID_OUI_FROM_DATABASE=Calix
-
OUI:000630*
ID_OUI_FROM_DATABASE=Adtranz Sweden
@@ -59651,9 +61223,6 @@ OUI:00E019*
OUI:00E0D7*
ID_OUI_FROM_DATABASE=SUNSHINE ELECTRONICS, INC.
-OUI:00E0DA*
- ID_OUI_FROM_DATABASE=Alcatel North America ESD
-
OUI:00E068*
ID_OUI_FROM_DATABASE=MERRIMAC SYSTEMS INC.
@@ -60335,9 +61904,6 @@ OUI:004000*
OUI:0040C5*
ID_OUI_FROM_DATABASE=MICOM COMMUNICATIONS INC.
-OUI:0040AA*
- ID_OUI_FROM_DATABASE=Metso Automation
-
OUI:004023*
ID_OUI_FROM_DATABASE=LOGIC CORPORATION
@@ -60980,9 +62546,6 @@ OUI:5464D9*
OUI:00023F*
ID_OUI_FROM_DATABASE=COMPAL ELECTRONICS, INC.
-OUI:0080C2*
- ID_OUI_FROM_DATABASE=IEEE 802.1
-
OUI:C46699*
ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd.
@@ -61241,12 +62804,6 @@ OUI:001D6A*
OUI:0000F4*
ID_OUI_FROM_DATABASE=Allied Telesis, Inc.
-OUI:10AE60*
- ID_OUI_FROM_DATABASE=Private
-
-OUI:F04F7C*
- ID_OUI_FROM_DATABASE=Private
-
OUI:70F1A1*
ID_OUI_FROM_DATABASE=Liteon Technology Corporation
@@ -61496,15 +63053,6 @@ OUI:A80600*
OUI:6CF373*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:90F1AA*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:C4576E*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:78BDBC*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
OUI:3872C0*
ID_OUI_FROM_DATABASE=Comtrend Corporation
@@ -61757,9 +63305,6 @@ OUI:1CABC0*
OUI:84E323*
ID_OUI_FROM_DATABASE=Green Wave Telecommunication SDN BHD
-OUI:44650D*
- ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
-
OUI:D897BA*
ID_OUI_FROM_DATABASE=PEGATRON CORPORATION
@@ -61985,9 +63530,6 @@ OUI:749D8F*
OUI:346AC2*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
-OUI:50F5DA*
- ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
-
OUI:8CD2E9*
ID_OUI_FROM_DATABASE=NIPPON SMT Co.Ltd
@@ -62318,141 +63860,9 @@ OUI:343DC4*
OUI:6CEFC6*
ID_OUI_FROM_DATABASE=SHENZHEN TWOWING TECHNOLOGIES CO.,LTD.
-OUI:986B3D*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:CC65AD*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:789684*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:90C792*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:0015CF*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:386BBB*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:00E06F*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:0004BD*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:5C571A*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:001DD0*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:001DD5*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:001DCF*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:E8ED05*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:901ACA*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
OUI:002A10*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
-OUI:74E7C6*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:74F612*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:DC4517*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:F80BBE*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:6CC1D2*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:145BD1*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:B077AC*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:B81619*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:A41588*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:38700C*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:FC51A4*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:287AEE*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:641269*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:001CC3*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:14D4FE*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:70B14E*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:D82522*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:707630*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:000CE5*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:000E5C*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:0015A8*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:001700*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:0019A6*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:0014E8*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:002180*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:0026BA*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:002641*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:002374*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:0025F2*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:0019C0*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
OUI:886AB1*
ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd.
@@ -63107,12 +64517,6 @@ OUI:7C95B1*
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
@@ -63281,9 +64685,6 @@ OUI:C4836F*
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
@@ -63317,9 +64718,6 @@ OUI:00238A*
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
@@ -63329,12 +64727,6 @@ OUI:542B57*
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
@@ -63356,6 +64748,426 @@ OUI:98D3D2*
OUI:F4DC41*
ID_OUI_FROM_DATABASE=YOUNGZONE CULTURE (SHANGHAI) CORP
+OUI:9800C1*
+ ID_OUI_FROM_DATABASE=GuangZhou CREATOR Technology Co.,Ltd.(CHINA)
+
+OUI:3034D2*
+ ID_OUI_FROM_DATABASE=Availink, Inc.
+
+OUI:CCCE1E*
+ ID_OUI_FROM_DATABASE=AVM Audiovisuelles Marketing und Computersysteme GmbH
+
+OUI:501E2D*
+ ID_OUI_FROM_DATABASE=StreamUnlimited Engineering GmbH
+
+OUI:40B034*
+ ID_OUI_FROM_DATABASE=Hewlett Packard
+
+OUI:FC0A81*
+ ID_OUI_FROM_DATABASE=Extreme Networks
+
+OUI:C8B5AD*
+ ID_OUI_FROM_DATABASE=Hewlett Packard Enterprise
+
+OUI:88E628*
+ ID_OUI_FROM_DATABASE=Shenzhen Kezhonglong Optoelectronic Technology Co.,Ltd
+
+OUI:6091F3*
+ ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd.
+
+OUI:9CDA3E*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
+OUI:3CA067*
+ ID_OUI_FROM_DATABASE=Liteon Technology Corporation
+
+OUI:D8325A*
+ ID_OUI_FROM_DATABASE=Shenzhen YOUHUA Technology Co., Ltd
+
+OUI:44650D*
+ ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
+
+OUI:50F5DA*
+ ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
+
+OUI:6854FD*
+ ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
+
+OUI:40B4CD*
+ ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
+
+OUI:2C86D2*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
+OUI:F04F7C*
+ ID_OUI_FROM_DATABASE=Private
+
+OUI:10AE60*
+ ID_OUI_FROM_DATABASE=Private
+
+OUI:802689*
+ ID_OUI_FROM_DATABASE=D-Link International
+
+OUI:BC2F3D*
+ ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd.
+
+OUI:409F38*
+ ID_OUI_FROM_DATABASE=AzureWave Technology Inc.
+
+OUI:C4D197*
+ ID_OUI_FROM_DATABASE=Ventia Utility Services
+
+OUI:58821D*
+ ID_OUI_FROM_DATABASE=H. Schomäcker GmbH
+
+OUI:CCBE59*
+ ID_OUI_FROM_DATABASE=Calix Inc.
+
+OUI:EC4F82*
+ ID_OUI_FROM_DATABASE=Calix Inc.
+
+OUI:000631*
+ ID_OUI_FROM_DATABASE=Calix Inc.
+
+OUI:B8D7AF*
+ ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd.
+
+OUI:3096FB*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:F0EE10*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:A8A198*
+ ID_OUI_FROM_DATABASE=TCT mobile ltd
+
+OUI:107D1A*
+ ID_OUI_FROM_DATABASE=Dell Inc.
+
+OUI:C0D012*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:D4DCCD*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:484BAA*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:F80377*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:14BD61*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:0827CE*
+ ID_OUI_FROM_DATABASE=NAGANO KEIKI CO., LTD.
+
+OUI:00D318*
+ ID_OUI_FROM_DATABASE=SPG Controls
+
+OUI:2C3124*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
+OUI:F40343*
+ ID_OUI_FROM_DATABASE=Hewlett Packard Enterprise
+
+OUI:00143F*
+ ID_OUI_FROM_DATABASE=Hotway Technology Corporation
+
+OUI:F8BE0D*
+ ID_OUI_FROM_DATABASE=A2UICT Co.,Ltd.
+
+OUI:08EA40*
+ ID_OUI_FROM_DATABASE=SHENZHEN BILIAN ELECTRONIC CO.,LTD
+
+OUI:00E0DA*
+ ID_OUI_FROM_DATABASE=Alcatel-Lucent Enterprise
+
+OUI:5CC6E9*
+ ID_OUI_FROM_DATABASE=Edifier International
+
+OUI:E8C1D7*
+ ID_OUI_FROM_DATABASE=Philips
+
+OUI:1868CB*
+ ID_OUI_FROM_DATABASE=Hangzhou Hikvision Digital Technology Co.,Ltd.
+
+OUI:F80BCB*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
+OUI:9CC8AE*
+ ID_OUI_FROM_DATABASE=Becton, Dickinson and Company
+
+OUI:B0359F*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
+OUI:24EA40*
+ ID_OUI_FROM_DATABASE=Helmholz GmbH & Co. KG
+
+OUI:84A9C4*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:A0F479*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:100501*
+ ID_OUI_FROM_DATABASE=PEGATRON CORPORATION
+
+OUI:046E02*
+ ID_OUI_FROM_DATABASE=OpenRTLS Group
+
+OUI:000FF4*
+ ID_OUI_FROM_DATABASE=Guntermann & Drunck GmbH
+
+OUI:70DB98*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
+OUI:A43D78*
+ ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+
+OUI:EC01EE*
+ ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+
+OUI:B83765*
+ ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+
+OUI:4448C1*
+ ID_OUI_FROM_DATABASE=Hewlett Packard Enterprise
+
+OUI:FC539E*
+ ID_OUI_FROM_DATABASE=Shanghai Wind Technologies Co.,Ltd
+
+OUI:9CAF6F*
+ ID_OUI_FROM_DATABASE=ITEL MOBILE LIMITED
+
+OUI:105887*
+ ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD
+
+OUI:9C061B*
+ ID_OUI_FROM_DATABASE=Hangzhou H3C Technologies Co., Limited
+
+OUI:907065*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
+OUI:C4ABB2*
+ ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd.
+
+OUI:B8FFB3*
+ ID_OUI_FROM_DATABASE=MitraStar Technology Corp.
+
+OUI:A08E78*
+ ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS
+
+OUI:E0D55E*
+ ID_OUI_FROM_DATABASE=GIGA-BYTE TECHNOLOGY CO.,LTD.
+
+OUI:C4576E*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:90F1AA*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:78BDBC*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:20F452*
+ ID_OUI_FROM_DATABASE=Shanghai IUV Software Development Co. Ltd
+
+OUI:D47AE2*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:88D274*
+ ID_OUI_FROM_DATABASE=zte corporation
+
+OUI:986DC8*
+ ID_OUI_FROM_DATABASE=TOSHIBA MITSUBISHI-ELECTRIC INDUSTRIAL SYSTEMS CORPORATION
+
+OUI:982DBA*
+ ID_OUI_FROM_DATABASE=Fibergate Inc.
+
+OUI:0040AA*
+ ID_OUI_FROM_DATABASE=Valmet Automation
+
+OUI:0080C2*
+ ID_OUI_FROM_DATABASE=IEEE 802.1 Working Group
+
+OUI:68A40E*
+ ID_OUI_FROM_DATABASE=BSH Hausgeräte GmbH
+
+OUI:847933*
+ ID_OUI_FROM_DATABASE=profichip GmbH
+
+OUI:A0C9A0*
+ ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd.
+
+OUI:001CC3*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:641269*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:287AEE*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:FC51A4*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:38700C*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:A41588*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:B81619*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:B077AC*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:145BD1*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:6CC1D2*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:F80BBE*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:DC4517*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:74F612*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:74E7C6*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:0025F2*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:0015A8*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:000E5C*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:000CE5*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:0004BD*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:00E06F*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:386BBB*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:0015CF*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001DCF*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001DD5*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001DD0*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:5C571A*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:D82522*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:70B14E*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:14D4FE*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:002374*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:002641*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:0026BA*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:002180*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:0019C0*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:0014E8*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:0019A6*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001700*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:901ACA*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:E8ED05*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:707630*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:90C792*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:789684*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:CC65AD*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:986B3D*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:5CE30E*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:7823AE*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:447F77*
+ ID_OUI_FROM_DATABASE=Connected Home
+
+OUI:2C7E81*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:009AD2*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
+OUI:84C0EF*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:7C1C68*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:745427*
+ ID_OUI_FROM_DATABASE=SHENZHEN FAST TECHNOLOGIES CO.,LTD
+
+OUI:F40E83*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:7C8BCA*
+ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
+
+OUI:D8F1F0*
+ ID_OUI_FROM_DATABASE=Pepxim International Limited
+
+OUI:88B111*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
OUI:2C3996*
ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS
@@ -63626,9 +65438,6 @@ OUI:9060F1*
OUI:EC26CA*
ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
-OUI:A09347*
- ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
-
OUI:2C088C*
ID_OUI_FROM_DATABASE=HUMAX Co., Ltd.
@@ -64958,9 +66767,6 @@ OUI:E85D6B*
OUI:8C3357*
ID_OUI_FROM_DATABASE=HiteVision Digital Media Technology Co.,Ltd.
-OUI:506787*
- ID_OUI_FROM_DATABASE=iTellus
-
OUI:F4D261*
ID_OUI_FROM_DATABASE=SEMOCON Co., Ltd
@@ -65153,9 +66959,6 @@ OUI:90DFB7*
OUI:B843E4*
ID_OUI_FROM_DATABASE=Vlatacom
-OUI:8425A4*
- ID_OUI_FROM_DATABASE=Tariox Limited
-
OUI:E07F53*
ID_OUI_FROM_DATABASE=TECHBOARD SRL
@@ -65987,9 +67790,6 @@ OUI:2CEDEB*
OUI:381C4A*
ID_OUI_FROM_DATABASE=SIMCom Wireless Solutions Co.,Ltd.
-OUI:C8DE51*
- ID_OUI_FROM_DATABASE=Integra Networks, Inc.
-
OUI:901EDD*
ID_OUI_FROM_DATABASE=GREAT COMPUTER CORPORATION
@@ -66929,9 +68729,6 @@ OUI:C4D489*
OUI:1C7C11*
ID_OUI_FROM_DATABASE=EID
-OUI:F43E61*
- ID_OUI_FROM_DATABASE=Shenzhen Gongjin Electronics Co., Ltd
-
OUI:B0B32B*
ID_OUI_FROM_DATABASE=Slican Sp. z o.o.
@@ -67157,9 +68954,6 @@ OUI:9C4563*
OUI:E42771*
ID_OUI_FROM_DATABASE=Smartlabs
-OUI:C4EEF5*
- ID_OUI_FROM_DATABASE=Oclaro, Inc.
-
OUI:0876FF*
ID_OUI_FROM_DATABASE=Thomson Telecom Belgium
@@ -68624,9 +70418,6 @@ OUI:001FAA*
OUI:001FA5*
ID_OUI_FROM_DATABASE=Blue-White Industries
-OUI:001FA4*
- ID_OUI_FROM_DATABASE=ShenZhen Gongjin Electronics Co.,Ltd
-
OUI:001FA0*
ID_OUI_FROM_DATABASE=A10 Networks
@@ -68840,9 +70631,6 @@ OUI:001D4D*
OUI:001D49*
ID_OUI_FROM_DATABASE=Innovation Wireless Inc.
-OUI:001D44*
- ID_OUI_FROM_DATABASE=KROHNE Messtechnik GmbH
-
OUI:001D3D*
ID_OUI_FROM_DATABASE=Avidyne Corporation
@@ -69623,9 +71411,6 @@ OUI:00181D*
OUI:001811*
ID_OUI_FROM_DATABASE=Neuros Technology International, LLC.
-OUI:00180A*
- ID_OUI_FROM_DATABASE=Meraki, Inc.
-
OUI:001801*
ID_OUI_FROM_DATABASE=Actiontec Electronics, Inc
@@ -70691,9 +72476,6 @@ OUI:000F1D*
OUI:000F10*
ID_OUI_FROM_DATABASE=RDM Corporation
-OUI:000F17*
- ID_OUI_FROM_DATABASE=Insta Elektro GmbH
-
OUI:000F1E*
ID_OUI_FROM_DATABASE=Chengdu KT Electric Co.of High & New Technology
@@ -72665,9 +74447,6 @@ OUI:000232*
OUI:00012A*
ID_OUI_FROM_DATABASE=Telematica Sistems Inteligente
-OUI:000130*
- ID_OUI_FROM_DATABASE=Extreme Networks
-
OUI:000137*
ID_OUI_FROM_DATABASE=IT Farm Corporation
@@ -73832,9 +75611,6 @@ OUI:002054*
OUI:0020A7*
ID_OUI_FROM_DATABASE=PAIRGAIN TECHNOLOGIES, INC.
-OUI:0020DA*
- ID_OUI_FROM_DATABASE=Alcatel North America ESD
-
OUI:002005*
ID_OUI_FROM_DATABASE=SIMPLE TECHNOLOGY
@@ -74735,9 +76511,6 @@ OUI:88AE1D*
OUI:5C353B*
ID_OUI_FROM_DATABASE=Compal Broadband Networks, Inc.
-OUI:C8F230*
- ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
-
OUI:1C4419*
ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
@@ -74978,21 +76751,12 @@ OUI:DC0B1A*
OUI:74888B*
ID_OUI_FROM_DATABASE=ADB Broadband Italia
-OUI:84D6D0*
- ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
-
-OUI:E0CB1D*
- ID_OUI_FROM_DATABASE=Private
-
OUI:ACD074*
ID_OUI_FROM_DATABASE=Espressif Inc.
OUI:D05349*
ID_OUI_FROM_DATABASE=Liteon Technology Corporation
-OUI:00BB3A*
- ID_OUI_FROM_DATABASE=Private
-
OUI:000941*
ID_OUI_FROM_DATABASE=Allied Telesis R&D Center K.K.
@@ -75203,24 +76967,9 @@ OUI:18227E*
OUI:00F46F*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:BC1485*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
OUI:9CE6E7*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-OUI:380195*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:5CF6DC*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:1077B1*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
-OUI:508569*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
OUI:0090A2*
ID_OUI_FROM_DATABASE=CyberTAN Technology Inc.
@@ -75521,9 +77270,6 @@ OUI:E0071B*
OUI:A86AC1*
ID_OUI_FROM_DATABASE=HanbitEDS Co., Ltd.
-OUI:40163B*
- ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-
OUI:88B1E1*
ID_OUI_FROM_DATABASE=Mojo Networks, Inc.
@@ -75800,9 +77546,6 @@ OUI:E811CA*
OUI:ECD68A*
ID_OUI_FROM_DATABASE=Shenzhen JMicron Intelligent Technology Developmen
-OUI:1C77F6*
- ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
-
OUI:08D0B7*
ID_OUI_FROM_DATABASE=Qingdao Hisense Communications Co.,Ltd.
@@ -76019,135 +77762,9 @@ OUI:BC8AA3*
OUI:70A84C*
ID_OUI_FROM_DATABASE=MONAD., Inc.
-OUI:00D088*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:001675*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:0016B5*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:001784*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:0017E2*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:CC7D37*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:001A77*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:984B4A*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:0015A4*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:0015A3*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:7CBFB1*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:8096B1*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:00909C*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:001180*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:0017EE*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:407009*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:94877C*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:001DD2*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:9C3426*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:5C8FE0*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:6CCA08*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:5465DE*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:F8EDA5*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
OUI:00A289*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
-OUI:ACEC80*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:3C7A8A*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:000FCC*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:BCCAB5*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:80F503*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:8496D8*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:D42C0F*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-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.
-
-OUI:00211E*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:E48399*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:002636*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:0012C9*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:001CFB*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:001C12*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
-OUI:001FC4*
- ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-
OUI:6C1E90*
ID_OUI_FROM_DATABASE=Hansol Technics Co., Ltd.
@@ -76754,9 +78371,6 @@ OUI:FCFAF7*
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
@@ -76889,9 +78503,6 @@ OUI:9C5D12*
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.
@@ -76910,9 +78521,6 @@ OUI:B49691*
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.
@@ -76970,18 +78578,12 @@ OUI:20780B*
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
@@ -77026,3 +78628,438 @@ OUI:B81DAA*
OUI:407D0F*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:3805AC*
+ ID_OUI_FROM_DATABASE=Piller Group GmbH
+
+OUI:F8BBBF*
+ ID_OUI_FROM_DATABASE=eero inc.
+
+OUI:0CF4D5*
+ ID_OUI_FROM_DATABASE=Ruckus Wireless
+
+OUI:000130*
+ ID_OUI_FROM_DATABASE=Extreme Networks
+
+OUI:706DEC*
+ ID_OUI_FROM_DATABASE=Wifi-soft LLC
+
+OUI:AC6B0F*
+ ID_OUI_FROM_DATABASE=CADENCE DESIGN SYSTEMS INC
+
+OUI:00BB3A*
+ ID_OUI_FROM_DATABASE=Private
+
+OUI:E0CB1D*
+ ID_OUI_FROM_DATABASE=Private
+
+OUI:84D6D0*
+ ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
+
+OUI:34D270*
+ ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
+
+OUI:CC82EB*
+ ID_OUI_FROM_DATABASE=KYOCERA CORPORATION
+
+OUI:5082D5*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:9C84BF*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:7894B4*
+ ID_OUI_FROM_DATABASE=Sercomm Corporation.
+
+OUI:000F17*
+ ID_OUI_FROM_DATABASE=Insta Elektro GmbH
+
+OUI:002365*
+ ID_OUI_FROM_DATABASE=Insta Elektro GmbH
+
+OUI:C4EEF5*
+ ID_OUI_FROM_DATABASE=II-VI Incorporated
+
+OUI:002CC8*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
+OUI:70AF24*
+ ID_OUI_FROM_DATABASE=TP Vision Belgium NV
+
+OUI:7CE97C*
+ ID_OUI_FROM_DATABASE=ITEL MOBILE LIMITED
+
+OUI:285F2F*
+ ID_OUI_FROM_DATABASE=RNware Co.,Ltd.
+
+OUI:E0C0D1*
+ ID_OUI_FROM_DATABASE=CK Telecom (Shenzhen) Limited
+
+OUI:948BC1*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:4827EA*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:049573*
+ ID_OUI_FROM_DATABASE=zte corporation
+
+OUI:001D44*
+ ID_OUI_FROM_DATABASE=Krohne
+
+OUI:48BF6B*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:245BA7*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:BCA920*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:D055B2*
+ ID_OUI_FROM_DATABASE=Integrated Device Technology (Malaysia) Sdn. Bhd.
+
+OUI:A49BF5*
+ ID_OUI_FROM_DATABASE=Hybridserver Tec GmbH
+
+OUI:B436E3*
+ ID_OUI_FROM_DATABASE=KBVISION GROUP
+
+OUI:488803*
+ ID_OUI_FROM_DATABASE=ManTechnology Inc.
+
+OUI:7C6BF7*
+ ID_OUI_FROM_DATABASE=NTI co., ltd.
+
+OUI:54E061*
+ ID_OUI_FROM_DATABASE=SICHUAN TIANYI COMHEART TELECOMCO., LTD
+
+OUI:B47C9C*
+ ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
+
+OUI:E81367*
+ ID_OUI_FROM_DATABASE=AIRSOUND Inc.
+
+OUI:64D154*
+ ID_OUI_FROM_DATABASE=Routerboard.com
+
+OUI:0020DA*
+ ID_OUI_FROM_DATABASE=Alcatel-Lucent Enterprise
+
+OUI:1CDA27*
+ ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd.
+
+OUI:345BBB*
+ ID_OUI_FROM_DATABASE=GD Midea Air-Conditioning Equipment Co.,Ltd.
+
+OUI:34CE00*
+ ID_OUI_FROM_DATABASE=XIAOMI Electronics,CO.,LTD
+
+OUI:F82F08*
+ ID_OUI_FROM_DATABASE=Molex
+
+OUI:68262A*
+ ID_OUI_FROM_DATABASE=SICHUAN TIANYI COMHEART TELECOMCO., LTD
+
+OUI:680235*
+ ID_OUI_FROM_DATABASE=Konten Networks Inc.
+
+OUI:3C678C*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:D06F82*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:844765*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
+OUI:A0C4A5*
+ ID_OUI_FROM_DATABASE=SYGN HOUSE CO.,LTD
+
+OUI:506787*
+ ID_OUI_FROM_DATABASE=Planet Networks
+
+OUI:C83A6B*
+ ID_OUI_FROM_DATABASE=Roku, Inc
+
+OUI:B4C6F8*
+ ID_OUI_FROM_DATABASE=Axilspot Communication
+
+OUI:70D923*
+ ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd.
+
+OUI:B83A08*
+ ID_OUI_FROM_DATABASE=Tenda Technology Co.,Ltd.Dongguan branch
+
+OUI:388C50*
+ ID_OUI_FROM_DATABASE=LG Electronics
+
+OUI:50D37F*
+ ID_OUI_FROM_DATABASE=Yu Fly Mikly Way Science and Technology Co., Ltd.
+
+OUI:D8D866*
+ ID_OUI_FROM_DATABASE=SHENZHEN TOZED TECHNOLOGIES CO.,LTD.
+
+OUI:F43E61*
+ ID_OUI_FROM_DATABASE=SHENZHEN GONGJIN ELECTRONICS CO.,LT
+
+OUI:001FA4*
+ ID_OUI_FROM_DATABASE=SHENZHEN GONGJIN ELECTRONICS CO.,LT
+
+OUI:1C5A0B*
+ ID_OUI_FROM_DATABASE=Tegile Systems
+
+OUI:38AC3D*
+ ID_OUI_FROM_DATABASE=Nephos Inc
+
+OUI:A09347*
+ ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+
+OUI:C8F230*
+ ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+
+OUI:1C77F6*
+ ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+
+OUI:E44790*
+ ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+
+OUI:D4503F*
+ ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+
+OUI:8425A4*
+ ID_OUI_FROM_DATABASE=Tariox Limited
+
+OUI:D8C8E9*
+ ID_OUI_FROM_DATABASE=Phicomm (Shanghai) Co., Ltd.
+
+OUI:CC90E8*
+ ID_OUI_FROM_DATABASE=Shenzhen YOUHUA Technology Co., Ltd
+
+OUI:88CC45*
+ ID_OUI_FROM_DATABASE=Skyworth Digital Technology(Shenzhen) Co.,Ltd
+
+OUI:605317*
+ ID_OUI_FROM_DATABASE=Sandstone Technologies
+
+OUI:50338B*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
+OUI:986C5C*
+ ID_OUI_FROM_DATABASE=Jiangxi Gosun Guard Security Co.,Ltd
+
+OUI:F4FCB1*
+ ID_OUI_FROM_DATABASE=JJ Corp
+
+OUI:543B30*
+ ID_OUI_FROM_DATABASE=duagon AG
+
+OUI:60BA18*
+ ID_OUI_FROM_DATABASE=nextLAP GmbH
+
+OUI:704CA5*
+ ID_OUI_FROM_DATABASE=Fortinet, Inc.
+
+OUI:40163B*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:5C497D*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:E47DBD*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:503DA1*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:A040A0*
+ ID_OUI_FROM_DATABASE=NETGEAR
+
+OUI:508569*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:1077B1*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:5CF6DC*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:380195*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:BC1485*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:88D50C*
+ ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+
+OUI:509A4C*
+ ID_OUI_FROM_DATABASE=Dell Inc.
+
+OUI:00180A*
+ ID_OUI_FROM_DATABASE=Cisco Meraki
+
+OUI:AC2205*
+ ID_OUI_FROM_DATABASE=Compal Broadband Networks, Inc.
+
+OUI:80A036*
+ ID_OUI_FROM_DATABASE=Shanghai MXCHIP Information Technology Co., Ltd.
+
+OUI:0012C9*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:984B4A*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001A77*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:CC7D37*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:0017E2*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001784*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:0016B5*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001675*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:00D088*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:0017EE*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001180*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:00909C*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:8096B1*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:7CBFB1*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:0015A3*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:0015A4*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:9C3426*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001DD2*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:00211E*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:002210*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001FC4*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001C12*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:001CFB*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:D42C0F*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:8496D8*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:80F503*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:5CB066*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:C0C522*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:0024A0*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:002636*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:E48399*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:E0B7B1*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:94877C*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:407009*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:F8EDA5*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:5465DE*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:6CCA08*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:5C8FE0*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:8C395C*
+ ID_OUI_FROM_DATABASE=Bit4id Srl
+
+OUI:BCCAB5*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:000FCC*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:3C7A8A*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:ACEC80*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:2CA17D*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:309C23*
+ ID_OUI_FROM_DATABASE=Micro-Star INTL CO., LTD.
+
+OUI:947BE7*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
+OUI:2C2617*
+ ID_OUI_FROM_DATABASE=Oculus VR, LLC
+
+OUI:98F7D7*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
+OUI:2C41A1*
+ ID_OUI_FROM_DATABASE=Bose Corporation
+
+OUI:C8DE51*
+ ID_OUI_FROM_DATABASE=IntegraOptics
+
+OUI:182CB4*
+ ID_OUI_FROM_DATABASE=Nectarsoft Co., Ltd.
+
+OUI:14780B*
+ ID_OUI_FROM_DATABASE=PerkinElmer Technologies GmbH & Co. KG
+
+OUI:74DADA*
+ ID_OUI_FROM_DATABASE=D-Link International
diff --git a/hwdb/20-acpi-vendor.hwdb b/hwdb/20-acpi-vendor.hwdb
index c0fe421c11..886e61aa38 100644
--- a/hwdb/20-acpi-vendor.hwdb
+++ b/hwdb/20-acpi-vendor.hwdb
@@ -6,6 +6,9 @@
#
# With various additions from other sources
+acpi:3GVR*:
+ ID_VENDOR_FROM_DATABASE=VR Technology Holdings Limited
+
acpi:3NOD*:
ID_VENDOR_FROM_DATABASE=Shenzhen three Connaught Information Technology Co., Ltd. (3nod Group)
@@ -1947,6 +1950,9 @@ acpi:DPL*:
acpi:DPM*:
ID_VENDOR_FROM_DATABASE=ADPM Synthesis sas
+acpi:DPN*:
+ ID_VENDOR_FROM_DATABASE=Shanghai Lexiang Technology Limited
+
acpi:DPS*:
ID_VENDOR_FROM_DATABASE=Digital Processing Systems
@@ -1983,6 +1989,9 @@ acpi:DSD*:
acpi:DSI*:
ID_VENDOR_FROM_DATABASE=Digitan Systems Inc
+acpi:DSJ*:
+ ID_VENDOR_FROM_DATABASE=VR Technology Holdings Limited
+
acpi:DSM*:
ID_VENDOR_FROM_DATABASE=DSM Digital Services GmbH
@@ -3489,6 +3498,9 @@ acpi:IVI*:
acpi:IVM*:
ID_VENDOR_FROM_DATABASE=Iiyama North America
+acpi:IVR*:
+ ID_VENDOR_FROM_DATABASE=Inlife-Handnet Co., Ltd.
+
acpi:IVS*:
ID_VENDOR_FROM_DATABASE=Intevac Photonics Inc.
@@ -5367,6 +5379,9 @@ acpi:PVN*:
acpi:PVP*:
ID_VENDOR_FROM_DATABASE=Klos Technologies, Inc.
+acpi:PVR*:
+ ID_VENDOR_FROM_DATABASE=Pimax Tech. CO., LTD
+
acpi:PXC*:
ID_VENDOR_FROM_DATABASE=Phoenix Contact
@@ -6780,6 +6795,9 @@ acpi:TVD*:
acpi:TVI*:
ID_VENDOR_FROM_DATABASE=Truevision
+acpi:TVL*:
+ ID_VENDOR_FROM_DATABASE=Total Vision LTD
+
acpi:TVM*:
ID_VENDOR_FROM_DATABASE=Taiwan Video & Monitor Corporation
diff --git a/hwdb/20-pci-vendor-model.hwdb b/hwdb/20-pci-vendor-model.hwdb
index ea190ff7ca..83ff9f3668 100644
--- a/hwdb/20-pci-vendor-model.hwdb
+++ b/hwdb/20-pci-vendor-model.hwdb
@@ -68,12 +68,18 @@ pci:v0000021Bd00008139*
pci:v00000270*
ID_VENDOR_FROM_DATABASE=Hauppauge computer works Inc. (Wrong ID)
+pci:v00000291*
+ ID_VENDOR_FROM_DATABASE=Davicom Semiconductor, Inc. (Wrong ID)
+
pci:v000002AC*
ID_VENDOR_FROM_DATABASE=SpeedStream
pci:v000002ACd00001012*
ID_MODEL_FROM_DATABASE=1012 PCMCIA 10/100 Ethernet Card [RTL81xx]
+pci:v000002E0*
+ ID_VENDOR_FROM_DATABASE=XFX Pine Group Inc. (Wrong ID)
+
pci:v00000303*
ID_VENDOR_FROM_DATABASE=Hewlett-Packard Company (Wrong ID)
@@ -653,6 +659,9 @@ pci:v00001000d00000014sv00001028sd00001FD4*
pci:v00001000d00000014sv00001D49sd00000602*
ID_MODEL_FROM_DATABASE=MegaRAID Tri-Mode SAS3516 (ThinkSystem RAID 930-16i 4GB Flash PCIe 12Gb Adapter)
+pci:v00001000d00000015*
+ ID_MODEL_FROM_DATABASE=MegaRAID Tri-Mode SAS3416
+
pci:v00001000d00000016*
ID_MODEL_FROM_DATABASE=MegaRAID Tri-Mode SAS3508
@@ -1547,6 +1556,9 @@ pci:v00001000d00000097sv00001028sd00001FD2*
pci:v00001000d00000097sv00001028sd00001FD3*
ID_MODEL_FROM_DATABASE=SAS3008 PCI-Express Fusion-MPT SAS-3 (HBA330 MMZ)
+pci:v00001000d00000097sv00001BD4sd00000011*
+ ID_MODEL_FROM_DATABASE=SAS3008 PCI-Express Fusion-MPT SAS-3 (Inspur 12Gb 8i-3008 IT SAS HBA)
+
pci:v00001000d000000AB*
ID_MODEL_FROM_DATABASE=SAS3516 Fusion-MPT Tri-Mode RAID On Chip (ROC)
@@ -1554,10 +1566,10 @@ 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)
+ ID_MODEL_FROM_DATABASE=SAS3416 Fusion-MPT Tri-Mode I/O Controller Chip (IOC) (ThinkSystem 430-16i SAS/SATA 12Gb HBA)
pci:v00001000d000000ACsv00001D49sd00000203*
- ID_MODEL_FROM_DATABASE=SAS3416 Fusion-MPT Tri-Mode I/O Controller Chip (IOC) (ThinkSystem 9400-16e PCIe 12Gb HBA)
+ ID_MODEL_FROM_DATABASE=SAS3416 Fusion-MPT Tri-Mode I/O Controller Chip (IOC) (ThinkSystem 430-16e SAS/SATA 12Gb HBA)
pci:v00001000d000000AE*
ID_MODEL_FROM_DATABASE=SAS3508 Fusion-MPT Tri-Mode RAID On Chip (ROC)
@@ -1566,10 +1578,10 @@ 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)
+ ID_MODEL_FROM_DATABASE=SAS3408 Fusion-MPT Tri-Mode I/O Controller Chip (IOC) (ThinkSystem 430-8i SAS/SATA 12Gb HBA)
pci:v00001000d000000AFsv00001D49sd00000202*
- ID_MODEL_FROM_DATABASE=SAS3408 Fusion-MPT Tri-Mode I/O Controller Chip (IOC) (ThinkSystem 9400-8e PCIe 12Gb HBA)
+ ID_MODEL_FROM_DATABASE=SAS3408 Fusion-MPT Tri-Mode I/O Controller Chip (IOC) (ThinkSystem 430-8e SAS/SATA 12Gb HBA)
pci:v00001000d000000BE*
ID_MODEL_FROM_DATABASE=SAS3504 Fusion-MPT Tri-Mode RAID On Chip (ROC)
@@ -6476,6 +6488,21 @@ pci:v00001002d000067BE*
pci:v00001002d000067C0*
ID_MODEL_FROM_DATABASE=Ellesmere [Polaris10]
+pci:v00001002d000067C4*
+ ID_MODEL_FROM_DATABASE=Ellesmere [Radeon Pro WX 7100]
+
+pci:v00001002d000067C7*
+ ID_MODEL_FROM_DATABASE=Ellesmere [Radeon Pro WX 5100]
+
+pci:v00001002d000067CA*
+ ID_MODEL_FROM_DATABASE=Ellesmere [Polaris10]
+
+pci:v00001002d000067CC*
+ ID_MODEL_FROM_DATABASE=Ellesmere [Polaris10]
+
+pci:v00001002d000067CF*
+ ID_MODEL_FROM_DATABASE=Ellesmere [Polaris10]
+
pci:v00001002d000067DF*
ID_MODEL_FROM_DATABASE=Ellesmere [Radeon RX 470/480]
@@ -6527,6 +6554,9 @@ pci:v00001002d000067E0*
pci:v00001002d000067E1*
ID_MODEL_FROM_DATABASE=Baffin [Polaris11]
+pci:v00001002d000067E3*
+ ID_MODEL_FROM_DATABASE=Baffin [Radeon Pro WX 4100]
+
pci:v00001002d000067E8*
ID_MODEL_FROM_DATABASE=Baffin [Polaris11]
@@ -6611,6 +6641,9 @@ pci:v00001002d00006811sv00001458sd00002016*
pci:v00001002d00006811sv00001462sd00002016*
ID_MODEL_FROM_DATABASE=Curacao PRO [Radeon R7 370 / R9 270/370 OEM] (Trinidad PRO [Radeon R9 370 OEM])
+pci:v00001002d00006811sv00001462sd00003050*
+ ID_MODEL_FROM_DATABASE=Curacao PRO [Radeon R7 370 / R9 270/370 OEM] (R9 270 Gaming OC)
+
pci:v00001002d00006811sv0000148Csd00002016*
ID_MODEL_FROM_DATABASE=Curacao PRO [Radeon R7 370 / R9 270/370 OEM] (Trinidad PRO [Radeon R9 370 OEM])
@@ -8636,6 +8669,24 @@ pci:v00001002d00006939sv0000148Csd00009380*
pci:v00001002d00006939sv0000174Bsd0000E308*
ID_MODEL_FROM_DATABASE=Tonga PRO [Radeon R9 285/380] (Radeon R9 380 Nitro 4G D5)
+pci:v00001002d00006980*
+ ID_MODEL_FROM_DATABASE=Polaris12
+
+pci:v00001002d00006981*
+ ID_MODEL_FROM_DATABASE=Polaris12
+
+pci:v00001002d00006985*
+ ID_MODEL_FROM_DATABASE=Polaris12
+
+pci:v00001002d00006986*
+ ID_MODEL_FROM_DATABASE=Polaris12
+
+pci:v00001002d00006987*
+ ID_MODEL_FROM_DATABASE=Polaris12
+
+pci:v00001002d0000699F*
+ ID_MODEL_FROM_DATABASE=Polaris12
+
pci:v00001002d0000700F*
ID_MODEL_FROM_DATABASE=RS100 AGP Bridge
@@ -15086,6 +15137,9 @@ pci:v00001043d00000675sv00000675sd00001707*
pci:v00001043d00000675sv000010CFsd0000105E*
ID_MODEL_FROM_DATABASE=ISDNLink P-IN100-ST-D (ISDN Adapter (PCI Bus, DV, W))
+pci:v00001043d000013A0*
+ ID_MODEL_FROM_DATABASE=Transformer Book T101HA-GR030R
+
pci:v00001043d00009602*
ID_MODEL_FROM_DATABASE=AMD RS780/RS880 PCI to PCI bridge (int gfx)
@@ -16304,6 +16358,12 @@ pci:v0000104Dd0000808A*
pci:v0000104Dd000081CE*
ID_MODEL_FROM_DATABASE=SxS Pro memory card
+pci:v0000104Dd0000905C*
+ ID_MODEL_FROM_DATABASE=SxS Pro memory card
+
+pci:v0000104Dd0000907F*
+ ID_MODEL_FROM_DATABASE=SxS Pro+ memory card
+
pci:v0000104Dd0000908F*
ID_MODEL_FROM_DATABASE=Aeolia ACPI
@@ -16328,6 +16388,9 @@ pci:v0000104Dd000090A3*
pci:v0000104Dd000090A4*
ID_MODEL_FROM_DATABASE=Aeolia USB 3.0 xHCI Host Controller
+pci:v0000104Dd000090BC*
+ ID_MODEL_FROM_DATABASE=SxS Pro+ memory card
+
pci:v0000104E*
ID_VENDOR_FROM_DATABASE=Oak Technology, Inc
@@ -18017,6 +18080,48 @@ pci:v00001077d00008031*
pci:v00001077d00008032*
ID_MODEL_FROM_DATABASE=8300 Series 10GbE Converged Network Adapter (iSCSI)
+pci:v00001077d00008070*
+ ID_MODEL_FROM_DATABASE=FastLinQ QL41000 Series 10/25/40/50GbE Controller
+
+pci:v00001077d00008070sv00001077sd00000011*
+ ID_MODEL_FROM_DATABASE=FastLinQ QL41000 Series 10/25/40/50GbE Controller (FastLinQ QL41212H 25GbE Adapter)
+
+pci:v00001077d00008070sv00001077sd00000012*
+ ID_MODEL_FROM_DATABASE=FastLinQ QL41000 Series 10/25/40/50GbE Controller (FastLinQ QL41112H 10GbE Adapter)
+
+pci:v00001077d00008080*
+ ID_MODEL_FROM_DATABASE=FastLinQ QL41000 Series 10/25/40/50GbE Controller (FCoE)
+
+pci:v00001077d00008080sv00001077sd0000000D*
+ ID_MODEL_FROM_DATABASE=FastLinQ QL41000 Series 10/25/40/50GbE Controller (FCoE) (FastLinQ QL41262H 25GbE FCoE Adapter)
+
+pci:v00001077d00008080sv00001077sd0000000E*
+ ID_MODEL_FROM_DATABASE=FastLinQ QL41000 Series 10/25/40/50GbE Controller (FCoE) (FastLinQ QL41162H 10GbE FCoE Adapter)
+
+pci:v00001077d00008084*
+ ID_MODEL_FROM_DATABASE=FastLinQ QL41000 Series 10/25/40/50GbE Controller (iSCSI)
+
+pci:v00001077d00008084sv00001077sd0000000D*
+ ID_MODEL_FROM_DATABASE=FastLinQ QL41000 Series 10/25/40/50GbE Controller (iSCSI) (FastLinQ QL41262H 25GbE iSCSI Adapter)
+
+pci:v00001077d00008084sv00001077sd0000000E*
+ ID_MODEL_FROM_DATABASE=FastLinQ QL41000 Series 10/25/40/50GbE Controller (iSCSI) (FastLinQ QL41162H 10GbE iSCSI Adapter)
+
+pci:v00001077d00008090*
+ ID_MODEL_FROM_DATABASE=FastLinQ QL41000 Series Gigabit Ethernet Controller (SR-IOV VF)
+
+pci:v00001077d00008090sv00001077sd0000000D*
+ ID_MODEL_FROM_DATABASE=FastLinQ QL41000 Series Gigabit Ethernet Controller (SR-IOV VF) (FastLinQ QL41262H 25GbE FCoE Adapter (SR-IOV VF))
+
+pci:v00001077d00008090sv00001077sd0000000E*
+ ID_MODEL_FROM_DATABASE=FastLinQ QL41000 Series Gigabit Ethernet Controller (SR-IOV VF) (FastLinQ QL41162H 10GbE iSCSI Adapter (SR-IOV VF))
+
+pci:v00001077d00008090sv00001077sd00000011*
+ ID_MODEL_FROM_DATABASE=FastLinQ QL41000 Series Gigabit Ethernet Controller (SR-IOV VF) (FastLinQ QL41212H 25GbE Adapter (SR-IOV VF))
+
+pci:v00001077d00008090sv00001077sd00000012*
+ ID_MODEL_FROM_DATABASE=FastLinQ QL41000 Series Gigabit Ethernet Controller (SR-IOV VF) (FastLinQ QL41112H 10GbE Adapter (SR-IOV VF))
+
pci:v00001077d00008430*
ID_MODEL_FROM_DATABASE=ISP8324 1/10GbE Converged Network Controller (NIC VF)
@@ -22317,7 +22422,7 @@ 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)
+ ID_MODEL_FROM_DATABASE=PEX 9733 33-lane, 9-port PCI Express Gen 3 (8.0 GT/s) Switch (ThinkSystem 1610-4P NVMe Switch Adapter)
pci:v000010B5d00009749*
ID_MODEL_FROM_DATABASE=PEX 9749 49-lane, 13-port PCI Express Gen 3 (8.0 GT/s) Switch
@@ -24836,6 +24941,9 @@ pci:v000010DEd00000103sv00001048sd00000C4A*
pci:v000010DEd00000103sv00001048sd00000C4B*
ID_MODEL_FROM_DATABASE=NV10GL [Quadro] (GLoria II-64 Pro DVII)
+pci:v000010DEd00000103sv000010A9sd00009002*
+ ID_MODEL_FROM_DATABASE=NV10GL [Quadro] (VPro VR3)
+
pci:v000010DEd00000110*
ID_MODEL_FROM_DATABASE=NV11 [GeForce2 MX/MX 400]
@@ -29882,6 +29990,9 @@ pci:v000010DEd000010C5*
pci:v000010DEd000010D8*
ID_MODEL_FROM_DATABASE=GT218 [NVS 300]
+pci:v000010DEd000010EF*
+ ID_MODEL_FROM_DATABASE=GP102 HDMI Audio Controller
+
pci:v000010DEd000010F0*
ID_MODEL_FROM_DATABASE=GP104 High Definition Audio Controller
@@ -31349,6 +31460,9 @@ pci:v000010DEd00001348*
pci:v000010DEd00001349*
ID_MODEL_FROM_DATABASE=GM108M [GeForce 930M]
+pci:v000010DEd0000134B*
+ ID_MODEL_FROM_DATABASE=GM108M [GeForce 940MX]
+
pci:v000010DEd0000134D*
ID_MODEL_FROM_DATABASE=GM108M [GeForce 940MX]
@@ -31445,6 +31559,12 @@ pci:v000010DEd000013B2*
pci:v000010DEd000013B3*
ID_MODEL_FROM_DATABASE=GM107GLM [Quadro K2200M]
+pci:v000010DEd000013B4*
+ ID_MODEL_FROM_DATABASE=GM107GLM [Quadro M620 Mobile]
+
+pci:v000010DEd000013B6*
+ ID_MODEL_FROM_DATABASE=GM107GLM [Quadro M1200 Mobile]
+
pci:v000010DEd000013B9*
ID_MODEL_FROM_DATABASE=GM107GL [NVS 810]
@@ -31506,7 +31626,7 @@ pci:v000010DEd000013F3*
ID_MODEL_FROM_DATABASE=GM204GL [Tesla M6]
pci:v000010DEd000013F8*
- ID_MODEL_FROM_DATABASE=GM204GLM [Quadro M5000M]
+ ID_MODEL_FROM_DATABASE=GM204GLM [Quadro M5000M / M5000 SE]
pci:v000010DEd000013F9*
ID_MODEL_FROM_DATABASE=GM204GLM [Quadro M4000M]
@@ -31541,17 +31661,23 @@ pci:v000010DEd00001430*
pci:v000010DEd00001431*
ID_MODEL_FROM_DATABASE=GM206GL [Tesla M4]
+pci:v000010DEd00001436*
+ ID_MODEL_FROM_DATABASE=GM206GLM [Quadro M2200 Mobile]
+
pci:v000010DEd000015F0*
ID_MODEL_FROM_DATABASE=GP100GL
pci:v000010DEd000015F1*
ID_MODEL_FROM_DATABASE=GP100GL
+pci:v000010DEd000015F7*
+ ID_MODEL_FROM_DATABASE=GP100GL [Tesla P100 PCIe 12GB]
+
pci:v000010DEd000015F8*
- ID_MODEL_FROM_DATABASE=GP100GL
+ ID_MODEL_FROM_DATABASE=GP100GL [Tesla P100 PCIe 16GB]
pci:v000010DEd000015F9*
- ID_MODEL_FROM_DATABASE=GP100GL
+ ID_MODEL_FROM_DATABASE=GP100GL [Tesla P100 SMX2 16GB]
pci:v000010DEd00001617*
ID_MODEL_FROM_DATABASE=GM204M [GeForce GTX 980M]
@@ -31622,11 +31748,14 @@ pci:v000010DEd00001B82*
pci:v000010DEd00001B83*
ID_MODEL_FROM_DATABASE=GP104
+pci:v000010DEd00001B84*
+ ID_MODEL_FROM_DATABASE=GP104 [GeForce GTX 1060 3GB]
+
pci:v000010DEd00001BA0*
- ID_MODEL_FROM_DATABASE=GP104M [GeForce GTX 1080]
+ ID_MODEL_FROM_DATABASE=GP104M [GeForce GTX 1080 Mobile]
pci:v000010DEd00001BA1*
- ID_MODEL_FROM_DATABASE=GP104M [GeForce GTX 1070]
+ ID_MODEL_FROM_DATABASE=GP104M [GeForce GTX 1070 Mobile]
pci:v000010DEd00001BB0*
ID_MODEL_FROM_DATABASE=GP104GL [Quadro P5000]
@@ -31634,14 +31763,26 @@ pci:v000010DEd00001BB0*
pci:v000010DEd00001BB1*
ID_MODEL_FROM_DATABASE=GP104GL
+pci:v000010DEd00001BB3*
+ ID_MODEL_FROM_DATABASE=GP104GL [Tesla P4]
+
pci:v000010DEd00001BB4*
ID_MODEL_FROM_DATABASE=GP104GL
+pci:v000010DEd00001BB6*
+ ID_MODEL_FROM_DATABASE=GP104GLM [Quadro P5000 Mobile]
+
+pci:v000010DEd00001BB7*
+ ID_MODEL_FROM_DATABASE=GP104GLM [Quadro P4000 Mobile]
+
+pci:v000010DEd00001BB8*
+ ID_MODEL_FROM_DATABASE=GP104GLM [Quadro P3000 Mobile]
+
pci:v000010DEd00001BE0*
- ID_MODEL_FROM_DATABASE=GP104M [GeForce GTX 1080]
+ ID_MODEL_FROM_DATABASE=GP104M [GeForce GTX 1080 Mobile]
pci:v000010DEd00001BE1*
- ID_MODEL_FROM_DATABASE=GP104M [GeForce GTX 1070]
+ ID_MODEL_FROM_DATABASE=GP104M [GeForce GTX 1070 Mobile]
pci:v000010DEd00001C00*
ID_MODEL_FROM_DATABASE=GP106
@@ -31656,7 +31797,7 @@ pci:v000010DEd00001C03*
ID_MODEL_FROM_DATABASE=GP106 [GeForce GTX 1060 6GB]
pci:v000010DEd00001C20*
- ID_MODEL_FROM_DATABASE=GP106M [GeForce GTX 1060]
+ ID_MODEL_FROM_DATABASE=GP106M [GeForce GTX 1060 Mobile]
pci:v000010DEd00001C30*
ID_MODEL_FROM_DATABASE=GP106GL
@@ -31665,7 +31806,7 @@ pci:v000010DEd00001C35*
ID_MODEL_FROM_DATABASE=GP106
pci:v000010DEd00001C60*
- ID_MODEL_FROM_DATABASE=GP106M [GeForce GTX 1060]
+ ID_MODEL_FROM_DATABASE=GP106M [GeForce GTX 1060 Mobile]
pci:v000010DEd00001C70*
ID_MODEL_FROM_DATABASE=GP106GL
@@ -31679,6 +31820,15 @@ pci:v000010DEd00001C81*
pci:v000010DEd00001C82*
ID_MODEL_FROM_DATABASE=GP107 [GeForce GTX 1050 Ti]
+pci:v000010DEd00001C8C*
+ ID_MODEL_FROM_DATABASE=GP107M [GeForce GTX 1050 Ti Mobile]
+
+pci:v000010DEd00001C8D*
+ ID_MODEL_FROM_DATABASE=GP107M [GeForce GTX 1050 Mobile]
+
+pci:v000010DEd00001C8E*
+ ID_MODEL_FROM_DATABASE=GP107M
+
pci:v000010DEd00001CA7*
ID_MODEL_FROM_DATABASE=GP107GL
@@ -35886,7 +36036,16 @@ pci:v0000111Fd00005243*
ID_MODEL_FROM_DATABASE=Frame capture bus interface
pci:v00001120*
- ID_VENDOR_FROM_DATABASE=EMC Corporation
+ ID_VENDOR_FROM_DATABASE=Dell EMC
+
+pci:v00001120d00002306*
+ ID_MODEL_FROM_DATABASE=Unity Fibre Channel Controller
+
+pci:v00001120d00002501*
+ ID_MODEL_FROM_DATABASE=Unity Ethernet Controller
+
+pci:v00001120d00002505*
+ ID_MODEL_FROM_DATABASE=Unity Fibre Channel Controller
pci:v00001121*
ID_VENDOR_FROM_DATABASE=Zilog
@@ -39152,6 +39311,9 @@ pci:v0000119Ed00000003*
pci:v0000119F*
ID_VENDOR_FROM_DATABASE=Bull HN Information Systems
+pci:v0000119Fd00001081*
+ ID_MODEL_FROM_DATABASE=BXI Host Channel Adapter
+
pci:v000011A0*
ID_VENDOR_FROM_DATABASE=Convex Computer Corporation
@@ -40742,6 +40904,9 @@ pci:v000011F8d00007384*
pci:v000011F8d00008000*
ID_MODEL_FROM_DATABASE=PM8000 [SPC - SAS Protocol Controller]
+pci:v000011F8d00008009*
+ ID_MODEL_FROM_DATABASE=PM8009 SPCve 8x6G
+
pci:v000011F8d00008032*
ID_MODEL_FROM_DATABASE=ATTO Celerity FC8xEN
@@ -40781,6 +40946,12 @@ pci:v000011F8d00008072*
pci:v000011F8d00008073*
ID_MODEL_FROM_DATABASE=PM8073 Tachyon SPCve 12G 16-port SAS/SATA controller
+pci:v000011F8d00008531*
+ ID_MODEL_FROM_DATABASE=PM8531 PFX 24xG3 Fanout PCIe Switches
+
+pci:v000011F8d00008546*
+ ID_MODEL_FROM_DATABASE=PM8546 B-FEIP PSX 96xG3 PCIe Storage Switch
+
pci:v000011F9*
ID_VENDOR_FROM_DATABASE=I-Cube Inc
@@ -47379,7 +47550,7 @@ pci:v00001425d00005083*
ID_MODEL_FROM_DATABASE=T540-5083 Unified Wire Ethernet Controller
pci:v00001425d00005084*
- ID_MODEL_FROM_DATABASE=T580-5084 Unified Wire Ethernet Controller
+ ID_MODEL_FROM_DATABASE=T540-5084 Unified Wire Ethernet Controller
pci:v00001425d00005085*
ID_MODEL_FROM_DATABASE=T580-5085 Unified Wire Ethernet Controller
@@ -47435,6 +47606,18 @@ pci:v00001425d0000509B*
pci:v00001425d0000509C*
ID_MODEL_FROM_DATABASE=T520-509C Unified Wire Ethernet Controller
+pci:v00001425d0000509D*
+ ID_MODEL_FROM_DATABASE=T540-509D Unified Wire Ethernet Controller
+
+pci:v00001425d0000509E*
+ ID_MODEL_FROM_DATABASE=T520-509E Unified Wire Ethernet Controller
+
+pci:v00001425d0000509F*
+ ID_MODEL_FROM_DATABASE=T540-509F Unified Wire Ethernet Controller
+
+pci:v00001425d000050A0*
+ ID_MODEL_FROM_DATABASE=T540-50A0 Unified Wire Ethernet Controller
+
pci:v00001425d00005401*
ID_MODEL_FROM_DATABASE=T520-CR Unified Wire Ethernet Controller
@@ -47520,7 +47703,7 @@ pci:v00001425d00005483*
ID_MODEL_FROM_DATABASE=T540-5083 Unified Wire Ethernet Controller
pci:v00001425d00005484*
- ID_MODEL_FROM_DATABASE=T580-5084 Unified Wire Ethernet Controller
+ ID_MODEL_FROM_DATABASE=T540-5084 Unified Wire Ethernet Controller
pci:v00001425d00005485*
ID_MODEL_FROM_DATABASE=T580-5085 Unified Wire Ethernet Controller
@@ -47576,6 +47759,18 @@ pci:v00001425d0000549B*
pci:v00001425d0000549C*
ID_MODEL_FROM_DATABASE=T520-509C Unified Wire Ethernet Controller
+pci:v00001425d0000549D*
+ ID_MODEL_FROM_DATABASE=T540-509D Unified Wire Ethernet Controller
+
+pci:v00001425d0000549E*
+ ID_MODEL_FROM_DATABASE=T520-509E Unified Wire Ethernet Controller
+
+pci:v00001425d0000549F*
+ ID_MODEL_FROM_DATABASE=T540-509F Unified Wire Ethernet Controller
+
+pci:v00001425d000054A0*
+ ID_MODEL_FROM_DATABASE=T540-50A0 Unified Wire Ethernet Controller
+
pci:v00001425d00005501*
ID_MODEL_FROM_DATABASE=T520-CR Unified Wire Storage Controller
@@ -47661,7 +47856,7 @@ pci:v00001425d00005583*
ID_MODEL_FROM_DATABASE=T540-5083 Unified Wire Storage Controller
pci:v00001425d00005584*
- ID_MODEL_FROM_DATABASE=T580-5084 Unified Wire Storage Controller
+ ID_MODEL_FROM_DATABASE=T540-5084 Unified Wire Storage Controller
pci:v00001425d00005585*
ID_MODEL_FROM_DATABASE=T580-5085 Unified Wire Storage Controller
@@ -47717,6 +47912,18 @@ pci:v00001425d0000559B*
pci:v00001425d0000559C*
ID_MODEL_FROM_DATABASE=T520-509C Unified Wire Storage Controller
+pci:v00001425d0000559D*
+ ID_MODEL_FROM_DATABASE=T540-509D Unified Wire Storage Controller
+
+pci:v00001425d0000559E*
+ ID_MODEL_FROM_DATABASE=T520-509E Unified Wire Storage Controller
+
+pci:v00001425d0000559F*
+ ID_MODEL_FROM_DATABASE=T540-509F Unified Wire Storage Controller
+
+pci:v00001425d000055A0*
+ ID_MODEL_FROM_DATABASE=T540-50A0 Unified Wire Storage Controller
+
pci:v00001425d00005601*
ID_MODEL_FROM_DATABASE=T520-CR Unified Wire Storage Controller
@@ -47802,7 +48009,7 @@ pci:v00001425d00005683*
ID_MODEL_FROM_DATABASE=T540-5083 Unified Wire Storage Controller
pci:v00001425d00005684*
- ID_MODEL_FROM_DATABASE=T580-5084 Unified Wire Storage Controller
+ ID_MODEL_FROM_DATABASE=T540-5084 Unified Wire Storage Controller
pci:v00001425d00005685*
ID_MODEL_FROM_DATABASE=T580-5085 Unified Wire Storage Controller
@@ -47858,6 +48065,18 @@ pci:v00001425d0000569B*
pci:v00001425d0000569C*
ID_MODEL_FROM_DATABASE=T520-509C Unified Wire Storage Controller
+pci:v00001425d0000569D*
+ ID_MODEL_FROM_DATABASE=T540-509D Unified Wire Storage Controller
+
+pci:v00001425d0000569E*
+ ID_MODEL_FROM_DATABASE=T520-509E Unified Wire Storage Controller
+
+pci:v00001425d0000569F*
+ ID_MODEL_FROM_DATABASE=T540-509F Unified Wire Storage Controller
+
+pci:v00001425d000056A0*
+ ID_MODEL_FROM_DATABASE=T540-50A0 Unified Wire Storage Controller
+
pci:v00001425d00005701*
ID_MODEL_FROM_DATABASE=T520-CR Unified Wire Ethernet Controller
@@ -48060,7 +48279,7 @@ pci:v00001425d00005883*
ID_MODEL_FROM_DATABASE=T540-5083 Unified Wire Ethernet Controller [VF]
pci:v00001425d00005884*
- ID_MODEL_FROM_DATABASE=T580-5084 Unified Wire Ethernet Controller [VF]
+ ID_MODEL_FROM_DATABASE=T540-5084 Unified Wire Ethernet Controller [VF]
pci:v00001425d00005885*
ID_MODEL_FROM_DATABASE=T580-5085 Unified Wire Ethernet Controller [VF]
@@ -48116,6 +48335,18 @@ pci:v00001425d0000589B*
pci:v00001425d0000589C*
ID_MODEL_FROM_DATABASE=T520-509C Unified Wire Ethernet Controller [VF]
+pci:v00001425d0000589D*
+ ID_MODEL_FROM_DATABASE=T540-509D Unified Wire Ethernet Controller [VF]
+
+pci:v00001425d0000589E*
+ ID_MODEL_FROM_DATABASE=T520-509E Unified Wire Ethernet Controller [VF]
+
+pci:v00001425d0000589F*
+ ID_MODEL_FROM_DATABASE=T540-509F Unified Wire Ethernet Controller [VF]
+
+pci:v00001425d000058A0*
+ ID_MODEL_FROM_DATABASE=T540-50A0 Unified Wire Ethernet Controller [VF]
+
pci:v00001425d00006001*
ID_MODEL_FROM_DATABASE=T6225-CR Unified Wire Ethernet Controller
@@ -48155,6 +48386,12 @@ pci:v00001425d00006014*
pci:v00001425d00006015*
ID_MODEL_FROM_DATABASE=T6201-BT Unified Wire Ethernet Controller
+pci:v00001425d00006080*
+ ID_MODEL_FROM_DATABASE=T6225-6080 Unified Wire Ethernet Controller
+
+pci:v00001425d00006081*
+ ID_MODEL_FROM_DATABASE=T62100-6081 Unified Wire Ethernet Controller
+
pci:v00001425d00006401*
ID_MODEL_FROM_DATABASE=T6225-CR Unified Wire Ethernet Controller
@@ -48194,6 +48431,12 @@ pci:v00001425d00006414*
pci:v00001425d00006415*
ID_MODEL_FROM_DATABASE=T6201-BT Unified Wire Ethernet Controller
+pci:v00001425d00006480*
+ ID_MODEL_FROM_DATABASE=T6225-6080 Unified Wire Ethernet Controller
+
+pci:v00001425d00006481*
+ ID_MODEL_FROM_DATABASE=T62100-6081 Unified Wire Ethernet Controller
+
pci:v00001425d00006501*
ID_MODEL_FROM_DATABASE=T6225-CR Unified Wire Storage Controller
@@ -48233,6 +48476,12 @@ pci:v00001425d00006514*
pci:v00001425d00006515*
ID_MODEL_FROM_DATABASE=T6201-BT Unified Wire Storage Controller
+pci:v00001425d00006580*
+ ID_MODEL_FROM_DATABASE=T6225-6080 Unified Wire Storage Controller
+
+pci:v00001425d00006581*
+ ID_MODEL_FROM_DATABASE=T62100-6081 Unified Wire Storage Controller
+
pci:v00001425d00006601*
ID_MODEL_FROM_DATABASE=T6225-CR Unified Wire Storage Controller
@@ -48272,6 +48521,12 @@ pci:v00001425d00006614*
pci:v00001425d00006615*
ID_MODEL_FROM_DATABASE=T6201-BT Unified Wire Storage Controller
+pci:v00001425d00006680*
+ ID_MODEL_FROM_DATABASE=T6225-6080 Unified Wire Storage Controller
+
+pci:v00001425d00006681*
+ ID_MODEL_FROM_DATABASE=T62100-6081 Unified Wire Storage Controller
+
pci:v00001425d00006801*
ID_MODEL_FROM_DATABASE=T6225-CR Unified Wire Ethernet Controller [VF]
@@ -48311,6 +48566,12 @@ pci:v00001425d00006814*
pci:v00001425d00006815*
ID_MODEL_FROM_DATABASE=T6201-BT Unified Wire Ethernet Controller [VF]
+pci:v00001425d00006880*
+ ID_MODEL_FROM_DATABASE=T6225-6080 Unified Wire Ethernet Controller [VF]
+
+pci:v00001425d00006881*
+ ID_MODEL_FROM_DATABASE=T62100-6081 Unified Wire Ethernet Controller [VF]
+
pci:v00001425d0000A000*
ID_MODEL_FROM_DATABASE=PE10K Unified Wire Ethernet Controller
@@ -48516,7 +48777,10 @@ pci:v0000144Dd0000A800*
ID_MODEL_FROM_DATABASE=XP941 PCIe SSD
pci:v0000144Dd0000A802*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller SM951/PM951
+
+pci:v0000144Dd0000A804*
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller SM961/PM961
pci:v0000144Dd0000A820*
ID_MODEL_FROM_DATABASE=NVMe SSD Controller 171X
@@ -48890,6 +49154,9 @@ pci:v000014A3*
pci:v000014A4*
ID_VENDOR_FROM_DATABASE=Lite-On Technology Corporation
+pci:v000014A4d000022F1*
+ ID_MODEL_FROM_DATABASE=M8Pe Series NVMe SSD
+
pci:v000014A4d00004318*
ID_MODEL_FROM_DATABASE=Broadcom BCM4318 [AirForce One 54g] 802.11g WLAN Controller
@@ -50396,6 +50663,9 @@ pci:v000014E4d000016BE*
pci:v000014E4d000016BF*
ID_MODEL_FROM_DATABASE=BCM57765/57785 xD-Picture Card Reader
+pci:v000014E4d000016C1*
+ ID_MODEL_FROM_DATABASE=NetXtreme-E RDMA Virtual Function
+
pci:v000014E4d000016C6*
ID_MODEL_FROM_DATABASE=NetXtreme BCM5702A3 Gigabit Ethernet
@@ -50534,9 +50804,15 @@ pci:v000014E4d000016E9*
pci:v000014E4d000016EC*
ID_MODEL_FROM_DATABASE=BCM57414 NetXtreme-E Ethernet Partition
+pci:v000014E4d000016ED*
+ ID_MODEL_FROM_DATABASE=BCM57414 NetXtreme-E RDMA Partition
+
pci:v000014E4d000016EE*
ID_MODEL_FROM_DATABASE=BCM57416 NetXtreme-E Ethernet Partition
+pci:v000014E4d000016EF*
+ ID_MODEL_FROM_DATABASE=BCM57416 NetXtreme-E RDMA Partition
+
pci:v000014E4d000016F3*
ID_MODEL_FROM_DATABASE=NetXtreme BCM5727 Gigabit Ethernet PCIe
@@ -53156,6 +53432,9 @@ pci:v0000159A*
pci:v0000159B*
ID_VENDOR_FROM_DATABASE=Faraday Technology Corp
+pci:v0000159Bd00004321*
+ ID_MODEL_FROM_DATABASE=StorLink SL3516 (Gemini) Host Bridge
+
pci:v0000159C*
ID_VENDOR_FROM_DATABASE=Stratus Computer Systems
@@ -53285,6 +53564,9 @@ pci:v000015B3d00000191*
pci:v000015B3d000001F6*
ID_MODEL_FROM_DATABASE=MT27500 Family [ConnectX-3 Flash Recovery]
+pci:v000015B3d000001F8*
+ ID_MODEL_FROM_DATABASE=MT27520 Family [ConnectX-3 Pro Flash Recovery]
+
pci:v000015B3d000001FF*
ID_MODEL_FROM_DATABASE=MT27600 Family [Connect-IB Flash Recovery]
@@ -53297,6 +53579,12 @@ pci:v000015B3d0000020B*
pci:v000015B3d0000020D*
ID_MODEL_FROM_DATABASE=MT28800 Family [ConnectX-5 Flash Recovery]
+pci:v000015B3d0000020F*
+ ID_MODEL_FROM_DATABASE=MT28908A0 Family [ConnectX-6 Flash Recovery]
+
+pci:v000015B3d00000211*
+ ID_MODEL_FROM_DATABASE=MT416842 Family [BlueField SoC Flash Recovery]
+
pci:v000015B3d0000024E*
ID_MODEL_FROM_DATABASE=MT53100 [Spectrum-2, Flash recovery mode]
@@ -53309,6 +53597,9 @@ pci:v000015B3d00000262*
pci:v000015B3d00000263*
ID_MODEL_FROM_DATABASE=MT27710 [ConnectX-4 Lx Programmable Virtual Function] EN
+pci:v000015B3d00000281*
+ ID_MODEL_FROM_DATABASE=NPS-600 Flash Recovery
+
pci:v000015B3d00001002*
ID_MODEL_FROM_DATABASE=MT25400 Family [ConnectX-2 Virtual Function]
@@ -53421,10 +53712,10 @@ pci:v000015B3d0000101A*
ID_MODEL_FROM_DATABASE=MT28800 Family [ConnectX-5 Ex Virtual Function]
pci:v000015B3d0000101B*
- ID_MODEL_FROM_DATABASE=MT28831
+ ID_MODEL_FROM_DATABASE=MT28908 Family [ConnectX-6]
pci:v000015B3d0000101C*
- ID_MODEL_FROM_DATABASE=MT28840
+ ID_MODEL_FROM_DATABASE=MT28908 Family [ConnectX-6 Virtual Function]
pci:v000015B3d0000101D*
ID_MODEL_FROM_DATABASE=MT28841
@@ -53553,10 +53844,10 @@ pci:v000015B3d00007123*
ID_MODEL_FROM_DATABASE=NPS-600 network interface VF
pci:v000015B3d0000A2D0*
- ID_MODEL_FROM_DATABASE=MT416842
+ ID_MODEL_FROM_DATABASE=MT416842 BlueField SoC Crypto enabled
pci:v000015B3d0000A2D1*
- ID_MODEL_FROM_DATABASE=MT416842
+ ID_MODEL_FROM_DATABASE=MT416842 BlueField SoC Crypto disabled
pci:v000015B3d0000A2D3*
ID_MODEL_FROM_DATABASE=MT416842 BlueField multicore SoC family VF
@@ -55523,6 +55814,9 @@ pci:v000016D5d00007014*
pci:v000016D5d00007016*
ID_MODEL_FROM_DATABASE=AP470 48-Channel TTL Level Digital Input/Output Module
+pci:v000016D5d00007017*
+ ID_MODEL_FROM_DATABASE=AP323 16-bit, 20 or 40 Channel Analog Input Module
+
pci:v000016D5d00007018*
ID_MODEL_FROM_DATABASE=AP408: 32-Channel Digital I/O Module
@@ -55830,6 +56124,15 @@ pci:v0000177Dd00009702sv0000177Dsd00000003*
ID_MODEL_FROM_DATABASE=CN23XX [LiquidIO II] Intelligent Adapter (CN2350 [LiquidIO II] 2-port 10GbE Intelligent adapter)
pci:v0000177Dd00009702sv0000177Dsd00000004*
+ ID_MODEL_FROM_DATABASE=CN23XX [LiquidIO II] Intelligent Adapter (CN2350 [LiquidIO II] 2-port 10GbE Intelligent adapter)
+
+pci:v0000177Dd00009702sv0000177Dsd00000005*
+ ID_MODEL_FROM_DATABASE=CN23XX [LiquidIO II] Intelligent Adapter (CN2360 [LiquidIO II] 2-port 10GbE Intelligent adapter)
+
+pci:v0000177Dd00009702sv0000177Dsd00000006*
+ ID_MODEL_FROM_DATABASE=CN23XX [LiquidIO II] Intelligent Adapter (CN2360 [LiquidIO II] 2-port 25GbE Intelligent adapter)
+
+pci:v0000177Dd00009702sv0000177Dsd00000007*
ID_MODEL_FROM_DATABASE=CN23XX [LiquidIO II] Intelligent Adapter (CN2350 [LiquidIO II] 2-port 25GbE Intelligent adapter)
pci:v0000177Dd00009703*
@@ -55841,6 +56144,18 @@ pci:v0000177Dd00009712*
pci:v0000177Dd00009712sv0000177Dsd00000003*
ID_MODEL_FROM_DATABASE=CN23XX [LiquidIO II] SRIOV Virtual Function (CN2350 [LiquidIO II] 2-port 10GbE SRIOV Virtual Function)
+pci:v0000177Dd00009712sv0000177Dsd00000004*
+ ID_MODEL_FROM_DATABASE=CN23XX [LiquidIO II] SRIOV Virtual Function (CN2350 [LiquidIO II] 2-port 10GbE SRIOV Virtual Function)
+
+pci:v0000177Dd00009712sv0000177Dsd00000005*
+ ID_MODEL_FROM_DATABASE=CN23XX [LiquidIO II] SRIOV Virtual Function (CN2360 [LiquidIO II] 2-port 10GbE SRIOV Virtual Function)
+
+pci:v0000177Dd00009712sv0000177Dsd00000006*
+ ID_MODEL_FROM_DATABASE=CN23XX [LiquidIO II] SRIOV Virtual Function (CN2360 [LiquidIO II] 2-port 25GbE SRIOV Virtual Function)
+
+pci:v0000177Dd00009712sv0000177Dsd00000007*
+ ID_MODEL_FROM_DATABASE=CN23XX [LiquidIO II] SRIOV Virtual Function (CN2350 [LiquidIO II] 2-port 25GbE SRIOV Virtual Function)
+
pci:v0000177Dd00009713*
ID_MODEL_FROM_DATABASE=CN23XX [LiquidIO II] NVMe SRIOV Virtual Function
@@ -56267,6 +56582,9 @@ pci:v000017D3d00001170*
pci:v000017D3d00001201*
ID_MODEL_FROM_DATABASE=ARC-1200 2-Port PCI-Express to SATA II RAID Controller
+pci:v000017D3d00001203*
+ ID_MODEL_FROM_DATABASE=ARC-1203 2/4/8 Port PCIe 2.0 to SATA 6Gb RAID Controller
+
pci:v000017D3d00001210*
ID_MODEL_FROM_DATABASE=ARC-1210 4-Port PCI-Express to SATA RAID Controller
@@ -57206,7 +57524,7 @@ pci:v000018C3*
pci:v000018C3d00000720*
ID_MODEL_FROM_DATABASE=nGene PCI-Express Multimedia Controller
-pci:v000018C3d00000720sv000007CAsd0000032E*
+pci:v000018C3d00000720sv00001461sd0000032E*
ID_MODEL_FROM_DATABASE=nGene PCI-Express Multimedia Controller (Hybrid M779 PCI-E)
pci:v000018C8*
@@ -57488,6 +57806,12 @@ pci:v000018F4d00000165*
pci:v000018F4d00000175*
ID_MODEL_FROM_DATABASE=NT20E3-2-PTP Network Adapter 2x10Gb
+pci:v000018F4d00000185*
+ ID_MODEL_FROM_DATABASE=NT40A01 Network Adapter
+
+pci:v000018F4d000001A5*
+ ID_MODEL_FROM_DATABASE=NT200A01 Network Adapter
+
pci:v000018F6*
ID_VENDOR_FROM_DATABASE=NextIO
@@ -57753,208 +58077,214 @@ pci:v00001924d00000710sv00001924sd00005202*
ID_MODEL_FROM_DATABASE=SFC4000 rev B [Solarstorm] (SFN4112F-R2)
pci:v00001924d00000803*
- ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm]
+ ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller
pci:v00001924d00000803sv00001014sd00000478*
- ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (2-port 10GbE Low-Latency (R7))
+ ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (2-port 10GbE Low-Latency (R7))
pci:v00001924d00000803sv00001014sd00000479*
- ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (2-port 10GbE OpenOnload (R7))
+ ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (2-port 10GbE OpenOnload (R7))
pci:v00001924d00000803sv00001014sd000004A7*
- ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (Solarflare 10Gb Low-latency Dual-port HBA (R7))
+ ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (Solarflare 10Gb Low-latency Dual-port HBA (R7))
pci:v00001924d00000803sv00001014sd000004A8*
- ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (Solarflare 10Gb Dual-port HBA (R7))
+ ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (Solarflare 10Gb Dual-port HBA (R7))
pci:v00001924d00000803sv0000103Csd00002132*
- ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (Ethernet 10Gb 2-port 570FLR-SFP+ Adapter (R1))
+ ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (Ethernet 10Gb 2-port 570FLR-SFP+ Adapter (R1))
pci:v00001924d00000803sv0000103Csd00002136*
- ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (Ethernet 10Gb 2-port 570SFP+ Adapter (R7))
+ ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (Ethernet 10Gb 2-port 570SFP+ Adapter (R7))
pci:v00001924d00000803sv00001924sd00001201*
- ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFA6902F-R1 SFP+ AOE Adapter)
+ ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (SFA6902F-R1 SFP+ AOE Adapter)
pci:v00001924d00000803sv00001924sd00006200*
- ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5122F-R0 SFP+ Server Adapter)
+ ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (SFN5122F-R0 SFP+ Server Adapter)
pci:v00001924d00000803sv00001924sd00006201*
- ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5122F-R1 SFP+ Server Adapter)
+ ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (SFN5122F-R1 SFP+ Server Adapter)
pci:v00001924d00000803sv00001924sd00006202*
- ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5122F-R2 SFP+ Server Adapter)
+ ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (SFN5122F-R2 SFP+ Server Adapter)
pci:v00001924d00000803sv00001924sd00006204*
- ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5122F-R4 SFP+ Server Adapter)
+ ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (SFN5122F-R4 SFP+ Server Adapter)
pci:v00001924d00000803sv00001924sd00006205*
- ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5122F-R5 SFP+ Server Adapter)
+ ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (SFN5122F-R5 SFP+ Server Adapter)
pci:v00001924d00000803sv00001924sd00006206*
- ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5122F-R6 SFP+ Server Adapter)
+ ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (SFN5122F-R6 SFP+ Server Adapter)
pci:v00001924d00000803sv00001924sd00006207*
- ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5122F-R7 SFP+ Server Adapter)
+ ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (SFN5122F-R7 SFP+ Server Adapter)
pci:v00001924d00000803sv00001924sd00006210*
- ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5322F-R0 SFP+ Precision Time Synchronization Server Adapter)
+ ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (SFN5322F-R0 SFP+ Precision Time Synchronization Server Adapter)
pci:v00001924d00000803sv00001924sd00006211*
- ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5322F-R1 SFP+ Precision Time Synchronization Server Adapter)
+ ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (SFN5322F-R1 SFP+ Precision Time Synchronization Server Adapter)
pci:v00001924d00000803sv00001924sd00006217*
- ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5322F-R7 SFP+ Precision Time Synchronization Server Adapter)
+ ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (SFN5322F-R7 SFP+ Precision Time Synchronization Server Adapter)
pci:v00001924d00000803sv00001924sd00006227*
- ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN6122F-R7 SFP+ Server Adapter)
+ ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (SFN6122F-R7 SFP+ Server Adapter)
pci:v00001924d00000803sv00001924sd00006237*
- ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN6322F-R7 SFP+ Precision Time Synchronization Server Adapter)
+ ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (SFN6322F-R7 SFP+ Precision Time Synchronization Server Adapter)
pci:v00001924d00000803sv00001924sd00006501*
- ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5802K-R1 Mezzanine Adapter)
+ ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (SFN5802K-R1 Mezzanine Adapter)
pci:v00001924d00000803sv00001924sd00006511*
- ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5814H-R1 Mezzanine Adapter)
+ ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (SFN5814H-R1 Mezzanine Adapter)
pci:v00001924d00000803sv00001924sd00006521*
- ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5812H-R1 Mezzanine Adapter)
+ ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (SFN5812H-R1 Mezzanine Adapter)
pci:v00001924d00000803sv00001924sd00006562*
- ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN6832F-R2 SFP+ Mezzanine Adapter)
+ ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (SFN6832F-R2 SFP+ Mezzanine Adapter)
pci:v00001924d00000803sv00001924sd00006A05*
- ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5112F-R5 SFP+ Server Adapter)
+ ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (SFN5112F-R5 SFP+ Server Adapter)
pci:v00001924d00000803sv00001924sd00006A06*
- ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5112F-R6 SFP+ Server Adapter)
+ ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (SFN5112F-R6 SFP+ Server Adapter)
pci:v00001924d00000803sv00001924sd00007206*
- ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5162F-R6 SFP+ Server Adapter)
+ ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (SFN5162F-R6 SFP+ Server Adapter)
pci:v00001924d00000803sv00001924sd00007207*
- ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5162F-R7 SFP+ Server Adapter)
+ ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (SFN5162F-R7 SFP+ Server Adapter)
pci:v00001924d00000803sv00001924sd00007A06*
- ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5152F-R6 SFP+ Server Adapter)
+ ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (SFN5152F-R6 SFP+ Server Adapter)
pci:v00001924d00000803sv00001924sd00007A07*
- ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5152F-R7 SFP+ Server Adapter)
+ ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (SFN5152F-R7 SFP+ Server Adapter)
pci:v00001924d00000813*
- ID_MODEL_FROM_DATABASE=SFL9021 [Solarstorm]
+ ID_MODEL_FROM_DATABASE=SFL9021 10GBASE-T Ethernet Controller
pci:v00001924d00000813sv00001924sd00006100*
- ID_MODEL_FROM_DATABASE=SFL9021 [Solarstorm] (SFN5121T-R0 10GBASE-T Server Adapter)
+ ID_MODEL_FROM_DATABASE=SFL9021 10GBASE-T Ethernet Controller (SFN5121T-R0 10GBASE-T Server Adapter)
pci:v00001924d00000813sv00001924sd00006102*
- ID_MODEL_FROM_DATABASE=SFL9021 [Solarstorm] (SFN5121T-R2 10GBASE-T Server Adapter)
+ ID_MODEL_FROM_DATABASE=SFL9021 10GBASE-T Ethernet Controller (SFN5121T-R2 10GBASE-T Server Adapter)
pci:v00001924d00000813sv00001924sd00006103*
- ID_MODEL_FROM_DATABASE=SFL9021 [Solarstorm] (SFN5121T-R3 10GBASE-T Server Adapter)
+ ID_MODEL_FROM_DATABASE=SFL9021 10GBASE-T Ethernet Controller (SFN5121T-R3 10GBASE-T Server Adapter)
pci:v00001924d00000813sv00001924sd00006104*
- ID_MODEL_FROM_DATABASE=SFL9021 [Solarstorm] (SFN5121T-R4 10GBASE-T Server Adapter)
+ ID_MODEL_FROM_DATABASE=SFL9021 10GBASE-T Ethernet Controller (SFN5121T-R4 10GBASE-T Server Adapter)
pci:v00001924d00000813sv00001924sd00006902*
- ID_MODEL_FROM_DATABASE=SFL9021 [Solarstorm] (SFN5111T-R2 10GBASE-T Server Adapter)
+ ID_MODEL_FROM_DATABASE=SFL9021 10GBASE-T Ethernet Controller (SFN5111T-R2 10GBASE-T Server Adapter)
pci:v00001924d00000813sv00001924sd00006904*
- ID_MODEL_FROM_DATABASE=SFL9021 [Solarstorm] (SFN5111T-R4 10GBASE-T Server Adapter)
+ ID_MODEL_FROM_DATABASE=SFL9021 10GBASE-T Ethernet Controller (SFN5111T-R4 10GBASE-T Server Adapter)
pci:v00001924d00000813sv00001924sd00007104*
- ID_MODEL_FROM_DATABASE=SFL9021 [Solarstorm] (SFN5161T-R4 10GBASE-T Server Adapter)
+ ID_MODEL_FROM_DATABASE=SFL9021 10GBASE-T Ethernet Controller (SFN5161T-R4 10GBASE-T Server Adapter)
pci:v00001924d00000813sv00001924sd00007904*
- ID_MODEL_FROM_DATABASE=SFL9021 [Solarstorm] (SFN5151T-R4 10GBASE-T Server Adapter)
+ ID_MODEL_FROM_DATABASE=SFL9021 10GBASE-T Ethernet Controller (SFN5151T-R4 10GBASE-T Server Adapter)
pci:v00001924d00000903*
- ID_MODEL_FROM_DATABASE=SFC9120
+ ID_MODEL_FROM_DATABASE=SFC9120 10G Ethernet Controller
pci:v00001924d00000903sv00001014sd000004CC*
- ID_MODEL_FROM_DATABASE=SFC9120 (SFN7122F-R2 2x10GbE SFP+ Flareon Ultra)
+ ID_MODEL_FROM_DATABASE=SFC9120 10G Ethernet Controller (SFN7122F-R2 2x10GbE SFP+ Flareon Ultra)
pci:v00001924d00000903sv00001924sd00008002*
- ID_MODEL_FROM_DATABASE=SFC9120 (SFN7122F-R1 SFP+ Server Adapter)
+ ID_MODEL_FROM_DATABASE=SFC9120 10G Ethernet Controller (SFN7122F-R1 SFP+ Server Adapter)
pci:v00001924d00000903sv00001924sd00008003*
- ID_MODEL_FROM_DATABASE=SFC9120 (SFN7x41Q-R1 Flareon Ultra 7000 Series 10/40G Adapter)
+ ID_MODEL_FROM_DATABASE=SFC9120 10G Ethernet Controller (SFN7x41Q-R1 Flareon Ultra 7000 Series 10/40G Adapter)
pci:v00001924d00000903sv00001924sd00008006*
- ID_MODEL_FROM_DATABASE=SFC9120 (SFN7022F-R1 SFP+ Server Adapter)
+ ID_MODEL_FROM_DATABASE=SFC9120 10G Ethernet Controller (SFN7022F-R1 SFP+ Server Adapter)
pci:v00001924d00000903sv00001924sd00008007*
- ID_MODEL_FROM_DATABASE=SFC9120 (SFN7322F-R2 Precision Time SFP+ Server Adapter)
+ ID_MODEL_FROM_DATABASE=SFC9120 10G Ethernet Controller (SFN7322F-R2 Precision Time SFP+ Server Adapter)
pci:v00001924d00000903sv00001924sd00008009*
- ID_MODEL_FROM_DATABASE=SFC9120 (SFN7x22F-R2 Flareon Ultra 7000 Series 10G Adapter)
+ ID_MODEL_FROM_DATABASE=SFC9120 10G Ethernet Controller (SFN7x22F-R2 Flareon Ultra 7000 Series 10G Adapter)
pci:v00001924d00000903sv00001924sd0000800A*
- ID_MODEL_FROM_DATABASE=SFC9120 (SFN7x02F-R2 Flareon 7000 Series 10G Adapter)
+ ID_MODEL_FROM_DATABASE=SFC9120 10G Ethernet Controller (SFN7x02F-R2 Flareon 7000 Series 10G Adapter)
pci:v00001924d00000903sv00001924sd0000800C*
- ID_MODEL_FROM_DATABASE=SFC9120 (SFN7x22F-R3 Flareon Ultra 7000 Series 10G Adapter)
+ ID_MODEL_FROM_DATABASE=SFC9120 10G Ethernet Controller (SFN7x22F-R3 Flareon Ultra 7000 Series 10G Adapter)
pci:v00001924d00000903sv00001924sd0000800D*
- ID_MODEL_FROM_DATABASE=SFC9120 (SFN7x02F-R3 Flareon 7000 Series 10G Adapter)
+ ID_MODEL_FROM_DATABASE=SFC9120 10G Ethernet Controller (SFN7x02F-R3 Flareon 7000 Series 10G Adapter)
pci:v00001924d00000903sv00001924sd00008010*
- ID_MODEL_FROM_DATABASE=SFC9120 (SFA7942Q-R1 QSFP+ AOE Adapter)
+ ID_MODEL_FROM_DATABASE=SFC9120 10G Ethernet Controller (SFA7942Q-R1 QSFP+ AOE Adapter)
pci:v00001924d00000903sv00001924sd00008015*
- ID_MODEL_FROM_DATABASE=SFC9120 (SFA7942Q-A5-0-R1 QSFP+ AOE Adapter)
+ ID_MODEL_FROM_DATABASE=SFC9120 10G Ethernet Controller (SFA7942Q-A5-0-R1 QSFP+ AOE Adapter)
pci:v00001924d00000923*
- ID_MODEL_FROM_DATABASE=SFC9140
+ ID_MODEL_FROM_DATABASE=SFC9140 10/40G Ethernet Controller
pci:v00001924d00000923sv00001924sd0000800B*
- ID_MODEL_FROM_DATABASE=SFC9140 (SFN7x42Q-R1 Flareon Ultra 7000 Series 10/40G Adapter)
+ ID_MODEL_FROM_DATABASE=SFC9140 10/40G Ethernet Controller (SFN7x42Q-R1 Flareon Ultra 7000 Series 10/40G Adapter)
pci:v00001924d00000923sv00001924sd0000800E*
- ID_MODEL_FROM_DATABASE=SFC9140 (SFN7x42Q-R2 Flareon Ultra 7000 Series 10/40G Adapter)
+ ID_MODEL_FROM_DATABASE=SFC9140 10/40G Ethernet Controller (SFN7x42Q-R2 Flareon Ultra 7000 Series 10/40G Adapter)
pci:v00001924d00000923sv00001924sd0000800F*
- ID_MODEL_FROM_DATABASE=SFC9140 (SFN7xx4F-R1 Flareon Ultra 7000 Series 10G Adapter)
+ ID_MODEL_FROM_DATABASE=SFC9140 10/40G Ethernet Controller (SFN7xx4F-R1 Flareon Ultra 7000 Series 10G Adapter)
pci:v00001924d00000A03*
- ID_MODEL_FROM_DATABASE=SFC9220
+ ID_MODEL_FROM_DATABASE=SFC9220 10/40G Ethernet Controller
pci:v00001924d00000A03sv00001924sd00008011*
- ID_MODEL_FROM_DATABASE=SFC9220 (SFN 8022-R1 Solarflare Flareon 8000 Series 10G Adapter)
+ ID_MODEL_FROM_DATABASE=SFC9220 10/40G Ethernet Controller (SFN8022-R1 Flareon 8000 Series 10G Adapter)
pci:v00001924d00000A03sv00001924sd00008012*
- ID_MODEL_FROM_DATABASE=SFC9220 (SFN8522-R1 Flareon Ultra 8000 Series 10G Adapter)
+ ID_MODEL_FROM_DATABASE=SFC9220 10/40G Ethernet Controller (SFN8522-R1 Flareon Ultra 8000 Series 10G Adapter)
pci:v00001924d00000A03sv00001924sd00008013*
- ID_MODEL_FROM_DATABASE=SFC9220 (SFN8042-R1 Solarflare Flareon 8000 Series 10/40G Adapter)
+ ID_MODEL_FROM_DATABASE=SFC9220 10/40G Ethernet Controller (SFN8042-R1 Flareon 8000 Series 10/40G Adapter)
pci:v00001924d00000A03sv00001924sd00008014*
- ID_MODEL_FROM_DATABASE=SFC9220 (SFN8542-R1 Flareon Ultra 8000 Series 10/40G Adapter)
+ ID_MODEL_FROM_DATABASE=SFC9220 10/40G Ethernet Controller (SFN8542-R1 Flareon Ultra 8000 Series 10/40G Adapter)
pci:v00001924d00000A03sv00001924sd00008016*
- ID_MODEL_FROM_DATABASE=SFC9220 (SFN8022-R2 Flareon 8000 Series 10G Adapter)
+ ID_MODEL_FROM_DATABASE=SFC9220 10/40G Ethernet Controller (SFN8022-R2 Flareon 8000 Series 10G Adapter)
pci:v00001924d00000A03sv00001924sd00008017*
- ID_MODEL_FROM_DATABASE=SFC9220 (SFN8522-R2 Flareon Ultra 8000 Series 10G Adapter)
+ ID_MODEL_FROM_DATABASE=SFC9220 10/40G Ethernet Controller (SFN8522-R2 Flareon Ultra 8000 Series 10G Adapter)
pci:v00001924d00000A03sv00001924sd00008018*
- ID_MODEL_FROM_DATABASE=SFC9220 (SFN8042-R2 Flareon 8000 Series 10/40G Adapter)
+ ID_MODEL_FROM_DATABASE=SFC9220 10/40G Ethernet Controller (SFN8042-R2 Flareon 8000 Series 10/40G Adapter)
pci:v00001924d00000A03sv00001924sd00008019*
- ID_MODEL_FROM_DATABASE=SFC9220 (SFN8542-R2 Flareon Ultra 8000 Series 10/40G Adapter)
+ ID_MODEL_FROM_DATABASE=SFC9220 10/40G Ethernet Controller (SFN8542-R2 Flareon Ultra 8000 Series 10/40G Adapter)
+
+pci:v00001924d00000A03sv00001924sd0000801A*
+ ID_MODEL_FROM_DATABASE=SFC9220 10/40G Ethernet Controller (SFN8722-R1 Flareon Ultra 8000 Series OCP 10G Adapter)
pci:v00001924d00001803*
- ID_MODEL_FROM_DATABASE=SFC9020 Virtual Function [Solarstorm]
+ ID_MODEL_FROM_DATABASE=SFC9020 10G Ethernet Controller (Virtual Function)
pci:v00001924d00001813*
- ID_MODEL_FROM_DATABASE=SFL9021 Virtual Function [Solarstorm]
+ ID_MODEL_FROM_DATABASE=SFL9021 10GBASE-T Ethernet Controller (Virtual Function)
pci:v00001924d00001903*
- ID_MODEL_FROM_DATABASE=SFC9120 Virtual Function
+ ID_MODEL_FROM_DATABASE=SFC9120 10G Ethernet Controller (Virtual Function)
pci:v00001924d00001923*
- ID_MODEL_FROM_DATABASE=SFC9140 Virtual Function
+ ID_MODEL_FROM_DATABASE=SFC9140 10/40G Ethernet Controller (Virtual Function)
+
+pci:v00001924d00001A03*
+ ID_MODEL_FROM_DATABASE=SFC9220 10/40G Ethernet Controller (Virtual Function)
pci:v00001924d00006703*
ID_MODEL_FROM_DATABASE=SFC4000 rev A iSCSI/Onload [Solarstorm]
@@ -58793,6 +59123,12 @@ pci:v000019E3d00005808*
pci:v000019E3d0000DD52*
ID_MODEL_FROM_DATABASE=DDRdrive X1-30
+pci:v000019E5*
+ ID_VENDOR_FROM_DATABASE=Huawei Technologies Co., Ltd.
+
+pci:v000019E5d00001711*
+ ID_MODEL_FROM_DATABASE=Hi1710 [iBMC Intelligent Management system chip w/VGA support]
+
pci:v000019E7*
ID_VENDOR_FROM_DATABASE=NET (Network Equipment Technologies)
@@ -59352,7 +59688,7 @@ pci:v00001B03d00007000*
ID_MODEL_FROM_DATABASE=D7 Multiformat Broadcast HD/SD Encoder/Decoder/Transcoder
pci:v00001B08*
- ID_VENDOR_FROM_DATABASE=MSC Vertriebs GmbH
+ ID_VENDOR_FROM_DATABASE=MSC Technologies GmbH
pci:v00001B0A*
ID_VENDOR_FROM_DATABASE=Pegatron
@@ -59921,9 +60257,15 @@ pci:v00001C2Cd000000A6*
pci:v00001C2Cd000000A9*
ID_MODEL_FROM_DATABASE=FBC2XGHH Capture 2x10Gb
+pci:v00001C2Cd000000AD*
+ ID_MODEL_FROM_DATABASE=FBC2CGG3HL Capture 2x200Gb
+
pci:v00001C2Cd000000AF*
ID_MODEL_FROM_DATABASE=Capture slave device
+pci:v00001C2Cd0000A001*
+ ID_MODEL_FROM_DATABASE=FBC2CGG3 Capture 2x200Gb
+
pci:v00001C32*
ID_VENDOR_FROM_DATABASE=Highland Technology, Inc.
@@ -59957,6 +60299,12 @@ pci:v00001C58d00000003sv00001014sd000004F5*
pci:v00001C58d00000003sv00001014sd000004F6*
ID_MODEL_FROM_DATABASE=Ultrastar SN100 Series NVMe SSD (PCIe3 3.2TB NVMe Flash Adapter)
+pci:v00001C5F*
+ ID_VENDOR_FROM_DATABASE=Beijing Memblaze Technology Co. Ltd.
+
+pci:v00001C5Fd00000540*
+ ID_MODEL_FROM_DATABASE=PBlaze4 NVMe SSD
+
pci:v00001C63*
ID_VENDOR_FROM_DATABASE=Science and Research Centre of Computer Technology (JSC "NICEVT")
@@ -60020,6 +60368,12 @@ pci:v00001CD2d00000304*
pci:v00001CD2d00000305*
ID_MODEL_FROM_DATABASE=Simulyzer-RT CompactPCI Serial CAN-1 card
+pci:v00001CD7*
+ ID_VENDOR_FROM_DATABASE=Nanjing Magewell Electronics Co., Ltd.
+
+pci:v00001CD7d00000010*
+ ID_MODEL_FROM_DATABASE=Pro Capture Endpoint
+
pci:v00001CDD*
ID_VENDOR_FROM_DATABASE=secunet Security Networks AG
@@ -60041,6 +60395,9 @@ pci:v00001CE4d00000004*
pci:v00001CE4d00000005*
ID_MODEL_FROM_DATABASE=ExaNIC X40
+pci:v00001CE4d00000006*
+ ID_MODEL_FROM_DATABASE=ExaNIC X10-HPT
+
pci:v00001CF7*
ID_VENDOR_FROM_DATABASE=Subspace Dynamics
@@ -60143,15 +60500,24 @@ pci:v00001D6Cd0000100C*
pci:v00001D6Cd0000100D*
ID_MODEL_FROM_DATABASE=AR-ARKA-FX0 [Arkville 32B DPDK Data Mover]
+pci:v00001D6Cd0000100Dsv00001D6Csd00002001*
+ ID_MODEL_FROM_DATABASE=AR-ARKA-FX0 [Arkville 32B DPDK Data Mover] (DPDK-Aware Virtual Function [Arkville VF])
+
pci:v00001D6Cd0000100E*
ID_MODEL_FROM_DATABASE=AR-ARKA-FX1 [Arkville 64B DPDK Data Mover]
+pci:v00001D6Cd0000100Esv00001D6Csd00002001*
+ ID_MODEL_FROM_DATABASE=AR-ARKA-FX1 [Arkville 64B DPDK Data Mover] (DPDK-Aware Virtual Function [Arkville VF])
+
pci:v00001D6Cd00004200*
ID_MODEL_FROM_DATABASE=A5PL-E1-10GETI [10 GbE Ethernet Traffic Instrument]
pci:v00001D78*
ID_VENDOR_FROM_DATABASE=DERA
+pci:v00001D7C*
+ ID_VENDOR_FROM_DATABASE=Aerotech, Inc.
+
pci:v00001D8F*
ID_VENDOR_FROM_DATABASE=Enyx
@@ -60282,7 +60648,7 @@ pci:v00001FC9d00004022sv00001186sd00004D00*
ID_MODEL_FROM_DATABASE=TN9310 10GbE SFP+ Ethernet Adapter (DXE-810S 10GbE SFP+ Ethernet Adapter)
pci:v00001FC9d00004022sv00001432sd00008103*
- ID_MODEL_FROM_DATABASE=TN9310 10GbE SFP+ Ethernet Adapter (EN-8102PF 10GbE SPF+ Ethernet Adapter)
+ ID_MODEL_FROM_DATABASE=TN9310 10GbE SFP+ Ethernet Adapter (10 Gigabit Ethernet SFP+ PCI Express Adapter)
pci:v00001FC9d00004022sv00001FC9sd00003015*
ID_MODEL_FROM_DATABASE=TN9310 10GbE SFP+ Ethernet Adapter (Ethernet Adapter)
@@ -60300,7 +60666,7 @@ pci:v00001FC9d00004025sv00001186sd00002900*
ID_MODEL_FROM_DATABASE=TN9510 10GBase-T/NBASE-T Ethernet Adapter (DXE-810T 10GBase-T Ethernet Adapter)
pci:v00001FC9d00004025sv00001432sd00008102*
- ID_MODEL_FROM_DATABASE=TN9510 10GBase-T/NBASE-T Ethernet Adapter (EN-8102P 10GbE Ethernet Adapter)
+ ID_MODEL_FROM_DATABASE=TN9510 10GBase-T/NBASE-T Ethernet Adapter (10 Gigabit Ethernet PCI Express Adapter)
pci:v00001FC9d00004025sv00001FC9sd00003015*
ID_MODEL_FROM_DATABASE=TN9510 10GBase-T/NBASE-T Ethernet Adapter (Ethernet Adapter)
@@ -60311,6 +60677,12 @@ pci:v00001FC9d00004026*
pci:v00001FC9d00004027*
ID_MODEL_FROM_DATABASE=TN9710P 10GBase-T/NBASE-T Ethernet Adapter
+pci:v00001FC9d00004027sv00001432sd00008104*
+ ID_MODEL_FROM_DATABASE=TN9710P 10GBase-T/NBASE-T Ethernet Adapter (10 Gigabit Ethernet PCI Express Adapter)
+
+pci:v00001FC9d00004027sv00001FC9sd00003015*
+ ID_MODEL_FROM_DATABASE=TN9710P 10GBase-T/NBASE-T Ethernet Adapter (Ethernet Adapter)
+
pci:v00001FC9d00004527*
ID_MODEL_FROM_DATABASE=TN9710Q 5GBase-T/NBASE-T Ethernet Adapter
@@ -60404,6 +60776,9 @@ pci:v00003000*
pci:v00003112*
ID_VENDOR_FROM_DATABASE=Satelco Ingenieria S.A.
+pci:v00003130*
+ ID_VENDOR_FROM_DATABASE=AUDIOTRAK
+
pci:v00003142*
ID_VENDOR_FROM_DATABASE=Post Impression Systems.
@@ -63062,6 +63437,69 @@ pci:v00008086d00000814*
pci:v00008086d00000815*
ID_MODEL_FROM_DATABASE=Moorestown SSP0
+pci:v00008086d00000817*
+ ID_MODEL_FROM_DATABASE=Medfield Serial IO I2C Controller #3
+
+pci:v00008086d00000818*
+ ID_MODEL_FROM_DATABASE=Medfield Serial IO I2C Controller #4
+
+pci:v00008086d00000819*
+ ID_MODEL_FROM_DATABASE=Medfield Serial IO I2C Controller #5
+
+pci:v00008086d0000081A*
+ ID_MODEL_FROM_DATABASE=Medfield GPIO Controller [Core]
+
+pci:v00008086d0000081B*
+ ID_MODEL_FROM_DATABASE=Medfield Serial IO HSUART Controller #1
+
+pci:v00008086d0000081C*
+ ID_MODEL_FROM_DATABASE=Medfield Serial IO HSUART Controller #2
+
+pci:v00008086d0000081D*
+ ID_MODEL_FROM_DATABASE=Medfield Serial IO HSUART Controller #3
+
+pci:v00008086d0000081E*
+ ID_MODEL_FROM_DATABASE=Medfield Serial IO HSUART DMA Controller
+
+pci:v00008086d0000081F*
+ ID_MODEL_FROM_DATABASE=Medfield GPIO Controller [AON]
+
+pci:v00008086d00000820*
+ ID_MODEL_FROM_DATABASE=Medfield SD Host Controller
+
+pci:v00008086d00000821*
+ ID_MODEL_FROM_DATABASE=Medfield SDIO Controller #1
+
+pci:v00008086d00000822*
+ ID_MODEL_FROM_DATABASE=Medfield SDIO Controller #2
+
+pci:v00008086d00000823*
+ ID_MODEL_FROM_DATABASE=Medfield eMMC Controller #0
+
+pci:v00008086d00000824*
+ ID_MODEL_FROM_DATABASE=Medfield eMMC Controller #1
+
+pci:v00008086d00000827*
+ ID_MODEL_FROM_DATABASE=Medfield Serial IO DMA Controller
+
+pci:v00008086d00000828*
+ ID_MODEL_FROM_DATABASE=Medfield Power Management Unit
+
+pci:v00008086d00000829*
+ ID_MODEL_FROM_DATABASE=Medfield USB Device Controller (OTG)
+
+pci:v00008086d0000082A*
+ ID_MODEL_FROM_DATABASE=Medfield SCU IPC
+
+pci:v00008086d0000082C*
+ ID_MODEL_FROM_DATABASE=Medfield Serial IO I2C Controller #0
+
+pci:v00008086d0000082D*
+ ID_MODEL_FROM_DATABASE=Medfield Serial IO I2C Controller #1
+
+pci:v00008086d0000082E*
+ ID_MODEL_FROM_DATABASE=Medfield Serial IO I2C Controller #2
+
pci:v00008086d00000885*
ID_MODEL_FROM_DATABASE=Centrino Wireless-N + WiMAX 6150
@@ -63707,6 +64145,9 @@ pci:v00008086d00000A2A*
pci:v00008086d00000A2E*
ID_MODEL_FROM_DATABASE=Haswell-ULT Integrated Graphics Controller
+pci:v00008086d00000A53*
+ ID_MODEL_FROM_DATABASE=DC P3520 SSD
+
pci:v00008086d00000BE0*
ID_MODEL_FROM_DATABASE=Atom Processor D2xxx/N2xxx Integrated Graphics Controller
@@ -64779,7 +65220,7 @@ pci:v00008086d00001019sv00008086sd00003025*
ID_MODEL_FROM_DATABASE=82547EI Gigabit Ethernet Controller (D875PBZ motherboard)
pci:v00008086d00001019sv00008086sd0000302C*
- ID_MODEL_FROM_DATABASE=82547EI Gigabit Ethernet Controller (Intel 82865G Mainboard (D865GBF))
+ ID_MODEL_FROM_DATABASE=82547EI Gigabit Ethernet Controller (D865GBF Mainboard)
pci:v00008086d00001019sv00008086sd00003427*
ID_MODEL_FROM_DATABASE=82547EI Gigabit Ethernet Controller (S875WP1-E mainboard)
@@ -65373,7 +65814,7 @@ pci:v00008086d00001096sv000015D9sd00008680*
ID_MODEL_FROM_DATABASE=80003ES2LAN Gigabit Ethernet Controller (Copper) (X7DVL-E-O motherboard)
pci:v00008086d00001096sv00008086sd00003476*
- ID_MODEL_FROM_DATABASE=80003ES2LAN Gigabit Ethernet Controller (Copper) (Intel S5000PSLSATA Server Board)
+ ID_MODEL_FROM_DATABASE=80003ES2LAN Gigabit Ethernet Controller (Copper) (S5000PSLSATA Server Board)
pci:v00008086d00001097*
ID_MODEL_FROM_DATABASE=631xESB/632xESB DPT LAN Controller (Fiber)
@@ -65834,6 +66275,9 @@ pci:v00008086d000010F8sv0000103Csd000018D0*
pci:v00008086d000010F8sv00001059sd00000111*
ID_MODEL_FROM_DATABASE=82599 10 Gigabit Dual Port Backplane Connection (T4007 10GbE interface)
+pci:v00008086d000010F8sv00001059sd00000130*
+ ID_MODEL_FROM_DATABASE=82599 10 Gigabit Dual Port Backplane Connection (T4009 10GbE interface)
+
pci:v00008086d000010F8sv00008086sd0000000C*
ID_MODEL_FROM_DATABASE=82599 10 Gigabit Dual Port Backplane Connection (Ethernet X520 10GbE Dual Port KX4-KR Mezz)
@@ -65984,6 +66428,42 @@ pci:v00008086d00001161sv00008086sd00001161*
pci:v00008086d00001162*
ID_MODEL_FROM_DATABASE=Xscale 80200 Big Endian Companion Chip
+pci:v00008086d00001190*
+ ID_MODEL_FROM_DATABASE=Merrifield SD/SDIO/eMMC Controller
+
+pci:v00008086d00001191*
+ ID_MODEL_FROM_DATABASE=Merrifield Serial IO HSUART Controller
+
+pci:v00008086d00001192*
+ ID_MODEL_FROM_DATABASE=Merrifield Serial IO HSUART DMA Controller
+
+pci:v00008086d00001194*
+ ID_MODEL_FROM_DATABASE=Merrifield Serial IO SPI Controller
+
+pci:v00008086d00001195*
+ ID_MODEL_FROM_DATABASE=Merrifield Serial IO I2C Controller
+
+pci:v00008086d00001196*
+ ID_MODEL_FROM_DATABASE=Merrifield Serial IO I2C Controller
+
+pci:v00008086d00001199*
+ ID_MODEL_FROM_DATABASE=Merrifield GPIO Controller
+
+pci:v00008086d0000119E*
+ ID_MODEL_FROM_DATABASE=Merrifield USB Device Controller (OTG)
+
+pci:v00008086d000011A0*
+ ID_MODEL_FROM_DATABASE=Merrifield SCU IPC
+
+pci:v00008086d000011A1*
+ ID_MODEL_FROM_DATABASE=Merrifield Power Management Unit
+
+pci:v00008086d000011A2*
+ ID_MODEL_FROM_DATABASE=Merrifield Serial IO DMA Controller
+
+pci:v00008086d000011A5*
+ ID_MODEL_FROM_DATABASE=Merrifield Serial IO PWM Controller
+
pci:v00008086d00001200*
ID_MODEL_FROM_DATABASE=IXP1200 Network Processor
@@ -66968,6 +67448,12 @@ pci:v00008086d00001529*
pci:v00008086d0000152A*
ID_MODEL_FROM_DATABASE=82599 10 Gigabit Dual Port Backplane Connection with FCoE
+pci:v00008086d0000152E*
+ ID_MODEL_FROM_DATABASE=82599 Virtual Function
+
+pci:v00008086d00001530*
+ ID_MODEL_FROM_DATABASE=X540 Virtual Function
+
pci:v00008086d00001533*
ID_MODEL_FROM_DATABASE=I210 Gigabit Network Connection
@@ -67007,6 +67493,9 @@ pci:v00008086d00001537sv00001059sd00000111*
pci:v00008086d00001537sv00001059sd00000120*
ID_MODEL_FROM_DATABASE=I210 Gigabit Backplane Connection (T4008 1GbE interface)
+pci:v00008086d00001537sv00001059sd00000130*
+ ID_MODEL_FROM_DATABASE=I210 Gigabit Backplane Connection (T4009 1GbE interface)
+
pci:v00008086d00001538*
ID_MODEL_FROM_DATABASE=I210 Gigabit Network Connection
@@ -67133,6 +67622,9 @@ pci:v00008086d00001563sv00008086sd0000001A*
pci:v00008086d00001563sv00008086sd00000022*
ID_MODEL_FROM_DATABASE=Ethernet Controller 10G X550T (Ethernet Converged Network Adapter X550-T2)
+pci:v00008086d00001564*
+ ID_MODEL_FROM_DATABASE=X550 Virtual Function
+
pci:v00008086d00001565*
ID_MODEL_FROM_DATABASE=X550 Virtual Function
@@ -67191,17 +67683,23 @@ pci:v00008086d00001572sv0000103Csd000022FD*
ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+ (HP Ethernet 10Gb 2-port 562SFP+ Adapter)
pci:v00008086d00001572sv00001137sd00000000*
- ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+ (Ethernet Converged NIC X710-4)
+ ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+ (Ethernet Converged NIC X710-DA)
pci:v00008086d00001572sv00001137sd0000013B*
- ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+ (Ethernet Converged NIC X710-4)
+ ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+ (Ethernet Converged NIC X710-DA4)
+
+pci:v00008086d00001572sv00001137sd0000020A*
+ ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+ (Ethernet Converged NIC X710-DA2)
pci:v00008086d00001572sv00001590sd00000000*
- ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+ (Ethernet 10GbE 4P 563SFP+ Adapter)
+ ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+
pci:v00008086d00001572sv00001590sd00000225*
ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+ (Ethernet 10GbE 4P 563SFP+ Adapter)
+pci:v00008086d00001572sv00001590sd0000022F*
+ ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+ (Ethernet 10Gb 2-port 564i Communication Board)
+
pci:v00008086d00001572sv000017AAsd00000000*
ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+ (ThinkServer X710 AnyFabric for 10GbE SFP+)
@@ -67251,7 +67749,7 @@ pci:v00008086d00001572sv00008086sd00000010*
ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+ (Ethernet Converged Network Adapter X710)
pci:v00008086d00001572sv00008086sd00004005*
- ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+ (Ethernet Controller XL710 for 10 Gigabit SFP+)
+ ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+
pci:v00008086d00001572sv00008086sd00004006*
ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+
@@ -67386,10 +67884,10 @@ pci:v00008086d00001588*
ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 20GbE backplane
pci:v00008086d00001588sv0000103Csd00000000*
- ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 20GbE backplane (HPE Ethernet 10/20Gb 2-port 660M Adapter)
+ ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 20GbE backplane (Ethernet 10/20Gb 2-port 660M Adapter)
pci:v00008086d00001588sv0000103Csd000022FF*
- ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 20GbE backplane (HPE Ethernet 10/20Gb 2-port 660M Adapter)
+ ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 20GbE backplane (Ethernet 10/20Gb 2-port 660M Adapter)
pci:v00008086d00001589*
ID_MODEL_FROM_DATABASE=Ethernet Controller X710/X557-AT 10GBASE-T
@@ -67466,6 +67964,9 @@ pci:v00008086d000015A5*
pci:v00008086d000015A8*
ID_MODEL_FROM_DATABASE=Ethernet Connection X552 Virtual Function
+pci:v00008086d000015A9*
+ ID_MODEL_FROM_DATABASE=X552 Virtual Function
+
pci:v00008086d000015AA*
ID_MODEL_FROM_DATABASE=Ethernet Connection X552 10 GbE Backplane
@@ -67484,6 +67985,12 @@ pci:v00008086d000015AD*
pci:v00008086d000015AE*
ID_MODEL_FROM_DATABASE=Ethernet Connection X552 1000BASE-T
+pci:v00008086d000015B0*
+ ID_MODEL_FROM_DATABASE=Ethernet Connection X552 Backplane
+
+pci:v00008086d000015B4*
+ ID_MODEL_FROM_DATABASE=X553 Virtual Function
+
pci:v00008086d000015B5*
ID_MODEL_FROM_DATABASE=DSL6340 USB 3.1 Controller [Alpine Ridge]
@@ -67499,12 +68006,27 @@ pci:v00008086d000015B8*
pci:v00008086d000015B9*
ID_MODEL_FROM_DATABASE=Ethernet Connection (3) I219-LM
+pci:v00008086d000015BB*
+ ID_MODEL_FROM_DATABASE=Ethernet Connection (7) I219-LM
+
+pci:v00008086d000015BC*
+ ID_MODEL_FROM_DATABASE=Ethernet Connection (7) I219-V
+
+pci:v00008086d000015BD*
+ ID_MODEL_FROM_DATABASE=Ethernet Connection (6) I219-LM
+
+pci:v00008086d000015BE*
+ ID_MODEL_FROM_DATABASE=Ethernet Connection (6) I219-V
+
pci:v00008086d000015BF*
ID_MODEL_FROM_DATABASE=JHL6240 Thunderbolt 3 NHI (Low Power) [Alpine Ridge LP 2016]
pci:v00008086d000015C0*
ID_MODEL_FROM_DATABASE=JHL6240 Thunderbolt 3 Bridge (Low Power) [Alpine Ridge LP 2016]
+pci:v00008086d000015C5*
+ ID_MODEL_FROM_DATABASE=X553 Virtual Function
+
pci:v00008086d000015D0*
ID_MODEL_FROM_DATABASE=Ethernet SDI Adapter FM10420-100GbE-QDA2
@@ -67950,7 +68472,7 @@ pci:v00008086d00001A38sv000015D9sd00008680*
ID_MODEL_FROM_DATABASE=5000 Series Chipset DMA Engine (X7DVL-E-O motherboard)
pci:v00008086d00001A38sv00008086sd00003476*
- ID_MODEL_FROM_DATABASE=5000 Series Chipset DMA Engine (Intel S5000PSLSATA Server Board)
+ ID_MODEL_FROM_DATABASE=5000 Series Chipset DMA Engine (S5000PSLSATA Server Board)
pci:v00008086d00001A48*
ID_MODEL_FROM_DATABASE=82597EX 10GbE Ethernet Controller
@@ -71384,6 +71906,12 @@ pci:v00008086d000024F4*
pci:v00008086d000024F4sv00008086sd00000030*
ID_MODEL_FROM_DATABASE=Wireless 8260 (Dual Band Wireless-AC 8260)
+pci:v00008086d000024FD*
+ ID_MODEL_FROM_DATABASE=Wireless 8265 / 8275
+
+pci:v00008086d000024FDsv00008086sd00000010*
+ ID_MODEL_FROM_DATABASE=Wireless 8265 / 8275 (Dual Band Wireless-AC 8265)
+
pci:v00008086d00002500*
ID_MODEL_FROM_DATABASE=82820 820 (Camino) Chipset Host Bridge (MCH)
@@ -72678,7 +73206,7 @@ pci:v00008086d00002670sv000015D9sd00009680*
ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset LPC Interface Controller (X7DBN Motherboard)
pci:v00008086d00002670sv00008086sd00003476*
- ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset LPC Interface Controller (Intel S5000PSLSATA Server Board)
+ ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset LPC Interface Controller (S5000PSLSATA Server Board)
pci:v00008086d00002680*
ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset SATA IDE Controller
@@ -72696,7 +73224,7 @@ pci:v00008086d00002681sv000015D9sd00009680*
ID_MODEL_FROM_DATABASE=631xESB/632xESB SATA AHCI Controller (X7DBN Motherboard)
pci:v00008086d00002681sv00008086sd00003476*
- ID_MODEL_FROM_DATABASE=631xESB/632xESB SATA AHCI Controller (Intel S5000PSLSATA Server Board)
+ ID_MODEL_FROM_DATABASE=631xESB/632xESB SATA AHCI Controller (S5000PSLSATA Server Board)
pci:v00008086d00002682*
ID_MODEL_FROM_DATABASE=631xESB/632xESB SATA RAID Controller
@@ -72726,7 +73254,7 @@ pci:v00008086d00002688sv000015D9sd00009680*
ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #1 (X7DBN Motherboard)
pci:v00008086d00002688sv00008086sd00003476*
- ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #1 (Intel S5000PSLSATA Server Board)
+ ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #1 (S5000PSLSATA Server Board)
pci:v00008086d00002689*
ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #2
@@ -72747,7 +73275,7 @@ pci:v00008086d00002689sv000015D9sd00009680*
ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #2 (X7DBN Motherboard)
pci:v00008086d00002689sv00008086sd00003476*
- ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #2 (Intel S5000PSLSATA Server Board)
+ ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #2 (S5000PSLSATA Server Board)
pci:v00008086d0000268A*
ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #3
@@ -72765,7 +73293,7 @@ pci:v00008086d0000268Asv000015D9sd00009680*
ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #3 (X7DBN Motherboard)
pci:v00008086d0000268Asv00008086sd00003476*
- ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #3 (Intel S5000PSLSATA Server Board)
+ ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #3 (S5000PSLSATA Server Board)
pci:v00008086d0000268B*
ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #4
@@ -72777,7 +73305,7 @@ pci:v00008086d0000268Bsv000015D9sd00008680*
ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #4 (X7DVL-E-O motherboard)
pci:v00008086d0000268Bsv00008086sd00003476*
- ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #4 (Intel S5000PSLSATA Server Board)
+ ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #4 (S5000PSLSATA Server Board)
pci:v00008086d0000268C*
ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset EHCI USB2 Controller
@@ -72798,7 +73326,7 @@ pci:v00008086d0000268Csv000015D9sd00009680*
ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset EHCI USB2 Controller (X7DBN Motherboard)
pci:v00008086d0000268Csv00008086sd00003476*
- ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset EHCI USB2 Controller (Intel S5000PSLSATA Server Board)
+ ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset EHCI USB2 Controller (S5000PSLSATA Server Board)
pci:v00008086d00002690*
ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset PCI Express Root Port 1
@@ -72843,7 +73371,7 @@ pci:v00008086d0000269Bsv000015D9sd00009680*
ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset SMBus Controller (X7DBN Motherboard)
pci:v00008086d0000269Bsv00008086sd00003476*
- ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset SMBus Controller (Intel S5000PSLSATA Server Board)
+ ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset SMBus Controller (S5000PSLSATA Server Board)
pci:v00008086d0000269E*
ID_MODEL_FROM_DATABASE=631xESB/632xESB IDE Controller
@@ -72894,7 +73422,7 @@ pci:v00008086d00002772sv00008086sd0000544E*
ID_MODEL_FROM_DATABASE=82945G/GZ Integrated Graphics Controller (DeskTop Board D945GTP)
pci:v00008086d00002772sv00008086sd0000D605*
- ID_MODEL_FROM_DATABASE=82945G/GZ Integrated Graphics Controller (Intel Desktop Board D945GCCR)
+ ID_MODEL_FROM_DATABASE=82945G/GZ Integrated Graphics Controller (Desktop Board D945GCCR)
pci:v00008086d00002774*
ID_MODEL_FROM_DATABASE=82955X Memory Controller Hub
@@ -74043,22 +74571,22 @@ 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)
+ ID_MODEL_FROM_DATABASE=C600/X79 series chipset SATA RAID Controller (Intel RSTe SATA Software RAID)
pci:v00008086d00002826sv00001D49sd00000101*
- ID_MODEL_FROM_DATABASE=C600/X79 series chipset SATA RAID Controller (ThinkSystem RAID 331)
+ ID_MODEL_FROM_DATABASE=C600/X79 series chipset SATA RAID Controller (Intel RSTe SATA Software RAID)
pci:v00008086d00002826sv00001D49sd00000102*
- ID_MODEL_FROM_DATABASE=C600/X79 series chipset SATA RAID Controller (ThinkSystem RAID 331)
+ ID_MODEL_FROM_DATABASE=C600/X79 series chipset SATA RAID Controller (Intel RSTe SATA Software RAID)
pci:v00008086d00002826sv00001D49sd00000103*
- ID_MODEL_FROM_DATABASE=C600/X79 series chipset SATA RAID Controller (ThinkSystem RAID 331)
+ ID_MODEL_FROM_DATABASE=C600/X79 series chipset SATA RAID Controller (Intel RSTe SATA Software RAID)
pci:v00008086d00002826sv00001D49sd00000104*
- ID_MODEL_FROM_DATABASE=C600/X79 series chipset SATA RAID Controller (ThinkSystem RAID 331)
+ ID_MODEL_FROM_DATABASE=C600/X79 series chipset SATA RAID Controller (Intel RSTe SATA Software RAID)
pci:v00008086d00002826sv00001D49sd00000105*
- ID_MODEL_FROM_DATABASE=C600/X79 series chipset SATA RAID Controller (ThinkSystem RAID 331)
+ ID_MODEL_FROM_DATABASE=C600/X79 series chipset SATA RAID Controller (Intel RSTe SATA Software RAID)
pci:v00008086d00002827*
ID_MODEL_FROM_DATABASE=C610/X99 series chipset sSATA Controller [RAID mode]
@@ -76956,7 +77484,7 @@ pci:v00008086d00003165sv00008086sd00004210*
ID_MODEL_FROM_DATABASE=Wireless 3165 (Dual Band Wireless AC 3165)
pci:v00008086d00003166*
- ID_MODEL_FROM_DATABASE=Intel Dual Band Wireless-AC 3165 Plus Bluetooth
+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 3165 Plus Bluetooth
pci:v00008086d00003200*
ID_MODEL_FROM_DATABASE=GD31244 PCI-X SATA HBA
@@ -77783,9 +78311,18 @@ pci:v00008086d000037D0sv000017AAsd00004020*
pci:v00008086d000037D0sv000017AAsd00004021*
ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 10GbE SFP+ (Intel Ethernet Connection X722 for 10G SFP+)
+pci:v00008086d000037D0sv000017AAsd00004022*
+ ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 10GbE SFP+
+
pci:v00008086d000037D1*
ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 1GbE
+pci:v00008086d000037D1sv00001590sd00000216*
+ ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 1GbE (Ethernet 1Gb 2-port 368i Adapter)
+
+pci:v00008086d000037D1sv00001590sd00000217*
+ ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 1GbE (Ethernet 1Gb 2-port 368FLR-MMT Adapter)
+
pci:v00008086d000037D1sv000017AAsd00004020*
ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 1GbE (Intel Ethernet Connection X722 for 1GbE)
@@ -77798,15 +78335,24 @@ pci:v00008086d000037D1sv000017AAsd00004022*
pci:v00008086d000037D2*
ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 10GBASE-T
+pci:v00008086d000037D2sv00001590sd00000218*
+ ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 10GBASE-T (Ethernet 10Gb 2-port 568FLR-MMT Adapter)
+
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:v00008086d000037D2sv000017AAsd00004022*
+ ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 10GBASE-T
+
pci:v00008086d000037D3*
ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 10GbE SFP+
+pci:v00008086d000037D3sv00001590sd00000219*
+ ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 10GbE SFP+ (Ethernet 10Gb 2-port 568FLR-MMSFP+ Adapter)
+
pci:v00008086d000037D4*
ID_MODEL_FROM_DATABASE=Ethernet Connection X722 for 10GbE QSFP+
@@ -79416,109 +79962,109 @@ pci:v00008086d00005845sv00001AF4sd00001100*
ID_MODEL_FROM_DATABASE=QEMU NVM Express Controller (QEMU Virtual Machine)
pci:v00008086d00005A84*
- ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series Integrated Graphics Controller
+ ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series Integrated Graphics Controller
pci:v00008086d00005A88*
- ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series Imaging Unit
+ ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series Imaging Unit
pci:v00008086d00005A98*
- ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series Audio Cluster
+ ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series Audio Cluster
pci:v00008086d00005A9A*
- ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series Trusted Execution Engine
+ ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series Trusted Execution Engine
pci:v00008086d00005AA2*
- ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series Integrated Sensor Hub
+ ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series Integrated Sensor Hub
pci:v00008086d00005AA8*
- ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series USB xHCI
+ ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series USB xHCI
pci:v00008086d00005AAC*
- ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series I2C Controller #1
+ ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #1
pci:v00008086d00005AAE*
- ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series I2C Controller #2
+ ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #2
pci:v00008086d00005AB0*
- ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series I2C Controller #3
+ ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #3
pci:v00008086d00005AB2*
- ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series I2C Controller #4
+ ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #4
pci:v00008086d00005AB4*
- ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series I2C Controller #5
+ ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #5
pci:v00008086d00005AB6*
- ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series I2C Controller #6
+ ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #6
pci:v00008086d00005AB8*
- ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series I2C Controller #7
+ ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #7
pci:v00008086d00005ABA*
- ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series I2C Controller #8
+ ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #8
pci:v00008086d00005ABC*
- ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series HSUART Controller #1
+ ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series HSUART Controller #1
pci:v00008086d00005ABE*
- ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series HSUART Controller #2
+ ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series HSUART Controller #2
pci:v00008086d00005AC0*
- ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series HSUART Controller #3
+ ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series HSUART Controller #3
pci:v00008086d00005AC2*
- ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series SPI Controller #1
+ ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series SPI Controller #1
pci:v00008086d00005AC4*
- ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series SPI Controller #2
+ ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series SPI Controller #2
pci:v00008086d00005AC6*
- ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series SPI Controller #3
+ ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series SPI Controller #3
pci:v00008086d00005AC8*
- ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series PWM Pin Controller
+ ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series PWM Pin Controller
pci:v00008086d00005ACA*
- ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series SDXC/MMC Host Controller
+ ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series SDXC/MMC Host Controller
pci:v00008086d00005ACC*
- ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series eMMC Controller
+ ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series eMMC Controller
pci:v00008086d00005AD0*
- ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series SDIO Controller
+ ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series SDIO Controller
pci:v00008086d00005AD4*
- ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series SMBus Controller
+ ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series SMBus Controller
pci:v00008086d00005AD6*
- ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series PCI Express Port B #1
+ ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port B #1
pci:v00008086d00005AD7*
- ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series PCI Express Port B #2
+ ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port B #2
pci:v00008086d00005AD8*
- ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series PCI Express Port A #1
+ ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port A #1
pci:v00008086d00005AD9*
- ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series PCI Express Port A #2
+ ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port A #2
pci:v00008086d00005ADA*
- ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series PCI Express Port A #3
+ ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port A #3
pci:v00008086d00005ADB*
- ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series PCI Express Port A #4
+ ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port A #4
pci:v00008086d00005AE3*
- ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series SATA AHCI Controller
+ ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series SATA AHCI Controller
pci:v00008086d00005AE8*
- ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series Low Pin Count Interface
+ ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series Low Pin Count Interface
pci:v00008086d00005AEE*
- ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series HSUART Controller #4
+ ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series HSUART Controller #4
pci:v00008086d00005AF0*
- ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series Host Bridge
+ ID_MODEL_FROM_DATABASE=Celeron N3350/Pentium N4200/Atom E3900 Series Host Bridge
pci:v00008086d000065C0*
ID_MODEL_FROM_DATABASE=5100 Chipset Memory Controller Hub
@@ -82043,6 +82589,63 @@ pci:v00008086d0000A252*
pci:v00008086d0000A256*
ID_MODEL_FROM_DATABASE=Lewisburg SSATA Controller [RAID mode]
+pci:v00008086d0000A282*
+ ID_MODEL_FROM_DATABASE=200 Series PCH SATA controller [AHCI mode]
+
+pci:v00008086d0000A294*
+ ID_MODEL_FROM_DATABASE=200 Series PCH PCI Express Root Port #1
+
+pci:v00008086d0000A2A1*
+ ID_MODEL_FROM_DATABASE=200 Series PCH PMC
+
+pci:v00008086d0000A2A3*
+ ID_MODEL_FROM_DATABASE=200 Series PCH SMBus Controller
+
+pci:v00008086d0000A2A7*
+ ID_MODEL_FROM_DATABASE=200 Series PCH Serial IO UART Controller #0
+
+pci:v00008086d0000A2A8*
+ ID_MODEL_FROM_DATABASE=200 Series PCH Serial IO UART Controller #1
+
+pci:v00008086d0000A2A9*
+ ID_MODEL_FROM_DATABASE=200 Series PCH Serial IO SPI Controller #0
+
+pci:v00008086d0000A2AA*
+ ID_MODEL_FROM_DATABASE=200 Series PCH Serial IO SPI Controller #1
+
+pci:v00008086d0000A2AF*
+ ID_MODEL_FROM_DATABASE=200 Series PCH USB 3.0 xHCI Controller
+
+pci:v00008086d0000A2B1*
+ ID_MODEL_FROM_DATABASE=200 Series PCH Thermal Subsystem
+
+pci:v00008086d0000A2BA*
+ ID_MODEL_FROM_DATABASE=200 Series PCH CSME HECI #1
+
+pci:v00008086d0000A2BB*
+ ID_MODEL_FROM_DATABASE=200 Series PCH CSME HECI #2
+
+pci:v00008086d0000A2C6*
+ ID_MODEL_FROM_DATABASE=200 Series PCH LPC Controller
+
+pci:v00008086d0000A2E0*
+ ID_MODEL_FROM_DATABASE=200 Series PCH Serial IO I2C Controller #0
+
+pci:v00008086d0000A2E1*
+ ID_MODEL_FROM_DATABASE=200 Series PCH Serial IO I2C Controller #1
+
+pci:v00008086d0000A2E2*
+ ID_MODEL_FROM_DATABASE=200 Series PCH Serial IO I2C Controller #2
+
+pci:v00008086d0000A2E3*
+ ID_MODEL_FROM_DATABASE=200 Series PCH Serial IO I2C Controller #3
+
+pci:v00008086d0000A2E6*
+ ID_MODEL_FROM_DATABASE=200 Series PCH Serial IO UART Controller #2
+
+pci:v00008086d0000A2F0*
+ ID_MODEL_FROM_DATABASE=200 Series PCH HD Audio
+
pci:v00008086d0000A620*
ID_MODEL_FROM_DATABASE=6400/6402 Advanced Memory Buffer (AMB)
@@ -84320,6 +84923,9 @@ pci:v0000F1D0d0000CFEE*
pci:v0000F1D0d0000DAFF*
ID_MODEL_FROM_DATABASE=KONA LHi
+pci:v0000F1D0d0000DB09*
+ ID_MODEL_FROM_DATABASE=Corvid 24
+
pci:v0000F1D0d0000DCAF*
ID_MODEL_FROM_DATABASE=Kona HD
diff --git a/hwdb/20-usb-vendor-model.hwdb b/hwdb/20-usb-vendor-model.hwdb
index ec0c26fc35..6acb51bb1c 100644
--- a/hwdb/20-usb-vendor-model.hwdb
+++ b/hwdb/20-usb-vendor-model.hwdb
@@ -50,6 +50,9 @@ usb:v0127*
usb:v0127p0002*
ID_MODEL_FROM_DATABASE=HDM Interface
+usb:v0127p0127*
+ ID_MODEL_FROM_DATABASE=ibp
+
usb:v0145*
ID_VENDOR_FROM_DATABASE=Unknown
@@ -1841,6 +1844,9 @@ usb:v03F0p9002*
usb:v03F0p9102*
ID_MODEL_FROM_DATABASE=PhotoSmart M537
+usb:v03F0p9207*
+ ID_MODEL_FROM_DATABASE=HD-4110 Webcam
+
usb:v03F0p9302*
ID_MODEL_FROM_DATABASE=PhotoSmart R930 series
@@ -2063,6 +2069,9 @@ usb:v03FD*
usb:v03FDp0008*
ID_MODEL_FROM_DATABASE=Platform Cable USB II
+usb:v03FDp0050*
+ ID_MODEL_FROM_DATABASE=dfu downloader
+
usb:v03FE*
ID_VENDOR_FROM_DATABASE=Farallon Comunications
@@ -2187,7 +2196,7 @@ usb:v0403p6009*
ID_MODEL_FROM_DATABASE=Serial Converter
usb:v0403p6010*
- ID_MODEL_FROM_DATABASE=FT2232C Dual USB-UART/FIFO IC
+ ID_MODEL_FROM_DATABASE=FT2232C/D/H Dual UART/FIFO IC
usb:v0403p6011*
ID_MODEL_FROM_DATABASE=FT4232H Quad HS USB-UART/FIFO IC
@@ -2318,6 +2327,9 @@ usb:v0403pBFDB*
usb:v0403pBFDC*
ID_MODEL_FROM_DATABASE=OpenDCC (GBM)
+usb:v0403pC580*
+ ID_MODEL_FROM_DATABASE=HID UNIKEY dongle [F-Response]
+
usb:v0403pC630*
ID_MODEL_FROM_DATABASE=lcd2usb interface
@@ -5432,6 +5444,12 @@ usb:v044F*
usb:v044Fp0400*
ID_MODEL_FROM_DATABASE=HOTAS Cougar
+usb:v044Fp0402*
+ ID_MODEL_FROM_DATABASE=HOTAS Warthog Joystick
+
+usb:v044Fp0404*
+ ID_MODEL_FROM_DATABASE=HOTAS Warthog Throttle
+
usb:v044Fp044F*
ID_MODEL_FROM_DATABASE=GP XID
@@ -5501,6 +5519,9 @@ usb:v044FpB653*
usb:v044FpB654*
ID_MODEL_FROM_DATABASE=Ferrari GT Force Feedback Wheel
+usb:v044FpB687*
+ ID_MODEL_FROM_DATABASE=TWCS Throttle
+
usb:v044FpB700*
ID_MODEL_FROM_DATABASE=Tacticalboard
@@ -6401,6 +6422,15 @@ usb:v045Ep02D5*
usb:v045Ep02DD*
ID_MODEL_FROM_DATABASE=Xbox One Controller (Covert Forces/Firmware 2015)
+usb:v045Ep02E3*
+ ID_MODEL_FROM_DATABASE=Xbox One Elite Controller
+
+usb:v045Ep02E6*
+ ID_MODEL_FROM_DATABASE=Wireless XBox Controller Dongle
+
+usb:v045Ep02EA*
+ ID_MODEL_FROM_DATABASE=Xbox One S Controller
+
usb:v045Ep0400*
ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2002
@@ -6851,6 +6881,9 @@ usb:v045Ep0752*
usb:v045Ep075D*
ID_MODEL_FROM_DATABASE=LifeCam Cinema
+usb:v045Ep0761*
+ ID_MODEL_FROM_DATABASE=LifeCam VX-2000
+
usb:v045Ep0766*
ID_MODEL_FROM_DATABASE=LifeCam VX-800
@@ -6869,6 +6902,9 @@ usb:v045Ep0772*
usb:v045Ep0779*
ID_MODEL_FROM_DATABASE=LifeCam HD-3000
+usb:v045Ep077F*
+ ID_MODEL_FROM_DATABASE=LifeChat LX-6000 Headset
+
usb:v045Ep0780*
ID_MODEL_FROM_DATABASE=Comfort Curve Keyboard 3000
@@ -7148,6 +7184,12 @@ usb:v046Ap002A*
usb:v046Ap002D*
ID_MODEL_FROM_DATABASE=SmartTerminal XX44
+usb:v046Ap003C*
+ ID_MODEL_FROM_DATABASE=Raptor Gaming Keyboard
+
+usb:v046Ap003D*
+ ID_MODEL_FROM_DATABASE=Raptor Gaming Keyboard Integrated Hub
+
usb:v046Ap003E*
ID_MODEL_FROM_DATABASE=SmartTerminal ST-2xxx
@@ -7166,6 +7208,12 @@ usb:v046Ap0106*
usb:v046Ap010D*
ID_MODEL_FROM_DATABASE=MX-Board 3.0 Keyboard
+usb:v046ApB090*
+ ID_MODEL_FROM_DATABASE=Keyboard
+
+usb:v046ApB091*
+ ID_MODEL_FROM_DATABASE=Mouse
+
usb:v046B*
ID_VENDOR_FROM_DATABASE=American Megatrends, Inc.
@@ -7607,9 +7655,15 @@ usb:v046Dp0A38*
usb:v046Dp0A44*
ID_MODEL_FROM_DATABASE=Headset H390
+usb:v046Dp0A45*
+ ID_MODEL_FROM_DATABASE=960 Headset
+
usb:v046Dp0A4D*
ID_MODEL_FROM_DATABASE=G430 Surround Sound Gaming Headset
+usb:v046Dp0A5B*
+ ID_MODEL_FROM_DATABASE=G933 Wireless Headset Dongle
+
usb:v046Dp0B02*
ID_MODEL_FROM_DATABASE=C-UV35 [Bluetooth Mini-Receiver] (HID proxy mode)
@@ -7902,7 +7956,7 @@ usb:v046DpC20E*
ID_MODEL_FROM_DATABASE=WingMan Formula GP
usb:v046DpC211*
- ID_MODEL_FROM_DATABASE=iTouch Cordless Reciever
+ ID_MODEL_FROM_DATABASE=iTouch Cordless Receiver
usb:v046DpC212*
ID_MODEL_FROM_DATABASE=WingMan Extreme Digital 3D
@@ -9149,6 +9203,9 @@ usb:v0480pA208*
usb:v0480pB001*
ID_MODEL_FROM_DATABASE=Stor.E Partner
+usb:v0480pB207*
+ ID_MODEL_FROM_DATABASE=Canvio Ready
+
usb:v0480pD000*
ID_MODEL_FROM_DATABASE=External Disk 2TB Model DT01ABA200
@@ -9362,6 +9419,9 @@ usb:v048D*
usb:v048Dp1165*
ID_MODEL_FROM_DATABASE=IT1165 Flash Controller
+usb:v048Dp1172*
+ ID_MODEL_FROM_DATABASE=Flash Drive
+
usb:v048Dp1336*
ID_MODEL_FROM_DATABASE=SD/MMC Cardreader
@@ -10145,6 +10205,9 @@ usb:v04A7p04A0*
usb:v04A7p04AC*
ID_MODEL_FROM_DATABASE=Xerox Travel Scanner 100
+usb:v04A7p04CD*
+ ID_MODEL_FROM_DATABASE=Xerox Travel Scanner 150
+
usb:v04A8*
ID_VENDOR_FROM_DATABASE=Multivideo Labs, Inc.
@@ -10361,6 +10424,9 @@ usb:v04A9p10A9*
usb:v04A9p10B6*
ID_MODEL_FROM_DATABASE=PIXMA iP4300 Printer
+usb:v04A9p10B7*
+ ID_MODEL_FROM_DATABASE=PIXMA iP5300 Printer
+
usb:v04A9p10C2*
ID_MODEL_FROM_DATABASE=PIXMA iP1800 Printer
@@ -10368,7 +10434,10 @@ usb:v04A9p10C4*
ID_MODEL_FROM_DATABASE=Pixma iP4500 Printer
usb:v04A9p10C9*
- ID_MODEL_FROM_DATABASE=PIXIMA iP4600 Printer
+ ID_MODEL_FROM_DATABASE=PIXMA iP4600 Printer
+
+usb:v04A9p10CA*
+ ID_MODEL_FROM_DATABASE=PIXMA iP3600 Printer
usb:v04A9p10E3*
ID_MODEL_FROM_DATABASE=PIXMA iX6850 Printer
@@ -10394,6 +10463,9 @@ usb:v04A9p1601*
usb:v04A9p1607*
ID_MODEL_FROM_DATABASE=DR-6080 Scanner
+usb:v04A9p1608*
+ ID_MODEL_FROM_DATABASE=DR-2580C Scanner
+
usb:v04A9p1700*
ID_MODEL_FROM_DATABASE=PIXMA MP110 Scanner
@@ -10485,7 +10557,7 @@ usb:v04A9p1727*
ID_MODEL_FROM_DATABASE=MX300 ser
usb:v04A9p1728*
- ID_MODEL_FROM_DATABASE=MX310 ser
+ ID_MODEL_FROM_DATABASE=PIXMA MX310 series
usb:v04A9p1729*
ID_MODEL_FROM_DATABASE=MX700 ser
@@ -11564,9 +11636,15 @@ usb:v04A9p3212*
usb:v04A9p3214*
ID_MODEL_FROM_DATABASE=SELPHY CP800
+usb:v04A9p3215*
+ ID_MODEL_FROM_DATABASE=EOS 60D
+
usb:v04A9p3218*
ID_MODEL_FROM_DATABASE=EOS 600D / Rebel T3i (ptp)
+usb:v04A9p3219*
+ ID_MODEL_FROM_DATABASE=EOS 1D X
+
usb:v04A9p3223*
ID_MODEL_FROM_DATABASE=PowerShot A3300 IS
@@ -11615,9 +11693,15 @@ usb:v04A9p3237*
usb:v04A9p3238*
ID_MODEL_FROM_DATABASE=PowerShot SX40 HS
+usb:v04A9p323A*
+ ID_MODEL_FROM_DATABASE=EOS 5D Mark III
+
usb:v04A9p323B*
ID_MODEL_FROM_DATABASE=EOS Rebel T4i
+usb:v04A9p323D*
+ ID_MODEL_FROM_DATABASE=EOS M
+
usb:v04A9p323E*
ID_MODEL_FROM_DATABASE=PowerShot A1300
@@ -11642,6 +11726,9 @@ usb:v04A9p3244*
usb:v04A9p3245*
ID_MODEL_FROM_DATABASE=PowerShot SX240 HS
+usb:v04A9p3246*
+ ID_MODEL_FROM_DATABASE=PowerShot ELPH 530 HS / IXUS 510 HS
+
usb:v04A9p3247*
ID_MODEL_FROM_DATABASE=PowerShot ELPH 520 HS / IXUS 500 HS
@@ -11654,6 +11741,15 @@ usb:v04A9p3249*
usb:v04A9p324A*
ID_MODEL_FROM_DATABASE=PowerShot A2300
+usb:v04A9p3250*
+ ID_MODEL_FROM_DATABASE=EOS 6D
+
+usb:v04A9p3252*
+ ID_MODEL_FROM_DATABASE=EOS 1D C
+
+usb:v04A9p3253*
+ ID_MODEL_FROM_DATABASE=EOS 70D
+
usb:v04A9p3255*
ID_MODEL_FROM_DATABASE=SELPHY CP900
@@ -11705,9 +11801,24 @@ usb:v04A9p3266*
usb:v04A9p3268*
ID_MODEL_FROM_DATABASE=PowerShot ELPH 330 HS / IXUS 255 HS
+usb:v04A9p326F*
+ ID_MODEL_FROM_DATABASE=EOS 7D Mark II
+
+usb:v04A9p3270*
+ ID_MODEL_FROM_DATABASE=EOS 100D
+
usb:v04A9p3271*
ID_MODEL_FROM_DATABASE=PowerShot A2500
+usb:v04A9p3272*
+ ID_MODEL_FROM_DATABASE=EOS 700D
+
+usb:v04A9p3274*
+ ID_MODEL_FROM_DATABASE=PowerShot G16
+
+usb:v04A9p3275*
+ ID_MODEL_FROM_DATABASE=PowerShot S120
+
usb:v04A9p3276*
ID_MODEL_FROM_DATABASE=PowerShot SX170 IS
@@ -11717,6 +11828,9 @@ usb:v04A9p3277*
usb:v04A9p3278*
ID_MODEL_FROM_DATABASE=PowerShot S200
+usb:v04A9p327A*
+ ID_MODEL_FROM_DATABASE=SELPHY CP910
+
usb:v04A9p327D*
ID_MODEL_FROM_DATABASE=Powershot ELPH 115 IS / IXUS 132
@@ -11771,15 +11885,30 @@ usb:v04A9p32A6*
usb:v04A9p32AA*
ID_MODEL_FROM_DATABASE=Powershot ELPH 160 / IXUS 160
+usb:v04A9p32AB*
+ ID_MODEL_FROM_DATABASE=PowerShot ELPH 350HS / IXUS 275 HS
+
usb:v04A9p32AC*
ID_MODEL_FROM_DATABASE=PowerShot ELPH 170 IS / IXUS 170
usb:v04A9p32AD*
ID_MODEL_FROM_DATABASE=PowerShot SX410 IS
+usb:v04A9p32B1*
+ ID_MODEL_FROM_DATABASE=SELPHY CP1200
+
+usb:v04A9p32B2*
+ ID_MODEL_FROM_DATABASE=PowerShot G9 X
+
+usb:v04A9p32BB*
+ ID_MODEL_FROM_DATABASE=EOS M5
+
usb:v04A9p32C1*
ID_MODEL_FROM_DATABASE=PowerShot ELPH 180 / IXUS 175
+usb:v04A9p32C2*
+ ID_MODEL_FROM_DATABASE=PowerShot SX720 HS
+
usb:v04AA*
ID_VENDOR_FROM_DATABASE=DaeWoo Telecom, Ltd
@@ -12878,6 +13007,9 @@ usb:v04B9p1305*
usb:v04B9p1306*
ID_MODEL_FROM_DATABASE=iKey Token
+usb:v04B9p8000*
+ ID_MODEL_FROM_DATABASE=SafeNet Sentinel Hardware Key
+
usb:v04BA*
ID_VENDOR_FROM_DATABASE=Toucan Systems, Ltd
@@ -13763,6 +13895,9 @@ usb:v04D9p2011*
usb:v04D9p2013*
ID_MODEL_FROM_DATABASE=Keyboard [Das Keyboard]
+usb:v04D9p2206*
+ ID_MODEL_FROM_DATABASE=Fujitsu Siemens Mouse Esprimo Q
+
usb:v04D9p2221*
ID_MODEL_FROM_DATABASE=Keyboard
@@ -13787,6 +13922,9 @@ usb:v04D9pA050*
usb:v04D9pA055*
ID_MODEL_FROM_DATABASE=Keyboard
+usb:v04D9pA11B*
+ ID_MODEL_FROM_DATABASE=Mouse [MX-3200]
+
usb:v04DA*
ID_VENDOR_FROM_DATABASE=Panasonic (Matsushita)
@@ -13817,6 +13955,9 @@ usb:v04DAp0D0D*
usb:v04DAp0D0E*
ID_MODEL_FROM_DATABASE=DVD-ROM & CD-R/RW
+usb:v04DAp0F07*
+ ID_MODEL_FROM_DATABASE=KX-MB2030 Multifunction Laser Printer
+
usb:v04DAp0F40*
ID_MODEL_FROM_DATABASE=Printer
@@ -13871,6 +14012,15 @@ usb:v04DAp2451*
usb:v04DAp245B*
ID_MODEL_FROM_DATABASE=HC-X920K (3MOS Full HD video camcorder)
+usb:v04DAp2477*
+ ID_MODEL_FROM_DATABASE=SDR-H85 Camcorder (PC mode)
+
+usb:v04DAp2478*
+ ID_MODEL_FROM_DATABASE=SDR-H85 Camcorder (recorder mode - SD card)
+
+usb:v04DAp2479*
+ ID_MODEL_FROM_DATABASE=SDR-H85 Camcorder (recorder mode - HDD)
+
usb:v04DAp2497*
ID_MODEL_FROM_DATABASE=HDC-TM700
@@ -14315,6 +14465,9 @@ usb:v04E7p00FF*
usb:v04E8*
ID_VENDOR_FROM_DATABASE=Samsung Electronics Co., Ltd
+usb:v04E8p0001*
+ ID_MODEL_FROM_DATABASE=Printer Bootloader
+
usb:v04E8p0100*
ID_MODEL_FROM_DATABASE=Kingston Flash Drive (128MB)
@@ -14775,7 +14928,7 @@ usb:v04E8p61B6*
ID_MODEL_FROM_DATABASE=M3 Portable Hard Drive 1TB
usb:v04E8p61F3*
- ID_MODEL_FROM_DATABASE=MU-PT500B [T3 500GB USB SSD]
+ ID_MODEL_FROM_DATABASE=Portable SSD T3 (MU-PT250B, MU-PT500B)
usb:v04E8p6601*
ID_MODEL_FROM_DATABASE=Mobile Phone
@@ -14907,10 +15060,10 @@ usb:v04E8p6864*
ID_MODEL_FROM_DATABASE=GT-I9070 (network tethering, USB debugging enabled)
usb:v04E8p6865*
- ID_MODEL_FROM_DATABASE=GT-I9300 Phone [Galaxy S III] (PTP mode)
+ ID_MODEL_FROM_DATABASE=Galaxy (PTP mode)
usb:v04E8p6866*
- ID_MODEL_FROM_DATABASE=GT-I9300 Phone [Galaxy S III] (debugging mode)
+ ID_MODEL_FROM_DATABASE=Galaxy (debugging mode)
usb:v04E8p6868*
ID_MODEL_FROM_DATABASE=Escape Composite driver for Android Phones: Modem+Diagnostic+ADB
@@ -15329,6 +15482,9 @@ usb:v04F3p0230*
usb:v04F3p0232*
ID_MODEL_FROM_DATABASE=Mouse
+usb:v04F3p0234*
+ ID_MODEL_FROM_DATABASE=Optical Mouse
+
usb:v04F3p02F4*
ID_MODEL_FROM_DATABASE=2.4G Cordless Mouse
@@ -16850,9 +17006,18 @@ usb:v04F9p2028*
usb:v04F9p202B*
ID_MODEL_FROM_DATABASE=PT-7600 P-touch Label Printer
+usb:v04F9p2061*
+ ID_MODEL_FROM_DATABASE=PT-P700 P-touch Label Printer
+
+usb:v04F9p2064*
+ ID_MODEL_FROM_DATABASE=PT-P700 P-touch Label Printer RemovableDisk
+
usb:v04F9p2100*
ID_MODEL_FROM_DATABASE=Card Reader Writer
+usb:v04F9p2102*
+ ID_MODEL_FROM_DATABASE=Sewing machine
+
usb:v04F9p60A0*
ID_MODEL_FROM_DATABASE=ADS-2000
@@ -18371,6 +18536,9 @@ usb:v054Cp021C*
usb:v054Cp021D*
ID_MODEL_FROM_DATABASE=Net MD
+usb:v054Cp0226*
+ ID_MODEL_FROM_DATABASE=UP-CR10L
+
usb:v054Cp0227*
ID_MODEL_FROM_DATABASE=Printing Support
@@ -18554,9 +18722,27 @@ usb:v054Cp0689*
usb:v054Cp06BB*
ID_MODEL_FROM_DATABASE=WALKMAN NWZ-F805
+usb:v054Cp06C3*
+ ID_MODEL_FROM_DATABASE=RC-S380
+
+usb:v054Cp07C4*
+ ID_MODEL_FROM_DATABASE=ILCE-6000 (aka Alpha-6000) in Mass Storage mode
+
usb:v054Cp088C*
ID_MODEL_FROM_DATABASE=Portable Headphone Amplifier
+usb:v054Cp08B7*
+ ID_MODEL_FROM_DATABASE=ILCE-6000 (aka Alpha-6000) in MTP mode
+
+usb:v054Cp094E*
+ ID_MODEL_FROM_DATABASE=ILCE-6000 (aka Alpha-6000) in PC Remote mode
+
+usb:v054Cp0994*
+ ID_MODEL_FROM_DATABASE=ILCE-6000 (aka Alpha-6000) in charging mode
+
+usb:v054Cp0BB5*
+ ID_MODEL_FROM_DATABASE=Headset MDR-1000X
+
usb:v054Cp1000*
ID_MODEL_FROM_DATABASE=Wireless Buzz! Receiver
@@ -19418,6 +19604,24 @@ usb:v056Ap0318*
usb:v056Ap032F*
ID_MODEL_FROM_DATABASE=DTU-1031X
+usb:v056Ap0347*
+ ID_MODEL_FROM_DATABASE=Integrated Hub
+
+usb:v056Ap0348*
+ ID_MODEL_FROM_DATABASE=Integrated Hub
+
+usb:v056Ap034A*
+ ID_MODEL_FROM_DATABASE=DTH-W1320 [MobileStudio Pro 13] touchscreen
+
+usb:v056Ap034B*
+ ID_MODEL_FROM_DATABASE=DTH-W1620 [MobileStudio Pro 16] touchscreen
+
+usb:v056Ap034D*
+ ID_MODEL_FROM_DATABASE=DTH-W1320 [MobileStudio Pro 13] tablet
+
+usb:v056Ap034E*
+ ID_MODEL_FROM_DATABASE=DTH-W1620 [MobileStudio Pro 16] tablet
+
usb:v056Ap0400*
ID_MODEL_FROM_DATABASE=PenPartner 4x5
@@ -19565,6 +19769,9 @@ usb:v0572p1301*
usb:v0572p1328*
ID_MODEL_FROM_DATABASE=TrendNet TFM-561 modem
+usb:v0572p1804*
+ ID_MODEL_FROM_DATABASE=HP Dock Audio
+
usb:v0572p2000*
ID_MODEL_FROM_DATABASE=SoftGate 802.11 Adapter
@@ -20888,6 +21095,9 @@ usb:v058Cp001F*
usb:v058CpFFE5*
ID_MODEL_FROM_DATABASE=IN34 Projector
+usb:v058CpFFEB*
+ ID_MODEL_FROM_DATABASE=Projector IN76
+
usb:v058D*
ID_VENDOR_FROM_DATABASE=Micrel Semiconductor
@@ -23189,6 +23399,9 @@ usb:v05DCpB018*
usb:v05DCpB047*
ID_MODEL_FROM_DATABASE=SDHC Reader [RW047-7000]
+usb:v05DCpB051*
+ ID_MODEL_FROM_DATABASE=microSD RDR UHS-I Card Reader [LRWM03U-7000]
+
usb:v05DCpBA02*
ID_MODEL_FROM_DATABASE=Workflow CFR1
@@ -23300,6 +23513,9 @@ usb:v05E3p0142*
usb:v05E3p0143*
ID_MODEL_FROM_DATABASE=Multiple Frames Film Scanner-36series
+usb:v05E3p0145*
+ ID_MODEL_FROM_DATABASE=Reflecta CrystalScan 7200 Photo-Scanner
+
usb:v05E3p0180*
ID_MODEL_FROM_DATABASE=Plustek Scanner
@@ -23447,6 +23663,9 @@ usb:v05E3p0732*
usb:v05E3p0736*
ID_MODEL_FROM_DATABASE=microSD Reader/Writer
+usb:v05E3p0738*
+ ID_MODEL_FROM_DATABASE=Card reader
+
usb:v05E3p0741*
ID_MODEL_FROM_DATABASE=microSD Card Reader
@@ -26171,6 +26390,21 @@ usb:v06D3p03A1*
usb:v06D3p03A5*
ID_MODEL_FROM_DATABASE=CP9550DW-S
+usb:v06D3p03A9*
+ ID_MODEL_FROM_DATABASE=CP-9600DW
+
+usb:v06D3p03AA*
+ ID_MODEL_FROM_DATABASE=CP3020DA
+
+usb:v06D3p03AD*
+ ID_MODEL_FROM_DATABASE=CP-9800DW-S
+
+usb:v06D3p03AE*
+ ID_MODEL_FROM_DATABASE=CP-9800DW-S
+
+usb:v06D3p3B10*
+ ID_MODEL_FROM_DATABASE=P95D
+
usb:v06D3p3B30*
ID_MODEL_FROM_DATABASE=CP-D70DW / CP-D707DW
@@ -26885,6 +27119,9 @@ usb:v0718p0624*
usb:v0718p1120*
ID_MODEL_FROM_DATABASE=RDX External dock (redbud)
+usb:v0718p4006*
+ ID_MODEL_FROM_DATABASE=8x Slim DVD Multi-Format Recorder External
+
usb:v0718pD000*
ID_MODEL_FROM_DATABASE=Disc Stakka CD/DVD Manager
@@ -27890,6 +28127,9 @@ usb:v0781p5575*
usb:v0781p5576*
ID_MODEL_FROM_DATABASE=Cruzer Facet
+usb:v0781p5577*
+ ID_MODEL_FROM_DATABASE=Cruzer Pop (8GB)
+
usb:v0781p557D*
ID_MODEL_FROM_DATABASE=Cruzer Force (64GB)
@@ -27902,6 +28142,9 @@ usb:v0781p5581*
usb:v0781p5583*
ID_MODEL_FROM_DATABASE=Ultra Fit
+usb:v0781p5590*
+ ID_MODEL_FROM_DATABASE=Ultra Dual
+
usb:v0781p5591*
ID_MODEL_FROM_DATABASE=Ultra Flair
@@ -29840,6 +30083,9 @@ usb:v0810p0002*
usb:v0810p0003*
ID_MODEL_FROM_DATABASE=PlayStation Gamepad
+usb:v0810pE501*
+ ID_MODEL_FROM_DATABASE=SNES Gamepad
+
usb:v0813*
ID_VENDOR_FROM_DATABASE=Mattel, Inc.
@@ -30888,13 +31134,31 @@ usb:v08BB*
ID_VENDOR_FROM_DATABASE=Texas Instruments
usb:v08BBp2702*
- ID_MODEL_FROM_DATABASE=Speakers
+ ID_MODEL_FROM_DATABASE=PCM2702 16-bit stereo audio DAC
usb:v08BBp2704*
- ID_MODEL_FROM_DATABASE=Audio Codec
+ ID_MODEL_FROM_DATABASE=PCM2704 16-bit stereo audio DAC
+
+usb:v08BBp2705*
+ ID_MODEL_FROM_DATABASE=PCM2705 stereo audio DAC
usb:v08BBp2706*
- ID_MODEL_FROM_DATABASE=PCM2706 Audio Codec
+ ID_MODEL_FROM_DATABASE=PCM2706 stereo audio DAC
+
+usb:v08BBp2707*
+ ID_MODEL_FROM_DATABASE=PCM2707 stereo audio DAC
+
+usb:v08BBp27C4*
+ ID_MODEL_FROM_DATABASE=PCM2704C stereo audio DAC
+
+usb:v08BBp27C5*
+ ID_MODEL_FROM_DATABASE=PCM2705C stereo audio DAC
+
+usb:v08BBp27C6*
+ ID_MODEL_FROM_DATABASE=PCM2706C stereo audio DAC
+
+usb:v08BBp27C7*
+ ID_MODEL_FROM_DATABASE=PCM2707C stereo audio DAC
usb:v08BBp2900*
ID_MODEL_FROM_DATABASE=PCM2900 Audio Codec
@@ -30911,6 +31175,9 @@ usb:v08BBp2904*
usb:v08BBp2910*
ID_MODEL_FROM_DATABASE=PCM2912 Audio Codec
+usb:v08BBp2912*
+ ID_MODEL_FROM_DATABASE=PCM2912A Audio Codec
+
usb:v08BBp29B0*
ID_MODEL_FROM_DATABASE=PCM2900B Audio CODEC
@@ -32024,6 +32291,9 @@ usb:v091Ep255B*
usb:v091Ep26A1*
ID_MODEL_FROM_DATABASE=Nuvi 55
+usb:v091Ep47FB*
+ ID_MODEL_FROM_DATABASE=nuviCam
+
usb:v0920*
ID_VENDOR_FROM_DATABASE=Echelon Co.
@@ -32078,6 +32348,9 @@ usb:v0924p3CE8*
usb:v0924p3CEA*
ID_MODEL_FROM_DATABASE=Phaser 3125
+usb:v0924p3CEC*
+ ID_MODEL_FROM_DATABASE=Phaser 3250
+
usb:v0924p3D5B*
ID_MODEL_FROM_DATABASE=Phaser 6115MFP TWAIN Scanner
@@ -32444,9 +32717,24 @@ usb:v0934*
usb:v0936*
ID_VENDOR_FROM_DATABASE=NuTesla
+usb:v0936p000A*
+ ID_MODEL_FROM_DATABASE=Moebius
+
+usb:v0936p000B*
+ ID_MODEL_FROM_DATABASE=iMoebius
+
usb:v0936p000C*
ID_MODEL_FROM_DATABASE=Rhythmedics 6 BioData Integrator
+usb:v0936p000D*
+ ID_MODEL_FROM_DATABASE=Hypurius
+
+usb:v0936p000E*
+ ID_MODEL_FROM_DATABASE=Millennius
+
+usb:v0936p000F*
+ ID_MODEL_FROM_DATABASE=Purius
+
usb:v0936p0030*
ID_MODEL_FROM_DATABASE=Composite Device, Mass Storage Device (Flash Drive) amd HID
@@ -32753,6 +33041,9 @@ usb:v0954*
usb:v0955*
ID_VENDOR_FROM_DATABASE=NVidia Corp.
+usb:v0955p7018*
+ ID_MODEL_FROM_DATABASE=APX
+
usb:v0955p7030*
ID_MODEL_FROM_DATABASE=Tegra 3 (recovery mode)
@@ -33263,6 +33554,12 @@ usb:v09D7*
usb:v09D7p0100*
ID_MODEL_FROM_DATABASE=NovAtel FlexPack GPS receiver
+usb:v09D8*
+ ID_VENDOR_FROM_DATABASE=ELATEC
+
+usb:v09D8p0406*
+ ID_MODEL_FROM_DATABASE=TWN4 MIFARE NFC
+
usb:v09D9*
ID_VENDOR_FROM_DATABASE=KRF Tech, Ltd
@@ -35250,7 +35547,7 @@ usb:v0B05p5412*
ID_MODEL_FROM_DATABASE=MeMO Pad HD 7 (PTP mode)
usb:v0B05p550F*
- ID_MODEL_FROM_DATABASE=ASUS fonepad 7
+ ID_MODEL_FROM_DATABASE=Fonepad 7
usb:v0B05p6101*
ID_MODEL_FROM_DATABASE=Cable Modem
@@ -35258,6 +35555,24 @@ usb:v0B05p6101*
usb:v0B05p620A*
ID_MODEL_FROM_DATABASE=Remote NDIS Device
+usb:v0B05p7772*
+ ID_MODEL_FROM_DATABASE=ASUS Zenfone GO (ZB500KL) (MTP mode)
+
+usb:v0B05p7773*
+ ID_MODEL_FROM_DATABASE=ASUS Zenfone GO (ZB500KL) (Debug, MTP mode)
+
+usb:v0B05p7774*
+ ID_MODEL_FROM_DATABASE=ASUS Zenfone GO (ZB500KL) (RNDIS mode)
+
+usb:v0B05p7775*
+ ID_MODEL_FROM_DATABASE=ASUS Zenfone GO (ZB500KL) (Debug, RNDIS mode)
+
+usb:v0B05p7776*
+ ID_MODEL_FROM_DATABASE=ASUS Zenfone GO (ZB500KL) (PTP mode)
+
+usb:v0B05p7777*
+ ID_MODEL_FROM_DATABASE=ASUS Zenfone GO (ZB500KL) (Debug, PTP mode)
+
usb:v0B05pB700*
ID_MODEL_FROM_DATABASE=Broadcom Bluetooth 2.1
@@ -36599,6 +36914,9 @@ usb:v0BC2p2320*
usb:v0BC2p2321*
ID_MODEL_FROM_DATABASE=Expansion Portable
+usb:v0BC2p2322*
+ ID_MODEL_FROM_DATABASE=SRD0NF1 Expansion Portable (STEA)
+
usb:v0BC2p2340*
ID_MODEL_FROM_DATABASE=FreeAgent External Hard Drive
@@ -36653,6 +36971,9 @@ usb:v0BC2p5121*
usb:v0BC2p5161*
ID_MODEL_FROM_DATABASE=FreeAgent GoFlex dock
+usb:v0BC2p61B7*
+ ID_MODEL_FROM_DATABASE=Maxtor M3 Portable
+
usb:v0BC2pA003*
ID_MODEL_FROM_DATABASE=Backup Plus
@@ -36680,6 +37001,9 @@ usb:v0BC2pAB31*
usb:v0BC2pAB34*
ID_MODEL_FROM_DATABASE=Backup Plus
+usb:v0BC2pAB38*
+ ID_MODEL_FROM_DATABASE=Backup Plus Hub
+
usb:v0BC3*
ID_VENDOR_FROM_DATABASE=IPWireless, Inc.
@@ -36887,6 +37211,9 @@ usb:v0BDAp570C*
usb:v0BDAp5730*
ID_MODEL_FROM_DATABASE=HP 2.0MP High Definition Webcam
+usb:v0BDAp5751*
+ ID_MODEL_FROM_DATABASE=Integrated Webcam
+
usb:v0BDAp5775*
ID_MODEL_FROM_DATABASE=HP "Truevision HD" laptop camera
@@ -37109,6 +37436,12 @@ usb:v0BFDp000B*
usb:v0BFDp000E*
ID_MODEL_FROM_DATABASE=Leaf SemiPro HS
+usb:v0C00*
+ ID_VENDOR_FROM_DATABASE=FireFly Mouse Mat
+
+usb:v0C00p1607*
+ ID_MODEL_FROM_DATABASE=Apex M500
+
usb:v0C04*
ID_VENDOR_FROM_DATABASE=MOTO Development Group, Inc.
@@ -37808,6 +38141,9 @@ usb:v0C45p648B*
usb:v0C45p64BD*
ID_MODEL_FROM_DATABASE=Sony Visual Communication Camera
+usb:v0C45p64D0*
+ ID_MODEL_FROM_DATABASE=Integrated Webcam
+
usb:v0C45p64D2*
ID_MODEL_FROM_DATABASE=Integrated Webcam
@@ -38333,8 +38669,14 @@ usb:v0CA7*
usb:v0CAD*
ID_VENDOR_FROM_DATABASE=Motorola CGISS
+usb:v0CADp1007*
+ ID_MODEL_FROM_DATABASE=APX Series Consolette
+
usb:v0CADp1030*
- ID_MODEL_FROM_DATABASE=APX Series Radio
+ ID_MODEL_FROM_DATABASE=APX Series Radio (Portable)
+
+usb:v0CADp1031*
+ ID_MODEL_FROM_DATABASE=APX Series Radio (Mobile)
usb:v0CADp1602*
ID_MODEL_FROM_DATABASE=IMPRES Battery Data Reader
@@ -38585,6 +38927,18 @@ usb:v0CD5p0003*
usb:v0CD5p0009*
ID_MODEL_FROM_DATABASE=UE9
+usb:v0CD6*
+ ID_VENDOR_FROM_DATABASE=Scheidt & Bachmann
+
+usb:v0CD6p000C*
+ ID_MODEL_FROM_DATABASE=S&B TPU
+
+usb:v0CD6p000E*
+ ID_MODEL_FROM_DATABASE=S&B BKV
+
+usb:v0CD6p0011*
+ ID_MODEL_FROM_DATABASE=Money Coin Unit
+
usb:v0CD7*
ID_VENDOR_FROM_DATABASE=NewChip S.r.l.
@@ -38921,6 +39275,9 @@ usb:v0D16p0002*
usb:v0D16p0004*
ID_MODEL_FROM_DATABASE=Photo Printer 63xPL/PS
+usb:v0D16p000E*
+ ID_MODEL_FROM_DATABASE=P910L
+
usb:v0D16p0100*
ID_MODEL_FROM_DATABASE=Photo Printer 63xPL/PS
@@ -39633,7 +39990,7 @@ usb:v0D99*
ID_VENDOR_FROM_DATABASE=Trazer Technologies, Inc.
usb:v0D9A*
- ID_VENDOR_FROM_DATABASE=RTX Telecom AS
+ ID_VENDOR_FROM_DATABASE=RTX AS
usb:v0D9Ap0001*
ID_MODEL_FROM_DATABASE=Bluetooth Device
@@ -40325,6 +40682,9 @@ usb:v0DFC*
usb:v0DFCp0001*
ID_MODEL_FROM_DATABASE=Touchscreen
+usb:v0DFCp0101*
+ ID_MODEL_FROM_DATABASE=5-point Touch Screen
+
usb:v0E03*
ID_VENDOR_FROM_DATABASE=Nippon Systemware Co., Ltd
@@ -41636,6 +41996,9 @@ usb:v0FCAp8011*
usb:v0FCAp8020*
ID_MODEL_FROM_DATABASE=Blackberry Playbook (CD-Rom mode)
+usb:v0FCAp8037*
+ ID_MODEL_FROM_DATABASE=Blackberry PRIV
+
usb:v0FCE*
ID_VENDOR_FROM_DATABASE=Sony Ericsson Mobile Communications AB
@@ -42212,6 +42575,9 @@ usb:v1004p631E*
usb:v1004p631F*
ID_MODEL_FROM_DATABASE=Optimus Android Phone (Charge Mode)
+usb:v1004p633A*
+ ID_MODEL_FROM_DATABASE=Ultimate 2 Android Phone L41C
+
usb:v1004p633E*
ID_MODEL_FROM_DATABASE=G2/G3 Android Phone [MTP/PTP/Download mode]
@@ -42851,6 +43217,9 @@ usb:v1058p1230*
usb:v1058p1235*
ID_MODEL_FROM_DATABASE=My Book (WDBFJK0040HBK)
+usb:v1058p2599*
+ ID_MODEL_FROM_DATABASE=My Passport Ultra (WD40NMZW)
+
usb:v1058p259D*
ID_MODEL_FROM_DATABASE=My Passport Ultra (WDBBKD)
@@ -50873,15 +51242,57 @@ usb:v1B1Cp0A00*
usb:v1B1Cp0A60*
ID_MODEL_FROM_DATABASE=Vengeance K60 Keyboard
+usb:v1B1Cp0C04*
+ ID_MODEL_FROM_DATABASE=Link Cooling Node
+
usb:v1B1Cp1A01*
ID_MODEL_FROM_DATABASE=Flash Voyager GT
+usb:v1B1Cp1A03*
+ ID_MODEL_FROM_DATABASE=Voyager 3.0
+
+usb:v1B1Cp1A09*
+ ID_MODEL_FROM_DATABASE=Voyager GT 3.0
+
usb:v1B1Cp1A0A*
ID_MODEL_FROM_DATABASE=Survivor Stealth Flash Drive
+usb:v1B1Cp1A0B*
+ ID_MODEL_FROM_DATABASE=Flash Voyager LS
+
+usb:v1B1Cp1A15*
+ ID_MODEL_FROM_DATABASE=Voyager Slider Flash Drive
+
usb:v1B1Cp1A90*
ID_MODEL_FROM_DATABASE=Flash Voyager GT
+usb:v1B1Cp1AB1*
+ ID_MODEL_FROM_DATABASE=Voyager
+
+usb:v1B1Cp1B04*
+ ID_MODEL_FROM_DATABASE=Raptor K50 Keyboard
+
+usb:v1B1Cp1B07*
+ ID_MODEL_FROM_DATABASE=Vengeance K65 Gaming Keyboard
+
+usb:v1B1Cp1B08*
+ ID_MODEL_FROM_DATABASE=Vengeance K95 Keyboard
+
+usb:v1B1Cp1B09*
+ ID_MODEL_FROM_DATABASE=Vengeance K70R keyboard
+
+usb:v1B1Cp1B11*
+ ID_MODEL_FROM_DATABASE=K95 RGB Mechanical Gaming Keyboard
+
+usb:v1B1Cp1B13*
+ ID_MODEL_FROM_DATABASE=Vengeance K70RGB keyboard
+
+usb:v1B1Cp1C00*
+ ID_MODEL_FROM_DATABASE=Controller for Corsair Link
+
+usb:v1B1Cp1C0C*
+ ID_MODEL_FROM_DATABASE=RM850i Power Supply
+
usb:v1B1F*
ID_VENDOR_FROM_DATABASE=eQ-3 Entwicklung GmbH
@@ -52544,6 +52955,15 @@ usb:v1D90*
usb:v1D90p201E*
ID_MODEL_FROM_DATABASE=PPU-700
+usb:v1D9D*
+ ID_VENDOR_FROM_DATABASE=Sigma Sport
+
+usb:v1D9Dp1010*
+ ID_MODEL_FROM_DATABASE=Docking Station Topline 2009
+
+usb:v1D9Dp1011*
+ ID_MODEL_FROM_DATABASE=Docking Station Topline 2012
+
usb:v1DE1*
ID_VENDOR_FROM_DATABASE=Actions Microelectronics Co.
@@ -54374,6 +54794,27 @@ usb:v2735p1043*
usb:v2735p1044*
ID_MODEL_FROM_DATABASE=HCT HMD-180A
+usb:v273F*
+ ID_VENDOR_FROM_DATABASE=Hughski Limited
+
+usb:v273Fp1000*
+ ID_MODEL_FROM_DATABASE=ColorHug bootloader
+
+usb:v273Fp1001*
+ ID_MODEL_FROM_DATABASE=ColorHug
+
+usb:v273Fp1002*
+ ID_MODEL_FROM_DATABASE=ColorHug+
+
+usb:v273Fp1003*
+ ID_MODEL_FROM_DATABASE=ColorHug+ Bootloader
+
+usb:v273Fp1004*
+ ID_MODEL_FROM_DATABASE=ColorHug2
+
+usb:v273Fp1005*
+ ID_MODEL_FROM_DATABASE=ColorHug2 bootloader
+
usb:v2770*
ID_VENDOR_FROM_DATABASE=NHJ, Ltd
@@ -54620,6 +55061,12 @@ usb:v2C1A*
usb:v2C1Ap0000*
ID_MODEL_FROM_DATABASE=Wireless Optical Mouse
+usb:v2DCF*
+ ID_VENDOR_FROM_DATABASE=Dialog Semiconductor
+
+usb:v2DCFpC952*
+ ID_MODEL_FROM_DATABASE=Audio Class 2.0 Devices
+
usb:v2FB2*
ID_VENDOR_FROM_DATABASE=Fujitsu, Ltd
diff --git a/man/coredump.conf.xml b/man/coredump.conf.xml
index 77b4dac51c..5f61e05f40 100644
--- a/man/coredump.conf.xml
+++ b/man/coredump.conf.xml
@@ -85,7 +85,7 @@
<listitem><para>Controls where to store cores. One of <literal>none</literal>,
<literal>external</literal>, and <literal>journal</literal>. When
- <literal>none</literal>, the core dumps will be logged (included the traceback if
+ <literal>none</literal>, the core dumps will be logged (including the backtrace if
possible), but not stored permanently. When <literal>external</literal> (the
default), cores will be stored in <filename>/var/lib/systemd/coredump/</filename>.
When <literal>journal</literal>, cores will be stored in the journal and rotated
diff --git a/man/machinectl.xml b/man/machinectl.xml
index 38cf919a78..7a159aecdc 100644
--- a/man/machinectl.xml
+++ b/man/machinectl.xml
@@ -518,19 +518,14 @@
<varlistentry>
<term><command>bind</command> <replaceable>NAME</replaceable> <replaceable>PATH</replaceable> [<replaceable>PATH</replaceable>]</term>
- <listitem><para>Bind mounts a directory from the host into the
- specified container. The first directory argument is the
- source directory on the host, the second directory argument
- is the destination directory in the container. When the
- latter is omitted, the destination path in the container is
- the same as the source path on the host. When combined with
- the <option>--read-only</option> switch, a ready-only bind
- mount is created. When combined with the
- <option>--mkdir</option> switch, the destination path is first
- created before the mount is applied. Note that this option is
- currently only supported for
- <citerefentry><refentrytitle>systemd-nspawn</refentrytitle><manvolnum>1</manvolnum></citerefentry>
- containers.</para></listitem>
+ <listitem><para>Bind mounts a directory from the host into the specified container. The first directory
+ argument is the source directory on the host, the second directory argument is the destination directory in the
+ container. When the latter is omitted, the destination path in the container is the same as the source path on
+ the host. When combined with the <option>--read-only</option> switch, a ready-only bind mount is created. When
+ combined with the <option>--mkdir</option> switch, the destination path is first created before the mount is
+ applied. Note that this option is currently only supported for
+ <citerefentry><refentrytitle>systemd-nspawn</refentrytitle><manvolnum>1</manvolnum></citerefentry> containers,
+ and only if user namespacing (<option>--private-users</option>) is not used.</para></listitem>
</varlistentry>
<varlistentry>
@@ -540,9 +535,12 @@
system into a running container. Takes a container name,
followed by the source path on the host and the destination
path in the container. If the destination path is omitted, the
- same as the source path is used.</para></listitem>
- </varlistentry>
+ same as the source path is used.</para>
+ <para>If host and container share the same user and group namespace, file ownership by numeric user ID and
+ group ID is preserved for the copy, otherwise all files and directories in the copy will be owned by the root
+ user and group (UID/GID 0).</para></listitem>
+ </varlistentry>
<varlistentry>
<term><command>copy-from</command> <replaceable>NAME</replaceable> <replaceable>PATH</replaceable> [<replaceable>PATH</replaceable>]</term>
@@ -551,7 +549,11 @@
into the host system. Takes a container name, followed by the
source path in the container the destination path on the host.
If the destination path is omitted, the same as the source path
- is used.</para></listitem>
+ is used.</para>
+
+ <para>If host and container share the same user and group namespace, file ownership by numeric user ID and
+ group ID is preserved for the copy, otherwise all files and directories in the copy will be owned by the root
+ user and group (UID/GID 0).</para></listitem>
</varlistentry>
</variablelist></refsect2>
diff --git a/man/sd-id128.xml b/man/sd-id128.xml
index 5f24feff8e..2e29cf91cb 100644
--- a/man/sd-id128.xml
+++ b/man/sd-id128.xml
@@ -47,6 +47,7 @@
<refname>sd-id128</refname>
<refname>sd_id128_t</refname>
<refname>SD_ID128_MAKE</refname>
+ <refname>SD_ID128_MAKE_STR</refname>
<refname>SD_ID128_NULL</refname>
<refname>SD_ID128_CONST_STR</refname>
<refname>SD_ID128_FORMAT_STR</refname>
@@ -113,12 +114,24 @@
<para><function>SD_ID128_NULL</function> may be used to refer to the 128bit ID consisting of only NUL
bytes.</para>
+ <para><function>SD_ID128_MAKE_STR()</function> is similar to <function>SD_ID128_MAKE()</function>, but creates a
+ <type>const char*</type> expression that can be conveniently used in message formats and such:</para>
+
+ <programlisting>#include &lt;stdio.h&gt;
+#define SD_MESSAGE_COREDUMP_STR SD_ID128_MAKE_STR(fc,2e,22,bc,6e,e6,47,b6,b9,07,29,ab,34,a2,50,b1)
+
+int main(int argc, char **argv) {
+ puts("Match for coredumps: MESSAGE_ID=" SD_MESSAGE_COREDUMP_STR);
+}
+ </programlisting>
+
+
<para><function>SD_ID128_CONST_STR()</function> may be used to
convert constant 128-bit IDs into constant strings for output. The
following example code will output the string
"fc2e22bc6ee647b6b90729ab34a250b1":</para>
<programlisting>int main(int argc, char *argv[]) {
- puts(SD_ID128_CONST_STR(SD_MESSAGE_COREDUMP));
+ puts("Match for coredumps: %s", SD_ID128_CONST_STR(SD_MESSAGE_COREDUMP));
}</programlisting>
<para><function>SD_ID128_FORMAT_STR()</function> and
diff --git a/man/systemd-coredump.xml b/man/systemd-coredump.xml
index 4a1bc8b296..7243467dc2 100644
--- a/man/systemd-coredump.xml
+++ b/man/systemd-coredump.xml
@@ -52,14 +52,26 @@
<refsynopsisdiv>
<para><filename>/usr/lib/systemd/systemd-coredump</filename></para>
+ <para><filename>/usr/lib/systemd/systemd-coredump</filename> <option>--backtrace</option></para>
<para><filename>systemd-coredump@.service</filename></para>
<para><filename>systemd-coredump.socket</filename></para>
</refsynopsisdiv>
<refsect1>
<title>Description</title>
- <para><command>systemd-coredump</command> is a system service that can acquire core dumps
- from the kernel and handle them in various ways.</para>
+ <para><filename>systemd-coredump@.service</filename> is a system service that can acquire core
+ dumps from the kernel and handle them in various ways. The <command>systemd-coredump</command>
+ executable does the actual work. It is invoked twice: once as the handler by the kernel, and the
+ second time in the <filename>systemd-coredump@.service</filename> to actually write the data to
+ the journal.</para>
+
+ <para>When the kernel invokes <command>systemd-coredump</command> to handle a core dump, it runs
+ in privileged mode, and will connect to the socket created by the
+ <filename>systemd-coredump.socket</filename> unit, which in turn will spawn an unprivileged
+ <filename>systemd-coredump@.service</filename> instance to process the core dump. Hence
+ <filename>systemd-coredump.socket</filename> and <filename>systemd-coredump@.service</filename>
+ are helper units which do the actual processing of core dumps and are subject to normal service
+ management.</para>
<para>Core dumps can be written to the journal or saved as a file. Once saved they can be retrieved
for further processing, for example in
@@ -70,18 +82,20 @@
if possible to the journal and store the core dump itself in an external file in
<filename>/var/lib/systemd/coredump</filename>.</para>
- <para>When the kernel invokes <command>systemd-coredump</command> to handle a core dump,
- it will connect to the socket created by the <filename>systemd-coredump.socket</filename>
- unit, which in turn will spawn a <filename>systemd-coredump@.service</filename> instance
- to process the core dump. Hence <filename>systemd-coredump.socket</filename>
- and <filename>systemd-coredump@.service</filename> are helper units which do the actual
- processing of core dumps and are subject to normal service management.</para>
-
<para>The behavior of a specific program upon reception of a signal is governed by a few
factors which are described in detail in
<citerefentry project='man-pages'><refentrytitle>core</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
In particular, the core dump will only be processed when the related resource limits are sufficient.
</para>
+
+ <para>It is also possible to invoke <command>systemd-coredump</command> with
+ <option>--backtrace</option> option. In this case, <command>systemd-coredump</command> expects
+ a journal entry in the journal
+ <ulink url="http://www.freedesktop.org/wiki/Software/systemd/export">Journal Export Format</ulink>
+ on standard input. The entry should contain a <varname>MESSAGE=</varname> field and any additional
+ metadata fields the caller deems reasonable. <command>systemd-coredump</command> will append
+ additional metadata fields in the same way it does for core dumps received from the kernel. In
+ this mode, no core dump is stored in the journal.</para>
</refsect1>
<refsect1>
@@ -91,7 +105,8 @@
<citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
</para>
- <para>In order to be used <command>systemd-coredump</command> must be configured in
+ <para>In order to be used by the kernel to handle core dumps,
+ <command>systemd-coredump</command> must be configured in
<citerefentry project='man-pages'><refentrytitle>sysctl</refentrytitle><manvolnum>8</manvolnum></citerefentry>
parameter <varname>kernel.core_pattern</varname>. The syntax of this parameter is explained in
<citerefentry project='man-pages'><refentrytitle>core</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
@@ -99,14 +114,20 @@
<varname>kernel.core_pattern</varname> accordingly. This file may be masked or overridden to use a different
setting following normal
<citerefentry><refentrytitle>sysctl.d</refentrytitle><manvolnum>5</manvolnum></citerefentry>
- rules.
- If the sysctl configuration is modified, it must be updated in the kernel before
- it takes effect, see
+ rules. If the sysctl configuration is modified, it must be updated in the kernel before it
+ takes effect, see
<citerefentry project='man-pages'><refentrytitle>sysctl</refentrytitle><manvolnum>8</manvolnum></citerefentry>
and
<citerefentry><refentrytitle>systemd-sysctl</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
</para>
+ <para>In order to by used in the <option>--backtrace</option> mode, an appropriate backtrace
+ handler must be installed on the sender side. For example, in case of
+ <citerefentry><refentrytitle>python</refentrytitle><manvolnum>1</manvolnum></citerefentry>, this
+ means a <varname>sys.excepthook</varname> must installed, see
+ <ulink url="https://github.com/keszybz/systemd-coredump-python">systemd-coredump-python</ulink>.
+ </para>
+
<para>The behavior of <command>systemd-coredump</command> itself is configured through the configuration file
<filename>/etc/systemd/coredump.conf</filename> and corresponding snippets
<filename>/etc/systemd/coredump.conf.d/*.conf</filename>, see
diff --git a/man/systemd-nspawn.xml b/man/systemd-nspawn.xml
index 17c14e9f22..96f8c3a61f 100644
--- a/man/systemd-nspawn.xml
+++ b/man/systemd-nspawn.xml
@@ -474,7 +474,12 @@
<para>Note that the picked UID/GID range is not written to <filename>/etc/passwd</filename> or
<filename>/etc/group</filename>. In fact, the allocation of the range is not stored persistently anywhere,
- except in the file ownership of the files and directories of the container.</para></listitem>
+ except in the file ownership of the files and directories of the container.</para>
+
+ <para>Note that when user namespacing is used file ownership on disk reflects this, and all of the container's
+ files and directories are owned by the container's effective user and group IDs. This means that copying files
+ from and to the container image requires correction of the numeric UID/GID values, according to the UID/GID
+ shift applied.</para></listitem>
</varlistentry>
<varlistentry>
diff --git a/man/systemd.special.xml b/man/systemd.special.xml
index c2672511e3..a81cc3579d 100644
--- a/man/systemd.special.xml
+++ b/man/systemd.special.xml
@@ -47,16 +47,14 @@
<refpurpose>Special systemd units</refpurpose>
</refnamediv>
- <refsynopsisdiv>
- <para><filename>basic.target</filename>,
+ <refsynopsisdiv><para>
+ <!-- sort alphabetically, targets first -->
+ <filename>basic.target</filename>,
<filename>bluetooth.target</filename>,
- <filename>ctrl-alt-del.target</filename>,
- <filename>cryptsetup.target</filename>,
<filename>cryptsetup-pre.target</filename>,
- <filename>dbus.service</filename>,
- <filename>dbus.socket</filename>,
+ <filename>cryptsetup.target</filename>,
+ <filename>ctrl-alt-del.target</filename>,
<filename>default.target</filename>,
- <filename>display-manager.service</filename>,
<filename>emergency.target</filename>,
<filename>exit.target</filename>,
<filename>final.target</filename>,
@@ -66,25 +64,26 @@
<filename>hibernate.target</filename>,
<filename>hybrid-sleep.target</filename>,
<filename>initrd-fs.target</filename>,
+ <filename>initrd-root-device.target</filename>,
+ <filename>initrd-root-fs.target</filename>,
<filename>kbrequest.target</filename>,
<filename>kexec.target</filename>,
- <filename>local-fs.target</filename>,
<filename>local-fs-pre.target</filename>,
+ <filename>local-fs.target</filename>,
+ <filename>machines.target</filename>
<filename>multi-user.target</filename>,
- <filename>network.target</filename>,
<filename>network-online.target</filename>,
<filename>network-pre.target</filename>,
+ <filename>network.target</filename>,
<filename>nss-lookup.target</filename>,
<filename>nss-user-lookup.target</filename>,
<filename>paths.target</filename>,
<filename>poweroff.target</filename>,
<filename>printer.target</filename>,
<filename>reboot.target</filename>,
- <filename>remote-fs.target</filename>,
<filename>remote-fs-pre.target</filename>,
+ <filename>remote-fs.target</filename>,
<filename>rescue.target</filename>,
- <filename>initrd-root-device.target</filename>,
- <filename>initrd-root-fs.target</filename>,
<filename>rpcbind.target</filename>,
<filename>runlevel2.target</filename>,
<filename>runlevel3.target</filename>,
@@ -102,21 +101,27 @@
<filename>sysinit.target</filename>,
<filename>syslog.socket</filename>,
<filename>system-update.target</filename>,
- <filename>system-update-cleanup.service</filename>,
<filename>time-sync.target</filename>,
<filename>timers.target</filename>,
<filename>umount.target</filename>,
+ <!-- slices -->
<filename>-.slice</filename>,
<filename>system.slice</filename>,
<filename>user.slice</filename>,
- <filename>machine.slice</filename></para>
- </refsynopsisdiv>
+ <filename>machine.slice</filename>,
+ <!-- the rest -->
+ <filename>dbus.service</filename>,
+ <filename>dbus.socket</filename>,
+ <filename>display-manager.service</filename>,
+ <filename>system-update-cleanup.service</filename>
+ </para></refsynopsisdiv>
<refsect1>
<title>Description</title>
- <para>A few units are treated specially by systemd. They have
- special internal semantics and cannot be renamed.</para>
+ <para>A few units are treated specially by systemd. Many of them have
+ special internal semantics and cannot be renamed, while others simply
+ have a standard meaning and should be present on all systems.</para>
</refsect1>
<refsect1>
@@ -349,6 +354,14 @@
</listitem>
</varlistentry>
<varlistentry>
+ <term><filename>machines.target</filename></term>
+ <listitem>
+ <para>A standard target unit for starting all the containers
+ and other virtual machines. See <filename>systemd-nspawn@.service</filename>
+ for an example.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
<term><filename>multi-user.target</filename></term>
<listitem>
<para>A special target unit for setting up a multi-user
diff --git a/rules/60-persistent-storage.rules b/rules/60-persistent-storage.rules
index 28e41ea968..4a33ad813f 100644
--- a/rules/60-persistent-storage.rules
+++ b/rules/60-persistent-storage.rules
@@ -20,6 +20,7 @@ KERNEL=="nvme*[0-9]n*[0-9]", ATTR{wwid}=="?*", SYMLINK+="disk/by-id/nvme-$attr{w
KERNEL=="nvme*[0-9]n*[0-9]p*[0-9]", ENV{DEVTYPE}=="partition", ATTRS{wwid}=="?*", SYMLINK+="disk/by-id/nvme-$attr{wwid}-part%n"
KERNEL=="nvme*[0-9]n*[0-9]", ENV{DEVTYPE}=="disk", ATTRS{serial}=="?*", ENV{ID_SERIAL_SHORT}="$attr{serial}"
+KERNEL=="nvme*[0-9]n*[0-9]", ENV{DEVTYPE}=="disk", ATTRS{wwid}=="?*", ENV{ID_WWN}="$attr{wwid}"
KERNEL=="nvme*[0-9]n*[0-9]", ENV{DEVTYPE}=="disk", ATTRS{model}=="?*", ENV{ID_SERIAL_SHORT}=="?*", ENV{ID_SERIAL}="$attr{model}_$env{ID_SERIAL_SHORT}", SYMLINK+="disk/by-id/nvme-$env{ID_SERIAL}"
KERNEL=="nvme*[0-9]n*[0-9]p*[0-9]", ENV{DEVTYPE}=="partition", ATTRS{serial}=="?*", ENV{ID_SERIAL_SHORT}="$attr{serial}"
diff --git a/src/basic/btrfs-util.c b/src/basic/btrfs-util.c
index 5f9e21dcba..5505499312 100644
--- a/src/basic/btrfs-util.c
+++ b/src/basic/btrfs-util.c
@@ -1737,7 +1737,7 @@ int btrfs_subvol_snapshot_fd(int old_fd, const char *new_path, BtrfsSnapshotFlag
} else if (r < 0)
return r;
- r = copy_directory_fd(old_fd, new_path, true);
+ r = copy_directory_fd(old_fd, new_path, COPY_MERGE|COPY_REFLINK);
if (r < 0)
goto fallback_fail;
diff --git a/src/basic/copy.c b/src/basic/copy.c
index e9a7efd232..6273ac9b47 100644
--- a/src/basic/copy.c
+++ b/src/basic/copy.c
@@ -45,6 +45,7 @@
#include "strv.h"
#include "time-util.h"
#include "umask-util.h"
+#include "user-util.h"
#include "xattr-util.h"
#define COPY_BUFFER_SIZE (16*1024u)
@@ -68,7 +69,7 @@ static ssize_t try_copy_file_range(int fd_in, loff_t *off_in,
return -errno;
}
-int copy_bytes(int fdf, int fdt, uint64_t max_bytes, bool try_reflink) {
+int copy_bytes(int fdf, int fdt, uint64_t max_bytes, CopyFlags copy_flags) {
bool try_cfr = true, try_sendfile = true, try_splice = true;
int r;
size_t m = SSIZE_MAX; /* that is the maximum that sendfile and c_f_r accept */
@@ -77,7 +78,7 @@ int copy_bytes(int fdf, int fdt, uint64_t max_bytes, bool try_reflink) {
assert(fdt >= 0);
/* Try btrfs reflinks first. */
- if (try_reflink &&
+ if ((copy_flags & COPY_REFLINK) &&
max_bytes == (uint64_t) -1 &&
lseek(fdf, 0, SEEK_CUR) == 0 &&
lseek(fdt, 0, SEEK_CUR) == 0) {
@@ -176,7 +177,16 @@ int copy_bytes(int fdf, int fdt, uint64_t max_bytes, bool try_reflink) {
return 0; /* return 0 if we hit EOF earlier than the size limit */
}
-static int fd_copy_symlink(int df, const char *from, const struct stat *st, int dt, const char *to) {
+static int fd_copy_symlink(
+ int df,
+ const char *from,
+ const struct stat *st,
+ int dt,
+ const char *to,
+ uid_t override_uid,
+ gid_t override_gid,
+ CopyFlags copy_flags) {
+
_cleanup_free_ char *target = NULL;
int r;
@@ -191,13 +201,25 @@ static int fd_copy_symlink(int df, const char *from, const struct stat *st, int
if (symlinkat(target, dt, to) < 0)
return -errno;
- if (fchownat(dt, to, st->st_uid, st->st_gid, AT_SYMLINK_NOFOLLOW) < 0)
+ if (fchownat(dt, to,
+ uid_is_valid(override_uid) ? override_uid : st->st_uid,
+ gid_is_valid(override_gid) ? override_gid : st->st_gid,
+ AT_SYMLINK_NOFOLLOW) < 0)
return -errno;
return 0;
}
-static int fd_copy_regular(int df, const char *from, const struct stat *st, int dt, const char *to) {
+static int fd_copy_regular(
+ int df,
+ const char *from,
+ const struct stat *st,
+ int dt,
+ const char *to,
+ uid_t override_uid,
+ gid_t override_gid,
+ CopyFlags copy_flags) {
+
_cleanup_close_ int fdf = -1, fdt = -1;
struct timespec ts[2];
int r, q;
@@ -214,13 +236,15 @@ static int fd_copy_regular(int df, const char *from, const struct stat *st, int
if (fdt < 0)
return -errno;
- r = copy_bytes(fdf, fdt, (uint64_t) -1, true);
+ r = copy_bytes(fdf, fdt, (uint64_t) -1, copy_flags);
if (r < 0) {
unlinkat(dt, to, 0);
return r;
}
- if (fchown(fdt, st->st_uid, st->st_gid) < 0)
+ if (fchown(fdt,
+ uid_is_valid(override_uid) ? override_uid : st->st_uid,
+ gid_is_valid(override_gid) ? override_gid : st->st_gid) < 0)
r = -errno;
if (fchmod(fdt, st->st_mode & 07777) < 0)
@@ -229,7 +253,6 @@ static int fd_copy_regular(int df, const char *from, const struct stat *st, int
ts[0] = st->st_atim;
ts[1] = st->st_mtim;
(void) futimens(fdt, ts);
-
(void) copy_xattr(fdf, fdt);
q = close(fdt);
@@ -243,7 +266,15 @@ static int fd_copy_regular(int df, const char *from, const struct stat *st, int
return r;
}
-static int fd_copy_fifo(int df, const char *from, const struct stat *st, int dt, const char *to) {
+static int fd_copy_fifo(
+ int df,
+ const char *from,
+ const struct stat *st,
+ int dt,
+ const char *to,
+ uid_t override_uid,
+ gid_t override_gid,
+ CopyFlags copy_flags) {
int r;
assert(from);
@@ -254,7 +285,10 @@ static int fd_copy_fifo(int df, const char *from, const struct stat *st, int dt,
if (r < 0)
return -errno;
- if (fchownat(dt, to, st->st_uid, st->st_gid, AT_SYMLINK_NOFOLLOW) < 0)
+ if (fchownat(dt, to,
+ uid_is_valid(override_uid) ? override_uid : st->st_uid,
+ gid_is_valid(override_gid) ? override_gid : st->st_gid,
+ AT_SYMLINK_NOFOLLOW) < 0)
r = -errno;
if (fchmodat(dt, to, st->st_mode & 07777, 0) < 0)
@@ -263,7 +297,15 @@ static int fd_copy_fifo(int df, const char *from, const struct stat *st, int dt,
return r;
}
-static int fd_copy_node(int df, const char *from, const struct stat *st, int dt, const char *to) {
+static int fd_copy_node(
+ int df,
+ const char *from,
+ const struct stat *st,
+ int dt,
+ const char *to,
+ uid_t override_uid,
+ gid_t override_gid,
+ CopyFlags copy_flags) {
int r;
assert(from);
@@ -274,7 +316,10 @@ static int fd_copy_node(int df, const char *from, const struct stat *st, int dt,
if (r < 0)
return -errno;
- if (fchownat(dt, to, st->st_uid, st->st_gid, AT_SYMLINK_NOFOLLOW) < 0)
+ if (fchownat(dt, to,
+ uid_is_valid(override_uid) ? override_uid : st->st_uid,
+ gid_is_valid(override_gid) ? override_gid : st->st_gid,
+ AT_SYMLINK_NOFOLLOW) < 0)
r = -errno;
if (fchmodat(dt, to, st->st_mode & 07777, 0) < 0)
@@ -290,7 +335,9 @@ static int fd_copy_directory(
int dt,
const char *to,
dev_t original_device,
- bool merge) {
+ uid_t override_uid,
+ gid_t override_gid,
+ CopyFlags copy_flags) {
_cleanup_close_ int fdf = -1, fdt = -1;
_cleanup_closedir_ DIR *d = NULL;
@@ -316,7 +363,7 @@ static int fd_copy_directory(
r = mkdirat(dt, to, st->st_mode & 07777);
if (r >= 0)
created = true;
- else if (errno == EEXIST && merge)
+ else if (errno == EEXIST && (copy_flags & COPY_MERGE))
created = false;
else
return -errno;
@@ -343,19 +390,19 @@ static int fd_copy_directory(
continue;
if (S_ISREG(buf.st_mode))
- q = fd_copy_regular(dirfd(d), de->d_name, &buf, fdt, de->d_name);
+ q = fd_copy_regular(dirfd(d), de->d_name, &buf, fdt, de->d_name, override_uid, override_gid, copy_flags);
else if (S_ISDIR(buf.st_mode))
- q = fd_copy_directory(dirfd(d), de->d_name, &buf, fdt, de->d_name, original_device, merge);
+ q = fd_copy_directory(dirfd(d), de->d_name, &buf, fdt, de->d_name, original_device, override_uid, override_gid, copy_flags);
else if (S_ISLNK(buf.st_mode))
- q = fd_copy_symlink(dirfd(d), de->d_name, &buf, fdt, de->d_name);
+ q = fd_copy_symlink(dirfd(d), de->d_name, &buf, fdt, de->d_name, override_uid, override_gid, copy_flags);
else if (S_ISFIFO(buf.st_mode))
- q = fd_copy_fifo(dirfd(d), de->d_name, &buf, fdt, de->d_name);
+ q = fd_copy_fifo(dirfd(d), de->d_name, &buf, fdt, de->d_name, override_uid, override_gid, copy_flags);
else if (S_ISBLK(buf.st_mode) || S_ISCHR(buf.st_mode) || S_ISSOCK(buf.st_mode))
- q = fd_copy_node(dirfd(d), de->d_name, &buf, fdt, de->d_name);
+ q = fd_copy_node(dirfd(d), de->d_name, &buf, fdt, de->d_name, override_uid, override_gid, copy_flags);
else
q = -EOPNOTSUPP;
- if (q == -EEXIST && merge)
+ if (q == -EEXIST && (copy_flags & COPY_MERGE))
q = 0;
if (q < 0)
@@ -368,7 +415,9 @@ static int fd_copy_directory(
st->st_mtim
};
- if (fchown(fdt, st->st_uid, st->st_gid) < 0)
+ if (fchown(fdt,
+ uid_is_valid(override_uid) ? override_uid : st->st_uid,
+ gid_is_valid(override_gid) ? override_gid : st->st_gid) < 0)
r = -errno;
if (fchmod(fdt, st->st_mode & 07777) < 0)
@@ -381,7 +430,7 @@ static int fd_copy_directory(
return r;
}
-int copy_tree_at(int fdf, const char *from, int fdt, const char *to, bool merge) {
+int copy_tree_at(int fdf, const char *from, int fdt, const char *to, uid_t override_uid, gid_t override_gid, CopyFlags copy_flags) {
struct stat st;
assert(from);
@@ -391,24 +440,24 @@ int copy_tree_at(int fdf, const char *from, int fdt, const char *to, bool merge)
return -errno;
if (S_ISREG(st.st_mode))
- return fd_copy_regular(fdf, from, &st, fdt, to);
+ return fd_copy_regular(fdf, from, &st, fdt, to, override_uid, override_gid, copy_flags);
else if (S_ISDIR(st.st_mode))
- return fd_copy_directory(fdf, from, &st, fdt, to, st.st_dev, merge);
+ return fd_copy_directory(fdf, from, &st, fdt, to, st.st_dev, override_uid, override_gid, copy_flags);
else if (S_ISLNK(st.st_mode))
- return fd_copy_symlink(fdf, from, &st, fdt, to);
+ return fd_copy_symlink(fdf, from, &st, fdt, to, override_uid, override_gid, copy_flags);
else if (S_ISFIFO(st.st_mode))
- return fd_copy_fifo(fdf, from, &st, fdt, to);
+ return fd_copy_fifo(fdf, from, &st, fdt, to, override_uid, override_gid, copy_flags);
else if (S_ISBLK(st.st_mode) || S_ISCHR(st.st_mode) || S_ISSOCK(st.st_mode))
- return fd_copy_node(fdf, from, &st, fdt, to);
+ return fd_copy_node(fdf, from, &st, fdt, to, override_uid, override_gid, copy_flags);
else
return -EOPNOTSUPP;
}
-int copy_tree(const char *from, const char *to, bool merge) {
- return copy_tree_at(AT_FDCWD, from, AT_FDCWD, to, merge);
+int copy_tree(const char *from, const char *to, uid_t override_uid, gid_t override_gid, CopyFlags copy_flags) {
+ return copy_tree_at(AT_FDCWD, from, AT_FDCWD, to, override_uid, override_gid, copy_flags);
}
-int copy_directory_fd(int dirfd, const char *to, bool merge) {
+int copy_directory_fd(int dirfd, const char *to, CopyFlags copy_flags) {
struct stat st;
assert(dirfd >= 0);
@@ -420,10 +469,10 @@ int copy_directory_fd(int dirfd, const char *to, bool merge) {
if (!S_ISDIR(st.st_mode))
return -ENOTDIR;
- return fd_copy_directory(dirfd, NULL, &st, AT_FDCWD, to, st.st_dev, merge);
+ return fd_copy_directory(dirfd, NULL, &st, AT_FDCWD, to, st.st_dev, UID_INVALID, GID_INVALID, copy_flags);
}
-int copy_directory(const char *from, const char *to, bool merge) {
+int copy_directory(const char *from, const char *to, CopyFlags copy_flags) {
struct stat st;
assert(from);
@@ -435,10 +484,10 @@ int copy_directory(const char *from, const char *to, bool merge) {
if (!S_ISDIR(st.st_mode))
return -ENOTDIR;
- return fd_copy_directory(AT_FDCWD, from, &st, AT_FDCWD, to, st.st_dev, merge);
+ return fd_copy_directory(AT_FDCWD, from, &st, AT_FDCWD, to, st.st_dev, UID_INVALID, GID_INVALID, copy_flags);
}
-int copy_file_fd(const char *from, int fdt, bool try_reflink) {
+int copy_file_fd(const char *from, int fdt, CopyFlags copy_flags) {
_cleanup_close_ int fdf = -1;
int r;
@@ -449,7 +498,7 @@ int copy_file_fd(const char *from, int fdt, bool try_reflink) {
if (fdf < 0)
return -errno;
- r = copy_bytes(fdf, fdt, (uint64_t) -1, try_reflink);
+ r = copy_bytes(fdf, fdt, (uint64_t) -1, copy_flags);
(void) copy_times(fdf, fdt);
(void) copy_xattr(fdf, fdt);
@@ -457,7 +506,7 @@ int copy_file_fd(const char *from, int fdt, bool try_reflink) {
return r;
}
-int copy_file(const char *from, const char *to, int flags, mode_t mode, unsigned chattr_flags) {
+int copy_file(const char *from, const char *to, int flags, mode_t mode, unsigned chattr_flags, CopyFlags copy_flags) {
int fdt = -1, r;
assert(from);
@@ -472,7 +521,7 @@ int copy_file(const char *from, const char *to, int flags, mode_t mode, unsigned
if (chattr_flags != 0)
(void) chattr_fd(fdt, chattr_flags, (unsigned) -1);
- r = copy_file_fd(from, fdt, true);
+ r = copy_file_fd(from, fdt, copy_flags);
if (r < 0) {
close(fdt);
unlink(to);
@@ -487,7 +536,7 @@ int copy_file(const char *from, const char *to, int flags, mode_t mode, unsigned
return 0;
}
-int copy_file_atomic(const char *from, const char *to, mode_t mode, bool replace, unsigned chattr_flags) {
+int copy_file_atomic(const char *from, const char *to, mode_t mode, unsigned chattr_flags, CopyFlags copy_flags) {
_cleanup_free_ char *t = NULL;
int r;
@@ -498,11 +547,11 @@ int copy_file_atomic(const char *from, const char *to, mode_t mode, bool replace
if (r < 0)
return r;
- r = copy_file(from, t, O_NOFOLLOW|O_EXCL, mode, chattr_flags);
+ r = copy_file(from, t, O_NOFOLLOW|O_EXCL, mode, chattr_flags, copy_flags);
if (r < 0)
return r;
- if (replace) {
+ if (copy_flags & COPY_REPLACE) {
r = renameat(AT_FDCWD, t, AT_FDCWD, to);
if (r < 0)
r = -errno;
diff --git a/src/basic/copy.h b/src/basic/copy.h
index b5d08ebafe..4f3e11423e 100644
--- a/src/basic/copy.h
+++ b/src/basic/copy.h
@@ -24,13 +24,19 @@
#include <stdint.h>
#include <sys/types.h>
-int copy_file_fd(const char *from, int to, bool try_reflink);
-int copy_file(const char *from, const char *to, int flags, mode_t mode, unsigned chattr_flags);
-int copy_file_atomic(const char *from, const char *to, mode_t mode, bool replace, unsigned chattr_flags);
-int copy_tree(const char *from, const char *to, bool merge);
-int copy_tree_at(int fdf, const char *from, int fdt, const char *to, bool merge);
-int copy_directory_fd(int dirfd, const char *to, bool merge);
-int copy_directory(const char *from, const char *to, bool merge);
-int copy_bytes(int fdf, int fdt, uint64_t max_bytes, bool try_reflink);
+typedef enum CopyFlags {
+ COPY_REFLINK = 0x1, /* try to reflink */
+ COPY_MERGE = 0x2, /* merge existing trees with our new one to copy */
+ COPY_REPLACE = 0x4, /* replace an existing file if there's one */
+} CopyFlags;
+
+int copy_file_fd(const char *from, int to, CopyFlags copy_flags);
+int copy_file(const char *from, const char *to, int open_flags, mode_t mode, unsigned chattr_flags, CopyFlags copy_flags);
+int copy_file_atomic(const char *from, const char *to, mode_t mode, unsigned chattr_flags, CopyFlags copy_flags);
+int copy_tree(const char *from, const char *to, uid_t override_uid, gid_t override_gid, CopyFlags copy_flags);
+int copy_tree_at(int fdf, const char *from, int fdt, const char *to, uid_t override_uid, gid_t override_gid, CopyFlags copy_flags);
+int copy_directory_fd(int dirfd, const char *to, CopyFlags copy_flags);
+int copy_directory(const char *from, const char *to, CopyFlags copy_flags);
+int copy_bytes(int fdf, int fdt, uint64_t max_bytes, CopyFlags copy_flags);
int copy_times(int fdf, int fdt);
int copy_xattr(int fdf, int fdt);
diff --git a/src/basic/hostname-util.c b/src/basic/hostname-util.c
index e44a357287..a94037b303 100644
--- a/src/basic/hostname-util.c
+++ b/src/basic/hostname-util.c
@@ -55,7 +55,7 @@ char* gethostname_malloc(void) {
assert_se(uname(&u) >= 0);
if (isempty(u.nodename) || streq(u.nodename, "(none)"))
- return strdup(u.sysname);
+ return strdup(FALLBACK_HOSTNAME);
return strdup(u.nodename);
}
diff --git a/src/basic/journal-importer.c b/src/basic/journal-importer.c
new file mode 100644
index 0000000000..4c13e46a49
--- /dev/null
+++ b/src/basic/journal-importer.c
@@ -0,0 +1,481 @@
+/***
+ This file is part of systemd.
+
+ Copyright 2014 Zbigniew Jędrzejewski-Szmek
+
+ 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 <unistd.h>
+
+#include "alloc-util.h"
+#include "journal-importer.h"
+#include "fd-util.h"
+#include "parse-util.h"
+#include "string-util.h"
+
+enum {
+ IMPORTER_STATE_LINE = 0, /* waiting to read, or reading line */
+ IMPORTER_STATE_DATA_START, /* reading binary data header */
+ IMPORTER_STATE_DATA, /* reading binary data */
+ IMPORTER_STATE_DATA_FINISH, /* expecting newline */
+ IMPORTER_STATE_EOF, /* done */
+};
+
+static int iovw_put(struct iovec_wrapper *iovw, void* data, size_t len) {
+ if (!GREEDY_REALLOC(iovw->iovec, iovw->size_bytes, iovw->count + 1))
+ return log_oom();
+
+ iovw->iovec[iovw->count++] = (struct iovec) {data, len};
+ return 0;
+}
+
+static void iovw_free_contents(struct iovec_wrapper *iovw) {
+ iovw->iovec = mfree(iovw->iovec);
+ iovw->size_bytes = iovw->count = 0;
+}
+
+static void iovw_rebase(struct iovec_wrapper *iovw, char *old, char *new) {
+ size_t i;
+
+ for (i = 0; i < iovw->count; i++)
+ iovw->iovec[i].iov_base = (char*) iovw->iovec[i].iov_base - old + new;
+}
+
+size_t iovw_size(struct iovec_wrapper *iovw) {
+ size_t n = 0, i;
+
+ for (i = 0; i < iovw->count; i++)
+ n += iovw->iovec[i].iov_len;
+
+ return n;
+}
+
+void journal_importer_cleanup(JournalImporter *imp) {
+ if (imp->fd >= 0 && !imp->passive_fd) {
+ log_debug("Closing %s (fd=%d)", imp->name ?: "importer", imp->fd);
+ safe_close(imp->fd);
+ }
+
+ free(imp->buf);
+ iovw_free_contents(&imp->iovw);
+}
+
+static char* realloc_buffer(JournalImporter *imp, size_t size) {
+ char *b, *old = imp->buf;
+
+ b = GREEDY_REALLOC(imp->buf, imp->size, size);
+ if (!b)
+ return NULL;
+
+ iovw_rebase(&imp->iovw, old, imp->buf);
+
+ return b;
+}
+
+static int get_line(JournalImporter *imp, char **line, size_t *size) {
+ ssize_t n;
+ char *c = NULL;
+
+ assert(imp);
+ assert(imp->state == IMPORTER_STATE_LINE);
+ assert(imp->offset <= imp->filled);
+ assert(imp->filled <= imp->size);
+ assert(imp->buf == NULL || imp->size > 0);
+ assert(imp->fd >= 0);
+
+ for (;;) {
+ if (imp->buf) {
+ size_t start = MAX(imp->scanned, imp->offset);
+
+ c = memchr(imp->buf + start, '\n',
+ imp->filled - start);
+ if (c != NULL)
+ break;
+ }
+
+ imp->scanned = imp->filled;
+ if (imp->scanned >= DATA_SIZE_MAX) {
+ log_error("Entry is bigger than %u bytes.", DATA_SIZE_MAX);
+ return -E2BIG;
+ }
+
+ if (imp->passive_fd)
+ /* we have to wait for some data to come to us */
+ return -EAGAIN;
+
+ /* We know that imp->filled is at most DATA_SIZE_MAX, so if
+ we reallocate it, we'll increase the size at least a bit. */
+ assert_cc(DATA_SIZE_MAX < ENTRY_SIZE_MAX);
+ if (imp->size - imp->filled < LINE_CHUNK &&
+ !realloc_buffer(imp, MIN(imp->filled + LINE_CHUNK, ENTRY_SIZE_MAX)))
+ return log_oom();
+
+ assert(imp->buf);
+ assert(imp->size - imp->filled >= LINE_CHUNK ||
+ imp->size == ENTRY_SIZE_MAX);
+
+ n = read(imp->fd,
+ imp->buf + imp->filled,
+ imp->size - imp->filled);
+ if (n < 0) {
+ if (errno != EAGAIN)
+ log_error_errno(errno, "read(%d, ..., %zu): %m",
+ imp->fd,
+ imp->size - imp->filled);
+ return -errno;
+ } else if (n == 0)
+ return 0;
+
+ imp->filled += n;
+ }
+
+ *line = imp->buf + imp->offset;
+ *size = c + 1 - imp->buf - imp->offset;
+ imp->offset += *size;
+
+ return 1;
+}
+
+static int fill_fixed_size(JournalImporter *imp, void **data, size_t size) {
+
+ assert(imp);
+ assert(imp->state == IMPORTER_STATE_DATA_START ||
+ imp->state == IMPORTER_STATE_DATA ||
+ imp->state == IMPORTER_STATE_DATA_FINISH);
+ assert(size <= DATA_SIZE_MAX);
+ assert(imp->offset <= imp->filled);
+ assert(imp->filled <= imp->size);
+ assert(imp->buf != NULL || imp->size == 0);
+ assert(imp->buf == NULL || imp->size > 0);
+ assert(imp->fd >= 0);
+ assert(data);
+
+ while (imp->filled - imp->offset < size) {
+ int n;
+
+ if (imp->passive_fd)
+ /* we have to wait for some data to come to us */
+ return -EAGAIN;
+
+ if (!realloc_buffer(imp, imp->offset + size))
+ return log_oom();
+
+ n = read(imp->fd, imp->buf + imp->filled,
+ imp->size - imp->filled);
+ if (n < 0) {
+ if (errno != EAGAIN)
+ log_error_errno(errno, "read(%d, ..., %zu): %m", imp->fd,
+ imp->size - imp->filled);
+ return -errno;
+ } else if (n == 0)
+ return 0;
+
+ imp->filled += n;
+ }
+
+ *data = imp->buf + imp->offset;
+ imp->offset += size;
+
+ return 1;
+}
+
+static int get_data_size(JournalImporter *imp) {
+ int r;
+ void *data;
+
+ assert(imp);
+ assert(imp->state == IMPORTER_STATE_DATA_START);
+ assert(imp->data_size == 0);
+
+ r = fill_fixed_size(imp, &data, sizeof(uint64_t));
+ if (r <= 0)
+ return r;
+
+ imp->data_size = le64toh( *(uint64_t *) data );
+ if (imp->data_size > DATA_SIZE_MAX) {
+ log_error("Stream declares field with size %zu > DATA_SIZE_MAX = %u",
+ imp->data_size, DATA_SIZE_MAX);
+ return -EINVAL;
+ }
+ if (imp->data_size == 0)
+ log_warning("Binary field with zero length");
+
+ return 1;
+}
+
+static int get_data_data(JournalImporter *imp, void **data) {
+ int r;
+
+ assert(imp);
+ assert(data);
+ assert(imp->state == IMPORTER_STATE_DATA);
+
+ r = fill_fixed_size(imp, data, imp->data_size);
+ if (r <= 0)
+ return r;
+
+ return 1;
+}
+
+static int get_data_newline(JournalImporter *imp) {
+ int r;
+ char *data;
+
+ assert(imp);
+ assert(imp->state == IMPORTER_STATE_DATA_FINISH);
+
+ r = fill_fixed_size(imp, (void**) &data, 1);
+ if (r <= 0)
+ return r;
+
+ assert(data);
+ if (*data != '\n') {
+ log_error("expected newline, got '%c'", *data);
+ return -EINVAL;
+ }
+
+ return 1;
+}
+
+static int process_dunder(JournalImporter *imp, char *line, size_t n) {
+ const char *timestamp;
+ int r;
+
+ assert(line);
+ assert(n > 0);
+ assert(line[n-1] == '\n');
+
+ /* XXX: is it worth to support timestamps in extended format?
+ * We don't produce them, but who knows... */
+
+ timestamp = startswith(line, "__CURSOR=");
+ if (timestamp)
+ /* ignore __CURSOR */
+ return 1;
+
+ timestamp = startswith(line, "__REALTIME_TIMESTAMP=");
+ if (timestamp) {
+ long long unsigned x;
+ line[n-1] = '\0';
+ r = safe_atollu(timestamp, &x);
+ if (r < 0)
+ log_warning("Failed to parse __REALTIME_TIMESTAMP: '%s'", timestamp);
+ else
+ imp->ts.realtime = x;
+ return r < 0 ? r : 1;
+ }
+
+ timestamp = startswith(line, "__MONOTONIC_TIMESTAMP=");
+ if (timestamp) {
+ long long unsigned x;
+ line[n-1] = '\0';
+ r = safe_atollu(timestamp, &x);
+ if (r < 0)
+ log_warning("Failed to parse __MONOTONIC_TIMESTAMP: '%s'", timestamp);
+ else
+ imp->ts.monotonic = x;
+ return r < 0 ? r : 1;
+ }
+
+ timestamp = startswith(line, "__");
+ if (timestamp) {
+ log_notice("Unknown dunder line %s", line);
+ return 1;
+ }
+
+ /* no dunder */
+ return 0;
+}
+
+int journal_importer_process_data(JournalImporter *imp) {
+ int r;
+
+ switch(imp->state) {
+ case IMPORTER_STATE_LINE: {
+ char *line, *sep;
+ size_t n = 0;
+
+ assert(imp->data_size == 0);
+
+ r = get_line(imp, &line, &n);
+ if (r < 0)
+ return r;
+ if (r == 0) {
+ imp->state = IMPORTER_STATE_EOF;
+ return r;
+ }
+ assert(n > 0);
+ assert(line[n-1] == '\n');
+
+ if (n == 1) {
+ log_trace("Received empty line, event is ready");
+ return 1;
+ }
+
+ r = process_dunder(imp, line, n);
+ if (r != 0)
+ return r < 0 ? r : 0;
+
+ /* MESSAGE=xxx\n
+ or
+ COREDUMP\n
+ LLLLLLLL0011223344...\n
+ */
+ sep = memchr(line, '=', n);
+ if (sep) {
+ /* chomp newline */
+ n--;
+
+ r = iovw_put(&imp->iovw, line, n);
+ if (r < 0)
+ return r;
+ } else {
+ /* replace \n with = */
+ line[n-1] = '=';
+
+ imp->field_len = n;
+ imp->state = IMPORTER_STATE_DATA_START;
+
+ /* we cannot put the field in iovec until we have all data */
+ }
+
+ log_trace("Received: %.*s (%s)", (int) n, line, sep ? "text" : "binary");
+
+ return 0; /* continue */
+ }
+
+ case IMPORTER_STATE_DATA_START:
+ assert(imp->data_size == 0);
+
+ r = get_data_size(imp);
+ // log_debug("get_data_size() -> %d", r);
+ if (r < 0)
+ return r;
+ if (r == 0) {
+ imp->state = IMPORTER_STATE_EOF;
+ return 0;
+ }
+
+ imp->state = imp->data_size > 0 ?
+ IMPORTER_STATE_DATA : IMPORTER_STATE_DATA_FINISH;
+
+ return 0; /* continue */
+
+ case IMPORTER_STATE_DATA: {
+ void *data;
+ char *field;
+
+ assert(imp->data_size > 0);
+
+ r = get_data_data(imp, &data);
+ // log_debug("get_data_data() -> %d", r);
+ if (r < 0)
+ return r;
+ if (r == 0) {
+ imp->state = IMPORTER_STATE_EOF;
+ return 0;
+ }
+
+ assert(data);
+
+ field = (char*) data - sizeof(uint64_t) - imp->field_len;
+ memmove(field + sizeof(uint64_t), field, imp->field_len);
+
+ r = iovw_put(&imp->iovw, field + sizeof(uint64_t), imp->field_len + imp->data_size);
+ if (r < 0)
+ return r;
+
+ imp->state = IMPORTER_STATE_DATA_FINISH;
+
+ return 0; /* continue */
+ }
+
+ case IMPORTER_STATE_DATA_FINISH:
+ r = get_data_newline(imp);
+ // log_debug("get_data_newline() -> %d", r);
+ if (r < 0)
+ return r;
+ if (r == 0) {
+ imp->state = IMPORTER_STATE_EOF;
+ return 0;
+ }
+
+ imp->data_size = 0;
+ imp->state = IMPORTER_STATE_LINE;
+
+ return 0; /* continue */
+ default:
+ assert_not_reached("wtf?");
+ }
+}
+
+int journal_importer_push_data(JournalImporter *imp, const char *data, size_t size) {
+ assert(imp);
+ assert(imp->state != IMPORTER_STATE_EOF);
+
+ if (!realloc_buffer(imp, imp->filled + size)) {
+ log_error("Failed to store received data of size %zu "
+ "(in addition to existing %zu bytes with %zu filled): %s",
+ size, imp->size, imp->filled, strerror(ENOMEM));
+ return -ENOMEM;
+ }
+
+ memcpy(imp->buf + imp->filled, data, size);
+ imp->filled += size;
+
+ return 0;
+}
+
+void journal_importer_drop_iovw(JournalImporter *imp) {
+ size_t remain, target;
+
+ /* This function drops processed data that along with the iovw that points at it */
+
+ iovw_free_contents(&imp->iovw);
+
+ /* possibly reset buffer position */
+ remain = imp->filled - imp->offset;
+
+ if (remain == 0) /* no brainer */
+ imp->offset = imp->scanned = imp->filled = 0;
+ else if (imp->offset > imp->size - imp->filled &&
+ imp->offset > remain) {
+ memcpy(imp->buf, imp->buf + imp->offset, remain);
+ imp->offset = imp->scanned = 0;
+ imp->filled = remain;
+ }
+
+ target = imp->size;
+ while (target > 16 * LINE_CHUNK && imp->filled < target / 2)
+ target /= 2;
+ if (target < imp->size) {
+ char *tmp;
+
+ tmp = realloc(imp->buf, target);
+ if (!tmp)
+ log_warning("Failed to reallocate buffer to (smaller) size %zu",
+ target);
+ else {
+ log_debug("Reallocated buffer from %zu to %zu bytes",
+ imp->size, target);
+ imp->buf = tmp;
+ imp->size = target;
+ }
+ }
+}
+
+bool journal_importer_eof(const JournalImporter *imp) {
+ return imp->state == IMPORTER_STATE_EOF;
+}
diff --git a/src/basic/journal-importer.h b/src/basic/journal-importer.h
new file mode 100644
index 0000000000..b3e308dd6d
--- /dev/null
+++ b/src/basic/journal-importer.h
@@ -0,0 +1,70 @@
+/***
+ This file is part of systemd.
+
+ Copyright 2016 Zbigniew Jędrzejewski-Szmek
+
+ 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/>.
+***/
+
+#pragma once
+
+#include <stddef.h>
+#include <stdbool.h>
+#include <sys/uio.h>
+
+#include "time-util.h"
+
+/* Make sure not to make this smaller than the maximum coredump size.
+ * See COREDUMP_MAX in coredump.c */
+#define ENTRY_SIZE_MAX (1024*1024*770u)
+#define DATA_SIZE_MAX (1024*1024*768u)
+#define LINE_CHUNK 8*1024u
+
+struct iovec_wrapper {
+ struct iovec *iovec;
+ size_t size_bytes;
+ size_t count;
+};
+
+size_t iovw_size(struct iovec_wrapper *iovw);
+
+typedef struct JournalImporter {
+ int fd;
+ bool passive_fd;
+ char *name;
+
+ char *buf;
+ size_t size; /* total size of the buffer */
+ size_t offset; /* offset to the beginning of live data in the buffer */
+ size_t scanned; /* number of bytes since the beginning of data without a newline */
+ size_t filled; /* total number of bytes in the buffer */
+
+ size_t field_len; /* used for binary fields: the field name length */
+ size_t data_size; /* and the size of the binary data chunk being processed */
+
+ struct iovec_wrapper iovw;
+
+ int state;
+ dual_timestamp ts;
+} JournalImporter;
+
+void journal_importer_cleanup(JournalImporter *);
+int journal_importer_process_data(JournalImporter *);
+int journal_importer_push_data(JournalImporter *, const char *data, size_t size);
+void journal_importer_drop_iovw(JournalImporter *);
+bool journal_importer_eof(const JournalImporter *);
+
+static inline size_t journal_importer_bytes_remaining(const JournalImporter *imp) {
+ return imp->filled;
+}
diff --git a/src/basic/log.c b/src/basic/log.c
index 1362b1c086..e6d2d61d72 100644
--- a/src/basic/log.c
+++ b/src/basic/log.c
@@ -1164,7 +1164,7 @@ int log_syntax_internal(
return log_struct_internal(
level, error,
file, line, func,
- LOG_MESSAGE_ID(SD_MESSAGE_INVALID_CONFIGURATION),
+ "MESSAGE_ID=" SD_MESSAGE_INVALID_CONFIGURATION_STR,
"CONFIG_FILE=%s", config_file,
"CONFIG_LINE=%u", config_line,
LOG_MESSAGE("%s:%u: %s", config_file, config_line, buffer),
diff --git a/src/basic/log.h b/src/basic/log.h
index 2afee20bb5..9cacbb6b70 100644
--- a/src/basic/log.h
+++ b/src/basic/log.h
@@ -214,9 +214,8 @@ bool log_on_console(void) _pure_;
const char *log_target_to_string(LogTarget target) _const_;
LogTarget log_target_from_string(const char *s) _pure_;
-/* Helpers to prepare various fields for structured logging */
+/* Helper to prepare various field for structured logging */
#define LOG_MESSAGE(fmt, ...) "MESSAGE=" fmt, ##__VA_ARGS__
-#define LOG_MESSAGE_ID(x) "MESSAGE_ID=" SD_ID128_FORMAT_STR, SD_ID128_FORMAT_VAL(x)
void log_received_signal(int level, const struct signalfd_siginfo *si);
diff --git a/src/basic/virt.c b/src/basic/virt.c
index 830dc655e3..9d615da681 100644
--- a/src/basic/virt.c
+++ b/src/basic/virt.c
@@ -329,8 +329,10 @@ int detect_vm(void) {
* -> Third try to detect from dmi. */
dmi = detect_vm_dmi();
- if (dmi == VIRTUALIZATION_ORACLE)
- return dmi;
+ if (dmi == VIRTUALIZATION_ORACLE) {
+ r = dmi;
+ goto finish;
+ }
r = detect_vm_cpuid();
if (r < 0)
diff --git a/src/core/execute.c b/src/core/execute.c
index 4c2968f971..f455afa962 100644
--- a/src/core/execute.c
+++ b/src/core/execute.c
@@ -2981,7 +2981,7 @@ int exec_spawn(Unit *unit,
log_open();
if (error_message)
log_struct_errno(LOG_ERR, r,
- LOG_MESSAGE_ID(SD_MESSAGE_SPAWN_FAILED),
+ "MESSAGE_ID=" SD_MESSAGE_SPAWN_FAILED_STR,
LOG_UNIT_ID(unit),
LOG_UNIT_MESSAGE(unit, "%s: %m",
error_message),
@@ -2989,7 +2989,7 @@ int exec_spawn(Unit *unit,
NULL);
else
log_struct_errno(LOG_ERR, r,
- LOG_MESSAGE_ID(SD_MESSAGE_SPAWN_FAILED),
+ "MESSAGE_ID=" SD_MESSAGE_SPAWN_FAILED_STR,
LOG_UNIT_ID(unit),
LOG_UNIT_MESSAGE(unit, "Failed at step %s spawning %s: %m",
exit_status_to_string(exit_status, EXIT_STATUS_SYSTEMD),
diff --git a/src/core/hostname-setup.c b/src/core/hostname-setup.c
index 68be52856b..845e31e1c5 100644
--- a/src/core/hostname-setup.c
+++ b/src/core/hostname-setup.c
@@ -31,10 +31,10 @@
#include "util.h"
int hostname_setup(void) {
- int r;
_cleanup_free_ char *b = NULL;
- const char *hn;
bool enoent = false;
+ const char *hn;
+ int r;
r = read_hostname_config("/etc/hostname", &b);
if (r < 0) {
@@ -56,7 +56,7 @@ int hostname_setup(void) {
if (enoent)
log_info("No hostname configured.");
- hn = "localhost";
+ hn = FALLBACK_HOSTNAME;
}
r = sethostname_idempotent(hn);
diff --git a/src/core/job.c b/src/core/job.c
index 07f4b74c5c..e2349830a8 100644
--- a/src/core/job.c
+++ b/src/core/job.c
@@ -746,9 +746,8 @@ static void job_print_status_message(Unit *u, JobType t, JobResult result) {
}
static void job_log_status_message(Unit *u, JobType t, JobResult result) {
- const char *format;
+ const char *format, *mid;
char buf[LINE_MAX];
- sd_id128_t mid;
static const int job_result_log_level[_JOB_RESULT_MAX] = {
[JOB_DONE] = LOG_INFO,
[JOB_CANCELED] = LOG_INFO,
@@ -784,16 +783,19 @@ static void job_log_status_message(Unit *u, JobType t, JobResult result) {
switch (t) {
case JOB_START:
- mid = result == JOB_DONE ? SD_MESSAGE_UNIT_STARTED : SD_MESSAGE_UNIT_FAILED;
+ if (result == JOB_DONE)
+ mid = "MESSAGE_ID=" SD_MESSAGE_UNIT_STARTED_STR;
+ else
+ mid = "MESSAGE_ID=" SD_MESSAGE_UNIT_FAILED_STR;
break;
case JOB_RELOAD:
- mid = SD_MESSAGE_UNIT_RELOADED;
+ mid = "MESSAGE_ID=" SD_MESSAGE_UNIT_RELOADED_STR;
break;
case JOB_STOP:
case JOB_RESTART:
- mid = SD_MESSAGE_UNIT_STOPPED;
+ mid = "MESSAGE_ID=" SD_MESSAGE_UNIT_STOPPED_STR;
break;
default:
@@ -806,7 +808,7 @@ static void job_log_status_message(Unit *u, JobType t, JobResult result) {
}
log_struct(job_result_log_level[result],
- LOG_MESSAGE_ID(mid),
+ mid,
LOG_UNIT_ID(u),
LOG_MESSAGE("%s", buf),
"RESULT=%s", job_result_to_string(result),
diff --git a/src/core/manager.c b/src/core/manager.c
index 5646889a8e..b509adfc64 100644
--- a/src/core/manager.c
+++ b/src/core/manager.c
@@ -2171,7 +2171,7 @@ static int manager_dispatch_time_change_fd(sd_event_source *source, int fd, uint
assert(m->time_change_fd == fd);
log_struct(LOG_DEBUG,
- LOG_MESSAGE_ID(SD_MESSAGE_TIME_CHANGE),
+ "MESSAGE_ID=" SD_MESSAGE_TIME_CHANGE_STR,
LOG_MESSAGE("Time has been changed"),
NULL);
@@ -2930,7 +2930,7 @@ static void manager_notify_finished(Manager *m) {
initrd_usec = m->userspace_timestamp.monotonic - m->initrd_timestamp.monotonic;
log_struct(LOG_INFO,
- LOG_MESSAGE_ID(SD_MESSAGE_STARTUP_FINISHED),
+ "MESSAGE_ID=" SD_MESSAGE_STARTUP_FINISHED_STR,
"KERNEL_USEC="USEC_FMT, kernel_usec,
"INITRD_USEC="USEC_FMT, initrd_usec,
"USERSPACE_USEC="USEC_FMT, userspace_usec,
@@ -2945,7 +2945,7 @@ static void manager_notify_finished(Manager *m) {
initrd_usec = 0;
log_struct(LOG_INFO,
- LOG_MESSAGE_ID(SD_MESSAGE_STARTUP_FINISHED),
+ "MESSAGE_ID=" SD_MESSAGE_STARTUP_FINISHED_STR,
"KERNEL_USEC="USEC_FMT, kernel_usec,
"USERSPACE_USEC="USEC_FMT, userspace_usec,
LOG_MESSAGE("Startup finished in %s (kernel) + %s (userspace) = %s.",
@@ -2959,7 +2959,7 @@ static void manager_notify_finished(Manager *m) {
total_usec = userspace_usec = m->finish_timestamp.monotonic - m->userspace_timestamp.monotonic;
log_struct(LOG_INFO,
- LOG_MESSAGE_ID(SD_MESSAGE_USER_STARTUP_FINISHED),
+ "MESSAGE_ID=" SD_MESSAGE_USER_STARTUP_FINISHED_STR,
"USERSPACE_USEC="USEC_FMT, userspace_usec,
LOG_MESSAGE("Startup finished in %s.",
format_timespan(sum, sizeof(sum), total_usec, USEC_PER_MSEC)),
diff --git a/src/core/socket.c b/src/core/socket.c
index a7b9ada65c..84b7a1a82d 100644
--- a/src/core/socket.c
+++ b/src/core/socket.c
@@ -1340,11 +1340,11 @@ static int usbffs_write_descs(int fd, Service *s) {
if (!s->usb_function_descriptors || !s->usb_function_strings)
return -EINVAL;
- r = copy_file_fd(s->usb_function_descriptors, fd, false);
+ r = copy_file_fd(s->usb_function_descriptors, fd, 0);
if (r < 0)
return r;
- return copy_file_fd(s->usb_function_strings, fd, false);
+ return copy_file_fd(s->usb_function_strings, fd, 0);
}
static int usbffs_select_ep(const struct dirent *d) {
diff --git a/src/core/unit.c b/src/core/unit.c
index 0b680e9544..bb05d2abfb 100644
--- a/src/core/unit.c
+++ b/src/core/unit.c
@@ -1466,9 +1466,8 @@ static void unit_status_print_starting_stopping(Unit *u, JobType t) {
}
static void unit_status_log_starting_stopping_reloading(Unit *u, JobType t) {
- const char *format;
+ const char *format, *mid;
char buf[LINE_MAX];
- sd_id128_t mid;
assert(u);
@@ -1486,9 +1485,9 @@ static void unit_status_log_starting_stopping_reloading(Unit *u, JobType t) {
snprintf(buf, sizeof buf, format, unit_description(u));
REENABLE_WARNING;
- mid = t == JOB_START ? SD_MESSAGE_UNIT_STARTING :
- t == JOB_STOP ? SD_MESSAGE_UNIT_STOPPING :
- SD_MESSAGE_UNIT_RELOADING;
+ mid = t == JOB_START ? "MESSAGE_ID=" SD_MESSAGE_UNIT_STARTING_STR :
+ t == JOB_STOP ? "MESSAGE_ID=" SD_MESSAGE_UNIT_STOPPING_STR :
+ "MESSAGE_ID=" SD_MESSAGE_UNIT_RELOADING_STR;
/* Note that we deliberately use LOG_MESSAGE() instead of
* LOG_UNIT_MESSAGE() here, since this is supposed to mimic
@@ -1497,7 +1496,7 @@ static void unit_status_log_starting_stopping_reloading(Unit *u, JobType t) {
* possible, which means we should avoid the low-level unit
* name. */
log_struct(LOG_INFO,
- LOG_MESSAGE_ID(mid),
+ mid,
LOG_UNIT_ID(u),
LOG_MESSAGE("%s", buf),
NULL);
@@ -4069,7 +4068,7 @@ void unit_warn_if_dir_nonempty(Unit *u, const char* where) {
}
log_struct(LOG_NOTICE,
- LOG_MESSAGE_ID(SD_MESSAGE_OVERMOUNTING),
+ "MESSAGE_ID=" SD_MESSAGE_OVERMOUNTING_STR,
LOG_UNIT_ID(u),
LOG_UNIT_MESSAGE(u, "Directory %s to mount over is not empty, mounting anyway.", where),
"WHERE=%s", where,
@@ -4091,7 +4090,7 @@ int unit_fail_if_symlink(Unit *u, const char* where) {
return 0;
log_struct(LOG_ERR,
- LOG_MESSAGE_ID(SD_MESSAGE_OVERMOUNTING),
+ "MESSAGE_ID=" SD_MESSAGE_OVERMOUNTING_STR,
LOG_UNIT_ID(u),
LOG_UNIT_MESSAGE(u, "Mount on symlink %s not allowed.", where),
"WHERE=%s", where,
diff --git a/src/coredump/coredump.c b/src/coredump/coredump.c
index 1f6fb5de1e..d76d49a679 100644
--- a/src/coredump/coredump.c
+++ b/src/coredump/coredump.c
@@ -47,7 +47,7 @@
#include "fileio.h"
#include "fs-util.h"
#include "io-util.h"
-#include "journald-native.h"
+#include "journal-importer.h"
#include "log.h"
#include "macro.h"
#include "missing.h"
@@ -352,7 +352,7 @@ static int save_external_coredump(
if (fd < 0)
return log_error_errno(fd, "Failed to create temporary file for coredump %s: %m", fn);
- r = copy_bytes(input_fd, fd, max_size, false);
+ r = copy_bytes(input_fd, fd, max_size, 0);
if (r < 0) {
log_error_errno(r, "Cannot store coredump of %s (%s): %m", context[CONTEXT_PID], context[CONTEXT_COMM]);
goto fail;
@@ -360,7 +360,7 @@ static int save_external_coredump(
log_struct(LOG_INFO,
LOG_MESSAGE("Core file was truncated to %zu bytes.", max_size),
"SIZE_LIMIT=%zu", max_size,
- LOG_MESSAGE_ID(SD_MESSAGE_TRUNCATED_CORE),
+ "MESSAGE_ID=" SD_MESSAGE_TRUNCATED_CORE_STR,
NULL);
if (fstat(fd, &st) < 0) {
@@ -820,7 +820,7 @@ static void map_context_fields(const struct iovec *iovec, const char *context[])
static int process_socket(int fd) {
_cleanup_close_ int coredump_fd = -1;
struct iovec *iovec = NULL;
- size_t n_iovec = 0, n_iovec_allocated = 0, i;
+ size_t n_iovec = 0, n_allocated = 0, i;
const char *context[_CONTEXT_MAX] = {};
int r;
@@ -830,6 +830,8 @@ static int process_socket(int fd) {
log_parse_environment();
log_open();
+ log_debug("Processing coredump received on stdin...");
+
for (;;) {
union {
struct cmsghdr cmsghdr;
@@ -843,7 +845,7 @@ static int process_socket(int fd) {
ssize_t n;
ssize_t l;
- if (!GREEDY_REALLOC(iovec, n_iovec_allocated, n_iovec + 3)) {
+ if (!GREEDY_REALLOC(iovec, n_allocated, n_iovec + 3)) {
r = log_oom();
goto finish;
}
@@ -907,7 +909,7 @@ static int process_socket(int fd) {
n_iovec++;
}
- if (!GREEDY_REALLOC(iovec, n_iovec_allocated, n_iovec + 3)) {
+ if (!GREEDY_REALLOC(iovec, n_allocated, n_iovec + 3)) {
r = log_oom();
goto finish;
}
@@ -922,7 +924,7 @@ static int process_socket(int fd) {
assert(context[CONTEXT_COMM]);
assert(coredump_fd >= 0);
- r = submit_coredump(context, iovec, n_iovec_allocated, n_iovec, coredump_fd);
+ r = submit_coredump(context, iovec, n_allocated, n_iovec, coredump_fd);
finish:
for (i = 0; i < n_iovec; i++)
@@ -1025,45 +1027,47 @@ static int process_special_crash(const char *context[], int input_fd) {
return 0;
}
-static int process_kernel(int argc, char* argv[]) {
+static char* set_iovec_field(struct iovec iovec[27], size_t *n_iovec, const char *field, const char *value) {
+ char *x;
+
+ x = strappend(field, value);
+ if (x)
+ IOVEC_SET_STRING(iovec[(*n_iovec)++], x);
+ return x;
+}
- /* The small core field we allocate on the stack, to keep things simple */
- char
- *core_pid = NULL, *core_uid = NULL, *core_gid = NULL, *core_signal = NULL,
- *core_session = NULL, *core_exe = NULL, *core_comm = NULL, *core_cmdline = NULL,
- *core_cgroup = NULL, *core_cwd = NULL, *core_root = NULL, *core_unit = NULL,
- *core_user_unit = NULL, *core_slice = NULL, *core_timestamp = NULL, *core_rlimit = NULL;
+static char* set_iovec_field_free(struct iovec iovec[27], size_t *n_iovec, const char *field, char *value) {
+ char *x;
- /* The larger ones we allocate on the heap */
- _cleanup_free_ char
- *core_owner_uid = NULL, *core_open_fds = NULL, *core_proc_status = NULL,
- *core_proc_maps = NULL, *core_proc_limits = NULL, *core_proc_cgroup = NULL, *core_environ = NULL,
- *core_proc_mountinfo = NULL, *core_container_cmdline = NULL;
+ x = set_iovec_field(iovec, n_iovec, field, value);
+ free(value);
+ return x;
+}
+
+static int gather_pid_metadata(
+ const char *context[_CONTEXT_MAX],
+ char **comm_fallback,
+ char **comm_ret,
+ struct iovec *iovec, size_t *n_iovec) {
+ /* We need 25 empty slots in iovec!
+ * Note that if we fail on oom later on, we do not roll-back changes to the iovec
+ * structure. (It remains valid, with the first n_iovec fields initialized.) */
_cleanup_free_ char *exe = NULL, *comm = NULL;
- const char *context[_CONTEXT_MAX];
- bool proc_self_root_is_slash;
- struct iovec iovec[27];
- size_t n_iovec = 0;
uid_t owner_uid;
- const char *p;
pid_t pid;
char *t;
+ const char *p;
int r;
- if (argc < CONTEXT_COMM + 1) {
- log_error("Not enough arguments passed from kernel (%i, expected %i).", argc - 1, CONTEXT_COMM + 1 - 1);
- return -EINVAL;
- }
-
- r = parse_pid(argv[CONTEXT_PID + 1], &pid);
+ r = parse_pid(context[CONTEXT_PID], &pid);
if (r < 0)
- return log_error_errno(r, "Failed to parse PID.");
+ return log_error_errno(r, "Failed to parse PID \"%s\": %m", context[CONTEXT_PID]);
r = get_process_comm(pid, &comm);
if (r < 0) {
log_warning_errno(r, "Failed to get COMM, falling back to the command line: %m");
- comm = strv_join(argv + CONTEXT_COMM + 1, " ");
+ comm = strv_join(comm_fallback, " ");
if (!comm)
return log_oom();
}
@@ -1072,15 +1076,6 @@ static int process_kernel(int argc, char* argv[]) {
if (r < 0)
log_warning_errno(r, "Failed to get EXE, ignoring: %m");
- context[CONTEXT_PID] = argv[CONTEXT_PID + 1];
- context[CONTEXT_UID] = argv[CONTEXT_UID + 1];
- context[CONTEXT_GID] = argv[CONTEXT_GID + 1];
- context[CONTEXT_SIGNAL] = argv[CONTEXT_SIGNAL + 1];
- context[CONTEXT_TIMESTAMP] = argv[CONTEXT_TIMESTAMP + 1];
- context[CONTEXT_RLIMIT] = argv[CONTEXT_RLIMIT + 1];
- context[CONTEXT_COMM] = comm;
- context[CONTEXT_EXE] = exe;
-
if (cg_pid_get_unit(pid, &t) >= 0) {
/* If this is PID 1 disable coredump collection, we'll unlikely be able to process it later on. */
@@ -1096,186 +1091,238 @@ static int process_kernel(int argc, char* argv[]) {
return process_special_crash(context, STDIN_FILENO);
}
- core_unit = strjoina("COREDUMP_UNIT=", t);
- free(t);
-
- IOVEC_SET_STRING(iovec[n_iovec++], core_unit);
+ set_iovec_field_free(iovec, n_iovec, "COREDUMP_UNIT=", t);
}
/* OK, now we know it's not the journal, hence we can make use of it now. */
log_set_target(LOG_TARGET_JOURNAL_OR_KMSG);
log_open();
- if (cg_pid_get_user_unit(pid, &t) >= 0) {
- core_user_unit = strjoina("COREDUMP_USER_UNIT=", t);
- free(t);
+ if (cg_pid_get_user_unit(pid, &t) >= 0)
+ set_iovec_field_free(iovec, n_iovec, "COREDUMP_USER_UNIT=", t);
- IOVEC_SET_STRING(iovec[n_iovec++], core_user_unit);
- }
+ /* The next few are mandatory */
+ if (!set_iovec_field(iovec, n_iovec, "COREDUMP_PID=", context[CONTEXT_PID]))
+ return log_oom();
- core_pid = strjoina("COREDUMP_PID=", context[CONTEXT_PID]);
- IOVEC_SET_STRING(iovec[n_iovec++], core_pid);
+ if (!set_iovec_field(iovec, n_iovec, "COREDUMP_UID=", context[CONTEXT_UID]))
+ return log_oom();
- core_uid = strjoina("COREDUMP_UID=", context[CONTEXT_UID]);
- IOVEC_SET_STRING(iovec[n_iovec++], core_uid);
+ if (!set_iovec_field(iovec, n_iovec, "COREDUMP_GID=", context[CONTEXT_GID]))
+ return log_oom();
- core_gid = strjoina("COREDUMP_GID=", context[CONTEXT_GID]);
- IOVEC_SET_STRING(iovec[n_iovec++], core_gid);
+ if (!set_iovec_field(iovec, n_iovec, "COREDUMP_SIGNAL=", context[CONTEXT_SIGNAL]))
+ return log_oom();
- core_signal = strjoina("COREDUMP_SIGNAL=", context[CONTEXT_SIGNAL]);
- IOVEC_SET_STRING(iovec[n_iovec++], core_signal);
+ if (!set_iovec_field(iovec, n_iovec, "COREDUMP_RLIMIT=", context[CONTEXT_RLIMIT]))
+ return log_oom();
- core_rlimit = strjoina("COREDUMP_RLIMIT=", context[CONTEXT_RLIMIT]);
- IOVEC_SET_STRING(iovec[n_iovec++], core_rlimit);
+ if (!set_iovec_field(iovec, n_iovec, "COREDUMP_COMM=", comm))
+ return log_oom();
- if (sd_pid_get_session(pid, &t) >= 0) {
- core_session = strjoina("COREDUMP_SESSION=", t);
- free(t);
+ if (exe &&
+ !set_iovec_field(iovec, n_iovec, "COREDUMP_EXE=", exe))
+ return log_oom();
- IOVEC_SET_STRING(iovec[n_iovec++], core_session);
- }
+ if (sd_pid_get_session(pid, &t) >= 0)
+ set_iovec_field_free(iovec, n_iovec, "COREDUMP_SESSION=", t);
if (sd_pid_get_owner_uid(pid, &owner_uid) >= 0) {
- r = asprintf(&core_owner_uid, "COREDUMP_OWNER_UID=" UID_FMT, owner_uid);
+ r = asprintf(&t, "COREDUMP_OWNER_UID=" UID_FMT, owner_uid);
if (r > 0)
- IOVEC_SET_STRING(iovec[n_iovec++], core_owner_uid);
+ IOVEC_SET_STRING(iovec[(*n_iovec)++], t);
}
- if (sd_pid_get_slice(pid, &t) >= 0) {
- core_slice = strjoina("COREDUMP_SLICE=", t);
- free(t);
+ if (sd_pid_get_slice(pid, &t) >= 0)
+ set_iovec_field_free(iovec, n_iovec, "COREDUMP_SLICE=", t);
- IOVEC_SET_STRING(iovec[n_iovec++], core_slice);
- }
+ if (get_process_cmdline(pid, 0, false, &t) >= 0)
+ set_iovec_field_free(iovec, n_iovec, "COREDUMP_CMDLINE=", t);
- if (comm) {
- core_comm = strjoina("COREDUMP_COMM=", comm);
- IOVEC_SET_STRING(iovec[n_iovec++], core_comm);
- }
+ if (cg_pid_get_path_shifted(pid, NULL, &t) >= 0)
+ set_iovec_field_free(iovec, n_iovec, "COREDUMP_CGROUP=", t);
- if (exe) {
- core_exe = strjoina("COREDUMP_EXE=", exe);
- IOVEC_SET_STRING(iovec[n_iovec++], core_exe);
- }
+ if (compose_open_fds(pid, &t) >= 0)
+ set_iovec_field_free(iovec, n_iovec, "COREDUMP_OPEN_FDS=", t);
- if (get_process_cmdline(pid, 0, false, &t) >= 0) {
- core_cmdline = strjoina("COREDUMP_CMDLINE=", t);
- free(t);
+ p = procfs_file_alloca(pid, "status");
+ if (read_full_file(p, &t, NULL) >= 0)
+ set_iovec_field_free(iovec, n_iovec, "COREDUMP_PROC_STATUS=", t);
- IOVEC_SET_STRING(iovec[n_iovec++], core_cmdline);
- }
+ p = procfs_file_alloca(pid, "maps");
+ if (read_full_file(p, &t, NULL) >= 0)
+ set_iovec_field_free(iovec, n_iovec, "COREDUMP_PROC_MAPS=", t);
- if (cg_pid_get_path_shifted(pid, NULL, &t) >= 0) {
- core_cgroup = strjoina("COREDUMP_CGROUP=", t);
- free(t);
+ p = procfs_file_alloca(pid, "limits");
+ if (read_full_file(p, &t, NULL) >= 0)
+ set_iovec_field_free(iovec, n_iovec, "COREDUMP_PROC_LIMITS=", t);
- IOVEC_SET_STRING(iovec[n_iovec++], core_cgroup);
- }
+ p = procfs_file_alloca(pid, "cgroup");
+ if (read_full_file(p, &t, NULL) >=0)
+ set_iovec_field_free(iovec, n_iovec, "COREDUMP_PROC_CGROUP=", t);
- if (compose_open_fds(pid, &t) >= 0) {
- core_open_fds = strappend("COREDUMP_OPEN_FDS=", t);
- free(t);
+ p = procfs_file_alloca(pid, "mountinfo");
+ if (read_full_file(p, &t, NULL) >=0)
+ set_iovec_field_free(iovec, n_iovec, "COREDUMP_PROC_MOUNTINFO=", t);
- if (core_open_fds)
- IOVEC_SET_STRING(iovec[n_iovec++], core_open_fds);
- }
+ if (get_process_cwd(pid, &t) >= 0)
+ set_iovec_field_free(iovec, n_iovec, "COREDUMP_CWD=", t);
- p = procfs_file_alloca(pid, "status");
- if (read_full_file(p, &t, NULL) >= 0) {
- core_proc_status = strappend("COREDUMP_PROC_STATUS=", t);
- free(t);
+ if (get_process_root(pid, &t) >= 0) {
+ bool proc_self_root_is_slash;
- if (core_proc_status)
- IOVEC_SET_STRING(iovec[n_iovec++], core_proc_status);
- }
+ proc_self_root_is_slash = strcmp(t, "/") == 0;
- p = procfs_file_alloca(pid, "maps");
- if (read_full_file(p, &t, NULL) >= 0) {
- core_proc_maps = strappend("COREDUMP_PROC_MAPS=", t);
- free(t);
+ set_iovec_field_free(iovec, n_iovec, "COREDUMP_ROOT=", t);
- if (core_proc_maps)
- IOVEC_SET_STRING(iovec[n_iovec++], core_proc_maps);
+ /* If the process' root is "/", then there is a chance it has
+ * mounted own root and hence being containerized. */
+ if (proc_self_root_is_slash && get_process_container_parent_cmdline(pid, &t) > 0)
+ set_iovec_field_free(iovec, n_iovec, "COREDUMP_CONTAINER_CMDLINE=", t);
}
- p = procfs_file_alloca(pid, "limits");
- if (read_full_file(p, &t, NULL) >= 0) {
- core_proc_limits = strappend("COREDUMP_PROC_LIMITS=", t);
- free(t);
+ if (get_process_environ(pid, &t) >= 0)
+ set_iovec_field_free(iovec, n_iovec, "COREDUMP_ENVIRON=", t);
- if (core_proc_limits)
- IOVEC_SET_STRING(iovec[n_iovec++], core_proc_limits);
+ t = strjoin("COREDUMP_TIMESTAMP=", context[CONTEXT_TIMESTAMP], "000000", NULL);
+ if (t)
+ IOVEC_SET_STRING(iovec[(*n_iovec)++], t);
+
+ if (comm_ret) {
+ *comm_ret = comm;
+ comm = NULL;
}
- p = procfs_file_alloca(pid, "cgroup");
- if (read_full_file(p, &t, NULL) >=0) {
- core_proc_cgroup = strappend("COREDUMP_PROC_CGROUP=", t);
- free(t);
+ return 0;
+}
- if (core_proc_cgroup)
- IOVEC_SET_STRING(iovec[n_iovec++], core_proc_cgroup);
- }
+static int process_kernel(int argc, char* argv[]) {
- p = procfs_file_alloca(pid, "mountinfo");
- if (read_full_file(p, &t, NULL) >=0) {
- core_proc_mountinfo = strappend("COREDUMP_PROC_MOUNTINFO=", t);
- free(t);
+ const char *context[_CONTEXT_MAX];
+ struct iovec iovec[27];
+ size_t i, n_iovec, n_to_free = 0;
+ int r;
+
+ log_debug("Processing coredump received from the kernel...");
- if (core_proc_mountinfo)
- IOVEC_SET_STRING(iovec[n_iovec++], core_proc_mountinfo);
+ if (argc < CONTEXT_COMM + 1) {
+ log_error("Not enough arguments passed by the kernel (%i, expected %i).", argc - 1, CONTEXT_COMM + 1 - 1);
+ return -EINVAL;
}
- if (get_process_cwd(pid, &t) >= 0) {
- core_cwd = strjoina("COREDUMP_CWD=", t);
- free(t);
+ context[CONTEXT_PID] = argv[CONTEXT_PID + 1];
+ context[CONTEXT_UID] = argv[CONTEXT_UID + 1];
+ context[CONTEXT_GID] = argv[CONTEXT_GID + 1];
+ context[CONTEXT_SIGNAL] = argv[CONTEXT_SIGNAL + 1];
+ context[CONTEXT_TIMESTAMP] = argv[CONTEXT_TIMESTAMP + 1];
+ context[CONTEXT_RLIMIT] = argv[CONTEXT_RLIMIT + 1];
- IOVEC_SET_STRING(iovec[n_iovec++], core_cwd);
- }
+ r = gather_pid_metadata(context, argv + CONTEXT_COMM + 1, NULL, iovec, &n_to_free);
+ if (r < 0)
+ goto finish;
+ n_iovec = n_to_free;
- if (get_process_root(pid, &t) >= 0) {
- core_root = strjoina("COREDUMP_ROOT=", t);
+ IOVEC_SET_STRING(iovec[n_iovec++], "MESSAGE_ID=" SD_MESSAGE_COREDUMP_STR);
- IOVEC_SET_STRING(iovec[n_iovec++], core_root);
+ assert_cc(2 == LOG_CRIT);
+ IOVEC_SET_STRING(iovec[n_iovec++], "PRIORITY=2");
- /* If the process' root is "/", then there is a chance it has
- * mounted own root and hence being containerized. */
- proc_self_root_is_slash = strcmp(t, "/") == 0;
- free(t);
- if (proc_self_root_is_slash && get_process_container_parent_cmdline(pid, &t) > 0) {
- core_container_cmdline = strappend("COREDUMP_CONTAINER_CMDLINE=", t);
- free(t);
+ assert(n_iovec <= ELEMENTSOF(iovec));
- if (core_container_cmdline)
- IOVEC_SET_STRING(iovec[n_iovec++], core_container_cmdline);
- }
+ r = send_iovec(iovec, n_iovec, STDIN_FILENO);
+
+ finish:
+ for (i = 0; i < n_to_free; i++)
+ free(iovec[i].iov_base);
+
+ return r;
+}
+
+static int process_backtrace(int argc, char *argv[]) {
+ const char *context[_CONTEXT_MAX];
+ _cleanup_free_ char *comm = NULL, *message = NULL;
+ _cleanup_free_ struct iovec *iovec = NULL;
+ size_t n_iovec, n_allocated, n_to_free = 0, i;
+ int r;
+ JournalImporter importer = {
+ .fd = STDIN_FILENO,
+ };
+
+ log_debug("Processing backtrace on stdin...");
+
+ if (argc < CONTEXT_COMM + 1) {
+ log_error("Not enough arguments passed (%i, expected %i).", argc - 1, CONTEXT_COMM + 1 - 1);
+ return -EINVAL;
}
- if (get_process_environ(pid, &t) >= 0) {
- core_environ = strappend("COREDUMP_ENVIRON=", t);
- free(t);
+ context[CONTEXT_PID] = argv[CONTEXT_PID + 2];
+ context[CONTEXT_UID] = argv[CONTEXT_UID + 2];
+ context[CONTEXT_GID] = argv[CONTEXT_GID + 2];
+ context[CONTEXT_SIGNAL] = argv[CONTEXT_SIGNAL + 2];
+ context[CONTEXT_TIMESTAMP] = argv[CONTEXT_TIMESTAMP + 2];
+ context[CONTEXT_RLIMIT] = argv[CONTEXT_RLIMIT + 2];
+
+ n_allocated = 32; /* 25 metadata, 2 static, +unknown input, rounded up */
+ iovec = new(struct iovec, n_allocated);
+ if (!iovec)
+ return log_oom();
- if (core_environ)
- IOVEC_SET_STRING(iovec[n_iovec++], core_environ);
+ r = gather_pid_metadata(context, argv + CONTEXT_COMM + 2, &comm, iovec, &n_to_free);
+ if (r < 0)
+ goto finish;
+ n_iovec = n_to_free;
+
+ while (true) {
+ r = journal_importer_process_data(&importer);
+ if (r < 0) {
+ log_error_errno(r, "Failed to parse journal entry on stdin: %m");
+ goto finish;
+ }
+ if (r == 1)
+ break;
}
- core_timestamp = strjoina("COREDUMP_TIMESTAMP=", context[CONTEXT_TIMESTAMP], "000000");
- IOVEC_SET_STRING(iovec[n_iovec++], core_timestamp);
+ if (!GREEDY_REALLOC(iovec, n_allocated, n_iovec + importer.iovw.count + 2))
+ return log_oom();
- IOVEC_SET_STRING(iovec[n_iovec++], "MESSAGE_ID=fc2e22bc6ee647b6b90729ab34a250b1");
+ if (journal_importer_eof(&importer)) {
+ log_warning("Did not receive a full journal entry on stdin, ignoring message sent by reporter");
+ message = strjoin("MESSAGE=Process ", context[CONTEXT_PID], " (", comm, ")"
+ " of user ", context[CONTEXT_UID],
+ " failed with ", context[CONTEXT_SIGNAL]);
+ if (!message) {
+ r = log_oom();
+ goto finish;
+ }
+ IOVEC_SET_STRING(iovec[n_iovec++], message);
+ } else {
+ for (i = 0; i < importer.iovw.count; i++)
+ iovec[n_iovec++] = importer.iovw.iovec[i];
+ }
+
+ IOVEC_SET_STRING(iovec[n_iovec++], "MESSAGE_ID=" SD_MESSAGE_BACKTRACE_STR);
assert_cc(2 == LOG_CRIT);
IOVEC_SET_STRING(iovec[n_iovec++], "PRIORITY=2");
- assert(n_iovec <= ELEMENTSOF(iovec));
+ assert(n_iovec <= n_allocated);
+
+ r = sd_journal_sendv(iovec, n_iovec);
+ if (r < 0)
+ log_error_errno(r, "Failed to log backtrace: %m");
- return send_iovec(iovec, n_iovec, STDIN_FILENO);
+ finish:
+ for (i = 0; i < n_to_free; i++)
+ free(iovec[i].iov_base);
+
+ return r;
}
int main(int argc, char *argv[]) {
int r;
- /* First, log to a safe place, since we don't know what crashed and it might be journald which we'd rather not
- * log to then. */
+ /* First, log to a safe place, since we don't know what crashed and it might
+ * be journald which we'd rather not log to then. */
log_set_target(LOG_TARGET_KMSG);
log_open();
@@ -1295,11 +1342,14 @@ int main(int argc, char *argv[]) {
goto finish;
}
- /* If we got an fd passed, we are running in coredumpd mode. Otherwise we are invoked from the kernel as
- * coredump handler */
- if (r == 0)
- r = process_kernel(argc, argv);
- else if (r == 1)
+ /* If we got an fd passed, we are running in coredumpd mode. Otherwise we
+ * are invoked from the kernel as coredump handler. */
+ if (r == 0) {
+ if (streq_ptr(argv[1], "--backtrace"))
+ r = process_backtrace(argc, argv);
+ else
+ r = process_kernel(argc, argv);
+ } else if (r == 1)
r = process_socket(SD_LISTEN_FDS_START);
else {
log_error("Received unexpected number of file descriptors.");
diff --git a/src/coredump/coredumpctl.c b/src/coredump/coredumpctl.c
index fcb741b353..6abd99430b 100644
--- a/src/coredump/coredumpctl.c
+++ b/src/coredump/coredumpctl.c
@@ -25,6 +25,7 @@
#include <unistd.h>
#include "sd-journal.h"
+#include "sd-messages.h"
#include "alloc-util.h"
#include "compress.h"
@@ -38,10 +39,10 @@
#include "parse-util.h"
#include "path-util.h"
#include "process-util.h"
-#include "set.h"
#include "sigbus.h"
#include "signal-util.h"
#include "string-util.h"
+#include "strv.h"
#include "terminal-util.h"
#include "user-util.h"
#include "util.h"
@@ -60,36 +61,9 @@ static int arg_no_legend = false;
static int arg_one = false;
static FILE* arg_output = NULL;
static bool arg_reverse = false;
+static char** arg_matches = NULL;
-static Set *new_matches(void) {
- Set *set;
- char *tmp;
- int r;
-
- set = set_new(NULL);
- if (!set) {
- log_oom();
- return NULL;
- }
-
- tmp = strdup("MESSAGE_ID=fc2e22bc6ee647b6b90729ab34a250b1");
- if (!tmp) {
- log_oom();
- set_free(set);
- return NULL;
- }
-
- r = set_consume(set, tmp);
- if (r < 0) {
- log_error_errno(r, "failed to add to set: %m");
- set_free(set);
- return NULL;
- }
-
- return set;
-}
-
-static int add_match(Set *set, const char *match) {
+static int add_match(sd_journal *j, const char *match) {
_cleanup_free_ char *p = NULL;
char *pattern = NULL;
const char* prefix;
@@ -101,7 +75,8 @@ static int add_match(Set *set, const char *match) {
else if (strchr(match, '/')) {
r = path_make_absolute_cwd(match, &p);
if (r < 0)
- goto fail;
+ return log_error_errno(r, "path_make_absolute_cwd(\"%s\"): %m", match);
+
match = p;
prefix = "COREDUMP_EXE=";
} else if (parse_pid(match, &pid) >= 0)
@@ -110,19 +85,35 @@ static int add_match(Set *set, const char *match) {
prefix = "COREDUMP_COMM=";
pattern = strjoin(prefix, match);
- if (!pattern) {
- r = -ENOMEM;
- goto fail;
- }
+ if (!pattern)
+ return log_oom();
+
+ log_debug("Adding match: %s", pattern);
+ r = sd_journal_add_match(j, pattern, 0);
+ if (r < 0)
+ return log_error_errno(r, "Failed to add match \"%s\": %m", match);
+ return 0;
+}
+
+static int add_matches(sd_journal *j) {
+ char **match;
+ int r;
- log_debug("Adding pattern: %s", pattern);
- r = set_consume(set, pattern);
+ r = sd_journal_add_match(j, "MESSAGE_ID=" SD_MESSAGE_COREDUMP_STR, 0);
if (r < 0)
- goto fail;
+ return log_error_errno(r, "Failed to add match \"%s\": %m", "MESSAGE_ID=" SD_MESSAGE_COREDUMP_STR);
+
+ r = sd_journal_add_match(j, "MESSAGE_ID=" SD_MESSAGE_BACKTRACE_STR, 0);
+ if (r < 0)
+ return log_error_errno(r, "Failed to add match \"%s\": %m", "MESSAGE_ID=" SD_MESSAGE_BACKTRACE_STR);
+
+ STRV_FOREACH(match, arg_matches) {
+ r = add_match(j, *match);
+ if (r < 0)
+ return r;
+ }
return 0;
-fail:
- return log_error_errno(r, "Failed to add match: %m");
}
static void help(void) {
@@ -147,14 +138,14 @@ static void help(void) {
, program_invocation_short_name);
}
-static int parse_argv(int argc, char *argv[], Set *matches) {
+static int parse_argv(int argc, char *argv[]) {
enum {
ARG_VERSION = 0x100,
ARG_NO_PAGER,
ARG_NO_LEGEND,
};
- int r, c;
+ int c;
static const struct option options[] = {
{ "help", no_argument, NULL, 'h' },
@@ -251,12 +242,8 @@ static int parse_argv(int argc, char *argv[], Set *matches) {
return -EINVAL;
}
- while (optind < argc) {
- r = add_match(matches, argv[optind]);
- if (r != 0)
- return r;
- optind++;
- }
+ if (optind < argc)
+ arg_matches = argv + optind;
return 0;
}
@@ -329,7 +316,7 @@ static int print_field(FILE* file, sd_journal *j) {
static int print_list(FILE* file, sd_journal *j, int had_legend) {
_cleanup_free_ char
- *pid = NULL, *uid = NULL, *gid = NULL,
+ *mid = NULL, *pid = NULL, *uid = NULL, *gid = NULL,
*sgnl = NULL, *exe = NULL, *comm = NULL, *cmdline = NULL,
*filename = NULL, *coredump = NULL;
const void *d;
@@ -338,11 +325,13 @@ static int print_list(FILE* file, sd_journal *j, int had_legend) {
char buf[FORMAT_TIMESTAMP_MAX];
int r;
const char *present;
+ bool normal_coredump;
assert(file);
assert(j);
SD_JOURNAL_FOREACH_DATA(j, d, l) {
+ RETRIEVE(d, l, "MESSAGE_ID", mid);
RETRIEVE(d, l, "COREDUMP_PID", pid);
RETRIEVE(d, l, "COREDUMP_UID", uid);
RETRIEVE(d, l, "COREDUMP_GID", gid);
@@ -375,6 +364,8 @@ static int print_list(FILE* file, sd_journal *j, int had_legend) {
8, "COREFILE",
"EXE");
+ normal_coredump = streq_ptr(mid, SD_MESSAGE_COREDUMP_STR);
+
if (filename)
if (access(filename, R_OK) == 0)
present = "present";
@@ -384,15 +375,17 @@ static int print_list(FILE* file, sd_journal *j, int had_legend) {
present = "error";
else if (coredump)
present = "journal";
- else
+ else if (normal_coredump)
present = "none";
+ else
+ present = "-";
fprintf(file, "%-*s %*s %*s %*s %*s %-*s %s\n",
FORMAT_TIMESTAMP_WIDTH, buf,
6, strna(pid),
5, strna(uid),
5, strna(gid),
- 3, strna(sgnl),
+ 3, normal_coredump ? strna(sgnl) : "-",
8, present,
strna(exe ?: (comm ?: cmdline)));
@@ -401,7 +394,7 @@ static int print_list(FILE* file, sd_journal *j, int had_legend) {
static int print_info(FILE *file, sd_journal *j, bool need_space) {
_cleanup_free_ char
- *pid = NULL, *uid = NULL, *gid = NULL,
+ *mid = NULL, *pid = NULL, *uid = NULL, *gid = NULL,
*sgnl = NULL, *exe = NULL, *comm = NULL, *cmdline = NULL,
*unit = NULL, *user_unit = NULL, *session = NULL,
*boot_id = NULL, *machine_id = NULL, *hostname = NULL,
@@ -410,12 +403,14 @@ static int print_info(FILE *file, sd_journal *j, bool need_space) {
*coredump = NULL;
const void *d;
size_t l;
+ bool normal_coredump;
int r;
assert(file);
assert(j);
SD_JOURNAL_FOREACH_DATA(j, d, l) {
+ RETRIEVE(d, l, "MESSAGE_ID", mid);
RETRIEVE(d, l, "COREDUMP_PID", pid);
RETRIEVE(d, l, "COREDUMP_UID", uid);
RETRIEVE(d, l, "COREDUMP_GID", gid);
@@ -441,6 +436,8 @@ static int print_info(FILE *file, sd_journal *j, bool need_space) {
if (need_space)
fputs("\n", file);
+ normal_coredump = streq_ptr(mid, SD_MESSAGE_COREDUMP_STR);
+
if (comm)
fprintf(file,
" PID: %s%s%s (%s)\n",
@@ -486,11 +483,12 @@ static int print_info(FILE *file, sd_journal *j, bool need_space) {
if (sgnl) {
int sig;
+ const char *name = normal_coredump ? "Signal" : "Reason";
- if (safe_atoi(sgnl, &sig) >= 0)
- fprintf(file, " Signal: %s (%s)\n", sgnl, signal_to_string(sig));
+ if (normal_coredump && safe_atoi(sgnl, &sig) >= 0)
+ fprintf(file, " %s: %s (%s)\n", name, sgnl, signal_to_string(sig));
else
- fprintf(file, " Signal: %s\n", sgnl);
+ fprintf(file, " %s: %s\n", name, sgnl);
}
if (timestamp) {
@@ -875,22 +873,13 @@ finish:
int main(int argc, char *argv[]) {
_cleanup_(sd_journal_closep) sd_journal*j = NULL;
- const char* match;
- Iterator it;
int r = 0;
- _cleanup_set_free_free_ Set *matches = NULL;
setlocale(LC_ALL, "");
log_parse_environment();
log_open();
- matches = new_matches();
- if (!matches) {
- r = -ENOMEM;
- goto end;
- }
-
- r = parse_argv(argc, argv, matches);
+ r = parse_argv(argc, argv);
if (r < 0)
goto end;
@@ -913,14 +902,9 @@ int main(int argc, char *argv[]) {
}
}
- SET_FOREACH(match, matches, it) {
- r = sd_journal_add_match(j, match, strlen(match));
- if (r != 0) {
- log_error_errno(r, "Failed to add match '%s': %m",
- match);
- goto end;
- }
- }
+ r = add_matches(j);
+ if (r < 0)
+ goto end;
if (_unlikely_(log_get_max_level() >= LOG_DEBUG)) {
_cleanup_free_ char *filter;
diff --git a/src/firstboot/firstboot.c b/src/firstboot/firstboot.c
index fd7051f21e..bc16290c72 100644
--- a/src/firstboot/firstboot.c
+++ b/src/firstboot/firstboot.c
@@ -252,7 +252,7 @@ static int process_locale(void) {
if (arg_copy_locale && arg_root) {
mkdir_parents(etc_localeconf, 0755);
- r = copy_file("/etc/locale.conf", etc_localeconf, 0, 0644, 0);
+ r = copy_file("/etc/locale.conf", etc_localeconf, 0, 0644, 0, COPY_REFLINK);
if (r != -ENOENT) {
if (r < 0)
return log_error_errno(r, "Failed to copy %s: %m", etc_localeconf);
diff --git a/src/import/pull-raw.c b/src/import/pull-raw.c
index ef7fb6ac42..60a769e944 100644
--- a/src/import/pull-raw.c
+++ b/src/import/pull-raw.c
@@ -315,7 +315,7 @@ static int raw_pull_copy_auxiliary_file(
local = strjoina(i->image_root, "/", i->local, suffix);
- r = copy_file_atomic(*path, local, 0644, i->force_local, 0);
+ r = copy_file_atomic(*path, local, 0644, 0, COPY_REFLINK | (i->force_local ? COPY_REPLACE : 0));
if (r == -EEXIST)
log_warning_errno(r, "File %s already exists, not replacing.", local);
else if (r == -ENOENT)
@@ -378,7 +378,7 @@ static int raw_pull_make_local_copy(RawPull *i) {
if (r < 0)
log_warning_errno(r, "Failed to set file attributes on %s: %m", tp);
- r = copy_bytes(i->raw_job->disk_fd, dfd, (uint64_t) -1, true);
+ r = copy_bytes(i->raw_job->disk_fd, dfd, (uint64_t) -1, COPY_REFLINK);
if (r < 0) {
unlink(tp);
return log_error_errno(r, "Failed to make writable copy of image: %m");
diff --git a/src/import/pull-tar.c b/src/import/pull-tar.c
index 375ee778e2..91833d6174 100644
--- a/src/import/pull-tar.c
+++ b/src/import/pull-tar.c
@@ -256,7 +256,7 @@ static int tar_pull_make_local_copy(TarPull *i) {
local_settings = strjoina(i->image_root, "/", i->local, ".nspawn");
- r = copy_file_atomic(i->settings_path, local_settings, 0664, i->force_local, 0);
+ r = copy_file_atomic(i->settings_path, local_settings, 0664, 0, COPY_REFLINK | (i->force_local ? COPY_REPLACE : 0));
if (r == -EEXIST)
log_warning_errno(r, "Settings file %s already exists, not replacing.", local_settings);
else if (r == -ENOENT)
diff --git a/src/journal-remote/journal-remote-parse.c b/src/journal-remote/journal-remote-parse.c
index 9ba9ee3fc0..79afe6604c 100644
--- a/src/journal-remote/journal-remote-parse.c
+++ b/src/journal-remote/journal-remote-parse.c
@@ -24,20 +24,11 @@
#include "parse-util.h"
#include "string-util.h"
-#define LINE_CHUNK 8*1024u
-
void source_free(RemoteSource *source) {
if (!source)
return;
- if (source->fd >= 0 && !source->passive_fd) {
- log_debug("Closing fd:%d (%s)", source->fd, source->name);
- safe_close(source->fd);
- }
-
- free(source->name);
- free(source->buf);
- iovw_free_contents(&source->iovw);
+ journal_importer_cleanup(&source->importer);
log_debug("Writer ref count %i", source->writer->n_ref);
writer_unref(source->writer);
@@ -65,442 +56,44 @@ RemoteSource* source_new(int fd, bool passive_fd, char *name, Writer *writer) {
if (!source)
return NULL;
- source->fd = fd;
- source->passive_fd = passive_fd;
- source->name = name;
+ source->importer.fd = fd;
+ source->importer.passive_fd = passive_fd;
+ source->importer.name = name;
+
source->writer = writer;
return source;
}
-static char* realloc_buffer(RemoteSource *source, size_t size) {
- char *b, *old = source->buf;
-
- b = GREEDY_REALLOC(source->buf, source->size, size);
- if (!b)
- return NULL;
-
- iovw_rebase(&source->iovw, old, source->buf);
-
- return b;
-}
-
-static int get_line(RemoteSource *source, char **line, size_t *size) {
- ssize_t n;
- char *c = NULL;
-
- assert(source);
- assert(source->state == STATE_LINE);
- assert(source->offset <= source->filled);
- assert(source->filled <= source->size);
- assert(source->buf == NULL || source->size > 0);
- assert(source->fd >= 0);
-
- for (;;) {
- if (source->buf) {
- size_t start = MAX(source->scanned, source->offset);
-
- c = memchr(source->buf + start, '\n',
- source->filled - start);
- if (c != NULL)
- break;
- }
-
- source->scanned = source->filled;
- if (source->scanned >= DATA_SIZE_MAX) {
- log_error("Entry is bigger than %u bytes.", DATA_SIZE_MAX);
- return -E2BIG;
- }
-
- if (source->passive_fd)
- /* we have to wait for some data to come to us */
- return -EAGAIN;
-
- /* We know that source->filled is at most DATA_SIZE_MAX, so if
- we reallocate it, we'll increase the size at least a bit. */
- assert_cc(DATA_SIZE_MAX < ENTRY_SIZE_MAX);
- if (source->size - source->filled < LINE_CHUNK &&
- !realloc_buffer(source, MIN(source->filled + LINE_CHUNK, ENTRY_SIZE_MAX)))
- return log_oom();
-
- assert(source->buf);
- assert(source->size - source->filled >= LINE_CHUNK ||
- source->size == ENTRY_SIZE_MAX);
-
- n = read(source->fd,
- source->buf + source->filled,
- source->size - source->filled);
- if (n < 0) {
- if (errno != EAGAIN)
- log_error_errno(errno, "read(%d, ..., %zu): %m",
- source->fd,
- source->size - source->filled);
- return -errno;
- } else if (n == 0)
- return 0;
-
- source->filled += n;
- }
-
- *line = source->buf + source->offset;
- *size = c + 1 - source->buf - source->offset;
- source->offset += *size;
-
- return 1;
-}
-
-int push_data(RemoteSource *source, const char *data, size_t size) {
- assert(source);
- assert(source->state != STATE_EOF);
-
- if (!realloc_buffer(source, source->filled + size)) {
- log_error("Failed to store received data of size %zu "
- "(in addition to existing %zu bytes with %zu filled): %s",
- size, source->size, source->filled, strerror(ENOMEM));
- return -ENOMEM;
- }
-
- memcpy(source->buf + source->filled, data, size);
- source->filled += size;
-
- return 0;
-}
-
-static int fill_fixed_size(RemoteSource *source, void **data, size_t size) {
-
- assert(source);
- assert(source->state == STATE_DATA_START ||
- source->state == STATE_DATA ||
- source->state == STATE_DATA_FINISH);
- assert(size <= DATA_SIZE_MAX);
- assert(source->offset <= source->filled);
- assert(source->filled <= source->size);
- assert(source->buf != NULL || source->size == 0);
- assert(source->buf == NULL || source->size > 0);
- assert(source->fd >= 0);
- assert(data);
-
- while (source->filled - source->offset < size) {
- int n;
-
- if (source->passive_fd)
- /* we have to wait for some data to come to us */
- return -EAGAIN;
-
- if (!realloc_buffer(source, source->offset + size))
- return log_oom();
-
- n = read(source->fd, source->buf + source->filled,
- source->size - source->filled);
- if (n < 0) {
- if (errno != EAGAIN)
- log_error_errno(errno, "read(%d, ..., %zu): %m", source->fd,
- source->size - source->filled);
- return -errno;
- } else if (n == 0)
- return 0;
-
- source->filled += n;
- }
-
- *data = source->buf + source->offset;
- source->offset += size;
-
- return 1;
-}
-
-static int get_data_size(RemoteSource *source) {
- int r;
- void *data;
-
- assert(source);
- assert(source->state == STATE_DATA_START);
- assert(source->data_size == 0);
-
- r = fill_fixed_size(source, &data, sizeof(uint64_t));
- if (r <= 0)
- return r;
-
- source->data_size = le64toh( *(uint64_t *) data );
- if (source->data_size > DATA_SIZE_MAX) {
- log_error("Stream declares field with size %zu > DATA_SIZE_MAX = %u",
- source->data_size, DATA_SIZE_MAX);
- return -EINVAL;
- }
- if (source->data_size == 0)
- log_warning("Binary field with zero length");
-
- return 1;
-}
-
-static int get_data_data(RemoteSource *source, void **data) {
- int r;
-
- assert(source);
- assert(data);
- assert(source->state == STATE_DATA);
-
- r = fill_fixed_size(source, data, source->data_size);
- if (r <= 0)
- return r;
-
- return 1;
-}
-
-static int get_data_newline(RemoteSource *source) {
- int r;
- char *data;
-
- assert(source);
- assert(source->state == STATE_DATA_FINISH);
-
- r = fill_fixed_size(source, (void**) &data, 1);
- if (r <= 0)
- return r;
-
- assert(data);
- if (*data != '\n') {
- log_error("expected newline, got '%c'", *data);
- return -EINVAL;
- }
-
- return 1;
-}
-
-static int process_dunder(RemoteSource *source, char *line, size_t n) {
- const char *timestamp;
- int r;
-
- assert(line);
- assert(n > 0);
- assert(line[n-1] == '\n');
-
- /* XXX: is it worth to support timestamps in extended format?
- * We don't produce them, but who knows... */
-
- timestamp = startswith(line, "__CURSOR=");
- if (timestamp)
- /* ignore __CURSOR */
- return 1;
-
- timestamp = startswith(line, "__REALTIME_TIMESTAMP=");
- if (timestamp) {
- long long unsigned x;
- line[n-1] = '\0';
- r = safe_atollu(timestamp, &x);
- if (r < 0)
- log_warning("Failed to parse __REALTIME_TIMESTAMP: '%s'", timestamp);
- else
- source->ts.realtime = x;
- return r < 0 ? r : 1;
- }
-
- timestamp = startswith(line, "__MONOTONIC_TIMESTAMP=");
- if (timestamp) {
- long long unsigned x;
- line[n-1] = '\0';
- r = safe_atollu(timestamp, &x);
- if (r < 0)
- log_warning("Failed to parse __MONOTONIC_TIMESTAMP: '%s'", timestamp);
- else
- source->ts.monotonic = x;
- return r < 0 ? r : 1;
- }
-
- timestamp = startswith(line, "__");
- if (timestamp) {
- log_notice("Unknown dunder line %s", line);
- return 1;
- }
-
- /* no dunder */
- return 0;
-}
-
-static int process_data(RemoteSource *source) {
- int r;
-
- switch(source->state) {
- case STATE_LINE: {
- char *line, *sep;
- size_t n = 0;
-
- assert(source->data_size == 0);
-
- r = get_line(source, &line, &n);
- if (r < 0)
- return r;
- if (r == 0) {
- source->state = STATE_EOF;
- return r;
- }
- assert(n > 0);
- assert(line[n-1] == '\n');
-
- if (n == 1) {
- log_trace("Received empty line, event is ready");
- return 1;
- }
-
- r = process_dunder(source, line, n);
- if (r != 0)
- return r < 0 ? r : 0;
-
- /* MESSAGE=xxx\n
- or
- COREDUMP\n
- LLLLLLLL0011223344...\n
- */
- sep = memchr(line, '=', n);
- if (sep) {
- /* chomp newline */
- n--;
-
- r = iovw_put(&source->iovw, line, n);
- if (r < 0)
- return r;
- } else {
- /* replace \n with = */
- line[n-1] = '=';
-
- source->field_len = n;
- source->state = STATE_DATA_START;
-
- /* we cannot put the field in iovec until we have all data */
- }
-
- log_trace("Received: %.*s (%s)", (int) n, line, sep ? "text" : "binary");
-
- return 0; /* continue */
- }
-
- case STATE_DATA_START:
- assert(source->data_size == 0);
-
- r = get_data_size(source);
- // log_debug("get_data_size() -> %d", r);
- if (r < 0)
- return r;
- if (r == 0) {
- source->state = STATE_EOF;
- return 0;
- }
-
- source->state = source->data_size > 0 ?
- STATE_DATA : STATE_DATA_FINISH;
-
- return 0; /* continue */
-
- case STATE_DATA: {
- void *data;
- char *field;
-
- assert(source->data_size > 0);
-
- r = get_data_data(source, &data);
- // log_debug("get_data_data() -> %d", r);
- if (r < 0)
- return r;
- if (r == 0) {
- source->state = STATE_EOF;
- return 0;
- }
-
- assert(data);
-
- field = (char*) data - sizeof(uint64_t) - source->field_len;
- memmove(field + sizeof(uint64_t), field, source->field_len);
-
- r = iovw_put(&source->iovw, field + sizeof(uint64_t), source->field_len + source->data_size);
- if (r < 0)
- return r;
-
- source->state = STATE_DATA_FINISH;
-
- return 0; /* continue */
- }
-
- case STATE_DATA_FINISH:
- r = get_data_newline(source);
- // log_debug("get_data_newline() -> %d", r);
- if (r < 0)
- return r;
- if (r == 0) {
- source->state = STATE_EOF;
- return 0;
- }
-
- source->data_size = 0;
- source->state = STATE_LINE;
-
- return 0; /* continue */
- default:
- assert_not_reached("wtf?");
- }
-}
-
int process_source(RemoteSource *source, bool compress, bool seal) {
- size_t remain, target;
int r;
assert(source);
assert(source->writer);
- r = process_data(source);
+ r = journal_importer_process_data(&source->importer);
if (r <= 0)
return r;
/* We have a full event */
log_trace("Received full event from source@%p fd:%d (%s)",
- source, source->fd, source->name);
+ source, source->importer.fd, source->importer.name);
- if (!source->iovw.count) {
+ if (source->importer.iovw.count == 0) {
log_warning("Entry with no payload, skipping");
goto freeing;
}
- assert(source->iovw.iovec);
- assert(source->iovw.count);
+ assert(source->importer.iovw.iovec);
- r = writer_write(source->writer, &source->iovw, &source->ts, compress, seal);
+ r = writer_write(source->writer, &source->importer.iovw, &source->importer.ts, compress, seal);
if (r < 0)
log_error_errno(r, "Failed to write entry of %zu bytes: %m",
- iovw_size(&source->iovw));
+ iovw_size(&source->importer.iovw));
else
r = 1;
freeing:
- iovw_free_contents(&source->iovw);
-
- /* possibly reset buffer position */
- remain = source->filled - source->offset;
-
- if (remain == 0) /* no brainer */
- source->offset = source->scanned = source->filled = 0;
- else if (source->offset > source->size - source->filled &&
- source->offset > remain) {
- memcpy(source->buf, source->buf + source->offset, remain);
- source->offset = source->scanned = 0;
- source->filled = remain;
- }
-
- target = source->size;
- while (target > 16 * LINE_CHUNK && source->filled < target / 2)
- target /= 2;
- if (target < source->size) {
- char *tmp;
-
- tmp = realloc(source->buf, target);
- if (!tmp)
- log_warning("Failed to reallocate buffer to (smaller) size %zu",
- target);
- else {
- log_debug("Reallocated buffer from %zu to %zu bytes",
- source->size, target);
- source->buf = tmp;
- source->size = target;
- }
- }
-
+ journal_importer_drop_iovw(&source->importer);
return r;
}
diff --git a/src/journal-remote/journal-remote-parse.h b/src/journal-remote/journal-remote-parse.h
index 1740a21f92..e3632528cf 100644
--- a/src/journal-remote/journal-remote-parse.h
+++ b/src/journal-remote/journal-remote-parse.h
@@ -21,34 +21,11 @@
#include "sd-event.h"
+#include "journal-importer.h"
#include "journal-remote-write.h"
-typedef enum {
- STATE_LINE = 0, /* waiting to read, or reading line */
- STATE_DATA_START, /* reading binary data header */
- STATE_DATA, /* reading binary data */
- STATE_DATA_FINISH, /* expecting newline */
- STATE_EOF, /* done */
-} source_state;
-
typedef struct RemoteSource {
- char *name;
- int fd;
- bool passive_fd;
-
- char *buf;
- size_t size; /* total size of the buffer */
- size_t offset; /* offset to the beginning of live data in the buffer */
- size_t scanned; /* number of bytes since the beginning of data without a newline */
- size_t filled; /* total number of bytes in the buffer */
-
- size_t field_len; /* used for binary fields: the field name length */
- size_t data_size; /* and the size of the binary data chunk being processed */
-
- struct iovec_wrapper iovw;
-
- source_state state;
- dual_timestamp ts;
+ JournalImporter importer;
Writer *writer;
@@ -57,13 +34,5 @@ typedef struct RemoteSource {
} RemoteSource;
RemoteSource* source_new(int fd, bool passive_fd, char *name, Writer *writer);
-
-static inline size_t source_non_empty(RemoteSource *source) {
- assert(source);
-
- return source->filled;
-}
-
void source_free(RemoteSource *source);
-int push_data(RemoteSource *source, const char *data, size_t size);
int process_source(RemoteSource *source, bool compress, bool seal);
diff --git a/src/journal-remote/journal-remote-write.c b/src/journal-remote/journal-remote-write.c
index 8729372aa3..734cad333f 100644
--- a/src/journal-remote/journal-remote-write.c
+++ b/src/journal-remote/journal-remote-write.c
@@ -20,39 +20,6 @@
#include "alloc-util.h"
#include "journal-remote.h"
-int iovw_put(struct iovec_wrapper *iovw, void* data, size_t len) {
- if (!GREEDY_REALLOC(iovw->iovec, iovw->size_bytes, iovw->count + 1))
- return log_oom();
-
- iovw->iovec[iovw->count++] = (struct iovec) {data, len};
- return 0;
-}
-
-void iovw_free_contents(struct iovec_wrapper *iovw) {
- iovw->iovec = mfree(iovw->iovec);
- iovw->size_bytes = iovw->count = 0;
-}
-
-size_t iovw_size(struct iovec_wrapper *iovw) {
- size_t n = 0, i;
-
- for (i = 0; i < iovw->count; i++)
- n += iovw->iovec[i].iov_len;
-
- return n;
-}
-
-void iovw_rebase(struct iovec_wrapper *iovw, char *old, char *new) {
- size_t i;
-
- for (i = 0; i < iovw->count; i++)
- iovw->iovec[i].iov_base = (char*) iovw->iovec[i].iov_base - old + new;
-}
-
-/**********************************************************************
- **********************************************************************
- **********************************************************************/
-
static int do_rotate(JournalFile **f, bool compress, bool seal) {
int r = journal_file_rotate(f, compress, seal, NULL);
if (r < 0) {
diff --git a/src/journal-remote/journal-remote-write.h b/src/journal-remote/journal-remote-write.h
index 53ba45fc04..e04af54e55 100644
--- a/src/journal-remote/journal-remote-write.h
+++ b/src/journal-remote/journal-remote-write.h
@@ -20,20 +20,10 @@
***/
#include "journal-file.h"
+#include "journal-importer.h"
typedef struct RemoteServer RemoteServer;
-struct iovec_wrapper {
- struct iovec *iovec;
- size_t size_bytes;
- size_t count;
-};
-
-int iovw_put(struct iovec_wrapper *iovw, void* data, size_t len);
-void iovw_free_contents(struct iovec_wrapper *iovw);
-size_t iovw_size(struct iovec_wrapper *iovw);
-void iovw_rebase(struct iovec_wrapper *iovw, char *old, char *new);
-
typedef struct Writer {
JournalFile *journal;
JournalMetrics metrics;
diff --git a/src/journal-remote/journal-remote.c b/src/journal-remote/journal-remote.c
index d0d8d936e3..202a5a3f97 100644
--- a/src/journal-remote/journal-remote.c
+++ b/src/journal-remote/journal-remote.c
@@ -512,7 +512,8 @@ static int process_http_upload(
if (*upload_data_size) {
log_trace("Received %zu bytes", *upload_data_size);
- r = push_data(source, upload_data, *upload_data_size);
+ r = journal_importer_push_data(&source->importer,
+ upload_data, *upload_data_size);
if (r < 0)
return mhd_respond_oom(connection);
@@ -542,7 +543,7 @@ static int process_http_upload(
/* The upload is finished */
- remaining = source_non_empty(source);
+ remaining = journal_importer_bytes_remaining(&source->importer);
if (remaining > 0) {
log_warning("Premature EOF byte. %zu bytes lost.", remaining);
return mhd_respondf(connection,
@@ -1036,19 +1037,19 @@ static int handle_raw_source(sd_event_source *event,
assert(fd >= 0 && fd < (ssize_t) s->sources_size);
source = s->sources[fd];
- assert(source->fd == fd);
+ assert(source->importer.fd == fd);
r = process_source(source, arg_compress, arg_seal);
- if (source->state == STATE_EOF) {
+ if (journal_importer_eof(&source->importer)) {
size_t remaining;
- log_debug("EOF reached with source fd:%d (%s)",
- source->fd, source->name);
+ log_debug("EOF reached with source %s (fd=%d)",
+ source->importer.name, source->importer.fd);
- remaining = source_non_empty(source);
+ remaining = journal_importer_bytes_remaining(&source->importer);
if (remaining > 0)
log_notice("Premature EOF. %zu bytes lost.", remaining);
- remove_source(s, source->fd);
+ remove_source(s, source->importer.fd);
log_debug("%zu active sources remaining", s->active);
return 0;
} else if (r == -E2BIG) {
@@ -1072,7 +1073,7 @@ static int dispatch_raw_source_until_block(sd_event_source *event,
/* Make sure event stays around even if source is destroyed */
sd_event_source_ref(event);
- r = handle_raw_source(event, source->fd, EPOLLIN, server);
+ r = handle_raw_source(event, source->importer.fd, EPOLLIN, server);
if (r != 1)
/* No more data for now */
sd_event_source_set_enabled(event, SD_EVENT_OFF);
@@ -1105,7 +1106,7 @@ static int dispatch_blocking_source_event(sd_event_source *event,
void *userdata) {
RemoteSource *source = userdata;
- return handle_raw_source(event, source->fd, EPOLLIN, server);
+ return handle_raw_source(event, source->importer.fd, EPOLLIN, server);
}
static int accept_connection(const char* type, int fd,
diff --git a/src/journal/journald-kmsg.c b/src/journal/journald-kmsg.c
index 18c8644507..8afaec0ced 100644
--- a/src/journal/journald-kmsg.c
+++ b/src/journal/journald-kmsg.c
@@ -156,7 +156,8 @@ static void dev_kmsg_record(Server *s, const char *p, size_t l) {
/* Did we lose any? */
if (serial > *s->kernel_seqnum)
- server_driver_message(s, SD_MESSAGE_JOURNAL_MISSED,
+ server_driver_message(s,
+ "MESSAGE_ID=" SD_MESSAGE_JOURNAL_MISSED_STR,
LOG_MESSAGE("Missed %"PRIu64" kernel messages",
serial - *s->kernel_seqnum),
NULL);
diff --git a/src/journal/journald-native.c b/src/journal/journald-native.c
index 0a1ce205c2..3c03b83754 100644
--- a/src/journal/journald-native.c
+++ b/src/journal/journald-native.c
@@ -27,6 +27,7 @@
#include "fd-util.h"
#include "fs-util.h"
#include "io-util.h"
+#include "journal-importer.h"
#include "journald-console.h"
#include "journald-kmsg.h"
#include "journald-native.h"
diff --git a/src/journal/journald-native.h b/src/journal/journald-native.h
index c13b80aa4f..1ab415ac85 100644
--- a/src/journal/journald-native.h
+++ b/src/journal/journald-native.h
@@ -21,11 +21,6 @@
#include "journald-server.h"
-/* Make sure not to make this smaller than the maximum coredump
- * size. See COREDUMP_MAX in coredump.c */
-#define ENTRY_SIZE_MAX (1024*1024*770u)
-#define DATA_SIZE_MAX (1024*1024*768u)
-
bool valid_user_field(const char *p, size_t l, bool allow_protected);
void server_process_native_message(Server *s, const void *buffer, size_t buffer_size, const struct ucred *ucred, const struct timeval *tv, const char *label, size_t label_len);
diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c
index 8b92ea3def..451f16483f 100644
--- a/src/journal/journald-server.c
+++ b/src/journal/journald-server.c
@@ -214,7 +214,7 @@ void server_space_usage_message(Server *s, JournalStorage *storage) {
format_bytes(fb5, sizeof(fb5), storage->space.limit);
format_bytes(fb6, sizeof(fb6), storage->space.available);
- server_driver_message(s, SD_MESSAGE_JOURNAL_USAGE,
+ server_driver_message(s, "MESSAGE_ID=" SD_MESSAGE_JOURNAL_USAGE_STR,
LOG_MESSAGE("%s (%s) is %s, max %s, %s free.",
storage->name, storage->path, fb1, fb5, fb6),
"JOURNAL_NAME=%s", storage->name,
@@ -1061,8 +1061,7 @@ static void dispatch_message_real(
write_to_journal(s, journal_uid, iovec, n, priority);
}
-void server_driver_message(Server *s, sd_id128_t message_id, const char *format, ...) {
- char mid[11 + 32 + 1];
+void server_driver_message(Server *s, const char *message_id, const char *format, ...) {
struct iovec iovec[N_IOVEC_META_FIELDS + 5 + N_IOVEC_PAYLOAD_FIELDS];
unsigned n = 0, m;
int r;
@@ -1080,11 +1079,8 @@ void server_driver_message(Server *s, sd_id128_t message_id, const char *format,
assert_cc(6 == LOG_INFO);
IOVEC_SET_STRING(iovec[n++], "PRIORITY=6");
- if (!sd_id128_is_null(message_id)) {
- snprintf(mid, sizeof(mid), LOG_MESSAGE_ID(message_id));
- IOVEC_SET_STRING(iovec[n++], mid);
- }
-
+ if (message_id)
+ IOVEC_SET_STRING(iovec[n++], message_id);
m = n;
va_start(ap, format);
@@ -1174,7 +1170,7 @@ void server_dispatch_message(
/* Write a suppression message if we suppressed something */
if (rl > 1)
- server_driver_message(s, SD_MESSAGE_JOURNAL_DROPPED,
+ server_driver_message(s, "MESSAGE_ID=" SD_MESSAGE_JOURNAL_DROPPED_STR,
LOG_MESSAGE("Suppressed %u messages from %s", rl - 1, path),
NULL);
@@ -1273,7 +1269,7 @@ finish:
sd_journal_close(j);
- server_driver_message(s, SD_ID128_NULL,
+ server_driver_message(s, NULL,
LOG_MESSAGE("Time spent on flushing to /var is %s for %u entries.",
format_timespan(ts, sizeof(ts), now(CLOCK_MONOTONIC) - start, 0),
n),
diff --git a/src/journal/journald-server.h b/src/journal/journald-server.h
index 716e758b7c..75ac114d24 100644
--- a/src/journal/journald-server.h
+++ b/src/journal/journald-server.h
@@ -176,7 +176,7 @@ struct Server {
#define N_IOVEC_PAYLOAD_FIELDS 15
void server_dispatch_message(Server *s, struct iovec *iovec, unsigned n, unsigned m, const struct ucred *ucred, const struct timeval *tv, const char *label, size_t label_len, const char *unit_id, int priority, pid_t object_pid);
-void server_driver_message(Server *s, sd_id128_t message_id, const char *format, ...) _printf_(3,0) _sentinel_;
+void server_driver_message(Server *s, const char *message_id, const char *format, ...) _printf_(3,0) _sentinel_;
/* gperf lookup function */
const struct ConfigPerfItem* journald_gperf_lookup(const char *key, GPERF_LEN_TYPE length);
diff --git a/src/journal/journald-syslog.c b/src/journal/journald-syslog.c
index 896303fb85..474369039a 100644
--- a/src/journal/journald-syslog.c
+++ b/src/journal/journald-syslog.c
@@ -444,7 +444,8 @@ void server_maybe_warn_forward_syslog_missed(Server *s) {
if (s->last_warn_forward_syslog_missed + WARN_FORWARD_SYSLOG_MISSED_USEC > n)
return;
- server_driver_message(s, SD_MESSAGE_FORWARD_SYSLOG_MISSED,
+ server_driver_message(s,
+ "MESSAGE_ID=" SD_MESSAGE_FORWARD_SYSLOG_MISSED_STR,
LOG_MESSAGE("Forwarding to syslog missed %u messages.",
s->n_forward_syslog_missed),
NULL);
diff --git a/src/journal/journald.c b/src/journal/journald.c
index 54fd1f999d..1aaef387b4 100644
--- a/src/journal/journald.c
+++ b/src/journal/journald.c
@@ -56,7 +56,8 @@ int main(int argc, char *argv[]) {
server_flush_dev_kmsg(&server);
log_debug("systemd-journald running as pid "PID_FMT, getpid());
- server_driver_message(&server, SD_MESSAGE_JOURNAL_START,
+ server_driver_message(&server,
+ "MESSAGE_ID=" SD_MESSAGE_JOURNAL_START_STR,
LOG_MESSAGE("Journal started"),
NULL);
@@ -114,7 +115,8 @@ int main(int argc, char *argv[]) {
}
log_debug("systemd-journald stopped as pid "PID_FMT, getpid());
- server_driver_message(&server, SD_MESSAGE_JOURNAL_STOP,
+ server_driver_message(&server,
+ "MESSAGE_ID=" SD_MESSAGE_JOURNAL_STOP_STR,
LOG_MESSAGE("Journal stopped"),
NULL);
diff --git a/src/libsystemd-network/sd-ipv4acd.c b/src/libsystemd-network/sd-ipv4acd.c
index 4dd343c101..2ebc00f247 100644
--- a/src/libsystemd-network/sd-ipv4acd.c
+++ b/src/libsystemd-network/sd-ipv4acd.c
@@ -242,8 +242,6 @@ static int ipv4acd_on_timeout(sd_event_source *s, uint64_t usec, void *userdata)
r = ipv4acd_set_next_wakeup(acd, RATE_LIMIT_INTERVAL_USEC, PROBE_WAIT_USEC);
if (r < 0)
goto fail;
-
- acd->n_conflict = 0;
} else {
r = ipv4acd_set_next_wakeup(acd, 0, PROBE_WAIT_USEC);
if (r < 0)
diff --git a/src/login/logind-button.c b/src/login/logind-button.c
index 90fb93bbaf..d739af8ea2 100644
--- a/src/login/logind-button.c
+++ b/src/login/logind-button.c
@@ -155,7 +155,7 @@ static int button_dispatch(sd_event_source *s, int fd, uint32_t revents, void *u
case KEY_POWER2:
log_struct(LOG_INFO,
LOG_MESSAGE("Power key pressed."),
- LOG_MESSAGE_ID(SD_MESSAGE_POWER_KEY),
+ "MESSAGE_ID=" SD_MESSAGE_POWER_KEY_STR,
NULL);
manager_handle_action(b->manager, INHIBIT_HANDLE_POWER_KEY, b->manager->handle_power_key, b->manager->power_key_ignore_inhibited, true);
@@ -170,7 +170,7 @@ static int button_dispatch(sd_event_source *s, int fd, uint32_t revents, void *u
case KEY_SLEEP:
log_struct(LOG_INFO,
LOG_MESSAGE("Suspend key pressed."),
- LOG_MESSAGE_ID(SD_MESSAGE_SUSPEND_KEY),
+ "MESSAGE_ID=" SD_MESSAGE_SUSPEND_KEY_STR,
NULL);
manager_handle_action(b->manager, INHIBIT_HANDLE_SUSPEND_KEY, b->manager->handle_suspend_key, b->manager->suspend_key_ignore_inhibited, true);
@@ -179,7 +179,7 @@ static int button_dispatch(sd_event_source *s, int fd, uint32_t revents, void *u
case KEY_SUSPEND:
log_struct(LOG_INFO,
LOG_MESSAGE("Hibernate key pressed."),
- LOG_MESSAGE_ID(SD_MESSAGE_HIBERNATE_KEY),
+ "MESSAGE_ID=" SD_MESSAGE_HIBERNATE_KEY_STR,
NULL);
manager_handle_action(b->manager, INHIBIT_HANDLE_HIBERNATE_KEY, b->manager->handle_hibernate_key, b->manager->hibernate_key_ignore_inhibited, true);
@@ -191,7 +191,7 @@ static int button_dispatch(sd_event_source *s, int fd, uint32_t revents, void *u
if (ev.code == SW_LID) {
log_struct(LOG_INFO,
LOG_MESSAGE("Lid closed."),
- LOG_MESSAGE_ID(SD_MESSAGE_LID_CLOSED),
+ "MESSAGE_ID=" SD_MESSAGE_LID_CLOSED_STR,
NULL);
b->lid_closed = true;
@@ -201,7 +201,7 @@ static int button_dispatch(sd_event_source *s, int fd, uint32_t revents, void *u
} else if (ev.code == SW_DOCK) {
log_struct(LOG_INFO,
LOG_MESSAGE("System docked."),
- LOG_MESSAGE_ID(SD_MESSAGE_SYSTEM_DOCKED),
+ "MESSAGE_ID=" SD_MESSAGE_SYSTEM_DOCKED_STR,
NULL);
b->docked = true;
@@ -212,7 +212,7 @@ static int button_dispatch(sd_event_source *s, int fd, uint32_t revents, void *u
if (ev.code == SW_LID) {
log_struct(LOG_INFO,
LOG_MESSAGE("Lid opened."),
- LOG_MESSAGE_ID(SD_MESSAGE_LID_OPENED),
+ "MESSAGE_ID=" SD_MESSAGE_LID_OPENED_STR,
NULL);
b->lid_closed = false;
@@ -221,7 +221,7 @@ static int button_dispatch(sd_event_source *s, int fd, uint32_t revents, void *u
} else if (ev.code == SW_DOCK) {
log_struct(LOG_INFO,
LOG_MESSAGE("System undocked."),
- LOG_MESSAGE_ID(SD_MESSAGE_SYSTEM_UNDOCKED),
+ "MESSAGE_ID=" SD_MESSAGE_SYSTEM_UNDOCKED_STR,
NULL);
b->docked = false;
diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c
index ad44ca290e..c6be596af3 100644
--- a/src/login/logind-dbus.c
+++ b/src/login/logind-dbus.c
@@ -1430,7 +1430,7 @@ static int bus_manager_log_shutdown(
p = strjoina(p, " (", m->wall_message, ").");
return log_struct(LOG_NOTICE,
- LOG_MESSAGE_ID(SD_MESSAGE_SHUTDOWN),
+ "MESSAGE_ID=" SD_MESSAGE_SHUTDOWN_STR,
p,
q,
NULL);
diff --git a/src/login/logind-seat.c b/src/login/logind-seat.c
index bfbd07309d..e4836fcaab 100644
--- a/src/login/logind-seat.c
+++ b/src/login/logind-seat.c
@@ -416,7 +416,7 @@ int seat_start(Seat *s) {
return 0;
log_struct(LOG_INFO,
- LOG_MESSAGE_ID(SD_MESSAGE_SEAT_START),
+ "MESSAGE_ID=" SD_MESSAGE_SEAT_START_STR,
"SEAT_ID=%s", s->id,
LOG_MESSAGE("New seat %s.", s->id),
NULL);
@@ -444,7 +444,7 @@ int seat_stop(Seat *s, bool force) {
if (s->started)
log_struct(LOG_INFO,
- LOG_MESSAGE_ID(SD_MESSAGE_SEAT_STOP),
+ "MESSAGE_ID=" SD_MESSAGE_SEAT_STOP_STR,
"SEAT_ID=%s", s->id,
LOG_MESSAGE("Removed seat %s.", s->id),
NULL);
diff --git a/src/login/logind-session.c b/src/login/logind-session.c
index fd7fcf7f2c..4a168906d6 100644
--- a/src/login/logind-session.c
+++ b/src/login/logind-session.c
@@ -561,7 +561,7 @@ int session_start(Session *s) {
return r;
log_struct(s->class == SESSION_BACKGROUND ? LOG_DEBUG : LOG_INFO,
- LOG_MESSAGE_ID(SD_MESSAGE_SESSION_START),
+ "MESSAGE_ID=" SD_MESSAGE_SESSION_START_STR,
"SESSION_ID=%s", s->id,
"USER_ID=%s", s->user->name,
"LEADER="PID_FMT, s->leader,
@@ -666,7 +666,7 @@ int session_finalize(Session *s) {
if (s->started)
log_struct(s->class == SESSION_BACKGROUND ? LOG_DEBUG : LOG_INFO,
- LOG_MESSAGE_ID(SD_MESSAGE_SESSION_STOP),
+ "MESSAGE_ID=" SD_MESSAGE_SESSION_STOP_STR,
"SESSION_ID=%s", s->id,
"USER_ID=%s", s->user->name,
"LEADER="PID_FMT, s->leader,
diff --git a/src/machine/image-dbus.c b/src/machine/image-dbus.c
index d5051007fc..2f69e2c7b7 100644
--- a/src/machine/image-dbus.c
+++ b/src/machine/image-dbus.c
@@ -374,7 +374,7 @@ static int raw_image_get_os_release(Image *image, char ***ret, sd_bus_error *err
if (fd < 0)
_exit(EXIT_FAILURE);
- r = copy_bytes(fd, pair[1], (uint64_t) -1, false);
+ r = copy_bytes(fd, pair[1], (uint64_t) -1, 0);
if (r < 0)
_exit(EXIT_FAILURE);
diff --git a/src/machine/machine-dbus.c b/src/machine/machine-dbus.c
index af745b6567..36568b65ef 100644
--- a/src/machine/machine-dbus.c
+++ b/src/machine/machine-dbus.c
@@ -411,7 +411,7 @@ int bus_machine_method_get_os_release(sd_bus_message *message, void *userdata, s
if (fd < 0)
_exit(EXIT_FAILURE);
- r = copy_bytes(fd, pair[1], (uint64_t) -1, false);
+ r = copy_bytes(fd, pair[1], (uint64_t) -1, 0);
if (r < 0)
_exit(EXIT_FAILURE);
@@ -841,6 +841,7 @@ int bus_machine_method_bind_mount(sd_bus_message *message, void *userdata, sd_bu
int read_only, make_directory;
pid_t child;
siginfo_t si;
+ uid_t uid;
int r;
assert(message);
@@ -875,6 +876,12 @@ int bus_machine_method_bind_mount(sd_bus_message *message, void *userdata, sd_bu
if (r == 0)
return 1; /* Will call us back */
+ r = machine_get_uid_shift(m, &uid);
+ if (r < 0)
+ return r;
+ if (uid != 0)
+ return sd_bus_error_setf(error, SD_BUS_ERROR_NOT_SUPPORTED, "Can't bind mount on container with user namespacing applied.");
+
/* One day, when bind mounting /proc/self/fd/n works across
* namespace boundaries we should rework this logic to make
* use of it... */
@@ -1055,10 +1062,12 @@ finish:
int bus_machine_method_copy(sd_bus_message *message, void *userdata, sd_bus_error *error) {
const char *src, *dest, *host_path, *container_path, *host_basename, *host_dirname, *container_basename, *container_dirname;
_cleanup_close_pair_ int errno_pipe_fd[2] = { -1, -1 };
+ CopyFlags copy_flags = COPY_REFLINK|COPY_MERGE;
_cleanup_close_ int hostfd = -1;
Machine *m = userdata;
bool copy_from;
pid_t child;
+ uid_t uid_shift;
char *t;
int r;
@@ -1097,6 +1106,10 @@ int bus_machine_method_copy(sd_bus_message *message, void *userdata, sd_bus_erro
if (r == 0)
return 1; /* Will call us back */
+ r = machine_get_uid_shift(m, &uid_shift);
+ if (r < 0)
+ return r;
+
copy_from = strstr(sd_bus_message_get_member(message), "CopyFrom");
if (copy_from) {
@@ -1151,10 +1164,13 @@ int bus_machine_method_copy(sd_bus_message *message, void *userdata, sd_bus_erro
goto child_fail;
}
+ /* Run the actual copy operation. Note that when an UID shift is set we'll either clamp the UID/GID to
+ * 0 or to the actual UID shift depending on the direction we copy. If no UID shift is set we'll copy
+ * the UID/GIDs as they are. */
if (copy_from)
- r = copy_tree_at(containerfd, container_basename, hostfd, host_basename, true);
+ r = copy_tree_at(containerfd, container_basename, hostfd, host_basename, uid_shift == 0 ? UID_INVALID : 0, uid_shift == 0 ? GID_INVALID : 0, copy_flags);
else
- r = copy_tree_at(hostfd, host_basename, containerfd, container_basename, true);
+ r = copy_tree_at(hostfd, host_basename, containerfd, container_basename, uid_shift == 0 ? UID_INVALID : uid_shift, uid_shift == 0 ? GID_INVALID : uid_shift, copy_flags);
hostfd = safe_close(hostfd);
containerfd = safe_close(containerfd);
@@ -1276,6 +1292,32 @@ int bus_machine_method_open_root_directory(sd_bus_message *message, void *userda
return sd_bus_reply_method_return(message, "h", fd);
}
+int bus_machine_method_get_uid_shift(sd_bus_message *message, void *userdata, sd_bus_error *error) {
+ Machine *m = userdata;
+ uid_t shift = 0;
+ int r;
+
+ assert(message);
+ assert(m);
+
+ /* You wonder why this is a method and not a property? Well, properties are not supposed to return errors, but
+ * we kinda have to for this. */
+
+ if (m->class == MACHINE_HOST)
+ return sd_bus_reply_method_return(message, "u", UINT32_C(0));
+
+ if (m->class != MACHINE_CONTAINER)
+ return sd_bus_error_setf(error, SD_BUS_ERROR_NOT_SUPPORTED, "UID/GID shift may only be determined for container machines.");
+
+ r = machine_get_uid_shift(m, &shift);
+ if (r == -ENXIO)
+ return sd_bus_error_setf(error, SD_BUS_ERROR_NOT_SUPPORTED, "Machine %s uses a complex UID/GID mapping, cannot determine shift", m->name);
+ if (r < 0)
+ return r;
+
+ return sd_bus_reply_method_return(message, "u", (uint32_t) shift);
+}
+
const sd_bus_vtable machine_vtable[] = {
SD_BUS_VTABLE_START(0),
SD_BUS_PROPERTY("Name", "s", NULL, offsetof(Machine, name), SD_BUS_VTABLE_PROPERTY_CONST),
@@ -1293,6 +1335,7 @@ const sd_bus_vtable machine_vtable[] = {
SD_BUS_METHOD("Kill", "si", NULL, bus_machine_method_kill, SD_BUS_VTABLE_UNPRIVILEGED),
SD_BUS_METHOD("GetAddresses", NULL, "a(iay)", bus_machine_method_get_addresses, SD_BUS_VTABLE_UNPRIVILEGED),
SD_BUS_METHOD("GetOSRelease", NULL, "a{ss}", bus_machine_method_get_os_release, SD_BUS_VTABLE_UNPRIVILEGED),
+ SD_BUS_METHOD("GetUIDShift", NULL, "u", bus_machine_method_get_uid_shift, SD_BUS_VTABLE_UNPRIVILEGED),
SD_BUS_METHOD("OpenPTY", NULL, "hs", bus_machine_method_open_pty, SD_BUS_VTABLE_UNPRIVILEGED),
SD_BUS_METHOD("OpenLogin", NULL, "hs", bus_machine_method_open_login, SD_BUS_VTABLE_UNPRIVILEGED),
SD_BUS_METHOD("OpenShell", "ssasas", "hs", bus_machine_method_open_shell, SD_BUS_VTABLE_UNPRIVILEGED),
diff --git a/src/machine/machine-dbus.h b/src/machine/machine-dbus.h
index c513783480..2aa7b4ce06 100644
--- a/src/machine/machine-dbus.h
+++ b/src/machine/machine-dbus.h
@@ -39,6 +39,7 @@ int bus_machine_method_open_shell(sd_bus_message *message, void *userdata, sd_bu
int bus_machine_method_bind_mount(sd_bus_message *message, void *userdata, sd_bus_error *error);
int bus_machine_method_copy(sd_bus_message *message, void *userdata, sd_bus_error *error);
int bus_machine_method_open_root_directory(sd_bus_message *message, void *userdata, sd_bus_error *error);
+int bus_machine_method_get_uid_shift(sd_bus_message *message, void *userdata, sd_bus_error *error);
int machine_send_signal(Machine *m, bool new_machine);
int machine_send_create_reply(Machine *m, sd_bus_error *error);
diff --git a/src/machine/machine.c b/src/machine/machine.c
index eb4b35d52a..d3433d9b96 100644
--- a/src/machine/machine.c
+++ b/src/machine/machine.c
@@ -38,6 +38,7 @@
#include "parse-util.h"
#include "process-util.h"
#include "special.h"
+#include "stdio-util.h"
#include "string-table.h"
#include "terminal-util.h"
#include "unit-name.h"
@@ -401,7 +402,7 @@ int machine_start(Machine *m, sd_bus_message *properties, sd_bus_error *error) {
return r;
log_struct(LOG_INFO,
- LOG_MESSAGE_ID(SD_MESSAGE_MACHINE_START),
+ "MESSAGE_ID=" SD_MESSAGE_MACHINE_START_STR,
"NAME=%s", m->name,
"LEADER="PID_FMT, m->leader,
LOG_MESSAGE("New machine %s.", m->name),
@@ -464,7 +465,7 @@ int machine_finalize(Machine *m) {
if (m->started)
log_struct(LOG_INFO,
- LOG_MESSAGE_ID(SD_MESSAGE_MACHINE_STOP),
+ "MESSAGE_ID=" SD_MESSAGE_MACHINE_STOP_STR,
"NAME=%s", m->name,
"LEADER="PID_FMT, m->leader,
LOG_MESSAGE("Machine %s terminated.", m->name),
@@ -604,6 +605,96 @@ void machine_release_unit(Machine *m) {
m->unit = mfree(m->unit);
}
+int machine_get_uid_shift(Machine *m, uid_t *ret) {
+ char p[strlen("/proc//uid_map") + DECIMAL_STR_MAX(pid_t) + 1];
+ uid_t uid_base, uid_shift, uid_range;
+ gid_t gid_base, gid_shift, gid_range;
+ _cleanup_fclose_ FILE *f = NULL;
+ int k;
+
+ assert(m);
+ assert(ret);
+
+ /* Return the base UID/GID of the specified machine. Note that this only works for containers with simple
+ * mappings. In most cases setups should be simple like this, and administrators should only care about the
+ * basic offset a container has relative to the host. This is what this function exposes.
+ *
+ * If we encounter any more complex mappings we politely refuse this with ENXIO. */
+
+ if (m->class == MACHINE_HOST) {
+ *ret = 0;
+ return 0;
+ }
+
+ if (m->class != MACHINE_CONTAINER)
+ return -EOPNOTSUPP;
+
+ xsprintf(p, "/proc/" PID_FMT "/uid_map", m->leader);
+ f = fopen(p, "re");
+ if (!f) {
+ if (errno == ENOENT) {
+ /* If the file doesn't exist, user namespacing is off in the kernel, return a zero mapping hence. */
+ *ret = 0;
+ return 0;
+ }
+
+ return -errno;
+ }
+
+ /* Read the first line. There's at least one. */
+ errno = 0;
+ k = fscanf(f, UID_FMT " " UID_FMT " " UID_FMT "\n", &uid_base, &uid_shift, &uid_range);
+ if (k != 3) {
+ if (ferror(f))
+ return -errno;
+
+ return -EBADMSG;
+ }
+
+ /* Not a mapping starting at 0? Then it's a complex mapping we can't expose here. */
+ if (uid_base != 0)
+ return -ENXIO;
+ /* Insist that at least the nobody user is mapped, everything else is weird, and hence complex, and we don't support it */
+ if (uid_range < (uid_t) 65534U)
+ return -ENXIO;
+
+ /* If there's more than one line, then we don't support this mapping. */
+ if (fgetc(f) != EOF)
+ return -ENXIO;
+
+ fclose(f);
+
+ xsprintf(p, "/proc/" PID_FMT "/gid_map", m->leader);
+ f = fopen(p, "re");
+ if (!f)
+ return -errno;
+
+ /* Read the first line. There's at least one. */
+ errno = 0;
+ k = fscanf(f, GID_FMT " " GID_FMT " " GID_FMT "\n", &gid_base, &gid_shift, &gid_range);
+ if (k != 3) {
+ if (ferror(f))
+ return -errno;
+
+ return -EBADMSG;
+ }
+
+ /* If there's more than one line, then we don't support this file. */
+ if (fgetc(f) != EOF)
+ return -ENXIO;
+
+ /* If the UID and GID mapping doesn't match, we don't support this mapping. */
+ if (uid_base != (uid_t) gid_base)
+ return -ENXIO;
+ if (uid_shift != (uid_t) gid_shift)
+ return -ENXIO;
+ if (uid_range != (uid_t) gid_range)
+ return -ENXIO;
+
+ *ret = uid_shift;
+ return 0;
+}
+
static const char* const machine_class_table[_MACHINE_CLASS_MAX] = {
[MACHINE_CONTAINER] = "container",
[MACHINE_VM] = "vm",
diff --git a/src/machine/machine.h b/src/machine/machine.h
index e5d75361a9..6bdb204ed6 100644
--- a/src/machine/machine.h
+++ b/src/machine/machine.h
@@ -108,3 +108,5 @@ KillWho kill_who_from_string(const char *s) _pure_;
int machine_openpt(Machine *m, int flags);
int machine_open_terminal(Machine *m, const char *path, int mode);
+
+int machine_get_uid_shift(Machine *m, uid_t *ret);
diff --git a/src/machine/machinectl.c b/src/machine/machinectl.c
index fe4f1b7726..28384286fb 100644
--- a/src/machine/machinectl.c
+++ b/src/machine/machinectl.c
@@ -327,8 +327,10 @@ static int list_machines(int argc, char *argv[], void *userdata) {
(int) max_version_id, strdash_if_empty(machines[j].version_id));
r = print_addresses(bus, machines[j].name, 0, "", prefix, arg_addrs);
- if (r == -EOPNOTSUPP)
- printf("-\n");
+ if (r <= 0) /* error or no addresses defined? */
+ fputs("-\n", stdout);
+ else
+ fputc('\n', stdout);
}
if (arg_legend) {
@@ -520,6 +522,7 @@ static int print_addresses(sd_bus *bus, const char *name, int ifi, const char *p
_cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL;
_cleanup_free_ char *addresses = NULL;
bool truncate = false;
+ unsigned n = 0;
int r;
assert(bus);
@@ -567,7 +570,7 @@ static int print_addresses(sd_bus *bus, const char *name, int ifi, const char *p
else
strcpy(buf_ifi, "");
- if(!strextend(&addresses, prefix, inet_ntop(family, a, buffer, sizeof(buffer)), buf_ifi, NULL))
+ if (!strextend(&addresses, prefix, inet_ntop(family, a, buffer, sizeof(buffer)), buf_ifi, NULL))
return log_oom();
} else
truncate = true;
@@ -581,6 +584,8 @@ static int print_addresses(sd_bus *bus, const char *name, int ifi, const char *p
if (n_addr > 0)
n_addr -= 1;
+
+ n++;
}
if (r < 0)
return bus_log_parse_error(r);
@@ -589,8 +594,10 @@ static int print_addresses(sd_bus *bus, const char *name, int ifi, const char *p
if (r < 0)
return bus_log_parse_error(r);
- fprintf(stdout, "%s%s\n", addresses, truncate ? "..." : "");
- return 0;
+ if (n > 0)
+ fprintf(stdout, "%s%s", addresses, truncate ? "..." : "");
+
+ return (int) n;
}
static int print_os_release(sd_bus *bus, const char *method, const char *name, const char *prefix) {
@@ -611,6 +618,37 @@ static int print_os_release(sd_bus *bus, const char *method, const char *name, c
return 0;
}
+static int print_uid_shift(sd_bus *bus, const char *name) {
+ _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
+ _cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL;
+ uint32_t shift;
+ int r;
+
+ assert(bus);
+ assert(name);
+
+ r = sd_bus_call_method(bus,
+ "org.freedesktop.machine1",
+ "/org/freedesktop/machine1",
+ "org.freedesktop.machine1.Manager",
+ "GetMachineUIDShift",
+ &error,
+ &reply,
+ "s", name);
+ if (r < 0)
+ return log_debug_errno(r, "Failed to query UID/GID shift: %s", bus_error_message(&error, r));
+
+ r = sd_bus_message_read(reply, "u", &shift);
+ if (r < 0)
+ return r;
+
+ if (shift == 0) /* Don't show trivial mappings */
+ return 0;
+
+ printf(" UID Shift: %" PRIu32 "\n", shift);
+ return 0;
+}
+
typedef struct MachineStatusInfo {
char *name;
sd_id128_t id;
@@ -707,13 +745,16 @@ static void print_machine_status_info(sd_bus *bus, MachineStatusInfo *i) {
fputc('\n', stdout);
}
- print_addresses(bus, i->name, ifi,
- "\t Address: ",
- "\n\t ",
- ALL_IP_ADDRESSES);
+ if (print_addresses(bus, i->name, ifi,
+ "\t Address: ",
+ "\n\t ",
+ ALL_IP_ADDRESSES) > 0)
+ fputc('\n', stdout);
print_os_release(bus, "GetMachineOSRelease", i->name, "\t OS: ");
+ print_uid_shift(bus, i->name);
+
if (i->unit) {
printf("\t Unit: %s\n", i->unit);
show_unit_cgroup(bus, i->unit, i->leader);
diff --git a/src/machine/machined-dbus.c b/src/machine/machined-dbus.c
index fd9e5b56fc..c9b92d2765 100644
--- a/src/machine/machined-dbus.c
+++ b/src/machine/machined-dbus.c
@@ -729,6 +729,26 @@ static int method_open_machine_root_directory(sd_bus_message *message, void *use
return bus_machine_method_open_root_directory(message, machine, error);
}
+static int method_get_machine_uid_shift(sd_bus_message *message, void *userdata, sd_bus_error *error) {
+ Manager *m = userdata;
+ Machine *machine;
+ const char *name;
+ int r;
+
+ assert(message);
+ assert(m);
+
+ r = sd_bus_message_read(message, "s", &name);
+ if (r < 0)
+ return r;
+
+ machine = hashmap_get(m->machines, name);
+ if (!machine)
+ return sd_bus_error_setf(error, BUS_ERROR_NO_SUCH_MACHINE, "No machine '%s' known", name);
+
+ return bus_machine_method_get_uid_shift(message, machine, error);
+}
+
static int method_remove_image(sd_bus_message *message, void *userdata, sd_bus_error *error) {
_cleanup_(image_unrefp) Image* i = NULL;
const char *name;
@@ -1416,6 +1436,7 @@ const sd_bus_vtable manager_vtable[] = {
SD_BUS_METHOD("CopyFromMachine", "sss", NULL, method_copy_machine, SD_BUS_VTABLE_UNPRIVILEGED),
SD_BUS_METHOD("CopyToMachine", "sss", NULL, method_copy_machine, SD_BUS_VTABLE_UNPRIVILEGED),
SD_BUS_METHOD("OpenMachineRootDirectory", "s", "h", method_open_machine_root_directory, SD_BUS_VTABLE_UNPRIVILEGED),
+ SD_BUS_METHOD("GetMachineUIDShift", "s", "u", method_get_machine_uid_shift, SD_BUS_VTABLE_UNPRIVILEGED),
SD_BUS_METHOD("RemoveImage", "s", NULL, method_remove_image, SD_BUS_VTABLE_UNPRIVILEGED),
SD_BUS_METHOD("RenameImage", "ss", NULL, method_rename_image, SD_BUS_VTABLE_UNPRIVILEGED),
SD_BUS_METHOD("CloneImage", "ssb", NULL, method_clone_image, SD_BUS_VTABLE_UNPRIVILEGED),
diff --git a/src/machine/operation.c b/src/machine/operation.c
index c966d0d21c..f7d5310f44 100644
--- a/src/machine/operation.c
+++ b/src/machine/operation.c
@@ -61,8 +61,10 @@ static int operation_done(sd_event_source *s, const siginfo_t *si, void *userdat
} else {
/* The default operation when done is to simply return an error on failure or an empty success
* message on success. */
- if (r < 0)
+ if (r < 0) {
+ sd_bus_error_set_errno(&error, r);
goto fail;
+ }
r = sd_bus_reply_method_return(o->message, NULL);
if (r < 0)
diff --git a/src/machine/org.freedesktop.machine1.conf b/src/machine/org.freedesktop.machine1.conf
index 82ebfba50c..daa365a9dd 100644
--- a/src/machine/org.freedesktop.machine1.conf
+++ b/src/machine/org.freedesktop.machine1.conf
@@ -66,6 +66,10 @@
<allow send_destination="org.freedesktop.machine1"
send_interface="org.freedesktop.machine1.Manager"
+ send_member="GetMachineUIDShift"/>
+
+ <allow send_destination="org.freedesktop.machine1"
+ send_interface="org.freedesktop.machine1.Manager"
send_member="OpenMachineLogin"/>
<allow send_destination="org.freedesktop.machine1"
@@ -150,6 +154,10 @@
<allow send_destination="org.freedesktop.machine1"
send_interface="org.freedesktop.machine1.Machine"
+ send_member="GetUIDShift"/>
+
+ <allow send_destination="org.freedesktop.machine1"
+ send_interface="org.freedesktop.machine1.Machine"
send_member="OpenLogin"/>
<allow send_destination="org.freedesktop.machine1"
diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
index b172b44933..efd3b014a3 100644
--- a/src/nspawn/nspawn.c
+++ b/src/nspawn/nspawn.c
@@ -1364,7 +1364,7 @@ static int setup_resolv_conf(const char *dest) {
}
/* If that didn't work, let's copy the file */
- r = copy_file("/etc/resolv.conf", where, O_TRUNC|O_NOFOLLOW, 0644, 0);
+ r = copy_file("/etc/resolv.conf", where, O_TRUNC|O_NOFOLLOW, 0644, 0, COPY_REFLINK);
if (r < 0) {
/* If the file already exists as symlink, let's suppress the warning, under the assumption that
* resolved or something similar runs inside and the symlink points there.
@@ -3700,7 +3700,7 @@ int main(int argc, char *argv[]) {
goto finish;
}
- r = copy_file(arg_image, np, O_EXCL, arg_read_only ? 0400 : 0600, FS_NOCOW_FL);
+ r = copy_file(arg_image, np, O_EXCL, arg_read_only ? 0400 : 0600, FS_NOCOW_FL, COPY_REFLINK);
if (r < 0) {
r = log_error_errno(r, "Failed to copy image file: %m");
goto finish;
@@ -3856,7 +3856,7 @@ finish:
/* Try to flush whatever is still queued in the pty */
if (master >= 0) {
- (void) copy_bytes(master, STDOUT_FILENO, (uint64_t) -1, false);
+ (void) copy_bytes(master, STDOUT_FILENO, (uint64_t) -1, 0);
master = safe_close(master);
}
diff --git a/src/nss-myhostname/nss-myhostname.c b/src/nss-myhostname/nss-myhostname.c
index 326672cab5..0570fde592 100644
--- a/src/nss-myhostname/nss-myhostname.c
+++ b/src/nss-myhostname/nss-myhostname.c
@@ -114,8 +114,8 @@ enum nss_status _nss_myhostname_gethostbyname4_r(
l = strlen(canonical);
ms = ALIGN(l+1) + ALIGN(sizeof(struct gaih_addrtuple)) * (n_addresses > 0 ? n_addresses : 2);
if (buflen < ms) {
- *errnop = ENOMEM;
- *h_errnop = NO_RECOVERY;
+ *errnop = ERANGE;
+ *h_errnop = NETDB_INTERNAL;
return NSS_STATUS_TRYAGAIN;
}
@@ -220,8 +220,8 @@ static enum nss_status fill_in_hostent(
(c > 0 ? c+1 : 2) * sizeof(char*);
if (buflen < ms) {
- *errnop = ENOMEM;
- *h_errnop = NO_RECOVERY;
+ *errnop = ERANGE;
+ *h_errnop = NETDB_INTERNAL;
return NSS_STATUS_TRYAGAIN;
}
diff --git a/src/nss-mymachines/nss-mymachines.c b/src/nss-mymachines/nss-mymachines.c
index fac37faea5..ea90953abb 100644
--- a/src/nss-mymachines/nss-mymachines.c
+++ b/src/nss-mymachines/nss-mymachines.c
@@ -151,8 +151,8 @@ enum nss_status _nss_mymachines_gethostbyname4_r(
l = strlen(name);
ms = ALIGN(l+1) + ALIGN(sizeof(struct gaih_addrtuple)) * c;
if (buflen < ms) {
- *errnop = ENOMEM;
- *h_errnop = TRY_AGAIN;
+ *errnop = ERANGE;
+ *h_errnop = NETDB_INTERNAL;
return NSS_STATUS_TRYAGAIN;
}
@@ -306,8 +306,8 @@ enum nss_status _nss_mymachines_gethostbyname3_r(
ms = ALIGN(l+1) + c * ALIGN(alen) + (c+2) * sizeof(char*);
if (buflen < ms) {
- *errnop = ENOMEM;
- *h_errnop = NO_RECOVERY;
+ *errnop = ERANGE;
+ *h_errnop = NETDB_INTERNAL;
return NSS_STATUS_TRYAGAIN;
}
@@ -471,7 +471,7 @@ enum nss_status _nss_mymachines_getpwnam_r(
l = strlen(name);
if (buflen < l+1) {
- *errnop = ENOMEM;
+ *errnop = ERANGE;
return NSS_STATUS_TRYAGAIN;
}
@@ -550,7 +550,7 @@ enum nss_status _nss_mymachines_getpwuid_r(
goto not_found;
if (snprintf(buffer, buflen, "vu-%s-" UID_FMT, machine, (uid_t) mapped) >= (int) buflen) {
- *errnop = ENOMEM;
+ *errnop = ERANGE;
return NSS_STATUS_TRYAGAIN;
}
@@ -645,7 +645,7 @@ enum nss_status _nss_mymachines_getgrnam_r(
l = sizeof(char*) + strlen(name) + 1;
if (buflen < l) {
- *errnop = ENOMEM;
+ *errnop = ERANGE;
return NSS_STATUS_TRYAGAIN;
}
@@ -722,13 +722,13 @@ enum nss_status _nss_mymachines_getgrgid_r(
goto not_found;
if (buflen < sizeof(char*) + 1) {
- *errnop = ENOMEM;
+ *errnop = ERANGE;
return NSS_STATUS_TRYAGAIN;
}
memzero(buffer, sizeof(char*));
if (snprintf(buffer + sizeof(char*), buflen - sizeof(char*), "vg-%s-" GID_FMT, machine, (gid_t) mapped) >= (int) buflen) {
- *errnop = ENOMEM;
+ *errnop = ERANGE;
return NSS_STATUS_TRYAGAIN;
}
diff --git a/src/nss-resolve/nss-resolve.c b/src/nss-resolve/nss-resolve.c
index ce8d59d390..d155625e11 100644
--- a/src/nss-resolve/nss-resolve.c
+++ b/src/nss-resolve/nss-resolve.c
@@ -118,7 +118,7 @@ static uint32_t ifindex_to_scopeid(int family, const void *a, int ifindex) {
/* Some apps can't deal with the scope ID attached to non-link-local addresses. Hence, let's suppress that. */
- assert(sizeof(in6) == FAMILY_ADDRESS_SIZE(AF_INET));
+ assert(sizeof(in6) == FAMILY_ADDRESS_SIZE(AF_INET6));
memcpy(&in6, a, sizeof(struct in6_addr));
return IN6_IS_ADDR_LINKLOCAL(&in6) ? ifindex : 0;
@@ -206,8 +206,8 @@ enum nss_status _nss_resolve_gethostbyname4_r(
l = strlen(canonical);
ms = ALIGN(l+1) + ALIGN(sizeof(struct gaih_addrtuple)) * c;
if (buflen < ms) {
- *errnop = ENOMEM;
- *h_errnop = TRY_AGAIN;
+ *errnop = ERANGE;
+ *h_errnop = NETDB_INTERNAL;
return NSS_STATUS_TRYAGAIN;
}
@@ -394,8 +394,8 @@ enum nss_status _nss_resolve_gethostbyname3_r(
ms = ALIGN(l+1) + c * ALIGN(alen) + (c+2) * sizeof(char*);
if (buflen < ms) {
- *errnop = ENOMEM;
- *h_errnop = TRY_AGAIN;
+ *errnop = ERANGE;
+ *h_errnop = NETDB_INTERNAL;
return NSS_STATUS_TRYAGAIN;
}
@@ -615,8 +615,8 @@ enum nss_status _nss_resolve_gethostbyaddr2_r(
c * sizeof(char*); /* pointers to aliases, plus trailing NULL */
if (buflen < ms) {
- *errnop = ENOMEM;
- *h_errnop = TRY_AGAIN;
+ *errnop = ERANGE;
+ *h_errnop = NETDB_INTERNAL;
return NSS_STATUS_TRYAGAIN;
}
diff --git a/src/nss-systemd/nss-systemd.c b/src/nss-systemd/nss-systemd.c
index fd5064c937..f404755dac 100644
--- a/src/nss-systemd/nss-systemd.c
+++ b/src/nss-systemd/nss-systemd.c
@@ -185,7 +185,7 @@ enum nss_status _nss_systemd_getpwnam_r(
l = strlen(name);
if (buflen < l+1) {
- *errnop = ENOMEM;
+ *errnop = ERANGE;
return NSS_STATUS_TRYAGAIN;
}
@@ -286,7 +286,7 @@ enum nss_status _nss_systemd_getpwuid_r(
l = strlen(translated) + 1;
if (buflen < l) {
- *errnop = ENOMEM;
+ *errnop = ERANGE;
return NSS_STATUS_TRYAGAIN;
}
@@ -386,7 +386,7 @@ enum nss_status _nss_systemd_getgrnam_r(
l = sizeof(char*) + strlen(name) + 1;
if (buflen < l) {
- *errnop = ENOMEM;
+ *errnop = ERANGE;
return NSS_STATUS_TRYAGAIN;
}
@@ -484,7 +484,7 @@ enum nss_status _nss_systemd_getgrgid_r(
l = sizeof(char*) + strlen(translated) + 1;
if (buflen < l) {
- *errnop = ENOMEM;
+ *errnop = ERANGE;
return NSS_STATUS_TRYAGAIN;
}
diff --git a/src/resolve/resolved-dns-server.c b/src/resolve/resolved-dns-server.c
index 10562d03ec..072cbfca1a 100644
--- a/src/resolve/resolved-dns-server.c
+++ b/src/resolve/resolved-dns-server.c
@@ -570,7 +570,7 @@ void dns_server_warn_downgrade(DnsServer *server) {
return;
log_struct(LOG_NOTICE,
- LOG_MESSAGE_ID(SD_MESSAGE_DNSSEC_DOWNGRADE),
+ "MESSAGE_ID=" SD_MESSAGE_DNSSEC_DOWNGRADE_STR,
LOG_MESSAGE("Server %s does not support DNSSEC, downgrading to non-DNSSEC mode.", dns_server_string(server)),
"DNS_SERVER=%s", dns_server_string(server),
"DNS_SERVER_FEATURE_LEVEL=%s", dns_server_feature_level_to_string(server->possible_feature_level),
diff --git a/src/resolve/resolved-dns-transaction.c b/src/resolve/resolved-dns-transaction.c
index 69e1d58ccf..9687409663 100644
--- a/src/resolve/resolved-dns-transaction.c
+++ b/src/resolve/resolved-dns-transaction.c
@@ -318,7 +318,7 @@ void dns_transaction_complete(DnsTransaction *t, DnsTransactionState state) {
dns_resource_key_to_string(t->key, key_str, sizeof key_str);
log_struct(LOG_NOTICE,
- LOG_MESSAGE_ID(SD_MESSAGE_DNSSEC_FAILURE),
+ "MESSAGE_ID=" SD_MESSAGE_DNSSEC_FAILURE_STR,
LOG_MESSAGE("DNSSEC validation failed for question %s: %s", key_str, dnssec_result_to_string(t->answer_dnssec_result)),
"DNS_TRANSACTION=%" PRIu16, t->id,
"DNS_QUESTION=%s", key_str,
diff --git a/src/resolve/resolved-dns-trust-anchor.c b/src/resolve/resolved-dns-trust-anchor.c
index 9917b9e984..d8529f8317 100644
--- a/src/resolve/resolved-dns-trust-anchor.c
+++ b/src/resolve/resolved-dns-trust-anchor.c
@@ -594,7 +594,7 @@ static int dns_trust_anchor_remove_revoked(DnsTrustAnchor *d, DnsResourceRecord
/* We found the key! Warn the user */
log_struct(LOG_WARNING,
- LOG_MESSAGE_ID(SD_MESSAGE_DNSSEC_TRUST_ANCHOR_REVOKED),
+ "MESSAGE_ID=" SD_MESSAGE_DNSSEC_TRUST_ANCHOR_REVOKED_STR,
LOG_MESSAGE("DNSSEC Trust anchor %s has been revoked. Please update the trust anchor, or upgrade your operating system."), strna(dns_resource_record_to_string(rr)),
"TRUST_ANCHOR=%s", dns_resource_record_to_string(rr),
NULL);
diff --git a/src/resolve/resolved-manager.c b/src/resolve/resolved-manager.c
index 791c125613..c4e4409fe3 100644
--- a/src/resolve/resolved-manager.c
+++ b/src/resolve/resolved-manager.c
@@ -332,19 +332,18 @@ static int determine_hostname(char **full_hostname, char **llmnr_hostname, char
assert(llmnr_hostname);
assert(mdns_hostname);
- /* Extract and normalize the first label of the locally
- * configured hostname, and check it's not "localhost". */
+ /* Extract and normalize the first label of the locally configured hostname, and check it's not "localhost". */
- h = gethostname_malloc();
- if (!h)
- return log_oom();
+ r = gethostname_strict(&h);
+ if (r < 0)
+ return log_debug_errno(r, "Can't determine system hostname: %m");
p = h;
r = dns_label_unescape(&p, label, sizeof(label));
if (r < 0)
return log_error_errno(r, "Failed to unescape host name: %m");
if (r == 0) {
- log_error("Couldn't find a single label in hosntame.");
+ log_error("Couldn't find a single label in hostname.");
return -EINVAL;
}
@@ -381,6 +380,57 @@ static int determine_hostname(char **full_hostname, char **llmnr_hostname, char
return 0;
}
+static const char *fallback_hostname(void) {
+
+ /* Determine the fall back hostname. For exposing this system to the outside world, we cannot have it to be
+ * "localhost" even if that's the compiled in hostname. In this case, let's revert to "linux" instead. */
+
+ if (is_localhost(FALLBACK_HOSTNAME))
+ return "linux";
+
+ return FALLBACK_HOSTNAME;
+}
+
+static int make_fallback_hostnames(char **full_hostname, char **llmnr_hostname, char **mdns_hostname) {
+ _cleanup_free_ char *n = NULL, *m = NULL;
+ char label[DNS_LABEL_MAX], *h;
+ const char *p;
+ int r;
+
+ assert(full_hostname);
+ assert(llmnr_hostname);
+ assert(mdns_hostname);
+
+ p = fallback_hostname();
+ r = dns_label_unescape(&p, label, sizeof(label));
+ if (r < 0)
+ return log_error_errno(r, "Failed to unescape fallback host name: %m");
+
+ assert(r > 0); /* The fallback hostname must have at least one label */
+
+ r = dns_label_escape_new(label, r, &n);
+ if (r < 0)
+ return log_error_errno(r, "Failed to escape fallback hostname: %m");
+
+ r = dns_name_concat(n, "local", &m);
+ if (r < 0)
+ return log_error_errno(r, "Failed to concatenate mDNS hostname: %m");
+
+ h = strdup(fallback_hostname());
+ if (!h)
+ return log_oom();
+
+ *llmnr_hostname = n;
+ n = NULL;
+
+ *mdns_hostname = m;
+ m = NULL;
+
+ *full_hostname = h;
+
+ return 0;
+}
+
static int on_hostname_change(sd_event_source *es, int fd, uint32_t revents, void *userdata) {
_cleanup_free_ char *full_hostname = NULL, *llmnr_hostname = NULL, *mdns_hostname = NULL;
Manager *m = userdata;
@@ -432,19 +482,11 @@ static int manager_watch_hostname(Manager *m) {
r = determine_hostname(&m->full_hostname, &m->llmnr_hostname, &m->mdns_hostname);
if (r < 0) {
- log_info("Defaulting to hostname 'linux'.");
-
- m->full_hostname = strdup("linux");
- if (!m->full_hostname)
- return log_oom();
-
- m->llmnr_hostname = strdup("linux");
- if (!m->llmnr_hostname)
- return log_oom();
+ log_info("Defaulting to hostname '%s'.", fallback_hostname());
- m->mdns_hostname = strdup("linux.local");
- if (!m->mdns_hostname)
- return log_oom();
+ r = make_fallback_hostnames(&m->full_hostname, &m->llmnr_hostname, &m->mdns_hostname);
+ if (r < 0)
+ return r;
} else
log_info("Using system hostname '%s'.", m->full_hostname);
diff --git a/src/resolve/test-dns-packet.c b/src/resolve/test-dns-packet.c
index 3ca7e78495..8cbe492526 100644
--- a/src/resolve/test-dns-packet.c
+++ b/src/resolve/test-dns-packet.c
@@ -29,10 +29,9 @@
#include "resolved-dns-rr.h"
#include "string-util.h"
#include "strv.h"
+#include "tests.h"
#include "unaligned.h"
-#include "test-helper.h"
-
#define HASH_KEY SD_ID128_MAKE(d3,1e,48,90,4b,fa,4c,fe,af,9d,d5,a1,d7,2e,8a,b1)
static void verify_rr_copy(DnsResourceRecord *rr) {
@@ -117,7 +116,7 @@ int main(int argc, char **argv) {
N = argc - 1;
fnames = argv + 1;
} else {
- assert_se(glob(TEST_DATA_DIR("/test-resolve/*.pkts"), GLOB_NOSORT, NULL, &g) == 0);
+ assert_se(glob(get_testdata_dir("/test-resolve/*.pkts"), GLOB_NOSORT, NULL, &g) == 0);
N = g.gl_pathc;
fnames = g.gl_pathv;
}
diff --git a/src/shared/machine-image.c b/src/shared/machine-image.c
index 7bc5c0a128..d96ff44e66 100644
--- a/src/shared/machine-image.c
+++ b/src/shared/machine-image.c
@@ -594,7 +594,7 @@ static int clone_auxiliary_file(const char *path, const char *new_name, const ch
if (!rs)
return -ENOMEM;
- return copy_file_atomic(path, rs, 0664, false, 0);
+ return copy_file_atomic(path, rs, 0664, 0, COPY_REFLINK);
}
int image_clone(Image *i, const char *new_name, bool read_only) {
@@ -656,7 +656,7 @@ int image_clone(Image *i, const char *new_name, bool read_only) {
case IMAGE_RAW:
new_path = strjoina("/var/lib/machines/", new_name, ".raw");
- r = copy_file_atomic(i->path, new_path, read_only ? 0444 : 0644, false, FS_NOCOW_FL);
+ r = copy_file_atomic(i->path, new_path, read_only ? 0444 : 0644, FS_NOCOW_FL, COPY_REFLINK);
break;
default:
diff --git a/src/shared/pager.c b/src/shared/pager.c
index 09672a4abf..af667a83f4 100644
--- a/src/shared/pager.c
+++ b/src/shared/pager.c
@@ -44,7 +44,7 @@ static pid_t pager_pid = 0;
noreturn static void pager_fallback(void) {
int r;
- r = copy_bytes(STDIN_FILENO, STDOUT_FILENO, (uint64_t) -1, false);
+ r = copy_bytes(STDIN_FILENO, STDOUT_FILENO, (uint64_t) -1, 0);
if (r < 0) {
log_error_errno(r, "Internal pager failed: %m");
_exit(EXIT_FAILURE);
diff --git a/src/shared/tests.c b/src/shared/tests.c
index 7034687725..f300bbc66f 100644
--- a/src/shared/tests.c
+++ b/src/shared/tests.c
@@ -24,6 +24,7 @@
#include <util.h>
#include "tests.h"
+#include "path-util.h"
char* setup_fake_runtime_dir(void) {
char t[] = "/tmp/fake-xdg-runtime-XXXXXX", *p;
@@ -35,12 +36,38 @@ char* setup_fake_runtime_dir(void) {
return p;
}
-const char* get_exe_relative_testdata_dir(void) {
- _cleanup_free_ char *exedir = NULL;
+const char* get_testdata_dir(const char *suffix) {
+ const char *env;
/* convenience: caller does not need to free result */
static char testdir[PATH_MAX];
- assert_se(readlink_and_make_absolute("/proc/self/exe", &exedir) >= 0);
- assert_se(snprintf(testdir, sizeof(testdir), "%s/testdata", dirname(exedir)) > 0);
+ /* if the env var is set, use that */
+ env = getenv("SYSTEMD_TEST_DATA");
+ testdir[sizeof(testdir) - 1] = '\0';
+ if (env) {
+ if (access(env, F_OK) < 0) {
+ fputs("ERROR: $SYSTEMD_TEST_DATA directory does not exist\n", stderr);
+ exit(1);
+ }
+ strncpy(testdir, env, sizeof(testdir) - 1);
+ } else {
+ _cleanup_free_ char *exedir = NULL;
+ assert_se(readlink_and_make_absolute("/proc/self/exe", &exedir) >= 0);
+
+ /* Check if we're running from the builddir. If so, use the compiled in path. */
+ if (path_startswith(exedir, ABS_BUILD_DIR))
+ assert_se(snprintf(testdir, sizeof(testdir), "%s/test", ABS_SRC_DIR) > 0);
+ else
+ /* Try relative path, according to the install-test layout */
+ assert_se(snprintf(testdir, sizeof(testdir), "%s/testdata", dirname(exedir)) > 0);
+
+ /* test this without the suffix, as it may contain a glob */
+ if (access(testdir, F_OK) < 0) {
+ fputs("ERROR: Cannot find testdata directory, set $SYSTEMD_TEST_DATA\n", stderr);
+ exit(1);
+ }
+ }
+
+ strncpy(testdir + strlen(testdir), suffix, sizeof(testdir) - strlen(testdir) - 1);
return testdir;
}
diff --git a/src/shared/tests.h b/src/shared/tests.h
index 0100b48937..7055124990 100644
--- a/src/shared/tests.h
+++ b/src/shared/tests.h
@@ -20,4 +20,4 @@
***/
char* setup_fake_runtime_dir(void);
-const char* get_exe_relative_testdata_dir(void);
+const char* get_testdata_dir(const char *suffix);
diff --git a/src/sleep/sleep.c b/src/sleep/sleep.c
index c8f0742183..ea96615222 100644
--- a/src/sleep/sleep.c
+++ b/src/sleep/sleep.c
@@ -109,7 +109,7 @@ static int execute(char **modes, char **states) {
execute_directories(dirs, DEFAULT_TIMEOUT_USEC, arguments);
log_struct(LOG_INFO,
- LOG_MESSAGE_ID(SD_MESSAGE_SLEEP_START),
+ "MESSAGE_ID=" SD_MESSAGE_SLEEP_START_STR,
LOG_MESSAGE("Suspending system..."),
"SLEEP=%s", arg_verb,
NULL);
@@ -119,7 +119,7 @@ static int execute(char **modes, char **states) {
return r;
log_struct(LOG_INFO,
- LOG_MESSAGE_ID(SD_MESSAGE_SLEEP_STOP),
+ "MESSAGE_ID=" SD_MESSAGE_SLEEP_STOP_STR,
LOG_MESSAGE("System resumed."),
"SLEEP=%s", arg_verb,
NULL);
diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
index 2336ae34f4..60f8bc3df5 100644
--- a/src/systemctl/systemctl.c
+++ b/src/systemctl/systemctl.c
@@ -5300,7 +5300,7 @@ static int cat_file(const char *filename, bool newline) {
ansi_normal());
fflush(stdout);
- return copy_bytes(fd, STDOUT_FILENO, (uint64_t) -1, false);
+ return copy_bytes(fd, STDOUT_FILENO, (uint64_t) -1, 0);
}
static int cat(int argc, char *argv[], void *userdata) {
@@ -6582,7 +6582,7 @@ static int create_edit_temp_file(const char *new_path, const char *original_path
if (r < 0)
return log_error_errno(r, "Failed to create directories for \"%s\": %m", new_path);
- r = copy_file(original_path, t, 0, 0644, 0);
+ r = copy_file(original_path, t, 0, 0644, 0, COPY_REFLINK);
if (r == -ENOENT) {
r = touch(t);
diff --git a/src/systemd/sd-id128.h b/src/systemd/sd-id128.h
index 6cc8e4ac0e..9b38969b77 100644
--- a/src/systemd/sd-id128.h
+++ b/src/systemd/sd-id128.h
@@ -100,6 +100,9 @@ int sd_id128_get_invocation(sd_id128_t *ret);
((x).bytes[15] & 15) >= 10 ? 'a' + ((x).bytes[15] & 15) - 10 : '0' + ((x).bytes[15] & 15), \
0 })
+#define SD_ID128_MAKE_STR(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) \
+ #a #b #c #d #e #f #g #h #i #j #k #l #m #n #o #p
+
_sd_pure_ static __inline__ int sd_id128_equal(sd_id128_t a, sd_id128_t b) {
return memcmp(&a, &b, 16) == 0;
}
diff --git a/src/systemd/sd-messages.h b/src/systemd/sd-messages.h
index db1a21be05..f466d9b062 100644
--- a/src/systemd/sd-messages.h
+++ b/src/systemd/sd-messages.h
@@ -33,60 +33,109 @@ _SD_BEGIN_DECLARATIONS;
* with journalctl --new-id128. Do not use any other IDs, and do not
* count them up manually. */
-#define SD_MESSAGE_JOURNAL_START SD_ID128_MAKE(f7,73,79,a8,49,0b,40,8b,be,5f,69,40,50,5a,77,7b)
-#define SD_MESSAGE_JOURNAL_STOP SD_ID128_MAKE(d9,3f,b3,c9,c2,4d,45,1a,97,ce,a6,15,ce,59,c0,0b)
-#define SD_MESSAGE_JOURNAL_DROPPED SD_ID128_MAKE(a5,96,d6,fe,7b,fa,49,94,82,8e,72,30,9e,95,d6,1e)
-#define SD_MESSAGE_JOURNAL_MISSED SD_ID128_MAKE(e9,bf,28,e6,e8,34,48,1b,b6,f4,8f,54,8a,d1,36,06)
-#define SD_MESSAGE_JOURNAL_USAGE SD_ID128_MAKE(ec,38,7f,57,7b,84,4b,8f,a9,48,f3,3c,ad,9a,75,e6)
-
-#define SD_MESSAGE_COREDUMP SD_ID128_MAKE(fc,2e,22,bc,6e,e6,47,b6,b9,07,29,ab,34,a2,50,b1)
-#define SD_MESSAGE_TRUNCATED_CORE SD_ID128_MAKE(5a,ad,d8,e9,54,dc,4b,1a,8c,95,4d,63,fd,9e,11,37)
-
-#define SD_MESSAGE_SESSION_START SD_ID128_MAKE(8d,45,62,0c,1a,43,48,db,b1,74,10,da,57,c6,0c,66)
-#define SD_MESSAGE_SESSION_STOP SD_ID128_MAKE(33,54,93,94,24,b4,45,6d,98,02,ca,83,33,ed,42,4a)
-#define SD_MESSAGE_SEAT_START SD_ID128_MAKE(fc,be,fc,5d,a2,3d,42,80,93,f9,7c,82,a9,29,0f,7b)
-#define SD_MESSAGE_SEAT_STOP SD_ID128_MAKE(e7,85,2b,fe,46,78,4e,d0,ac,cd,e0,4b,c8,64,c2,d5)
-#define SD_MESSAGE_MACHINE_START SD_ID128_MAKE(24,d8,d4,45,25,73,40,24,96,06,83,81,a6,31,2d,f2)
-#define SD_MESSAGE_MACHINE_STOP SD_ID128_MAKE(58,43,2b,d3,ba,ce,47,7c,b5,14,b5,63,81,b8,a7,58)
-
-#define SD_MESSAGE_TIME_CHANGE SD_ID128_MAKE(c7,a7,87,07,9b,35,4e,aa,a9,e7,7b,37,18,93,cd,27)
-#define SD_MESSAGE_TIMEZONE_CHANGE SD_ID128_MAKE(45,f8,2f,4a,ef,7a,4b,bf,94,2c,e8,61,d1,f2,09,90)
-
-#define SD_MESSAGE_STARTUP_FINISHED SD_ID128_MAKE(b0,7a,24,9c,d0,24,41,4a,82,dd,00,cd,18,13,78,ff)
-#define SD_MESSAGE_USER_STARTUP_FINISHED SD_ID128_MAKE(ee,d0,0a,68,ff,d8,4e,31,88,21,05,fd,97,3a,bd,d1)
-
-#define SD_MESSAGE_SLEEP_START SD_ID128_MAKE(6b,bd,95,ee,97,79,41,e4,97,c4,8b,e2,7c,25,41,28)
-#define SD_MESSAGE_SLEEP_STOP SD_ID128_MAKE(88,11,e6,df,2a,8e,40,f5,8a,94,ce,a2,6f,8e,bf,14)
-
-#define SD_MESSAGE_SHUTDOWN SD_ID128_MAKE(98,26,88,66,d1,d5,4a,49,9c,4e,98,92,1d,93,bc,40)
-
-#define SD_MESSAGE_UNIT_STARTING SD_ID128_MAKE(7d,49,58,e8,42,da,4a,75,8f,6c,1c,dc,7b,36,dc,c5)
-#define SD_MESSAGE_UNIT_STARTED SD_ID128_MAKE(39,f5,34,79,d3,a0,45,ac,8e,11,78,62,48,23,1f,bf)
-#define SD_MESSAGE_UNIT_STOPPING SD_ID128_MAKE(de,5b,42,6a,63,be,47,a7,b6,ac,3e,aa,c8,2e,2f,6f)
-#define SD_MESSAGE_UNIT_STOPPED SD_ID128_MAKE(9d,1a,aa,27,d6,01,40,bd,96,36,54,38,aa,d2,02,86)
-#define SD_MESSAGE_UNIT_FAILED SD_ID128_MAKE(be,02,cf,68,55,d2,42,8b,a4,0d,f7,e9,d0,22,f0,3d)
-#define SD_MESSAGE_UNIT_RELOADING SD_ID128_MAKE(d3,4d,03,7f,ff,18,47,e6,ae,66,9a,37,0e,69,47,25)
-#define SD_MESSAGE_UNIT_RELOADED SD_ID128_MAKE(7b,05,eb,c6,68,38,42,22,ba,a8,88,11,79,cf,da,54)
-
-#define SD_MESSAGE_SPAWN_FAILED SD_ID128_MAKE(64,12,57,65,1c,1b,4e,c9,a8,62,4d,7a,40,a9,e1,e7)
-
-#define SD_MESSAGE_FORWARD_SYSLOG_MISSED SD_ID128_MAKE(00,27,22,9c,a0,64,41,81,a7,6c,4e,92,45,8a,fa,2e)
-
-#define SD_MESSAGE_OVERMOUNTING SD_ID128_MAKE(1d,ee,03,69,c7,fc,47,36,b7,09,9b,38,ec,b4,6e,e7)
-
-#define SD_MESSAGE_LID_OPENED SD_ID128_MAKE(b7,2e,a4,a2,88,15,45,a0,b5,0e,20,0e,55,b9,b0,6f)
-#define SD_MESSAGE_LID_CLOSED SD_ID128_MAKE(b7,2e,a4,a2,88,15,45,a0,b5,0e,20,0e,55,b9,b0,70)
-#define SD_MESSAGE_SYSTEM_DOCKED SD_ID128_MAKE(f5,f4,16,b8,62,07,4b,28,92,7a,48,c3,ba,7d,51,ff)
-#define SD_MESSAGE_SYSTEM_UNDOCKED SD_ID128_MAKE(51,e1,71,bd,58,52,48,56,81,10,14,4c,51,7c,ca,53)
-#define SD_MESSAGE_POWER_KEY SD_ID128_MAKE(b7,2e,a4,a2,88,15,45,a0,b5,0e,20,0e,55,b9,b0,71)
-#define SD_MESSAGE_SUSPEND_KEY SD_ID128_MAKE(b7,2e,a4,a2,88,15,45,a0,b5,0e,20,0e,55,b9,b0,72)
-#define SD_MESSAGE_HIBERNATE_KEY SD_ID128_MAKE(b7,2e,a4,a2,88,15,45,a0,b5,0e,20,0e,55,b9,b0,73)
-
-#define SD_MESSAGE_INVALID_CONFIGURATION SD_ID128_MAKE(c7,72,d2,4e,9a,88,4c,be,b9,ea,12,62,5c,30,6c,01)
-
-#define SD_MESSAGE_DNSSEC_FAILURE SD_ID128_MAKE(16,75,d7,f1,72,17,40,98,b1,10,8b,f8,c7,dc,8f,5d)
-#define SD_MESSAGE_DNSSEC_TRUST_ANCHOR_REVOKED SD_ID128_MAKE(4d,44,08,cf,d0,d1,44,85,91,84,d1,e6,5d,7c,8a,65)
-#define SD_MESSAGE_DNSSEC_DOWNGRADE SD_ID128_MAKE(36,db,2d,fa,5a,90,45,e1,bd,4a,f5,f9,3e,1c,f0,57)
+#define SD_MESSAGE_JOURNAL_START SD_ID128_MAKE(f7,73,79,a8,49,0b,40,8b,be,5f,69,40,50,5a,77,7b)
+#define SD_MESSAGE_JOURNAL_START_STR SD_ID128_MAKE_STR(f7,73,79,a8,49,0b,40,8b,be,5f,69,40,50,5a,77,7b)
+#define SD_MESSAGE_JOURNAL_STOP SD_ID128_MAKE(d9,3f,b3,c9,c2,4d,45,1a,97,ce,a6,15,ce,59,c0,0b)
+#define SD_MESSAGE_JOURNAL_STOP_STR SD_ID128_MAKE_STR(d9,3f,b3,c9,c2,4d,45,1a,97,ce,a6,15,ce,59,c0,0b)
+#define SD_MESSAGE_JOURNAL_DROPPED SD_ID128_MAKE(a5,96,d6,fe,7b,fa,49,94,82,8e,72,30,9e,95,d6,1e)
+#define SD_MESSAGE_JOURNAL_DROPPED_STR SD_ID128_MAKE_STR(a5,96,d6,fe,7b,fa,49,94,82,8e,72,30,9e,95,d6,1e)
+#define SD_MESSAGE_JOURNAL_MISSED SD_ID128_MAKE(e9,bf,28,e6,e8,34,48,1b,b6,f4,8f,54,8a,d1,36,06)
+#define SD_MESSAGE_JOURNAL_MISSED_STR SD_ID128_MAKE_STR(e9,bf,28,e6,e8,34,48,1b,b6,f4,8f,54,8a,d1,36,06)
+#define SD_MESSAGE_JOURNAL_USAGE SD_ID128_MAKE(ec,38,7f,57,7b,84,4b,8f,a9,48,f3,3c,ad,9a,75,e6)
+#define SD_MESSAGE_JOURNAL_USAGE_STR SD_ID128_MAKE_STR(ec,38,7f,57,7b,84,4b,8f,a9,48,f3,3c,ad,9a,75,e6)
+
+#define SD_MESSAGE_COREDUMP SD_ID128_MAKE(fc,2e,22,bc,6e,e6,47,b6,b9,07,29,ab,34,a2,50,b1)
+#define SD_MESSAGE_COREDUMP_STR SD_ID128_MAKE_STR(fc,2e,22,bc,6e,e6,47,b6,b9,07,29,ab,34,a2,50,b1)
+#define SD_MESSAGE_TRUNCATED_CORE SD_ID128_MAKE(5a,ad,d8,e9,54,dc,4b,1a,8c,95,4d,63,fd,9e,11,37)
+#define SD_MESSAGE_TRUNCATED_CORE_STR SD_ID128_MAKE_STR(5a,ad,d8,e9,54,dc,4b,1a,8c,95,4d,63,fd,9e,11,37)
+#define SD_MESSAGE_BACKTRACE SD_ID128_MAKE(1f,4e,0a,44,a8,86,49,93,9a,ae,a3,4f,c6,da,8c,95)
+#define SD_MESSAGE_BACKTRACE_STR SD_ID128_MAKE_STR(1f,4e,0a,44,a8,86,49,93,9a,ae,a3,4f,c6,da,8c,95)
+
+#define SD_MESSAGE_SESSION_START SD_ID128_MAKE(8d,45,62,0c,1a,43,48,db,b1,74,10,da,57,c6,0c,66)
+#define SD_MESSAGE_SESSION_START_STR SD_ID128_MAKE_STR(8d,45,62,0c,1a,43,48,db,b1,74,10,da,57,c6,0c,66)
+#define SD_MESSAGE_SESSION_STOP SD_ID128_MAKE(33,54,93,94,24,b4,45,6d,98,02,ca,83,33,ed,42,4a)
+#define SD_MESSAGE_SESSION_STOP_STR SD_ID128_MAKE_STR(33,54,93,94,24,b4,45,6d,98,02,ca,83,33,ed,42,4a)
+#define SD_MESSAGE_SEAT_START SD_ID128_MAKE(fc,be,fc,5d,a2,3d,42,80,93,f9,7c,82,a9,29,0f,7b)
+#define SD_MESSAGE_SEAT_START_STR SD_ID128_MAKE_STR(fc,be,fc,5d,a2,3d,42,80,93,f9,7c,82,a9,29,0f,7b)
+#define SD_MESSAGE_SEAT_STOP SD_ID128_MAKE(e7,85,2b,fe,46,78,4e,d0,ac,cd,e0,4b,c8,64,c2,d5)
+#define SD_MESSAGE_SEAT_STOP_STR SD_ID128_MAKE_STR(e7,85,2b,fe,46,78,4e,d0,ac,cd,e0,4b,c8,64,c2,d5)
+#define SD_MESSAGE_MACHINE_START SD_ID128_MAKE(24,d8,d4,45,25,73,40,24,96,06,83,81,a6,31,2d,f2)
+#define SD_MESSAGE_MACHINE_START_STR SD_ID128_MAKE_STR(24,d8,d4,45,25,73,40,24,96,06,83,81,a6,31,2d,f2)
+#define SD_MESSAGE_MACHINE_STOP SD_ID128_MAKE(58,43,2b,d3,ba,ce,47,7c,b5,14,b5,63,81,b8,a7,58)
+#define SD_MESSAGE_MACHINE_STOP_STR SD_ID128_MAKE_STR(58,43,2b,d3,ba,ce,47,7c,b5,14,b5,63,81,b8,a7,58)
+
+#define SD_MESSAGE_TIME_CHANGE SD_ID128_MAKE(c7,a7,87,07,9b,35,4e,aa,a9,e7,7b,37,18,93,cd,27)
+#define SD_MESSAGE_TIME_CHANGE_STR SD_ID128_MAKE_STR(c7,a7,87,07,9b,35,4e,aa,a9,e7,7b,37,18,93,cd,27)
+#define SD_MESSAGE_TIMEZONE_CHANGE SD_ID128_MAKE(45,f8,2f,4a,ef,7a,4b,bf,94,2c,e8,61,d1,f2,09,90)
+#define SD_MESSAGE_TIMEZONE_CHANGE_STR SD_ID128_MAKE_STR(45,f8,2f,4a,ef,7a,4b,bf,94,2c,e8,61,d1,f2,09,90)
+
+#define SD_MESSAGE_STARTUP_FINISHED SD_ID128_MAKE(b0,7a,24,9c,d0,24,41,4a,82,dd,00,cd,18,13,78,ff)
+#define SD_MESSAGE_STARTUP_FINISHED_STR SD_ID128_MAKE_STR(b0,7a,24,9c,d0,24,41,4a,82,dd,00,cd,18,13,78,ff)
+#define SD_MESSAGE_USER_STARTUP_FINISHED \
+ SD_ID128_MAKE(ee,d0,0a,68,ff,d8,4e,31,88,21,05,fd,97,3a,bd,d1)
+#define SD_MESSAGE_USER_STARTUP_FINISHED_STR \
+ SD_ID128_MAKE_STR(ee,d0,0a,68,ff,d8,4e,31,88,21,05,fd,97,3a,bd,d1)
+
+#define SD_MESSAGE_SLEEP_START SD_ID128_MAKE(6b,bd,95,ee,97,79,41,e4,97,c4,8b,e2,7c,25,41,28)
+#define SD_MESSAGE_SLEEP_START_STR SD_ID128_MAKE_STR(6b,bd,95,ee,97,79,41,e4,97,c4,8b,e2,7c,25,41,28)
+#define SD_MESSAGE_SLEEP_STOP SD_ID128_MAKE(88,11,e6,df,2a,8e,40,f5,8a,94,ce,a2,6f,8e,bf,14)
+#define SD_MESSAGE_SLEEP_STOP_STR SD_ID128_MAKE_STR(88,11,e6,df,2a,8e,40,f5,8a,94,ce,a2,6f,8e,bf,14)
+
+#define SD_MESSAGE_SHUTDOWN SD_ID128_MAKE(98,26,88,66,d1,d5,4a,49,9c,4e,98,92,1d,93,bc,40)
+#define SD_MESSAGE_SHUTDOWN_STR SD_ID128_MAKE_STR(98,26,88,66,d1,d5,4a,49,9c,4e,98,92,1d,93,bc,40)
+
+#define SD_MESSAGE_UNIT_STARTING SD_ID128_MAKE(7d,49,58,e8,42,da,4a,75,8f,6c,1c,dc,7b,36,dc,c5)
+#define SD_MESSAGE_UNIT_STARTING_STR SD_ID128_MAKE_STR(7d,49,58,e8,42,da,4a,75,8f,6c,1c,dc,7b,36,dc,c5)
+#define SD_MESSAGE_UNIT_STARTED SD_ID128_MAKE(39,f5,34,79,d3,a0,45,ac,8e,11,78,62,48,23,1f,bf)
+#define SD_MESSAGE_UNIT_STARTED_STR SD_ID128_MAKE_STR(39,f5,34,79,d3,a0,45,ac,8e,11,78,62,48,23,1f,bf)
+#define SD_MESSAGE_UNIT_STOPPING SD_ID128_MAKE(de,5b,42,6a,63,be,47,a7,b6,ac,3e,aa,c8,2e,2f,6f)
+#define SD_MESSAGE_UNIT_STOPPING_STR SD_ID128_MAKE_STR(de,5b,42,6a,63,be,47,a7,b6,ac,3e,aa,c8,2e,2f,6f)
+#define SD_MESSAGE_UNIT_STOPPED SD_ID128_MAKE(9d,1a,aa,27,d6,01,40,bd,96,36,54,38,aa,d2,02,86)
+#define SD_MESSAGE_UNIT_STOPPED_STR SD_ID128_MAKE_STR(9d,1a,aa,27,d6,01,40,bd,96,36,54,38,aa,d2,02,86)
+#define SD_MESSAGE_UNIT_FAILED SD_ID128_MAKE(be,02,cf,68,55,d2,42,8b,a4,0d,f7,e9,d0,22,f0,3d)
+#define SD_MESSAGE_UNIT_FAILED_STR SD_ID128_MAKE_STR(be,02,cf,68,55,d2,42,8b,a4,0d,f7,e9,d0,22,f0,3d)
+#define SD_MESSAGE_UNIT_RELOADING SD_ID128_MAKE(d3,4d,03,7f,ff,18,47,e6,ae,66,9a,37,0e,69,47,25)
+#define SD_MESSAGE_UNIT_RELOADING_STR SD_ID128_MAKE_STR(d3,4d,03,7f,ff,18,47,e6,ae,66,9a,37,0e,69,47,25)
+#define SD_MESSAGE_UNIT_RELOADED SD_ID128_MAKE(7b,05,eb,c6,68,38,42,22,ba,a8,88,11,79,cf,da,54)
+#define SD_MESSAGE_UNIT_RELOADED_STR SD_ID128_MAKE_STR(7b,05,eb,c6,68,38,42,22,ba,a8,88,11,79,cf,da,54)
+
+#define SD_MESSAGE_SPAWN_FAILED SD_ID128_MAKE(64,12,57,65,1c,1b,4e,c9,a8,62,4d,7a,40,a9,e1,e7)
+#define SD_MESSAGE_SPAWN_FAILED_STR SD_ID128_MAKE_STR(64,12,57,65,1c,1b,4e,c9,a8,62,4d,7a,40,a9,e1,e7)
+
+#define SD_MESSAGE_FORWARD_SYSLOG_MISSED SD_ID128_MAKE(00,27,22,9c,a0,64,41,81,a7,6c,4e,92,45,8a,fa,2e)
+#define SD_MESSAGE_FORWARD_SYSLOG_MISSED_STR \
+ SD_ID128_MAKE_STR(00,27,22,9c,a0,64,41,81,a7,6c,4e,92,45,8a,fa,2e)
+
+#define SD_MESSAGE_OVERMOUNTING SD_ID128_MAKE(1d,ee,03,69,c7,fc,47,36,b7,09,9b,38,ec,b4,6e,e7)
+#define SD_MESSAGE_OVERMOUNTING_STR SD_ID128_MAKE_STR(1d,ee,03,69,c7,fc,47,36,b7,09,9b,38,ec,b4,6e,e7)
+
+#define SD_MESSAGE_LID_OPENED SD_ID128_MAKE(b7,2e,a4,a2,88,15,45,a0,b5,0e,20,0e,55,b9,b0,6f)
+#define SD_MESSAGE_LID_OPENED_STR SD_ID128_MAKE_STR(b7,2e,a4,a2,88,15,45,a0,b5,0e,20,0e,55,b9,b0,6f)
+#define SD_MESSAGE_LID_CLOSED SD_ID128_MAKE(b7,2e,a4,a2,88,15,45,a0,b5,0e,20,0e,55,b9,b0,70)
+#define SD_MESSAGE_LID_CLOSED_STR SD_ID128_MAKE_STR(b7,2e,a4,a2,88,15,45,a0,b5,0e,20,0e,55,b9,b0,70)
+#define SD_MESSAGE_SYSTEM_DOCKED SD_ID128_MAKE(f5,f4,16,b8,62,07,4b,28,92,7a,48,c3,ba,7d,51,ff)
+#define SD_MESSAGE_SYSTEM_DOCKED_STR SD_ID128_MAKE_STR(f5,f4,16,b8,62,07,4b,28,92,7a,48,c3,ba,7d,51,ff)
+#define SD_MESSAGE_SYSTEM_UNDOCKED SD_ID128_MAKE(51,e1,71,bd,58,52,48,56,81,10,14,4c,51,7c,ca,53)
+#define SD_MESSAGE_SYSTEM_UNDOCKED_STR SD_ID128_MAKE_STR(51,e1,71,bd,58,52,48,56,81,10,14,4c,51,7c,ca,53)
+#define SD_MESSAGE_POWER_KEY SD_ID128_MAKE(b7,2e,a4,a2,88,15,45,a0,b5,0e,20,0e,55,b9,b0,71)
+#define SD_MESSAGE_POWER_KEY_STR SD_ID128_MAKE_STR(b7,2e,a4,a2,88,15,45,a0,b5,0e,20,0e,55,b9,b0,71)
+#define SD_MESSAGE_SUSPEND_KEY SD_ID128_MAKE(b7,2e,a4,a2,88,15,45,a0,b5,0e,20,0e,55,b9,b0,72)
+#define SD_MESSAGE_SUSPEND_KEY_STR SD_ID128_MAKE_STR(b7,2e,a4,a2,88,15,45,a0,b5,0e,20,0e,55,b9,b0,72)
+#define SD_MESSAGE_HIBERNATE_KEY SD_ID128_MAKE(b7,2e,a4,a2,88,15,45,a0,b5,0e,20,0e,55,b9,b0,73)
+#define SD_MESSAGE_HIBERNATE_KEY_STR SD_ID128_MAKE_STR(b7,2e,a4,a2,88,15,45,a0,b5,0e,20,0e,55,b9,b0,73)
+
+#define SD_MESSAGE_INVALID_CONFIGURATION SD_ID128_MAKE(c7,72,d2,4e,9a,88,4c,be,b9,ea,12,62,5c,30,6c,01)
+#define SD_MESSAGE_INVALID_CONFIGURATION_STR \
+ SD_ID128_MAKE_STR(c7,72,d2,4e,9a,88,4c,be,b9,ea,12,62,5c,30,6c,01)
+
+#define SD_MESSAGE_DNSSEC_FAILURE SD_ID128_MAKE(16,75,d7,f1,72,17,40,98,b1,10,8b,f8,c7,dc,8f,5d)
+#define SD_MESSAGE_DNSSEC_FAILURE_STR SD_ID128_MAKE_STR(16,75,d7,f1,72,17,40,98,b1,10,8b,f8,c7,dc,8f,5d)
+#define SD_MESSAGE_DNSSEC_TRUST_ANCHOR_REVOKED \
+ SD_ID128_MAKE(4d,44,08,cf,d0,d1,44,85,91,84,d1,e6,5d,7c,8a,65)
+#define SD_MESSAGE_DNSSEC_TRUST_ANCHOR_REVOKED_STR \
+ SD_ID128_MAKE_STR(4d,44,08,cf,d0,d1,44,85,91,84,d1,e6,5d,7c,8a,65)
+#define SD_MESSAGE_DNSSEC_DOWNGRADE SD_ID128_MAKE(36,db,2d,fa,5a,90,45,e1,bd,4a,f5,f9,3e,1c,f0,57)
+#define SD_MESSAGE_DNSSEC_DOWNGRADE_STR SD_ID128_MAKE_STR(36,db,2d,fa,5a,90,45,e1,bd,4a,f5,f9,3e,1c,f0,57)
_SD_END_DECLARATIONS;
diff --git a/src/sysusers/sysusers.c b/src/sysusers/sysusers.c
index 17b966eb52..4a0a49f2bb 100644
--- a/src/sysusers/sysusers.c
+++ b/src/sysusers/sysusers.c
@@ -211,7 +211,7 @@ static int make_backup(const char *target, const char *x) {
if (r < 0)
return r;
- r = copy_bytes(src, fileno(dst), (uint64_t) -1, true);
+ r = copy_bytes(src, fileno(dst), (uint64_t) -1, COPY_REFLINK);
if (r < 0)
goto fail;
diff --git a/src/test/test-cgroup-mask.c b/src/test/test-cgroup-mask.c
index 630587aaf1..b42088c680 100644
--- a/src/test/test-cgroup-mask.c
+++ b/src/test/test-cgroup-mask.c
@@ -27,6 +27,7 @@
#include "unit.h"
static int test_cgroup_mask(void) {
+ _cleanup_(rm_rf_physical_and_freep) char *runtime_dir = NULL;
Manager *m = NULL;
Unit *son, *daughter, *parent, *root, *grandchild, *parent_deep;
FILE *serial = NULL;
@@ -34,7 +35,8 @@ static int test_cgroup_mask(void) {
int r;
/* Prepare the manager. */
- assert_se(set_unit_path(TEST_DATA_DIR("")) >= 0);
+ assert_se(set_unit_path(get_testdata_dir("")) >= 0);
+ assert_se(runtime_dir = setup_fake_runtime_dir());
r = manager_new(UNIT_FILE_USER, true, &m);
if (r == -EPERM || r == -EACCES) {
puts("manager_new: Permission denied. Skipping test.");
@@ -110,10 +112,8 @@ static int test_cgroup_mask(void) {
}
int main(int argc, char* argv[]) {
- _cleanup_(rm_rf_physical_and_freep) char *runtime_dir = NULL;
int rc = 0;
- assert_se(runtime_dir = setup_fake_runtime_dir());
TEST_REQ_RUNNING_SYSTEMD(rc = test_cgroup_mask());
return rc;
diff --git a/src/test/test-copy.c b/src/test/test-copy.c
index e65516f080..ed6725611d 100644
--- a/src/test/test-copy.c
+++ b/src/test/test-copy.c
@@ -31,6 +31,7 @@
#include "rm-rf.h"
#include "string-util.h"
#include "strv.h"
+#include "user-util.h"
#include "util.h"
static void test_copy_file(void) {
@@ -52,7 +53,7 @@ static void test_copy_file(void) {
assert_se(write_string_file(fn, "foo bar bar bar foo", WRITE_STRING_FILE_CREATE) == 0);
- assert_se(copy_file(fn, fn_copy, 0, 0644, 0) == 0);
+ assert_se(copy_file(fn, fn_copy, 0, 0644, 0, COPY_REFLINK) == 0);
assert_se(read_full_file(fn_copy, &buf, &sz) == 0);
assert_se(streq(buf, "foo bar bar bar foo\n"));
@@ -77,8 +78,8 @@ static void test_copy_file_fd(void) {
assert_se(out_fd >= 0);
assert_se(write_string_file(in_fn, text, WRITE_STRING_FILE_CREATE) == 0);
- assert_se(copy_file_fd("/a/file/which/does/not/exist/i/guess", out_fd, true) < 0);
- assert_se(copy_file_fd(in_fn, out_fd, true) >= 0);
+ assert_se(copy_file_fd("/a/file/which/does/not/exist/i/guess", out_fd, COPY_REFLINK) < 0);
+ assert_se(copy_file_fd(in_fn, out_fd, COPY_REFLINK) >= 0);
assert_se(lseek(out_fd, SEEK_SET, 0) == 0);
assert_se(read(out_fd, buf, sizeof(buf)) == sizeof(text) - 1);
@@ -125,7 +126,7 @@ static void test_copy_tree(void) {
unixsockp = strjoina(original_dir, "unixsock");
assert_se(mknod(unixsockp, S_IFSOCK|0644, 0) >= 0);
- assert_se(copy_tree(original_dir, copy_dir, true) == 0);
+ assert_se(copy_tree(original_dir, copy_dir, UID_INVALID, GID_INVALID, COPY_REFLINK|COPY_MERGE) == 0);
STRV_FOREACH(p, files) {
_cleanup_free_ char *buf = NULL, *f;
@@ -152,8 +153,8 @@ static void test_copy_tree(void) {
assert_se(stat(unixsockp, &st) >= 0);
assert_se(S_ISSOCK(st.st_mode));
- assert_se(copy_tree(original_dir, copy_dir, false) < 0);
- assert_se(copy_tree("/tmp/inexistent/foo/bar/fsdoi", copy_dir, false) < 0);
+ assert_se(copy_tree(original_dir, copy_dir, UID_INVALID, GID_INVALID, COPY_REFLINK) < 0);
+ assert_se(copy_tree("/tmp/inexistent/foo/bar/fsdoi", copy_dir, UID_INVALID, GID_INVALID, COPY_REFLINK) < 0);
(void) rm_rf(copy_dir, REMOVE_ROOT|REMOVE_PHYSICAL);
(void) rm_rf(original_dir, REMOVE_ROOT|REMOVE_PHYSICAL);
@@ -172,7 +173,7 @@ static void test_copy_bytes(void) {
assert_se(pipe2(pipefd, O_CLOEXEC) == 0);
- r = copy_bytes(infd, pipefd[1], (uint64_t) -1, false);
+ r = copy_bytes(infd, pipefd[1], (uint64_t) -1, 0);
assert_se(r == 0);
r = read(pipefd[0], buf, sizeof(buf));
@@ -185,13 +186,13 @@ static void test_copy_bytes(void) {
assert_se(strneq(buf, buf2, r));
/* test copy_bytes with invalid descriptors */
- r = copy_bytes(pipefd[0], pipefd[0], 1, false);
+ r = copy_bytes(pipefd[0], pipefd[0], 1, 0);
assert_se(r == -EBADF);
- r = copy_bytes(pipefd[1], pipefd[1], 1, false);
+ r = copy_bytes(pipefd[1], pipefd[1], 1, 0);
assert_se(r == -EBADF);
- r = copy_bytes(pipefd[1], infd, 1, false);
+ r = copy_bytes(pipefd[1], infd, 1, 0);
assert_se(r == -EBADF);
}
@@ -213,7 +214,7 @@ static void test_copy_bytes_regular_file(const char *src, bool try_reflink, uint
fd3 = mkostemp_safe(fn3);
assert_se(fd3 >= 0);
- r = copy_bytes(fd, fd2, max_bytes, try_reflink);
+ r = copy_bytes(fd, fd2, max_bytes, try_reflink ? COPY_REFLINK : 0);
if (max_bytes == (uint64_t) -1)
assert_se(r == 0);
else
@@ -221,7 +222,7 @@ static void test_copy_bytes_regular_file(const char *src, bool try_reflink, uint
assert_se(lseek(fd2, 0, SEEK_SET) == 0);
- r = copy_bytes(fd2, fd3, max_bytes, try_reflink);
+ r = copy_bytes(fd2, fd3, max_bytes, try_reflink ? COPY_REFLINK : 0);
if (max_bytes == (uint64_t) -1)
assert_se(r == 0);
else
diff --git a/src/test/test-engine.c b/src/test/test-engine.c
index 3ec2dfe10e..8133343fb3 100644
--- a/src/test/test-engine.c
+++ b/src/test/test-engine.c
@@ -37,10 +37,9 @@ int main(int argc, char *argv[]) {
Job *j;
int r;
- assert_se(runtime_dir = setup_fake_runtime_dir());
-
/* prepare the test */
- assert_se(set_unit_path(TEST_DATA_DIR("")) >= 0);
+ assert_se(set_unit_path(get_testdata_dir("")) >= 0);
+ assert_se(runtime_dir = setup_fake_runtime_dir());
r = manager_new(UNIT_FILE_USER, true, &m);
if (MANAGER_SKIP_TEST(r)) {
log_notice_errno(r, "Skipping test: manager_new: %m");
diff --git a/src/test/test-execute.c b/src/test/test-execute.c
index 145aa37a66..90540b884b 100644
--- a/src/test/test-execute.c
+++ b/src/test/test-execute.c
@@ -35,6 +35,7 @@
#endif
#include "stat-util.h"
#include "test-helper.h"
+#include "tests.h"
#include "unit.h"
#include "util.h"
#include "virt.h"
@@ -516,7 +517,7 @@ int main(int argc, char *argv[]) {
}
assert_se(setenv("XDG_RUNTIME_DIR", "/tmp/", 1) == 0);
- assert_se(set_unit_path(TEST_DATA_DIR("/test-execute/")) >= 0);
+ assert_se(set_unit_path(get_testdata_dir("/test-execute")) >= 0);
/* Unset VAR1, VAR2 and VAR3 which are used in the PassEnvironment test
* cases, otherwise (and if they are present in the environment),
diff --git a/src/test/test-helper.h b/src/test/test-helper.h
index 4e633ae6d8..ddb10f88fd 100644
--- a/src/test/test-helper.h
+++ b/src/test/test-helper.h
@@ -20,8 +20,6 @@
***/
#include "sd-daemon.h"
-#include "string-util.h"
-#include "tests.h"
#include "macro.h"
@@ -41,6 +39,3 @@
-ENOENT, \
-ENOMEDIUM /* cannot determine cgroup */ \
)
-
-#define TEST_DATA_DIR(subdir) \
- strjoina(getenv("TEST_DIR") ?: get_exe_relative_testdata_dir(), subdir)
diff --git a/src/test/test-journal-importer.c b/src/test/test-journal-importer.c
new file mode 100644
index 0000000000..a61212ce7b
--- /dev/null
+++ b/src/test/test-journal-importer.c
@@ -0,0 +1,90 @@
+/***
+ This file is part of systemd.
+
+ Copyright 2016 Zbigniew Jędrzejewski-Szmek
+
+ 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 <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+#include "log.h"
+#include "journal-importer.h"
+#include "string-util.h"
+#include "tests.h"
+
+static void assert_iovec_entry(const struct iovec *iovec, const char* content) {
+ assert_se(strlen(content) == iovec->iov_len);
+ assert_se(memcmp(content, iovec->iov_base, iovec->iov_len) == 0);
+}
+
+#define COREDUMP_PROC_GROUP \
+ "COREDUMP_PROC_CGROUP=1:name=systemd:/\n" \
+ "0::/user.slice/user-1002.slice/user@1002.service/gnome-terminal-server.service\n"
+
+static void test_basic_parsing(void) {
+ _cleanup_(journal_importer_cleanup) JournalImporter imp = {};
+ int r;
+
+ imp.fd = open(get_testdata_dir("/journal-data/journal-1.txt"), O_RDONLY|O_CLOEXEC);
+ assert_se(imp.fd >= 0);
+
+ do
+ r = journal_importer_process_data(&imp);
+ while (r == 0 && !journal_importer_eof(&imp));
+ assert_se(r == 1);
+
+ /* We read one entry, so we should get EOF on next read, but not yet */
+ assert_se(!journal_importer_eof(&imp));
+
+ assert_se(imp.iovw.count == 6);
+ assert_iovec_entry(&imp.iovw.iovec[0], "_BOOT_ID=1531fd22ec84429e85ae888b12fadb91");
+ assert_iovec_entry(&imp.iovw.iovec[1], "_TRANSPORT=journal");
+ assert_iovec_entry(&imp.iovw.iovec[2], COREDUMP_PROC_GROUP);
+ assert_iovec_entry(&imp.iovw.iovec[3], "COREDUMP_RLIMIT=-1");
+ assert_iovec_entry(&imp.iovw.iovec[4], COREDUMP_PROC_GROUP);
+ assert_iovec_entry(&imp.iovw.iovec[5], "_SOURCE_REALTIME_TIMESTAMP=1478389147837945");
+
+ /* Let's check if we get EOF now */
+ r = journal_importer_process_data(&imp);
+ assert_se(r == 0);
+ assert_se(journal_importer_eof(&imp));
+}
+
+static void test_bad_input(void) {
+ _cleanup_(journal_importer_cleanup) JournalImporter imp = {};
+ int r;
+
+ imp.fd = open(get_testdata_dir("/journal-data/journal-2.txt"), O_RDONLY|O_CLOEXEC);
+ assert_se(imp.fd >= 0);
+
+ do
+ r = journal_importer_process_data(&imp);
+ while (!journal_importer_eof(&imp));
+ assert_se(r == 0); /* If we don't have enough input, 0 is returned */
+
+ assert_se(journal_importer_eof(&imp));
+}
+
+int main(int argc, char **argv) {
+ log_set_max_level(LOG_DEBUG);
+ log_parse_environment();
+
+ test_basic_parsing();
+ test_bad_input();
+
+ return 0;
+}
diff --git a/src/test/test-path.c b/src/test/test-path.c
index d09df3e8a5..70ac6b3df3 100644
--- a/src/test/test-path.c
+++ b/src/test/test-path.c
@@ -262,8 +262,8 @@ int main(int argc, char *argv[]) {
log_parse_environment();
log_open();
+ assert_se(set_unit_path(get_testdata_dir("/test-path")) >= 0);
assert_se(runtime_dir = setup_fake_runtime_dir());
- assert_se(set_unit_path(TEST_DATA_DIR("/test-path/")) >= 0);
for (test = tests; test && *test; test++) {
int r;
diff --git a/src/test/test-sched-prio.c b/src/test/test-sched-prio.c
index dab64fea57..81d9abc2d5 100644
--- a/src/test/test-sched-prio.c
+++ b/src/test/test-sched-prio.c
@@ -34,10 +34,9 @@ int main(int argc, char *argv[]) {
FDSet *fdset = NULL;
int r;
- assert_se(runtime_dir = setup_fake_runtime_dir());
-
/* prepare the test */
- assert_se(set_unit_path(TEST_DATA_DIR("")) >= 0);
+ assert_se(set_unit_path(get_testdata_dir("")) >= 0);
+ assert_se(runtime_dir = setup_fake_runtime_dir());
r = manager_new(UNIT_FILE_USER, true, &m);
if (MANAGER_SKIP_TEST(r)) {
log_notice_errno(r, "Skipping test: manager_new: %m");
diff --git a/src/timedate/timedated.c b/src/timedate/timedated.c
index 490929e93b..1061b094d3 100644
--- a/src/timedate/timedated.c
+++ b/src/timedate/timedated.c
@@ -413,7 +413,7 @@ static int method_set_timezone(sd_bus_message *m, void *userdata, sd_bus_error *
}
log_struct(LOG_INFO,
- LOG_MESSAGE_ID(SD_MESSAGE_TIMEZONE_CHANGE),
+ "MESSAGE_ID=" SD_MESSAGE_TIMEZONE_CHANGE_STR,
"TIMEZONE=%s", c->zone,
LOG_MESSAGE("Changed time zone to '%s'.", c->zone),
NULL);
@@ -591,7 +591,7 @@ static int method_set_time(sd_bus_message *m, void *userdata, sd_bus_error *erro
clock_set_hwclock(tm);
log_struct(LOG_INFO,
- LOG_MESSAGE_ID(SD_MESSAGE_TIME_CHANGE),
+ "MESSAGE_ID=" SD_MESSAGE_TIME_CHANGE_STR,
"REALTIME="USEC_FMT, timespec_load(&ts),
LOG_MESSAGE("Changed local time to %s", ctime(&ts.tv_sec)),
NULL);
diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
index c4f4d46ca1..08a138b1b2 100644
--- a/src/tmpfiles/tmpfiles.c
+++ b/src/tmpfiles/tmpfiles.c
@@ -1170,7 +1170,7 @@ static int create_item(Item *i) {
return log_error_errno(r, "Failed to substitute specifiers in copy source %s: %m", i->argument);
log_debug("Copying tree \"%s\" to \"%s\".", resolved, i->path);
- r = copy_tree(resolved, i->path, false);
+ r = copy_tree(resolved, i->path, i->uid_set ? i->uid : UID_INVALID, i->gid_set ? i->gid : GID_INVALID, COPY_REFLINK);
if (r == -EROFS && stat(i->path, &st) == 0)
r = -EEXIST;
diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c
index 5be158f527..b5a88c667c 100644
--- a/src/udev/udev-builtin-net_id.c
+++ b/src/udev/udev-builtin-net_id.c
@@ -34,7 +34,8 @@
*
* Type of names:
* b<number> — BCMA bus core number
- * c<bus_id> — CCW bus group name, without leading zeros [s390]
+ * c<bus_id> — bus id of a grouped CCW or CCW device,
+ * with all leading zeros stripped [s390]
* 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>]
@@ -87,6 +88,11 @@
* /sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0/net/enp0s29u1u2
* ID_NET_NAME_MAC=enxd626b3450fb5
* ID_NET_NAME_PATH=enp0s29u1u2
+ *
+ * s390 grouped CCW interface:
+ * /sys/devices/css0/0.0.0007/0.0.f5f0/group_device/net/encf5f0
+ * ID_NET_NAME_MAC=enx026d3c00000a
+ * ID_NET_NAME_PATH=encf5f0
*/
#include <errno.h>
@@ -115,7 +121,7 @@ enum netname_type{
NET_USB,
NET_BCMA,
NET_VIRTIO,
- NET_CCWGROUP,
+ NET_CCW,
};
struct netnames {
@@ -132,9 +138,21 @@ struct netnames {
char usb_ports[IFNAMSIZ];
char bcma_core[IFNAMSIZ];
- char ccw_group[IFNAMSIZ];
+ char ccw_busid[IFNAMSIZ];
};
+/* skip intermediate virtio devices */
+static struct udev_device *skip_virtio(struct udev_device *dev) {
+ struct udev_device *parent = dev;
+
+ /* there can only ever be one virtio bus per parent device, so we can
+ safely ignore any virtio buses. see
+ <http://lists.linuxfoundation.org/pipermail/virtualization/2015-August/030331.html> */
+ while (parent && streq_ptr("virtio", udev_device_get_subsystem(parent)))
+ parent = udev_device_get_parent(parent);
+ return parent;
+}
+
/* retrieve on-board index number and label from firmware */
static int dev_pci_onboard(struct udev_device *dev, struct netnames *names) {
unsigned dev_port = 0;
@@ -308,12 +326,8 @@ static int names_pci(struct udev_device *dev, struct netnames *names) {
assert(names);
parent = udev_device_get_parent(dev);
-
- /* there can only ever be one virtio bus per parent device, so we can
- safely ignore any virtio buses. see
- <http://lists.linuxfoundation.org/pipermail/virtualization/2015-August/030331.html> */
- while (parent && streq_ptr("virtio", udev_device_get_subsystem(parent)))
- parent = udev_device_get_parent(parent);
+ /* skip virtio subsystem if present */
+ parent = skip_virtio(parent);
if (!parent)
return -ENOENT;
@@ -414,21 +428,26 @@ static int names_ccw(struct udev_device *dev, struct netnames *names) {
struct udev_device *cdev;
const char *bus_id;
size_t bus_id_len;
+ size_t bus_id_start;
int rc;
+ char *subsys;
assert(dev);
assert(names);
/* Retrieve the associated CCW device */
cdev = udev_device_get_parent(dev);
+ /* skip virtio subsystem if present */
+ cdev = skip_virtio(cdev);
if (!cdev)
return -ENOENT;
- /* Network devices are always grouped CCW devices */
- if (!streq_ptr("ccwgroup", udev_device_get_subsystem(cdev)))
+ /* Network devices are either single or grouped CCW devices */
+ subsys = udev_device_get_subsystem(cdev);
+ if (!STRPTR_IN_SET(subsys, "ccwgroup", "ccw"))
return -ENOENT;
- /* Retrieve bus-ID of the grouped CCW device. The bus-ID uniquely
+ /* Retrieve bus-ID of the CCW device. The bus-ID uniquely
* identifies the network device on the Linux on System z channel
* subsystem. Note that the bus-ID contains lowercase characters.
*/
@@ -447,14 +466,15 @@ static int names_ccw(struct udev_device *dev, struct netnames *names) {
/* Strip leading zeros from the bus id for aesthetic purposes. This
* keeps the ccw names stable, yet much shorter in general case of
* bus_id 0.0.0600 -> 600. This is similar to e.g. how PCI domain is
- * not prepended when it is zero.
+ * not prepended when it is zero. Preserve the last 0 for 0.0.0000.
*/
- bus_id += strspn(bus_id, ".0");
+ bus_id_start = strspn(bus_id, ".0");
+ bus_id += bus_id_start < bus_id_len ? bus_id_start : bus_id_len - 1;
/* Store the CCW bus-ID for use as network device name */
- rc = snprintf(names->ccw_group, sizeof(names->ccw_group), "c%s", bus_id);
- if (rc >= 0 && rc < (int)sizeof(names->ccw_group))
- names->type = NET_CCWGROUP;
+ rc = snprintf(names->ccw_busid, sizeof(names->ccw_busid), "c%s", bus_id);
+ if (rc >= 0 && rc < (int)sizeof(names->ccw_busid))
+ names->type = NET_CCW;
return 0;
}
@@ -564,10 +584,10 @@ static int builtin_net_id(struct udev_device *dev, int argc, char *argv[], bool
/* get path names for Linux on System z network devices */
err = names_ccw(dev, &names);
- if (err >= 0 && names.type == NET_CCWGROUP) {
+ if (err >= 0 && names.type == NET_CCW) {
char str[IFNAMSIZ];
- if (snprintf(str, sizeof(str), "%s%s", prefix, names.ccw_group) < (int)sizeof(str))
+ if (snprintf(str, sizeof(str), "%s%s", prefix, names.ccw_busid) < (int)sizeof(str))
udev_builtin_add_property(dev, test, "ID_NET_NAME_PATH", str);
goto out;
}
diff --git a/test/journal-data/journal-1.txt b/test/journal-data/journal-1.txt
new file mode 100644
index 0000000000..92a9199a93
--- /dev/null
+++ b/test/journal-data/journal-1.txt
Binary files differ
diff --git a/test/journal-data/journal-2.txt b/test/journal-data/journal-2.txt
new file mode 100644
index 0000000000..4f582a0e88
--- /dev/null
+++ b/test/journal-data/journal-2.txt
Binary files differ