]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
Merge pull request #12252 from keszybz/libmount-dont-unescape v242-rc4
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Tue, 9 Apr 2019 09:56:52 +0000 (11:56 +0200)
committerGitHub <noreply@github.com>
Tue, 9 Apr 2019 09:56:52 +0000 (11:56 +0200)
Don't unescape paths from libmount

55 files changed:
.lgtm/cpp-queries/PotentiallyDangerousFunction.ql
NEWS
coccinelle/empty-or-dash.cocci [new file with mode: 0644]
hwdb/20-OUI.hwdb
hwdb/20-acpi-vendor.hwdb.patch
hwdb/20-pci-vendor-model.hwdb
hwdb/60-sensor.hwdb
hwdb/ma-large.txt
hwdb/ma-medium.txt
hwdb/ma-small.txt
hwdb/pci.ids
man/sd_event_add_io.xml
man/systemd-sysusers.xml
man/systemd.link.xml
man/systemd.mount.xml
man/systemd.netdev.xml
man/systemd.service.xml
man/systemd.special.xml
man/systemd.unit.xml
meson.build
po/lt.po
src/basic/fileio.c
src/basic/fileio.h
src/basic/hexdecoct.c
src/basic/hexdecoct.h
src/basic/string-util.h
src/import/export.c
src/import/import-fs.c
src/import/import.c
src/import/pull.c
src/locale/keymap-util.c
src/login/inhibit.c
src/login/logind-dbus.c
src/login/logind-session.c
src/login/pam_systemd.c
src/machine/machinectl.c
src/network/netdev/netdev-gperf.gperf
src/network/netdev/wireguard.c
src/network/netdev/wireguard.h
src/nspawn/nspawn.c
src/shared/calendarspec.c
src/shared/meson.build
src/sysusers/sysusers.c
src/tmpfiles/tmpfiles.c
test/fuzz/fuzz-calendarspec/oss-fuzz-14108 [new file with mode: 0644]
test/fuzz/fuzz-netdev-parser/directives.netdev
test/test-network/conf/25-wireguard-preshared-key.txt [new file with mode: 0644]
test/test-network/conf/25-wireguard.netdev
test/test-network/conf/25-wireguard.netdev.d/peer.conf
test/test-network/systemd-networkd-tests.py
units/meson.build
units/systemd-timesyncd.service.in
units/systemd-tmpfiles-clean.service.in
units/time-set.target [new file with mode: 0644]
units/time-sync.target

index cd0284b37a5c898f086fb28b2907f1f6f861c35c..96712cf1c67b40fd0aa82939ffb1c94664485bb6 100644 (file)
@@ -38,6 +38,9 @@ predicate potentiallyDangerousFunction(Function f, string message) {
   ) or (
     f.getQualifiedName() = "ntohs" and
     message = "Call to ntohs() is confusing. Use be16toh() instead."
+  ) or (
+    f.getQualifiedName() = "strerror" and
+    message = "Call to strerror() is not thread-safe. Use strerror_r() or printf()'s %m format string instead."
   )
 }
 
diff --git a/NEWS b/NEWS
index a2fdec08c679859d15c3fe3eb3714421f382768a..8c8d7c08bacfa8dd2b6aafb3a6c21bd20c1c697f 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -75,6 +75,12 @@ CHANGES WITH 242:
           has been updated to include the new rseq() system call introduced in
           kernel 4.15.
 
+        * A new time-set.target has been added that indicates that the system
+          time has been set from a local source (possibly imprecise). The
+          existing time-sync.target is stronger and indicates that the time has
+          been synchronized with a precise external source. Services where
+          approximate time is sufficient should use the new target.
+
         * "systemctl start" (and related commands) learnt a new
           --show-transaction option. If specified brief information about all
           jobs queued because of the requested operation is shown.
@@ -110,8 +116,8 @@ CHANGES WITH 242:
         * The new TripleSampling= option in .network files may be used to
           configure CAN triple sampling.
 
-        * A new .netdev setting PrivateKeyFile= may be used to point to private
-          key for a WireGuard interface.
+        * A new .netdev settings PrivateKeyFile= and PresharedKeyFile= may be
+          used to point to private or preshared key for a WireGuard interface.
 
         * /etc/crypttab now supports the same-cpu-crypt and
           submit-from-crypt-cpus options to tweak encryption work scheduling
@@ -243,17 +249,18 @@ CHANGES WITH 242:
         Davide Cavalca, David Michael, David Rheinsberg, emersion, Evgeny
         Vereshchagin, Filipe Brandenburger, Franck Bui, Frantisek Sumsal,
         Giacinto Cifelli, Hans de Goede, Hugo Kindel, Ignat Korchagin, Insun
-        Pyo, Jan Engelhardt, Jonathan Lebon, Jonathon Kowalski, Jörg Sommer,
-        Jörg Thalheim, Kai-Heng Feng, Lennart Poettering, Lubomir Rintel,
-        Martin Pitt, Matthias Klumpp, Michael Biebl, Michael Niewöhner, Michael
-        Olbrich, Michal Sekletar, Mike Lothian, Piotr Drąg, Riccardo Schirone,
+        Pyo, Jan Engelhardt, Jonas Dorel, Jonathan Lebon, Jonathon Kowalski,
+        Jörg Sommer, Jörg Thalheim, Jussi Pakkanen, Kai-Heng Feng, Lennart
+        Poettering, Lubomir Rintel, Luís Ferreira, Martin Pitt, Matthias
+        Klumpp, Michael Biebl, Michael Niewöhner, Michael Olbrich, Michal
+        Sekletar, Mike Lothian, Paul Menzel, Piotr Drąg, Riccardo Schirone,
         Robin Elvedi, Roman Kulikov, Ronald Tschalär, Ross Burton, Ryan
         Gonzalez, Stephane Chazelas, StKob, Susant Sahani, Sylvain Plantefève,
         Szabolcs Fruhwald, Taro Yamada, Theo Ouzhinski, Thomas Haller, Tobias
         Jungel, Tom Yan, Tony Asleson, Topi Miettinen, unixsysadmin, Van Laser,
         Vesa Jääskeläinen, Yu, Li-Yu, Yu Watanabe, Zbigniew Jędrzejewski-Szmek
 
-        — Warsaw, 2019-04-03
+        — Warsaw, 2019-04-08
 
 CHANGES WITH 241:
 
diff --git a/coccinelle/empty-or-dash.cocci b/coccinelle/empty-or-dash.cocci
new file mode 100644 (file)
index 0000000..bebaead
--- /dev/null
@@ -0,0 +1,5 @@
+@@
+expression s;
+@@
+- (isempty(s) || streq(s, "-"))
++ empty_or_dash(s)
index 1d2c7ff702b8e63a97ff95e30e1a04ec25fd3aea..769404a6e5a9d05f9da294c5f44a604da73029b4 100644 (file)
@@ -3666,7 +3666,7 @@ OUI:0004C3*
  ID_OUI_FROM_DATABASE=CASTOR Informatique
 
 OUI:0004C4*
- ID_OUI_FROM_DATABASE=Allen & Heath Limited
+ ID_OUI_FROM_DATABASE=Audiotonix Group Limited
 
 OUI:0004C5*
  ID_OUI_FROM_DATABASE=ASE Technologies, USA
@@ -9903,7 +9903,7 @@ OUI:000CFE*
  ID_OUI_FROM_DATABASE=Grand Electronic Co., Ltd
 
 OUI:000CFF*
- ID_OUI_FROM_DATABASE=MRO-TEK LIMITED
+ ID_OUI_FROM_DATABASE=MRO-TEK Realty Limited
 
 OUI:000D00*
  ID_OUI_FROM_DATABASE=Seaway Networks Inc.
@@ -31397,6 +31397,9 @@ OUI:003532*
 OUI:003560*
  ID_OUI_FROM_DATABASE=Rosen Aviation
 
+OUI:0035FF*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
 OUI:003676*
  ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
 
@@ -34419,7 +34422,7 @@ OUI:00808B*
  ID_OUI_FROM_DATABASE=DACOLL LIMITED
 
 OUI:00808C*
- ID_OUI_FROM_DATABASE=NetScout Systems, Inc.
+ ID_OUI_FROM_DATABASE=NetAlly
 
 OUI:00808D*
  ID_OUI_FROM_DATABASE=WESTCOAST TECHNOLOGY B.V.
@@ -35676,7 +35679,7 @@ OUI:00A00D*
  ID_OUI_FROM_DATABASE=THE PANDA PROJECT
 
 OUI:00A00E*
- ID_OUI_FROM_DATABASE=NetScout Systems, Inc.
+ ID_OUI_FROM_DATABASE=NetAlly
 
 OUI:00A00F*
  ID_OUI_FROM_DATABASE=Broadband Technologies
@@ -36464,6 +36467,9 @@ OUI:00ACE0*
 OUI:00AD24*
  ID_OUI_FROM_DATABASE=D-Link International
 
+OUI:00AD63*
+ ID_OUI_FROM_DATABASE=Dedicated Micros Malta LTD
+
 OUI:00AECD*
  ID_OUI_FROM_DATABASE=Pensando Systems
 
@@ -36753,7 +36759,7 @@ OUI:00C016*
  ID_OUI_FROM_DATABASE=ELECTRONIC THEATRE CONTROLS
 
 OUI:00C017*
- ID_OUI_FROM_DATABASE=NetScout Systems, Inc.
+ ID_OUI_FROM_DATABASE=NetAlly
 
 OUI:00C018*
  ID_OUI_FROM_DATABASE=LANART CORPORATION
@@ -39173,6 +39179,9 @@ OUI:00EBD5*
 OUI:00EC0A*
  ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
 
+OUI:00EDB8*
+ ID_OUI_FROM_DATABASE=KYOCERA Corporation
+
 OUI:00EEAB*
  ID_OUI_FROM_DATABASE=Cisco Systems, Inc
 
@@ -39203,6 +39212,9 @@ OUI:00F48D*
 OUI:00F4B9*
  ID_OUI_FROM_DATABASE=Apple, Inc.
 
+OUI:00F620*
+ ID_OUI_FROM_DATABASE=Google, Inc.
+
 OUI:00F663*
  ID_OUI_FROM_DATABASE=Cisco Systems, Inc
 
@@ -39708,7 +39720,7 @@ OUI:049F06*
  ID_OUI_FROM_DATABASE=Smobile Co., Ltd.
 
 OUI:049F81*
- ID_OUI_FROM_DATABASE=NetScout Systems, Inc.
+ ID_OUI_FROM_DATABASE=NetAlly
 
 OUI:049FCA*
  ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
@@ -39878,6 +39890,9 @@ OUI:04D437*
 OUI:04D4C4*
  ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
 
+OUI:04D590*
+ ID_OUI_FROM_DATABASE=Fortinet, Inc.
+
 OUI:04D6AA*
  ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO-MECHANICS(THAILAND)
 
@@ -42713,6 +42728,9 @@ OUI:144146*
 OUI:1441E2*
  ID_OUI_FROM_DATABASE=Monaco Enterprises, Inc.
 
+OUI:1442FC*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
 OUI:144319*
  ID_OUI_FROM_DATABASE=Creative&Link Technology Limited
 
@@ -44663,6 +44681,9 @@ OUI:1CB3E9*
 OUI:1CB72C*
  ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
 
+OUI:1CB796*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
 OUI:1CB857*
  ID_OUI_FROM_DATABASE=Becon Technologies Co,.Ltd.
 
@@ -46115,6 +46136,9 @@ OUI:24ECD6*
 OUI:24EE3A*
  ID_OUI_FROM_DATABASE=Chengdu Yingji Electronic Hi-tech Co Ltd
 
+OUI:24EE9A*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
 OUI:24F094*
  ID_OUI_FROM_DATABASE=Apple, Inc.
 
@@ -47048,6 +47072,9 @@ OUI:2C1CF6*
 OUI:2C1DB8*
  ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
 
+OUI:2C1E4F*
+ ID_OUI_FROM_DATABASE=Chengdu Qianli Network Technology Co., Ltd.
+
 OUI:2C1EEA*
  ID_OUI_FROM_DATABASE=AERODEV
 
@@ -47333,6 +47360,9 @@ OUI:2C4D54*
 OUI:2C4D79*
  ID_OUI_FROM_DATABASE=WEIFANG GOERTEK ELECTRONICS CO.,LTD
 
+OUI:2C4F52*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
 OUI:2C5089*
  ID_OUI_FROM_DATABASE=Shenzhen Kaixuan Visual Technology Co.,Limited
 
@@ -47834,6 +47864,9 @@ OUI:2CFDAB*
 OUI:2CFF65*
  ID_OUI_FROM_DATABASE=Oki Electric Industry Co., Ltd.
 
+OUI:2CFFEE*
+ ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd.
+
 OUI:30053F*
  ID_OUI_FROM_DATABASE=JTI Co.,Ltd.
 
@@ -49487,6 +49520,9 @@ OUI:3817E1*
 OUI:38192F*
  ID_OUI_FROM_DATABASE=Nokia Corporation
 
+OUI:381A52*
+ ID_OUI_FROM_DATABASE=Seiko Epson Corporation
+
 OUI:381C1A*
  ID_OUI_FROM_DATABASE=Cisco Systems, Inc
 
@@ -49637,6 +49673,9 @@ OUI:38458C*
 OUI:384608*
  ID_OUI_FROM_DATABASE=zte corporation
 
+OUI:3847BC*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
 OUI:38484C*
  ID_OUI_FROM_DATABASE=Apple, Inc.
 
@@ -50147,6 +50186,9 @@ OUI:38ED18*
 OUI:38EE9D*
  ID_OUI_FROM_DATABASE=Anedo Ltd.
 
+OUI:38EFE3*
+ ID_OUI_FROM_DATABASE=INGENICO TERMINALS SAS
+
 OUI:38F098*
  ID_OUI_FROM_DATABASE=Vapor Stone Rail Systems
 
@@ -50894,6 +50936,9 @@ OUI:3CB6B7*
 OUI:3CB72B*
  ID_OUI_FROM_DATABASE=PLUMgrid Inc
 
+OUI:3CB74B*
+ ID_OUI_FROM_DATABASE=Technicolor CH USA Inc.
+
 OUI:3CB792*
  ID_OUI_FROM_DATABASE=Hitachi Maxell, Ltd., Optronics Division
 
@@ -52073,6 +52118,9 @@ OUI:445829*
 OUI:44599F*
  ID_OUI_FROM_DATABASE=Criticare Systems, Inc
 
+OUI:4459E3*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
 OUI:445D5E*
  ID_OUI_FROM_DATABASE=SHENZHEN Coolkit Technology CO.,LTD
 
@@ -52910,6 +52958,9 @@ OUI:48A6B8*
 OUI:48A6D2*
  ID_OUI_FROM_DATABASE=GJsun Optical Science and Tech Co.,Ltd.
 
+OUI:48A73C*
+ ID_OUI_FROM_DATABASE=Sichuan tianyi kanghe communications co., LTD
+
 OUI:48A74E*
  ID_OUI_FROM_DATABASE=zte corporation
 
@@ -54338,6 +54389,9 @@ OUI:50934F*
 OUI:509551*
  ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
 
+OUI:509744*
+ ID_OUI_FROM_DATABASE=Integrated Device Technology (Malaysia) Sdn. Bhd.
+
 OUI:509772*
  ID_OUI_FROM_DATABASE=Westinghouse Digital
 
@@ -54527,6 +54581,9 @@ OUI:50D274*
 OUI:50D37F*
  ID_OUI_FROM_DATABASE=Yu Fly Mikly Way Science and Technology Co., Ltd.
 
+OUI:50D4F7*
+ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
+
 OUI:50D59C*
  ID_OUI_FROM_DATABASE=Thai Habel Industrial Co., Ltd.
 
@@ -54554,6 +54611,9 @@ OUI:50DD4F*
 OUI:50DF95*
  ID_OUI_FROM_DATABASE=Lytx
 
+OUI:50E085*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
 OUI:50E0C7*
  ID_OUI_FROM_DATABASE=TurControlSystme AG
 
@@ -54989,6 +55049,9 @@ OUI:548998*
 OUI:548CA0*
  ID_OUI_FROM_DATABASE=Liteon Technology Corporation
 
+OUI:549209*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
 OUI:5492BE*
  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
 
@@ -55136,6 +55199,9 @@ OUI:54B802*
 OUI:54B80A*
  ID_OUI_FROM_DATABASE=D-Link International
 
+OUI:54BAD6*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
 OUI:54BD79*
  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
 
@@ -56135,6 +56201,9 @@ OUI:5C5819*
 OUI:5C5948*
  ID_OUI_FROM_DATABASE=Apple, Inc.
 
+OUI:5C5AC7*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
 OUI:5C5AEA*
  ID_OUI_FROM_DATABASE=FORD
 
@@ -56216,6 +56285,9 @@ OUI:5C86C1*
 OUI:5C8778*
  ID_OUI_FROM_DATABASE=Cybertelbridge co.,ltd
 
+OUI:5C879C*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
 OUI:5C8816*
  ID_OUI_FROM_DATABASE=Rockwell Automation
 
@@ -56663,6 +56735,9 @@ OUI:6024C1*
 OUI:60271C*
  ID_OUI_FROM_DATABASE=VIDEOR E. Hartig GmbH
 
+OUI:6029D5*
+ ID_OUI_FROM_DATABASE=DAVOLINK Inc.
+
 OUI:602A54*
  ID_OUI_FROM_DATABASE=CardioTek B.V.
 
@@ -56708,6 +56783,9 @@ OUI:6038E0*
 OUI:60391F*
  ID_OUI_FROM_DATABASE=ABB Ltd
 
+OUI:603A7C*
+ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
+
 OUI:603D26*
  ID_OUI_FROM_DATABASE=Technicolor CH USA Inc.
 
@@ -58073,6 +58151,9 @@ OUI:683E34*
 OUI:683EEC*
  ID_OUI_FROM_DATABASE=ERECA
 
+OUI:683F1E*
+ ID_OUI_FROM_DATABASE=EFFECT Photonics B.V.
+
 OUI:684352*
  ID_OUI_FROM_DATABASE=Bhuu Limited
 
@@ -58808,6 +58889,9 @@ OUI:6C5CDE*
 OUI:6C5D63*
  ID_OUI_FROM_DATABASE=ShenZhen Rapoo Technology Co., Ltd.
 
+OUI:6C5E3B*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
 OUI:6C5E7A*
  ID_OUI_FROM_DATABASE=Ubiquitous Internet Telecom Co., Ltd
 
@@ -60029,6 +60113,9 @@ OUI:70B3D5063*
 OUI:70B3D5066*
  ID_OUI_FROM_DATABASE=North Pole Engineering, Inc.
 
+OUI:70B3D5068*
+ ID_OUI_FROM_DATABASE=Onethinx BV
+
 OUI:70B3D5069*
  ID_OUI_FROM_DATABASE=ONDEMAND LABORATORY Co., Ltd.
 
@@ -60131,6 +60218,9 @@ OUI:70B3D5091*
 OUI:70B3D5092*
  ID_OUI_FROM_DATABASE=inomed Medizintechnik GmbH
 
+OUI:70B3D5093*
+ ID_OUI_FROM_DATABASE=Legrand Electric Ltd
+
 OUI:70B3D5094*
  ID_OUI_FROM_DATABASE=Circuitlink Pty Ltd
 
@@ -60398,6 +60488,9 @@ OUI:70B3D50FF*
 OUI:70B3D5100*
  ID_OUI_FROM_DATABASE=Gupsy GmbH
 
+OUI:70B3D5102*
+ ID_OUI_FROM_DATABASE=Oxford Monitoring Solutions Ltd
+
 OUI:70B3D5103*
  ID_OUI_FROM_DATABASE=HANYOUNG NUX CO.,LTD
 
@@ -60926,6 +61019,9 @@ OUI:70B3D51F4*
 OUI:70B3D51F5*
  ID_OUI_FROM_DATABASE=Martec S.p.A.
 
+OUI:70B3D51F7*
+ ID_OUI_FROM_DATABASE=Morgan Schaffer Inc.
+
 OUI:70B3D51F8*
  ID_OUI_FROM_DATABASE=Convergent Design
 
@@ -61127,6 +61223,9 @@ OUI:70B3D524A*
 OUI:70B3D524B*
  ID_OUI_FROM_DATABASE=TOSEI ENGINEERING CORP.
 
+OUI:70B3D524C*
+ ID_OUI_FROM_DATABASE=Astronomical Research Cameras, Inc.
+
 OUI:70B3D524D*
  ID_OUI_FROM_DATABASE=INFO CREATIVE (HK) LTD
 
@@ -61157,6 +61256,9 @@ OUI:70B3D5255*
 OUI:70B3D5257*
  ID_OUI_FROM_DATABASE=LG Electronics
 
+OUI:70B3D5258*
+ ID_OUI_FROM_DATABASE=BAYKON Endüstriyel Kontrol Sistemleri San. ve Tic. A.Ş.
+
 OUI:70B3D5259*
  ID_OUI_FROM_DATABASE=Zebra Elektronik A.S.
 
@@ -61391,12 +61493,18 @@ OUI:70B3D52BE*
 OUI:70B3D52BF*
  ID_OUI_FROM_DATABASE=FOSHAN VOHOM
 
+OUI:70B3D52C0*
+ ID_OUI_FROM_DATABASE=Sensative AB
+
 OUI:70B3D52C2*
  ID_OUI_FROM_DATABASE=Quantum Detectors
 
 OUI:70B3D52C3*
  ID_OUI_FROM_DATABASE=Proterra
 
+OUI:70B3D52C7*
+ ID_OUI_FROM_DATABASE=Worldsensing
+
 OUI:70B3D52C9*
  ID_OUI_FROM_DATABASE=SEASON DESIGN TECHNOLOGY
 
@@ -61430,6 +61538,9 @@ OUI:70B3D52D5*
 OUI:70B3D52D6*
  ID_OUI_FROM_DATABASE=Kvazar LLC
 
+OUI:70B3D52D7*
+ ID_OUI_FROM_DATABASE=Private
+
 OUI:70B3D52DA*
  ID_OUI_FROM_DATABASE=Skywave Networks Private Limited
 
@@ -61919,6 +62030,9 @@ OUI:70B3D53BB*
 OUI:70B3D53BC*
  ID_OUI_FROM_DATABASE=SciTronix
 
+OUI:70B3D53BD*
+ ID_OUI_FROM_DATABASE=DAO QIN TECHNOLOGY CO.LTD.
+
 OUI:70B3D53BE*
  ID_OUI_FROM_DATABASE=MyDefence Communication ApS
 
@@ -61952,6 +62066,9 @@ OUI:70B3D53C9*
 OUI:70B3D53CA*
  ID_OUI_FROM_DATABASE=TTI Ltd
 
+OUI:70B3D53CB*
+ ID_OUI_FROM_DATABASE=GeoSpectrum Technologies Inc
+
 OUI:70B3D53CC*
  ID_OUI_FROM_DATABASE=TerOpta Ltd
 
@@ -62231,6 +62348,9 @@ OUI:70B3D544E*
 OUI:70B3D5455*
  ID_OUI_FROM_DATABASE=Heartlandmicropayments
 
+OUI:70B3D5456*
+ ID_OUI_FROM_DATABASE=Technological Application and Production One Member Liability Company (Tecapro company)
+
 OUI:70B3D5457*
  ID_OUI_FROM_DATABASE=Vivaldi Clima Srl
 
@@ -62261,6 +62381,9 @@ OUI:70B3D5461*
 OUI:70B3D5462*
  ID_OUI_FROM_DATABASE=EarTex
 
+OUI:70B3D5463*
+ ID_OUI_FROM_DATABASE=WARECUBE,INC
+
 OUI:70B3D5465*
  ID_OUI_FROM_DATABASE=ENERGISME
 
@@ -62303,6 +62426,9 @@ OUI:70B3D5478*
 OUI:70B3D5479*
  ID_OUI_FROM_DATABASE=LINEAGE POWER PVT LTD.,
 
+OUI:70B3D547A*
+ ID_OUI_FROM_DATABASE=GlooVir Inc.
+
 OUI:70B3D547C*
  ID_OUI_FROM_DATABASE=Par-Tech, Inc.
 
@@ -62813,6 +62939,9 @@ OUI:70B3D556C*
 OUI:70B3D5570*
  ID_OUI_FROM_DATABASE=Bayern Engineering GmbH & Co. KG
 
+OUI:70B3D5571*
+ ID_OUI_FROM_DATABASE=Echogear
+
 OUI:70B3D5572*
  ID_OUI_FROM_DATABASE=CRDE
 
@@ -62840,6 +62969,9 @@ OUI:70B3D557C*
 OUI:70B3D557D*
  ID_OUI_FROM_DATABASE=WICOM1 GmbH
 
+OUI:70B3D557E*
+ ID_OUI_FROM_DATABASE=Ascon Tecnologic S.r.l.
+
 OUI:70B3D557F*
  ID_OUI_FROM_DATABASE=MBio Diagnostics, Inc.
 
@@ -63308,6 +63440,9 @@ OUI:70B3D565C*
 OUI:70B3D565D*
  ID_OUI_FROM_DATABASE=GEGA ELECTRONIQUE
 
+OUI:70B3D565E*
+ ID_OUI_FROM_DATABASE=Season Electronics Ltd
+
 OUI:70B3D5660*
  ID_OUI_FROM_DATABASE=Smart Service Technologies CO., LTD
 
@@ -63698,6 +63833,9 @@ OUI:70B3D5723*
 OUI:70B3D5724*
  ID_OUI_FROM_DATABASE=Quan International Co., Ltd.
 
+OUI:70B3D5726*
+ ID_OUI_FROM_DATABASE=ATGS
+
 OUI:70B3D5727*
  ID_OUI_FROM_DATABASE=LP Technologies Inc.
 
@@ -65990,6 +66128,9 @@ OUI:70B3D5B2D*
 OUI:70B3D5B2E*
  ID_OUI_FROM_DATABASE=Green Access Ltd
 
+OUI:70B3D5B2F*
+ ID_OUI_FROM_DATABASE=Hermann Automation GmbH
+
 OUI:70B3D5B30*
  ID_OUI_FROM_DATABASE=Systolé Hardware B.V.
 
@@ -66077,6 +66218,9 @@ OUI:70B3D5B55*
 OUI:70B3D5B56*
  ID_OUI_FROM_DATABASE=Power Electronics Espana, S.L.
 
+OUI:70B3D5B58*
+ ID_OUI_FROM_DATABASE=INTERNET PROTOCOLO LOGICA SL
+
 OUI:70B3D5B59*
  ID_OUI_FROM_DATABASE=FutureTechnologyLaboratories INC.
 
@@ -66383,6 +66527,9 @@ OUI:70B3D5BE5*
 OUI:70B3D5BE6*
  ID_OUI_FROM_DATABASE=CCII Systems (Pty) Ltd
 
+OUI:70B3D5BE7*
+ ID_OUI_FROM_DATABASE=Syscom Instruments SA
+
 OUI:70B3D5BE8*
  ID_OUI_FROM_DATABASE=AndFun Co.,Ltd.
 
@@ -66440,6 +66587,9 @@ OUI:70B3D5C01*
 OUI:70B3D5C03*
  ID_OUI_FROM_DATABASE=XAVi Technologies Corp.
 
+OUI:70B3D5C04*
+ ID_OUI_FROM_DATABASE=Prolan Zrt.
+
 OUI:70B3D5C05*
  ID_OUI_FROM_DATABASE=KST technology
 
@@ -66608,6 +66758,9 @@ OUI:70B3D5C4D*
 OUI:70B3D5C4F*
  ID_OUI_FROM_DATABASE=AE Van de Vliet BVBA
 
+OUI:70B3D5C51*
+ ID_OUI_FROM_DATABASE=Innotas Elektronik GmbH
+
 OUI:70B3D5C53*
  ID_OUI_FROM_DATABASE=S Labs sp. z o.o.
 
@@ -66845,6 +66998,9 @@ OUI:70B3D5CC3*
 OUI:70B3D5CC5*
  ID_OUI_FROM_DATABASE=Intecom
 
+OUI:70B3D5CC6*
+ ID_OUI_FROM_DATABASE=MB connect line GmbH Fernwartungssysteme
+
 OUI:70B3D5CC8*
  ID_OUI_FROM_DATABASE=PROFEN COMMUNICATIONS
 
@@ -67103,6 +67259,9 @@ OUI:70B3D5D47*
 OUI:70B3D5D48*
  ID_OUI_FROM_DATABASE=HEADROOM Broadcast GmbH
 
+OUI:70B3D5D49*
+ ID_OUI_FROM_DATABASE=Sicon srl
+
 OUI:70B3D5D4A*
  ID_OUI_FROM_DATABASE=OÜ ELIKO Tehnoloogia Arenduskeskus
 
@@ -67133,6 +67292,9 @@ OUI:70B3D5D54*
 OUI:70B3D5D55*
  ID_OUI_FROM_DATABASE=WM Design s.r.o
 
+OUI:70B3D5D56*
+ ID_OUI_FROM_DATABASE=KRONOTECH SRL
+
 OUI:70B3D5D57*
  ID_OUI_FROM_DATABASE=TRIUMPH BOARD a.s.
 
@@ -67373,6 +67535,9 @@ OUI:70B3D5DC0*
 OUI:70B3D5DC2*
  ID_OUI_FROM_DATABASE=SwineTech, Inc.
 
+OUI:70B3D5DC3*
+ ID_OUI_FROM_DATABASE=Fath Mechatronics
+
 OUI:70B3D5DC5*
  ID_OUI_FROM_DATABASE=Excel Medical Electronics LLC
 
@@ -67472,6 +67637,9 @@ OUI:70B3D5DF2*
 OUI:70B3D5DF3*
  ID_OUI_FROM_DATABASE=SPC Bioclinicum
 
+OUI:70B3D5DF4*
+ ID_OUI_FROM_DATABASE=Heim- & Bürokommunikation Ilmert e.K.
+
 OUI:70B3D5DF5*
  ID_OUI_FROM_DATABASE=Beijing Huanyu Zhilian Science &Technology Co., Ltd.
 
@@ -67490,6 +67658,9 @@ OUI:70B3D5DF9*
 OUI:70B3D5DFA*
  ID_OUI_FROM_DATABASE=Newtouch Electronics (Shanghai) Co.,Ltd.
 
+OUI:70B3D5DFB*
+ ID_OUI_FROM_DATABASE=Yamamoto Works Ltd.
+
 OUI:70B3D5DFC*
  ID_OUI_FROM_DATABASE=ELECTRONIC SYSTEMS DESIGN SPRL
 
@@ -67679,6 +67850,9 @@ OUI:70B3D5E52*
 OUI:70B3D5E53*
  ID_OUI_FROM_DATABASE=MI INC.
 
+OUI:70B3D5E54*
+ ID_OUI_FROM_DATABASE=Beijing PanGu Company
+
 OUI:70B3D5E55*
  ID_OUI_FROM_DATABASE=BELT S.r.l.
 
@@ -69095,6 +69269,9 @@ OUI:745612*
 OUI:745798*
  ID_OUI_FROM_DATABASE=TRUMPF Laser GmbH + Co. KG
 
+OUI:745909*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
 OUI:745933*
  ID_OUI_FROM_DATABASE=Danal Entertainment
 
@@ -71045,6 +71222,9 @@ OUI:7C8EE4*
 OUI:7C9122*
  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
 
+OUI:7C942A*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
 OUI:7C94B2*
  ID_OUI_FROM_DATABASE=Philips Healthcare PCCI
 
@@ -71123,6 +71303,9 @@ OUI:7CB25C*
 OUI:7CB542*
  ID_OUI_FROM_DATABASE=ACES Technology
 
+OUI:7CB59B*
+ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
+
 OUI:7CB733*
  ID_OUI_FROM_DATABASE=ASKEY COMPUTER CORP
 
@@ -72206,6 +72389,9 @@ OUI:8404D2*
 OUI:840B2D*
  ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO MECHANICS CO., LTD.
 
+OUI:840B7C*
+ ID_OUI_FROM_DATABASE=Hitron Technologies. Inc
+
 OUI:840D8E*
  ID_OUI_FROM_DATABASE=Espressif Inc.
 
