diff options
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. @@ -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 & 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 <stdio.h> +#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 Binary files differnew file mode 100644 index 0000000000..92a9199a93 --- /dev/null +++ b/test/journal-data/journal-1.txt diff --git a/test/journal-data/journal-2.txt b/test/journal-data/journal-2.txt Binary files differnew file mode 100644 index 0000000000..4f582a0e88 --- /dev/null +++ b/test/journal-data/journal-2.txt |