) 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."
)
}
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.
* 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
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:
--- /dev/null
+@@
+expression s;
+@@
+- (isempty(s) || streq(s, "-"))
++ empty_or_dash(s)
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
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.
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.
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.
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
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
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
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
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
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
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)
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
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.
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.
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
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
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.
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
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.
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
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
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
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
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
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.
OUI:50DF95*
ID_OUI_FROM_DATABASE=Lytx
+OUI:50E085*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
OUI:50E0C7*
ID_OUI_FROM_DATABASE=TurControlSystme AG
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
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
OUI:5C5948*
ID_OUI_FROM_DATABASE=Apple, Inc.
+OUI:5C5AC7*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
OUI:5C5AEA*
ID_OUI_FROM_DATABASE=FORD
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
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.
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.
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
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
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.
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
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
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
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
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.
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
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
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
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
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
OUI:70B3D5462*
ID_OUI_FROM_DATABASE=EarTex
+OUI:70B3D5463*
+ ID_OUI_FROM_DATABASE=WARECUBE,INC
+
OUI:70B3D5465*
ID_OUI_FROM_DATABASE=ENERGISME
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.
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
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.
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
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.
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.
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.
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.
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
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.
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
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
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.
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
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.
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
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.
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
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
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
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.
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.
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
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)
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.
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.
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
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
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
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
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
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.
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
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
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
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
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
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.
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
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
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.
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
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
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
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.
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
---- 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
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
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)
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)
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)
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
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]
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
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
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
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
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
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.
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.
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)
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
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)
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)
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
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*
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)
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)
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
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
#########################################
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
#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
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
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
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
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
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
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
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
#
# 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
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
"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
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>
<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
<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]
[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>
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>
<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>
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>
<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>
<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>
</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>
# 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,
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"
"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."
"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ę"
"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ę."
#include "fd-util.h"
#include "fileio.h"
#include "fs-util.h"
+#include "hexdecoct.h"
#include "log.h"
#include "macro.h"
#include "missing.h"
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)) {
* 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;
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) {
* 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;
*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) {
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;
+}
#include <stdbool.h>
#include <stddef.h>
#include <stdio.h>
+#include <sys/stat.h>
#include <sys/types.h>
#include "macro.h"
} 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);
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);
}
int safe_fgetc(FILE *f, char *ret);
+
+int warn_file_is_world_accessible(const char *filename, struct stat *st, const char *unit, unsigned line);
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);
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;
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 */
*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) {
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);
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;
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);
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);
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)) {
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);
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);
local = l;
}
- if (isempty(local) || streq(local, "-"))
- local = NULL;
+ local = empty_or_dash_to_null(local);
if (local) {
r = tar_strip_suffixes(local, &ll);
local = l;
}
- if (isempty(local) || streq(local, "-"))
- local = NULL;
+ local = empty_or_dash_to_null(local);
if (local) {
r = raw_strip_suffixes(local, &ll);
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;
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;
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 */
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);
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) {
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;
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);
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;
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))
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))
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)) {
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");
}
}
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
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)) {
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)
/* 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);
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,
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);
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);
}
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;
}
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;
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;
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)
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)
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)
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);
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);
local = l;
}
- if (isempty(local) || streq(local, "-"))
- local = NULL;
+ local = empty_or_dash_to_null(local);
if (local) {
r = tar_strip_suffixes(local, &ll);
local = l;
}
- if (isempty(local) || streq(local, "-"))
- local = NULL;
+ local = empty_or_dash_to_null(local);
if (local) {
r = raw_strip_suffixes(local, &ll);
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
free(peer->endpoint_host);
free(peer->endpoint_port);
+ free(peer->preshared_key_file);
+ explicit_bzero_safe(peer->preshared_key, WG_KEY_LEN);
free(peer);
}
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;
}
*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;
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(
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);
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);
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;
assert(data);
w = WIREGUARD(data);
-
assert(w);
r = wireguard_peer_new_static(w, filename, section_line, &peer);
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;
assert(rvalue);
w = WIREGUARD(data);
-
assert(w);
r = wireguard_peer_new_static(w, filename, section_line, &peer);
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;
assert(data);
w = WIREGUARD(data);
-
assert(w);
r = wireguard_peer_new_static(w, filename, section_line, &peer);
Wireguard *w;
assert(netdev);
-
w = WIREGUARD(netdev);
-
assert(w);
w->flags = WGDEVICE_F_REPLACE_PEERS;
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);
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;
"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)
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;
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);
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");
_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");
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;
* linked compenents anyway. */
#define CALENDARSPEC_COMPONENTS_MAX 240
-static void free_chain(CalendarComponent *c) {
+static void chain_free(CalendarComponent *c) {
CalendarComponent *n;
while (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);
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;
}
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;
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;
}
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;
}
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);
}
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);
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;
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) {
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) {
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
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], '+', '-'))
* 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], '+', '-'))
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)
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)
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)
*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;
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;
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)
}
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)
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)
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);
return -EIO;
}
- if (!isempty(buffer) && !streq(buffer, "-")) {
+ if (!empty_or_dash(buffer)) {
i.argument = strdup(buffer);
if (!i.argument)
return log_oom();
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);
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);
i.gid_set = true;
}
- if (!isempty(mode) && !streq(mode, "-")) {
+ if (!empty_or_dash(mode)) {
const char *mm = mode;
unsigned m;
} 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 == '~') {
--- /dev/null
+@67767992554749550
\ No newline at end of file
[WireGuardPeer]
Endpoint=
PresharedKey=
+PresharedKeyFile=
PersistentKeepalive=
PublicKey=
AllowedIPs=
--- /dev/null
+cPLOy1YUrEI0EM
+ MIycPJmOo0aTu3RZnw8bL5
+ meVD6m0=
[WireGuard]
PrivateKey=EEGlnEPYJV//kbvvIqxKkQwOiS+UENyPncC4bF46ong=
-PrivateKeyFile=/run/systemd/network/not-exist
ListenPort=51820
FwMark=1234
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
'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',
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'])
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=')
'sockets.target.wants/'],
['systemd-udevd-kernel.socket', '',
'sockets.target.wants/'],
+ ['time-set.target', ''],
['time-sync.target', ''],
['timers.target', ''],
['tmp.mount', '',
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
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]
--- /dev/null
+# 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
Description=System Time Synchronized
Documentation=man:systemd.special(7)
RefuseManualStart=yes
+After=time-set.target
+Wants=time-set.target