@@ -73469,6 +73655,9 @@ OUI:889E33*
 OUI:889F6F*
  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
 
+OUI:889FAA*
+ ID_OUI_FROM_DATABASE=Hella Gutmann Solutions GmbH
+
 OUI:889FFA*
  ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
 
@@ -74093,6 +74282,33 @@ OUI:8C57FD*
 OUI:8C5877*
  ID_OUI_FROM_DATABASE=Apple, Inc.
 
+OUI:8C593C1*
+ ID_OUI_FROM_DATABASE=Future Robot Technology Co., Limited
+
+OUI:8C593C2*
+ ID_OUI_FROM_DATABASE=Beida Jade Bird Universal Fire Alarm Device CO.,LTD.
+
+OUI:8C593C3*
+ ID_OUI_FROM_DATABASE=Chongqing beimoting technology co.ltd
+
+OUI:8C593C5*
+ ID_OUI_FROM_DATABASE=Spectranetix
+
+OUI:8C593C6*
+ ID_OUI_FROM_DATABASE=Qbic Technology Co., Ltd
+
+OUI:8C593C7*
+ ID_OUI_FROM_DATABASE=OBO Pro.2 Inc.
+
+OUI:8C593C8*
+ ID_OUI_FROM_DATABASE=Nanonord A/S
+
+OUI:8C593C9*
+ ID_OUI_FROM_DATABASE=GENIS
+
+OUI:8C593CD*
+ ID_OUI_FROM_DATABASE=IDRO-ELETTRICA S.P.A.
+
 OUI:8C5973*
  ID_OUI_FROM_DATABASE=Zyxel Communications Corporation
 
@@ -76298,6 +76514,9 @@ OUI:988389*
 OUI:9884E3*
  ID_OUI_FROM_DATABASE=Texas Instruments
 
+OUI:98865D*
+ ID_OUI_FROM_DATABASE=Nokia Shanghai Bell Co., Ltd.
+
 OUI:9886B1*
  ID_OUI_FROM_DATABASE=Flyaudio corporation (China)
 
@@ -77102,6 +77321,9 @@ OUI:9C9811*
 OUI:9C99A0*
  ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
 
+OUI:9C99CD*
+ ID_OUI_FROM_DATABASE=Voippartners
+
 OUI:9C9C1D*
  ID_OUI_FROM_DATABASE=Starkey Labs Inc.
 
@@ -78899,6 +79121,9 @@ OUI:A4AD00*
 OUI:A4ADB8*
  ID_OUI_FROM_DATABASE=Vitec Group, Camera Dynamics Ltd
 
+OUI:A4AE11*
+ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co., Ltd.
+
 OUI:A4AE9A*
  ID_OUI_FROM_DATABASE=Maestro Wireless Solutions ltd.
 
@@ -80084,6 +80309,9 @@ OUI:AC5AEE*
 OUI:AC5D10*
  ID_OUI_FROM_DATABASE=Pace Americas
 
+OUI:AC5D5C*
+ ID_OUI_FROM_DATABASE=FN-LINK TECHNOLOGY LIMITED
+
 OUI:AC5E8C*
  ID_OUI_FROM_DATABASE=Utillink
 
@@ -81008,6 +81236,9 @@ OUI:B0B3AD*
 OUI:B0B448*
  ID_OUI_FROM_DATABASE=Texas Instruments
 
+OUI:B0B5E8*
+ ID_OUI_FROM_DATABASE=Ruroc LTD
+
 OUI:B0B867*
  ID_OUI_FROM_DATABASE=Hewlett Packard Enterprise
 
@@ -81572,6 +81803,12 @@ OUI:B4527D*
 OUI:B4527E*
  ID_OUI_FROM_DATABASE=Sony Mobile Communications Inc
 
+OUI:B452A9*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
+OUI:B45459*
+ ID_OUI_FROM_DATABASE=China Mobile (Hangzhou) Information Technology Co., Ltd.
+
 OUI:B45570*
  ID_OUI_FROM_DATABASE=Borea
 
@@ -81587,6 +81824,9 @@ OUI:B45CA4*
 OUI:B45D50*
  ID_OUI_FROM_DATABASE=Aruba, a Hewlett Packard Enterprise Company
 
+OUI:B46077*
+ ID_OUI_FROM_DATABASE=Sichuan Changhong Electric Ltd.
+
 OUI:B461FF*
  ID_OUI_FROM_DATABASE=Lumigon A/S
 
@@ -81869,6 +82109,9 @@ OUI:B4D8A9*
 OUI:B4D8DE*
  ID_OUI_FROM_DATABASE=iota Computing, Inc.
 
+OUI:B4DC09*
+ ID_OUI_FROM_DATABASE=Guangzhou Dawei Communication Co.,Ltd
+
 OUI:B4DD15*
  ID_OUI_FROM_DATABASE=ControlThings Oy Ab
 
@@ -82184,6 +82427,9 @@ OUI:B86491*
 OUI:B8653B*
  ID_OUI_FROM_DATABASE=Bolymin, Inc.
 
+OUI:B86685*
+ ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS
+
 OUI:B869C2*
  ID_OUI_FROM_DATABASE=Sunitec Enterprise Co., Ltd.
 
@@ -83204,6 +83450,9 @@ OUI:BC9FEF*
 OUI:BCA042*
  ID_OUI_FROM_DATABASE=SHANGHAI FLYCO ELECTRICAL APPLIANCE CO.,LTD
 
+OUI:BCA13A*
+ ID_OUI_FROM_DATABASE=SES-imagotag
+
 OUI:BCA4E1*
  ID_OUI_FROM_DATABASE=Nabto
 
@@ -84578,6 +84827,9 @@ OUI:C4C19F*
 OUI:C4C563*
  ID_OUI_FROM_DATABASE=TECNO MOBILE LIMITED
 
+OUI:C4C603*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
 OUI:C4C755*
  ID_OUI_FROM_DATABASE=Beijing HuaqinWorld Technology Co.,Ltd
 
@@ -86462,6 +86714,9 @@ OUI:D03311*
 OUI:D03742*
  ID_OUI_FROM_DATABASE=Yulong Computer Telecommunication Scientific (Shenzhen) Co.,Ltd
 
+OUI:D03745*
+ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
+
 OUI:D03761*
  ID_OUI_FROM_DATABASE=Texas Instruments
 
@@ -86891,18 +87146,51 @@ OUI:D0C789*
 OUI:D0C7C0*
  ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
 
+OUI:D0C8570*
+ ID_OUI_FROM_DATABASE=YUAN High-Tech Development Co., Ltd.
+
+OUI:D0C8571*
+ ID_OUI_FROM_DATABASE=DALI A/S
+
 OUI:D0C8572*
  ID_OUI_FROM_DATABASE=FORGAMERS INC.
 
 OUI:D0C8573*
  ID_OUI_FROM_DATABASE=Mobicon
 
+OUI:D0C8574*
+ ID_OUI_FROM_DATABASE=Imin Technology Pte Ltd
+
+OUI:D0C8575*
+ ID_OUI_FROM_DATABASE=Beijing Inspiry Technology Co., Ltd.
+
+OUI:D0C8576*
+ ID_OUI_FROM_DATABASE=Innovative Industrial(HK)Co., Limited
+
+OUI:D0C8577*
+ ID_OUI_FROM_DATABASE=Eco Mobile
+
+OUI:D0C8578*
+ ID_OUI_FROM_DATABASE=Nanjing Magewell Electronics Co.,Ltd
+
+OUI:D0C8579*
+ ID_OUI_FROM_DATABASE=Shenzhen xiaosha  Intelligence  Technology Co. Ltd
+
+OUI:D0C857A*
+ ID_OUI_FROM_DATABASE=shenzhen cnsun
+
+OUI:D0C857B*
+ ID_OUI_FROM_DATABASE=CHUNGHSIN INTERNATIONAL ELECTRONICS CO.,LTD.
+
 OUI:D0C857C*
  ID_OUI_FROM_DATABASE=Dante Security Inc.
 
 OUI:D0C857D*
  ID_OUI_FROM_DATABASE=IFLYTEK CO.,LTD.
 
+OUI:D0C857E*
+ ID_OUI_FROM_DATABASE=E-T-A Elektrotechnische Apparate GmbH
+
 OUI:D0CDE1*
  ID_OUI_FROM_DATABASE=Scientech Electronics
 
@@ -87350,6 +87638,9 @@ OUI:D461DA*
 OUI:D461FE*
  ID_OUI_FROM_DATABASE=Hangzhou H3C Technologies Co., Limited
 
+OUI:D462EA*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
 OUI:D463C6*
  ID_OUI_FROM_DATABASE=Motorola Mobility LLC, a Lenovo Company
 
@@ -88394,6 +88685,9 @@ OUI:D8D385*
 OUI:D8D43C*
  ID_OUI_FROM_DATABASE=Sony Corporation
 
+OUI:D8D4E6*
+ ID_OUI_FROM_DATABASE=Hytec Inter Co., Ltd.
+
 OUI:D8D5B9*
  ID_OUI_FROM_DATABASE=Rainforest Automation, Inc.
 
@@ -88449,7 +88743,7 @@ OUI:D8E56D*
  ID_OUI_FROM_DATABASE=TCT mobile ltd
 
 OUI:D8E72B*
- ID_OUI_FROM_DATABASE=NetScout Systems, Inc.
+ ID_OUI_FROM_DATABASE=NetAlly
 
 OUI:D8E743*
  ID_OUI_FROM_DATABASE=Wush, Inc
@@ -88772,6 +89066,9 @@ OUI:DC5360*
 OUI:DC537C*
  ID_OUI_FROM_DATABASE=Compal Broadband Networks, Inc.
 
+OUI:DC54D7*
+ ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
+
 OUI:DC5583*
  ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
 
@@ -89924,12 +90221,18 @@ OUI:E4121D*
 OUI:E41289*
  ID_OUI_FROM_DATABASE=topsystem Systemhaus GmbH
 
+OUI:E415F6*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
 OUI:E417D8*
  ID_OUI_FROM_DATABASE=8BITDO TECHNOLOGY HK LIMITED
 
 OUI:E4186B*
  ID_OUI_FROM_DATABASE=Zyxel Communications Corporation
 
+OUI:E419C1*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
 OUI:E41A2C*
  ID_OUI_FROM_DATABASE=ZPE Systems, Inc.
 
@@ -90149,6 +90452,9 @@ OUI:E44F5F*
 OUI:E4509A*
  ID_OUI_FROM_DATABASE=HW Communications Ltd
 
+OUI:E454E8*
+ ID_OUI_FROM_DATABASE=Dell Inc.
+
 OUI:E455EA*
  ID_OUI_FROM_DATABASE=Dedicated Computing
 
@@ -90584,6 +90890,9 @@ OUI:E4FB8F*
 OUI:E4FC82*
  ID_OUI_FROM_DATABASE=Juniper Networks
 
+OUI:E4FDA1*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
 OUI:E4FED9*
  ID_OUI_FROM_DATABASE=EDMI Europe Ltd
 
@@ -92765,6 +93074,9 @@ OUI:F431C3*
 OUI:F4323D*
  ID_OUI_FROM_DATABASE=Sichuan tianyi kanghe communications co., LTD
 
+OUI:F43328*
+ ID_OUI_FROM_DATABASE=CIMCON Lighting Inc.
+
 OUI:F436E1*
  ID_OUI_FROM_DATABASE=Abilis Systems SARL
 
@@ -93851,6 +94163,9 @@ OUI:F8AB05*
 OUI:F8AC6D*
  ID_OUI_FROM_DATABASE=Deltenna Ltd
 
+OUI:F8ADCB*
+ ID_OUI_FROM_DATABASE=HMD Global Oy
+
 OUI:F8B156*
  ID_OUI_FROM_DATABASE=Dell Inc.
 
@@ -94049,6 +94364,9 @@ OUI:F8E61A*
 OUI:F8E71E*
  ID_OUI_FROM_DATABASE=Ruckus Wireless
 
+OUI:F8E7A0*
+ ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd.
+
 OUI:F8E7B5*
  ID_OUI_FROM_DATABASE=µTech Tecnologia LTDA
 
index d9475906ef3371aaae47986244a21570f0a5adc0..8371f5295b92d9f25672f84ab75799996d08ff81 100644 (file)
@@ -1,5 +1,5 @@
---- 20-acpi-vendor.hwdb.base   2019-03-25 13:40:11.611458980 +0100
-+++ 20-acpi-vendor.hwdb        2019-03-25 13:40:11.634459190 +0100
+--- 20-acpi-vendor.hwdb.base   2019-04-08 11:36:50.727757815 +0200
++++ 20-acpi-vendor.hwdb        2019-04-08 11:36:50.735757868 +0200
 @@ -3,6 +3,8 @@
  # Data imported from:
  #     http://www.uefi.org/uefi-pnp-export
index bcfc38afb4d3b39751912a193423f24dce93fb95..c9423251bff2e1fdb1b8e179dd4f1a39f0a06438 100644 (file)
@@ -19733,6 +19733,9 @@ pci:v0000106Bd00001801*
 pci:v0000106Bd00001802*
  ID_MODEL_FROM_DATABASE=T2 Secure Enclave Processor
 
+pci:v0000106Bd00001803*
+ ID_MODEL_FROM_DATABASE=Apple Audio Device
+
 pci:v0000106Bd00002001*
  ID_MODEL_FROM_DATABASE=S1X NVMe Controller
 
@@ -19958,6 +19961,9 @@ pci:v00001077d00001656sv00001077sd0000E4F6*
 pci:v00001077d00001656sv00001077sd0000E4F7*
  ID_MODEL_FROM_DATABASE=FastLinQ QL45000 Series 25GbE Controller (FastLinQ QL45212H 25GbE Adapter)
 
+pci:v00001077d00001656sv00001590sd00000245*
+ ID_MODEL_FROM_DATABASE=FastLinQ QL45000 Series 25GbE Controller (10/20/25GbE 2P 4820c CNA)
+
 pci:v00001077d0000165C*
  ID_MODEL_FROM_DATABASE=FastLinQ QL45000 Series 10/25/40/50GbE Controller (FCoE)
 
@@ -19970,6 +19976,9 @@ pci:v00001077d0000165Csv00001077sd0000E4F1*
 pci:v00001077d0000165Csv00001077sd0000E4F2*
  ID_MODEL_FROM_DATABASE=FastLinQ QL45000 Series 10/25/40/50GbE Controller (FCoE) (FastLinQ QL45461H 40GbE FCoE Adapter)
 
+pci:v00001077d0000165Csv00001590sd00000245*
+ ID_MODEL_FROM_DATABASE=FastLinQ QL45000 Series 10/25/40/50GbE Controller (FCoE) (10/20/25GbE 2P 4820c CNA FCoE)
+
 pci:v00001077d0000165E*
  ID_MODEL_FROM_DATABASE=FastLinQ QL45000 Series 10/25/40/50GbE Controller (iSCSI)
 
@@ -19982,6 +19991,9 @@ pci:v00001077d0000165Esv00001077sd0000E4F1*
 pci:v00001077d0000165Esv00001077sd0000E4F2*
  ID_MODEL_FROM_DATABASE=FastLinQ QL45000 Series 10/25/40/50GbE Controller (iSCSI) (FastLinQ QL45461H 40GbE iSCSI Adapter)
 
+pci:v00001077d0000165Esv00001590sd00000245*
+ ID_MODEL_FROM_DATABASE=FastLinQ QL45000 Series 10/25/40/50GbE Controller (iSCSI) (10/20/25GbE 2P 4820c CNA iSCSI)
+
 pci:v00001077d00001664*
  ID_MODEL_FROM_DATABASE=FastLinQ QL45000 Series Gigabit Ethernet Controller (SR-IOV VF)
 
@@ -20006,6 +20018,9 @@ pci:v00001077d00001664sv00001077sd0000E4F7*
 pci:v00001077d00001664sv00001077sd0000E4F8*
  ID_MODEL_FROM_DATABASE=FastLinQ QL45000 Series Gigabit Ethernet Controller (SR-IOV VF) (FastLinQ QL45611H 100GbE Adapter (SR-IOV VF))
 
+pci:v00001077d00001664sv00001590sd00000245*
+ ID_MODEL_FROM_DATABASE=FastLinQ QL45000 Series Gigabit Ethernet Controller (SR-IOV VF) (10/20/25GbE 2P 4820c CNA SRIOV)
+
 pci:v00001077d00002020*
  ID_MODEL_FROM_DATABASE=ISP2020A Fast!SCSI Basic Adapter
 
@@ -32190,7 +32205,7 @@ pci:v000010DEd00001023sv000010DEsd0000097E*
  ID_MODEL_FROM_DATABASE=GK110BGL [Tesla K40m] (12GB Computational Accelerator)
 
 pci:v000010DEd00001024*
- ID_MODEL_FROM_DATABASE=GK110BGL [Tesla K40c]
+ ID_MODEL_FROM_DATABASE=GK180GL [Tesla K40c]
 
 pci:v000010DEd00001026*
  ID_MODEL_FROM_DATABASE=GK110GL [Tesla K20s]
@@ -35351,6 +35366,9 @@ pci:v000010ECd0000525Asv00001028sd000006E4*
 pci:v000010ECd0000525Asv000017AAsd0000224F*
  ID_MODEL_FROM_DATABASE=RTS525A PCI Express Card Reader (ThinkPad X1 Carbon 5th Gen)
 
+pci:v000010ECd00005260*
+ ID_MODEL_FROM_DATABASE=RTS5260 PCI Express Card Reader
+
 pci:v000010ECd00005286*
  ID_MODEL_FROM_DATABASE=RTS5286 PCI Express Card Reader
 
@@ -57665,12 +57683,24 @@ pci:v000015B3d00000212*
 pci:v000015B3d00000213*
  ID_MODEL_FROM_DATABASE=MT2892 Family [ConnectX-6 Dx Secure Flash Recovery]
 
+pci:v000015B3d00000214*
+ ID_MODEL_FROM_DATABASE=MT42822 Family [BlueField-2 SoC Flash Recovery]
+
+pci:v000015B3d00000215*
+ ID_MODEL_FROM_DATABASE=MT42822 Family [BlueField-2 Secure Flash Recovery]
+
 pci:v000015B3d0000024E*
  ID_MODEL_FROM_DATABASE=MT53100 [Spectrum-2, Flash recovery mode]
 
 pci:v000015B3d0000024F*
  ID_MODEL_FROM_DATABASE=MT53100 [Spectrum-2, Secure Flash recovery mode]
 
+pci:v000015B3d00000250*
+ ID_MODEL_FROM_DATABASE=Spectrum-3, Flash recovery mode
+
+pci:v000015B3d00000251*
+ ID_MODEL_FROM_DATABASE=Spectrum-3, Secure Flash recovery mode
+
 pci:v000015B3d00000262*
  ID_MODEL_FROM_DATABASE=MT27710 [ConnectX-4 Lx Programmable] EN
 
@@ -57923,6 +57953,9 @@ pci:v000015B3d00001974*
 pci:v000015B3d00001975*
  ID_MODEL_FROM_DATABASE=MT416842 Family [BlueField SoC PCIe Bridge]
 
+pci:v000015B3d00001978*
+ ID_MODEL_FROM_DATABASE=MT42822 Family [BlueField-2 SoC PCIe Bridge]
+
 pci:v000015B3d00004117*
  ID_MODEL_FROM_DATABASE=MT27712A0-FDCF-AE
 
@@ -58070,6 +58103,21 @@ pci:v000015B3d0000A2D2*
 pci:v000015B3d0000A2D3*
  ID_MODEL_FROM_DATABASE=MT416842 BlueField multicore SoC family VF
 
+pci:v000015B3d0000A2D4*
+ ID_MODEL_FROM_DATABASE=MT42822 BlueField-2 SoC Crypto enabled
+
+pci:v000015B3d0000A2D5*
+ ID_MODEL_FROM_DATABASE=MT42822 BlueField-2 SoC Crypto disabled
+
+pci:v000015B3d0000A2D6*
+ ID_MODEL_FROM_DATABASE=MT42822 BlueField-2 integrated ConnectX-6 Dx network controller
+
+pci:v000015B3d0000C2D2*
+ ID_MODEL_FROM_DATABASE=MT416842 BlueField SoC management interfac
+
+pci:v000015B3d0000C2D3*
+ ID_MODEL_FROM_DATABASE=MT42822 BlueField-2 SoC Management Interface
+
 pci:v000015B3d0000C738*
  ID_MODEL_FROM_DATABASE=MT51136
 
@@ -58094,6 +58142,9 @@ pci:v000015B3d0000CF08*
 pci:v000015B3d0000CF6C*
  ID_MODEL_FROM_DATABASE=MT53100 [Spectrum-2]
 
+pci:v000015B3d0000CF70*
+ ID_MODEL_FROM_DATABASE=Spectrum-3
+
 pci:v000015B3d0000D2F0*
  ID_MODEL_FROM_DATABASE=Quantum HDR (200Gbps) switch
 
@@ -65252,6 +65303,12 @@ pci:v00001CB5d00000002*
 pci:v00001CB8*
  ID_VENDOR_FROM_DATABASE=Dawning Information Industry Co., Ltd.
 
+pci:v00001CC4*
+ ID_VENDOR_FROM_DATABASE=Union Memory (Shenzhen)
+
+pci:v00001CC4d000017AB*
+ ID_MODEL_FROM_DATABASE=NVMe 256G SSD device
+
 pci:v00001CC5*
  ID_VENDOR_FROM_DATABASE=Embedded Intelligence, Inc.
 
@@ -65822,6 +65879,12 @@ pci:v00001DA1*
 pci:v00001DA2*
  ID_VENDOR_FROM_DATABASE=Sapphire Technology Limited
 
+pci:v00001DA3*
+ ID_VENDOR_FROM_DATABASE=Habana Labs Ltd.
+
+pci:v00001DA3d00000001*
+ ID_MODEL_FROM_DATABASE=HL-1000 AI Inference Accelerator [Goya]
+
 pci:v00001DBB*
  ID_VENDOR_FROM_DATABASE=NGD Systems, Inc.
 
@@ -65909,6 +65972,9 @@ pci:v00001DF3d00000202sv00001DF3sd00000002*
 pci:v00001DF3d00000203*
  ID_MODEL_FROM_DATABASE=ACE-NIC100 Programmable Network Accelerator
 
+pci:v00001DF3d00000203sv00001DF3sd00000000*
+ ID_MODEL_FROM_DATABASE=ACE-NIC100 Programmable Network Accelerator (Maintenance Mode)
+
 pci:v00001DF3d00000203sv00001DF3sd00000001*
  ID_MODEL_FROM_DATABASE=ACE-NIC100 Programmable Network Accelerator (ENA2080F)
 
@@ -65960,6 +66026,9 @@ pci:v00001E24d0000021F*
 pci:v00001E24d00001525*
  ID_MODEL_FROM_DATABASE=Xilinx BCU-1525
 
+pci:v00001E26*
+ ID_VENDOR_FROM_DATABASE=Fujitsu Client Computing Limited
+
 pci:v00001E38*
  ID_VENDOR_FROM_DATABASE=Thinci, Inc
 
@@ -73853,6 +73922,9 @@ pci:v00008086d0000158Bsv00008086sd00000008*
 pci:v00008086d0000158Bsv00008086sd00000009*
  ID_MODEL_FROM_DATABASE=Ethernet Controller XXV710 for 25GbE SFP28 (Ethernet 25G 2P XXV710 Adapter)
 
+pci:v00008086d0000158Bsv00008086sd0000000A*
+ ID_MODEL_FROM_DATABASE=Ethernet Controller XXV710 for 25GbE SFP28 (Ethernet 25G 2P XXV710 OCP)
+
 pci:v00008086d0000158Bsv00008086sd00004001*
  ID_MODEL_FROM_DATABASE=Ethernet Controller XXV710 for 25GbE SFP28 (Ethernet Network Adapter XXV710-2)
 
@@ -74096,6 +74168,9 @@ pci:v00008086d000015F6*
 pci:v00008086d000015FF*
  ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GBASE-T
 
+pci:v00008086d000015FFsv00008086sd00000000*
+ ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GBASE-T (Ethernet Network Adapter X710-TL)
+
 pci:v00008086d000015FFsv00008086sd00000001*
  ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GBASE-T (Ethernet Network Adapter X710-T4L)
 
@@ -87734,6 +87809,9 @@ pci:v00008086d000071A2*
 pci:v00008086d000071A2sv00004C53sd00001000*
  ID_MODEL_FROM_DATABASE=440GX - 82443GX Host bridge (AGP disabled) (CC7/CR7/CP7/VC7/VP7/VR7 mainboard)
 
+pci:v00008086d00007360*
+ ID_MODEL_FROM_DATABASE=XMM7360 LTE Advanced Modem
+
 pci:v00008086d00007600*
  ID_MODEL_FROM_DATABASE=82372FB PIIX5 ISA
 
@@ -90269,7 +90347,7 @@ pci:v00008088*
 pci:v00008088d00001001*
  ID_MODEL_FROM_DATABASE=Ethernet Controller RP1000 for 10GbE SFP+
 
-pci:v00008088d00001001sv00008088sd00001000*
+pci:v00008088d00001001sv00008088sd00000000*
  ID_MODEL_FROM_DATABASE=Ethernet Controller RP1000 for 10GbE SFP+ (Ethernet Network Adaptor RP1000 for 10GbE SFP+)
 
 pci:v00008088d00002001*
@@ -91292,6 +91370,15 @@ pci:v00009005d0000028Fsv0000103Csd00001100*
 pci:v00009005d0000028Fsv0000103Csd00001101*
  ID_MODEL_FROM_DATABASE=Smart Storage PQI 12G SAS/PCIe 3 (Smart Array P416ie-m SR G10)
 
+pci:v00009005d0000028Fsv0000105Bsd00001211*
+ ID_MODEL_FROM_DATABASE=Smart Storage PQI 12G SAS/PCIe 3 (HBA 8238-16i)
+
+pci:v00009005d0000028Fsv0000105Bsd00001321*
+ ID_MODEL_FROM_DATABASE=Smart Storage PQI 12G SAS/PCIe 3 (HBA 8242-24i)
+
+pci:v00009005d0000028Fsv000013FEsd00008312*
+ ID_MODEL_FROM_DATABASE=Smart Storage PQI 12G SAS/PCIe 3 (SKY-9200 MIC-8312BridgeB)
+
 pci:v00009005d0000028Fsv0000152Dsd00008A22*
  ID_MODEL_FROM_DATABASE=Smart Storage PQI 12G SAS/PCIe 3 (QS-8204-8i)
 
@@ -91325,6 +91412,24 @@ pci:v00009005d0000028Fsv0000193Dsd0000F460*
 pci:v00009005d0000028Fsv0000193Dsd0000F461*
  ID_MODEL_FROM_DATABASE=Smart Storage PQI 12G SAS/PCIe 3 (RAID P460-B4)
 
+pci:v00009005d0000028Fsv000019E5sd0000D227*
+ ID_MODEL_FROM_DATABASE=Smart Storage PQI 12G SAS/PCIe 3 (SmartROC-HD SR465C-M 4G)
+
+pci:v00009005d0000028Fsv000019E5sd0000D228*
+ ID_MODEL_FROM_DATABASE=Smart Storage PQI 12G SAS/PCIe 3 (SmartROC SR455C-M 2G)
+
+pci:v00009005d0000028Fsv000019E5sd0000D229*
+ ID_MODEL_FROM_DATABASE=Smart Storage PQI 12G SAS/PCIe 3 (SmartIOC SR155-M)
+
+pci:v00009005d0000028Fsv000019E5sd0000D22A*
+ ID_MODEL_FROM_DATABASE=Smart Storage PQI 12G SAS/PCIe 3 (SmartIOC-HD SR765-M)
+
+pci:v00009005d0000028Fsv000019E5sd0000D22B*
+ ID_MODEL_FROM_DATABASE=Smart Storage PQI 12G SAS/PCIe 3 (SmartROC-e SR455C-ME 4G)
+
+pci:v00009005d0000028Fsv000019E5sd0000D22C*
+ ID_MODEL_FROM_DATABASE=Smart Storage PQI 12G SAS/PCIe 3 (SmartROC SR455C-M 4G)
+
 pci:v00009005d0000028Fsv00001BD4sd00000045*
  ID_MODEL_FROM_DATABASE=Smart Storage PQI 12G SAS/PCIe 3 (SMART-HBA 8242-24i)
 
@@ -92000,6 +92105,9 @@ pci:v0000BDBDd0000A148*
 pci:v0000BDBDd0000A14B*
  ID_MODEL_FROM_DATABASE=DeckLink 8K Pro
 
+pci:v0000BDBDd0000A14E*
+ ID_MODEL_FROM_DATABASE=DeckLink Quad HDMI Recorder
+
 pci:v0000BDBDd0000A1FF*
  ID_MODEL_FROM_DATABASE=eGPU RX580
 
index 26e51ce66513eb759f6d0e0ec873207b304b553c..1a6f2d875b4f401d77b29c2ccb8264e4e98c7a5d 100644 (file)
@@ -476,6 +476,10 @@ sensor:modalias:acpi:KIOX000A*:dmi:bvnAmericanMegatrendsInc.:bvr5.011:bd11/03/20
 sensor:modalias:acpi:KIOX010A*:dmi:*:svnTECLAST:pnF5:*
  ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1
 
+# Teclast F6 Pro
+sensor:modalias:acpi:KIOX010A*:dmi:*:svnTECLAST:pnF6Pro:*
+ ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, -1, 0; 0, 0, -1
+
 #########################################
 # Trekstor
 #########################################
index 3775733bba48d47b79d7e302bd2fea6456b6b32d..17e588fb7e3a929231ef114e1c4c93ddec36559f 100644 (file)
@@ -23639,18 +23639,6 @@ A8A648     (base 16)           Qingdao Hisense Communications Co.,Ltd.
                                London    NW12AA\r
                                GB\r
 \r
-04-9F-81   (hex)               NetScout Systems, Inc.\r
-049F81     (base 16)           NetScout Systems, Inc.\r
-                               310 Littleton Road\r
-                               Westford  MA  01886\r
-                               US\r
-\r
-00-80-8C   (hex)               NetScout Systems, Inc.\r
-00808C     (base 16)           NetScout Systems, Inc.\r
-                               310 Littleton Road\r
-                               Westford  MA  01886\r
-                               US\r
-\r
 C4-F5-A5   (hex)               Kumalift Co., Ltd.\r
 C4F5A5     (base 16)           Kumalift Co., Ltd.\r
                                7-2-6 Saito-Asagi\r
@@ -28955,12 +28943,6 @@ D49234     (base 16)           NEC Corporation
                                Zelenograd  Moscow  124498\r
                                RU\r
 \r
-F0-10-AB   (hex)               China Mobile (Hangzhou) Information Technology Co., Ltd.\r
-F010AB     (base 16)           China Mobile (Hangzhou) Information Technology Co., Ltd.\r
-                               No. 1600 Yuhang Tong Road, Wuchang Street, Yuhang District\r
-                               Hangzhou  Zhejiang  310000\r
-                               CN\r
-\r
 80-8F-1D   (hex)               TP-LINK TECHNOLOGIES CO.,LTD.\r
 808F1D     (base 16)           TP-LINK TECHNOLOGIES CO.,LTD.\r
                                Building 24(floors 1,3,4,5)and 28(floors 1-4)Central Science and Technology Park,Shennan Road,Nanshan\r
@@ -31259,18 +31241,6 @@ A4A179     (base 16)           Nanjing dianyan electric power automation co. LTD
                                Gumi  Gyeongbuk  730-350\r
                                KR\r
 \r
-1C-64-99   (hex)               Comtrend Corporation\r
-1C6499     (base 16)           Comtrend Corporation\r
-                               3F-1, 10 Lane 609, Chongxin Road, Section 5, \r
-                               New Taipei City ,  Taiwan  24159\r
-                               TW\r
-\r
-00-1D-20   (hex)               Comtrend Corporation\r
-001D20     (base 16)           Comtrend Corporation\r
-                               3F-1, 10 Lane 609, Chongxin Road, Section 5, \r
-                               New Taipei City ,  Taiwan  24159\r
-                               TW\r
-\r
 60-95-CE   (hex)               IEEE Registration Authority\r
 6095CE     (base 16)           IEEE Registration Authority\r
                                445 Hoes Lane\r
@@ -31283,6 +31253,12 @@ D8CA06     (base 16)           Titan DataCenters France
                                mougins    06250\r
                                FR\r
 \r
+C8-A7-76   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
+C8A776     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
+                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+                               Dongguan    523808\r
+                               CN\r
+\r
 90-78-B2   (hex)               Xiaomi Communications Co Ltd\r
 9078B2     (base 16)           Xiaomi Communications Co Ltd\r
                                The Rainbow City of China Resources\r
@@ -31295,12 +31271,6 @@ D8CA06     (base 16)           Titan DataCenters France
                                Beijing    100053\r
                                CN\r
 \r
-FC-BD-67   (hex)               Arista Networks\r
-FCBD67     (base 16)           Arista Networks\r
-                               5453 Great America Parkway\r
-                               Santa Clara  CA  95054\r
-                               US\r
-\r
 B8-91-C9   (hex)               Handreamnet\r
 B891C9     (base 16)           Handreamnet\r
                                #1203 Ace High-end Tower II, 61, Digital-ro 26-gil, Guro-Gu\r
@@ -31313,11 +31283,11 @@ A8494D     (base 16)          HUAWEI TECHNOLOGIES CO.,LTD
                                Dongguan    523808\r
                                CN\r
 \r
-C8-A7-76   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
-C8A776     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
-                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
-                               Dongguan    523808\r
-                               CN\r
+FC-BD-67   (hex)               Arista Networks\r
+FCBD67     (base 16)           Arista Networks\r
+                               5453 Great America Parkway\r
+                               Santa Clara  CA  95054\r
+                               US\r
 \r
 14-A2-A0   (hex)               Cisco Systems, Inc\r
 14A2A0     (base 16)           Cisco Systems, Inc\r
@@ -31325,30 +31295,12 @@ C8A776     (base 16)          HUAWEI TECHNOLOGIES CO.,LTD
                                San Jose  CA  94568\r
                                US\r
 \r
-80-7B-1E   (hex)               Corsair Memory, Inc.\r
-807B1E     (base 16)           Corsair Memory, Inc.\r
-                               47100 Bayside Parkway\r
-                               Fremont  CA  94538\r
-                               US\r
-\r
 6C-D1-46   (hex)               FRAMOS GmbH\r
 6CD146     (base 16)           FRAMOS GmbH\r
                                Mehlbeerenstr. 2\r
                                Taufkirchen    82024\r
                                DE\r
 \r
-DC-A6-32   (hex)               Raspberry Pi Trading Ltd\r
-DCA632     (base 16)           Raspberry Pi Trading Ltd\r
-                               Maurice Wilkes Building, Cowley Road\r
-                               Cambridge    CB4 0DS\r
-                               GB\r
-\r
-7C-EC-9B   (hex)               Fuzhou Teraway Information Technology Co.,Ltd\r
-7CEC9B     (base 16)           Fuzhou Teraway Information Technology Co.,Ltd\r
-                               2F, Building 5#, No. 59, Yangqi Road, Cangshan District\r
-                               Fuzhou  Fujian  350000\r
-                               CN\r
-\r
 88-F5-6E   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
 88F56E     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
                                No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
@@ -31361,12 +31313,6 @@ D89B3B     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD
                                Dongguan     523808\r
                                CN\r
 \r
-4C-E9-E4   (hex)               New H3C Technologies Co., Ltd\r
-4CE9E4     (base 16)           New H3C Technologies Co., Ltd\r
-                               466 Changhe Road, Binjiang District\r
-                               Hangzhou  Zhejiang  310052\r
-                               CN\r
-\r
 C4-8A-5A   (hex)               JFCONTROL\r
 C48A5A     (base 16)           JFCONTROL\r
                                1449-37 Seoburo\r
@@ -31379,12 +31325,36 @@ C48A5A     (base 16)          JFCONTROL
                                Shanghai   Pudong  201206\r
                                CN\r
 \r
+DC-A6-32   (hex)               Raspberry Pi Trading Ltd\r
+DCA632     (base 16)           Raspberry Pi Trading Ltd\r
+                               Maurice Wilkes Building, Cowley Road\r
+                               Cambridge    CB4 0DS\r
+                               GB\r
+\r
+7C-EC-9B   (hex)               Fuzhou Teraway Information Technology Co.,Ltd\r
+7CEC9B     (base 16)           Fuzhou Teraway Information Technology Co.,Ltd\r
+                               2F, Building 5#, No. 59, Yangqi Road, Cangshan District\r
+                               Fuzhou  Fujian  350000\r
+                               CN\r
+\r
+80-7B-1E   (hex)               Corsair Memory, Inc.\r
+807B1E     (base 16)           Corsair Memory, Inc.\r
+                               47100 Bayside Parkway\r
+                               Fremont  CA  94538\r
+                               US\r
+\r
 FC-BC-D1   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
 FCBCD1     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
                                No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
                                Dongguan     523808\r
                                CN\r
 \r
+4C-E9-E4   (hex)               New H3C Technologies Co., Ltd\r
+4CE9E4     (base 16)           New H3C Technologies Co., Ltd\r
+                               466 Changhe Road, Binjiang District\r
+                               Hangzhou  Zhejiang  310052\r
+                               CN\r
+\r
 94-0B-19   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
 940B19     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
                                No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
@@ -31403,12 +31373,6 @@ FCBCD1     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD
                                Seoul    137-941\r
                                KR\r
 \r
-C8-0D-32   (hex)               Holoplot GmbH\r
-C80D32     (base 16)           Holoplot GmbH\r
-                               Ringbahnstr. 12, Hof A2\r
-                               Berlin    12099\r
-                               DE\r
-\r
 70-04-33   (hex)               California Things Inc.\r
 700433     (base 16)           California Things Inc.\r
                                650 main st\r
@@ -31421,12 +31385,90 @@ C80D32     (base 16)          Holoplot GmbH
                                Toufen City, Miaoli County    351\r
                                TW\r
 \r
+C8-0D-32   (hex)               Holoplot GmbH\r
+C80D32     (base 16)           Holoplot GmbH\r
+                               Ringbahnstr. 12, Hof A2\r
+                               Berlin    12099\r
+                               DE\r
+\r
 38-94-ED   (hex)               NETGEAR\r
 3894ED     (base 16)           NETGEAR\r
                                350 East Plumeria Drive\r
                                San Jose  CA  95134\r
                                US\r
 \r
+F0-10-AB   (hex)               China Mobile (Hangzhou) Information Technology Co., Ltd.\r
+F010AB     (base 16)           China Mobile (Hangzhou) Information Technology Co., Ltd.\r
+                               No. 1600 Yuhang Tong Road, Wuchang Street, Yuhang District\r
+                               Hangzhou  Zhejiang  310000\r
+                               CN\r
+\r
+C4-C6-03   (hex)               Cisco Systems, Inc\r
+C4C603     (base 16)           Cisco Systems, Inc\r
+                               80 West Tasman Drive\r
+                               San Jose  CA  94568\r
+                               US\r
+\r
+60-29-D5   (hex)               DAVOLINK Inc.\r
+6029D5     (base 16)           DAVOLINK Inc.\r
+                               112, Beolmal-ro\r
+                               Dongan-gu, Anyang-si  Gyeonggi-do  14057\r
+                               KR\r
+\r
+5C-87-9C   (hex)               Intel Corporate\r
+5C879C     (base 16)           Intel Corporate\r
+                               Lot 8, Jalan Hi-Tech 2/3\r
+                               Kulim  Kedah  09000\r
+                               MY\r
+\r
+50-E0-85   (hex)               Intel Corporate\r
+50E085     (base 16)           Intel Corporate\r
+                               Lot 8, Jalan Hi-Tech 2/3\r
+                               Kulim  Kedah  09000\r
+                               MY\r
+\r
+00-1D-20   (hex)               Comtrend Corporation\r
+001D20     (base 16)           Comtrend Corporation\r
+                               3F-1, 10 Lane 609, Chongxin Road, Section 5, \r
+                               New Taipei City,  Taiwan  24159\r
+                               TW\r
+\r
+00-80-8C   (hex)               NetAlly\r
+00808C     (base 16)           NetAlly\r
+                               310 Littleton Road\r
+                               Westford  MA  01886\r
+                               US\r
+\r
+04-9F-81   (hex)               NetAlly\r
+049F81     (base 16)           NetAlly\r
+                               310 Littleton Road\r
+                               Westford  MA  01886\r
+                               US\r
+\r
+1C-64-99   (hex)               Comtrend Corporation\r
+1C6499     (base 16)           Comtrend Corporation\r
+                               3F-1, 10 Lane 609, Chongxin Road, Section 5, \r
+                               New Taipei City,  Taiwan  24159\r
+                               TW\r
+\r
+DC-54-D7   (hex)               Amazon Technologies Inc.\r
+DC54D7     (base 16)           Amazon Technologies Inc.\r
+                               P.O Box 8102\r
+                               Reno  NV  89507\r
+                               US\r
+\r
+6C-5E-3B   (hex)               Cisco Systems, Inc\r
+6C5E3B     (base 16)           Cisco Systems, Inc\r
+                               80 West Tasman Drive\r
+                               San Jose  CA  94568\r
+                               US\r
+\r
+7C-94-2A   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
+7C942A     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
+                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+                               Dongguan    523808\r
+                               CN\r
+\r
 0C-6F-9C   (hex)               Shaw Communications Inc.\r
 0C6F9C     (base 16)           Shaw Communications Inc.\r
                                Suite 900, 630 3rd Avenue S.W.\r
@@ -54812,12 +54854,6 @@ B0F893     (base 16)           Shanghai MXCHIP Information Technology Co., Ltd.
                                Shanghai    200333\r
                                CN\r
 \r
-00-C0-17   (hex)               NetScout Systems, Inc.\r
-00C017     (base 16)           NetScout Systems, Inc.\r
-                               310 Littleton Road\r
-                               Westford  MA  01886\r
-                               US\r
-\r
 D4-9B-5C   (hex)               Chongqing Miedu Technology Co., Ltd.\r
 D49B5C     (base 16)           Chongqing Miedu Technology Co., Ltd.\r
                                7-602 No.118 DaPing Main Street Yuzhong District\r
@@ -57761,12 +57797,6 @@ F80DF1     (base 16)           Sontex SA
                                Incheon    21312\r
                                KR\r
 \r
-8C-18-50   (hex)               China Mobile (Hangzhou) Information Technology Co., Ltd.\r
-8C1850     (base 16)           China Mobile (Hangzhou) Information Technology Co., Ltd.\r
-                               No. 1600 Yuhangtang Road, Wuchang Street, Yuhang District\r
-                               Hangzhou  Hangzhou  310000\r
-                               CN\r
-\r
 78-0E-D1   (hex)               TRUMPF Werkzeugmaschinen GmbH+Co.KG\r
 780ED1     (base 16)           TRUMPF Werkzeugmaschinen GmbH+Co.KG\r
                                Johann-Maus-Straße 2\r
@@ -58463,12 +58493,6 @@ FCD2B6     (base 16)           IEEE Registration Authority
                                DONG GUAN  GUANG DONG  523860\r
                                CN\r
 \r
-28-23-F5   (hex)               China Mobile (Hangzhou) Information Technology Co., Ltd.\r
-2823F5     (base 16)           China Mobile (Hangzhou) Information Technology Co., Ltd.\r
-                               No. 1600 Yuhangtang Road, Wuchang Street, Yuhang District\r
-                               Hangzhou  Zhejiang  310000\r
-                               CN\r
-\r
 20-2A-C5   (hex)               Petite-En\r
 202AC5     (base 16)           Petite-En\r
                                1, Gwanak-ro, Gwanak-gu\r
@@ -62072,9 +62096,6 @@ E4D124     (base 16)             Mojo Networks, Inc.
                                Chongqing  Chongqing  401332\r
                                CN\r
 \r
-CC-3A-DF   (hex)               Private\r
-CC3ADF     (base 16)           Private\r
-\r
 B4-CE-FE   (hex)               James Czekaj\r
 B4CEFE     (base 16)           James Czekaj\r
                                41716 Waterfall Rd\r
@@ -62813,12 +62834,6 @@ D05794     (base 16)           Sagemcom Broadband SAS
                                Gumi  Gyeongbuk  730-350\r
                                KR\r
 \r
-F8-8E-85   (hex)               Comtrend Corporation\r
-F88E85     (base 16)           Comtrend Corporation\r
-                               3F-1, 10 Lane 609, Chongxin Road, Section 5, \r
-                               New Taipei City ,  Taiwan  24159\r
-                               TW\r
-\r
 F0-8A-76   (hex)               Samsung Electronics Co.,Ltd\r
 F08A76     (base 16)           Samsung Electronics Co.,Ltd\r
                                #94-1, Imsoo-Dong\r
@@ -62873,18 +62888,18 @@ CC64A6     (base 16)          HUAWEI TECHNOLOGIES CO.,LTD
                                Dongguan    523808\r
                                CN\r
 \r
-50-F8-A5   (hex)               eWBM Co., Ltd.\r
-50F8A5     (base 16)           eWBM Co., Ltd.\r
-                               14F, 9, Teheran-ro 20-gil\r
-                               Gangnam-gu, Seoul    06236\r
-                               KR\r
-\r
 08-4F-0A   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
 084F0A     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
                                No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
                                Dongguan    523808\r
                                CN\r
 \r
+50-F8-A5   (hex)               eWBM Co., Ltd.\r
+50F8A5     (base 16)           eWBM Co., Ltd.\r
+                               14F, 9, Teheran-ro 20-gil\r
+                               Gangnam-gu, Seoul    06236\r
+                               KR\r
+\r
 C8-D6-9D   (hex)               Arab International Optronics\r
 C8D69D     (base 16)           Arab International Optronics\r
                                El Salam St. \r
@@ -62909,30 +62924,6 @@ FC8743     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD
                                Dongguan     523808\r
                                CN\r
 \r
-70-C7-F2   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
-70C7F2     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
-                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
-                               Dongguan     523808\r
-                               CN\r
-\r
-8C-FD-18   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
-8CFD18     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
-                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
-                               Dongguan     523808\r
-                               CN\r
-\r
-24-16-6D   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
-24166D     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
-                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
-                               Dongguan     523808\r
-                               CN\r
-\r
-98-35-ED   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
-9835ED     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
-                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
-                               Dongguan     523808\r
-                               CN\r
-\r
 40-2B-50   (hex)               ARRIS Group, Inc.\r
 402B50     (base 16)           ARRIS Group, Inc.\r
                                6450 Sequence Drive\r
@@ -62957,6 +62948,30 @@ ACDB48     (base 16)           ARRIS Group, Inc.
                                Hong Kong  0000  0000\r
                                HK\r
 \r
+24-16-6D   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
+24166D     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
+                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+                               Dongguan     523808\r
+                               CN\r
+\r
+98-35-ED   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
+9835ED     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
+                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+                               Dongguan     523808\r
+                               CN\r
+\r
+70-C7-F2   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
+70C7F2     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
+                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+                               Dongguan     523808\r
+                               CN\r
+\r
+8C-FD-18   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
+8CFD18     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
+                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+                               Dongguan     523808\r
+                               CN\r
+\r
 C8-5D-38   (hex)               HUMAX Co., Ltd.\r
 C85D38     (base 16)           HUMAX Co., Ltd.\r
                                HUMAX Village, 216, Hwangsaeul-ro, Bu\r
@@ -62975,6 +62990,159 @@ B80756     (base 16)          Cisco Meraki
                                San Francisco    94158\r
                                US\r
 \r
+98-86-5D   (hex)               Nokia Shanghai Bell Co., Ltd.\r
+98865D     (base 16)           Nokia Shanghai Bell Co., Ltd.\r
+                               No.388 Ning Qiao Road,Jin Qiao Pudong Shanghai\r
+                               Shanghai     201206\r
+                               CN\r
+\r
+D8-D4-E6   (hex)               Hytec Inter Co., Ltd.\r
+D8D4E6     (base 16)           Hytec Inter Co., Ltd.\r
+                               3-28-6 Yoyogi\r
+                               Shibuya-ku  Tokyo  1510053\r
+                               JP\r
+\r
+28-23-F5   (hex)               China Mobile (Hangzhou) Information Technology Co., Ltd.\r
+2823F5     (base 16)           China Mobile (Hangzhou) Information Technology Co., Ltd.\r
+                               No. 1600 Yuhangtang Road, Wuchang Street, Yuhang District\r
+                               Hangzhou  Zhejiang  310000\r
+                               CN\r
+\r
+8C-18-50   (hex)               China Mobile (Hangzhou) Information Technology Co., Ltd.\r
+8C1850     (base 16)           China Mobile (Hangzhou) Information Technology Co., Ltd.\r
+                               No. 1600 Yuhangtang Road, Wuchang Street, Yuhang District\r
+                               Hangzhou  Hangzhou  310000\r
+                               CN\r
+\r
+2C-4F-52   (hex)               Cisco Systems, Inc\r
+2C4F52     (base 16)           Cisco Systems, Inc\r
+                               80 West Tasman Drive\r
+                               San Jose  CA  94568\r
+                               US\r
+\r
+60-3A-7C   (hex)               TP-LINK TECHNOLOGIES CO.,LTD.\r
+603A7C     (base 16)           TP-LINK TECHNOLOGIES CO.,LTD.\r
+                               Building 24(floors 1,3,4,5)and 28(floors 1-4)Central Science and Technology Park,Shennan Road,Nanshan\r
+                               Shenzhen  Guangdong  518057\r
+                               CN\r
+\r
+7C-B5-9B   (hex)               TP-LINK TECHNOLOGIES CO.,LTD.\r
+7CB59B     (base 16)           TP-LINK TECHNOLOGIES CO.,LTD.\r
+                               Building 24(floors 1,3,4,5)and 28(floors 1-4)Central Science and Technology Park,Shennan Road,Nanshan\r
+                               Shenzhen  Guangdong  518057\r
+                               CN\r
+\r
+F8-E7-A0   (hex)               vivo Mobile Communication Co., Ltd.\r
+F8E7A0     (base 16)           vivo Mobile Communication Co., Ltd.\r
+                               #283,BBK Road\r
+                               Wusha,Chang'An  DongGuan City,Guangdong,  523860\r
+                               CN\r
+\r
+2C-FF-EE   (hex)               vivo Mobile Communication Co., Ltd.\r
+2CFFEE     (base 16)           vivo Mobile Communication Co., Ltd.\r
+                               #283,BBK Road\r
+                               Wusha,Chang'An  DongGuan City,Guangdong,  523860\r
+                               CN\r
+\r
+CC-3A-DF   (hex)               Private\r
+CC3ADF     (base 16)           Private\r
+\r
+24-EE-9A   (hex)               Intel Corporate\r
+24EE9A     (base 16)           Intel Corporate\r
+                               Lot 8, Jalan Hi-Tech 2/3\r
+                               Kulim  Kedah  09000\r
+                               MY\r
+\r
+50-97-44   (hex)               Integrated Device Technology (Malaysia) Sdn. Bhd.\r
+509744     (base 16)           Integrated Device Technology (Malaysia) Sdn. Bhd.\r
+                               Phase 3, Bayan Lepas FIZ\r
+                               Bayan Lepas  Penang  11900\r
+                               MY\r
+\r
+38-1A-52   (hex)               Seiko Epson Corporation\r
+381A52     (base 16)           Seiko Epson Corporation\r
+                               2070 Kotobuki Koaka\r
+                               Matsumoto-shi  Nagano-ken  399-8702\r
+                               JP\r
+\r
+88-9F-AA   (hex)               Hella Gutmann Solutions GmbH \r
+889FAA     (base 16)           Hella Gutmann Solutions GmbH \r
+                               Am Krebsbach 2\r
+                               Ihringen   Baden Württemberg  79241\r
+                               DE\r
+\r
+F8-8E-85   (hex)               Comtrend Corporation\r
+F88E85     (base 16)           Comtrend Corporation\r
+                               3F-1, 10 Lane 609, Chongxin Road, Section 5, \r
+                               New Taipei City,  Taiwan  24159\r
+                               TW\r
+\r
+00-C0-17   (hex)               NetAlly\r
+00C017     (base 16)           NetAlly\r
+                               310 Littleton Road\r
+                               Westford  MA  01886\r
+                               US\r
+\r
+3C-B7-4B   (hex)               Technicolor CH USA Inc.\r
+3CB74B     (base 16)           Technicolor CH USA Inc.\r
+                               5030 Sugarloaf Parkway Bldg 6\r
+                               Lawrenceville  GA  30044\r
+                               US\r
+\r
+14-42-FC   (hex)               Texas Instruments\r
+1442FC     (base 16)           Texas Instruments\r
+                               12500 TI Blvd\r
+                               Dallas  TX  75243\r
+                               US\r
+\r
+F4-33-28   (hex)               CIMCON Lighting Inc.\r
+F43328     (base 16)           CIMCON Lighting Inc.\r
+                               35 Crosby Drive\r
+                               Bedford  MA  01730\r
+                               US\r
+\r
+B0-B5-E8   (hex)               Ruroc LTD\r
+B0B5E8     (base 16)           Ruroc LTD\r
+                               Unit 2, Barnett Way, Barnwood Estate\r
+                               Gloucester    GL4 3RT\r
+                               GB\r
+\r
+04-D5-90   (hex)               Fortinet, Inc.\r
+04D590     (base 16)           Fortinet, Inc.\r
+                               899 Kifer Road\r
+                               Sunnyvale    94086\r
+                               US\r
+\r
+5C-5A-C7   (hex)               Cisco Systems, Inc\r
+5C5AC7     (base 16)           Cisco Systems, Inc\r
+                               80 West Tasman Drive\r
+                               San Jose  CA  94568\r
+                               US\r
+\r
+1C-B7-96   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
+1CB796     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
+                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+                               Dongguan    523808\r
+                               CN\r
+\r
+D4-62-EA   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
+D462EA     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
+                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+                               Dongguan    523808\r
+                               CN\r
+\r
+38-47-BC   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
+3847BC     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
+                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+                               Dongguan    523808\r
+                               CN\r
+\r
+F8-AD-CB   (hex)               HMD Global Oy\r
+F8ADCB     (base 16)           HMD Global Oy\r
+                               Bertel Jungin aukio 9\r
+                               Espoo    02600\r
+                               FI\r
+\r
 58-46-E1   (hex)               Baxter International Inc\r
 5846E1     (base 16)           Baxter International Inc\r
                                One Baxter Parkway\r
@@ -76349,12 +76517,6 @@ A893E6     (base 16)           JIANGXI JINGGANGSHAN CKING COMMUNICATION TECHNOLOGY CO.,LT
                                Walkersville  Maryland  21793\r
                                US\r
 \r
-00-0C-FF   (hex)               MRO-TEK LIMITED\r
-000CFF     (base 16)           MRO-TEK LIMITED\r
-                               14, 1ST D MAIN ROAD,\r
-                               BANGALORE  KARNATAKA  560032\r
-                               IN\r
-\r
 00-0C-ED   (hex)               Real Digital Media\r
 000CED     (base 16)           Real Digital Media\r
                                485 North Keller Road\r
@@ -86210,12 +86372,6 @@ BC282C     (base 16)           e-Smart Systems Pvt. Ltd
                                Dallas  TX  75243\r
                                US\r
 \r
-D8-E7-2B   (hex)               NetScout Systems, Inc.\r
-D8E72B     (base 16)           NetScout Systems, Inc.\r
-                               310 Littleton Road\r
-                               Westford  MA  01886\r
-                               US\r
-\r
 04-FE-A1   (hex)               Fihonest communication co.,Ltd\r
 04FEA1     (base 16)           Fihonest communication co.,Ltd\r
                                Room902,Park road,Zhixing business-building\r
@@ -93308,12 +93464,6 @@ E8ECA3     (base 16)           Dongguan Liesheng Electronic Co.Ltd
                                shenzhen  guangdong  518057\r
                                CN\r
 \r
-20-96-8A   (hex)               China Mobile (Hangzhou) Information Technology Co., Ltd.\r
-20968A     (base 16)           China Mobile (Hangzhou) Information Technology Co., Ltd.\r
-                               No. 1600 Yuhangtang Road, Wuchang Street, Yuhang District\r
-                               Hangzhou  Zhejiang  310000\r
-                               CN\r
-\r
 F0-D4-F7   (hex)               varram system\r
 F0D4F7     (base 16)           varram system\r
                                57, TECHNO 11-RO,YUSEONG-GU, DAEJEON, KOREA \r
@@ -93674,12 +93824,6 @@ D81399     (base 16)           Hui Zhou Gaoshengda Technology Co.,LTD
                                Hui Zhou  Guangdong  516006\r
                                CN\r
 \r
-00-08-5D   (hex)               Mitel Corporation\r
-00085D     (base 16)           Mitel Corporation\r
-                               350 Legget Drive\r
-                               -    K2K 2W7\r
-                               CA\r
-\r
 E8-28-C1   (hex)               Eltex Enterprise Ltd.\r
 E828C1     (base 16)           Eltex Enterprise Ltd.\r
                                Okruzhnaya st. 29v\r
@@ -93692,23 +93836,11 @@ E828C1     (base 16)          Eltex Enterprise Ltd.
                                Hangzhou  Zhejiang,P.R.China  310051\r
                                CN\r
 \r
-EC-AA-25   (hex)               Samsung Electronics Co.,Ltd\r
-ECAA25     (base 16)           Samsung Electronics Co.,Ltd\r
-                               #94-1, Imsoo-Dong\r
-                               Gumi  Gyeongbuk  730-350\r
-                               KR\r
-\r
-C8-D1-2A   (hex)               Comtrend Corporation\r
-C8D12A     (base 16)           Comtrend Corporation\r
-                               3F-1, 10 Lane 609, Chongxin Road, Section 5, \r
-                               New Taipei City ,  Taiwan  24159\r
-                               TW\r
-\r
-18-19-D6   (hex)               Samsung Electronics Co.,Ltd\r
-1819D6     (base 16)           Samsung Electronics Co.,Ltd\r
-                               #94-1, Imsoo-Dong\r
-                               Gumi  Gyeongbuk  730-350\r
-                               KR\r
+00-08-5D   (hex)               Mitel Corporation\r
+00085D     (base 16)           Mitel Corporation\r
+                               350 Legget Drive\r
+                               -    K2K 2W7\r
+                               CA\r
 \r
 18-B6-F7   (hex)               NEW POS TECHNOLOGY LIMITED\r
 18B6F7     (base 16)           NEW POS TECHNOLOGY LIMITED\r
@@ -93722,6 +93854,18 @@ BC97E1     (base 16)           Broadcom Limited
                                Irvine  CA  92618\r
                                US\r
 \r
+EC-AA-25   (hex)               Samsung Electronics Co.,Ltd\r
+ECAA25     (base 16)           Samsung Electronics Co.,Ltd\r
+                               #94-1, Imsoo-Dong\r
+                               Gumi  Gyeongbuk  730-350\r
+                               KR\r
+\r
+18-19-D6   (hex)               Samsung Electronics Co.,Ltd\r
+1819D6     (base 16)           Samsung Electronics Co.,Ltd\r
+                               #94-1, Imsoo-Dong\r
+                               Gumi  Gyeongbuk  730-350\r
+                               KR\r
+\r
 54-EC-2F   (hex)               Ruckus Wireless\r
 54EC2F     (base 16)           Ruckus Wireless\r
                                350 West Java Drive\r
@@ -93794,6 +93938,78 @@ CC9070     (base 16)           Cisco Systems, Inc
                                ShenZhen  GuangDong  518055\r
                                CN\r
 \r
+48-A7-3C   (hex)               Sichuan tianyi kanghe communications co., LTD\r
+48A73C     (base 16)           Sichuan tianyi kanghe communications co., LTD\r
+                               No.198, section 1, xueshan avenue, jinyuan town, dayi county\r
+                               chengdu  sichuan  611330\r
+                               CN\r
+\r
+20-96-8A   (hex)               China Mobile (Hangzhou) Information Technology Co., Ltd.\r
+20968A     (base 16)           China Mobile (Hangzhou) Information Technology Co., Ltd.\r
+                               No. 1600 Yuhangtang Road, Wuchang Street, Yuhang District\r
+                               Hangzhou  Zhejiang  310000\r
+                               CN\r
+\r
+9C-99-CD   (hex)               Voippartners\r
+9C99CD     (base 16)           Voippartners\r
+                               Via di Passolombardo 35\r
+                               Rome     00133\r
+                               IT\r
+\r
+C8-D1-2A   (hex)               Comtrend Corporation\r
+C8D12A     (base 16)           Comtrend Corporation\r
+                               3F-1, 10 Lane 609, Chongxin Road, Section 5, \r
+                               New Taipei City,  Taiwan  24159\r
+                               TW\r
+\r
+00-0C-FF   (hex)               MRO-TEK Realty Limited\r
+000CFF     (base 16)           MRO-TEK Realty Limited\r
+                               #6, New BEL Road\r
+                               Chikkamaranahalli  Bangalore  560 054\r
+                               IN\r
+\r
+D8-E7-2B   (hex)               NetAlly\r
+D8E72B     (base 16)           NetAlly\r
+                               310 Littleton Road\r
+                               Westford  MA  01886\r
+                               US\r
+\r
+00-35-FF   (hex)               Texas Instruments\r
+0035FF     (base 16)           Texas Instruments\r
+                               12500 TI Blvd\r
+                               Dallas  TX  75243\r
+                               US\r
+\r
+44-59-E3   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
+4459E3     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
+                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+                               Dongguan    523808\r
+                               CN\r
+\r
+54-BA-D6   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
+54BAD6     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
+                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+                               Dongguan    523808\r
+                               CN\r
+\r
+74-59-09   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
+745909     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
+                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+                               Dongguan    523808\r
+                               CN\r
+\r
+E4-FD-A1   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
+E4FDA1     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
+                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+                               Dongguan    523808\r
+                               CN\r
+\r
+68-3F-1E   (hex)               EFFECT Photonics B.V.\r
+683F1E     (base 16)           EFFECT Photonics B.V.\r
+                               Kastanjelaan 400\r
+                               Eindhoven  Noord-Brabant  5616 LZ\r
+                               NL\r
+\r
 D8-6C-E9   (hex)               Sagemcom Broadband SAS\r
 D86CE9     (base 16)           Sagemcom Broadband SAS\r
                                250 route de l'Empereur\r
@@ -110198,12 +110414,6 @@ EC3091     (base 16)         Cisco Systems, Inc
                                94537 Orly  Cedex  \r
                                FR\r
 \r
-00-04-C4   (hex)               Allen & Heath Limited\r
-0004C4     (base 16)           Allen & Heath Limited\r
-                               Kernick Industrial Estate, Penryn\r
-                               Cornwall  England  TR10 9LU\r
-                               GB\r
-\r
 00-04-B7   (hex)               AMB i.t. Holding\r
 0004B7     (base 16)           AMB i.t. Holding\r
                                Zuiderhoutlaan 4\r
@@ -117155,12 +117365,6 @@ EC8EAE     (base 16)         Nagravision SA
                                Enschede    NL-7500\r
                                NL\r
 \r
-00-A0-0E   (hex)               NetScout Systems, Inc.\r
-00A00E     (base 16)           NetScout Systems, Inc.\r
-                               310 Littleton Road\r
-                               Westford  MA  01886\r
-                               US\r
-\r
 1C-33-0E   (hex)               PernixData\r
 1C330E     (base 16)           PernixData\r
                                1745 Technology Drive, Suite 800\r
@@ -124991,20 +125195,14 @@ B4CFE0     (base 16)                Sichuan tianyi kanghe communications co., LTD
                                chengdu  sichuan  611330\r
                                CN\r
 \r
-38-72-C0   (hex)               Comtrend Corporation\r
-3872C0     (base 16)           Comtrend Corporation\r
-                               3F-1, 10 Lane 609, Chongxin Road, Section 5, \r
-                               New Taipei City ,  Taiwan  24159\r
-                               TW\r
-\r
-48-51-69   (hex)               Samsung Electronics Co.,Ltd\r
-485169     (base 16)           Samsung Electronics Co.,Ltd\r
+88-29-9C   (hex)               Samsung Electronics Co.,Ltd\r
+88299C     (base 16)           Samsung Electronics Co.,Ltd\r
                                #94-1, Imsoo-Dong\r
                                Gumi  Gyeongbuk  730-350\r
                                KR\r
 \r
-88-29-9C   (hex)               Samsung Electronics Co.,Ltd\r
-88299C     (base 16)           Samsung Electronics Co.,Ltd\r
+48-51-69   (hex)               Samsung Electronics Co.,Ltd\r
+485169     (base 16)           Samsung Electronics Co.,Ltd\r
                                #94-1, Imsoo-Dong\r
                                Gumi  Gyeongbuk  730-350\r
                                KR\r
@@ -125051,11 +125249,11 @@ C48FC1     (base 16)                DEEPTRACK S.L.U.
                                Dongguan     523808\r
                                CN\r
 \r
-38-01-18   (hex)               ULVAC,Inc.\r
-380118     (base 16)           ULVAC,Inc.\r
-                               2500 Hagizono\r
-                               Chigasaki  Kanagawa  253-8543\r
-                               JP\r
+F8-A7-63   (hex)               Zhejiang Tmall Technology Co., Ltd.\r
+F8A763     (base 16)           Zhejiang Tmall Technology Co., Ltd.\r
+                               Ali Center,No.3331 Keyuan South RD (Shenzhen bay), Nanshan District, Shenzhen Guangdong province\r
+                               Shenzhen  GuangDong  518000\r
+                               CN\r
 \r
 14-AD-CA   (hex)               China Mobile Iot Limited company\r
 14ADCA     (base 16)           China Mobile Iot Limited company\r
@@ -125063,11 +125261,11 @@ C48FC1     (base 16)                DEEPTRACK S.L.U.
                                Chong Qing  Chong Qing  401120\r
                                CN\r
 \r
-F8-A7-63   (hex)               Zhejiang Tmall Technology Co., Ltd.\r
-F8A763     (base 16)           Zhejiang Tmall Technology Co., Ltd.\r
-                               Ali Center,No.3331 Keyuan South RD (Shenzhen bay), Nanshan District, Shenzhen Guangdong province\r
-                               Shenzhen  GuangDong  518000\r
-                               CN\r
+38-01-18   (hex)               ULVAC,Inc.\r
+380118     (base 16)           ULVAC,Inc.\r
+                               2500 Hagizono\r
+                               Chigasaki  Kanagawa  253-8543\r
+                               JP\r
 \r
 C4-41-1E   (hex)               Belkin International Inc.\r
 C4411E     (base 16)           Belkin International Inc.\r
@@ -125081,6 +125279,84 @@ C4411E     (base 16)         Belkin International Inc.
                                Espoo  Finland  02610\r
                                FI\r
 \r
+84-0B-7C   (hex)               Hitron Technologies. Inc\r
+840B7C     (base 16)           Hitron Technologies. Inc\r
+                               No. 1-8, Lising 1st Rd. Hsinchu Science Park, Hsinchu, 300, Taiwan, R.O.C\r
+                               Hsin-chu  Taiwan  300\r
+                               TW\r
+\r
+B4-54-59   (hex)               China Mobile (Hangzhou) Information Technology Co., Ltd.\r
+B45459     (base 16)           China Mobile (Hangzhou) Information Technology Co., Ltd.\r
+                               No. 1600 Yuhangtang Road, Wuchang Street, Yuhang District\r
+                               Hangzhou  Zhejiang  310000\r
+                               CN\r
+\r
+00-04-C4   (hex)               Audiotonix Group Limited\r
+0004C4     (base 16)           Audiotonix Group Limited\r
+                               Unit 10, Silverglade Business Park\r
+                               Chessington  Surrey  KT9 2QL\r
+                               GB\r
+\r
+00-AD-63   (hex)               Dedicated Micros Malta LTD\r
+00AD63     (base 16)           Dedicated Micros Malta LTD\r
+                               Blb017, Qasam Industrijali Bulebel\r
+                               ZEJTUN    ZTN 3000\r
+                               MT\r
+\r
+B4-DC-09   (hex)               Guangzhou Dawei Communication Co.,Ltd\r
+B4DC09     (base 16)           Guangzhou Dawei Communication Co.,Ltd\r
+                               Zone A 906#, International Business Incubator, No.3 Juquan Road, Huangpu District\r
+                               Guangzhou  Guangdong  510660\r
+                               CN\r
+\r
+BC-A1-3A   (hex)               SES-imagotag\r
+BCA13A     (base 16)           SES-imagotag\r
+                               St.-Peter-Gürtel 10b\r
+                               Graz    8010\r
+                               AT\r
+\r
+2C-1E-4F   (hex)               Chengdu Qianli Network Technology Co., Ltd.\r
+2C1E4F     (base 16)           Chengdu Qianli Network Technology Co., Ltd.\r
+                               Room 1208, 4 Building, Ideal Center, NO.38 Tianyi Street, Chengdu High-tech Zone\r
+                               Chengdu  Sichuan  610000\r
+                               CN\r
+\r
+AC-5D-5C   (hex)               FN-LINK TECHNOLOGY LIMITED\r
+AC5D5C     (base 16)           FN-LINK TECHNOLOGY LIMITED\r
+                               A Building,HuiXin industial park,No 31, YongHe road, Fuyong town, Bao'an District\r
+                               SHENZHEN  GUANGDONG  518100\r
+                               CN\r
+\r
+38-72-C0   (hex)               Comtrend Corporation\r
+3872C0     (base 16)           Comtrend Corporation\r
+                               3F-1, 10 Lane 609, Chongxin Road, Section 5, \r
+                               New Taipei City,  Taiwan  24159\r
+                               TW\r
+\r
+00-A0-0E   (hex)               NetAlly\r
+00A00E     (base 16)           NetAlly\r
+                               310 Littleton Road\r
+                               Westford  MA  01886\r
+                               US\r
+\r
+A4-AE-11   (hex)               Hon Hai Precision Ind. Co., Ltd.\r
+A4AE11     (base 16)           Hon Hai Precision Ind. Co., Ltd.\r
+                               GuangDongShenZhen\r
+                               ShenZhen  GuangDong  518109\r
+                               CN\r
+\r
+B4-52-A9   (hex)               Texas Instruments\r
+B452A9     (base 16)           Texas Instruments\r
+                               12500 TI Blvd\r
+                               Dallas  TX  75243\r
+                               US\r
+\r
+E4-54-E8   (hex)               Dell Inc.\r
+E454E8     (base 16)           Dell Inc.\r
+                               One Dell Way\r
+                               Round Rock  TX  78682\r
+                               US\r
+\r
 2C-39-96   (hex)               Sagemcom Broadband SAS\r
 2C3996     (base 16)           Sagemcom Broadband SAS\r
                                250 route de l'Empereur\r
@@ -154508,12 +154784,6 @@ A49B4F     (base 16)         HUAWEI TECHNOLOGIES CO.,LTD
                                SANTA CLARA  CA  95052\r
                                US\r
 \r
-58-C8-76   (hex)               China Mobile (Hangzhou) Information Technology Co., Ltd.\r
-58C876     (base 16)           China Mobile (Hangzhou) Information Technology Co., Ltd.\r
-                               No. 1600 Yuhangtang Road, Wuchang Street, Yuhang District\r
-                               Hangzhou  Zhejiang  310000\r
-                               CN\r
-\r
 8C-8F-8B   (hex)               China Mobile Chongqing branch\r
 8C8F8B     (base 16)           China Mobile Chongqing branch\r
                                6 building, No. 2, Xingguang three road\r
@@ -156206,24 +156476,6 @@ D8F15B     (base 16)         Espressif Inc.
 9C-93-E4   (hex)               Private\r
 9C93E4     (base 16)           Private\r
 \r
-D8-B6-B7   (hex)               Comtrend Corporation\r
-D8B6B7     (base 16)           Comtrend Corporation\r
-                               3F-1, 10 Lane 609, Chongxin Road, Section 5, \r
-                               New Taipei City ,  Taiwan  24159\r
-                               TW\r
-\r
-64-68-0C   (hex)               Comtrend Corporation\r
-64680C     (base 16)           Comtrend Corporation\r
-                               3F-1, 10 Lane 609, Chongxin Road, Section 5, \r
-                               New Taipei City ,  Taiwan  24159\r
-                               TW\r
-\r
-00-30-DA   (hex)               Comtrend Corporation\r
-0030DA     (base 16)           Comtrend Corporation\r
-                               3F-1, 10 Lane 609, Chongxin Road, Section 5, \r
-                               New Taipei City ,  Taiwan  24159\r
-                               TW\r
-\r
 7C-23-02   (hex)               Samsung Electronics Co.,Ltd\r
 7C2302     (base 16)           Samsung Electronics Co.,Ltd\r
                                #94-1, Imsoo-Dong\r
@@ -156325,3 +156577,93 @@ B4A305     (base 16)         XIAMEN YAXON NETWORK CO., LTD.
                                46#,Guanri Road, Software Park II\r
                                Xiamen  Fujian  361008\r
                                CN\r
+\r
+58-C8-76   (hex)               China Mobile (Hangzhou) Information Technology Co., Ltd.\r
+58C876     (base 16)           China Mobile (Hangzhou) Information Technology Co., Ltd.\r
+                               No. 1600 Yuhangtang Road, Wuchang Street, Yuhang District\r
+                               Hangzhou  Zhejiang  310000\r
+                               CN\r
+\r
+38-EF-E3   (hex)                INGENICO TERMINALS SAS\r
+38EFE3     (base 16)            INGENICO TERMINALS SAS\r
+                               28-32 BOULEVARD DE GRENELLE\r
+                               PARIS    75015\r
+                               FR\r
+\r
+D0-37-45   (hex)               TP-LINK TECHNOLOGIES CO.,LTD.\r
+D03745     (base 16)           TP-LINK TECHNOLOGIES CO.,LTD.\r
+                               Building 24(floors 1,3,4,5)and 28(floors 1-4)Central Science and Technology Park,Shennan Road,Nanshan\r
+                               Shenzhen  Guangdong  518057\r
+                               CN\r
+\r
+50-D4-F7   (hex)               TP-LINK TECHNOLOGIES CO.,LTD.\r
+50D4F7     (base 16)           TP-LINK TECHNOLOGIES CO.,LTD.\r
+                               Building 24(floors 1,3,4,5)and 28(floors 1-4)Central Science and Technology Park,Shennan Road,Nanshan\r
+                               Shenzhen  Guangdong  518057\r
+                               CN\r
+\r
+8C-59-3C   (hex)               IEEE Registration Authority\r
+8C593C     (base 16)           IEEE Registration Authority\r
+                               445 Hoes Lane\r
+                               Piscataway  NJ  08554\r
+                               US\r
+\r
+00-30-DA   (hex)               Comtrend Corporation\r
+0030DA     (base 16)           Comtrend Corporation\r
+                               3F-1, 10 Lane 609, Chongxin Road, Section 5, \r
+                               New Taipei City,  Taiwan  24159\r
+                               TW\r
+\r
+64-68-0C   (hex)               Comtrend Corporation\r
+64680C     (base 16)           Comtrend Corporation\r
+                               3F-1, 10 Lane 609, Chongxin Road, Section 5, \r
+                               New Taipei City,  Taiwan  24159\r
+                               TW\r
+\r
+D8-B6-B7   (hex)               Comtrend Corporation\r
+D8B6B7     (base 16)           Comtrend Corporation\r
+                               3F-1, 10 Lane 609, Chongxin Road, Section 5, \r
+                               New Taipei City,  Taiwan  24159\r
+                               TW\r
+\r
+00-ED-B8   (hex)               KYOCERA Corporation \r
+00EDB8     (base 16)           KYOCERA Corporation \r
+                               30 Hoji\r
+                               Kitami,  Hokkaido  099-1595\r
+                               JP\r
+\r
+00-F6-20   (hex)               Google, Inc.\r
+00F620     (base 16)           Google, Inc.\r
+                               1600 Amphitheatre Parkway\r
+                               Mountain View  CA  94043\r
+                               US\r
+\r
+E4-15-F6   (hex)               Texas Instruments\r
+E415F6     (base 16)           Texas Instruments\r
+                               12500 TI Blvd\r
+                               Dallas  TX  75243\r
+                               US\r
+\r
+B4-60-77   (hex)               Sichuan Changhong Electric Ltd.\r
+B46077     (base 16)           Sichuan Changhong Electric Ltd.\r
+                               No.35,East MianXin Road,MianYang,Sichaun,China.\r
+                               MianYang  SiChuan  PRC 621000\r
+                               CN\r
+\r
+54-92-09   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
+549209     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
+                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+                               Dongguan    523808\r
+                               CN\r
+\r
+E4-19-C1   (hex)               HUAWEI TECHNOLOGIES CO.,LTD\r
+E419C1     (base 16)           HUAWEI TECHNOLOGIES CO.,LTD\r
+                               No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+                               Dongguan    523808\r
+                               CN\r
+\r
+B8-66-85   (hex)               Sagemcom Broadband SAS\r
+B86685     (base 16)           Sagemcom Broadband SAS\r
+                               250, route de l'Empereur\r
+                               Rueil Malmaison Cedex  hauts de seine  92848\r
+                               FR\r
index b211916844766593837bb15f4996e0e722959908..4abc550c81c96e08e5d6432b0838934de3241b8b 100644 (file)
@@ -2972,6 +2972,42 @@ BC-97-40   (hex)         Lattec I/S
                                Hillerød    3400\r
                                DK\r
 \r
+D0-C8-57   (hex)               Eco Mobile \r
+700000-7FFFFF     (base 16)            Eco Mobile \r
+                               Samoborska cesta 330\r
+                               Zagreb  Zagreb  10090\r
+                               HR\r
+\r
+D0-C8-57   (hex)               CHUNGHSIN INTERNATIONAL ELECTRONICS CO.,LTD.\r
+B00000-BFFFFF     (base 16)            CHUNGHSIN INTERNATIONAL ELECTRONICS CO.,LTD.\r
+                               618-2# Gongren West Road,Jiaojiang,\r
+                               Taizhou  Zhejiang  317700\r
+                               CN\r
+\r
+D0-C8-57   (hex)               E-T-A Elektrotechnische Apparate GmbH\r
+E00000-EFFFFF     (base 16)            E-T-A Elektrotechnische Apparate GmbH\r
+                               Industriestr. 2-8\r
+                               Altdorf    90518\r
+                               DE\r
+\r
+8C-59-3C   (hex)               GENIS\r
+900000-9FFFFF     (base 16)            GENIS\r
+                               1111, 11F RACREUM, 26 Wiryeseoil-ro\r
+                               Seongnam-si  Gyeonggi-do  13647\r
+                               KR\r
+\r
+8C-59-3C   (hex)               Future Robot Technology Co., Limited\r
+100000-1FFFFF     (base 16)            Future Robot Technology Co., Limited\r
+                               Room 406 Block A South Wind Tower, Nanshan Cloud Valley Innovation Industry Park, No 4093 Lau Sin Avenue Taoyuan Street Nanshan District\r
+                               Shenzhen  Guangdong  518000\r
+                               CN\r
+\r
+8C-59-3C   (hex)               OBO Pro.2 Inc.\r
+700000-7FFFFF     (base 16)            OBO Pro.2 Inc.\r
+                               2148 Bering Dr.\r
+                               San Jose  CA  95131\r
+                               US\r
+\r
 1C-87-76   (hex)               Strone Technology\r
 C00000-CFFFFF     (base 16)            Strone Technology\r
                                13 Ellis Street\r
@@ -4931,12 +4967,6 @@ A00000-AFFFFF     (base 16)              Muzik Inc
                                West Hollywood    CA 90069\r
                                US\r
 \r
-74-5B-C5   (hex)               Beijing Inspiry Technology Co., Ltd.\r
-100000-1FFFFF     (base 16)            Beijing Inspiry Technology Co., Ltd.\r
-                               Building No. 5, East Zone, No. 10, Xibeiwang East Road, Haidian District\r
-                               Beijing  Beijing  100092\r
-                               CN\r
-\r
 74-5B-C5   (hex)               SHENZHEN ATX TECHNOLOGY CO.,LTD \r
 700000-7FFFFF     (base 16)            SHENZHEN ATX TECHNOLOGY CO.,LTD \r
                                7/F,Zhengjiyuan Buiding,2 Road,Qianjing, Xixiang, Baoan District\r
@@ -5465,9 +5495,6 @@ E00000-EFFFFF     (base 16)               GETMOBIT LLC
                                BeiJing  Beijing  100024\r
                                CN\r
 \r
-A4-3B-FA   (hex)               Private\r
-F00000-FFFFFF     (base 16)            Private\r
-\r
 8C-1C-DA   (hex)               Structura Technology & Innovation\r
 300000-3FFFFF     (base 16)            Structura Technology & Innovation\r
                                via Roveredo 20/B\r
@@ -5828,6 +5855,21 @@ D0-C8-57   (hex)         FORGAMERS INC.
                                Taipei    110\r
                                TW\r
 \r
+D0-C8-57   (hex)               Nanjing Magewell Electronics Co.,Ltd\r
+800000-8FFFFF     (base 16)            Nanjing Magewell Electronics Co.,Ltd\r
+                               14th Floor, Building 3, No. 89 Shengli Road, Jiangning Economic and Technological Development Zone\r
+                               Nanjing  Jiangsu  211100\r
+                               CN\r
+\r
+74-5B-C5   (hex)               Beijing Inspiry Technology Co., Ltd. \r
+100000-1FFFFF     (base 16)            Beijing Inspiry Technology Co., Ltd. \r
+                               Building No. 5, East Zone, No. 10, Xibeiwang East Road, Haidian District\r
+                               Beijing  Beijing  100092\r
+                               CN\r
+\r
+A4-3B-FA   (hex)               Private\r
+F00000-FFFFFF     (base 16)            Private\r
+\r
 1C-87-76   (hex)               Zhuhai MYZR Technology Co.,Ltd\r
 500000-5FFFFF     (base 16)            Zhuhai MYZR Technology Co.,Ltd\r
                                Room 302,Area D2,National Hi-tech Zone,NO.1,Software Park Road\r
@@ -7886,9 +7928,6 @@ B00000-BFFFFF     (base 16)               COMATIS
                                Leuven    3001\r
                                BE\r
 \r
-80-E4-DA   (hex)               Private\r
-F00000-FFFFFF     (base 16)            Private\r
-\r
 74-19-F8   (hex)               Private\r
 F00000-FFFFFF     (base 16)            Private\r
 \r
@@ -8927,6 +8966,39 @@ BC-97-40   (hex)         Airfi Oy AB
                                RAISIO    21200\r
                                FI\r
 \r
+D0-C8-57   (hex)               shenzhen cnsun\r
+A00000-AFFFFF     (base 16)            shenzhen cnsun\r
+                               5 Floor, 2 Building,Tongfuyu Industrial City\r
+                               shenzhen  guangdong  518000\r
+                               CN\r
+\r
+D0-C8-57   (hex)               YUAN High-Tech Development Co., Ltd.\r
+000000-0FFFFF     (base 16)            YUAN High-Tech Development Co., Ltd.\r
+                               18F, No.88, Sec. 2, Chung Hsiao E.Rd., \r
+                               Taipei,   Taiwan   10050 \r
+                               TW\r
+\r
+D0-C8-57   (hex)               Beijing Inspiry Technology Co., Ltd. \r
+500000-5FFFFF     (base 16)            Beijing Inspiry Technology Co., Ltd. \r
+                               Building No. 5, East Zone, No. 10, Xibeiwang East Road, Haidian District\r
+                               Beijing   Beijing   100092\r
+                               CN\r
+\r
+80-E4-DA   (hex)               Private\r
+F00000-FFFFFF     (base 16)            Private\r
+\r
+8C-59-3C   (hex)               Chongqing beimoting technology co.ltd\r
+300000-3FFFFF     (base 16)            Chongqing beimoting technology co.ltd\r
+                               97-2 keyuan 2nd street, jiulongpo district,\r
+                               Chongqing  Chongqing  400039\r
+                               CN\r
+\r
+8C-59-3C   (hex)               IDRO-ELETTRICA S.P.A.\r
+D00000-DFFFFF     (base 16)            IDRO-ELETTRICA S.P.A.\r
+                               VIA BELLINI 2\r
+                               SAN CESARIO SUL PANARO  ITALY/MODENA  41018\r
+                               IT\r
+\r
 1C-87-76   (hex)               Hekatron Vertriebs GmbH\r
 B00000-BFFFFF     (base 16)            Hekatron Vertriebs GmbH\r
                                Brühlmatten 9\r
@@ -11003,9 +11075,6 @@ D00000-DFFFFF     (base 16)             D-Link (Shanghai)Limited Corp.
                                GYEONGGI-DO  GOYANG-SI,ILSANDONG-GU  410315\r
                                KR\r
 \r
-2C-D1-41   (hex)               Private\r
-F00000-FFFFFF     (base 16)            Private\r
-\r
 8C-1C-DA   (hex)               T+A elektroakustik GmbH & Co.KG\r
 B00000-BFFFFF     (base 16)            T+A elektroakustik GmbH & Co.KG\r
                                Planckstr. 9-11\r
@@ -11834,12 +11903,6 @@ A00000-AFFFFF     (base 16)            ESTec Corporation
                                Croissy-Beaubourg    77435\r
                                FR\r
 \r
-60-95-CE   (hex)               VNS Inc.\r
-E00000-EFFFFF     (base 16)            VNS Inc.\r
-                               3F, No. 27, Lane 66, Ruiguang Rd.\r
-                               Taiepi  Taiwan  11466\r
-                               TW\r
-\r
 60-95-CE   (hex)               Q-SENTECH Co.,Ltd.\r
 200000-2FFFFF     (base 16)            Q-SENTECH Co.,Ltd.\r
                                #201,170 Seonyu-ro, Yeongdeungpo-gu\r
@@ -11870,6 +11933,27 @@ E00000-EFFFFF     (base 16)            B4ComTechnologies LLC
                                Moscow    117292\r
                                RU\r
 \r
+D0-C8-57   (hex)               Shenzhen xiaosha  Intelligence  Technology Co. Ltd\r
+900000-9FFFFF     (base 16)            Shenzhen xiaosha  Intelligence  Technology Co. Ltd\r
+                                Poly Building, 2702 Nanhai Avenue, Nanshan District\r
+                               Shenzhen  Guangdong  518054\r
+                               CN\r
+\r
+2C-D1-41   (hex)               Private\r
+F00000-FFFFFF     (base 16)            Private\r
+\r
+60-95-CE   (hex)               VNS Inc.\r
+E00000-EFFFFF     (base 16)            VNS Inc.\r
+                               3F, No. 27, Lane 66, Ruiguang Rd.\r
+                               Taipei  Taiwan  11466\r
+                               TW\r
+\r
+8C-59-3C   (hex)               Nanonord A/S\r
+800000-8FFFFF     (base 16)            Nanonord A/S\r
+                               Skjernvej 4A\r
+                               Aalborg    9220\r
+                               DK\r
+\r
 1C-87-74   (hex)               Philips Personal Health Solutions\r
 000000-0FFFFF     (base 16)            Philips Personal Health Solutions\r
                                High Tech Campus, HTC37 floor 0\r
@@ -14869,3 +14953,39 @@ D0-C8-57   (hex)               Mobicon
                                #406, 97, Jungbu-daero 448beon-gil, Yeongtong-gu\r
                                Suwon-si  Gyeonggi-do  16521\r
                                KR\r
+\r
+D0-C8-57   (hex)               DALI A/S\r
+100000-1FFFFF     (base 16)            DALI A/S\r
+                               Dali Alle 1\r
+                               Norager    9610\r
+                               DK\r
+\r
+D0-C8-57   (hex)               Imin Technology Pte Ltd\r
+400000-4FFFFF     (base 16)            Imin Technology Pte Ltd\r
+                               77 Sciene park Drive #03-10 Cintech III \r
+                               Singapore  Singapore  118256\r
+                               SG\r
+\r
+D0-C8-57   (hex)               Innovative Industrial(HK)Co., Limited\r
+600000-6FFFFF     (base 16)            Innovative Industrial(HK)Co., Limited\r
+                               OFFICE 3A,12/F,KAISER CENTRE,NO.18CENTRE STREET\r
+                               SAI YING PUN    999077\r
+                               HK\r
+\r
+8C-59-3C   (hex)               Spectranetix\r
+500000-5FFFFF     (base 16)            Spectranetix\r
+                               845 Stewart Drive, Suite B\r
+                               Sunnyvale  CA  94085\r
+                               US\r
+\r
+8C-59-3C   (hex)               Qbic Technology Co., Ltd\r
+600000-6FFFFF     (base 16)            Qbic Technology Co., Ltd\r
+                               26F.-12, No.99, Sec. 1, Xintai 5th Rd., Xizhi Dist.,\r
+                               New Taipei     22175\r
+                               TW\r
+\r
+8C-59-3C   (hex)               Beida Jade Bird Universal Fire Alarm Device CO.,LTD.\r
+200000-2FFFFF     (base 16)            Beida Jade Bird Universal Fire Alarm Device CO.,LTD.\r
+                               Jade Bird Building C, 207 Chengfu RD, Haidian District\r
+                               Beijing  Beijing  100871\r
+                               CN\r
index 9120d7b5c3c0c407bea3832567735e6bc4b65e1c..e9c20f28b41a3bd9ac6b401429d6e6ea343f5754 100644 (file)
@@ -3554,6 +3554,54 @@ DFE000-DFEFFF     (base 16)              microtec Sicherheitstechnik GmbH
                                CHATILLON    92320\r
                                FR\r
 \r
+70-B3-D5   (hex)               Onethinx BV\r
+068000-068FFF     (base 16)            Onethinx BV\r
+                               Punterweg 2\r
+                               Zwolle  OV  8042 PB\r
+                               NL\r
+\r
+70-B3-D5   (hex)               Worldsensing\r
+2C7000-2C7FFF     (base 16)            Worldsensing\r
+                               Carrer Viriat 47, Edificio Numancia 1 7th floor\r
+                               Barcelona  - Please Choose -  08014\r
+                               ES\r
+\r
+70-B3-D5   (hex)               Fath Mechatronics\r
+DC3000-DC3FFF     (base 16)            Fath Mechatronics\r
+                               Hügelmühle 31\r
+                               Spalt  bavaria  91174\r
+                               DE\r
+\r
+70-B3-D5   (hex)               Oxford Monitoring Solutions Ltd\r
+102000-102FFF     (base 16)            Oxford Monitoring Solutions Ltd\r
+                               Oakfield Estate\r
+                               Eynsham  Oxford  OX298JG\r
+                               GB\r
+\r
+70-B3-D5   (hex)               Sensative AB\r
+2C0000-2C0FFF     (base 16)            Sensative AB\r
+                               Mobilvägen 10\r
+                               Lund    22362\r
+                               SE\r
+\r
+70-B3-D5   (hex)               Astronomical Research Cameras, Inc.\r
+24C000-24CFFF     (base 16)            Astronomical Research Cameras, Inc.\r
+                               2247 San Diego Ave #135\r
+                               San Diego  CA  92110\r
+                               US\r
+\r
+70-B3-D5   (hex)               Sicon srl\r
+D49000-D49FFF     (base 16)            Sicon srl\r
+                               Via Sila 1/3\r
+                               Isola Vicentina  Vicenza  36033\r
+                               IT\r
+\r
+70-B3-D5   (hex)               ATGS\r
+726000-726FFF     (base 16)            ATGS\r
+                               11 POLBINA ST.\r
+                               MOSCOW    109388\r
+                               RU\r
+\r
 70-B3-D5   (hex)               Flintab AB\r
 D60000-D60FFF     (base 16)            Flintab AB\r
                                Kabelvägen 4\r
@@ -5966,9 +6014,6 @@ B71000-B71FFF     (base 16)               Private
                                Indianapolis   IN  46239\r
                                US\r
 \r
-70-B3-D5   (hex)               Private\r
-580000-580FFF     (base 16)            Private\r
-\r
 70-B3-D5   (hex)               WICELL TECHNOLOGY\r
 BB0000-BB0FFF     (base 16)            WICELL TECHNOLOGY\r
                                61 Dien Bien Phu\r
@@ -7142,9 +7187,6 @@ FEA000-FEAFFF     (base 16)               Heng Dian Technology Co., Ltd
                                Moscow    109388\r
                                RU\r
 \r
-70-B3-D5   (hex)               Private\r
-401000-401FFF     (base 16)            Private\r
-\r
 70-B3-D5   (hex)               LG Electronics\r
 9E3000-9E3FFF     (base 16)            LG Electronics\r
                                10, Magokjungang 10-ro, Gangseo-gu\r
@@ -7430,6 +7472,30 @@ CD7000-CD7FFF     (base 16)              AutomationX GmbH
                                Graz  Styria  8020\r
                                AT\r
 \r
+70-B3-D5   (hex)               Private\r
+580000-580FFF     (base 16)            Private\r
+\r
+70-B3-D5   (hex)               Private\r
+401000-401FFF     (base 16)            Private\r
+\r
+70-B3-D5   (hex)               Hermann Automation GmbH\r
+B2F000-B2FFFF     (base 16)            Hermann Automation GmbH\r
+                               Erlenwiese 15\r
+                               Mengerskirchen  Hessen  D-35794\r
+                               DE\r
+\r
+70-B3-D5   (hex)               INTERNET PROTOCOLO LOGICA SL\r
+B58000-B58FFF     (base 16)            INTERNET PROTOCOLO LOGICA SL\r
+                               Sector Foresta 43, local 26\r
+                               Tres Cantos  Madrid  28760\r
+                               ES\r
+\r
+70-B3-D5   (hex)               Legrand Electric Ltd\r
+093000-093FFF     (base 16)            Legrand Electric Ltd\r
+                               Unit 10 Cowley Road\r
+                               Blyth  Northumberland  NE24 5TF\r
+                               GB\r
+\r
 70-B3-D5   (hex)               Schildknecht AG\r
 494000-494FFF     (base 16)            Schildknecht AG\r
                                Haugweg 26\r
@@ -11162,6 +11228,39 @@ E1E000-E1EFFF     (base 16)            Umano Medical Inc.
 70-B3-D5   (hex)               Private\r
 A9F000-A9FFFF     (base 16)            Private\r
 \r
+70-B3-D5   (hex)               KRONOTECH SRL\r
+D56000-D56FFF     (base 16)            KRONOTECH SRL\r
+                               VIALE UNGHERIA 125\r
+                               UDINE  ITALY/UDINE  33100\r
+                               IT\r
+\r
+70-B3-D5   (hex)               Ascon Tecnologic S.r.l.\r
+57E000-57EFFF     (base 16)            Ascon Tecnologic S.r.l.\r
+                               via Indipendenza, 56\r
+                               Vigevano  PV  27029\r
+                               IT\r
+\r
+70-B3-D5   (hex)               Private\r
+2D7000-2D7FFF     (base 16)            Private\r
+\r
+70-B3-D5   (hex)               GeoSpectrum Technologies Inc\r
+3CB000-3CBFFF     (base 16)            GeoSpectrum Technologies Inc\r
+                               10 Akerley Blvd, #19\r
+                               Dartmouth  Nova Scotia  B3B1J4\r
+                               CA\r
+\r
+70-B3-D5   (hex)               Heim- & Bürokommunikation Ilmert e.K.\r
+DF4000-DF4FFF     (base 16)            Heim- & Bürokommunikation Ilmert e.K.\r
+                               Jakobsbrunnenstr. 14\r
+                               Frankfurt am Main    60386\r
+                               DE\r
+\r
+70-B3-D5   (hex)               Echogear\r
+571000-571FFF     (base 16)            Echogear\r
+                               12884 Frontrunner Blvd Ste 201\r
+                               Draper  UT  84020\r
+                               US\r
+\r
 70-B3-D5   (hex)               Innitive B.V.\r
 66B000-66BFFF     (base 16)            Innitive B.V.\r
                                Brouwerijstraat 20\r
@@ -14993,6 +15092,54 @@ CF8000-CF8FFF     (base 16)            Idneo Technologies S.A.U.
                                Barcelona  Barcelona  08028\r
                                ES\r
 \r
+70-B3-D5   (hex)               Syscom Instruments SA\r
+BE7000-BE7FFF     (base 16)            Syscom Instruments SA\r
+                               industrie 21\r
+                               Sainte-Croix    1450\r
+                               CH\r
+\r
+70-B3-D5   (hex)               DAO QIN TECHNOLOGY CO.LTD.\r
+3BD000-3BDFFF     (base 16)            DAO QIN TECHNOLOGY CO.LTD.\r
+                               No. 359, Zhongxiao Rd\r
+                               Chishang Township  Taitung County  958\r
+                               TW\r
+\r
+70-B3-D5   (hex)               MB connect line GmbH Fernwartungssysteme\r
+CC6000-CC6FFF     (base 16)            MB connect line GmbH Fernwartungssysteme\r
+                               Winnettener Straße 6\r
+                               Dinkelsbuehl  Bavaria  91550\r
+                               DE\r
+\r
+70-B3-D5   (hex)               Technological Application and Production One Member Liability Company (Tecapro company)\r
+456000-456FFF     (base 16)            Technological Application and Production One Member Liability Company (Tecapro company)\r
+                               18A Cong Hoa street\r
+                               Ho Chi Minh city  Ho Chi Minh city  700000\r
+                               VN\r
+\r
+70-B3-D5   (hex)               Yamamoto Works Ltd.\r
+DFB000-DFBFFF     (base 16)            Yamamoto Works Ltd.\r
+                               3-1-3 Kashiwaza\r
+                               Ageo  Saitama  3620075\r
+                               JP\r
+\r
+70-B3-D5   (hex)               BAYKON Endüstriyel Kontrol Sistemleri San. ve Tic. A.Ş.\r
+258000-258FFF     (base 16)            BAYKON Endüstriyel Kontrol Sistemleri San. ve Tic. A.Ş.\r
+                               Kimya Sanayicileri Org. San. Bolgesi Organik Cad. No:31\r
+                               Istanbul  Tuzla   34956\r
+                               TR\r
+\r
+70-B3-D5   (hex)               GlooVir Inc.\r
+47A000-47AFFF     (base 16)            GlooVir Inc.\r
+                               #413, 96 Gajeongbuk-Ro\r
+                               Daejeon  Yuseong  34111\r
+                               KR\r
+\r
+70-B3-D5   (hex)               WARECUBE,INC\r
+463000-463FFF     (base 16)            WARECUBE,INC\r
+                               #A-811, 142-10, Saneop-ro, 156beon-gil, Gwonseon-gu\r
+                               Suwon-si    16648\r
+                               KR\r
+\r
 70-B3-D5   (hex)               EMAC, Inc.\r
 8AB000-8ABFFF     (base 16)            EMAC, Inc.\r
                                2390 EMAC Way\r
@@ -18679,3 +18826,33 @@ ABD000-ABDFFF     (base 16)            wtec GmbH
                                19, Yangje-daero 11gil, Seocho-gu\r
                                Seoul    06772\r
                                KR\r
+\r
+70-B3-D5   (hex)               Prolan Zrt.\r
+C04000-C04FFF     (base 16)            Prolan Zrt.\r
+                               Szentendrei út 1-3.\r
+                               Budakalasz    2011\r
+                               HU\r
+\r
+70-B3-D5   (hex)               Morgan Schaffer Inc.\r
+1F7000-1F7FFF     (base 16)            Morgan Schaffer Inc.\r
+                               8300 rue St-Patrick bureau 150\r
+                               LaSalle  Quebec  H8N 2H1\r
+                               CA\r
+\r
+70-B3-D5   (hex)               Season Electronics Ltd\r
+65E000-65EFFF     (base 16)            Season Electronics Ltd\r
+                               600 Nest Business Park \r
+                               Havant  Hampshire  PO9 5TL\r
+                               GB\r
+\r
+70-B3-D5   (hex)               Beijing PanGu Company\r
+E54000-E54FFF     (base 16)            Beijing PanGu Company\r
+                               Beijing agricultural college\r
+                               Beijing    100010\r
+                               CN\r
+\r
+70-B3-D5   (hex)               Innotas Elektronik GmbH\r
+C51000-C51FFF     (base 16)            Innotas Elektronik GmbH\r
+                               Rathenaustr. 18a\r
+                               Zittau    D-02763\r
+                               DE\r
index 56cf5708939b249e90f570239c241e18dd94be66..2b4fe96c0ae22c41f9da776ce5d48aef956f0b80 100644 (file)
@@ -1,8 +1,8 @@
 #
 #      List of PCI ID's
 #
-#      Version: 2019.03.22
-#      Date:    2019-03-22 03:15:01
+#      Version: 2019.04.06
+#      Date:    2019-04-06 03:15:02
 #
 #      Maintained by Albert Pool, Martin Mares, and other volunteers from
 #      the PCI ID Project at https://pci-ids.ucw.cz/.
        1645  Broadcom NetXtreme BCM5701 Gigabit Ethernet
        1801  T2 Bridge Controller
        1802  T2 Secure Enclave Processor
+       1803  Apple Audio Device
        2001  S1X NVMe Controller
        2002  S3ELab NVMe Controller
        2003  S3X NVMe Controller
                1077 02a7  QL45212-DE 25GbE Adapter
                1077 e4f6  FastLinQ QL45211H 25GbE Adapter
                1077 e4f7  FastLinQ QL45212H 25GbE Adapter
+               1590 0245  10/20/25GbE 2P 4820c CNA
        165c  FastLinQ QL45000 Series 10/25/40/50GbE Controller (FCoE)
                1077 0034  QL45262 Flex 50Gb 2-port Ethernet Adapter w/ iSCSI/FCoE
                1077 e4f1  FastLinQ QL45462H 40GbE FCoE Adapter
                1077 e4f2  FastLinQ QL45461H 40GbE FCoE Adapter
+               1590 0245  10/20/25GbE 2P 4820c CNA FCoE
        165e  FastLinQ QL45000 Series 10/25/40/50GbE Controller (iSCSI)
                1077 0034  QL45262 Flex 50Gb 2-port Ethernet Adapter w/ iSCSI/FCoE
                1077 e4f1  FastLinQ QL45462H 40GbE iSCSI Adapter
                1077 e4f2  FastLinQ QL45461H 40GbE iSCSI Adapter
+               1590 0245  10/20/25GbE 2P 4820c CNA iSCSI
        1664  FastLinQ QL45000 Series Gigabit Ethernet Controller (SR-IOV VF)
                1077 e4f1  FastLinQ QL45462H 40GbE Adapter (SR-IOV VF)
                1077 e4f2  FastLinQ QL45461H 40GbE Adapter (SR-IOV VF)
                1077 e4f6  FastLinQ QL45211H 25GbE Adapter (SR-IOV VF)
                1077 e4f7  FastLinQ QL45212H 25GbE Adapter (SR-IOV VF)
                1077 e4f8  FastLinQ QL45611H 100GbE Adapter (SR-IOV VF)
+               1590 0245  10/20/25GbE 2P 4820c CNA SRIOV
        2020  ISP2020A Fast!SCSI Basic Adapter
        2031  ISP8324-based 16Gb Fibre Channel to PCI Express Adapter
                103c 17e7  SN1000Q 16Gb Single Port Fibre Channel Adapter
        1022  GK110GL [Tesla K20c]
        1023  GK110BGL [Tesla K40m]
                10de 097e  12GB Computational Accelerator
-       1024  GK110BGL [Tesla K40c]
+       1024  GK180GL [Tesla K40c]
        1026  GK110GL [Tesla K20s]
        1027  GK110BGL [Tesla K40st]
        1028  GK110GL [Tesla K20m]
                1028 06dc  Latitude E7470
                1028 06e4  XPS 15 9550
                17aa 224f  ThinkPad X1 Carbon 5th Gen
+       5260  RTS5260 PCI Express Card Reader
        5286  RTS5286 PCI Express Card Reader
        5287  RTL8411B PCI Express Card Reader
        5288  RTS5288 PCI Express Card Reader
        0211  MT416842 Family [BlueField SoC Flash Recovery]
        0212  MT2892 Family [ConnectX-6 Dx Flash Recovery]
        0213  MT2892 Family [ConnectX-6 Dx Secure Flash Recovery]
+       0214  MT42822 Family [BlueField-2 SoC Flash Recovery]
+       0215  MT42822 Family [BlueField-2 Secure Flash Recovery]
        024e  MT53100 [Spectrum-2, Flash recovery mode]
        024f  MT53100 [Spectrum-2, Secure Flash recovery mode]
+       0250  Spectrum-3, Flash recovery mode
+       0251  Spectrum-3, Secure Flash recovery mode
        0262  MT27710 [ConnectX-4 Lx Programmable] EN
        0263  MT27710 [ConnectX-4 Lx Programmable Virtual Function] EN
        0264  Innova-2 Flex Burn image
        1021  MT28861
        1974  MT28800 Family [ConnectX-5 PCIe Bridge]
        1975  MT416842 Family [BlueField SoC PCIe Bridge]
+       1978  MT42822 Family [BlueField-2 SoC PCIe Bridge]
        4117  MT27712A0-FDCF-AE
                1bd4 0039  SN10XMP2P25
                1bd4 004d  SN10XMP2P25,YZPC-01191-101
        a2d1  MT416842 BlueField SoC Crypto disabled
        a2d2  MT416842 BlueField integrated ConnectX-5 network controller
        a2d3  MT416842 BlueField multicore SoC family VF
+       a2d4  MT42822 BlueField-2 SoC Crypto enabled
+       a2d5  MT42822 BlueField-2 SoC Crypto disabled
+       a2d6  MT42822 BlueField-2 integrated ConnectX-6 Dx network controller
+       c2d2  MT416842 BlueField SoC management interfac
+       c2d3  MT42822 BlueField-2 SoC Management Interface
 # SwitchX-2, 40GbE switch
        c738  MT51136
        c739  MT51136 GW
        cb84  MT52100
        cf08  MT53236
        cf6c  MT53100 [Spectrum-2]
+       cf70  Spectrum-3
        d2f0  Quantum HDR (200Gbps) switch
 15b4  CCI/TRIAD
 15b5  Cimetrics Inc
 1cb5  Focusrite Audio Engineering Ltd
        0002  Clarett
 1cb8  Dawning Information Industry Co., Ltd.
+1cc4  Union Memory (Shenzhen)
+       17ab  NVMe 256G SSD device
 1cc5  Embedded Intelligence, Inc.
        0100  CAN-PCIe-02
 1cc7  Radian Memory Systems Inc.
        0011  IO Bridge
 1da1  Teko Telecom S.r.l.
 1da2  Sapphire Technology Limited
+1da3  Habana Labs Ltd.
+       0001  HL-1000 AI Inference Accelerator [Goya]
 1dbb  NGD Systems, Inc.
 1dbf  Guizhou Huaxintong Semiconductor Technology Co., Ltd
        0401  StarDragon4800 PCI Express Root Port
                1df3 0001  ENA2050F
                1df3 0002  ENA2050FS
        0203  ACE-NIC100 Programmable Network Accelerator
+               1df3 0000  Maintenance Mode
                1df3 0001  ENA2080F
                1df3 0002  ENA2080FS
                1df3 0003  ENA2100F
        0215  Acorn CLE-215
        021f  Acorn CLE-215+
        1525  Xilinx BCU-1525
+1e26  Fujitsu Client Computing Limited
 1e38  Thinci, Inc
 1e3d  Burlywood, Inc
 # nee Tumsan Oy
                8086 0007  Ethernet Network Adapter OCP XXV710-1
                8086 0008  Ethernet Network Adapter OCP XXV710-1
                8086 0009  Ethernet 25G 2P XXV710 Adapter
+               8086 000a  Ethernet 25G 2P XXV710 OCP
                8086 4001  Ethernet Network Adapter XXV710-2
        1591  Ethernet Controller E810-C for backplane
        1592  Ethernet Controller E810-C for QSFP
        15f0  JHL7540 Thunderbolt 3 USB Controller [Titan Ridge DD 2018]
        15f6  I210 Gigabit Ethernet Connection
        15ff  Ethernet Controller X710 for 10GBASE-T
+               8086 0000  Ethernet Network Adapter X710-TL
                8086 0001  Ethernet Network Adapter X710-T4L
                8086 0002  Ethernet Network Adapter X710-T4L
                8086 0003  Ethernet Network Adapter X710-T2L
        71a1  440GX - 82443GX AGP bridge
        71a2  440GX - 82443GX Host bridge (AGP disabled)
                4c53 1000  CC7/CR7/CP7/VC7/VP7/VR7 mainboard
+       7360  XMM7360 LTE Advanced Modem
        7600  82372FB PIIX5 ISA
        7601  82372FB PIIX5 IDE
        7602  82372FB PIIX5 USB
                8086 390d  SSDPEKNW020T8 [660p, 2TB]
 8088  Beijing Wangxun Technology Co., Ltd.
        1001  Ethernet Controller RP1000 for 10GbE SFP+
-               8088 1000  Ethernet Network Adaptor RP1000 for 10GbE SFP+
+               8088 0000  Ethernet Network Adaptor RP1000 for 10GbE SFP+
        2001  Ethernet Controller RP2000 for 10GbE SFP+
                8088 2000  Ethernet Network Adaptor RP2000 for 10GbE SFP+
 80ee  InnoTek Systemberatung GmbH
                103c 0701  Smart Array P204i-b SR Gen10
                103c 1100  Smart Array P816i-a SR Gen10
                103c 1101  Smart Array P416ie-m SR G10
+               105b 1211  HBA 8238-16i
+               105b 1321  HBA 8242-24i
+               13fe 8312  SKY-9200 MIC-8312BridgeB
                152d 8a22  QS-8204-8i
                152d 8a23  QS-8238-16i
                152d 8a24  QS-8236-16i
                193d c461  RAID P460-B2
                193d f460  RAID P460-M4
                193d f461  RAID P460-B4
+               19e5 d227  SmartROC-HD SR465C-M 4G
+               19e5 d228  SmartROC SR455C-M 2G
+               19e5 d229  SmartIOC SR155-M
+               19e5 d22a  SmartIOC-HD SR765-M
+               19e5 d22b  SmartROC-e SR455C-ME 4G
+               19e5 d22c  SmartROC SR455C-M 4G
                1bd4 0045  SMART-HBA 8242-24i
                1bd4 0046  RAID 8236-16i
                1bd4 0047  RAID 8240-24i
@@ -31146,6 +31181,7 @@ bdbd  Blackmagic Design
        a144  DeckLink Mini Monitor 4K
        a148  DeckLink SDI Micro
        a14b  DeckLink 8K Pro
+       a14e  DeckLink Quad HDMI Recorder
        a1ff  eGPU RX580
 c001  TSI Telsys
 c0a9  Micron/Crucial Technology
index 4f2b09bf59f17cbe35533c8e166a190af3c758bd..398b938e3c21809795c9303325c4428a34182641 100644 (file)
     "floating", and will be destroyed implicitly when the event loop
     itself is destroyed.</para>
 
+    <para>Note that this call does not take possession of the file descriptor passed in, ownership (and thus
+    the duty to close it when it is no longer needed) remains with the caller. However, with the
+    <function>sd_event_source_set_io_fd_own()</function> call (see below) the event source may optionally
+    take ownership of the file descriptor after the event source has been created. In that case the file
+    descriptor is closed automatically as soon as the event source is released.</para>
+
     <para>It is recommended to use
     <function>sd_event_add_io()</function> only in conjunction with
     file descriptors that have <constant>O_NONBLOCK</constant> set, to
index 4ba7c0e3064231ec04176345542ba30976b95429..cc026256990257b73cacfcbe8b85959dd44894cc 100644 (file)
@@ -95,7 +95,7 @@
           placing <filename>/etc/sysusers.d/radvd.conf</filename> or even
           <filename>/etc/sysusers.d/00-overrides.conf</filename>.</para>
 
-          <para>Note that this is the expanded from, and when used in a package, this
+          <para>Note that this is the expanded form, and when used in a package, this
           would be written using a macro with "radvd" and a file containing the
           configuration line as arguments.</para>
         </example>
index 7594c4996e997ecb812ab775bd1d9d3788376b8f..af9799e8c02a41e4c8556ff37848a849ba2f5ef1 100644 (file)
         <listitem>
           <para>An ordered, space-separated list of policies by which the interface name should be set.
           <varname>NamePolicy=</varname> may be disabled by specifying <option>net.ifnames=0</option> on the
-          kernel command line.  Each of the policies may fail, and the first successful one is used. The name
+          kernel command line. Each of the policies may fail, and the first successful one is used. The name
           is not set directly, but is exported to udev as the property <option>ID_NET_NAME</option>, which
-          is, by default, used by a udev rule to set <varname>NAME</varname>. The available policies are:
+          is, by default, used by a
+          <citerefentry><refentrytitle>udev</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
+          rule to set <varname>NAME</varname>. The available policies are:
           </para>
 
           <variablelist>
       <varlistentry>
         <term><varname>Name=</varname></term>
         <listitem>
-          <para>The interface name to use in case all the
-          policies specified in
-          <varname>NamePolicy=</varname> fail, or in case
-          <varname>NamePolicy=</varname> is missing or
-          disabled.</para>
+          <para>The interface name to use. This option has lower precedence than
+          <varname>NamePolicy=</varname>, so for this setting to take effect, <varname>NamePolicy=</varname>
+          must either be unset, empty, disabled, or all policies configured there must fail. Also see the
+          example below with <literal>Name=dmz0</literal>.</para>
 
           <para>Note that specifying a name that the kernel might use for another
           interface (for example <literal>eth0</literal>) is dangerous because the
@@ -618,8 +619,7 @@ MACAddressPolicy=persistent</programlisting>
     <example>
       <title>/etc/systemd/network/10-dmz.link</title>
 
-      <para>This example assigns the fixed name
-      <literal>dmz0</literal> to the interface with the MAC address
+      <para>This example assigns the fixed name <literal>dmz0</literal> to the interface with the MAC address
       00:a0:de:63:7a:e6:</para>
 
       <programlisting>[Match]
@@ -627,6 +627,62 @@ MACAddress=00:a0:de:63:7a:e6
 
 [Link]
 Name=dmz0</programlisting>
+
+      <para><varname>NamePolicy=</varname> is not set, so <varname>Name=</varname> takes effect. We use the
+      <literal>10-</literal> prefix to order this file early in the list. Note that it needs to before
+      <literal>99-link</literal>, i.e. it needs a numerical prefix, to have any effect at all.</para>
+    </example>
+
+    <example>
+      <title>Debugging <varname>NamePolicy=</varname> assignments</title>
+
+      <programlisting>$ sudo SYSTEMD_LOG_LEVEL=debug udevadm test-builtin net_setup_link /sys/class/net/hub0
+…
+Parsed configuration file /usr/lib/systemd/network/99-default.link
+Parsed configuration file /etc/systemd/network/10-eth0.link
+ID_NET_DRIVER=cdc_ether
+Config file /etc/systemd/network/10-eth0.link applies to device hub0
+link_config: autonegotiation is unset or enabled, the speed and duplex are not writable.
+hub0: Device has name_assign_type=4
+Using default interface naming scheme 'v240'.
+hub0: Policies didn't yield a name, using specified Name=hub0.
+ID_NET_LINK_FILE=/etc/systemd/network/10-eth0.link
+ID_NET_NAME=hub0
+…</programlisting>
+
+     <para>Explicit <varname>Name=</varname> configuration wins in this case.</para>
+
+     <programlisting>sudo SYSTEMD_LOG_LEVEL=debug udevadm test-builtin net_setup_link /sys/class/net/enp0s31f6
+…
+Parsed configuration file /usr/lib/systemd/network/99-default.link
+Parsed configuration file /etc/systemd/network/10-eth0.link
+Created link configuration context.
+ID_NET_DRIVER=e1000e
+Config file /usr/lib/systemd/network/99-default.link applies to device enp0s31f6
+link_config: autonegotiation is unset or enabled, the speed and duplex are not writable.
+enp0s31f6: Device has name_assign_type=4
+Using default interface naming scheme 'v240'.
+enp0s31f6: Policy *keep*: keeping existing userspace name
+enp0s31f6: Device has addr_assign_type=0
+enp0s31f6: MAC on the device already matches policy *persistent*
+ID_NET_LINK_FILE=/usr/lib/systemd/network/99-default.link
+…
+</programlisting>
+
+     <para>In this case, the interface was already renamed, so the <option>keep</option> policy specified as
+     the first option in <filename noindex='true'>99-default.link</filename> means that the existing name is
+     preserved. If <option>keep</option> was removed, or if were in boot before the renaming has happened,
+     we might get the following instead:</para>
+
+     <programlisting>enp0s31f6: Policy *path* yields "enp0s31f6".
+enp0s31f6: Device has addr_assign_type=0
+enp0s31f6: MAC on the device already matches policy *persistent*
+ID_NET_LINK_FILE=/usr/lib/systemd/network/99-default.link
+ID_NET_NAME=enp0s31f6
+…
+</programlisting>
+
+      <para>Please note that the details of output are subject to change.</para>
     </example>
 
     <example>
index f89a53751e66e7deb51d918c22ac1dabdfdcaf53..d0ccd39e380be0c21be15bb6a4841c9366016d7a 100644 (file)
     disabled. For a longer discussion see <ulink
     url="https://www.freedesktop.org/wiki/Software/systemd/APIFileSystems">API
     File Systems</ulink>.</para>
+
+    <para>The
+    <citerefentry><refentrytitle>systemd-mount</refentrytitle><manvolnum>1</manvolnum></citerefentry> command
+    allows creating <filename>.mount</filename> and <filename>.automount</filename> units dynamically and
+    transiently from the command line.</para>
   </refsect1>
 
   <refsect1>
         <citerefentry project='man-pages'><refentrytitle>proc</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
         <citerefentry project='man-pages'><refentrytitle>mount</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
         <citerefentry><refentrytitle>systemd-fstab-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
-        <citerefentry><refentrytitle>systemd.directives</refentrytitle><manvolnum>7</manvolnum></citerefentry>
+        <citerefentry><refentrytitle>systemd.directives</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
+        <citerefentry><refentrytitle>systemd-mount</refentrytitle><manvolnum>1</manvolnum></citerefentry>
       </para>
   </refsect1>
 
index a44018cad6d6cb2104375883d72036a69331c5a4..1836b5fe00e3a91e9af449675f5cc2844dc5f491 100644 (file)
       <varlistentry>
         <term><varname>PrivateKeyFile=</varname></term>
         <listitem>
-          <para>Takes a absolute path to a file which contains the Base64 encoded private key for the interface.
-          If both <varname>PrivateKey=</varname> and <varname>PrivateKeyFile=</varname> are specified, and if
-          the file specified in <varname>PrivateKeyFile=</varname> contains valid wireguard key, then
-          the key provided by <varname>PrivateKey=</varname> is ignored.
+          <para>Takes an absolute path to a file which contains the Base64 encoded private key for the interface.
+          When this option is specified, then <varname>PrivateKey=</varname> is ignored.
           Note that the file must be readable by the user <literal>systemd-network</literal>, so it
           should be, e.g., owned by <literal>root:systemd-network</literal> with a
           <literal>0640</literal> file mode.</para>
             with a <literal>0640</literal> file mode.</para>
         </listitem>
       </varlistentry>
+      <varlistentry>
+        <term><varname>PresharedKeyFile=</varname></term>
+        <listitem>
+          <para>Takes an absolute path to a file which contains the Base64 encoded preshared key for the
+          peer. When this option is specified, then <varname>PresharedKey=</varname> is ignored.
+          Note that the file must be readable by the user <literal>systemd-network</literal>, so it
+          should be, e.g., owned by <literal>root:systemd-network</literal> with a
+          <literal>0640</literal> file mode.</para>
+        </listitem>
+      </varlistentry>
       <varlistentry>
         <term><varname>AllowedIPs=</varname></term>
         <listitem>
index b9a3266dfd7c798b28182c1bf556acedc913a69e..5b884175300abc2ca97f9564199b1bb496c789de 100644 (file)
     about the incompatibilities, see the <ulink
     url="https://www.freedesktop.org/wiki/Software/systemd/Incompatibilities">Incompatibilities
     with SysV</ulink> document.</para>
+
+    <para>The <citerefentry><refentrytitle>systemd-run</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+    command allows creating <filename>.service</filename> and <filename>.scope</filename> units dynamically
+    and transiently from the command line.</para>
   </refsect1>
 
   <refsect1>
@@ -1429,7 +1433,8 @@ WantedBy=multi-user.target</programlisting>
         <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
         <citerefentry><refentrytitle>systemd.resource-control</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
         <citerefentry><refentrytitle>systemd.kill</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
-        <citerefentry><refentrytitle>systemd.directives</refentrytitle><manvolnum>7</manvolnum></citerefentry>
+        <citerefentry><refentrytitle>systemd.directives</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
+        <citerefentry><refentrytitle>systemd-run</refentrytitle><manvolnum>1</manvolnum></citerefentry>
       </para>
   </refsect1>
 
index b7df5016ce4881ecf94a57b257a8504b3e95b117..248fb924dba4935a383af512162aeb64dbe314ca 100644 (file)
@@ -77,6 +77,7 @@
     <filename>sysinit.target</filename>,
     <filename>system-update.target</filename>,
     <filename>system-update-pre.target</filename>,
+    <filename>time-set.target</filename>,
     <filename>time-sync.target</filename>,
     <filename>timers.target</filename>,
     <filename>umount.target</filename>,
             the <literal>$portmap</literal> facility.</para>
           </listitem>
         </varlistentry>
+        <varlistentry>
+          <term><filename>time-set.target</filename></term>
+          <listitem>
+            <para>Services responsible for setting the system clock from
+            a local source (such as a maintained timestamp file or
+            imprecise real-time clock) should pull in this target and
+            order themselves before it.  Services where approximate time
+            is desired should be ordered after this unit, but not pull
+            it in.  This target does not provide the accuracy guarantees
+            of <filename>time-sync.target</filename>.</para>
+          </listitem>
+        </varlistentry>
         <varlistentry>
           <term><filename>time-sync.target</filename></term>
           <listitem>
index 6fee4c2faf190f9fee333237c48da4a85ed8b257..81a02253ed9bf9b0631f12fd426f47f6ac645318 100644 (file)
           </row>
           <row>
             <entry><filename>/etc/systemd/system</filename></entry>
-            <entry>Local configuration</entry>
+            <entry>System units created by the administrator</entry>
           </row>
           <row>
             <entry><filename>/run/systemd/system</filename></entry>
           </row>
           <row>
             <entry><filename>/usr/local/lib/systemd/system</filename></entry>
-            <entry morerows="1">Units of installed packages</entry>
+            <entry>System units installed by the administrator </entry>
           </row>
           <row>
             <entry><filename>/usr/lib/systemd/system</filename></entry>
+            <entry>System units installed by the distribution package manager</entry>
           </row>
           <row>
             <entry><filename>/run/systemd/generator.late</filename></entry>
           </row>
           <row>
             <entry><filename>/etc/systemd/user</filename></entry>
-            <entry>Local configuration</entry>
+            <entry>User units created by the administrator</entry>
           </row>
           <row>
             <entry><filename>$XDG_RUNTIME_DIR/systemd/user</filename></entry>
           </row>
           <row>
             <entry><filename>/usr/local/lib/systemd/user</filename></entry>
-            <entry morerows="1">Units of packages that have been installed system-wide</entry>
+            <entry>User units installed by the administrator</entry>
           </row>
           <row>
             <entry><filename>/usr/lib/systemd/user</filename></entry>
+            <entry>User units installed by the distribution package manager</entry>
           </row>
           <row>
             <entry><filename>$XDG_RUNTIME_DIR/systemd/generator.late</filename></entry>
index 287125f0107606304ffefcaeb3850de84afd3b2e..79195c97484910593f5322e304e4d437573a94ea 100644 (file)
@@ -1606,8 +1606,7 @@ foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
                         # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
                         link_args : ['-Wl,-z,nodelete',
                                      '-shared',
-                                     '-Wl,--version-script=' + version_script_arg,
-                                     '-Wl,--undefined'],
+                                     '-Wl,--version-script=' + version_script_arg],
                         link_with : [libsystemd_static,
                                      libbasic],
                         dependencies : [threads,
index 13e8f3e74f740f8d6c87d85aa4e94c5439a03221..3790f9c14db40f494949693ee009c65ccb050dee 100644 (file)
--- a/po/lt.po
+++ b/po/lt.po
@@ -3,15 +3,15 @@ msgid ""
 msgstr ""
 "Project-Id-Version: systemd\n"
 "Report-Msgid-Bugs-To: https://github.com/systemd/systemd/issues\n"
-"POT-Creation-Date: 2018-10-31 03:25+0000\n"
-"PO-Revision-Date: 2018-10-31 14:50+0200\n"
+"POT-Creation-Date: 2019-04-08 15:29+0000\n"
+"PO-Revision-Date: 2019-04-08 22:01+0300\n"
 "Last-Translator: Moo\n"
 "Language-Team: Lithuanian\n"
 "Language: lt\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 2.2\n"
+"X-Generator: Poedit 2.2.1\n"
 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n"
 "%100<10 || n%100>=20) ? 1 : 2);\n"
 
@@ -468,11 +468,20 @@ msgstr ""
 "Norint užrakinti ar atrakinti aktyvius seansus, reikia nustatyti tapatybę."
 
 #: src/login/org.freedesktop.login1.policy:341
-msgid "Allow indication to the firmware to boot to setup interface"
-msgstr ""
-"Leisti nurodymą programinei aparatinei įrangai pasileisti į sąrankos sąsają"
+msgid "Set the reboot \"reason\" in the kernel"
+msgstr "Nustatyti paleidimo iš naujo \"priežastį\" branduolyje"
 
 #: src/login/org.freedesktop.login1.policy:342
+msgid "Authentication is required to set the reboot \"reason\" in the kernel."
+msgstr ""
+"Norint nustatyti paleidimo iš naujo \"priežastį\" branduolyje, reikia "
+"nustatyti tapatybę."
+
+#: src/login/org.freedesktop.login1.policy:352
+msgid "Indicate to the firmware to boot to setup interface"
+msgstr "Nurodyti programinei aparatinei įrangai pasileisti į sąrankos sąsają"
+
+#: src/login/org.freedesktop.login1.policy:353
 msgid ""
 "Authentication is required to indicate to the firmware to boot to setup "
 "interface."
@@ -480,11 +489,35 @@ msgstr ""
 "Norint nurodyti programinei aparatinei įrangai pasileisti į sąrankos sąsają, "
 "reikia nustatyti tapatybę."
 
-#: src/login/org.freedesktop.login1.policy:351
+#: src/login/org.freedesktop.login1.policy:363
+msgid "Indicate to the boot loader to boot to the boot loader menu"
+msgstr "Nurodyti pradiniam įkėlikliui paleisti pradinio įkėliklio meniu"
+
+#: src/login/org.freedesktop.login1.policy:364
+msgid ""
+"Authentication is required to indicate to the boot loader to boot to the "
+"boot loader menu."
+msgstr ""
+"Norint nurodyti pradiniam įkėlikliui paleisti pradinio įkėliklio meniu, "
+"reikia nustatyti tapatybę."
+
+#: src/login/org.freedesktop.login1.policy:374
+msgid "Indicate to the boot loader to boot a specific entry"
+msgstr "Nurodyti pradiniam įkėlikliui paleisti tam tikrą įrašą"
+
+#: src/login/org.freedesktop.login1.policy:375
+msgid ""
+"Authentication is required to indicate to the boot loader to boot into a "
+"specific boot loader entry."
+msgstr ""
+"Norint nurodyti pradiniam įkėlikliui paleisti tam tikrą pradinio įkėliklio "
+"įrašą, reikia nustatyti tapatybę."
+
+#: src/login/org.freedesktop.login1.policy:385
 msgid "Set a wall message"
 msgstr "Nustatyti sienos pranešimą"
 
-#: src/login/org.freedesktop.login1.policy:352
+#: src/login/org.freedesktop.login1.policy:386
 msgid "Authentication is required to set a wall message"
 msgstr "Norint nustatyti sienos pranešimą, reikia nustatyti tapatybę"
 
@@ -654,36 +687,36 @@ msgstr ""
 "Norint valdyti ar tinklo laiko sinchronizavimas turėtų būti įjungtas, reikia "
 "nustatyti tapatybę."
 
-#: src/core/dbus-unit.c:326
+#: src/core/dbus-unit.c:316
 msgid "Authentication is required to start '$(unit)'."
 msgstr "Norint paleisti \"$(unit)\", reikia nustatyti tapatybę."
 
-#: src/core/dbus-unit.c:327
+#: src/core/dbus-unit.c:317
 msgid "Authentication is required to stop '$(unit)'."
 msgstr "Norint stabdyti \"$(unit)\", reikia nustatyti tapatybę."
 
-#: src/core/dbus-unit.c:328
+#: src/core/dbus-unit.c:318
 msgid "Authentication is required to reload '$(unit)'."
 msgstr "Norint įkelti \"$(unit)\" iš naujo, reikia nustatyti tapatybę."
 
-#: src/core/dbus-unit.c:329 src/core/dbus-unit.c:330
+#: src/core/dbus-unit.c:319 src/core/dbus-unit.c:320
 msgid "Authentication is required to restart '$(unit)'."
 msgstr "Norint paleisti \"$(unit)\" iš naujo, reikia nustatyti tapatybę."
 
-#: src/core/dbus-unit.c:437
+#: src/core/dbus-unit.c:492
 msgid ""
 "Authentication is required to send a UNIX signal to the processes of "
 "'$(unit)'."
 msgstr ""
 "Norint siųsti UNIX signalą į \"$(unit)\" procesus, reikia nustatyti tapatybę."
 
-#: src/core/dbus-unit.c:468
+#: src/core/dbus-unit.c:523
 msgid "Authentication is required to reset the \"failed\" state of '$(unit)'."
 msgstr ""
 "Norint atstatyti \"$(unit)\" įtaiso \"failed\" būseną, reikia nustatyti "
 "tapatybę."
 
-#: src/core/dbus-unit.c:501
+#: src/core/dbus-unit.c:556
 msgid "Authentication is required to set properties on '$(unit)'."
 msgstr "Norint nustatyti \"$(unit)\" savybes, reikia nustatyti tapatybę."
 
index 91e0c9ec8bc8acbdae10c22744eb85c952505fad..9ab2f501c7681f12100e1e43c87ab12c53063da9 100644 (file)
@@ -17,6 +17,7 @@
 #include "fd-util.h"
 #include "fileio.h"
 #include "fs-util.h"
+#include "hexdecoct.h"
 #include "log.h"
 #include "macro.h"
 #include "missing.h"
@@ -264,26 +265,29 @@ int verify_file(const char *fn, const char *blob, bool accept_extra_nl) {
         return 1;
 }
 
-int read_full_stream(
+int read_full_stream_full(
                 FILE *f,
+                const char *filename,
+                ReadFullFileFlags flags,
                 char **ret_contents,
                 size_t *ret_size) {
 
         _cleanup_free_ char *buf = NULL;
         struct stat st;
-        size_t n, l;
-        int fd;
+        size_t n, n_next, l;
+        int fd, r;
 
         assert(f);
         assert(ret_contents);
+        assert(!(flags & READ_FULL_FILE_UNBASE64) || ret_size);
 
-        n = LINE_MAX; /* Start size */
+        n_next = LINE_MAX; /* Start size */
 
         fd = fileno(f);
         if (fd >= 0) { /* If the FILE* object is backed by an fd (as opposed to memory or such, see fmemopen(), let's
                         * optimize our buffering) */
 
-                if (fstat(fileno(f), &st) < 0)
+                if (fstat(fd, &st) < 0)
                         return -errno;
 
                 if (S_ISREG(st.st_mode)) {
@@ -296,27 +300,44 @@ int read_full_stream(
                          * size of 0. Note that we increase the size to read here by one, so that the first read attempt
                          * already makes us notice the EOF. */
                         if (st.st_size > 0)
-                                n = st.st_size + 1;
+                                n_next = st.st_size + 1;
+
+                        if (flags & READ_FULL_FILE_SECURE)
+                                (void) warn_file_is_world_accessible(filename, &st, NULL, 0);
                 }
         }
 
-        l = 0;
+        n = l = 0;
         for (;;) {
                 char *t;
                 size_t k;
 
-                t = realloc(buf, n + 1);
-                if (!t)
-                        return -ENOMEM;
+                if (flags & READ_FULL_FILE_SECURE) {
+                        t = malloc(n_next + 1);
+                        if (!t) {
+                                r = -ENOMEM;
+                                goto finalize;
+                        }
+                        memcpy_safe(t, buf, n);
+                        explicit_bzero_safe(buf, n);
+                } else {
+                        t = realloc(buf, n_next + 1);
+                        if (!t)
+                                return -ENOMEM;
+                }
 
                 buf = t;
+                n = n_next;
+
                 errno = 0;
                 k = fread(buf + l, 1, n - l, f);
                 if (k > 0)
                         l += k;
 
-                if (ferror(f))
-                        return errno > 0 ? -errno : -EIO;
+                if (ferror(f)) {
+                        r = errno > 0 ? -errno : -EIO;
+                        goto finalize;
+                }
 
                 if (feof(f))
                         break;
@@ -327,10 +348,18 @@ int read_full_stream(
                 assert(l == n);
 
                 /* Safety check */
-                if (n >= READ_FULL_BYTES_MAX)
-                        return -E2BIG;
+                if (n >= READ_FULL_BYTES_MAX) {
+                        r = -E2BIG;
+                        goto finalize;
+                }
+
+                n_next = MIN(n * 2, READ_FULL_BYTES_MAX);
+        }
 
-                n = MIN(n * 2, READ_FULL_BYTES_MAX);
+        if (flags & READ_FULL_FILE_UNBASE64) {
+                buf[l++] = 0;
+                r = unbase64mem_full(buf, l, flags & READ_FULL_FILE_SECURE, (void **) ret_contents, ret_size);
+                goto finalize;
         }
 
         if (!ret_size) {
@@ -338,8 +367,10 @@ int read_full_stream(
                  * trailing NUL byte. But if there's an embedded NUL byte, then we should refuse operation as otherwise
                  * there'd be ambiguity about what we just read. */
 
-                if (memchr(buf, 0, l))
-                        return -EBADMSG;
+                if (memchr(buf, 0, l)) {
+                        r = -EBADMSG;
+                        goto finalize;
+                }
         }
 
         buf[l] = 0;
@@ -349,21 +380,27 @@ int read_full_stream(
                 *ret_size = l;
 
         return 0;
+
+finalize:
+        if (flags & READ_FULL_FILE_SECURE)
+                explicit_bzero_safe(buf, n);
+
+        return r;
 }
 
-int read_full_file(const char *fn, char **contents, size_t *size) {
+int read_full_file_full(const char *filename, ReadFullFileFlags flags, char **contents, size_t *size) {
         _cleanup_fclose_ FILE *f = NULL;
 
-        assert(fn);
+        assert(filename);
         assert(contents);
 
-        f = fopen(fn, "re");
+        f = fopen(filename, "re");
         if (!f)
                 return -errno;
 
         (void) __fsetlocking(f, FSETLOCKING_BYCALLER);
 
-        return read_full_stream(f, contents, size);
+        return read_full_stream_full(f, filename, flags, contents, size);
 }
 
 int executable_is_script(const char *path, char **interpreter) {
@@ -818,3 +855,28 @@ int safe_fgetc(FILE *f, char *ret) {
 
         return 1;
 }
+
+int warn_file_is_world_accessible(const char *filename, struct stat *st, const char *unit, unsigned line) {
+        struct stat _st;
+
+        if (!filename)
+                return 0;
+
+        if (!st) {
+                if (stat(filename, &_st) < 0)
+                        return -errno;
+                st = &_st;
+        }
+
+        if ((st->st_mode & S_IRWXO) == 0)
+                return 0;
+
+        if (unit)
+                log_syntax(unit, LOG_WARNING, filename, line, 0,
+                           "%s has %04o mode that is too permissive, please adjust the access mode.",
+                           filename, st->st_mode & 07777);
+        else
+                log_warning("%s has %04o mode that is too permissive, please adjust the access mode.",
+                            filename, st->st_mode & 07777);
+        return 0;
+}
index 53e3f4ef5f46caf2587d7756e4199eab439a99fd..760e7386884ef80ccf9181e5239b868e07a466de 100644 (file)
@@ -5,6 +5,7 @@
 #include <stdbool.h>
 #include <stddef.h>
 #include <stdio.h>
+#include <sys/stat.h>
 #include <sys/types.h>
 
 #include "macro.h"
@@ -27,6 +28,11 @@ typedef enum {
 
 } WriteStringFileFlags;
 
+typedef enum {
+        READ_FULL_FILE_SECURE   = 1 << 0,
+        READ_FULL_FILE_UNBASE64 = 1 << 1,
+} ReadFullFileFlags;
+
 int write_string_stream_ts(FILE *f, const char *line, WriteStringFileFlags flags, struct timespec *ts);
 static inline int write_string_stream(FILE *f, const char *line, WriteStringFileFlags flags) {
         return write_string_stream_ts(f, line, flags, NULL);
@@ -38,9 +44,15 @@ static inline int write_string_file(const char *fn, const char *line, WriteStrin
 
 int write_string_filef(const char *fn, WriteStringFileFlags flags, const char *format, ...) _printf_(3, 4);
 
-int read_one_line_file(const char *fn, char **line);
-int read_full_file(const char *fn, char **contents, size_t *size);
-int read_full_stream(FILE *f, char **contents, size_t *size);
+int read_one_line_file(const char *filename, char **line);
+int read_full_file_full(const char *filename, ReadFullFileFlags flags, char **contents, size_t *size);
+static inline int read_full_file(const char *filename, char **contents, size_t *size) {
+        return read_full_file_full(filename, 0, contents, size);
+}
+int read_full_stream_full(FILE *f, const char *filename, ReadFullFileFlags flags, char **contents, size_t *size);
+static inline int read_full_stream(FILE *f, char **contents, size_t *size) {
+        return read_full_stream_full(f, NULL, 0, contents, size);
+}
 
 int verify_file(const char *fn, const char *blob, bool accept_extra_nl);
 
@@ -76,3 +88,5 @@ static inline int read_nul_string(FILE *f, size_t limit, char **ret) {
 }
 
 int safe_fgetc(FILE *f, char *ret);
+
+int warn_file_is_world_accessible(const char *filename, struct stat *st, const char *unit, unsigned line);
index a5660a0ff3a23045f01176c83ae032655fdd2dff..132439fd1c5c8063b959dc28879f2c957ba2e556 100644 (file)
@@ -685,11 +685,12 @@ static int unbase64_next(const char **p, size_t *l) {
         return ret;
 }
 
-int unbase64mem(const char *p, size_t l, void **ret, size_t *ret_size) {
+int unbase64mem_full(const char *p, size_t l, bool secure, void **ret, size_t *ret_size) {
         _cleanup_free_ uint8_t *buf = NULL;
         const char *x;
         uint8_t *z;
         size_t len;
+        int r;
 
         assert(p || l == 0);
         assert(ret);
@@ -712,36 +713,54 @@ int unbase64mem(const char *p, size_t l, void **ret, size_t *ret_size) {
                 a = unbase64_next(&x, &l);
                 if (a == -EPIPE) /* End of string */
                         break;
-                if (a < 0)
-                        return a;
-                if (a == INT_MAX) /* Padding is not allowed at the beginning of a 4ch block */
-                        return -EINVAL;
+                if (a < 0) {
+                        r = a;
+                        goto on_failure;
+                }
+                if (a == INT_MAX) { /* Padding is not allowed at the beginning of a 4ch block */
+                        r = -EINVAL;
+                        goto on_failure;
+                }
 
                 b = unbase64_next(&x, &l);
-                if (b < 0)
-                        return b;
-                if (b == INT_MAX) /* Padding is not allowed at the second character of a 4ch block either */
-                        return -EINVAL;
+                if (b < 0) {
+                        r = b;
+                        goto on_failure;
+                }
+                if (b == INT_MAX) { /* Padding is not allowed at the second character of a 4ch block either */
+                        r = -EINVAL;
+                        goto on_failure;
+                }
 
                 c = unbase64_next(&x, &l);
-                if (c < 0)
-                        return c;
+                if (c < 0) {
+                        r = c;
+                        goto on_failure;
+                }
 
                 d = unbase64_next(&x, &l);
-                if (d < 0)
-                        return d;
+                if (d < 0) {
+                        r = d;
+                        goto on_failure;
+                }
 
                 if (c == INT_MAX) { /* Padding at the third character */
 
-                        if (d != INT_MAX) /* If the third character is padding, the fourth must be too */
-                                return -EINVAL;
+                        if (d != INT_MAX) { /* If the third character is padding, the fourth must be too */
+                                r = -EINVAL;
+                                goto on_failure;
+                        }
 
                         /* b == 00YY0000 */
-                        if (b & 15)
-                                return -EINVAL;
+                        if (b & 15) {
+                                r = -EINVAL;
+                                goto on_failure;
+                        }
 
-                        if (l > 0) /* Trailing rubbish? */
-                                return -ENAMETOOLONG;
+                        if (l > 0) { /* Trailing rubbish? */
+                                r = -ENAMETOOLONG;
+                                goto on_failure;
+                        }
 
                         *(z++) = (uint8_t) a << 2 | (uint8_t) (b >> 4); /* XXXXXXYY */
                         break;
@@ -749,11 +768,15 @@ int unbase64mem(const char *p, size_t l, void **ret, size_t *ret_size) {
 
                 if (d == INT_MAX) {
                         /* c == 00ZZZZ00 */
-                        if (c & 3)
-                                return -EINVAL;
+                        if (c & 3) {
+                                r = -EINVAL;
+                                goto on_failure;
+                        }
 
-                        if (l > 0) /* Trailing rubbish? */
-                                return -ENAMETOOLONG;
+                        if (l > 0) { /* Trailing rubbish? */
+                                r = -ENAMETOOLONG;
+                                goto on_failure;
+                        }
 
                         *(z++) = (uint8_t) a << 2 | (uint8_t) b >> 4; /* XXXXXXYY */
                         *(z++) = (uint8_t) b << 4 | (uint8_t) c >> 2; /* YYYYZZZZ */
@@ -771,6 +794,12 @@ int unbase64mem(const char *p, size_t l, void **ret, size_t *ret_size) {
         *ret = TAKE_PTR(buf);
 
         return 0;
+
+on_failure:
+        if (secure)
+                explicit_bzero_safe(buf, len);
+
+        return r;
 }
 
 void hexdump(FILE *f, const void *p, size_t s) {
index 9477d16e37e725fe3f157f8965ca012af0743c0b..fa6013ee7506090284fe1e977ff87d85e2ab1b23 100644 (file)
@@ -33,6 +33,9 @@ ssize_t base64mem(const void *p, size_t l, char **out);
 int base64_append(char **prefix, int plen,
                   const void *p, size_t l,
                   int margin, int width);
-int unbase64mem(const char *p, size_t l, void **mem, size_t *len);
+int unbase64mem_full(const char *p, size_t l, bool secure, void **mem, size_t *len);
+static inline int unbase64mem(const char *p, size_t l, void **mem, size_t *len) {
+        return unbase64mem_full(p, l, false, mem, len);
+}
 
 void hexdump(FILE *f, const void *p, size_t s);
index 9cf11198b12d95e276201a2ddc9f8e892b4140fe..b23f4c834140978b0e6f953721cf72917ebad5a4 100644 (file)
@@ -57,6 +57,16 @@ static inline const char *empty_to_dash(const char *str) {
         return isempty(str) ? "-" : str;
 }
 
+static inline bool empty_or_dash(const char *str) {
+        return !str ||
+                str[0] == 0 ||
+                (str[0] == '-' && str[1] == 0);
+}
+
+static inline const char *empty_or_dash_to_null(const char *p) {
+        return empty_or_dash(p) ? NULL : p;
+}
+
 static inline char *startswith(const char *s, const char *prefix) {
         size_t l;
 
index 4566a66a15453e2003cb225be63a4bff023991ca..77d24b8635c0f3e14e00ec13a7b5c82d5c7a8fe8 100644 (file)
@@ -78,8 +78,7 @@ static int export_tar(int argc, char *argv[], void *userdata) {
 
         if (argc >= 3)
                 path = argv[2];
-        if (isempty(path) || streq(path, "-"))
-                path = NULL;
+        path = empty_or_dash_to_null(path);
 
         determine_compression_from_filename(path);
 
@@ -155,8 +154,7 @@ static int export_raw(int argc, char *argv[], void *userdata) {
 
         if (argc >= 3)
                 path = argv[2];
-        if (isempty(path) || streq(path, "-"))
-                path = NULL;
+        path = empty_or_dash_to_null(path);
 
         determine_compression_from_filename(path);
 
index 974c0f5536b5f0e2ca0c5c51b35b000ad1731289..04344492c86368f2dfb79b68c5983026a26c3cc1 100644 (file)
@@ -117,15 +117,13 @@ static int import_fs(int argc, char *argv[], void *userdata) {
 
         if (argc >= 2)
                 path = argv[1];
-        if (isempty(path) || streq(path, "-"))
-                path = NULL;
+        path = empty_or_dash_to_null(path);
 
         if (argc >= 3)
                 local = argv[2];
         else if (path)
                 local = basename(path);
-        if (isempty(local) || streq(local, "-"))
-                local = NULL;
+        local = empty_or_dash_to_null(local);
 
         if (local) {
                 if (!machine_name_is_valid(local)) {
index e3a1ae8a8bc92d14b124e8dab3e05e01eec46257..cc2855745962af444b4c0c30150c1b1e47b39cb3 100644 (file)
@@ -49,15 +49,13 @@ static int import_tar(int argc, char *argv[], void *userdata) {
 
         if (argc >= 2)
                 path = argv[1];
-        if (isempty(path) || streq(path, "-"))
-                path = NULL;
+        path = empty_or_dash_to_null(path);
 
         if (argc >= 3)
                 local = argv[2];
         else if (path)
                 local = basename(path);
-        if (isempty(local) || streq(local, "-"))
-                local = NULL;
+        local = empty_or_dash_to_null(local);
 
         if (local) {
                 r = tar_strip_suffixes(local, &ll);
@@ -145,15 +143,13 @@ static int import_raw(int argc, char *argv[], void *userdata) {
 
         if (argc >= 2)
                 path = argv[1];
-        if (isempty(path) || streq(path, "-"))
-                path = NULL;
+        path = empty_or_dash_to_null(path);
 
         if (argc >= 3)
                 local = argv[2];
         else if (path)
                 local = basename(path);
-        if (isempty(local) || streq(local, "-"))
-                local = NULL;
+        local = empty_or_dash_to_null(local);
 
         if (local) {
                 r = raw_strip_suffixes(local, &ll);
index 68b1221b724b5c3bc0d6de8c4b38a2b3b772a6c0..7e8712493fb5412592695a0e2f4bd412172e66be 100644 (file)
@@ -64,8 +64,7 @@ static int pull_tar(int argc, char *argv[], void *userdata) {
                 local = l;
         }
 
-        if (isempty(local) || streq(local, "-"))
-                local = NULL;
+        local = empty_or_dash_to_null(local);
 
         if (local) {
                 r = tar_strip_suffixes(local, &ll);
@@ -151,8 +150,7 @@ static int pull_raw(int argc, char *argv[], void *userdata) {
                 local = l;
         }
 
-        if (isempty(local) || streq(local, "-"))
-                local = NULL;
+        local = empty_or_dash_to_null(local);
 
         if (local) {
                 r = raw_strip_suffixes(local, &ll);
index 17540089bafe2c822baf10595cf41ddc2a3d41d3..b8bd181c16a85d640a21b1d2505a3b8b0f51e6b1 100644 (file)
@@ -32,10 +32,6 @@ static bool startswith_comma(const char *s, const char *prefix) {
         return IN_SET(*s, ',', '\0');
 }
 
-static const char* strnulldash(const char *s) {
-        return isempty(s) || streq(s, "-") ? NULL : s;
-}
-
 static const char* systemd_kbd_model_map(void) {
         const char* s;
 
@@ -551,15 +547,15 @@ int vconsole_convert_to_x11(Context *c) {
                         if (!streq(c->vc_keymap, a[0]))
                                 continue;
 
-                        if (!streq_ptr(c->x11_layout, strnulldash(a[1])) ||
-                            !streq_ptr(c->x11_model, strnulldash(a[2])) ||
-                            !streq_ptr(c->x11_variant, strnulldash(a[3])) ||
-                            !streq_ptr(c->x11_options, strnulldash(a[4]))) {
+                        if (!streq_ptr(c->x11_layout, empty_or_dash_to_null(a[1])) ||
+                            !streq_ptr(c->x11_model, empty_or_dash_to_null(a[2])) ||
+                            !streq_ptr(c->x11_variant, empty_or_dash_to_null(a[3])) ||
+                            !streq_ptr(c->x11_options, empty_or_dash_to_null(a[4]))) {
 
-                                if (free_and_strdup(&c->x11_layout, strnulldash(a[1])) < 0 ||
-                                    free_and_strdup(&c->x11_model, strnulldash(a[2])) < 0 ||
-                                    free_and_strdup(&c->x11_variant, strnulldash(a[3])) < 0 ||
-                                    free_and_strdup(&c->x11_options, strnulldash(a[4])) < 0)
+                                if (free_and_strdup(&c->x11_layout, empty_or_dash_to_null(a[1])) < 0 ||
+                                    free_and_strdup(&c->x11_model, empty_or_dash_to_null(a[2])) < 0 ||
+                                    free_and_strdup(&c->x11_variant, empty_or_dash_to_null(a[3])) < 0 ||
+                                    free_and_strdup(&c->x11_options, empty_or_dash_to_null(a[4])) < 0)
                                         return -ENOMEM;
 
                                 modified = true;
index f574d429f49f8d0e1d87d331859dddc5d5391816..47fd9e874dab7f5f57492ae5fc7f58d9a04d333a 100644 (file)
@@ -286,8 +286,9 @@ static int run(int argc, char *argv[]) {
 
         else {
                 _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
-                _cleanup_close_ int fd = -1;
+                _cleanup_strv_free_ char **arguments = NULL;
                 _cleanup_free_ char *w = NULL;
+                _cleanup_close_ int fd = -1;
                 pid_t pid;
 
                 /* Ignore SIGINT and allow the forked process to receive it */
@@ -303,12 +304,16 @@ static int run(int argc, char *argv[]) {
                 if (fd < 0)
                         return log_error_errno(fd, "Failed to inhibit: %s", bus_error_message(&error, fd));
 
+                arguments = strv_copy(argv + optind);
+                if (!arguments)
+                        return log_oom();
+
                 r = safe_fork("(inhibit)", FORK_RESET_SIGNALS|FORK_DEATHSIG|FORK_CLOSE_ALL_FDS|FORK_RLIMIT_NOFILE_SAFE|FORK_LOG, &pid);
                 if (r < 0)
                         return r;
                 if (r == 0) {
                         /* Child */
-                        execvp(argv[optind], argv + optind);
+                        execvp(arguments[0], arguments);
                         log_open();
                         log_error_errno(errno, "Failed to execute %s: %m", argv[optind]);
                         _exit(EXIT_FAILURE);
index e8d40ab185c4b81f060a4602eaec95db22293fa1..2cebcce123b62530e91b669b4c3e3282907e1062 100644 (file)
@@ -122,7 +122,8 @@ static int get_sender_user(Manager *m, sd_bus_message *message, sd_bus_error *er
         return 0;
 
 err_no_user:
-        return sd_bus_error_setf(error, BUS_ERROR_NO_USER_FOR_PID, "Caller does not belong to any logged in user or lingering user");
+        return sd_bus_error_setf(error, BUS_ERROR_NO_USER_FOR_PID,
+                                 "Caller does not belong to any logged in user or lingering user");
 }
 
 int manager_get_user_from_creds(Manager *m, sd_bus_message *message, uid_t uid, sd_bus_error *error, User **ret) {
@@ -137,7 +138,8 @@ int manager_get_user_from_creds(Manager *m, sd_bus_message *message, uid_t uid,
 
         user = hashmap_get(m->users, UID_TO_PTR(uid));
         if (!user)
-                return sd_bus_error_setf(error, BUS_ERROR_NO_SUCH_USER, "User ID "UID_FMT" is not logged in or lingering", uid);
+                return sd_bus_error_setf(error, BUS_ERROR_NO_SUCH_USER,
+                                         "User ID "UID_FMT" is not logged in or lingering", uid);
 
         *ret = user;
         return 0;
@@ -371,7 +373,8 @@ static int method_get_session_by_pid(sd_bus_message *message, void *userdata, sd
                         return r;
 
                 if (!session)
-                        return sd_bus_error_setf(error, BUS_ERROR_NO_SESSION_FOR_PID, "PID "PID_FMT" does not belong to any known session", pid);
+                        return sd_bus_error_setf(error, BUS_ERROR_NO_SESSION_FOR_PID,
+                                                 "PID "PID_FMT" does not belong to any known session", pid);
         }
 
         p = session_bus_path(session);
@@ -649,7 +652,9 @@ static int method_create_session(sd_bus_message *message, void *userdata, sd_bus
         assert_cc(sizeof(pid_t) == sizeof(uint32_t));
         assert_cc(sizeof(uid_t) == sizeof(uint32_t));
 
-        r = sd_bus_message_read(message, "uusssssussbss", &uid, &leader, &service, &type, &class, &desktop, &cseat, &vtnr, &tty, &display, &remote, &remote_user, &remote_host);
+        r = sd_bus_message_read(message, "uusssssussbss",
+                                &uid, &leader, &service, &type, &class, &desktop, &cseat,
+                                &vtnr, &tty, &display, &remote, &remote_user, &remote_host);
         if (r < 0)
                 return r;
 
@@ -663,7 +668,8 @@ static int method_create_session(sd_bus_message *message, void *userdata, sd_bus
         else {
                 t = session_type_from_string(type);
                 if (t < 0)
-                        return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid session type %s", type);
+                        return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS,
+                                                 "Invalid session type %s", type);
         }
 
         if (isempty(class))
@@ -671,14 +677,16 @@ static int method_create_session(sd_bus_message *message, void *userdata, sd_bus
         else {
                 c = session_class_from_string(class);
                 if (c < 0)
-                        return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid session class %s", class);
+                        return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS,
+                                                 "Invalid session class %s", class);
         }
 
         if (isempty(desktop))
                 desktop = NULL;
         else {
                 if (!string_is_safe(desktop))
-                        return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid desktop string %s", desktop);
+                        return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS,
+                                                 "Invalid desktop string %s", desktop);
         }
 
         if (isempty(cseat))
@@ -686,7 +694,8 @@ static int method_create_session(sd_bus_message *message, void *userdata, sd_bus
         else {
                 seat = hashmap_get(m->seats, cseat);
                 if (!seat)
-                        return sd_bus_error_setf(error, BUS_ERROR_NO_SUCH_SEAT, "No seat '%s' known", cseat);
+                        return sd_bus_error_setf(error, BUS_ERROR_NO_SUCH_SEAT,
+                                                 "No seat '%s' known", cseat);
         }
 
         if (tty_is_vc(tty)) {
@@ -695,35 +704,42 @@ static int method_create_session(sd_bus_message *message, void *userdata, sd_bus
                 if (!seat)
                         seat = m->seat0;
                 else if (seat != m->seat0)
-                        return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "TTY %s is virtual console but seat %s is not seat0", tty, seat->id);
+                        return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS,
+                                                 "TTY %s is virtual console but seat %s is not seat0", tty, seat->id);
 
                 v = vtnr_from_tty(tty);
                 if (v <= 0)
-                        return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Cannot determine VT number from virtual console TTY %s", tty);
+                        return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS,
+                                                 "Cannot determine VT number from virtual console TTY %s", tty);
 
                 if (vtnr == 0)
                         vtnr = (uint32_t) v;
                 else if (vtnr != (uint32_t) v)
-                        return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Specified TTY and VT number do not match");
+                        return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS,
+                                                 "Specified TTY and VT number do not match");
 
         } else if (tty_is_console(tty)) {
 
                 if (!seat)
                         seat = m->seat0;
                 else if (seat != m->seat0)
-                        return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Console TTY specified but seat is not seat0");
+                        return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS,
+                                                 "Console TTY specified but seat is not seat0");
 
                 if (vtnr != 0)
-                        return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Console TTY specified but VT number is not 0");
+                        return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS,
+                                                 "Console TTY specified but VT number is not 0");
         }
 
         if (seat) {
                 if (seat_has_vts(seat)) {
                         if (vtnr <= 0 || vtnr > 63)
-                                return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "VT number out of range");
+                                return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS,
+                                                         "VT number out of range");
                 } else {
                         if (vtnr != 0)
-                                return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Seat has no VTs but VT number not 0");
+                                return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS,
+                                                         "Seat has no VTs but VT number not 0");
                 }
         }
 
@@ -755,13 +771,14 @@ static int method_create_session(sd_bus_message *message, void *userdata, sd_bus
                         return r;
         }
 
-        /* Check if we are already in a logind session. Or if we are in user@.service which is a special PAM session
-         * that avoids creating a logind session. */
+        /* Check if we are already in a logind session. Or if we are in user@.service
+         * which is a special PAM session that avoids creating a logind session. */
         r = manager_get_user_by_pid(m, leader, NULL);
         if (r < 0)
                 return r;
         if (r > 0)
-                return sd_bus_error_setf(error, BUS_ERROR_SESSION_BUSY, "Already running in a session or user slice");
+                return sd_bus_error_setf(error, BUS_ERROR_SESSION_BUSY,
+                                         "Already running in a session or user slice");
 
         /*
          * Old gdm and lightdm start the user-session on the same VT as
@@ -781,7 +798,9 @@ static int method_create_session(sd_bus_message *message, void *userdata, sd_bus
                 return sd_bus_error_setf(error, BUS_ERROR_SESSION_BUSY, "Already occupied by a session");
 
         if (hashmap_size(m->sessions) >= m->sessions_max)
-                return sd_bus_error_setf(error, SD_BUS_ERROR_LIMITS_EXCEEDED, "Maximum number of sessions (%" PRIu64 ") reached, refusing further sessions.", m->sessions_max);
+                return sd_bus_error_setf(error, SD_BUS_ERROR_LIMITS_EXCEEDED,
+                                         "Maximum number of sessions (%" PRIu64 ") reached, refusing further sessions.",
+                                         m->sessions_max);
 
         (void) audit_session_from_pid(leader, &audit_id);
         if (audit_session_is_valid(audit_id)) {
@@ -987,7 +1006,8 @@ static int method_activate_session_on_seat(sd_bus_message *message, void *userda
                 return r;
 
         if (session->seat != seat)
-                return sd_bus_error_setf(error, BUS_ERROR_SESSION_NOT_ON_SEAT, "Session %s not on seat %s", session_name, seat_name);
+                return sd_bus_error_setf(error, BUS_ERROR_SESSION_NOT_ON_SEAT,
+                                         "Session %s not on seat %s", session_name, seat_name);
 
         r = session_activate(session);
         if (r < 0)
@@ -1795,7 +1815,8 @@ static int method_do_shutdown_or_sleep(
 
         /* Don't allow multiple jobs being executed at the same time */
         if (m->action_what > 0)
-                return sd_bus_error_setf(error, BUS_ERROR_OPERATION_IN_PROGRESS, "There's already a shutdown or sleep operation in progress");
+                return sd_bus_error_setf(error, BUS_ERROR_OPERATION_IN_PROGRESS,
+                                         "There's already a shutdown or sleep operation in progress");
 
         if (sleep_verb) {
                 r = can_sleep(sleep_verb);
@@ -3127,22 +3148,26 @@ static int method_inhibit(sd_bus_message *message, void *userdata, sd_bus_error
 
         w = inhibit_what_from_string(what);
         if (w <= 0)
-                return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid what specification %s", what);
+                return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS,
+                                         "Invalid what specification %s", what);
 
         mm = inhibit_mode_from_string(mode);
         if (mm < 0)
-                return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid mode specification %s", mode);
+                return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS,
+                                         "Invalid mode specification %s", mode);
 
         /* Delay is only supported for shutdown/sleep */
         if (mm == INHIBIT_DELAY && (w & ~(INHIBIT_SHUTDOWN|INHIBIT_SLEEP)))
-                return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Delay inhibitors only supported for shutdown and sleep");
+                return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS,
+                                         "Delay inhibitors only supported for shutdown and sleep");
 
         /* Don't allow taking delay locks while we are already
          * executing the operation. We shouldn't create the impression
          * that the lock was successful if the machine is about to go
          * down/suspend any moment. */
         if (m->action_what & w)
-                return sd_bus_error_setf(error, BUS_ERROR_OPERATION_IN_PROGRESS, "The operation inhibition has been requested for is already running");
+                return sd_bus_error_setf(error, BUS_ERROR_OPERATION_IN_PROGRESS,
+                                         "The operation inhibition has been requested for is already running");
 
         r = bus_verify_polkit_async(
                         message,
@@ -3177,7 +3202,9 @@ static int method_inhibit(sd_bus_message *message, void *userdata, sd_bus_error
                 return r;
 
         if (hashmap_size(m->inhibitors) >= m->inhibitors_max)
-                return sd_bus_error_setf(error, SD_BUS_ERROR_LIMITS_EXCEEDED, "Maximum number of inhibitors (%" PRIu64 ") reached, refusing further inhibitors.", m->inhibitors_max);
+                return sd_bus_error_setf(error, SD_BUS_ERROR_LIMITS_EXCEEDED,
+                                         "Maximum number of inhibitors (%" PRIu64 ") reached, refusing further inhibitors.",
+                                         m->inhibitors_max);
 
         do {
                 id = mfree(id);
@@ -3339,7 +3366,8 @@ static int session_jobs_reply(Session *s, const char *unit, const char *result)
         if (result && !streq(result, "done")) {
                 _cleanup_(sd_bus_error_free) sd_bus_error e = SD_BUS_ERROR_NULL;
 
-                sd_bus_error_setf(&e, BUS_ERROR_JOB_FAILED, "Start job for unit '%s' failed with '%s'", unit, result);
+                sd_bus_error_setf(&e, BUS_ERROR_JOB_FAILED,
+                                  "Start job for unit '%s' failed with '%s'", unit, result);
                 return session_send_create_reply(s, &e);
         }
 
index a7924235b458a6bbbc2e6783c3e3ffb33cf8a245..3d3bc8ab1cfb7bc79285ed853aec69a1ccaafdc3 100644 (file)
@@ -644,20 +644,26 @@ static int session_start_scope(Session *s, sd_bus_message *properties, sd_bus_er
                                 s->leader,
                                 s->user->slice,
                                 description,
-                                STRV_MAKE(s->user->runtime_dir_service, s->user->service), /* These two have StopWhenUnneeded= set, hence add a dep towards them */
-                                STRV_MAKE("systemd-logind.service", "systemd-user-sessions.service", s->user->runtime_dir_service, s->user->service), /* And order us after some more */
+                                /* These two have StopWhenUnneeded= set, hence add a dep towards them */
+                                STRV_MAKE(s->user->runtime_dir_service,
+                                          s->user->service),
+                                /* And order us after some more */
+                                STRV_MAKE("systemd-logind.service",
+                                          "systemd-user-sessions.service",
+                                          s->user->runtime_dir_service,
+                                          s->user->service),
                                 s->user->home,
                                 properties,
                                 error,
                                 &s->scope_job);
                 if (r < 0)
-                        return log_error_errno(r, "Failed to start session scope %s: %s", scope, bus_error_message(error, r));
+                        return log_error_errno(r, "Failed to start session scope %s: %s",
+                                               scope, bus_error_message(error, r));
 
                 s->scope = TAKE_PTR(scope);
         }
 
-        if (s->scope)
-                (void) hashmap_put(s->manager->session_units, s->scope, s);
+        (void) hashmap_put(s->manager->session_units, s->scope, s);
 
         return 0;
 }
index 372ba44874fb12360411a448d241eaab42803037..2bf3b7987e1c4628cc27df8eae382486641eaf8b 100644 (file)
@@ -327,14 +327,21 @@ static const char* getenv_harder(pam_handle_t *handle, const char *key, const ch
         assert(handle);
         assert(key);
 
-        /* Looks for an environment variable, preferrably in the environment block associated with the specified PAM
-         * handle, falling back to the process' block instead. */
+        /* Looks for an environment variable, preferrably in the environment block associated with the
+         * specified PAM handle, falling back to the process' block instead. Why check both? Because we want
+         * to permit configuration of session properties from unit files that invoke PAM services, so that
+         * PAM services don't have to be reworked to set systemd-specific properties, but these properties
+         * can still be set from the unit file Environment= block. */
 
         v = pam_getenv(handle, key);
         if (!isempty(v))
                 return v;
 
-        v = getenv(key);
+        /* We use secure_getenv() here, since we might get loaded into su/sudo, which are SUID. Ideally
+         * they'd clean up the environment before invoking foreign code (such as PAM modules), but alas they
+         * currently don't (to be precise, they clean up the environment they pass to their children, but
+         * not their own environ[]). */
+        v = secure_getenv(key);
         if (!isempty(v))
                 return v;
 
index c8607bcec3eec43567fc089cb06eed2610bd5090..d98027a0ca5fdd63246f8498b960d1373743910d 100644 (file)
@@ -1993,16 +1993,6 @@ static int transfer_image_common(sd_bus *bus, sd_bus_message *m) {
         return -r;
 }
 
-static const char *nullify_dash(const char *p) {
-        if (isempty(p))
-                return NULL;
-
-        if (streq(p, "-"))
-                return NULL;
-
-        return p;
-}
-
 static int import_tar(int argc, char *argv[], void *userdata) {
         _cleanup_(sd_bus_message_unrefp) sd_bus_message *m = NULL;
         _cleanup_free_ char *ll = NULL, *fn = NULL;
@@ -2014,10 +2004,10 @@ static int import_tar(int argc, char *argv[], void *userdata) {
         assert(bus);
 
         if (argc >= 2)
-                path = nullify_dash(argv[1]);
+                path = empty_or_dash_to_null(argv[1]);
 
         if (argc >= 3)
-                local = nullify_dash(argv[2]);
+                local = empty_or_dash_to_null(argv[2]);
         else if (path) {
                 r = path_extract_filename(path, &fn);
                 if (r < 0)
@@ -2081,10 +2071,10 @@ static int import_raw(int argc, char *argv[], void *userdata) {
         assert(bus);
 
         if (argc >= 2)
-                path = nullify_dash(argv[1]);
+                path = empty_or_dash_to_null(argv[1]);
 
         if (argc >= 3)
-                local = nullify_dash(argv[2]);
+                local = empty_or_dash_to_null(argv[2]);
         else if (path) {
                 r = path_extract_filename(path, &fn);
                 if (r < 0)
@@ -2148,10 +2138,10 @@ static int import_fs(int argc, char *argv[], void *userdata) {
         assert(bus);
 
         if (argc >= 2)
-                path = nullify_dash(argv[1]);
+                path = empty_or_dash_to_null(argv[1]);
 
         if (argc >= 3)
-                local = nullify_dash(argv[2]);
+                local = empty_or_dash_to_null(argv[2]);
         else if (path) {
                 r = path_extract_filename(path, &fn);
                 if (r < 0)
@@ -2230,8 +2220,7 @@ static int export_tar(int argc, char *argv[], void *userdata) {
 
         if (argc >= 3)
                 path = argv[2];
-        if (isempty(path) || streq(path, "-"))
-                path = NULL;
+        path = empty_or_dash_to_null(path);
 
         if (path) {
                 determine_compression_from_filename(path);
@@ -2280,8 +2269,7 @@ static int export_raw(int argc, char *argv[], void *userdata) {
 
         if (argc >= 3)
                 path = argv[2];
-        if (isempty(path) || streq(path, "-"))
-                path = NULL;
+        path = empty_or_dash_to_null(path);
 
         if (path) {
                 determine_compression_from_filename(path);
@@ -2338,8 +2326,7 @@ static int pull_tar(int argc, char *argv[], void *userdata) {
                 local = l;
         }
 
-        if (isempty(local) || streq(local, "-"))
-                local = NULL;
+        local = empty_or_dash_to_null(local);
 
         if (local) {
                 r = tar_strip_suffixes(local, &ll);
@@ -2402,8 +2389,7 @@ static int pull_raw(int argc, char *argv[], void *userdata) {
                 local = l;
         }
 
-        if (isempty(local) || streq(local, "-"))
-                local = NULL;
+        local = empty_or_dash_to_null(local);
 
         if (local) {
                 r = raw_strip_suffixes(local, &ll);
index fcd2ec2097babacc7b697b454135e5cac3615276..1a3d6caeb9f77ce66be89f8a24a1a133f37aa557 100644 (file)
@@ -187,4 +187,5 @@ WireGuardPeer.AllowedIPs,          config_parse_wireguard_allowed_ips,   0,
 WireGuardPeer.Endpoint,            config_parse_wireguard_endpoint,      0,                             0
 WireGuardPeer.PublicKey,           config_parse_wireguard_public_key,    0,                             0
 WireGuardPeer.PresharedKey,        config_parse_wireguard_preshared_key, 0,                             0
+WireGuardPeer.PresharedKeyFile,    config_parse_wireguard_preshared_key_file, 0,                        0
 WireGuardPeer.PersistentKeepalive, config_parse_wireguard_keepalive,     0,                             0
index 5d9df16349c85228f0fb8c7928f3f3923f65d21c..5aa10fc4dea197addeb1759d4761c74d654563e4 100644 (file)
@@ -53,6 +53,8 @@ static void wireguard_peer_free(WireguardPeer *peer) {
 
         free(peer->endpoint_host);
         free(peer->endpoint_port);
+        free(peer->preshared_key_file);
+        explicit_bzero_safe(peer->preshared_key, WG_KEY_LEN);
 
         free(peer);
 }
@@ -438,16 +440,18 @@ static int netdev_wireguard_post_create(NetDev *netdev, Link *link, sd_netlink_m
         return 0;
 }
 
-int config_parse_wireguard_listen_port(const char *unit,
-                                       const char *filename,
-                                       unsigned line,
-                                       const char *section,
-                                       unsigned section_line,
-                                       const char *lvalue,
-                                       int ltype,
-                                       const char *rvalue,
-                                       void *data,
-                                       void *userdata) {
+int config_parse_wireguard_listen_port(
+                const char *unit,
+                const char *filename,
+                unsigned line,
+                const char *section,
+                unsigned section_line,
+                const char *lvalue,
+                int ltype,
+                const char *rvalue,
+                void *data,
+                void *userdata) {
+
         uint16_t *s = data;
         uint16_t port = 0;
         int r;
@@ -465,17 +469,17 @@ int config_parse_wireguard_listen_port(const char *unit,
         }
 
         *s = port;
-
         return 0;
 }
 
 static int wireguard_decode_key_and_warn(
                 const char *rvalue,
-                uint8_t *ret,
+                uint8_t ret[static WG_KEY_LEN],
                 const char *unit,
                 const char *filename,
                 unsigned line,
                 const char *lvalue) {
+
         _cleanup_free_ void *key = NULL;
         size_t len;
         int r;
@@ -490,43 +494,50 @@ static int wireguard_decode_key_and_warn(
                 return 0;
         }
 
-        r = unbase64mem(rvalue, strlen(rvalue), &key, &len);
+        if (!streq(lvalue, "PublicKey"))
+                (void) warn_file_is_world_accessible(filename, NULL, unit, line);
+
+        r = unbase64mem_full(rvalue, strlen(rvalue), true, &key, &len);
         if (r < 0) {
                 log_syntax(unit, LOG_ERR, filename, line, r,
                            "Failed to decode wireguard key provided by %s=, ignoring assignment: %m", lvalue);
-                return 0;
+                goto finalize;
         }
         if (len != WG_KEY_LEN) {
                 log_syntax(unit, LOG_ERR, filename, line, 0,
                            "Wireguard key provided by %s= has invalid length (%zu bytes), ignoring assignment.",
                            lvalue, len);
-                return 0;
+                goto finalize;
         }
 
         memcpy(ret, key, WG_KEY_LEN);
-        return true;
+        r = 0;
+
+finalize:
+        explicit_bzero_safe(key, len);
+        return r;
 }
 
-int config_parse_wireguard_private_key(const char *unit,
-                                       const char *filename,
-                                       unsigned line,
-                                       const char *section,
-                                       unsigned section_line,
-                                       const char *lvalue,
-                                       int ltype,
-                                       const char *rvalue,
-                                       void *data,
-                                       void *userdata) {
+int config_parse_wireguard_private_key(
+                const char *unit,
+                const char *filename,
+                unsigned line,
+                const char *section,
+                unsigned section_line,
+                const char *lvalue,
+                int ltype,
+                const char *rvalue,
+                void *data,
+                void *userdata) {
+
         Wireguard *w;
 
         assert(data);
-
         w = WIREGUARD(data);
-
         assert(w);
 
-        return wireguard_decode_key_and_warn(rvalue, w->private_key, unit, filename, line, lvalue);
-
+        (void) wireguard_decode_key_and_warn(rvalue, w->private_key, unit, filename, line, lvalue);
+        return 0;
 }
 
 int config_parse_wireguard_private_key_file(
@@ -563,25 +574,24 @@ int config_parse_wireguard_private_key_file(
         return free_and_replace(w->private_key_file, path);
 }
 
-int config_parse_wireguard_preshared_key(const char *unit,
-                                         const char *filename,
-                                         unsigned line,
-                                         const char *section,
-                                         unsigned section_line,
-                                         const char *lvalue,
-                                         int ltype,
-                                         const char *rvalue,
-                                         void *data,
-                                         void *userdata) {
+int config_parse_wireguard_preshared_key(
+                const char *unit,
+                const char *filename,
+                unsigned line,
+                const char *section,
+                unsigned section_line,
+                const char *lvalue,
+                int ltype,
+                const char *rvalue,
+                void *data,
+                void *userdata) {
 
         _cleanup_(wireguard_peer_free_or_set_invalidp) WireguardPeer *peer = NULL;
         Wireguard *w;
         int r;
 
         assert(data);
-
         w = WIREGUARD(data);
-
         assert(w);
 
         r = wireguard_peer_new_static(w, filename, section_line, &peer);
@@ -596,25 +606,67 @@ int config_parse_wireguard_preshared_key(const char *unit,
         return 0;
 }
 
-int config_parse_wireguard_public_key(const char *unit,
-                                      const char *filename,
-                                      unsigned line,
-                                      const char *section,
-                                      unsigned section_line,
-                                      const char *lvalue,
-                                      int ltype,
-                                      const char *rvalue,
-                                      void *data,
-                                      void *userdata) {
+int config_parse_wireguard_preshared_key_file(
+                const char *unit,
+                const char *filename,
+                unsigned line,
+                const char *section,
+                unsigned section_line,
+                const char *lvalue,
+                int ltype,
+                const char *rvalue,
+                void *data,
+                void *userdata) {
 
         _cleanup_(wireguard_peer_free_or_set_invalidp) WireguardPeer *peer = NULL;
+        _cleanup_free_ char *path = NULL;
         Wireguard *w;
         int r;
 
         assert(data);
-
         w = WIREGUARD(data);
+        assert(w);
+
+        r = wireguard_peer_new_static(w, filename, section_line, &peer);
+        if (r < 0)
+                return r;
+
+        if (isempty(rvalue)) {
+                peer->preshared_key_file = mfree(peer->preshared_key_file);
+                TAKE_PTR(peer);
+                return 0;
+        }
+
+        path = strdup(rvalue);
+        if (!path)
+                return log_oom();
+
+        if (path_simplify_and_warn(path, PATH_CHECK_ABSOLUTE, unit, filename, line, lvalue) < 0)
+                return 0;
+
+        free_and_replace(peer->preshared_key_file, path);
+        TAKE_PTR(peer);
+        return 0;
+}
 
+int config_parse_wireguard_public_key(
+                const char *unit,
+                const char *filename,
+                unsigned line,
+                const char *section,
+                unsigned section_line,
+                const char *lvalue,
+                int ltype,
+                const char *rvalue,
+                void *data,
+                void *userdata) {
+
+        _cleanup_(wireguard_peer_free_or_set_invalidp) WireguardPeer *peer = NULL;
+        Wireguard *w;
+        int r;
+
+        assert(data);
+        w = WIREGUARD(data);
         assert(w);
 
         r = wireguard_peer_new_static(w, filename, section_line, &peer);
@@ -629,16 +681,17 @@ int config_parse_wireguard_public_key(const char *unit,
         return 0;
 }
 
-int config_parse_wireguard_allowed_ips(const char *unit,
-                                       const char *filename,
-                                       unsigned line,
-                                       const char *section,
-                                       unsigned section_line,
-                                       const char *lvalue,
-                                       int ltype,
-                                       const char *rvalue,
-                                       void *data,
-                                       void *userdata) {
+int config_parse_wireguard_allowed_ips(
+                const char *unit,
+                const char *filename,
+                unsigned line,
+                const char *section,
+                unsigned section_line,
+                const char *lvalue,
+                int ltype,
+                const char *rvalue,
+                void *data,
+                void *userdata) {
 
         _cleanup_(wireguard_peer_free_or_set_invalidp) WireguardPeer *peer = NULL;
         union in_addr_union addr;
@@ -651,7 +704,6 @@ int config_parse_wireguard_allowed_ips(const char *unit,
         assert(data);
 
         w = WIREGUARD(data);
-
         assert(w);
 
         r = wireguard_peer_new_static(w, filename, section_line, &peer);
@@ -696,16 +748,17 @@ int config_parse_wireguard_allowed_ips(const char *unit,
         return 0;
 }
 
-int config_parse_wireguard_endpoint(const char *unit,
-                                    const char *filename,
-                                    unsigned line,
-                                    const char *section,
-                                    unsigned section_line,
-                                    const char *lvalue,
-                                    int ltype,
-                                    const char *rvalue,
-                                    void *data,
-                                    void *userdata) {
+int config_parse_wireguard_endpoint(
+                const char *unit,
+                const char *filename,
+                unsigned line,
+                const char *section,
+                unsigned section_line,
+                const char *lvalue,
+                int ltype,
+                const char *rvalue,
+                void *data,
+                void *userdata) {
 
         _cleanup_(wireguard_peer_free_or_set_invalidp) WireguardPeer *peer = NULL;
         const char *begin, *end;
@@ -717,7 +770,6 @@ int config_parse_wireguard_endpoint(const char *unit,
         assert(rvalue);
 
         w = WIREGUARD(data);
-
         assert(w);
 
         r = wireguard_peer_new_static(w, filename, section_line, &peer);
@@ -775,16 +827,17 @@ int config_parse_wireguard_endpoint(const char *unit,
         return 0;
 }
 
-int config_parse_wireguard_keepalive(const char *unit,
-                                     const char *filename,
-                                     unsigned line,
-                                     const char *section,
-                                     unsigned section_line,
-                                     const char *lvalue,
-                                     int ltype,
-                                     const char *rvalue,
-                                     void *data,
-                                     void *userdata) {
+int config_parse_wireguard_keepalive(
+                const char *unit,
+                const char *filename,
+                unsigned line,
+                const char *section,
+                unsigned section_line,
+                const char *lvalue,
+                int ltype,
+                const char *rvalue,
+                void *data,
+                void *userdata) {
 
         _cleanup_(wireguard_peer_free_or_set_invalidp) WireguardPeer *peer = NULL;
         uint16_t keepalive = 0;
@@ -795,7 +848,6 @@ int config_parse_wireguard_keepalive(const char *unit,
         assert(data);
 
         w = WIREGUARD(data);
-
         assert(w);
 
         r = wireguard_peer_new_static(w, filename, section_line, &peer);
@@ -824,9 +876,7 @@ static void wireguard_init(NetDev *netdev) {
         Wireguard *w;
 
         assert(netdev);
-
         w = WIREGUARD(netdev);
-
         assert(w);
 
         w->flags = WGDEVICE_F_REPLACE_PEERS;
@@ -841,6 +891,7 @@ static void wireguard_done(NetDev *netdev) {
 
         sd_event_source_unref(w->resolve_retry_event_source);
 
+        explicit_bzero_safe(w->private_key, WG_KEY_LEN);
         free(w->private_key_file);
 
         hashmap_free_with_destructor(w->peers_by_section, wireguard_peer_free);
@@ -848,45 +899,34 @@ static void wireguard_done(NetDev *netdev) {
         set_free(w->peers_with_failed_endpoint);
 }
 
-static int wireguard_read_private_key_file(Wireguard *w, bool fatal) {
-        _cleanup_free_ char *contents = NULL;
-        _cleanup_free_ void *key = NULL;
-        size_t size, key_len;
-        NetDev *netdev;
-        int level, r;
-
-        assert(w);
-
-        netdev = NETDEV(w);
+static int wireguard_read_key_file(const char *filename, uint8_t dest[static WG_KEY_LEN]) {
+        _cleanup_free_ char *key = NULL;
+        size_t key_len;
+        int r;
 
-        if (!w->private_key_file)
+        if (!filename)
                 return 0;
 
-        level = fatal ? LOG_ERR : LOG_INFO;
-
-        r = read_full_file(w->private_key_file, &contents, &size);
+        r = read_full_file_full(filename, READ_FULL_FILE_SECURE | READ_FULL_FILE_UNBASE64, &key, &key_len);
         if (r < 0)
-                return log_netdev_full(netdev, level, r,
-                                       "Failed to read private key from '%s'%s: %m",
-                                       w->private_key_file, fatal ? "" : ", ignoring");
+                return r;
 
-        r = unbase64mem(contents, size, &key, &key_len);
-        if (r < 0)
-                return log_netdev_full(netdev, level, r,
-                                       "Failed to decode private key%s: %m",
-                                       fatal ? "" : ", ignoring");
+        if (key_len != WG_KEY_LEN) {
+                r = -EINVAL;
+                goto finalize;
+        }
 
-        if (key_len != WG_KEY_LEN)
-                return log_netdev_full(netdev, level, SYNTHETIC_ERRNO(EINVAL),
-                                       "Wireguard private key has invalid length (%zu bytes)%s: %m",
-                                       key_len, fatal ? "" : ", ignoring");
+        memcpy(dest, key, WG_KEY_LEN);
+        r = 0;
 
-        memcpy(w->private_key, key, WG_KEY_LEN);
-        return 0;
+finalize:
+        explicit_bzero_safe(key, key_len);
+        return r;
 }
 
 static int wireguard_peer_verify(WireguardPeer *peer) {
         NetDev *netdev = NETDEV(peer->wireguard);
+        int r;
 
         if (section_is_invalid(peer->section))
                 return -EINVAL;
@@ -897,28 +937,37 @@ static int wireguard_peer_verify(WireguardPeer *peer) {
                                               "Ignoring [WireGuardPeer] section from line %u.",
                                               peer->section->filename, peer->section->line);
 
+        r = wireguard_read_key_file(peer->preshared_key_file, peer->preshared_key);
+        if (r < 0)
+                return log_netdev_error_errno(netdev, r,
+                                              "%s: Failed to read preshared key from '%s'. "
+                                              "Ignoring [WireGuardPeer] section from line %u.",
+                                              peer->section->filename, peer->preshared_key_file,
+                                              peer->section->line);
+
         return 0;
 }
 
 static int wireguard_verify(NetDev *netdev, const char *filename) {
         WireguardPeer *peer, *peer_next;
         Wireguard *w;
-        bool empty;
         int r;
 
         assert(netdev);
         w = WIREGUARD(netdev);
         assert(w);
 
-        empty = eqzero(w->private_key);
-        if (empty && !w->private_key_file)
-                return log_netdev_error_errno(netdev, SYNTHETIC_ERRNO(EINVAL),
-                                              "%s: Missing PrivateKey= or PrivateKeyFile=, ignoring.",
-                                              filename);
+        r = wireguard_read_key_file(w->private_key_file, w->private_key);
+        if (r < 0)
+                return log_netdev_error_errno(netdev, r,
+                                              "Failed to read private key from %s. Dropping network device %s.",
+                                              w->private_key_file, netdev->ifname);
 
-        r = wireguard_read_private_key_file(w, empty);
-        if (r < 0 && empty)
-                return r;
+        if (eqzero(w->private_key))
+                return log_netdev_error_errno(netdev, SYNTHETIC_ERRNO(EINVAL),
+                                              "%s: Missing PrivateKey= or PrivateKeyFile=, "
+                                              "Dropping network device %s.",
+                                              filename, netdev->ifname);
 
         LIST_FOREACH_SAFE(peers, peer, peer_next, w->peers)
                 if (wireguard_peer_verify(peer) < 0)
index 6cf6eec14db49a266543f3ac8f53948ceb7ded24..4ae520c52ba7811741e6fbb5adc2fb0c7ba4f07c 100644 (file)
@@ -21,6 +21,7 @@ typedef struct WireguardPeer {
 
         uint8_t public_key[WG_KEY_LEN];
         uint8_t preshared_key[WG_KEY_LEN];
+        char *preshared_key_file;
         uint32_t flags;
         uint16_t persistent_keepalive_interval;
 
@@ -63,4 +64,5 @@ CONFIG_PARSER_PROTOTYPE(config_parse_wireguard_public_key);
 CONFIG_PARSER_PROTOTYPE(config_parse_wireguard_private_key);
 CONFIG_PARSER_PROTOTYPE(config_parse_wireguard_private_key_file);
 CONFIG_PARSER_PROTOTYPE(config_parse_wireguard_preshared_key);
+CONFIG_PARSER_PROTOTYPE(config_parse_wireguard_preshared_key_file);
 CONFIG_PARSER_PROTOTYPE(config_parse_wireguard_keepalive);
index 5ab4b480b92487ec19dd2a2b1e0b26f4a0a7d74f..3b0ecb1db973afe689a65e74c96a770914e121c6 100644 (file)
@@ -1849,10 +1849,9 @@ static int setup_boot_id(void) {
         const char *to;
         int r;
 
-        /* Generate a new randomized boot ID, so that each boot-up of
-         * the container gets a new one */
+        /* Generate a new randomized boot ID, so that each boot-up of the container gets a new one */
 
-        r = tempfn_random_child(NULL, "proc-sys-kernel-random-boot-id", &path);
+        r = tempfn_random_child("/run", "proc-sys-kernel-random-boot-id", &path);
         if (r < 0)
                 return log_error_errno(r, "Failed to generate random boot ID path: %m");
 
@@ -2096,19 +2095,18 @@ static int setup_kmsg(int kmsg_socket) {
         _cleanup_free_ char *fifo = NULL;
         _cleanup_close_ int fd = -1;
         _cleanup_umask_ mode_t u;
-        const char *to;
         int r;
 
         assert(kmsg_socket >= 0);
 
         u = umask(0000);
 
-        /* We create the kmsg FIFO as as temporary file in /tmp, but immediately delete it after bind mounting it to
+        /* We create the kmsg FIFO as as temporary file in /run, but immediately delete it after bind mounting it to
          * /proc/kmsg. While FIFOs on the reading side behave very similar to /proc/kmsg, their writing side behaves
          * differently from /dev/kmsg in that writing blocks when nothing is reading. In order to avoid any problems
          * with containers deadlocking due to this we simply make /dev/kmsg unavailable to the container. */
 
-        r = tempfn_random_child(NULL, "proc-kmsg", &fifo);
+        r = tempfn_random_child("/run", "proc-kmsg", &fifo);
         if (r < 0)
                 return log_error_errno(r, "Failed to generate kmsg path: %m");
 
@@ -2116,9 +2114,8 @@ static int setup_kmsg(int kmsg_socket) {
                 return log_error_errno(errno, "mkfifo() for /run/kmsg failed: %m");
 
         from = TAKE_PTR(fifo);
-        to = "/proc/kmsg";
 
-        r = mount_verbose(LOG_ERR, from, to, NULL, MS_BIND, NULL);
+        r = mount_verbose(LOG_ERR, from, "/proc/kmsg", NULL, MS_BIND, NULL);
         if (r < 0)
                 return r;
 
index 601bde6d4da90d4203fad4b7a73e90294db566f7..d83e7962a650503a7d03e08973eda8cdb44d1b17 100644 (file)
@@ -33,7 +33,7 @@
  * linked compenents anyway. */
 #define CALENDARSPEC_COMPONENTS_MAX 240
 
-static void free_chain(CalendarComponent *c) {
+static void chain_free(CalendarComponent *c) {
         CalendarComponent *n;
 
         while (c) {
@@ -43,17 +43,19 @@ static void free_chain(CalendarComponent *c) {
         }
 }
 
+DEFINE_TRIVIAL_CLEANUP_FUNC(CalendarComponent*, chain_free);
+
 CalendarSpec* calendar_spec_free(CalendarSpec *c) {
 
         if (!c)
                 return NULL;
 
-        free_chain(c->year);
-        free_chain(c->month);
-        free_chain(c->day);
-        free_chain(c->hour);
-        free_chain(c->minute);
-        free_chain(c->microsecond);
+        chain_free(c->year);
+        chain_free(c->month);
+        chain_free(c->day);
+        chain_free(c->hour);
+        chain_free(c->minute);
+        chain_free(c->microsecond);
         free(c->timezone);
 
         return mfree(c);
@@ -551,14 +553,16 @@ static int const_chain(int value, CalendarComponent **c) {
 
         assert(c);
 
-        cc = new0(CalendarComponent, 1);
+        cc = new(CalendarComponent, 1);
         if (!cc)
                 return -ENOMEM;
 
-        cc->start = value;
-        cc->stop = -1;
-        cc->repeat = 0;
-        cc->next = *c;
+        *cc = (CalendarComponent) {
+                .start = value,
+                .stop = -1,
+                .repeat = 0,
+                .next = *c,
+        };
 
         *c = cc;
 
@@ -566,13 +570,18 @@ static int const_chain(int value, CalendarComponent **c) {
 }
 
 static int calendarspec_from_time_t(CalendarSpec *c, time_t time) {
+        _cleanup_(chain_freep) CalendarComponent
+                *year = NULL, *month = NULL, *day = NULL,
+                *hour = NULL, *minute = NULL, *us = NULL;
         struct tm tm;
-        CalendarComponent *year = NULL, *month = NULL, *day = NULL, *hour = NULL, *minute = NULL, *us = NULL;
         int r;
 
         if (!gmtime_r(&time, &tm))
                 return -ERANGE;
 
+        if (tm.tm_year > INT_MAX - 1900)
+                return -ERANGE;
+
         r = const_chain(tm.tm_year + 1900, &year);
         if (r < 0)
                 return r;
@@ -598,12 +607,12 @@ static int calendarspec_from_time_t(CalendarSpec *c, time_t time) {
                 return r;
 
         c->utc = true;
-        c->year = year;
-        c->month = month;
-        c->day = day;
-        c->hour = hour;
-        c->minute = minute;
-        c->microsecond = us;
+        c->year = TAKE_PTR(year);
+        c->month = TAKE_PTR(month);
+        c->day = TAKE_PTR(day);
+        c->hour = TAKE_PTR(hour);
+        c->minute = TAKE_PTR(minute);
+        c->microsecond = TAKE_PTR(us);
         return 0;
 }
 
@@ -644,14 +653,16 @@ static int prepend_component(const char **p, bool usec, unsigned nesting, Calend
         if (!IN_SET(*e, 0, ' ', ',', '-', '~', ':'))
                 return -EINVAL;
 
-        cc = new0(CalendarComponent, 1);
+        cc = new(CalendarComponent, 1);
         if (!cc)
                 return -ENOMEM;
 
-        cc->start = start;
-        cc->stop = stop;
-        cc->repeat = repeat;
-        cc->next = *c;
+        *cc = (CalendarComponent) {
+                .start = start,
+                .stop = stop,
+                .repeat = repeat,
+                .next = *c,
+        };
 
         *p = e;
         *c = cc;
@@ -665,8 +676,8 @@ static int prepend_component(const char **p, bool usec, unsigned nesting, Calend
 }
 
 static int parse_chain(const char **p, bool usec, CalendarComponent **c) {
+        _cleanup_(chain_freep) CalendarComponent *cc = NULL;
         const char *t;
-        CalendarComponent *cc = NULL;
         int r;
 
         assert(p);
@@ -688,20 +699,18 @@ static int parse_chain(const char **p, bool usec, CalendarComponent **c) {
         }
 
         r = prepend_component(&t, usec, 0, &cc);
-        if (r < 0) {
-                free_chain(cc);
+        if (r < 0)
                 return r;
-        }
 
         *p = t;
-        *c = cc;
+        *c = TAKE_PTR(cc);
         return 0;
 }
 
 static int parse_date(const char **p, CalendarSpec *c) {
+        _cleanup_(chain_freep) CalendarComponent *first = NULL, *second = NULL, *third = NULL;
         const char *t;
         int r;
-        CalendarComponent *first, *second, *third;
 
         assert(p);
         assert(*p);
@@ -738,70 +747,51 @@ static int parse_date(const char **p, CalendarSpec *c) {
                 return r;
 
         /* Already the end? A ':' as separator? In that case this was a time, not a date */
-        if (IN_SET(*t, 0, ':')) {
-                free_chain(first);
+        if (IN_SET(*t, 0, ':'))
                 return 0;
-        }
 
         if (*t == '~')
                 c->end_of_month = true;
-        else if (*t != '-') {
-                free_chain(first);
+        else if (*t != '-')
                 return -EINVAL;
-        }
 
         t++;
         r = parse_chain(&t, false, &second);
-        if (r < 0) {
-                free_chain(first);
+        if (r < 0)
                 return r;
-        }
 
         /* Got two parts, hence it's month and day */
         if (IN_SET(*t, 0, ' ')) {
                 *p = t + strspn(t, " ");
-                c->month = first;
-                c->day = second;
+                c->month = TAKE_PTR(first);
+                c->day = TAKE_PTR(second);
                 return 0;
-        } else if (c->end_of_month) {
-                free_chain(first);
-                free_chain(second);
+        } else if (c->end_of_month)
                 return -EINVAL;
-        }
 
         if (*t == '~')
                 c->end_of_month = true;
-        else if (*t != '-') {
-                free_chain(first);
-                free_chain(second);
+        else if (*t != '-')
                 return -EINVAL;
-        }
 
         t++;
         r = parse_chain(&t, false, &third);
-        if (r < 0) {
-                free_chain(first);
-                free_chain(second);
+        if (r < 0)
                 return r;
-        }
 
-        /* Got three parts, hence it is year, month and day */
-        if (IN_SET(*t, 0, ' ')) {
-                *p = t + strspn(t, " ");
-                c->year = first;
-                c->month = second;
-                c->day = third;
-                return 0;
-        }
+        if (!IN_SET(*t, 0, ' '))
+                return -EINVAL;
 
-        free_chain(first);
-        free_chain(second);
-        free_chain(third);
-        return -EINVAL;
+        /* Got three parts, hence it is year, month and day */
+        *p = t + strspn(t, " ");
+        c->year = TAKE_PTR(first);
+        c->month = TAKE_PTR(second);
+        c->day = TAKE_PTR(third);
+        return 0;
 }
 
 static int parse_calendar_time(const char **p, CalendarSpec *c) {
-        CalendarComponent *h = NULL, *m = NULL, *s = NULL;
+        _cleanup_(chain_freep) CalendarComponent *h = NULL, *m = NULL, *s = NULL;
         const char *t;
         int r;
 
@@ -817,66 +807,55 @@ static int parse_calendar_time(const char **p, CalendarSpec *c) {
 
         r = parse_chain(&t, false, &h);
         if (r < 0)
-                goto fail;
+                return r;
 
-        if (*t != ':') {
-                r = -EINVAL;
-                goto fail;
-        }
+        if (*t != ':')
+                return -EINVAL;
 
         t++;
         r = parse_chain(&t, false, &m);
         if (r < 0)
-                goto fail;
+                return r;
 
         /* Already at the end? Then it's hours and minutes, and seconds are 0 */
         if (*t == 0)
                 goto null_second;
 
-        if (*t != ':') {
-                r = -EINVAL;
-                goto fail;
-        }
+        if (*t != ':')
+                return -EINVAL;
 
         t++;
         r = parse_chain(&t, true, &s);
         if (r < 0)
-                goto fail;
+                return r;
 
         /* At the end? Then it's hours, minutes and seconds */
         if (*t == 0)
                 goto finish;
 
-        r = -EINVAL;
-        goto fail;
+        return -EINVAL;
 
 null_hour:
         r = const_chain(0, &h);
         if (r < 0)
-                goto fail;
+                return r;
 
         r = const_chain(0, &m);
         if (r < 0)
-                goto fail;
+                return r;
 
 null_second:
         r = const_chain(0, &s);
         if (r < 0)
-                goto fail;
+                return r;
 
 finish:
         *p = t;
-        c->hour = h;
-        c->minute = m;
-        c->microsecond = s;
+        c->hour = TAKE_PTR(h);
+        c->minute = TAKE_PTR(m);
+        c->microsecond = TAKE_PTR(s);
 
         return 0;
-
-fail:
-        free_chain(h);
-        free_chain(m);
-        free_chain(s);
-        return r;
 }
 
 int calendar_spec_from_string(const char *p, CalendarSpec **spec) {
@@ -888,11 +867,14 @@ int calendar_spec_from_string(const char *p, CalendarSpec **spec) {
         assert(p);
         assert(spec);
 
-        c = new0(CalendarSpec, 1);
+        c = new(CalendarSpec, 1);
         if (!c)
                 return -ENOMEM;
-        c->dst = -1;
-        c->timezone = NULL;
+
+        *c = (CalendarSpec) {
+                .dst = -1,
+                .timezone = NULL,
+        };
 
         utc = endswith_no_case(p, " UTC");
         if (utc) {
index bb28bcac2bbf5603648c88619c780f5ecd9f986d..e05fbce30f3b8c108b98ac57ce516b10968942d4 100644 (file)
@@ -21,14 +21,14 @@ shared_sources = files('''
         bootspec.h
         bpf-program.c
         bpf-program.h
+        bus-unit-procs.c
+        bus-unit-procs.h
         bus-unit-util.c
         bus-unit-util.h
         bus-util.c
         bus-util.h
         bus-wait-for-jobs.c
         bus-wait-for-jobs.h
-        bus-unit-procs.c
-        bus-unit-procs.h
         calendarspec.c
         calendarspec.h
         cgroup-show.c
index b9fa33485865f60e9743d74342994b2b3804724a..843c3837d1f45385ccb95a8c15d00c46fc00c180 100644 (file)
@@ -389,15 +389,15 @@ static int write_temporary_passwd(const char *passwd_path, FILE **tmpfile, char
                 while ((r = fgetpwent_sane(original, &pw)) > 0) {
 
                         i = ordered_hashmap_get(users, pw->pw_name);
-                        if (i && i->todo_user) {
-                                log_error("%s: User \"%s\" already exists.", passwd_path, pw->pw_name);
-                                return -EEXIST;
-                        }
+                        if (i && i->todo_user)
+                                return log_error_errno(SYNTHETIC_ERRNO(EEXIST),
+                                                       "%s: User \"%s\" already exists.",
+                                                       passwd_path, pw->pw_name);
 
-                        if (ordered_hashmap_contains(todo_uids, UID_TO_PTR(pw->pw_uid))) {
-                                log_error("%s: Detected collision for UID " UID_FMT ".", passwd_path, pw->pw_uid);
-                                return -EEXIST;
-                        }
+                        if (ordered_hashmap_contains(todo_uids, UID_TO_PTR(pw->pw_uid)))
+                                return log_error_errno(SYNTHETIC_ERRNO(EEXIST),
+                                                       "%s: Detected collision for UID " UID_FMT ".",
+                                                       passwd_path, pw->pw_uid);
 
                         /* Make sure we keep the NIS entries (if any) at the end. */
                         if (IN_SET(pw->pw_name[0], '+', '-'))
@@ -592,15 +592,15 @@ static int write_temporary_group(const char *group_path, FILE **tmpfile, char **
                          * step that we don't generate duplicate entries. */
 
                         i = ordered_hashmap_get(groups, gr->gr_name);
-                        if (i && i->todo_group) {
-                                log_error("%s: Group \"%s\" already exists.", group_path, gr->gr_name);
-                                return -EEXIST;
-                        }
+                        if (i && i->todo_group)
+                                return log_error_errno(SYNTHETIC_ERRNO(EEXIST),
+                                                       "%s: Group \"%s\" already exists.",
+                                                       group_path, gr->gr_name);
 
-                        if (ordered_hashmap_contains(todo_gids, GID_TO_PTR(gr->gr_gid))) {
-                                log_error("%s: Detected collision for GID " GID_FMT ".", group_path, gr->gr_gid);
-                                return  -EEXIST;
-                        }
+                        if (ordered_hashmap_contains(todo_gids, GID_TO_PTR(gr->gr_gid)))
+                                return log_error_errno(SYNTHETIC_ERRNO(EEXIST),
+                                                       "%s: Detected collision for GID " GID_FMT ".",
+                                                       group_path, gr->gr_gid);
 
                         /* Make sure we keep the NIS entries (if any) at the end. */
                         if (IN_SET(gr->gr_name[0], '+', '-'))
@@ -687,10 +687,10 @@ static int write_temporary_gshadow(const char * gshadow_path, FILE **tmpfile, ch
                 while ((r = fgetsgent_sane(original, &sg)) > 0) {
 
                         i = ordered_hashmap_get(groups, sg->sg_namp);
-                        if (i && i->todo_group) {
-                                log_error("%s: Group \"%s\" already exists.", gshadow_path, sg->sg_namp);
-                                return -EEXIST;
-                        }
+                        if (i && i->todo_group)
+                                return log_error_errno(SYNTHETIC_ERRNO(EEXIST),
+                                                       "%s: Group \"%s\" already exists.",
+                                                       gshadow_path, sg->sg_namp);
 
                         r = putsgent_with_members(sg, gshadow);
                         if (r < 0)
@@ -1021,10 +1021,8 @@ static int add_user(Item *i) {
         if (!i->uid_set) {
                 for (;;) {
                         r = uid_range_next_lower(uid_range, n_uid_range, &search_uid);
-                        if (r < 0) {
-                                log_error("No free user ID available for %s.", i->name);
-                                return r;
-                        }
+                        if (r < 0)
+                                return log_error_errno(r, "No free user ID available for %s.", i->name);
 
                         r = uid_is_ok(search_uid, i->name, true);
                         if (r < 0)
@@ -1178,10 +1176,8 @@ static int add_group(Item *i) {
                 for (;;) {
                         /* We look for new GIDs in the UID pool! */
                         r = uid_range_next_lower(uid_range, n_uid_range, &search_uid);
-                        if (r < 0) {
-                                log_error("No free group ID available for %s.", i->name);
-                                return r;
-                        }
+                        if (r < 0)
+                                return log_error_errno(r, "No free group ID available for %s.", i->name);
 
                         r = gid_is_ok(search_uid);
                         if (r < 0)
@@ -1381,7 +1377,7 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) {
                 *id = NULL, *resolved_id = NULL,
                 *description = NULL, *resolved_description = NULL,
                 *home = NULL, *resolved_home = NULL,
-                *shell, *resolved_shell = NULL;
+                *shell = NULL, *resolved_shell = NULL;
         _cleanup_(item_freep) Item *i = NULL;
         Item *existing;
         OrderedHashmap *h;
@@ -1396,135 +1392,121 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) {
         p = buffer;
         r = extract_many_words(&p, NULL, EXTRACT_QUOTES,
                                &action, &name, &id, &description, &home, &shell, NULL);
-        if (r < 0) {
-                log_error("[%s:%u] Syntax error.", fname, line);
-                return r;
-        }
-        if (r < 2) {
-                log_error("[%s:%u] Missing action and name columns.", fname, line);
-                return -EINVAL;
-        }
-        if (!isempty(p)) {
-                log_error("[%s:%u] Trailing garbage.", fname, line);
-                return -EINVAL;
-        }
+        if (r < 0)
+                return log_error_errno(r, "[%s:%u] Syntax error.", fname, line);
+        if (r < 2)
+                return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
+                                       "[%s:%u] Missing action and name columns.", fname, line);
+        if (!isempty(p))
+                return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
+                                       "[%s:%u] Trailing garbage.", fname, line);
 
         /* Verify action */
-        if (strlen(action) != 1) {
-                log_error("[%s:%u] Unknown modifier '%s'", fname, line, action);
-                return -EINVAL;
-        }
+        if (strlen(action) != 1)
+                return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
+                                       "[%s:%u] Unknown modifier '%s'", fname, line, action);
 
-        if (!IN_SET(action[0], ADD_USER, ADD_GROUP, ADD_MEMBER, ADD_RANGE)) {
-                log_error("[%s:%u] Unknown command type '%c'.", fname, line, action[0]);
-                return -EBADMSG;
-        }
+        if (!IN_SET(action[0], ADD_USER, ADD_GROUP, ADD_MEMBER, ADD_RANGE))
+                return log_error_errno(SYNTHETIC_ERRNO(EBADMSG),
+                                       "[%s:%u] Unknown command type '%c'.", fname, line, action[0]);
 
         /* Verify name */
-        if (isempty(name) || streq(name, "-"))
+        if (empty_or_dash(name))
                 name = mfree(name);
 
         if (name) {
                 r = specifier_printf(name, specifier_table, NULL, &resolved_name);
-                if (r < 0) {
-                        log_error("[%s:%u] Failed to replace specifiers: %s", fname, line, name);
-                        return r;
-                }
+                if (r < 0)
+                        log_error_errno(r, "[%s:%u] Failed to replace specifiers: %s", fname, line, name);
 
-                if (!valid_user_group_name(resolved_name)) {
-                        log_error("[%s:%u] '%s' is not a valid user or group name.", fname, line, resolved_name);
-                        return -EINVAL;
-                }
+                if (!valid_user_group_name(resolved_name))
+                        return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
+                                               "[%s:%u] '%s' is not a valid user or group name.",
+                                               fname, line, resolved_name);
         }
 
         /* Verify id */
-        if (isempty(id) || streq(id, "-"))
+        if (empty_or_dash(id))
                 id = mfree(id);
 
         if (id) {
                 r = specifier_printf(id, specifier_table, NULL, &resolved_id);
-                if (r < 0) {
-                        log_error("[%s:%u] Failed to replace specifiers: %s", fname, line, name);
-                        return r;
-                }
+                if (r < 0)
+                        return log_error_errno(r, "[%s:%u] Failed to replace specifiers: %s",
+                                               fname, line, name);
         }
 
         /* Verify description */
-        if (isempty(description) || streq(description, "-"))
+        if (empty_or_dash(description))
                 description = mfree(description);
 
         if (description) {
                 r = specifier_printf(description, specifier_table, NULL, &resolved_description);
-                if (r < 0) {
-                        log_error("[%s:%u] Failed to replace specifiers: %s", fname, line, description);
-                        return r;
-                }
+                if (r < 0)
+                        return log_error_errno(r, "[%s:%u] Failed to replace specifiers: %s",
+                                               fname, line, description);
 
-                if (!valid_gecos(resolved_description)) {
-                        log_error("[%s:%u] '%s' is not a valid GECOS field.", fname, line, resolved_description);
-                        return -EINVAL;
-                }
+                if (!valid_gecos(resolved_description))
+                        return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
+                                               "[%s:%u] '%s' is not a valid GECOS field.",
+                                               fname, line, resolved_description);
         }
 
         /* Verify home */
-        if (isempty(home) || streq(home, "-"))
+        if (empty_or_dash(home))
                 home = mfree(home);
 
         if (home) {
                 r = specifier_printf(home, specifier_table, NULL, &resolved_home);
-                if (r < 0) {
-                        log_error("[%s:%u] Failed to replace specifiers: %s", fname, line, home);
-                        return r;
-                }
+                if (r < 0)
+                        return log_error_errno(r, "[%s:%u] Failed to replace specifiers: %s",
+                                               fname, line, home);
 
-                if (!valid_home(resolved_home)) {
-                        log_error("[%s:%u] '%s' is not a valid home directory field.", fname, line, resolved_home);
-                        return -EINVAL;
-                }
+                if (!valid_home(resolved_home))
+                        return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
+                                               "[%s:%u] '%s' is not a valid home directory field.",
+                                               fname, line, resolved_home);
         }
 
         /* Verify shell */
-        if (isempty(shell) || streq(shell, "-"))
+        if (empty_or_dash(shell))
                 shell = mfree(shell);
 
         if (shell) {
                 r = specifier_printf(shell, specifier_table, NULL, &resolved_shell);
-                if (r < 0) {
-                        log_error("[%s:%u] Failed to replace specifiers: %s", fname, line, shell);
-                        return r;
-                }
+                if (r < 0)
+                        return log_error_errno(r, "[%s:%u] Failed to replace specifiers: %s",
+                                               fname, line, shell);
 
-                if (!valid_shell(resolved_shell)) {
-                        log_error("[%s:%u] '%s' is not a valid login shell field.", fname, line, resolved_shell);
-                        return -EINVAL;
-                }
+                if (!valid_shell(resolved_shell))
+                        return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
+                                               "[%s:%u] '%s' is not a valid login shell field.",
+                                               fname, line, resolved_shell);
         }
 
         switch (action[0]) {
 
         case ADD_RANGE:
-                if (resolved_name) {
-                        log_error("[%s:%u] Lines of type 'r' don't take a name field.", fname, line);
-                        return -EINVAL;
-                }
-
-                if (!resolved_id) {
-                        log_error("[%s:%u] Lines of type 'r' require a ID range in the third field.", fname, line);
-                        return -EINVAL;
-                }
-
-                if (description || home || shell) {
-                        log_error("[%s:%u] Lines of type '%c' don't take a %s field.",
-                                  fname, line, action[0],
-                                  description ? "GECOS" : home ? "home directory" : "login shell");
-                        return -EINVAL;
-                }
+                if (resolved_name)
+                        return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
+                                               "[%s:%u] Lines of type 'r' don't take a name field.",
+                                               fname, line);
+
+                if (!resolved_id)
+                        return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
+                                               "[%s:%u] Lines of type 'r' require a ID range in the third field.",
+                                               fname, line);
+
+                if (description || home || shell)
+                        return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
+                                               "[%s:%u] Lines of type '%c' don't take a %s field.",
+                                               fname, line, action[0],
+                                               description ? "GECOS" : home ? "home directory" : "login shell");
 
                 r = uid_range_add_str(&uid_range, &n_uid_range, resolved_id);
-                if (r < 0) {
-                        log_error("[%s:%u] Invalid UID range %s.", fname, line, resolved_id);
-                        return -EINVAL;
-                }
+                if (r < 0)
+                        return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
+                                               "[%s:%u] Invalid UID range %s.", fname, line, resolved_id);
 
                 return 0;
 
@@ -1532,27 +1514,26 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) {
                 char **l;
 
                 /* Try to extend an existing member or group item */
-                if (!name) {
-                        log_error("[%s:%u] Lines of type 'm' require a user name in the second field.", fname, line);
-                        return -EINVAL;
-                }
-
-                if (!resolved_id) {
-                        log_error("[%s:%u] Lines of type 'm' require a group name in the third field.", fname, line);
-                        return -EINVAL;
-                }
-
-                if (!valid_user_group_name(resolved_id)) {
-                        log_error("[%s:%u] '%s' is not a valid user or group name.", fname, line, resolved_id);
-                        return -EINVAL;
-                }
-
-                if (description || home || shell) {
-                        log_error("[%s:%u] Lines of type '%c' don't take a %s field.",
-                                  fname, line, action[0],
-                                  description ? "GECOS" : home ? "home directory" : "login shell");
-                        return -EINVAL;
-                }
+                if (!name)
+                        return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
+                                               "[%s:%u] Lines of type 'm' require a user name in the second field.",
+                                               fname, line);
+
+                if (!resolved_id)
+                        return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
+                                               "[%s:%u] Lines of type 'm' require a group name in the third field.",
+                                               fname, line);
+
+                if (!valid_user_group_name(resolved_id))
+                        return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
+                                               "[%s:%u] '%s' is not a valid user or group name.",
+                                               fname, line, resolved_id);
+
+                if (description || home || shell)
+                        return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
+                                               "[%s:%u] Lines of type '%c' don't take a %s field.",
+                                               fname, line, action[0],
+                                               description ? "GECOS" : home ? "home directory" : "login shell");
 
                 r = ordered_hashmap_ensure_allocated(&members, &members_hash_ops);
                 if (r < 0)
@@ -1591,10 +1572,10 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) {
         }
 
         case ADD_USER:
-                if (!name) {
-                        log_error("[%s:%u] Lines of type 'u' require a user name in the second field.", fname, line);
-                        return -EINVAL;
-                }
+                if (!name)
+                        return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
+                                               "[%s:%u] Lines of type 'u' require a user name in the second field.",
+                                               fname, line);
 
                 r = ordered_hashmap_ensure_allocated(&users, &item_hash_ops);
                 if (r < 0)
@@ -1635,17 +1616,16 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) {
                 break;
 
         case ADD_GROUP:
-                if (!name) {
-                        log_error("[%s:%u] Lines of type 'g' require a user name in the second field.", fname, line);
-                        return -EINVAL;
-                }
+                if (!name)
+                        return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
+                                               "[%s:%u] Lines of type 'g' require a user name in the second field.",
+                                               fname, line);
 
-                if (description || home || shell) {
-                        log_error("[%s:%u] Lines of type '%c' don't take a %s field.",
-                                  fname, line, action[0],
-                                  description ? "GECOS" : home ? "home directory" : "login shell");
-                        return -EINVAL;
-                }
+                if (description || home || shell)
+                        return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
+                                               "[%s:%u] Lines of type '%c' don't take a %s field.",
+                                               fname, line, action[0],
+                                               description ? "GECOS" : home ? "home directory" : "login shell");
 
                 r = ordered_hashmap_ensure_allocated(&groups, &item_hash_ops);
                 if (r < 0)
@@ -1680,7 +1660,6 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) {
 
         existing = ordered_hashmap_get(h, i->name);
         if (existing) {
-
                 /* Two identical items are fine */
                 if (!item_equal(existing, i))
                         log_warning("Two or more conflicting lines for %s configured, ignoring.", i->name);
index 84e104f9b5569a5e8466afa94fb93b51cda3d6dd..d9d1cc1c1a1c6cd3b9da0c3aeadc4ccee680b4c2 100644 (file)
@@ -2507,7 +2507,7 @@ static int parse_line(const char *fname, unsigned line, const char *buffer, bool
                 return -EIO;
         }
 
-        if (!isempty(buffer) && !streq(buffer, "-")) {
+        if (!empty_or_dash(buffer)) {
                 i.argument = strdup(buffer);
                 if (!i.argument)
                         return log_oom();
@@ -2704,7 +2704,7 @@ static int parse_line(const char *fname, unsigned line, const char *buffer, bool
                 free_and_replace(i.path, p);
         }
 
-        if (!isempty(user) && !streq(user, "-")) {
+        if (!empty_or_dash(user)) {
                 const char *u = user;
 
                 r = get_user_creds(&u, &i.uid, NULL, NULL, NULL, USER_CREDS_ALLOW_MISSING);
@@ -2716,7 +2716,7 @@ static int parse_line(const char *fname, unsigned line, const char *buffer, bool
                 i.uid_set = true;
         }
 
-        if (!isempty(group) && !streq(group, "-")) {
+        if (!empty_or_dash(group)) {
                 const char *g = group;
 
                 r = get_group_creds(&g, &i.gid, USER_CREDS_ALLOW_MISSING);
@@ -2729,7 +2729,7 @@ static int parse_line(const char *fname, unsigned line, const char *buffer, bool
                 i.gid_set = true;
         }
 
-        if (!isempty(mode) && !streq(mode, "-")) {
+        if (!empty_or_dash(mode)) {
                 const char *mm = mode;
                 unsigned m;
 
@@ -2749,7 +2749,7 @@ static int parse_line(const char *fname, unsigned line, const char *buffer, bool
         } else
                 i.mode = IN_SET(i.type, CREATE_DIRECTORY, TRUNCATE_DIRECTORY, CREATE_SUBVOLUME, CREATE_SUBVOLUME_INHERIT_QUOTA, CREATE_SUBVOLUME_NEW_QUOTA) ? 0755 : 0644;
 
-        if (!isempty(age) && !streq(age, "-")) {
+        if (!empty_or_dash(age)) {
                 const char *a = age;
 
                 if (*a == '~') {
diff --git a/test/fuzz/fuzz-calendarspec/oss-fuzz-14108 b/test/fuzz/fuzz-calendarspec/oss-fuzz-14108
new file mode 100644 (file)
index 0000000..6899c23
--- /dev/null
@@ -0,0 +1 @@
+@67767992554749550
\ No newline at end of file
index e0756dc755485a6cec450bfaa6ea5a3c2cce7a12..7da3955af6b275f1e2044075b312c939d927cadf 100644 (file)
@@ -52,6 +52,7 @@ Name=
 [WireGuardPeer]
 Endpoint=
 PresharedKey=
+PresharedKeyFile=
 PersistentKeepalive=
 PublicKey=
 AllowedIPs=
diff --git a/test/test-network/conf/25-wireguard-preshared-key.txt b/test/test-network/conf/25-wireguard-preshared-key.txt
new file mode 100644 (file)
index 0000000..021c443
--- /dev/null
@@ -0,0 +1,3 @@
+cPLOy1YUrEI0EM
+  MIycPJmOo0aTu3RZnw8bL5
+        meVD6m0=
index 61afd1f5e79d7e5009ad0ddf1122ca82185e8b62..4866c31ccac68b39837e86561e613631e634d4bd 100644 (file)
@@ -4,7 +4,6 @@ Kind=wireguard
 
 [WireGuard]
 PrivateKey=EEGlnEPYJV//kbvvIqxKkQwOiS+UENyPncC4bF46ong=
-PrivateKeyFile=/run/systemd/network/not-exist
 ListenPort=51820
 FwMark=1234
 
index 7ba692378e2123c81e86b67406c6deb9b86f2732..f559ea68f6c45a17836f4f2f5ae3fa68af878655 100644 (file)
@@ -2,3 +2,4 @@
 PublicKey=lsDtM3AbjxNlauRKzHEPfgS1Zp7cp/VX5Use/P4PQSc=
 AllowedIPs=fdbc:bae2:7871:0500:e1fe:0793:8636:dad1/128
 AllowedIPs=fdbc:bae2:7871:e1fe:0793:8636::/96
+PresharedKeyFile=/run/systemd/network/25-wireguard-preshared-key.txt
index ffc63d0838378318455d33a5f5b36cb6e218600a..b44cfe8d4597b3e533b70534b6c6040d0fd0b355 100755 (executable)
@@ -307,6 +307,7 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities):
         '25-vxlan.netdev',
         '25-wireguard-23-peers.netdev',
         '25-wireguard-23-peers.network',
+        '25-wireguard-preshared-key.txt',
         '25-wireguard-private-key.txt',
         '25-wireguard.netdev',
         '25-wireguard.network',
@@ -528,7 +529,7 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities):
     def test_wireguard(self):
         self.copy_unit_to_networkd_unit_path('25-wireguard.netdev', '25-wireguard.network',
                                              '25-wireguard-23-peers.netdev', '25-wireguard-23-peers.network',
-                                             '25-wireguard-private-key.txt')
+                                             '25-wireguard-preshared-key.txt', '25-wireguard-private-key.txt')
         self.start_networkd(0)
         self.wait_online(['wg99:carrier', 'wg98:routable'])
 
@@ -551,6 +552,9 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities):
             self.assertTrue(output, 'RDf+LSpeEre7YEIKaxg+wbpsNV7du+ktR99uBEtIiCA=\t192.168.27.3:51820')
             output = subprocess.check_output(['wg', 'show', 'wg99', 'private-key']).rstrip().decode('utf-8')
             self.assertTrue(output, 'EEGlnEPYJV//kbvvIqxKkQwOiS+UENyPncC4bF46ong=')
+            output = subprocess.check_output(['wg', 'show', 'wg99', 'preshared-keys']).rstrip().decode('utf-8')
+            self.assertTrue(output, 'RDf+LSpeEre7YEIKaxg+wbpsNV7du+ktR99uBEtIiCA=      IIWIV17wutHv7t4cR6pOT91z6NSz/T8Arh0yaywhw3M=')
+            self.assertTrue(output, 'lsDtM3AbjxNlauRKzHEPfgS1Zp7cp/VX5Use/P4PQSc=      cPLOy1YUrEI0EMMIycPJmOo0aTu3RZnw8bL5meVD6m0=')
 
             output = subprocess.check_output(['wg', 'show', 'wg98', 'private-key']).rstrip().decode('utf-8')
             self.assertTrue(output, 'CJQUtcS9emY2fLYqDlpSZiE/QJyHkPWr+WHtZLZ90FU=')
index a53632cd9db9d66f1eaca1654a74e31df86552e4..a5610506d5182ead4e8a1a67633842db2f9ad0ed 100644 (file)
@@ -104,6 +104,7 @@ units = [
          'sockets.target.wants/'],
         ['systemd-udevd-kernel.socket',         '',
          'sockets.target.wants/'],
+        ['time-set.target',                     ''],
         ['time-sync.target',                    ''],
         ['timers.target',                       ''],
         ['tmp.mount',                           '',
index 6512531e1c5aa3811b5a3c3fb5b79012c19c7302..2d8d14f6de0f5c5670bebc7c90237db798184ccc 100644 (file)
@@ -14,9 +14,9 @@ ConditionCapability=CAP_SYS_TIME
 ConditionVirtualization=!container
 DefaultDependencies=no
 After=systemd-remount-fs.service systemd-sysusers.service
-Before=time-sync.target sysinit.target shutdown.target
+Before=time-set.target sysinit.target shutdown.target
 Conflicts=shutdown.target
-Wants=time-sync.target
+Wants=time-set.target time-sync.target
 
 [Service]
 AmbientCapabilities=CAP_SYS_TIME
index d1025afadb4d34ca16f69b9173e686a61b0722c4..9e2f04bfefdbe358369dc66e34a582f742bd932e 100644 (file)
@@ -12,7 +12,7 @@ Description=Cleanup of Temporary Directories
 Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)
 DefaultDependencies=no
 Conflicts=shutdown.target
-After=local-fs.target time-sync.target
+After=local-fs.target time-set.target
 Before=shutdown.target
 
 [Service]
diff --git a/units/time-set.target b/units/time-set.target
new file mode 100644 (file)
index 0000000..6b40033
--- /dev/null
@@ -0,0 +1,13 @@
+#  SPDX-License-Identifier: LGPL-2.1+
+#
+#  This file is part of systemd.
+#
+#  systemd is free software; you can redistribute it and/or modify it
+#  under the terms of the GNU Lesser General Public License as published by
+#  the Free Software Foundation; either version 2.1 of the License, or
+#  (at your option) any later version.
+
+[Unit]
+Description=System Time Set
+Documentation=man:systemd.special(7)
+RefuseManualStart=yes
index 1533c7c33c9beb720f9176d170bf905d8fa223d9..9106502e8becf12f820e4ac492f06ecd27339a62 100644 (file)
@@ -11,3 +11,5 @@
 Description=System Time Synchronized
 Documentation=man:systemd.special(7)
 RefuseManualStart=yes
+After=time-set.target
+Wants=time-set.target