summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--CODING_STYLE7
-rw-r--r--Makefile.am16
-rw-r--r--NEWS15
-rw-r--r--configure.ac6
-rw-r--r--hwdb/20-OUI.hwdb333
-rw-r--r--hwdb/20-bluetooth-vendor-product.hwdb75
-rw-r--r--hwdb/20-pci-classes.hwdb6
-rw-r--r--hwdb/20-pci-vendor-model.hwdb277
-rw-r--r--hwdb/60-evdev.hwdb9
-rw-r--r--hwdb/70-mouse.hwdb13
-rw-r--r--man/systemd-fsck@.service.xml2
-rw-r--r--man/systemd-machine-id-commit.xml2
-rw-r--r--src/basic/bitmap.c16
-rw-r--r--src/basic/copy.c6
-rw-r--r--src/basic/socket-util.c2
-rw-r--r--src/basic/unit-name.c11
-rw-r--r--src/basic/util.c20
-rw-r--r--src/basic/util.h6
-rw-r--r--src/boot/efi/boot.c29
-rw-r--r--src/bus-proxyd/bus-xml-policy.c6
-rw-r--r--src/bus-proxyd/driver.c102
-rw-r--r--src/bus-proxyd/proxy.c13
-rw-r--r--src/bus-proxyd/proxy.h13
-rw-r--r--src/bus-proxyd/synthesize.c19
-rw-r--r--src/core/load-fragment.c8
-rw-r--r--src/core/main.c6
-rw-r--r--src/core/snapshot.c3
-rw-r--r--src/cryptsetup/cryptsetup.c3
-rw-r--r--src/firstboot/firstboot.c32
-rw-r--r--src/gpt-auto-generator/gpt-auto-generator.c15
-rw-r--r--src/import/pull-dkr.c6
-rw-r--r--src/journal/catalog.c3
-rw-r--r--src/journal/coredumpctl.c3
-rw-r--r--src/journal/journalctl.c3
-rw-r--r--src/libsystemd/sd-bus/bus-control.c20
-rw-r--r--src/libsystemd/sd-bus/bus-match.c3
-rw-r--r--src/libsystemd/sd-bus/busctl-introspect.c8
-rw-r--r--src/libsystemd/sd-bus/busctl.c36
-rw-r--r--src/libsystemd/sd-bus/sd-bus.c33
-rw-r--r--src/libsystemd/sd-bus/test-bus-proxy.c17
-rw-r--r--src/libsystemd/sd-netlink/test-local-addresses.c3
-rw-r--r--src/login/loginctl.c8
-rw-r--r--src/login/logind-dbus.c9
-rw-r--r--src/login/logind-session.c6
-rw-r--r--src/network/networkd-link.c7
-rw-r--r--src/nspawn/nspawn.c11
-rw-r--r--src/nss-myhostname/nss-myhostname.c3
-rw-r--r--src/run/run.c8
-rw-r--r--src/shared/conf-parser.c3
-rw-r--r--src/systemctl/systemctl.c3
-rw-r--r--src/sysusers/sysusers.c47
-rw-r--r--src/test/test-af-list.c48
-rw-r--r--src/test/test-arphrd-list.c48
-rw-r--r--src/test/test-bitmap.c20
-rw-r--r--src/test/test-socket-util.c15
-rw-r--r--src/test/test-util.c101
-rw-r--r--src/timesync/timesyncd.c4
-rw-r--r--src/tty-ask-password-agent/tty-ask-password-agent.c3
-rw-r--r--src/udev/udev-builtin-path_id.c12
-rw-r--r--src/udev/udev-rules.c6
61 files changed, 1182 insertions, 388 deletions
diff --git a/.gitignore b/.gitignore
index 9ff6da28d9..64e7da95fe 100644
--- a/.gitignore
+++ b/.gitignore
@@ -137,6 +137,8 @@
/tags
/test-architecture
/test-audit-type
+/test-af-list
+/test-arphrd-list
/test-async
/test-barrier
/test-bitmap
diff --git a/CODING_STYLE b/CODING_STYLE
index dbadfbdb54..a96ddd3598 100644
--- a/CODING_STYLE
+++ b/CODING_STYLE
@@ -314,3 +314,10 @@
are always defined after more global ones. Thus, our local
definitions will never "leak" into the global header files, possibly
altering their effect due to #ifdeffery.
+
+- To implement an endless loop, use "for (;;)" rather than "while
+ (1)". The latter is a bit ugly anyway, since you probably really
+ meant "while (true)"... To avoid the discussion what the right
+ always-true expression for an infinite while() loop is our
+ recommendation is to simply write it without any such expression by
+ using "for (;;)".
diff --git a/Makefile.am b/Makefile.am
index 4953d8d782..7cfa527f6f 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -43,7 +43,7 @@ LIBUDEV_REVISION=4
LIBUDEV_AGE=6
LIBSYSTEMD_CURRENT=10
-LIBSYSTEMD_REVISION=0
+LIBSYSTEMD_REVISION=1
LIBSYSTEMD_AGE=10
# The following four libraries only exist for compatibility reasons,
@@ -1437,6 +1437,8 @@ tests += \
test-cap-list \
test-sigbus \
test-verbs \
+ test-af-list \
+ test-arphrd-list \
test-dns-domain
EXTRA_DIST += \
@@ -2047,6 +2049,18 @@ test_bus_policy_LDADD = \
libbus-proxy-core.la \
libshared.la
+test_af_list_SOURCES = \
+ src/test/test-af-list.c
+
+test_af_list_LDADD = \
+ libbasic.la
+
+test_arphrd_list_SOURCES = \
+ src/test/test-arphrd-list.c
+
+test_arphrd_list_LDADD = \
+ libbasic.la
+
# ------------------------------------------------------------------------------
## .PHONY so it always rebuilds it
.PHONY: coverage lcov-run lcov-report coverage-sync
diff --git a/NEWS b/NEWS
index aebadf11da..97dd000d4e 100644
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,20 @@
systemd System and Service Manager
+CHANGES WITH 224:
+
+ * The systemd-efi-boot-generator functionality was merged into
+ systemd-gpt-auto-generator.
+
+ * systemd-networkd now supports Group Policy for vxlan devices. It can
+ be enabled via the new boolean configuration option called
+ 'GroupPolicyExtension='.
+
+ Contributions from: Andreas Kempf, Christian Hesse, Daniel Mack, David
+ Herrmann, Herman Fries, Johannes Nixdorf, Kay Sievers, Lennart
+ Poettering, Peter Hutterer, Susant Sahani, Tom Gundersen
+
+ -- Berlin, 2015-07-31
+
CHANGES WITH 223:
* The python-systemd code has been removed from the systemd repository.
diff --git a/configure.ac b/configure.ac
index a16ca6396b..f1ce9ff300 100644
--- a/configure.ac
+++ b/configure.ac
@@ -20,7 +20,7 @@
AC_PREREQ([2.64])
AC_INIT([systemd],
- [223],
+ [224],
[http://github.com/systemd/systemd/issues],
[systemd],
[http://www.freedesktop.org/wiki/Software/systemd])
@@ -1151,10 +1151,10 @@ AS_IF([test "x$enable_gnuefi" != "xno"], [
have_efi_lds=no
AC_ARG_WITH(efi-ldsdir,
AS_HELP_STRING([--with-efi-ldsdir=PATH], [Path to EFI lds directory]),
- [EFI_LDS_DIR="$withval" && AC_CHECK_FILE([${EFI_LDS_DIR}/elf_${EFI_ARCH}_efi.lds],
+ [EFI_LDS_DIR="$withval" && AS_IF([test -f "${EFI_LDS_DIR}/elf_${EFI_ARCH}_efi.lds"],
[have_efi_lds=yes])],
[AS_FOR([DIR], [EFI_LDS_DIR], ["${EFI_LIB_DIR}/gnuefi" "${EFI_LIB_DIR}"],
- [AC_CHECK_FILE([${EFI_LDS_DIR}/elf_${EFI_ARCH}_efi.lds],
+ [AS_IF([test -f "${EFI_LDS_DIR}/elf_${EFI_ARCH}_efi.lds"],
[have_efi_lds=yes && break])])])
AS_IF([test "x$have_efi_lds" = xyes],
[AC_SUBST([EFI_LDS_DIR])],
diff --git a/hwdb/20-OUI.hwdb b/hwdb/20-OUI.hwdb
index cbf70da880..eb34e3efcc 100644
--- a/hwdb/20-OUI.hwdb
+++ b/hwdb/20-OUI.hwdb
@@ -23990,7 +23990,7 @@ OUI:000D96*
ID_OUI_FROM_DATABASE=Vtera Technology Inc.
OUI:000D97*
- ID_OUI_FROM_DATABASE=Tropos Networks, Inc.
+ ID_OUI_FROM_DATABASE=ABB Inc./Tropos
OUI:000D98*
ID_OUI_FROM_DATABASE=S.W.A.C. Schmitt-Walter Automation Consult GmbH
@@ -38138,7 +38138,7 @@ OUI:00200E*
ID_OUI_FROM_DATABASE=SATELLITE TECHNOLOGY MGMT, INC
OUI:00200F*
- ID_OUI_FROM_DATABASE=TANBAC CO., LTD.
+ ID_OUI_FROM_DATABASE=EBRAINS Inc
OUI:002010*
ID_OUI_FROM_DATABASE=JEOL SYSTEM TECHNOLOGY CO. LTD
@@ -40385,7 +40385,7 @@ OUI:0022FE*
ID_OUI_FROM_DATABASE=Advanced Illumination
OUI:0022FF*
- ID_OUI_FROM_DATABASE=iWDL Technologies
+ ID_OUI_FROM_DATABASE=NIVIS LLC
OUI:002300*
ID_OUI_FROM_DATABASE=Cayee Computer Ltd.
@@ -45856,6 +45856,9 @@ OUI:005218*
OUI:0054AF*
ID_OUI_FROM_DATABASE=Continental Automotive Systems Inc.
+OUI:0055DA*
+ ID_OUI_FROM_DATABASE=IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.
+
OUI:005907*
ID_OUI_FROM_DATABASE=LenovoEMC Products USA, LLC
@@ -46657,6 +46660,9 @@ OUI:006B9E*
OUI:006BA0*
ID_OUI_FROM_DATABASE=SHENZHEN UNIVERSAL INTELLISYS PTE LTD
+OUI:006D52*
+ ID_OUI_FROM_DATABASE=Apple
+
OUI:006DFB*
ID_OUI_FROM_DATABASE=Vutrix (UK) Ltd
@@ -51862,6 +51868,9 @@ OUI:045FA7*
OUI:046169*
ID_OUI_FROM_DATABASE=MEDIA GLOBAL LINKS CO., LTD.
+OUI:046273*
+ ID_OUI_FROM_DATABASE=Cisco Systems
+
OUI:0462D7*
ID_OUI_FROM_DATABASE=ALSTOM HYDRO FRANCE
@@ -51874,6 +51883,9 @@ OUI:046785*
OUI:0469F8*
ID_OUI_FROM_DATABASE=Apple
+OUI:046C9D*
+ ID_OUI_FROM_DATABASE=Cisco Systems
+
OUI:046D42*
ID_OUI_FROM_DATABASE=Bryston Ltd.
@@ -52534,6 +52546,9 @@ OUI:0808EA*
OUI:0809B6*
ID_OUI_FROM_DATABASE=Masimo Corp
+OUI:080A4E*
+ ID_OUI_FROM_DATABASE=Planet Bingo® — 3rd Rock Gaming®
+
OUI:080C0B*
ID_OUI_FROM_DATABASE=SysMik GmbH Dresden
@@ -52640,7 +52655,7 @@ OUI:084027*
ID_OUI_FROM_DATABASE=Gridstore Inc.
OUI:084656*
- ID_OUI_FROM_DATABASE=VODALYS Ingénierie
+ ID_OUI_FROM_DATABASE=VEO-LABS
OUI:08482C*
ID_OUI_FROM_DATABASE=Raycore Taiwan Co., LTD.
@@ -52735,6 +52750,9 @@ OUI:0881F4*
OUI:08863B*
ID_OUI_FROM_DATABASE=Belkin International, Inc.
+OUI:088C2C*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
OUI:088DC8*
ID_OUI_FROM_DATABASE=Ryowa Electronics Co.,Ltd
@@ -52927,6 +52945,9 @@ OUI:0C17F1*
OUI:0C191F*
ID_OUI_FROM_DATABASE=Inform Electronik
+OUI:0C1A10*
+ ID_OUI_FROM_DATABASE=Acoustic Stream
+
OUI:0C1DAF*
ID_OUI_FROM_DATABASE=Beijing Xiaomi communications co.,ltd
@@ -52996,6 +53017,9 @@ OUI:0C51F7*
OUI:0C54A5*
ID_OUI_FROM_DATABASE=PEGATRON CORPORATION
+OUI:0C54B9*
+ ID_OUI_FROM_DATABASE=Alcatel-Lucent
+
OUI:0C5521*
ID_OUI_FROM_DATABASE=Axiros GmbH
@@ -53065,6 +53089,9 @@ OUI:0C84DC*
OUI:0C8525*
ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
+OUI:0C8610*
+ ID_OUI_FROM_DATABASE=Juniper networks
+
OUI:0C8910*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,LTD
@@ -54556,6 +54583,9 @@ OUI:1C5C60*
OUI:1C5FFF*
ID_OUI_FROM_DATABASE=Beijing Ereneben Information Technology Co.,Ltd Shenzhen Branch
+OUI:1C60DE*
+ ID_OUI_FROM_DATABASE=SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.
+
OUI:1C62B8*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
@@ -55222,6 +55252,9 @@ OUI:242642*
OUI:242FFA*
ID_OUI_FROM_DATABASE=Toshiba Global Commerce Solutions
+OUI:243184*
+ ID_OUI_FROM_DATABASE=SHARP Corporation
+
OUI:24374C*
ID_OUI_FROM_DATABASE=Cisco SPVTG
@@ -55426,6 +55459,9 @@ OUI:24D2CC*
OUI:24D921*
ID_OUI_FROM_DATABASE=Avaya, Inc
+OUI:24DA9B*
+ ID_OUI_FROM_DATABASE=Motorola Mobility LLC, a Lenovo Company
+
OUI:24DAB6*
ID_OUI_FROM_DATABASE=Sistemas de Gestión Energética S.A. de C.V
@@ -55501,6 +55537,9 @@ OUI:280CB8*
OUI:280DFC*
ID_OUI_FROM_DATABASE=Sony Computer Entertainment Inc.
+OUI:280E8B*
+ ID_OUI_FROM_DATABASE=Beijing Spirit Technology Development Co., Ltd.
+
OUI:28107B*
ID_OUI_FROM_DATABASE=D-Link International
@@ -55906,6 +55945,9 @@ OUI:2C1984*
OUI:2C1A31*
ID_OUI_FROM_DATABASE=Electronics Company Limited
+OUI:2C1BC8*
+ ID_OUI_FROM_DATABASE=Hunan Topview Network System CO.,LTD
+
OUI:2C1EEA*
ID_OUI_FROM_DATABASE=AERODEV
@@ -56020,6 +56062,9 @@ OUI:2C5A05*
OUI:2C5AA3*
ID_OUI_FROM_DATABASE=PROMATE ELECTRONIC CO.LTD
+OUI:2C5BB8*
+ ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD.
+
OUI:2C5BE1*
ID_OUI_FROM_DATABASE=Centripetal Networks, Inc
@@ -56134,6 +56179,9 @@ OUI:2CABA4*
OUI:2CAD13*
ID_OUI_FROM_DATABASE=SHENZHEN ZHILU TECHNOLOGY CO.,LTD
+OUI:2CAE2B*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
OUI:2CB05D*
ID_OUI_FROM_DATABASE=NETGEAR
@@ -56368,6 +56416,9 @@ OUI:30595B*
OUI:3059B7*
ID_OUI_FROM_DATABASE=Microsoft
+OUI:305A3A*
+ ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
+
OUI:305D38*
ID_OUI_FROM_DATABASE=Beissbarth
@@ -56657,7 +56708,7 @@ OUI:3438AF*
ID_OUI_FROM_DATABASE=Inlab Software GmbH
OUI:343D98*
- ID_OUI_FROM_DATABASE=Fujian JinQianMao Electronic Technology Co.,Ltd.
+ ID_OUI_FROM_DATABASE=JinQianMao Technology Co.,Ltd.
OUI:3440B5*
ID_OUI_FROM_DATABASE=IBM
@@ -57052,6 +57103,12 @@ OUI:381C23*
OUI:381C4A*
ID_OUI_FROM_DATABASE=SIMCom Wireless Solutions Co.,Ltd.
+OUI:382056*
+ ID_OUI_FROM_DATABASE=Cisco Systems
+
+OUI:382187*
+ ID_OUI_FROM_DATABASE=Midea Group Co., Ltd.
+
OUI:38229D*
ID_OUI_FROM_DATABASE=Pirelli Tyre S.p.A.
@@ -57178,6 +57235,9 @@ OUI:388AB7*
OUI:388EE7*
ID_OUI_FROM_DATABASE=Fanhattan LLC
+OUI:3891D5*
+ ID_OUI_FROM_DATABASE=Hangzhou H3C Technologies Co., Limited
+
OUI:3891FB*
ID_OUI_FROM_DATABASE=Xenox Holding BV
@@ -57310,6 +57370,9 @@ OUI:38F098*
OUI:38F33F*
ID_OUI_FROM_DATABASE=TATSUNO CORPORATION
+OUI:38F557*
+ ID_OUI_FROM_DATABASE=JOLATA, INC.
+
OUI:38F597*
ID_OUI_FROM_DATABASE=home2net GmbH
@@ -57328,6 +57391,9 @@ OUI:38FACA*
OUI:38FEC5*
ID_OUI_FROM_DATABASE=Ellips B.V.
+OUI:38FF36*
+ ID_OUI_FROM_DATABASE=Ruckus Wireless
+
OUI:3C02B1*
ID_OUI_FROM_DATABASE=Creation Technologies LP
@@ -57565,6 +57631,9 @@ OUI:3C8BFE*
OUI:3C8C40*
ID_OUI_FROM_DATABASE=Hangzhou H3C Technologies Co., Limited
+OUI:3C8CF8*
+ ID_OUI_FROM_DATABASE=TRENDnet, Inc.
+
OUI:3C912B*
ID_OUI_FROM_DATABASE=Vexata Inc
@@ -57628,12 +57697,18 @@ OUI:3CB15B*
OUI:3CB17F*
ID_OUI_FROM_DATABASE=Wattwatchers Pty Ld
+OUI:3CB72B*
+ ID_OUI_FROM_DATABASE=PLUMgrid Inc
+
OUI:3CB792*
ID_OUI_FROM_DATABASE=Hitachi Maxell, Ltd., Optronics Division
OUI:3CB9A6*
ID_OUI_FROM_DATABASE=Belden Deutschland GmbH
+OUI:3CBBFD*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
OUI:3CBDD8*
ID_OUI_FROM_DATABASE=LG ELECTRONICS INC
@@ -57865,6 +57940,9 @@ OUI:40516C*
OUI:40520D*
ID_OUI_FROM_DATABASE=Pico Technology
+OUI:4054E4*
+ ID_OUI_FROM_DATABASE=Wearsafe Labs Inc
+
OUI:405539*
ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
@@ -57946,6 +58024,9 @@ OUI:4083DE*
OUI:408493*
ID_OUI_FROM_DATABASE=Clavister AB
+OUI:40862E*
+ ID_OUI_FROM_DATABASE=JDM MOBILE INTERNET SOLUTION CO., LTD.
+
OUI:4088E0*
ID_OUI_FROM_DATABASE=Beijing Ereneben Information Technology Limited Shenzhen Branch
@@ -58663,6 +58744,9 @@ OUI:489153*
OUI:4891F6*
ID_OUI_FROM_DATABASE=Shenzhen Reach software technology CO.,LTD
+OUI:489A42*
+ ID_OUI_FROM_DATABASE=Technomate Ltd
+
OUI:489BE2*
ID_OUI_FROM_DATABASE=SCI Innovations Ltd
@@ -58708,6 +58792,9 @@ OUI:48B9C2*
OUI:48BE2D*
ID_OUI_FROM_DATABASE=Symanitron
+OUI:48BF74*
+ ID_OUI_FROM_DATABASE=Baicells Technologies Co.,LTD
+
OUI:48C093*
ID_OUI_FROM_DATABASE=Xirrus, Inc.
@@ -58970,7 +59057,7 @@ OUI:4C73A5*
ID_OUI_FROM_DATABASE=KOVE
OUI:4C7403*
- ID_OUI_FROM_DATABASE=Mundo Reader (bq)
+ ID_OUI_FROM_DATABASE=BQ
OUI:4C7625*
ID_OUI_FROM_DATABASE=Dell Inc.
@@ -59452,6 +59539,9 @@ OUI:50C58D*
OUI:50C7BF*
ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
+OUI:50C8E5*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
OUI:50C971*
ID_OUI_FROM_DATABASE=GN Netcom A/S
@@ -59461,6 +59551,9 @@ OUI:50C9A0*
OUI:50CCF8*
ID_OUI_FROM_DATABASE=Samsung Electro Mechanics
+OUI:50CD22*
+ ID_OUI_FROM_DATABASE=Avaya, Inc
+
OUI:50CD32*
ID_OUI_FROM_DATABASE=NanJing Chaoran Science & Technology Co.,Ltd.
@@ -59632,6 +59725,9 @@ OUI:544A05*
OUI:544A16*
ID_OUI_FROM_DATABASE=Texas Instruments
+OUI:544B8C*
+ ID_OUI_FROM_DATABASE=juniper networks
+
OUI:544E90*
ID_OUI_FROM_DATABASE=Apple
@@ -59764,6 +59860,9 @@ OUI:54A619*
OUI:54A9D4*
ID_OUI_FROM_DATABASE=Minibar Systems
+OUI:54AB3A*
+ ID_OUI_FROM_DATABASE=QUANTA COMPUTER INC.
+
OUI:54AE27*
ID_OUI_FROM_DATABASE=Apple
@@ -59932,6 +60031,9 @@ OUI:58238C*
OUI:582AF7*
ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
+OUI:582BDB*
+ ID_OUI_FROM_DATABASE=Pax AB
+
OUI:582EFE*
ID_OUI_FROM_DATABASE=Lighting Science Group
@@ -59953,6 +60055,9 @@ OUI:583F54*
OUI:5842E4*
ID_OUI_FROM_DATABASE=Sigma International General Medical Apparatus, LLC.
+OUI:584498*
+ ID_OUI_FROM_DATABASE=XIAOMI INC
+
OUI:58468F*
ID_OUI_FROM_DATABASE=Koncar Electronics and Informatics
@@ -60022,6 +60127,9 @@ OUI:58671A*
OUI:58677F*
ID_OUI_FROM_DATABASE=Clare Controls Inc.
+OUI:58685D*
+ ID_OUI_FROM_DATABASE=Tempo Australia Pty Ltd
+
OUI:58696C*
ID_OUI_FROM_DATABASE=Fujian Ruijie Networks co, ltd
@@ -60055,6 +60163,9 @@ OUI:587BE9*
OUI:587E61*
ID_OUI_FROM_DATABASE=Hisense Electric Co., Ltd
+OUI:587F57*
+ ID_OUI_FROM_DATABASE=Apple
+
OUI:587F66*
ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
@@ -60208,6 +60319,9 @@ OUI:58F387*
OUI:58F39C*
ID_OUI_FROM_DATABASE=Cisco
+OUI:58F496*
+ ID_OUI_FROM_DATABASE=Source Chain
+
OUI:58F67B*
ID_OUI_FROM_DATABASE=Xia Men UnionCore Technology LTD.
@@ -60217,6 +60331,9 @@ OUI:58F6BF*
OUI:58F98E*
ID_OUI_FROM_DATABASE=SECUDOS GmbH
+OUI:58FC73*
+ ID_OUI_FROM_DATABASE=Arria Live Media, Inc.
+
OUI:58FCDB*
ID_OUI_FROM_DATABASE=IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.
@@ -60331,6 +60448,9 @@ OUI:5C43D2*
OUI:5C4527*
ID_OUI_FROM_DATABASE=Juniper Networks
+OUI:5C4979*
+ ID_OUI_FROM_DATABASE=AVM Audiovisuelles Marketing und Computersysteme GmbH
+
OUI:5C4A26*
ID_OUI_FROM_DATABASE=Enguity Technology Corp
@@ -60454,6 +60574,9 @@ OUI:5CAAFD*
OUI:5CAC4C*
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+OUI:5CADCF*
+ ID_OUI_FROM_DATABASE=Apple
+
OUI:5CB395*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
@@ -61049,7 +61172,7 @@ OUI:6416F0*
ID_OUI_FROM_DATABASE=Shehzhen Huawei Communication Technologies Co., Ltd.
OUI:641A22*
- ID_OUI_FROM_DATABASE=Heliospectra/Woodhill Investments
+ ID_OUI_FROM_DATABASE=Heliospectra AB
OUI:641C67*
ID_OUI_FROM_DATABASE=DIGIBRAS INDUSTRIA DO BRASILS/A
@@ -61684,6 +61807,9 @@ OUI:68A3C4*
OUI:68A40E*
ID_OUI_FROM_DATABASE=BSH Bosch and Siemens Home Appliances GmbH
+OUI:68A828*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:68A86D*
ID_OUI_FROM_DATABASE=Apple
@@ -62008,6 +62134,9 @@ OUI:6C90B1*
OUI:6C92BF*
ID_OUI_FROM_DATABASE=Inspur Electronic Information Industry Co.,Ltd.
+OUI:6C9354*
+ ID_OUI_FROM_DATABASE=Yaojin Technology (Shenzhen) Co., LTD.
+
OUI:6C94F8*
ID_OUI_FROM_DATABASE=Apple
@@ -62290,6 +62419,9 @@ OUI:7041B7*
OUI:704642*
ID_OUI_FROM_DATABASE=CHYNG HONG ELECTRONIC CO., LTD.
+OUI:70480F*
+ ID_OUI_FROM_DATABASE=Apple
+
OUI:704AAE*
ID_OUI_FROM_DATABASE=Xstream Flow (Pty) Ltd
@@ -62614,6 +62746,9 @@ OUI:741489*
OUI:7415E2*
ID_OUI_FROM_DATABASE=Tri-Sen Systems Corporation
+OUI:741865*
+ ID_OUI_FROM_DATABASE=Shanghai DareGlobal Technologies Co.,Ltd
+
OUI:7419F8*
ID_OUI_FROM_DATABASE=IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.
@@ -62719,6 +62854,9 @@ OUI:7465D1*
OUI:746630*
ID_OUI_FROM_DATABASE=T:mi Ytti
+OUI:7467F7*
+ ID_OUI_FROM_DATABASE=Zebra Technologoes
+
OUI:746A3A*
ID_OUI_FROM_DATABASE=Aperi Corporation
@@ -62731,6 +62869,9 @@ OUI:746A8F*
OUI:746B82*
ID_OUI_FROM_DATABASE=MOVEK
+OUI:746F19*
+ ID_OUI_FROM_DATABASE=ICARVISIONS (SHENZHEN) TECHNOLOGY CO., LTD.
+
OUI:746F3D*
ID_OUI_FROM_DATABASE=Contec GmbH
@@ -62846,7 +62987,7 @@ OUI:74B00C*
ID_OUI_FROM_DATABASE=Network Video Technologies, Inc
OUI:74B9EB*
- ID_OUI_FROM_DATABASE=Fujian JinQianMao Electronic Technology Co.,Ltd
+ ID_OUI_FROM_DATABASE=JinQianMao Technology Co.,Ltd.
OUI:74BADB*
ID_OUI_FROM_DATABASE=Longconn Electornics(shenzhen)Co.,Ltd
@@ -63343,6 +63484,9 @@ OUI:78D5B5*
OUI:78D66F*
ID_OUI_FROM_DATABASE=Aristocrat Technologies Australia Pty. Ltd.
+OUI:78D6B2*
+ ID_OUI_FROM_DATABASE=Toshiba
+
OUI:78D6F0*
ID_OUI_FROM_DATABASE=Samsung Electro Mechanics
@@ -63433,6 +63577,9 @@ OUI:78FF57*
OUI:7C0187*
ID_OUI_FROM_DATABASE=Curtis Instruments, Inc.
+OUI:7C0191*
+ ID_OUI_FROM_DATABASE=Apple
+
OUI:7C02BC*
ID_OUI_FROM_DATABASE=Hansung Electronics Co. LTD
@@ -63616,6 +63763,9 @@ OUI:7C6FF8*
OUI:7C70BC*
ID_OUI_FROM_DATABASE=IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.
+OUI:7C7176*
+ ID_OUI_FROM_DATABASE=Wuxi iData Technology Company Ltd.
+
OUI:7C72E4*
ID_OUI_FROM_DATABASE=Unikey Technologies
@@ -64138,6 +64288,9 @@ OUI:80B32A*
OUI:80B686*
ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
+OUI:80B709*
+ ID_OUI_FROM_DATABASE=Viptela, Inc
+
OUI:80B95C*
ID_OUI_FROM_DATABASE=ELFTECH Co., Ltd.
@@ -64192,6 +64345,9 @@ OUI:80D21D*
OUI:80D433*
ID_OUI_FROM_DATABASE=LzLabs GmbH
+OUI:80D605*
+ ID_OUI_FROM_DATABASE=Apple
+
OUI:80D733*
ID_OUI_FROM_DATABASE=QSR Automations, Inc.
@@ -64261,6 +64417,9 @@ OUI:840B2D*
OUI:840F45*
ID_OUI_FROM_DATABASE=Shanghai GMT Digital Technologies Co., Ltd
+OUI:84100D*
+ ID_OUI_FROM_DATABASE=Motorola Mobility LLC, a Lenovo Company
+
OUI:84119E*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
@@ -64559,7 +64718,7 @@ OUI:84C7A9*
ID_OUI_FROM_DATABASE=C3PO S.A.
OUI:84C8B1*
- ID_OUI_FROM_DATABASE=Incognito Software Inc.
+ ID_OUI_FROM_DATABASE=Incognito Software Systems Inc.
OUI:84C9B2*
ID_OUI_FROM_DATABASE=D-Link International
@@ -64573,6 +64732,9 @@ OUI:84D32A*
OUI:84D4C8*
ID_OUI_FROM_DATABASE=Widex A/S
+OUI:84D6D0*
+ ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
+
OUI:84D9C8*
ID_OUI_FROM_DATABASE=Unipattern Co.,
@@ -64642,6 +64804,9 @@ OUI:880355*
OUI:880905*
ID_OUI_FROM_DATABASE=MTMCommunications
+OUI:8809AF*
+ ID_OUI_FROM_DATABASE=Masimo Corp.
+
OUI:880F10*
ID_OUI_FROM_DATABASE=Huami Information Technology Co.,Ltd.
@@ -65197,6 +65362,9 @@ OUI:8C9236*
OUI:8C94CF*
ID_OUI_FROM_DATABASE=Encell Technology, Inc.
+OUI:8C99E6*
+ ID_OUI_FROM_DATABASE=TCT Mobile Limited
+
OUI:8CA048*
ID_OUI_FROM_DATABASE=Beijing NeTopChip Technology Co.,LTD
@@ -65287,6 +65455,9 @@ OUI:8CDF9D*
OUI:8CE081*
ID_OUI_FROM_DATABASE=zte corporation
+OUI:8CE2DA*
+ ID_OUI_FROM_DATABASE=Circle Media Inc
+
OUI:8CE78C*
ID_OUI_FROM_DATABASE=DK Networks
@@ -65575,6 +65746,9 @@ OUI:908D1D*
OUI:908D6C*
ID_OUI_FROM_DATABASE=Apple
+OUI:908D78*
+ ID_OUI_FROM_DATABASE=D-Link International
+
OUI:908FCF*
ID_OUI_FROM_DATABASE=UNO System Co., Ltd
@@ -65659,6 +65833,9 @@ OUI:90C682*
OUI:90C792*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+OUI:90C99B*
+ ID_OUI_FROM_DATABASE=Recore Systems
+
OUI:90CC24*
ID_OUI_FROM_DATABASE=Synaptics, Inc
@@ -65965,6 +66142,9 @@ OUI:94AE61*
OUI:94AEE3*
ID_OUI_FROM_DATABASE=Belden Hirschmann Industries (Suzhou) Ltd.
+OUI:94B10A*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
OUI:94B40F*
ID_OUI_FROM_DATABASE=Aruba Networks
@@ -66298,6 +66478,9 @@ OUI:988389*
OUI:9886B1*
ID_OUI_FROM_DATABASE=Flyaudio corporation (China)
+OUI:988744*
+ ID_OUI_FROM_DATABASE=Wuxi Hongda Science and Technology Co.,LTD
+
OUI:9889ED*
ID_OUI_FROM_DATABASE=Anadem Information Inc.
@@ -66391,6 +66574,9 @@ OUI:98E165*
OUI:98E79A*
ID_OUI_FROM_DATABASE=Foxconn(NanJing) Communication Co.,Ltd.
+OUI:98E848*
+ ID_OUI_FROM_DATABASE=Axiim
+
OUI:98EC65*
ID_OUI_FROM_DATABASE=Cosesy ApS
@@ -66901,6 +67087,9 @@ OUI:A03A75*
OUI:A03B1B*
ID_OUI_FROM_DATABASE=Inspire Tech
+OUI:A03E6B*
+ ID_OUI_FROM_DATABASE=IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.
+
OUI:A04025*
ID_OUI_FROM_DATABASE=Actioncable, Inc.
@@ -67219,6 +67408,9 @@ OUI:A0F849*
OUI:A0F895*
ID_OUI_FROM_DATABASE=Tinno Mobile Technology Corp
+OUI:A0F9E0*
+ ID_OUI_FROM_DATABASE=VIVATEL COMPANY LIMITED
+
OUI:A0FC6E*
ID_OUI_FROM_DATABASE=Telegrafia a.s.
@@ -67420,6 +67612,9 @@ OUI:A47E39*
OUI:A481EE*
ID_OUI_FROM_DATABASE=Nokia Corporation
+OUI:A48431*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
OUI:A4856B*
ID_OUI_FROM_DATABASE=Q Electronics Ltd
@@ -67507,6 +67702,9 @@ OUI:A4B2A7*
OUI:A4B36A*
ID_OUI_FROM_DATABASE=JSC SDO Chromatec
+OUI:A4B805*
+ ID_OUI_FROM_DATABASE=Apple
+
OUI:A4B818*
ID_OUI_FROM_DATABASE=PENTA Gesellschaft für elektronische Industriedatenverarbeitung mbH
@@ -67543,6 +67741,9 @@ OUI:A4C494*
OUI:A4C7DE*
ID_OUI_FROM_DATABASE=Cambridge Industries(Group) Co.,Ltd.
+OUI:A4CC32*
+ ID_OUI_FROM_DATABASE=Inficomm Co., Ltd
+
OUI:A4D094*
ID_OUI_FROM_DATABASE=Erwin Peters Systemtechnik GmbH
@@ -68479,6 +68680,9 @@ OUI:B05706*
OUI:B058C4*
ID_OUI_FROM_DATABASE=Broadcast Microwave Services, Inc
+OUI:B05ADA*
+ ID_OUI_FROM_DATABASE=Hewlett Packard
+
OUI:B05B1F*
ID_OUI_FROM_DATABASE=THERMO FISHER SCIENTIFIC S.P.A.
@@ -68941,6 +69145,9 @@ OUI:B4994C*
OUI:B499BA*
ID_OUI_FROM_DATABASE=Hewlett-Packard Company
+OUI:B49D0B*
+ ID_OUI_FROM_DATABASE=BQ
+
OUI:B49DB4*
ID_OUI_FROM_DATABASE=Axion Technologies Inc.
@@ -69094,6 +69301,9 @@ OUI:B8098A*
OUI:B80B9D*
ID_OUI_FROM_DATABASE=ROPEX Industrie-Elektronik GmbH
+OUI:B813E9*
+ ID_OUI_FROM_DATABASE=Trace Live Network
+
OUI:B81413*
ID_OUI_FROM_DATABASE=Keen High Holding(HK) Ltd.
@@ -69586,6 +69796,9 @@ OUI:BC305B*
OUI:BC307D*
ID_OUI_FROM_DATABASE=Wistron Neweb Corp.
+OUI:BC307E*
+ ID_OUI_FROM_DATABASE=Wistron Neweb Corp
+
OUI:BC3400*
ID_OUI_FROM_DATABASE=IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.
@@ -69685,6 +69898,9 @@ OUI:BC6A2F*
OUI:BC6B4D*
ID_OUI_FROM_DATABASE=Alcatel-Lucent
+OUI:BC6C21*
+ ID_OUI_FROM_DATABASE=Apple
+
OUI:BC6E64*
ID_OUI_FROM_DATABASE=Sony Mobile Communications AB
@@ -69757,6 +69973,9 @@ OUI:BC9889*
OUI:BC99BC*
ID_OUI_FROM_DATABASE=FonSee Technology Inc.
+OUI:BC9C31*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:BC9CC5*
ID_OUI_FROM_DATABASE=Beijing Huafei Technology Co., Ltd.
@@ -69826,6 +70045,9 @@ OUI:BCCD45*
OUI:BCCFCC*
ID_OUI_FROM_DATABASE=HTC Corporation
+OUI:BCD11F*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
OUI:BCD165*
ID_OUI_FROM_DATABASE=Cisco SPVTG
@@ -70528,6 +70750,9 @@ OUI:C49805*
OUI:C49A02*
ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communicaitons)
+OUI:C49E41*
+ ID_OUI_FROM_DATABASE=G24 Power Limited
+
OUI:C49FF3*
ID_OUI_FROM_DATABASE=Mciao Technologies, Inc.
@@ -70540,6 +70765,9 @@ OUI:C4AAA1*
OUI:C4AD21*
ID_OUI_FROM_DATABASE=MEDIAEDGE Corporation
+OUI:C4ADF1*
+ ID_OUI_FROM_DATABASE=GOPEACE Inc.
+
OUI:C4B512*
ID_OUI_FROM_DATABASE=General Electric Digital Energy
@@ -70549,6 +70777,9 @@ OUI:C4BA99*
OUI:C4BAA3*
ID_OUI_FROM_DATABASE=Beijing Winicssec Technologies Co., Ltd.
+OUI:C4BBEA*
+ ID_OUI_FROM_DATABASE=Pakedge Device and Software Inc
+
OUI:C4BD6A*
ID_OUI_FROM_DATABASE=SKF GmbH
@@ -70618,6 +70849,9 @@ OUI:C4EEAE*
OUI:C4EEF5*
ID_OUI_FROM_DATABASE=Oclaro, Inc.
+OUI:C4EF70*
+ ID_OUI_FROM_DATABASE=Home Skinovations
+
OUI:C4F464*
ID_OUI_FROM_DATABASE=Spica international
@@ -70759,6 +70993,9 @@ OUI:C86000*
OUI:C864C7*
ID_OUI_FROM_DATABASE=zte corporation
+OUI:C869CD*
+ ID_OUI_FROM_DATABASE=Apple
+
OUI:C86C1E*
ID_OUI_FROM_DATABASE=Display Systems Ltd
@@ -70804,6 +71041,9 @@ OUI:C88A83*
OUI:C88B47*
ID_OUI_FROM_DATABASE=Nolangroup S.P.A con Socio Unico
+OUI:C88ED1*
+ ID_OUI_FROM_DATABASE=IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information.
+
OUI:C8903E*
ID_OUI_FROM_DATABASE=Pakton Technologies
@@ -71062,6 +71302,9 @@ OUI:CC1AFA*
OUI:CC1EFF*
ID_OUI_FROM_DATABASE=Metrological Group BV
+OUI:CC20E8*
+ ID_OUI_FROM_DATABASE=Apple
+
OUI:CC2218*
ID_OUI_FROM_DATABASE=InnoDigital Co., Ltd.
@@ -71419,6 +71662,9 @@ OUI:D00EA4*
OUI:D00ED9*
ID_OUI_FROM_DATABASE=TAICANG T AND W ELECTRONICS CO LTD
+OUI:D00F6D*
+ ID_OUI_FROM_DATABASE=T&W Electronics Company
+
OUI:D01242*
ID_OUI_FROM_DATABASE=BIOS Corporation
@@ -71482,6 +71728,9 @@ OUI:D03972*
OUI:D039B3*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+OUI:D03E5C*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:D0431E*
ID_OUI_FROM_DATABASE=Dell Inc.
@@ -71599,6 +71848,9 @@ OUI:D07650*
OUI:D07AB5*
ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
+OUI:D07C2D*
+ ID_OUI_FROM_DATABASE=Leie IOT technology Co., Ltd
+
OUI:D07DE5*
ID_OUI_FROM_DATABASE=Forward Pay Systems, Inc.
@@ -72004,6 +72256,9 @@ OUI:D46E5C*
OUI:D46F42*
ID_OUI_FROM_DATABASE=WAXESS USA Inc
+OUI:D47208*
+ ID_OUI_FROM_DATABASE=Bragi GmbH
+
OUI:D479C3*
ID_OUI_FROM_DATABASE=Cameronet GmbH & Co. KG
@@ -72427,6 +72682,9 @@ OUI:D888CE*
OUI:D88A3B*
ID_OUI_FROM_DATABASE=UNIT-EM
+OUI:D88B4C*
+ ID_OUI_FROM_DATABASE=KingTing Tech.
+
OUI:D88D5C*
ID_OUI_FROM_DATABASE=Elentec
@@ -72529,6 +72787,9 @@ OUI:D8C068*
OUI:D8C3FB*
ID_OUI_FROM_DATABASE=DETRACOM
+OUI:D8C4E9*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
OUI:D8C691*
ID_OUI_FROM_DATABASE=Hichan Technology Corp.
@@ -72787,12 +73048,18 @@ OUI:DC7FA4*
OUI:DC825B*
ID_OUI_FROM_DATABASE=JANUS, spol. s r.o.
+OUI:DC82F6*
+ ID_OUI_FROM_DATABASE=iPort
+
OUI:DC85DE*
ID_OUI_FROM_DATABASE=Azurewave Technologies., inc.
OUI:DC86D8*
ID_OUI_FROM_DATABASE=Apple, Inc
+OUI:DC9A8E*
+ ID_OUI_FROM_DATABASE=Nanjing Cocomm electronics co., LTD
+
OUI:DC9B1E*
ID_OUI_FROM_DATABASE=Intercom, Inc.
@@ -72868,6 +73135,9 @@ OUI:DCCE41*
OUI:DCCEBC*
ID_OUI_FROM_DATABASE=Shenzhen JSR Technology Co.,Ltd.
+OUI:DCCEC1*
+ ID_OUI_FROM_DATABASE=Cisco Systems
+
OUI:DCCF94*
ID_OUI_FROM_DATABASE=Beijing Rongcheng Hutong Technology Co., Ltd.
@@ -72892,6 +73162,9 @@ OUI:DCDA4F*
OUI:DCDB70*
ID_OUI_FROM_DATABASE=Tonfunk Systementwicklung und Service GmbH
+OUI:DCDC07*
+ ID_OUI_FROM_DATABASE=TRP Systems BV
+
OUI:DCDECA*
ID_OUI_FROM_DATABASE=Akyllor
@@ -72916,6 +73189,9 @@ OUI:DCEB94*
OUI:DCEC06*
ID_OUI_FROM_DATABASE=Heimi Network Technology Co., Ltd.
+OUI:DCEF09*
+ ID_OUI_FROM_DATABASE=Netgear
+
OUI:DCF05D*
ID_OUI_FROM_DATABASE=Letta Teknoloji
@@ -73018,6 +73294,9 @@ OUI:E031D0*
OUI:E03560*
ID_OUI_FROM_DATABASE=Challenger Supply Holdings, LLC
+OUI:E03676*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:E036E3*
ID_OUI_FROM_DATABASE=Stage One International Co., Ltd.
@@ -73396,6 +73675,9 @@ OUI:E432CB*
OUI:E43593*
ID_OUI_FROM_DATABASE=Hangzhou GoTo technology Co.Ltd
+OUI:E435C8*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:E435FB*
ID_OUI_FROM_DATABASE=Sabre Technology (Hull) Ltd
@@ -73441,6 +73723,9 @@ OUI:E45614*
OUI:E457A8*
ID_OUI_FROM_DATABASE=Stuart Manufacturing, Inc.
+OUI:E458B8*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
OUI:E458E7*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
@@ -73543,12 +73828,18 @@ OUI:E498D6*
OUI:E4A32F*
ID_OUI_FROM_DATABASE=Shanghai Artimen Technology Co., Ltd.
+OUI:E4A387*
+ ID_OUI_FROM_DATABASE=Control Solutions LLC
+
OUI:E4A5EF*
ID_OUI_FROM_DATABASE=TRON LINK ELECTRONICS CO., LTD.
OUI:E4A7FD*
ID_OUI_FROM_DATABASE=Cellco Partnership
+OUI:E4AA5D*
+ ID_OUI_FROM_DATABASE=Cisco Systems
+
OUI:E4AB46*
ID_OUI_FROM_DATABASE=UAB Selteka
@@ -73696,6 +73987,9 @@ OUI:E81132*
OUI:E81324*
ID_OUI_FROM_DATABASE=GuangZhou Bonsoninfo System CO.,LTD
+OUI:E81363*
+ ID_OUI_FROM_DATABASE=Comstock RD, Inc.
+
OUI:E8150E*
ID_OUI_FROM_DATABASE=Nokia Corporation
@@ -73981,6 +74275,9 @@ OUI:E8DAAA*
OUI:E8DE27*
ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
+OUI:E8DED6*
+ ID_OUI_FROM_DATABASE=Intrising Networks, Inc.
+
OUI:E8DFF2*
ID_OUI_FROM_DATABASE=PRF Co., Ltd.
@@ -74119,6 +74416,9 @@ OUI:EC3091*
OUI:EC3586*
ID_OUI_FROM_DATABASE=Apple
+OUI:EC388F*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:EC3BF0*
ID_OUI_FROM_DATABASE=NovelSat
@@ -74188,6 +74488,9 @@ OUI:EC6264*
OUI:EC63E5*
ID_OUI_FROM_DATABASE=ePBoard Design LLC
+OUI:EC64E7*
+ ID_OUI_FROM_DATABASE=MOCACARE Corporation
+
OUI:EC66D1*
ID_OUI_FROM_DATABASE=B&W Group LTD
@@ -74287,6 +74590,9 @@ OUI:ECBBAE*
OUI:ECBD09*
ID_OUI_FROM_DATABASE=FUSION Electronics Ltd
+OUI:ECBD1D*
+ ID_OUI_FROM_DATABASE=Cisco Systems
+
OUI:ECC38A*
ID_OUI_FROM_DATABASE=Accuenergy (CANADA) Inc
@@ -74875,6 +75181,9 @@ OUI:F43E9D*
OUI:F44227*
ID_OUI_FROM_DATABASE=S & S Research Inc.
+OUI:F4428F*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
OUI:F44450*
ID_OUI_FROM_DATABASE=BND Co., Ltd.
@@ -74890,6 +75199,9 @@ OUI:F4472A*
OUI:F44848*
ID_OUI_FROM_DATABASE=Amscreen Group Ltd
+OUI:F44D30*
+ ID_OUI_FROM_DATABASE=Elitegroup Computer Systems Co.,Ltd.
+
OUI:F44E05*
ID_OUI_FROM_DATABASE=Cisco
@@ -75454,6 +75766,9 @@ OUI:F8C091*
OUI:F8C288*
ID_OUI_FROM_DATABASE=Cisco
+OUI:F8C372*
+ ID_OUI_FROM_DATABASE=TSUZUKI DENKI
+
OUI:F8C397*
ID_OUI_FROM_DATABASE=NZXT Corp. Ltd.
diff --git a/hwdb/20-bluetooth-vendor-product.hwdb b/hwdb/20-bluetooth-vendor-product.hwdb
index dccced77da..35ea5e9e52 100644
--- a/hwdb/20-bluetooth-vendor-product.hwdb
+++ b/hwdb/20-bluetooth-vendor-product.hwdb
@@ -1772,3 +1772,78 @@ bluetooth:v024B*
bluetooth:v024C*
ID_VENDOR_FROM_DATABASE=Blue Clover Devices
+
+bluetooth:v024D*
+ ID_VENDOR_FROM_DATABASE=M-Way Solutions GmbH
+
+bluetooth:v024E*
+ ID_VENDOR_FROM_DATABASE=Microtronics Engineering GmbH
+
+bluetooth:v024F*
+ ID_VENDOR_FROM_DATABASE=Schneider Schreibgerte GmbH
+
+bluetooth:v0250*
+ ID_VENDOR_FROM_DATABASE=Sapphire Circuits LLC
+
+bluetooth:v0251*
+ ID_VENDOR_FROM_DATABASE=Lumo Bodytech Inc.
+
+bluetooth:v0252*
+ ID_VENDOR_FROM_DATABASE=UKC Technosolution
+
+bluetooth:v0253*
+ ID_VENDOR_FROM_DATABASE=Xicato Inc.
+
+bluetooth:v0254*
+ ID_VENDOR_FROM_DATABASE=Playbrush
+
+bluetooth:v0255*
+ ID_VENDOR_FROM_DATABASE=Dai Nippon Printing Co., Ltd.
+
+bluetooth:v0256*
+ ID_VENDOR_FROM_DATABASE=G24 Power Limited
+
+bluetooth:v0257*
+ ID_VENDOR_FROM_DATABASE=AdBabble Local Commerce Inc.
+
+bluetooth:v0258*
+ ID_VENDOR_FROM_DATABASE=Devialet SA
+
+bluetooth:v0259*
+ ID_VENDOR_FROM_DATABASE=ALTYOR
+
+bluetooth:v025A*
+ ID_VENDOR_FROM_DATABASE=University of Applied Sciences Valais/Haute Ecole Valaisanne
+
+bluetooth:v025B*
+ ID_VENDOR_FROM_DATABASE=Five Interactive, LLC dba Zendo
+
+bluetooth:v025C*
+ ID_VENDOR_FROM_DATABASE=NetEase (Hangzhou) Network co.Ltd.
+
+bluetooth:v025D*
+ ID_VENDOR_FROM_DATABASE=Lexmark International Inc.
+
+bluetooth:v025E*
+ ID_VENDOR_FROM_DATABASE=Fluke Corporation
+
+bluetooth:v025F*
+ ID_VENDOR_FROM_DATABASE=Yardarm Technologies
+
+bluetooth:v0260*
+ ID_VENDOR_FROM_DATABASE=SensaRx
+
+bluetooth:v0261*
+ ID_VENDOR_FROM_DATABASE=SECVRE GmbH
+
+bluetooth:v0262*
+ ID_VENDOR_FROM_DATABASE=Glacial Ridge Technologies
+
+bluetooth:v0263*
+ ID_VENDOR_FROM_DATABASE=Identiv, Inc.
+
+bluetooth:v0264*
+ ID_VENDOR_FROM_DATABASE=DDS, Inc.
+
+bluetooth:v0265*
+ ID_VENDOR_FROM_DATABASE=SMK Corporation
diff --git a/hwdb/20-pci-classes.hwdb b/hwdb/20-pci-classes.hwdb
index 5702c40114..3c0c465e5f 100644
--- a/hwdb/20-pci-classes.hwdb
+++ b/hwdb/20-pci-classes.hwdb
@@ -95,6 +95,9 @@ pci:v*d*sv*sd*bc02sc06*
pci:v*d*sv*sd*bc02sc07*
ID_PCI_SUBCLASS_FROM_DATABASE=Infiniband controller
+pci:v*d*sv*sd*bc02sc08*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Fabric controller
+
pci:v*d*sv*sd*bc02sc80*
ID_PCI_SUBCLASS_FROM_DATABASE=Network controller
@@ -554,5 +557,8 @@ pci:v*d*sv*sd*bc12sc00*
pci:v*d*sv*sd*bc13*
ID_PCI_CLASS_FROM_DATABASE=Non-Essential Instrumentation
+pci:v*d*sv*sd*bc40*
+ ID_PCI_CLASS_FROM_DATABASE=Coprocessor
+
pci:v*d*sv*sd*bcFF*
ID_PCI_CLASS_FROM_DATABASE=Unassigned class
diff --git a/hwdb/20-pci-vendor-model.hwdb b/hwdb/20-pci-vendor-model.hwdb
index 8316bc979e..61164acfe5 100644
--- a/hwdb/20-pci-vendor-model.hwdb
+++ b/hwdb/20-pci-vendor-model.hwdb
@@ -1847,6 +1847,9 @@ pci:v00001002d00004151*
pci:v00001002d00004151sv00001043sd0000C004*
ID_MODEL_FROM_DATABASE=RV350 [Radeon 9600 Series] (A9600SE)
+pci:v00001002d00004151sv0000174Bsd00007C37*
+ ID_MODEL_FROM_DATABASE=RV350 [Radeon 9600 Series] (Radeon 9600 SE)
+
pci:v00001002d00004152*
ID_MODEL_FROM_DATABASE=RV360 [Radeon 9600/X1050 Series]
@@ -1934,6 +1937,9 @@ pci:v00001002d00004171*
pci:v00001002d00004171sv00001043sd0000C005*
ID_MODEL_FROM_DATABASE=RV350 [Radeon 9600] (Secondary) (A9600SE (Secondary))
+pci:v00001002d00004171sv0000174Bsd00007C36*
+ ID_MODEL_FROM_DATABASE=RV350 [Radeon 9600] (Secondary) (Radeon 9600 SE (secondary))
+
pci:v00001002d00004172*
ID_MODEL_FROM_DATABASE=RV350 [Radeon 9600/X1050 Series] (Secondary)
@@ -3422,6 +3428,9 @@ pci:v00001002d00005159sv0000148Csd00002003*
pci:v00001002d00005159sv0000148Csd00002023*
ID_MODEL_FROM_DATABASE=RV100 [Radeon 7000 / Radeon VE] (RV100 QY [Radeon 7000 Evil Master Multi-Display])
+pci:v00001002d00005159sv0000148Csd00002081*
+ ID_MODEL_FROM_DATABASE=RV100 [Radeon 7000 / Radeon VE] (RV6DE)
+
pci:v00001002d00005159sv0000174Bsd00000280*
ID_MODEL_FROM_DATABASE=RV100 [Radeon 7000 / Radeon VE] (Radeon RV100 QY [Radeon 7000/VE])
@@ -17060,6 +17069,9 @@ pci:v00001077d00002020*
pci:v00001077d00002031*
ID_MODEL_FROM_DATABASE=ISP8324-based 16Gb Fibre Channel to PCI Express Adapter
+pci:v00001077d00002031sv0000103Csd00008002*
+ ID_MODEL_FROM_DATABASE=ISP8324-based 16Gb Fibre Channel to PCI Express Adapter (3830C 16G Fibre Channel Host Bus Adapter)
+
pci:v00001077d00002100*
ID_MODEL_FROM_DATABASE=QLA2100 64-bit Fibre Channel Adapter
@@ -21335,6 +21347,12 @@ pci:v000010B5d00009656sv00001885sd00000700*
pci:v000010B5d00009656sv00001885sd00000701*
ID_MODEL_FROM_DATABASE=PCI9656 PCI <-> IOBus Bridge (Tsunami FPGA PMC with Altera Stratix S30)
+pci:v000010B5d00009733*
+ ID_MODEL_FROM_DATABASE=PEX 9733 33-lane, 9-port PCI Express Gen 3 (8.0 GT/s) Switch
+
+pci:v000010B5d00009749*
+ ID_MODEL_FROM_DATABASE=PEX 9749 49-lane, 13-port PCI Express Gen 3 (8.0 GT/s) Switch
+
pci:v000010B5d0000A100*
ID_MODEL_FROM_DATABASE=Blackmagic Design DeckLink
@@ -22497,13 +22515,13 @@ pci:v000010CDd00001200*
ID_MODEL_FROM_DATABASE=ASC1200 [(abp940) Fast SCSI-II]
pci:v000010CDd00001300*
- ID_MODEL_FROM_DATABASE=ABP940-U / ABP960-U
+ ID_MODEL_FROM_DATABASE=ASC1300 / ASC3030 [ABP940-U / ABP960-U / ABP3925]
pci:v000010CDd00001300sv000010CDsd00001310*
- ID_MODEL_FROM_DATABASE=ABP940-U / ABP960-U (ASC1300 SCSI Adapter)
+ ID_MODEL_FROM_DATABASE=ASC1300 / ASC3030 [ABP940-U / ABP960-U / ABP3925] (ASC1300/3030 SCSI adapter)
pci:v000010CDd00001300sv00001195sd00001320*
- ID_MODEL_FROM_DATABASE=ABP940-U / ABP960-U (Ultra-SCSI CardBus PC Card REX CB31)
+ ID_MODEL_FROM_DATABASE=ASC1300 / ASC3030 [ABP940-U / ABP960-U / ABP3925] (Ultra-SCSI CardBus PC Card REX CB31)
pci:v000010CDd00002300*
ID_MODEL_FROM_DATABASE=ABP940-UW
@@ -26223,7 +26241,7 @@ pci:v000010DEd0000056Dsv00001019sd0000297A*
ID_MODEL_FROM_DATABASE=MCP73 PCI Express bridge (MCP73PVT-SM)
pci:v000010DEd0000056Dsv000010DEsd0000CB73*
- ID_MODEL_FROM_DATABASE=MCP73 PCI Express bridge (MCP73 PCIe x1 port)
+ ID_MODEL_FROM_DATABASE=MCP73 PCI Express bridge (MCP73 PCI Bridge)
pci:v000010DEd0000056E*
ID_MODEL_FROM_DATABASE=MCP73 PCI Express bridge
@@ -26240,6 +26258,9 @@ pci:v000010DEd0000056F*
pci:v000010DEd0000056Fsv00001019sd0000297A*
ID_MODEL_FROM_DATABASE=MCP73 PCI Express bridge (MCP73PVT-SM)
+pci:v000010DEd0000056Fsv000010DEsd00000000*
+ ID_MODEL_FROM_DATABASE=MCP73 PCI Express bridge (MCP73 PCIe x1 port)
+
pci:v000010DEd000005B1*
ID_MODEL_FROM_DATABASE=NF200 PCIe 2.0 switch
@@ -26531,6 +26552,9 @@ pci:v000010DEd00000643*
pci:v000010DEd00000644*
ID_MODEL_FROM_DATABASE=G96 [GeForce 9500 GS]
+pci:v000010DEd00000644sv0000174Bsd00009600*
+ ID_MODEL_FROM_DATABASE=G96 [GeForce 9500 GS] (Geforce 9500GS 512M DDR2 V/D/HDMI)
+
pci:v000010DEd00000645*
ID_MODEL_FROM_DATABASE=G96 [GeForce 9500 GS]
@@ -26708,6 +26732,9 @@ pci:v000010DEd000006DFsv000010DEsd0000087F*
pci:v000010DEd000006E0*
ID_MODEL_FROM_DATABASE=G98 [GeForce 9300 GE]
+pci:v000010DEd000006E0sv0000107Dsd00005A96*
+ ID_MODEL_FROM_DATABASE=G98 [GeForce 9300 GE] (Geforce 9300GE)
+
pci:v000010DEd000006E1*
ID_MODEL_FROM_DATABASE=G98 [GeForce 9300 GS]
@@ -30404,6 +30431,15 @@ pci:v000010DEd000013F2*
pci:v000010DEd00001401*
ID_MODEL_FROM_DATABASE=GM206 [GeForce GTX 960]
+pci:v000010DEd00001617*
+ ID_MODEL_FROM_DATABASE=GM204M [GeForce GTX 980M]
+
+pci:v000010DEd00001618*
+ ID_MODEL_FROM_DATABASE=GM204M [GeForce GTX 970M]
+
+pci:v000010DEd00001619*
+ ID_MODEL_FROM_DATABASE=GM204M [GeForce GTX 965M]
+
pci:v000010DEd000017C2*
ID_MODEL_FROM_DATABASE=GM200 [GeForce GTX TITAN X]
@@ -34367,6 +34403,12 @@ pci:v0000111Dd00008088sv00001093sd00007602*
pci:v0000111Dd0000808F*
ID_MODEL_FROM_DATABASE=PES32NT8AG2
+pci:v0000111Dd000080CF*
+ ID_MODEL_FROM_DATABASE=F32P08xG3 [PCIe boot mode]
+
+pci:v0000111Dd000080D2*
+ ID_MODEL_FROM_DATABASE=F32P08xG3 NVMe controller
+
pci:v0000111E*
ID_VENDOR_FROM_DATABASE=Eldec
@@ -40107,7 +40149,13 @@ pci:v00001244d00000A00sv00001244sd00000A00*
ID_MODEL_FROM_DATABASE=A1 ISDN [Fritz] (FRITZ!Card ISDN Controller)
pci:v00001244d00000E00*
- ID_MODEL_FROM_DATABASE=Fritz!PCI v2.0 ISDN
+ ID_MODEL_FROM_DATABASE=Fritz!Card PCI v2.0 ISDN
+
+pci:v00001244d00000E80*
+ ID_MODEL_FROM_DATABASE=Fritz!Card PCI v2.1 ISDN
+
+pci:v00001244d00000E80sv00001244sd00000E00*
+ ID_MODEL_FROM_DATABASE=Fritz!Card PCI v2.1 ISDN (PSB 3100F (AVM KAFKA) [Fritz!Card PCI v2.1])
pci:v00001244d00001100*
ID_MODEL_FROM_DATABASE=C2 ISDN
@@ -44895,7 +44943,7 @@ pci:v00001409d00007168sv00001409sd00004027*
ID_MODEL_FROM_DATABASE=PCI2S550 (Dual 16550 UART) (SER4027A (1x RS232 port))
pci:v00001409d00007168sv00001409sd00004037*
- ID_MODEL_FROM_DATABASE=PCI2S550 (Dual 16550 UART) (SER4037A (2x RS232 port))
+ ID_MODEL_FROM_DATABASE=PCI2S550 (Dual 16550 UART) (SER4037A(L) [SUNIX SUN1889] (2x RS232 port))
pci:v00001409d00007168sv00001409sd00004056*
ID_MODEL_FROM_DATABASE=PCI2S550 (Dual 16550 UART) (SER4056A (4x RS232))
@@ -48146,6 +48194,12 @@ pci:v000014E4d000016A2sv0000103Csd00001916*
pci:v000014E4d000016A2sv0000103Csd00001917*
ID_MODEL_FROM_DATABASE=BCM57840 NetXtreme II 10/20-Gigabit Ethernet (HP FlexFabric 20Gb 2-port 630M Adapter)
+pci:v000014E4d000016A2sv0000103Csd00002231*
+ ID_MODEL_FROM_DATABASE=BCM57840 NetXtreme II 10/20-Gigabit Ethernet (3820C 10/20Gb Converged Network Adapter)
+
+pci:v000014E4d000016A2sv0000103Csd000022FA*
+ ID_MODEL_FROM_DATABASE=BCM57840 NetXtreme II 10/20-Gigabit Ethernet (FlexFabric 10Gb 2-port 536FLB Adapter)
+
pci:v000014E4d000016A3*
ID_MODEL_FROM_DATABASE=NetXtreme BCM57786 Gigabit Ethernet PCIe
@@ -48158,6 +48212,12 @@ pci:v000014E4d000016A4sv0000103Csd00001916*
pci:v000014E4d000016A4sv0000103Csd00001917*
ID_MODEL_FROM_DATABASE=BCM57840 NetXtreme II Ethernet Multi Function (HP NPAR 20Gb 2-port 630M Adapter)
+pci:v000014E4d000016A4sv0000103Csd00002231*
+ ID_MODEL_FROM_DATABASE=BCM57840 NetXtreme II Ethernet Multi Function (3820C 10/20Gb Converged Network Adapter (NPAR 1.5))
+
+pci:v000014E4d000016A4sv0000103Csd000022FA*
+ ID_MODEL_FROM_DATABASE=BCM57840 NetXtreme II Ethernet Multi Function (FlexFabric 10Gb 2-port 536FLB Adapter (NPAR 1.5))
+
pci:v000014E4d000016A5*
ID_MODEL_FROM_DATABASE=NetXtreme II BCM57800 1/10 Gigabit Ethernet Multi Function
@@ -48287,6 +48347,12 @@ pci:v000014E4d000016ADsv0000103Csd00001916*
pci:v000014E4d000016ADsv0000103Csd00001917*
ID_MODEL_FROM_DATABASE=NetXtreme II BCM57840 10/20 Gigabit Ethernet Virtual Function (HP FlexFabric 20Gb 2-port 630M Adapter)
+pci:v000014E4d000016ADsv0000103Csd00002231*
+ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57840 10/20 Gigabit Ethernet Virtual Function (3820C 10/20Gb Converged Network Adapter (SR-IOV VF))
+
+pci:v000014E4d000016ADsv0000103Csd000022FA*
+ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57840 10/20 Gigabit Ethernet Virtual Function (FlexFabric 10Gb 2-port 536FLB Adapter (SR-IOV VF))
+
pci:v000014E4d000016AE*
ID_MODEL_FROM_DATABASE=NetXtreme II BCM57810 10 Gigabit Ethernet Multi Function
@@ -49052,6 +49118,9 @@ pci:v000014E4d000043D9*
pci:v000014E4d000043DF*
ID_MODEL_FROM_DATABASE=BCM4354 802.11ac Wireless LAN SoC
+pci:v000014E4d000043E9*
+ ID_MODEL_FROM_DATABASE=BCM4358 802.11ac Wireless LAN SoC
+
pci:v000014E4d000043EC*
ID_MODEL_FROM_DATABASE=BCM4356 802.11ac Wireless Network Adapter
@@ -49232,6 +49301,9 @@ pci:v000014E4d00008602*
pci:v000014E4d0000A8D8*
ID_MODEL_FROM_DATABASE=BCM43224/5 Wireless Network Adapter
+pci:v000014E4d0000AA52*
+ ID_MODEL_FROM_DATABASE=BCM43602 802.11ac Wireless LAN SoC
+
pci:v000014E4d0000B302*
ID_MODEL_FROM_DATABASE=BCM56302 StrataXGS 24x1GE 2x10GE Switch Controller
@@ -52266,199 +52338,199 @@ pci:v0000168Cd00000012sv00001B47sd0000AA00*
ID_MODEL_FROM_DATABASE=AR5211 Wireless Network Adapter [AR5001X 802.11ab] (8460 802.11ab Wireless CardBus Adapter)
pci:v0000168Cd00000013*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter
pci:v0000168Cd00000013sv00000308sd00003402*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (AG-100 802.11ag Wireless Cardbus Adapter)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (AG-100 802.11ag Wireless Cardbus Adapter)
pci:v0000168Cd00000013sv00000308sd00003405*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (G-102 v2 802.11g Wireless Cardbus Adapter)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (G-102 v2 802.11g Wireless Cardbus Adapter)
pci:v0000168Cd00000013sv00000308sd00003408*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (G-170S 802.11g Wireless CardBus Adapter)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (G-170S 802.11g Wireless CardBus Adapter)
pci:v0000168Cd00000013sv00000E11sd000000E5*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (NC6000/NC8000 laptop)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (NC6000/NC8000 laptop)
pci:v0000168Cd00000013sv000010B7sd00006002*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (3CRWE154A72 802.11abg Cardbus Adapter)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (3CRWE154A72 802.11abg Cardbus Adapter)
pci:v0000168Cd00000013sv00001113sd0000D301*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (Philips CPWNA100 Wireless CardBus adapter)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (Philips CPWNA100 Wireless CardBus adapter)
pci:v0000168Cd00000013sv00001113sd0000EE23*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (SMCWPCIT-G 108Mbps Wireless PCI adapter)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (SMCWPCIT-G 108Mbps Wireless PCI adapter)
pci:v0000168Cd00000013sv00001154sd0000033B*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (Buffalo WLI-CB-AMG54)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (Buffalo WLI-CB-AMG54)
pci:v0000168Cd00000013sv00001154sd0000034E*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (Buffalo WLI-CB-AG108HP 802.11abg Cardbus Adapter)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (Buffalo WLI-CB-AG108HP 802.11abg Cardbus Adapter)
pci:v0000168Cd00000013sv00001186sd00003202*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (DWL-G650 (Rev B3,B5) Wireless cardbus adapter)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (DWL-G650 (Rev B3,B5) Wireless cardbus adapter)
pci:v0000168Cd00000013sv00001186sd00003203*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (AirPlus DWL-G520 Wireless PCI Adapter (rev. A))
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (AirPlus DWL-G520 Wireless PCI Adapter (rev. A))
pci:v0000168Cd00000013sv00001186sd00003A07*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (AirXpert DWL-AG650 Wireless Cardbus Adapter)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (AirXpert DWL-AG650 Wireless Cardbus Adapter)
pci:v0000168Cd00000013sv00001186sd00003A08*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (AirXpert DWL-AG520 Wireless PCI Adapter)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (AirXpert DWL-AG520 Wireless PCI Adapter)
pci:v0000168Cd00000013sv00001186sd00003A12*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (D-Link AirPlus DWL-G650 Wireless Cardbus Adapter(rev.C))
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (D-Link AirPlus DWL-G650 Wireless Cardbus Adapter(rev.C))
pci:v0000168Cd00000013sv00001186sd00003A13*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (AirPlus DWL-G520 Wireless PCI Adapter (rev. B))
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (AirPlus DWL-G520 Wireless PCI Adapter (rev. B))
pci:v0000168Cd00000013sv00001186sd00003A14*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (AirPremier AG DWL-AG530 Wireless PCI Adapter (rev.A))
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (AirPremier AG DWL-AG530 Wireless PCI Adapter (rev.A))
pci:v0000168Cd00000013sv00001186sd00003A17*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (D-Link AirPremier DWL-G680 Wireless Cardbus Adapter)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (D-Link AirPremier DWL-G680 Wireless Cardbus Adapter)
pci:v0000168Cd00000013sv00001186sd00003A18*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (D-Link AirPremier DWL-G550 Wireless PCI Adapter)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (D-Link AirPremier DWL-G550 Wireless PCI Adapter)
pci:v0000168Cd00000013sv00001186sd00003A1A*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (WNA-2330 802.11bg Wireless CardBus Adapter)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (WNA-2330 802.11bg Wireless CardBus Adapter)
pci:v0000168Cd00000013sv00001186sd00003A63*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (D-Link AirPremier DWL-AG660 Wireless Cardbus Adapter)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (D-Link AirPremier DWL-AG660 Wireless Cardbus Adapter)
pci:v0000168Cd00000013sv00001186sd00003A93*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (Conceptronic C54I Wireless 801.11g PCI card)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (Conceptronic C54I Wireless 801.11g PCI card)
pci:v0000168Cd00000013sv00001186sd00003A94*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (Conceptronic C54C 802.11g Wireless Cardbus Adapter)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (Conceptronic C54C 802.11g Wireless Cardbus Adapter)
pci:v0000168Cd00000013sv00001186sd00003AB0*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (Allnet ALL0281 Wireless PCI Card)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (Allnet ALL0281 Wireless PCI Card)
pci:v0000168Cd00000013sv00001385sd00004600*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (WAG511 802.11a/b/g Dual Band Wireless PC Card)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (WAG511 802.11a/b/g Dual Band Wireless PC Card)
pci:v0000168Cd00000013sv00001385sd00004610*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (WAG511 802.11a/b/g Dual Band Wireless PC Card)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (WAG511 802.11a/b/g Dual Band Wireless PC Card)
pci:v0000168Cd00000013sv00001385sd00004900*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (WG311v1 802.11g Wireless PCI Adapter)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (WG311v1 802.11g Wireless PCI Adapter)
pci:v0000168Cd00000013sv00001385sd00004A00*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (WAG311 802.11a/g Wireless PCI Adapter)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (WAG311 802.11a/g Wireless PCI Adapter)
pci:v0000168Cd00000013sv00001385sd00004B00*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (WG511T 108 Mbps Wireless PC Card (rev.A/B))
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (WG511T 108 Mbps Wireless PC Card (rev.A/B))
pci:v0000168Cd00000013sv00001385sd00004D00*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (WG311T 108 Mbps Wireless PCI Adapter (rev.A2))
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (WG311T 108 Mbps Wireless PCI Adapter (rev.A2))
pci:v0000168Cd00000013sv00001385sd00004F00*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (WG511U Double 108 Mbps Wireless PC Card)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (WG511U Double 108 Mbps Wireless PC Card)
pci:v0000168Cd00000013sv00001385sd00005A00*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (WG311T 108 Mbps Wireless PCI Adapter (rev.A3))
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (WG311T (rev.A3 v1h3/v1h4) 108 Mbps Wireless PCI Adapter [AR2412])
pci:v0000168Cd00000013sv00001385sd00005B00*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (WG511T 108 Mbps Wireless PC Card (rev.C))
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (WG511T 108 Mbps Wireless PC Card (rev.C))
pci:v0000168Cd00000013sv00001385sd00005D00*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (WPN511 RangeMax Wireless PC Card)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (WPN511 RangeMax Wireless PC Card)
pci:v0000168Cd00000013sv00001458sd0000E911*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (GN-WIAG02)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (GN-WIAG02)
pci:v0000168Cd00000013sv00001468sd00000403*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (U10H014 802.11g Cardbus Adapter)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (U10H014 802.11g Cardbus Adapter)
pci:v0000168Cd00000013sv00001468sd00000408*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (ThinkPad 11b/g Wireless LAN Mini PCI Adapter)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (ThinkPad 11b/g Wireless LAN Mini PCI Adapter)
pci:v0000168Cd00000013sv000014B7sd00000A10*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (8480-WD 802.11abg Cardbus Adapter)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (8480-WD 802.11abg Cardbus Adapter)
pci:v0000168Cd00000013sv000014B7sd00000A60*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (8482-WD ORiNOCO 11a/b/g Wireless PCI Adapter)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (8482-WD ORiNOCO 11a/b/g Wireless PCI Adapter)
pci:v0000168Cd00000013sv000014B7sd0000AA30*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (8800-FC 802.11bg Cardbus Adapter)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (8800-FC 802.11bg Cardbus Adapter)
pci:v0000168Cd00000013sv000014B7sd0000AA40*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (8470-WD 802.11bg Cardbus Adapter)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (8470-WD 802.11bg Cardbus Adapter)
pci:v0000168Cd00000013sv000014B9sd0000CB21*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (CB21 802.11a/b/g Cardbus Adapter)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (CB21 802.11a/b/g Cardbus Adapter)
pci:v0000168Cd00000013sv00001668sd00001026*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (IBM HighRate 11 a/b/g Wireless CardBus Adapter)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (IBM HighRate 11 a/b/g Wireless CardBus Adapter)
pci:v0000168Cd00000013sv0000168Csd00000013*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (AirPlus XtremeG DWL-G650 Wireless PCMCIA Adapter)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (AirPlus XtremeG DWL-G650 Wireless PCMCIA Adapter)
pci:v0000168Cd00000013sv0000168Csd00001025*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (DWL-G650B2 Wireless CardBus Adapter)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (DWL-G650B2 Wireless CardBus Adapter)
pci:v0000168Cd00000013sv0000168Csd00001027*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (Engenius NL-3054CB ARIES b/g CardBus Adapter)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (Engenius NL-3054CB ARIES b/g CardBus Adapter)
pci:v0000168Cd00000013sv0000168Csd00001042*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (Ubiquiti Networks SuperRange a/b/g Cardbus Adapter)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (Ubiquiti Networks SuperRange a/b/g Cardbus Adapter)
pci:v0000168Cd00000013sv0000168Csd00001051*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (EZ Connect g 802.11g 108Mbps Wireless PCI Adapter)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (EZ Connect g 802.11g 108Mbps Wireless PCI Adapter)
pci:v0000168Cd00000013sv0000168Csd00002026*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (Netgate 5354MP ARIES a(108Mb turbo)/b/g MiniPCI Adapter)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (Netgate 5354MP ARIES a(108Mb turbo)/b/g MiniPCI Adapter)
pci:v0000168Cd00000013sv0000168Csd00002027*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (D-Link AirPlus DWL-G520 Wireless PCI Adapter (rev. A))
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (D-Link AirPlus DWL-G520 Wireless PCI Adapter (rev. A))
pci:v0000168Cd00000013sv0000168Csd00002041*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (Engenius 5354MP Plus ARIES2 b/g MiniPCI Adapter)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (Engenius 5354MP Plus ARIES2 b/g MiniPCI Adapter)
pci:v0000168Cd00000013sv0000168Csd00002042*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (Engenius 5354MP Plus ARIES2 a/b/g MiniPCI Adapter)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (Engenius 5354MP Plus ARIES2 a/b/g MiniPCI Adapter)
pci:v0000168Cd00000013sv0000168Csd00002051*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (TRENDnet TEW-443PI Wireless PCI Adapter)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (TRENDnet TEW-443PI Wireless PCI Adapter)
pci:v0000168Cd00000013sv000016A5sd0000160A*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (BWP712 802.11bg Wireless CardBus Adapter)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (BWP712 802.11bg Wireless CardBus Adapter)
pci:v0000168Cd00000013sv000016ABsd00007302*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (Trust Speedshare Turbo Pro Wireless PCI Adapter)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (Trust Speedshare Turbo Pro Wireless PCI Adapter)
pci:v0000168Cd00000013sv00001737sd00000017*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (WPC55AG)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (WPC55AG)
pci:v0000168Cd00000013sv00001737sd00000026*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (WMP55AG v1.1)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (WMP55AG v1.1)
pci:v0000168Cd00000013sv00001737sd00000035*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (WPC55AG v1.2 802.11abg Cardbus Adapter)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (WPC55AG v1.2 802.11abg Cardbus Adapter)
pci:v0000168Cd00000013sv00001737sd00000036*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (WMP55AG v1.2 802.11abg PCI Adapter)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (WMP55AG v1.2 802.11abg PCI Adapter)
pci:v0000168Cd00000013sv00001799sd00003000*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (F6D3000 Dual-Band Wireless A+G Desktop Card)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (F6D3000 Dual-Band Wireless A+G Desktop Card)
pci:v0000168Cd00000013sv00001799sd00003010*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (F6D3010 Dual-Band Wireless A+G Notebook Card)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (F6D3010 Dual-Band Wireless A+G Notebook Card)
pci:v0000168Cd00000013sv000017CFsd00000042*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (Z-COMAX Highpower XG-622H (400mw) 802.11b/g mini-PCI Adapter)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (Z-COMAX Highpower XG-622H (400mw) 802.11b/g mini-PCI Adapter)
pci:v0000168Cd00000013sv0000185Fsd00001012*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (CM9 Wireless a/b/g MiniPCI Adapter)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (CM9 Wireless a/b/g MiniPCI Adapter)
pci:v0000168Cd00000013sv0000185Fsd00002012*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (Wistron NeWeb WLAN a+b+g model CB9)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (Wistron NeWeb WLAN a+b+g model CB9)
pci:v0000168Cd00000013sv0000A727sd00006801*
- ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (3CRXJK10075 OfficeConnect Wireless 108Mbps 11g XJACK PC Card)
+ ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (3CRXJK10075 OfficeConnect Wireless 108Mbps 11g XJACK PC Card)
pci:v0000168Cd0000001A*
ID_MODEL_FROM_DATABASE=AR2413/AR2414 Wireless Network Adapter [AR5005G(S) 802.11bg]
@@ -52733,6 +52805,9 @@ pci:v0000168Cd0000002Asv00000777sd00004F05*
pci:v0000168Cd0000002Asv0000103Csd00003041*
ID_MODEL_FROM_DATABASE=AR928X Wireless Network Adapter (PCI-Express) (AR5BHB92-H 802.11abgn Wireless Half-size Mini PCIe Card [AR9280])
+pci:v0000168Cd0000002Asv0000103Csd00003042*
+ ID_MODEL_FROM_DATABASE=AR928X Wireless Network Adapter (PCI-Express) (AzureWave AW-NE773 802.11abgn Wireless Half-size Mini PCIe Card [AR9280])
+
pci:v0000168Cd0000002Asv0000105Bsd0000E006*
ID_MODEL_FROM_DATABASE=AR928X Wireless Network Adapter (PCI-Express) (T77H053.00 802.11bgn Wireless Mini PCIe Card [AR9281])
@@ -53204,6 +53279,12 @@ pci:v000016D5d00007004*
pci:v000016D5d00007005*
ID_MODEL_FROM_DATABASE=XMC-7K410CC: User-Configurable Kintex-7 FPGA, 410k logic cells, conduction-cooled
+pci:v000016D5d00007006*
+ ID_MODEL_FROM_DATABASE=XMC-7A200: User-Configurable Artix-7 FPGA, 200k logic cells with Plug-In I/O
+
+pci:v000016D5d00007007*
+ ID_MODEL_FROM_DATABASE=XMC-7A200CC: User-Configurable Conduction-Cooled Artix-7 FPGA, with 200k logic cells
+
pci:v000016DA*
ID_VENDOR_FROM_DATABASE=Advantech Co., Ltd.
@@ -53471,6 +53552,12 @@ pci:v0000177Dd00000095*
pci:v0000177Dd00000096*
ID_MODEL_FROM_DATABASE=Octeon III CN70XX Network Processor
+pci:v0000177Dd00009700*
+ ID_MODEL_FROM_DATABASE=Octeon III CN73XX Network Processor
+
+pci:v0000177Dd00009800*
+ ID_MODEL_FROM_DATABASE=Octeon Fusion CNF75XX Processor
+
pci:v0000177Dd0000A001*
ID_MODEL_FROM_DATABASE=THUNDERX MRML Bridge
@@ -55295,6 +55382,9 @@ pci:v00001924d00000923sv00001924sd0000800B*
pci:v00001924d00000923sv00001924sd0000800E*
ID_MODEL_FROM_DATABASE=SFC9140 (SFN7x42Q-R2 Flareon Ultra 7000 Series 10/40G Adapter)
+pci:v00001924d00000923sv00001924sd0000800F*
+ ID_MODEL_FROM_DATABASE=SFC9140 (SFN7xx4F-R1 Flareon Ultra 7000 Series 10G Adapter)
+
pci:v00001924d00001803*
ID_MODEL_FROM_DATABASE=SFC9020 Virtual Function [Solarstorm]
@@ -56819,6 +56909,9 @@ pci:v00001B4Bd00009120*
pci:v00001B4Bd00009123*
ID_MODEL_FROM_DATABASE=88SE9123 PCIe SATA 6.0 Gb/s controller
+pci:v00001B4Bd00009123sv0000DC93sd0000600E*
+ ID_MODEL_FROM_DATABASE=88SE9123 PCIe SATA 6.0 Gb/s controller (DC-6xxe series SATA 6G controller)
+
pci:v00001B4Bd00009125*
ID_MODEL_FROM_DATABASE=88SE9125 PCIe SATA 6.0 Gb/s controller
@@ -56915,6 +57008,9 @@ pci:v00001B73d00001000sv00001D5Csd00001000*
pci:v00001B73d00001009*
ID_MODEL_FROM_DATABASE=FL1009 USB 3.0 Host Controller
+pci:v00001B73d00001100*
+ ID_MODEL_FROM_DATABASE=FL1100 USB 3.0 Host Controller
+
pci:v00001B74*
ID_VENDOR_FROM_DATABASE=OpenVox Communication Co. Ltd.
@@ -57191,6 +57287,9 @@ pci:v00001CE4d00000002*
pci:v00001CF7*
ID_VENDOR_FROM_DATABASE=Subspace Dynamics
+pci:v00001D00*
+ ID_VENDOR_FROM_DATABASE=Pure Storage
+
pci:v00001D21*
ID_VENDOR_FROM_DATABASE=Allo
@@ -57356,6 +57455,36 @@ pci:v00001FC9d00003314sv00000000sd00003012*
pci:v00001FC9d00003314sv00000000sd00003014*
ID_MODEL_FROM_DATABASE=10-Giga TOE Dual Port Low Profile SmartNIC (10-Giga TOE Dual Port CX4 Low Profile SmartNIC)
+pci:v00001FC9d00004010*
+ ID_MODEL_FROM_DATABASE=TN4010 Clean SROM
+
+pci:v00001FC9d00004020*
+ ID_MODEL_FROM_DATABASE=TN9030 10GbE CX4 Ethernet Adapter
+
+pci:v00001FC9d00004022*
+ ID_MODEL_FROM_DATABASE=TN9310 10GbE SFP+ Ethernet Adapter
+
+pci:v00001FC9d00004022sv00001186sd00004D00*
+ ID_MODEL_FROM_DATABASE=TN9310 10GbE SFP+ Ethernet Adapter (DXE-810S 10GbE SFP+ Ethernet Adapter)
+
+pci:v00001FC9d00004022sv00001FC9sd00003015*
+ ID_MODEL_FROM_DATABASE=TN9310 10GbE SFP+ Ethernet Adapter (Ethernet Adapter)
+
+pci:v00001FC9d00004024*
+ ID_MODEL_FROM_DATABASE=TN9210 10GBase-T Ethernet Adapter
+
+pci:v00001FC9d00004025*
+ ID_MODEL_FROM_DATABASE=TN9510 10GBase-T/NBASE-T Ethernet Adapter
+
+pci:v00001FC9d00004025sv00001186sd00002900*
+ ID_MODEL_FROM_DATABASE=TN9510 10GBase-T/NBASE-T Ethernet Adapter (DXE-810T 10GBase-T Ethernet Adapter)
+
+pci:v00001FC9d00004025sv00001FC9sd00003015*
+ ID_MODEL_FROM_DATABASE=TN9510 10GBase-T/NBASE-T Ethernet Adapter (Ethernet Adapter)
+
+pci:v00001FC9d00004026*
+ ID_MODEL_FROM_DATABASE=TN9610 10GbE SFP+ Ethernet Adapter
+
pci:v00001FCC*
ID_VENDOR_FROM_DATABASE=StreamLabs
@@ -63962,6 +64091,12 @@ pci:v00008086d000015A2*
pci:v00008086d000015A3*
ID_MODEL_FROM_DATABASE=Ethernet Connection (3) I218-V
+pci:v00008086d000015A4*
+ ID_MODEL_FROM_DATABASE=Ethernet Switch FM10000 Host Interface
+
+pci:v00008086d000015A5*
+ ID_MODEL_FROM_DATABASE=Ethernet Switch FM10000 Host Virtual Interface
+
pci:v00008086d000015A8*
ID_MODEL_FROM_DATABASE=Ethernet Connection X552 Virtual Function
diff --git a/hwdb/60-evdev.hwdb b/hwdb/60-evdev.hwdb
index ca82f8a512..ea7e6fee54 100644
--- a/hwdb/60-evdev.hwdb
+++ b/hwdb/60-evdev.hwdb
@@ -117,3 +117,12 @@ evdev:name:Atmel maXTouch Touch*:dmi:bvn*:bvr*:bd*:svnGOOGLE:pnSamus*
evdev:name:SynPS/2 Synaptics TouchPad:dmi:*svnLENOVO*:pn*ThinkPad*X230*
EVDEV_ABS_01=::100
EVDEV_ABS_36=::100
+
+#########################################
+# Dell
+#########################################
+
+# Dell Vostro 1510
+evdev:name:AlpsPS/2 ALPS GlidePoint*:dmi:bvn*:bvr*:bd*:svnDellInc.:pnVostro1510*
+ EVDEV_ABS_00=::14
+ EVDEV_ABS_01=::18
diff --git a/hwdb/70-mouse.hwdb b/hwdb/70-mouse.hwdb
index 76dcfd1b87..e2855095cd 100644
--- a/hwdb/70-mouse.hwdb
+++ b/hwdb/70-mouse.hwdb
@@ -36,10 +36,11 @@
# where /dev/input/eventXX is the mouse in question. If in
# doubt, simply use /dev/input/event* to reload all input rules.
#
-# If your changes are generally applicable, open a bug report on
-# http://bugs.freedesktop.org/enter_bug.cgi?product=systemd
-# and include your new rules, a description of the device, and the
-# output of
+# If your changes are generally applicable, preferably send them as a pull
+# request to
+# https://github.com/systemd/
+# or create a bug report on the issue tracker located there and include your
+# new rules, a description of the device, and the output of
# udevadm info /dev/input/eventXX
# (or /dev/input/event*).
#
@@ -238,6 +239,10 @@ mouse:usb:v046dpc245:name:Logitech Gaming Mouse G400:
mouse:usb:v046dpc24c:name:Logitech G400s Optical Gaming Mouse:
MOUSE_DPI=400@1000 *800@1000 2000@1000 4000@1000
+# Logitech G402 Hyperion Fury
+mouse:usb:v046dpc07e:name:Logitech Gaming Mouse G402:
+ MOUSE_DPI=400@1000 *800@1000 1600@1000 3200@1000
+
# Logitech B605 Wireless Mouse (also M505)
mouse:usb:v046dp101d:name:Logitech B605:
mouse:usb:v046dp101d:name:Logitech M505:
diff --git a/man/systemd-fsck@.service.xml b/man/systemd-fsck@.service.xml
index e4ffcba168..6d05e90e7b 100644
--- a/man/systemd-fsck@.service.xml
+++ b/man/systemd-fsck@.service.xml
@@ -61,7 +61,7 @@
responsible for file system checks. They are instantiated for each
device that is configured for file system checking.
<filename>systemd-fsck-root.service</filename> is responsible for
- file system checks on the root file system, but in only if the
+ file system checks on the root file system, but only if the
root filesystem wasn't checked in the initramfs.
<filename>systemd-fsck@.service</filename> is used for all other
file systems and for the root file system in the initramfs.</para>
diff --git a/man/systemd-machine-id-commit.xml b/man/systemd-machine-id-commit.xml
index cfb1722063..d216aa0745 100644
--- a/man/systemd-machine-id-commit.xml
+++ b/man/systemd-machine-id-commit.xml
@@ -66,7 +66,7 @@
<para>This tool will execute no operation if
<filename>/etc/machine-id</filename> doesn't contain any valid
machine ID, isn't mounted as an independent temporary file system,
- of <filename>/etc</filename> is read-only. If those conditions are
+ or <filename>/etc</filename> is read-only. If those conditions are
met, it will then write current machine ID to disk and unmount the
transient <filename>/etc/machine-id</filename> file in a race-free
manner to ensure that this file is always valid for other
diff --git a/src/basic/bitmap.c b/src/basic/bitmap.c
index bf9d8d4d7c..7ea3357031 100644
--- a/src/basic/bitmap.c
+++ b/src/basic/bitmap.c
@@ -145,7 +145,10 @@ bool bitmap_isclear(Bitmap *b) {
void bitmap_clear(Bitmap *b) {
assert(b);
+ free(b->bitmaps);
+ b->bitmaps = NULL;
b->n_bitmaps = 0;
+ b->bitmaps_allocated = 0;
}
bool bitmap_iterate(Bitmap *b, Iterator *i, unsigned *n) {
@@ -184,6 +187,9 @@ bool bitmap_iterate(Bitmap *b, Iterator *i, unsigned *n) {
}
bool bitmap_equal(Bitmap *a, Bitmap *b) {
+ size_t common_n_bitmaps;
+ Bitmap *c;
+ unsigned i;
if (!a ^ !b)
return false;
@@ -191,8 +197,14 @@ bool bitmap_equal(Bitmap *a, Bitmap *b) {
if (!a)
return true;
- if (a->n_bitmaps != b->n_bitmaps)
+ common_n_bitmaps = MIN(a->n_bitmaps, b->n_bitmaps);
+ if (memcmp(a->bitmaps, b->bitmaps, sizeof(uint64_t) * common_n_bitmaps) != 0)
return false;
- return memcmp(a->bitmaps, b->bitmaps, sizeof(uint64_t) * a->n_bitmaps) == 0;
+ c = a->n_bitmaps > b->n_bitmaps ? a : b;
+ for (i = common_n_bitmaps; i < c->n_bitmaps; i++)
+ if (c->bitmaps[i] != 0)
+ return false;
+
+ return true;
}
diff --git a/src/basic/copy.c b/src/basic/copy.c
index e2d356d676..33427c6a73 100644
--- a/src/basic/copy.c
+++ b/src/basic/copy.c
@@ -467,8 +467,7 @@ int copy_xattr(int fdf, int fdt) {
sza *= 2;
- free(bufa);
- bufa = NULL;
+ bufa = mfree(bufa);
}
p = bufa;
@@ -491,8 +490,7 @@ int copy_xattr(int fdf, int fdt) {
if (m < 0) {
if (errno == ERANGE) {
szb *= 2;
- free(bufb);
- bufb = NULL;
+ bufb = mfree(bufb);
continue;
}
diff --git a/src/basic/socket-util.c b/src/basic/socket-util.c
index 62f99b322e..8fd3149276 100644
--- a/src/basic/socket-util.c
+++ b/src/basic/socket-util.c
@@ -583,7 +583,7 @@ int sockaddr_pretty(const struct sockaddr *_sa, socklen_t salen, bool translate_
} else {
p = strndup(sa->un.sun_path, sizeof(sa->un.sun_path));
- if (!ret)
+ if (!p)
return -ENOMEM;
}
diff --git a/src/basic/unit-name.c b/src/basic/unit-name.c
index bf52463d81..fa530da456 100644
--- a/src/basic/unit-name.c
+++ b/src/basic/unit-name.c
@@ -673,6 +673,7 @@ int unit_name_mangle_with_suffix(const char *name, UnitNameMangle allow_globs, c
int slice_build_parent_slice(const char *slice, char **ret) {
char *s, *dash;
+ int r;
assert(slice);
assert(ret);
@@ -693,11 +694,11 @@ int slice_build_parent_slice(const char *slice, char **ret) {
if (dash)
strcpy(dash, ".slice");
else {
- free(s);
-
- s = strdup("-.slice");
- if (!s)
- return -ENOMEM;
+ r = free_and_strdup(&s, "-.slice");
+ if (r < 0) {
+ free(s);
+ return r;
+ }
}
*ret = s;
diff --git a/src/basic/util.c b/src/basic/util.c
index 1c15fbc172..a968e2156d 100644
--- a/src/basic/util.c
+++ b/src/basic/util.c
@@ -115,17 +115,23 @@ size_t page_size(void) {
return pgsz;
}
-bool streq_ptr(const char *a, const char *b) {
-
- /* Like streq(), but tries to make sense of NULL pointers */
+int strcmp_ptr(const char *a, const char *b) {
+ /* Like strcmp(), but tries to make sense of NULL pointers */
if (a && b)
- return streq(a, b);
+ return strcmp(a, b);
- if (!a && !b)
- return true;
+ if (!a && b)
+ return -1;
- return false;
+ if (a && !b)
+ return 1;
+
+ return 0;
+}
+
+bool streq_ptr(const char *a, const char *b) {
+ return strcmp_ptr(a, b) == 0;
}
char* endswith(const char *s, const char *postfix) {
diff --git a/src/basic/util.h b/src/basic/util.h
index c2e5cc610b..88c44273d4 100644
--- a/src/basic/util.h
+++ b/src/basic/util.h
@@ -71,6 +71,7 @@ size_t page_size(void) _pure_;
#define strncaseeq(a, b, n) (strncasecmp((a), (b), (n)) == 0)
bool streq_ptr(const char *a, const char *b) _pure_;
+int strcmp_ptr(const char *a, const char *b) _pure_;
#define new(t, n) ((t*) malloc_multiply(sizeof(t), (n)))
@@ -84,6 +85,11 @@ bool streq_ptr(const char *a, const char *b) _pure_;
#define malloc0(n) (calloc((n), 1))
+static inline void *mfree(void *memory) {
+ free(memory);
+ return NULL;
+}
+
static inline const char* yes_no(bool b) {
return b ? "yes" : "no";
}
diff --git a/src/boot/efi/boot.c b/src/boot/efi/boot.c
index dde0c41744..4ac193e22a 100644
--- a/src/boot/efi/boot.c
+++ b/src/boot/efi/boot.c
@@ -1140,13 +1140,11 @@ static VOID config_entry_add_from_file(Config *config, EFI_HANDLE *device, CHAR1
config_add_entry(config, entry);
}
-static VOID config_load(Config *config, EFI_HANDLE *device, EFI_FILE *root_dir, CHAR16 *loaded_image_path) {
- EFI_FILE_HANDLE entries_dir;
- EFI_STATUS err;
+static VOID config_load_defaults(Config *config, EFI_FILE *root_dir) {
CHAR8 *content = NULL;
UINTN sec;
UINTN len;
- UINTN i;
+ EFI_STATUS err;
len = file_read(root_dir, L"\\loader\\loader.conf", 0, 0, &content);
if (len > 0)
@@ -1159,6 +1157,11 @@ static VOID config_load(Config *config, EFI_HANDLE *device, EFI_FILE *root_dir,
config->timeout_sec = sec;
} else
config->timeout_sec_efivar = -1;
+}
+
+static VOID config_load_entries(Config *config, EFI_HANDLE *device, EFI_FILE *root_dir, CHAR16 *loaded_image_path) {
+ EFI_FILE_HANDLE entries_dir;
+ EFI_STATUS err;
err = uefi_call_wrapper(root_dir->Open, 5, root_dir, &entries_dir, L"\\loader\\entries", EFI_FILE_MODE_READ, 0ULL);
if (!EFI_ERROR(err)) {
@@ -1195,8 +1198,11 @@ static VOID config_load(Config *config, EFI_HANDLE *device, EFI_FILE *root_dir,
}
uefi_call_wrapper(entries_dir->Close, 1, entries_dir);
}
+}
+
+static VOID config_sort_entries(Config *config) {
+ UINTN i;
- /* sort entries after version number */
for (i = 1; i < config->entry_count; i++) {
BOOLEAN more;
UINTN k;
@@ -1738,12 +1744,19 @@ EFI_STATUS efi_main(EFI_HANDLE image, EFI_SYSTEM_TABLE *sys_table) {
loaded_image_path = DevicePathToStr(loaded_image->FilePath);
efivar_set(L"LoaderImageIdentifier", loaded_image_path, FALSE);
- /* scan "\loader\entries\*.conf" files */
ZeroMem(&config, sizeof(Config));
- config_load(&config, loaded_image->DeviceHandle, root_dir, loaded_image_path);
+ config_load_defaults(&config, root_dir);
- /* if we find some well-known loaders, add them to the end of the list */
+ /* scan /EFI/Linux/ directory */
config_entry_add_linux(&config, loaded_image, root_dir);
+
+ /* scan /loader/entries/\*.conf files */
+ config_load_entries(&config, loaded_image->DeviceHandle, root_dir, loaded_image_path);
+
+ /* sort entries after version number */
+ config_sort_entries(&config);
+
+ /* if we find some well-known loaders, add them to the end of the list */
config_entry_add_loader_auto(&config, loaded_image->DeviceHandle, root_dir, loaded_image_path,
L"auto-windows", 'w', L"Windows Boot Manager", L"\\EFI\\Microsoft\\Boot\\bootmgfw.efi");
config_entry_add_loader_auto(&config, loaded_image->DeviceHandle, root_dir, loaded_image_path,
diff --git a/src/bus-proxyd/bus-xml-policy.c b/src/bus-proxyd/bus-xml-policy.c
index dab5acbcb4..9a3b451c56 100644
--- a/src/bus-proxyd/bus-xml-policy.c
+++ b/src/bus-proxyd/bus-xml-policy.c
@@ -586,10 +586,8 @@ static int file_load(Policy *p, const char *path) {
case POLICY_ITEM_SEND:
case POLICY_ITEM_RECV:
- if (streq(name, "*")) {
- free(name);
- name = NULL;
- }
+ if (streq(name, "*"))
+ name = mfree(name);
break;
diff --git a/src/bus-proxyd/driver.c b/src/bus-proxyd/driver.c
index 1cb5ea5008..951f515808 100644
--- a/src/bus-proxyd/driver.c
+++ b/src/bus-proxyd/driver.c
@@ -71,6 +71,27 @@ static int get_creds_by_message(sd_bus *bus, sd_bus_message *m, uint64_t mask, s
return get_creds_by_name(bus, name, mask, _creds, error);
}
+static int driver_activation(sd_bus_message *reply, void *userdata, sd_bus_error *error) {
+ _cleanup_bus_message_unref_ sd_bus_message *m = NULL;
+ ProxyActivation *activation = userdata;
+
+ /*
+ * The org.freedesktop.DBus.Peer.Ping() call returned. We don't care
+ * whether this succeeded, failed, was not implemented or timed out. We
+ * cannot assume that the target reacts to this properly. Hence, just
+ * send the reply to the activation request and be done.
+ */
+
+ m = activation->request; /* claim reference */
+
+ --activation->proxy->n_activations;
+ LIST_REMOVE(activations_by_proxy, activation->proxy->activations, activation);
+ sd_bus_slot_unref(activation->slot);
+ free(activation);
+
+ return synthetic_reply_method_return(m, "u", BUS_START_REPLY_SUCCESS);
+}
+
int bus_proxy_process_driver(Proxy *p, sd_bus *a, sd_bus *b, sd_bus_message *m, SharedPolicy *sp, const struct ucred *ucred, Set *owned_names) {
int r;
@@ -441,27 +462,29 @@ int bus_proxy_process_driver(Proxy *p, sd_bus *a, sd_bus *b, sd_bus_message *m,
name_list = (struct kdbus_info *) ((uint8_t *) a->kdbus_buffer + cmd.offset);
KDBUS_FOREACH(name, name_list, cmd.list_size) {
- const char *entry_name = NULL;
struct kdbus_item *item;
char *n;
- KDBUS_ITEM_FOREACH(item, name, items)
- if (item->type == KDBUS_ITEM_OWNED_NAME)
- entry_name = item->name.name;
-
- if (!streq_ptr(entry_name, arg0))
- continue;
-
- if (asprintf(&n, ":1.%llu", (unsigned long long) name->id) < 0) {
- err = -ENOMEM;
- break;
+ KDBUS_ITEM_FOREACH(item, name, items) {
+ if (item->type == KDBUS_ITEM_OWNED_NAME) {
+ if (!streq_ptr(item->name.name, arg0))
+ continue;
+
+ if (asprintf(&n, ":1.%llu", (unsigned long long) name->id) < 0) {
+ err = -ENOMEM;
+ break;
+ }
+
+ r = strv_consume(&owners, n);
+ if (r < 0) {
+ err = r;
+ break;
+ }
+ }
}
- r = strv_consume(&owners, n);
- if (r < 0) {
- err = r;
+ if (err < 0)
break;
- }
}
r = bus_kernel_cmd_free(a, cmd.offset);
@@ -585,7 +608,9 @@ int bus_proxy_process_driver(Proxy *p, sd_bus *a, sd_bus *b, sd_bus_message *m,
} else if (sd_bus_message_is_method_call(m, "org.freedesktop.DBus", "StartServiceByName")) {
_cleanup_bus_message_unref_ sd_bus_message *msg = NULL;
+ ProxyActivation *activation;
const char *name;
+ uint64_t cookie;
uint32_t flags;
if (!sd_bus_message_has_signature(m, "su"))
@@ -604,21 +629,46 @@ int bus_proxy_process_driver(Proxy *p, sd_bus *a, sd_bus *b, sd_bus_message *m,
if (r != -ESRCH)
return synthetic_reply_method_errno(m, r, NULL);
- r = sd_bus_message_new_method_call(
- a,
- &msg,
- name,
- "/",
- "org.freedesktop.DBus.Peer",
- "Ping");
+ if (p->n_activations >= PROXY_ACTIVATIONS_MAX)
+ return synthetic_reply_method_errno(m, -EMFILE, NULL);
+
+ r = sd_bus_message_get_cookie(m, &cookie);
+ if (r < 0)
+ return synthetic_reply_method_errno(m, r, NULL);
+
+ r = sd_bus_message_new_method_call(a,
+ &msg,
+ name,
+ "/",
+ "org.freedesktop.DBus.Peer",
+ "Ping");
if (r < 0)
return synthetic_reply_method_errno(m, r, NULL);
- r = sd_bus_send(a, msg, NULL);
+ r = bus_message_seal(msg, cookie, BUS_DEFAULT_TIMEOUT);
if (r < 0)
return synthetic_reply_method_errno(m, r, NULL);
- return synthetic_reply_method_return(m, "u", BUS_START_REPLY_SUCCESS);
+ activation = new0(ProxyActivation, 1);
+ if (!activation)
+ return synthetic_reply_method_errno(m, -ENOMEM, NULL);
+
+ r = sd_bus_call_async(a,
+ &activation->slot,
+ msg,
+ driver_activation,
+ activation,
+ 0);
+ if (r < 0) {
+ free(activation);
+ return synthetic_reply_method_errno(m, r, NULL);
+ }
+
+ activation->proxy = p;
+ activation->request = sd_bus_message_ref(m);
+ LIST_PREPEND(activations_by_proxy, p->activations, activation);
+ ++p->n_activations;
+ return 1;
} else if (sd_bus_message_is_method_call(m, "org.freedesktop.DBus", "UpdateActivationEnvironment")) {
_cleanup_bus_message_unref_ sd_bus_message *msg = NULL;
@@ -657,8 +707,8 @@ int bus_proxy_process_driver(Proxy *p, sd_bus *a, sd_bus *b, sd_bus_message *m,
if (r < 0)
return synthetic_reply_method_errno(m, r, NULL);
- if (!args)
- return synthetic_reply_method_errno(m, -EINVAL, NULL);
+ if (strv_isempty(args)) /* nothing to do? */
+ return synthetic_reply_method_return(m, NULL);
r = sd_bus_message_new_method_call(
a,
diff --git a/src/bus-proxyd/proxy.c b/src/bus-proxyd/proxy.c
index c37b09b9c0..df361ac400 100644
--- a/src/bus-proxyd/proxy.c
+++ b/src/bus-proxyd/proxy.c
@@ -261,9 +261,18 @@ int proxy_new(Proxy **out, int in_fd, int out_fd, const char *destination) {
}
Proxy *proxy_free(Proxy *p) {
+ ProxyActivation *activation;
+
if (!p)
return NULL;
+ while ((activation = p->activations)) {
+ LIST_REMOVE(activations_by_proxy, p->activations, activation);
+ sd_bus_message_unref(activation->request);
+ sd_bus_slot_unref(activation->slot);
+ free(activation);
+ }
+
sd_bus_flush_close_unref(p->local_bus);
sd_bus_flush_close_unref(p->destination_bus);
set_free_free(p->owned_names);
@@ -644,6 +653,10 @@ static int process_hello(Proxy *p, sd_bus_message *m) {
if (r < 0)
return log_error_errno(r, "Failed to append sender to NameAcquired message: %m");
+ r = sd_bus_message_set_destination(n, p->destination_bus->unique_name);
+ if (r < 0)
+ return log_error_errno(r, "Failed to set destination for NameAcquired message: %m");
+
r = bus_seal_synthetic_message(p->local_bus, n);
if (r < 0)
return log_error_errno(r, "Failed to seal NameAcquired message: %m");
diff --git a/src/bus-proxyd/proxy.h b/src/bus-proxyd/proxy.h
index ccb951c109..6aac650ac9 100644
--- a/src/bus-proxyd/proxy.h
+++ b/src/bus-proxyd/proxy.h
@@ -25,6 +25,9 @@
#include "bus-xml-policy.h"
typedef struct Proxy Proxy;
+typedef struct ProxyActivation ProxyActivation;
+
+#define PROXY_ACTIVATIONS_MAX (16) /* max parallel activation requests */
struct Proxy {
sd_bus *local_bus;
@@ -37,12 +40,22 @@ struct Proxy {
Set *owned_names;
SharedPolicy *policy;
+ LIST_HEAD(ProxyActivation, activations);
+ size_t n_activations;
+
bool got_hello : 1;
bool queue_overflow : 1;
bool message_matched : 1;
bool synthetic_matched : 1;
};
+struct ProxyActivation {
+ LIST_FIELDS(ProxyActivation, activations_by_proxy);
+ Proxy *proxy;
+ sd_bus_message *request;
+ sd_bus_slot *slot;
+};
+
int proxy_new(Proxy **out, int in_fd, int out_fd, const char *dest);
Proxy *proxy_free(Proxy *p);
diff --git a/src/bus-proxyd/synthesize.c b/src/bus-proxyd/synthesize.c
index 3ecedfd575..15d99103f6 100644
--- a/src/bus-proxyd/synthesize.c
+++ b/src/bus-proxyd/synthesize.c
@@ -214,22 +214,13 @@ int synthesize_name_acquired(Proxy *p, sd_bus *a, sd_bus *b, sd_bus_message *m)
if (r < 0)
return r;
- r = bus_seal_synthetic_message(b, n);
+ r = sd_bus_message_set_destination(n, a->unique_name);
if (r < 0)
return r;
- /*
- * Make sure to only forward NameLost/NameAcquired messages if they
- * match an installed MATCH rule of the local client. We really must
- * not send messages the client doesn't expect.
- */
-
- r = bus_match_run(b, &b->match_callbacks, n);
- if (r >= 0 && p->message_matched)
- r = sd_bus_send(b, n, NULL);
-
- p->message_matched = false;
- p->synthetic_matched = false;
+ r = bus_seal_synthetic_message(b, n);
+ if (r < 0)
+ return r;
- return r;
+ return sd_bus_send(b, n, NULL);
}
diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c
index a48cb4029a..ba73cc410e 100644
--- a/src/core/load-fragment.c
+++ b/src/core/load-fragment.c
@@ -3508,9 +3508,7 @@ static int load_from_path(Unit *u, const char *path) {
r = open_follow(&filename, &f, symlink_names, &id);
if (r < 0) {
- free(filename);
- filename = NULL;
-
+ filename = mfree(filename);
if (r != -ENOENT)
return r;
}
@@ -3534,9 +3532,7 @@ static int load_from_path(Unit *u, const char *path) {
r = open_follow(&filename, &f, symlink_names, &id);
if (r < 0) {
- free(filename);
- filename = NULL;
-
+ filename = mfree(filename);
if (r != -ENOENT)
return r;
diff --git a/src/core/main.c b/src/core/main.c
index 6ae8b51544..a66fb18418 100644
--- a/src/core/main.c
+++ b/src/core/main.c
@@ -1844,13 +1844,11 @@ finish:
arg_default_rlimit[j] = NULL;
}
- free(arg_default_unit);
- arg_default_unit = NULL;
+ arg_default_unit = mfree(arg_default_unit);
free_join_controllers();
- strv_free(arg_default_environment);
- arg_default_environment = NULL;
+ arg_default_environment = strv_free(arg_default_environment);
set_free(arg_syscall_archs);
arg_syscall_archs = NULL;
diff --git a/src/core/snapshot.c b/src/core/snapshot.c
index 1e634b9bc1..9518e21f36 100644
--- a/src/core/snapshot.c
+++ b/src/core/snapshot.c
@@ -217,8 +217,7 @@ int snapshot_create(Manager *m, const char *name, bool cleanup, sd_bus_error *e,
break;
}
- free(n);
- n = NULL;
+ n = mfree(n);
}
}
diff --git a/src/cryptsetup/cryptsetup.c b/src/cryptsetup/cryptsetup.c
index 5c6c7c0ed8..74fa90a233 100644
--- a/src/cryptsetup/cryptsetup.c
+++ b/src/cryptsetup/cryptsetup.c
@@ -333,8 +333,7 @@ static int get_password(const char *vol, const char *src, usec_t until, bool acc
/* If the description string is simply the
* volume name, then let's not show this
* twice */
- free(description);
- description = NULL;
+ description = mfree(description);
}
if (mount_point && description)
diff --git a/src/firstboot/firstboot.c b/src/firstboot/firstboot.c
index 3805b29437..05f1ae2646 100644
--- a/src/firstboot/firstboot.c
+++ b/src/firstboot/firstboot.c
@@ -715,10 +715,8 @@ static int parse_argv(int argc, char *argv[]) {
path_kill_slashes(arg_root);
- if (path_equal(arg_root, "/")) {
- free(arg_root);
- arg_root = NULL;
- }
+ if (path_equal(arg_root, "/"))
+ arg_root = mfree(arg_root);
break;
@@ -728,9 +726,8 @@ static int parse_argv(int argc, char *argv[]) {
return -EINVAL;
}
- free(arg_locale);
- arg_locale = strdup(optarg);
- if (!arg_locale)
+ r = free_and_strdup(&arg_locale, optarg);
+ if (r < 0)
return log_oom();
break;
@@ -741,9 +738,8 @@ static int parse_argv(int argc, char *argv[]) {
return -EINVAL;
}
- free(arg_locale_messages);
- arg_locale_messages = strdup(optarg);
- if (!arg_locale_messages)
+ r = free_and_strdup(&arg_locale_messages, optarg);
+ if (r < 0)
return log_oom();
break;
@@ -754,19 +750,16 @@ static int parse_argv(int argc, char *argv[]) {
return -EINVAL;
}
- free(arg_timezone);
- arg_timezone = strdup(optarg);
- if (!arg_timezone)
+ r = free_and_strdup(&arg_timezone, optarg);
+ if (r < 0)
return log_oom();
break;
case ARG_ROOT_PASSWORD:
- free(arg_root_password);
- arg_root_password = strdup(optarg);
- if (!arg_root_password)
+ r = free_and_strdup(&arg_root_password, optarg);
+ if (r < 0)
return log_oom();
-
break;
case ARG_ROOT_PASSWORD_FILE:
@@ -785,9 +778,8 @@ static int parse_argv(int argc, char *argv[]) {
return -EINVAL;
}
- free(arg_hostname);
- arg_hostname = strdup(optarg);
- if (!arg_hostname)
+ r = free_and_strdup(&arg_hostname, optarg);
+ if (r < 0)
return log_oom();
break;
diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c
index 9fc576fb45..50acb7595c 100644
--- a/src/gpt-auto-generator/gpt-auto-generator.c
+++ b/src/gpt-auto-generator/gpt-auto-generator.c
@@ -727,9 +727,8 @@ static int enumerate_partitions(dev_t devnum) {
boot_nr = nr;
- free(boot);
- boot = strdup(subnode);
- if (!boot)
+ r = free_and_strdup(&boot, subnode);
+ if (r < 0)
return log_oom();
} else if (sd_id128_equal(type_id, GPT_HOME)) {
@@ -741,9 +740,8 @@ static int enumerate_partitions(dev_t devnum) {
home_nr = nr;
home_rw = !(flags & GPT_FLAG_READ_ONLY),
- free(home);
- home = strdup(subnode);
- if (!home)
+ r = free_and_strdup(&home, subnode);
+ if (r < 0)
return log_oom();
} else if (sd_id128_equal(type_id, GPT_SRV)) {
@@ -755,9 +753,8 @@ static int enumerate_partitions(dev_t devnum) {
srv_nr = nr;
srv_rw = !(flags & GPT_FLAG_READ_ONLY),
- free(srv);
- srv = strdup(subnode);
- if (!srv)
+ r = free_and_strdup(&srv, subnode);
+ if (r < 0)
return log_oom();
}
}
diff --git a/src/import/pull-dkr.c b/src/import/pull-dkr.c
index 67ca1ce8e4..c918f43446 100644
--- a/src/import/pull-dkr.c
+++ b/src/import/pull-dkr.c
@@ -592,8 +592,7 @@ static int dkr_pull_pull_layer_v2(DkrPull *i) {
i->current_ancestry++;
- free(path);
- path = NULL;
+ path = mfree(path);
}
log_info("Pulling layer %s...", layer);
@@ -652,8 +651,7 @@ static int dkr_pull_pull_layer(DkrPull *i) {
i->current_ancestry++;
- free(path);
- path = NULL;
+ path = mfree(path);
}
log_info("Pulling layer %s...", layer);
diff --git a/src/journal/catalog.c b/src/journal/catalog.c
index 33b0539315..a3e51e2f52 100644
--- a/src/journal/catalog.c
+++ b/src/journal/catalog.c
@@ -263,8 +263,7 @@ int catalog_import_file(Hashmap *h, struct strbuf *sb, const char *path) {
if (r < 0)
return r;
- free(lang);
- lang = NULL;
+ lang = mfree(lang);
}
if (with_language) {
diff --git a/src/journal/coredumpctl.c b/src/journal/coredumpctl.c
index fc49b2e174..098f62af50 100644
--- a/src/journal/coredumpctl.c
+++ b/src/journal/coredumpctl.c
@@ -587,8 +587,7 @@ static int save_core(sd_journal *j, int fd, char **path, bool *unlink_temp) {
if (filename && access(filename, R_OK) < 0) {
log_full(errno == ENOENT ? LOG_DEBUG : LOG_WARNING,
"File %s is not readable: %m", filename);
- free(filename);
- filename = NULL;
+ filename = mfree(filename);
}
if (filename && !endswith(filename, ".xz") && !endswith(filename, ".lz4")) {
diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c
index 073cc77711..355c4f1ee3 100644
--- a/src/journal/journalctl.c
+++ b/src/journal/journalctl.c
@@ -1259,8 +1259,7 @@ static int add_units(sd_journal *j) {
}
}
- strv_free(patterns);
- patterns = NULL;
+ patterns = strv_free(patterns);
STRV_FOREACH(i, arg_user_units) {
_cleanup_free_ char *u = NULL;
diff --git a/src/libsystemd/sd-bus/bus-control.c b/src/libsystemd/sd-bus/bus-control.c
index c53666ddd0..773c264cf0 100644
--- a/src/libsystemd/sd-bus/bus-control.c
+++ b/src/libsystemd/sd-bus/bus-control.c
@@ -256,9 +256,7 @@ static int kernel_get_list(sd_bus *bus, uint64_t flags, char ***x) {
name_list = (struct kdbus_info *) ((uint8_t *) bus->kdbus_buffer + cmd.offset);
KDBUS_FOREACH(name, name_list, cmd.list_size) {
-
struct kdbus_item *item;
- const char *entry_name = NULL;
if ((flags & KDBUS_LIST_UNIQUE) && name->id != previous_id) {
char *n;
@@ -275,15 +273,15 @@ static int kernel_get_list(sd_bus *bus, uint64_t flags, char ***x) {
previous_id = name->id;
}
- KDBUS_ITEM_FOREACH(item, name, items)
- if (item->type == KDBUS_ITEM_OWNED_NAME)
- entry_name = item->name.name;
-
- if (entry_name && service_name_is_valid(entry_name)) {
- r = strv_extend(x, entry_name);
- if (r < 0) {
- r = -ENOMEM;
- goto fail;
+ KDBUS_ITEM_FOREACH(item, name, items) {
+ if (item->type == KDBUS_ITEM_OWNED_NAME) {
+ if (service_name_is_valid(item->name.name)) {
+ r = strv_extend(x, item->name.name);
+ if (r < 0) {
+ r = -ENOMEM;
+ goto fail;
+ }
+ }
}
}
}
diff --git a/src/libsystemd/sd-bus/bus-match.c b/src/libsystemd/sd-bus/bus-match.c
index e4cbd793ed..18c36ce243 100644
--- a/src/libsystemd/sd-bus/bus-match.c
+++ b/src/libsystemd/sd-bus/bus-match.c
@@ -861,8 +861,7 @@ int bus_match_parse(
if (r < 0)
goto fail;
- free(value);
- value = NULL;
+ value = mfree(value);
} else
u = 0;
diff --git a/src/libsystemd/sd-bus/busctl-introspect.c b/src/libsystemd/sd-bus/busctl-introspect.c
index 15c10da7e9..03e83d08a1 100644
--- a/src/libsystemd/sd-bus/busctl-introspect.c
+++ b/src/libsystemd/sd-bus/busctl-introspect.c
@@ -462,9 +462,8 @@ static int parse_xml_node(Context *context, const char *prefix, unsigned n_depth
}
}
- free(argument_type);
- free(argument_direction);
- argument_type = argument_direction = NULL;
+ argument_type = mfree(argument_type);
+ argument_direction = mfree(argument_direction);
}
state = STATE_METHOD;
@@ -604,8 +603,7 @@ static int parse_xml_node(Context *context, const char *prefix, unsigned n_depth
if (!strextend(&context->member_signature, argument_type, NULL))
return log_oom();
- free(argument_type);
- argument_type = NULL;
+ argument_type = mfree(argument_type);
}
state = STATE_SIGNAL;
diff --git a/src/libsystemd/sd-bus/busctl.c b/src/libsystemd/sd-bus/busctl.c
index 6aaaf0e5ec..a1f0f30d6c 100644
--- a/src/libsystemd/sd-bus/busctl.c
+++ b/src/libsystemd/sd-bus/busctl.c
@@ -656,28 +656,15 @@ static int member_compare_func(const void *a, const void *b) {
assert(x->type);
assert(y->type);
- if (!x->interface && y->interface)
- return -1;
- if (x->interface && !y->interface)
- return 1;
- if (x->interface && y->interface) {
- d = strcmp(x->interface, y->interface);
- if (d != 0)
- return d;
- }
+ d = strcmp_ptr(x->interface, y->interface);
+ if (d != 0)
+ return d;
d = strcmp(x->type, y->type);
if (d != 0)
return d;
- if (!x->name && y->name)
- return -1;
- if (x->name && !y->name)
- return 1;
- if (x->name && y->name)
- return strcmp(x->name, y->name);
-
- return 0;
+ return strcmp_ptr(x->name, y->name);
}
static int member_compare_funcp(const void *a, const void *b) {
@@ -1697,6 +1684,7 @@ static int help(void) {
" --acquired Only show acquired names\n"
" --activatable Only show activatable names\n"
" --match=MATCH Only show matching messages\n"
+ " --size=SIZE Maximum length of captured packet\n"
" --list Don't show tree, but simple object path list\n"
" --quiet Don't show method call reply\n"
" --verbose Show result values in long format\n"
@@ -1837,7 +1825,7 @@ static int parse_argv(int argc, char *argv[]) {
case ARG_SIZE: {
off_t o;
- r = parse_size(optarg, 0, &o);
+ r = parse_size(optarg, 1024, &o);
if (r < 0) {
log_error("Failed to parse size: %s", optarg);
return r;
@@ -2018,15 +2006,15 @@ int main(int argc, char *argv[]) {
}
}
+ r = sd_bus_set_bus_client(bus, true);
+ if (r < 0) {
+ log_error_errno(r, "Failed to set bus client: %m");
+ goto finish;
+ }
+
if (arg_address)
r = sd_bus_set_address(bus, arg_address);
else {
- r = sd_bus_set_bus_client(bus, true);
- if (r < 0) {
- log_error_errno(r, "Failed to set bus client: %m");
- goto finish;
- }
-
switch (arg_transport) {
case BUS_TRANSPORT_LOCAL:
diff --git a/src/libsystemd/sd-bus/sd-bus.c b/src/libsystemd/sd-bus/sd-bus.c
index 0ca225c617..0f075907d5 100644
--- a/src/libsystemd/sd-bus/sd-bus.c
+++ b/src/libsystemd/sd-bus/sd-bus.c
@@ -73,13 +73,9 @@ static void bus_close_fds(sd_bus *b) {
detach_io_events(b);
- if (b->input_fd >= 0)
- safe_close(b->input_fd);
-
- if (b->output_fd >= 0 && b->output_fd != b->input_fd)
+ if (b->input_fd != b->output_fd)
safe_close(b->output_fd);
-
- b->input_fd = b->output_fd = -1;
+ b->output_fd = b->input_fd = safe_close(b->input_fd);
}
static void bus_reset_queues(sd_bus *b) {
@@ -88,15 +84,13 @@ static void bus_reset_queues(sd_bus *b) {
while (b->rqueue_size > 0)
sd_bus_message_unref(b->rqueue[--b->rqueue_size]);
- free(b->rqueue);
- b->rqueue = NULL;
+ b->rqueue = mfree(b->rqueue);
b->rqueue_allocated = 0;
while (b->wqueue_size > 0)
sd_bus_message_unref(b->wqueue[--b->wqueue_size]);
- free(b->wqueue);
- b->wqueue = NULL;
+ b->wqueue = mfree(b->wqueue);
b->wqueue_allocated = 0;
}
@@ -896,10 +890,9 @@ static int parse_container_kernel_address(sd_bus *b, const char **p, char **guid
} else
b->nspid = 0;
- free(b->kernel);
- b->kernel = strdup("/sys/fs/kdbus/0-system/bus");
- if (!b->kernel)
- return -ENOMEM;
+ r = free_and_strdup(&b->kernel, "/sys/fs/kdbus/0-system/bus");
+ if (r < 0)
+ return r;
return 0;
}
@@ -909,15 +902,11 @@ static void bus_reset_parsed_address(sd_bus *b) {
zero(b->sockaddr);
b->sockaddr_size = 0;
- strv_free(b->exec_argv);
- free(b->exec_path);
- b->exec_path = NULL;
- b->exec_argv = NULL;
+ b->exec_argv = strv_free(b->exec_argv);
+ b->exec_path = mfree(b->exec_path);
b->server_id = SD_ID128_NULL;
- free(b->kernel);
- b->kernel = NULL;
- free(b->machine);
- b->machine = NULL;
+ b->kernel = mfree(b->kernel);
+ b->machine = mfree(b->machine);
b->nspid = 0;
}
diff --git a/src/libsystemd/sd-bus/test-bus-proxy.c b/src/libsystemd/sd-bus/test-bus-proxy.c
index 369c2f331c..aef768dc18 100644
--- a/src/libsystemd/sd-bus/test-bus-proxy.c
+++ b/src/libsystemd/sd-bus/test-bus-proxy.c
@@ -53,7 +53,9 @@ static int test_proxy_acquired(sd_bus_message *m, void *userdata, sd_bus_error *
static void test_proxy_matched(void) {
_cleanup_bus_flush_close_unref_ sd_bus *a = NULL;
+ _cleanup_free_ char *matchstr = NULL;
TestProxyMatch match = {};
+ const char *me;
int r;
/* open bus 'a' */
@@ -70,10 +72,17 @@ static void test_proxy_matched(void) {
r = sd_bus_start(a);
assert_se(r >= 0);
- r = sd_bus_add_match(a, NULL,
- "type='signal',"
- "member='NameAcquired'",
- test_proxy_acquired, &match);
+ r = sd_bus_get_unique_name(a, &me);
+ assert_se(r >= 0);
+
+ matchstr = strjoin("type='signal',"
+ "member='NameAcquired',"
+ "destination='",
+ me,
+ "'",
+ NULL);
+ assert_se(matchstr);
+ r = sd_bus_add_match(a, NULL, matchstr, test_proxy_acquired, &match);
assert_se(r >= 0);
r = sd_bus_get_unique_name(a, &match.sender);
diff --git a/src/libsystemd/sd-netlink/test-local-addresses.c b/src/libsystemd/sd-netlink/test-local-addresses.c
index 38cbcfbccb..9867eec065 100644
--- a/src/libsystemd/sd-netlink/test-local-addresses.c
+++ b/src/libsystemd/sd-netlink/test-local-addresses.c
@@ -44,9 +44,8 @@ int main(int argc, char *argv[]) {
printf("Local Addresses:\n");
print_local_addresses(a, (unsigned) n);
- free(a);
+ a = mfree(a);
- a = NULL;
n = local_gateways(NULL, 0, AF_UNSPEC, &a);
assert_se(n >= 0);
diff --git a/src/login/loginctl.c b/src/login/loginctl.c
index 9709eca9bd..5fa98e069f 100644
--- a/src/login/loginctl.c
+++ b/src/login/loginctl.c
@@ -372,11 +372,9 @@ static int prop_map_first_of_struct(sd_bus *bus, const char *member, sd_bus_mess
if (r < 0)
return r;
- free(*p);
- *p = strdup(s);
-
- if (!*p)
- return -ENOMEM;
+ r = free_and_strdup(p, s);
+ if (r < 0)
+ return r;
} else {
r = sd_bus_message_read_basic(m, contents[0], userdata);
if (r < 0)
diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c
index 397952e7e5..b0cd85e985 100644
--- a/src/login/logind-dbus.c
+++ b/src/login/logind-dbus.c
@@ -725,15 +725,13 @@ static int method_create_session(sd_bus_message *message, void *userdata, sd_bus
log_warning("Existing logind session ID %s used by new audit session, ignoring", id);
audit_id = 0;
- free(id);
- id = NULL;
+ id = mfree(id);
}
}
if (!id) {
do {
- free(id);
- id = NULL;
+ id = mfree(id);
if (asprintf(&id, "c%lu", ++m->session_counter) < 0)
return -ENOMEM;
@@ -2355,8 +2353,7 @@ static int method_inhibit(sd_bus_message *message, void *userdata, sd_bus_error
return r;
do {
- free(id);
- id = NULL;
+ id = mfree(id);
if (asprintf(&id, "%lu", ++m->inhibit_counter) < 0)
return -ENOMEM;
diff --git a/src/login/logind-session.c b/src/login/logind-session.c
index 2537d02845..9a2da7906e 100644
--- a/src/login/logind-session.c
+++ b/src/login/logind-session.c
@@ -636,6 +636,9 @@ int session_stop(Session *s, bool force) {
s->timer_event_source = sd_event_source_unref(s->timer_event_source);
+ if (s->seat)
+ seat_evict_position(s->seat, s);
+
/* We are going down, don't care about FIFOs anymore */
session_remove_fifo(s);
@@ -672,6 +675,9 @@ int session_finalize(Session *s) {
s->timer_event_source = sd_event_source_unref(s->timer_event_source);
+ if (s->seat)
+ seat_evict_position(s->seat, s);
+
/* Kill session devices */
while ((sd = hashmap_first(s->devices)))
session_device_free(sd);
diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c
index 9d570e0146..78e96c4e5b 100644
--- a/src/network/networkd-link.c
+++ b/src/network/networkd-link.c
@@ -2059,10 +2059,9 @@ int link_update(Link *link, sd_netlink_message *m) {
link_free_carrier_maps(link);
- free(link->ifname);
- link->ifname = strdup(ifname);
- if (!link->ifname)
- return -ENOMEM;
+ r = free_and_strdup(&link->ifname, ifname);
+ if (r < 0)
+ return r;
r = link_new_carrier_maps(link);
if (r < 0)
diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
index 65b9a5071b..e78b15a8b3 100644
--- a/src/nspawn/nspawn.c
+++ b/src/nspawn/nspawn.c
@@ -309,8 +309,7 @@ static void custom_mount_free_all(void) {
strv_free(m->lower);
}
- free(arg_custom_mounts);
- arg_custom_mounts = NULL;
+ arg_custom_mounts = mfree(arg_custom_mounts);
arg_n_custom_mounts = 0;
}
@@ -503,9 +502,8 @@ static int parse_argv(int argc, char *argv[]) {
break;
case 'u':
- free(arg_user);
- arg_user = strdup(optarg);
- if (!arg_user)
+ r = free_and_strdup(&arg_user, optarg);
+ if (r < 0)
return log_oom();
break;
@@ -562,8 +560,7 @@ static int parse_argv(int argc, char *argv[]) {
case 'M':
if (isempty(optarg)) {
- free(arg_machine);
- arg_machine = NULL;
+ arg_machine = mfree(arg_machine);
} else {
if (!machine_name_is_valid(optarg)) {
log_error("Invalid machine name: %s", optarg);
diff --git a/src/nss-myhostname/nss-myhostname.c b/src/nss-myhostname/nss-myhostname.c
index 31db1aaf68..ab96cb231e 100644
--- a/src/nss-myhostname/nss-myhostname.c
+++ b/src/nss-myhostname/nss-myhostname.c
@@ -464,8 +464,7 @@ enum nss_status _nss_myhostname_gethostbyaddr2_r(
}
}
- free(addresses);
- addresses = NULL;
+ addresses = mfree(addresses);
n_addresses = local_gateways(NULL, 0, AF_UNSPEC, &addresses);
if (n_addresses > 0) {
diff --git a/src/run/run.c b/src/run/run.c
index 148854a9b5..3dd97022de 100644
--- a/src/run/run.c
+++ b/src/run/run.c
@@ -1129,13 +1129,9 @@ int main(int argc, char* argv[]) {
}
if (arg_unit && isempty(description)) {
- free(description);
- description = strdup(arg_unit);
-
- if (!description) {
- r = log_oom();
+ r = free_and_strdup(&description, arg_unit);
+ if (r < 0)
goto finish;
- }
}
arg_description = description;
diff --git a/src/shared/conf-parser.c b/src/shared/conf-parser.c
index 7370c786f9..d99aa1d6e9 100644
--- a/src/shared/conf-parser.c
+++ b/src/shared/conf-parser.c
@@ -333,8 +333,7 @@ int config_parse(const char *unit,
return -ENOMEM;
}
- free(continuation);
- continuation = NULL;
+ continuation = mfree(continuation);
p = c;
} else
p = l;
diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
index 6db4d6587a..4e850ea1cf 100644
--- a/src/systemctl/systemctl.c
+++ b/src/systemctl/systemctl.c
@@ -3327,8 +3327,7 @@ static void print_status_info(
if (! dir || last) {
printf(dir ? " " : " Drop-In: ");
- free(dir);
- dir = NULL;
+ dir = mfree(dir);
if (path_get_parent(*dropin, &dir) < 0) {
log_oom();
diff --git a/src/sysusers/sysusers.c b/src/sysusers/sysusers.c
index d7ba482834..3a92d120d2 100644
--- a/src/sysusers/sysusers.c
+++ b/src/sysusers/sysusers.c
@@ -704,8 +704,7 @@ static int write_files(void) {
goto finish;
}
- free(group_tmp);
- group_tmp = NULL;
+ group_tmp = mfree(group_tmp);
}
if (gshadow) {
if (rename(gshadow_tmp, gshadow_path) < 0) {
@@ -713,8 +712,7 @@ static int write_files(void) {
goto finish;
}
- free(gshadow_tmp);
- gshadow_tmp = NULL;
+ gshadow_tmp = mfree(gshadow_tmp);
}
}
@@ -724,8 +722,7 @@ static int write_files(void) {
goto finish;
}
- free(passwd_tmp);
- passwd_tmp = NULL;
+ passwd_tmp = mfree(passwd_tmp);
}
if (shadow) {
if (rename(shadow_tmp, shadow_path) < 0) {
@@ -733,8 +730,7 @@ static int write_files(void) {
goto finish;
}
- free(shadow_tmp);
- shadow_tmp = NULL;
+ shadow_tmp = mfree(shadow_tmp);
}
r = 0;
@@ -891,8 +887,10 @@ static int add_user(Item *i) {
i->uid = p->pw_uid;
i->uid_set = true;
- free(i->description);
- i->description = strdup(p->pw_gecos);
+ r = free_and_strdup(&i->description, p->pw_gecos);
+ if (r < 0)
+ return log_oom();
+
return 0;
}
if (!IN_SET(errno, 0, ENOENT))
@@ -1149,9 +1147,8 @@ static int process_item(Item *i) {
}
if (i->gid_path) {
- free(j->gid_path);
- j->gid_path = strdup(i->gid_path);
- if (!j->gid_path)
+ r = free_and_strdup(&j->gid_path, i->gid_path);
+ if (r < 0)
return log_oom();
}
@@ -1409,10 +1406,8 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) {
}
/* Verify name */
- if (isempty(name) || streq(name, "-")) {
- free(name);
- name = NULL;
- }
+ if (isempty(name) || streq(name, "-"))
+ name = mfree(name);
if (name) {
r = specifier_printf(name, specifier_table, NULL, &resolved_name);
@@ -1428,10 +1423,8 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) {
}
/* Verify id */
- if (isempty(id) || streq(id, "-")) {
- free(id);
- id = NULL;
- }
+ if (isempty(id) || streq(id, "-"))
+ id = mfree(id);
if (id) {
r = specifier_printf(id, specifier_table, NULL, &resolved_id);
@@ -1442,10 +1435,8 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) {
}
/* Verify description */
- if (isempty(description) || streq(description, "-")) {
- free(description);
- description = NULL;
- }
+ if (isempty(description) || streq(description, "-"))
+ description = mfree(description);
if (description) {
if (!valid_gecos(description)) {
@@ -1455,10 +1446,8 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) {
}
/* Verify home */
- if (isempty(home) || streq(home, "-")) {
- free(home);
- home = NULL;
- }
+ if (isempty(home) || streq(home, "-"))
+ home = mfree(home);
if (home) {
if (!valid_home(home)) {
diff --git a/src/test/test-af-list.c b/src/test/test-af-list.c
new file mode 100644
index 0000000000..d69104f540
--- /dev/null
+++ b/src/test/test-af-list.c
@@ -0,0 +1,48 @@
+/***
+ This file is part of systemd
+
+ Copyright 2015 Daniel Mack
+
+ systemd is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 2.1 of the License, or
+ (at your option) any later version.
+
+ systemd is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with systemd; If not, see <http://www.gnu.org/licenses/>.
+***/
+
+#include <sys/socket.h>
+#include <string.h>
+
+#include "macro.h"
+#include "util.h"
+
+static const struct af_name* lookup_af(register const char *str, register unsigned int len);
+
+#include "af-list.h"
+#include "af-to-name.h"
+#include "af-from-name.h"
+
+int main(int argc, const char *argv[]) {
+
+ unsigned int i;
+
+ for (i = 0; i < ELEMENTSOF(af_names); i++) {
+ if (af_names[i]) {
+ assert_se(streq(af_to_name(i), af_names[i]));
+ assert_se(af_from_name(af_names[i]) == (int) i);
+ }
+ }
+
+ assert_se(af_to_name(af_max()) == NULL);
+ assert_se(af_to_name(-1) == NULL);
+ assert_se(af_from_name("huddlduddl") == AF_UNSPEC);
+
+ return 0;
+} \ No newline at end of file
diff --git a/src/test/test-arphrd-list.c b/src/test/test-arphrd-list.c
new file mode 100644
index 0000000000..d7c8eaa4a9
--- /dev/null
+++ b/src/test/test-arphrd-list.c
@@ -0,0 +1,48 @@
+/***
+ This file is part of systemd
+
+ Copyright 2015 Daniel Mack
+
+ systemd is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 2.1 of the License, or
+ (at your option) any later version.
+
+ systemd is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with systemd; If not, see <http://www.gnu.org/licenses/>.
+***/
+
+#include <net/if_arp.h>
+#include <string.h>
+
+#include "macro.h"
+#include "util.h"
+
+static const struct arphrd_name* lookup_arphrd(register const char *str, register unsigned int len);
+
+#include "arphrd-list.h"
+#include "arphrd-to-name.h"
+#include "arphrd-from-name.h"
+
+int main(int argc, const char *argv[]) {
+
+ unsigned int i;
+
+ for (i = 1; i < ELEMENTSOF(arphrd_names); i++) {
+ if (arphrd_names[i]) {
+ assert_se(streq(arphrd_to_name(i), arphrd_names[i]));
+ assert_se(arphrd_from_name(arphrd_names[i]) == (int) i);
+ }
+ }
+
+ assert_se(arphrd_to_name(arphrd_max()) == NULL);
+ assert_se(arphrd_to_name(0) == NULL);
+ assert_se(arphrd_from_name("huddlduddl") == 0);
+
+ return 0;
+} \ No newline at end of file
diff --git a/src/test/test-bitmap.c b/src/test/test-bitmap.c
index 96deeded7e..ff22117745 100644
--- a/src/test/test-bitmap.c
+++ b/src/test/test-bitmap.c
@@ -20,7 +20,7 @@
#include "bitmap.h"
int main(int argc, const char *argv[]) {
- _cleanup_bitmap_free_ Bitmap *b = NULL;
+ _cleanup_bitmap_free_ Bitmap *b = NULL, *b2 = NULL;
Iterator it;
unsigned n = (unsigned) -1, i = 0;
@@ -101,5 +101,23 @@ int main(int argc, const char *argv[]) {
assert_se(bitmap_set(b, (unsigned) -1) == -ERANGE);
+ bitmap_free(b);
+ b = NULL;
+ assert_se(bitmap_ensure_allocated(&b) == 0);
+ assert_se(bitmap_ensure_allocated(&b2) == 0);
+
+ assert_se(bitmap_equal(b, b2));
+ assert_se(bitmap_set(b, 0) == 0);
+ bitmap_unset(b, 0);
+ assert_se(bitmap_equal(b, b2));
+
+ assert_se(bitmap_set(b, 1) == 0);
+ bitmap_clear(b);
+ assert_se(bitmap_equal(b, b2));
+
+ assert_se(bitmap_set(b, 0) == 0);
+ assert_se(bitmap_set(b2, 0) == 0);
+ assert_se(bitmap_equal(b, b2));
+
return 0;
}
diff --git a/src/test/test-socket-util.c b/src/test/test-socket-util.c
index f257af445a..2c18090ae5 100644
--- a/src/test/test-socket-util.c
+++ b/src/test/test-socket-util.c
@@ -158,6 +158,20 @@ static void test_socket_address_is_netlink(void) {
assert_se(!socket_address_is_netlink(&a, "route 1"));
}
+static void test_in_addr_is_null(void) {
+
+ union in_addr_union i = {};
+
+ assert_se(in_addr_is_null(AF_INET, &i) == true);
+ assert_se(in_addr_is_null(AF_INET6, &i) == true);
+
+ i.in.s_addr = 0x1000000;
+ assert_se(in_addr_is_null(AF_INET, &i) == false);
+ assert_se(in_addr_is_null(AF_INET6, &i) == false);
+
+ assert_se(in_addr_is_null(-1, &i) == -EAFNOSUPPORT);
+}
+
static void test_in_addr_prefix_intersect_one(unsigned f, const char *a, unsigned apl, const char *b, unsigned bpl, int result) {
union in_addr_union ua, ub;
@@ -340,6 +354,7 @@ int main(int argc, char *argv[]) {
test_socket_address_is();
test_socket_address_is_netlink();
+ test_in_addr_is_null();
test_in_addr_prefix_intersect();
test_in_addr_prefix_next();
test_in_addr_to_string();
diff --git a/src/test/test-util.c b/src/test/test-util.c
index f43433baa1..3e87e9e710 100644
--- a/src/test/test-util.c
+++ b/src/test/test-util.c
@@ -280,6 +280,39 @@ static void test_parse_uid(void) {
r = parse_uid("100", &uid);
assert_se(r == 0);
assert_se(uid == 100);
+
+ r = parse_uid("65535", &uid);
+ assert_se(r == -ENXIO);
+}
+
+static void test_safe_atou16(void) {
+ int r;
+ uint16_t l;
+
+ r = safe_atou16("12345", &l);
+ assert_se(r == 0);
+ assert_se(l == 12345);
+
+ r = safe_atou16("123456", &l);
+ assert_se(r == -ERANGE);
+
+ r = safe_atou16("junk", &l);
+ assert_se(r == -EINVAL);
+}
+
+static void test_safe_atoi16(void) {
+ int r;
+ int16_t l;
+
+ r = safe_atoi16("-12345", &l);
+ assert_se(r == 0);
+ assert_se(l == -12345);
+
+ r = safe_atoi16("36536", &l);
+ assert_se(r == -ERANGE);
+
+ r = safe_atoi16("junk", &l);
+ assert_se(r == -EINVAL);
}
static void test_safe_atolli(void) {
@@ -583,6 +616,15 @@ static void test_unbase32hexmem(void) {
assert_se(unbase32hexmem("AAAAB===", strlen("AAAAB==="), true, &mem, &len) == -EINVAL);
assert_se(unbase32hexmem("AAAAAAB=", strlen("AAAAAAB="), true, &mem, &len) == -EINVAL);
+ assert_se(unbase32hexmem("XPNMUOJ1", strlen("CPNMUOJ1"), true, &mem, &len) == -EINVAL);
+ assert_se(unbase32hexmem("CXNMUOJ1", strlen("CPNMUOJ1"), true, &mem, &len) == -EINVAL);
+ assert_se(unbase32hexmem("CPXMUOJ1", strlen("CPNMUOJ1"), true, &mem, &len) == -EINVAL);
+ assert_se(unbase32hexmem("CPNXUOJ1", strlen("CPNMUOJ1"), true, &mem, &len) == -EINVAL);
+ assert_se(unbase32hexmem("CPNMXOJ1", strlen("CPNMUOJ1"), true, &mem, &len) == -EINVAL);
+ assert_se(unbase32hexmem("CPNMUXJ1", strlen("CPNMUOJ1"), true, &mem, &len) == -EINVAL);
+ assert_se(unbase32hexmem("CPNMUOX1", strlen("CPNMUOJ1"), true, &mem, &len) == -EINVAL);
+ assert_se(unbase32hexmem("CPNMUOJX", strlen("CPNMUOJ1"), true, &mem, &len) == -EINVAL);
+
assert_se(unbase32hexmem("", strlen(""), false, &mem, &len) == 0);
assert_se(streq(strndupa(mem, len), ""));
free(mem);
@@ -714,45 +756,38 @@ static void test_cunescape(void) {
assert_se(cunescape("abc\\\\\\\"\\b\\f\\a\\n\\r\\t\\v\\003\\177\\234\\313\\000\\x00", 0, &unescaped) < 0);
assert_se(cunescape("abc\\\\\\\"\\b\\f\\a\\n\\r\\t\\v\\003\\177\\234\\313\\000\\x00", UNESCAPE_RELAX, &unescaped) >= 0);
assert_se(streq_ptr(unescaped, "abc\\\"\b\f\a\n\r\t\v\003\177\234\313\\000\\x00"));
- free(unescaped);
- unescaped = NULL;
+ unescaped = mfree(unescaped);
/* incomplete sequences */
assert_se(cunescape("\\x0", 0, &unescaped) < 0);
assert_se(cunescape("\\x0", UNESCAPE_RELAX, &unescaped) >= 0);
assert_se(streq_ptr(unescaped, "\\x0"));
- free(unescaped);
- unescaped = NULL;
+ unescaped = mfree(unescaped);
assert_se(cunescape("\\x", 0, &unescaped) < 0);
assert_se(cunescape("\\x", UNESCAPE_RELAX, &unescaped) >= 0);
assert_se(streq_ptr(unescaped, "\\x"));
- free(unescaped);
- unescaped = NULL;
+ unescaped = mfree(unescaped);
assert_se(cunescape("\\", 0, &unescaped) < 0);
assert_se(cunescape("\\", UNESCAPE_RELAX, &unescaped) >= 0);
assert_se(streq_ptr(unescaped, "\\"));
- free(unescaped);
- unescaped = NULL;
+ unescaped = mfree(unescaped);
assert_se(cunescape("\\11", 0, &unescaped) < 0);
assert_se(cunescape("\\11", UNESCAPE_RELAX, &unescaped) >= 0);
assert_se(streq_ptr(unescaped, "\\11"));
- free(unescaped);
- unescaped = NULL;
+ unescaped = mfree(unescaped);
assert_se(cunescape("\\1", 0, &unescaped) < 0);
assert_se(cunescape("\\1", UNESCAPE_RELAX, &unescaped) >= 0);
assert_se(streq_ptr(unescaped, "\\1"));
- free(unescaped);
- unescaped = NULL;
+ unescaped = mfree(unescaped);
assert_se(cunescape("\\u0000", 0, &unescaped) < 0);
assert_se(cunescape("\\u00DF\\U000000df\\u03a0\\U00000041", UNESCAPE_RELAX, &unescaped) >= 0);
assert_se(streq_ptr(unescaped, "ßßΠA"));
- free(unescaped);
- unescaped = NULL;
+ unescaped = mfree(unescaped);
assert_se(cunescape("\\073", 0, &unescaped) >= 0);
assert_se(streq_ptr(unescaped, ";"));
@@ -859,32 +894,28 @@ static void test_read_hostname_config(void) {
write_string_file(path, "foo", WRITE_STRING_FILE_CREATE);
assert_se(read_hostname_config(path, &hostname) == 0);
assert_se(streq(hostname, "foo"));
- free(hostname);
- hostname = NULL;
+ hostname = mfree(hostname);
/* with comment */
write_string_file(path, "# comment\nfoo", WRITE_STRING_FILE_CREATE);
assert_se(read_hostname_config(path, &hostname) == 0);
assert_se(hostname);
assert_se(streq(hostname, "foo"));
- free(hostname);
- hostname = NULL;
+ hostname = mfree(hostname);
/* with comment and extra whitespace */
write_string_file(path, "# comment\n\n foo ", WRITE_STRING_FILE_CREATE);
assert_se(read_hostname_config(path, &hostname) == 0);
assert_se(hostname);
assert_se(streq(hostname, "foo"));
- free(hostname);
- hostname = NULL;
+ hostname = mfree(hostname);
/* cleans up name */
write_string_file(path, "!foo/bar.com", WRITE_STRING_FILE_CREATE);
assert_se(read_hostname_config(path, &hostname) == 0);
assert_se(hostname);
assert_se(streq(hostname, "foobar.com"));
- free(hostname);
- hostname = NULL;
+ hostname = mfree(hostname);
/* no value set */
hostname = (char*) 0x1234;
@@ -1260,6 +1291,16 @@ static void test_endswith(void) {
assert_se(!endswith("foobar", "foobarfoofoo"));
}
+static void test_endswith_no_case(void) {
+ assert_se(endswith_no_case("fooBAR", "bar"));
+ assert_se(endswith_no_case("foobar", ""));
+ assert_se(endswith_no_case("foobar", "FOOBAR"));
+ assert_se(endswith_no_case("", ""));
+
+ assert_se(!endswith_no_case("foobar", "FOO"));
+ assert_se(!endswith_no_case("foobar", "FOOBARFOOFOO"));
+}
+
static void test_close_nointr(void) {
char name[] = "/tmp/test-test-close_nointr.XXXXXX";
int fd;
@@ -2083,6 +2124,18 @@ static void test_tempfn(void) {
free(ret);
}
+static void test_strcmp_ptr(void) {
+ assert_se(strcmp_ptr(NULL, NULL) == 0);
+ assert_se(strcmp_ptr("", NULL) > 0);
+ assert_se(strcmp_ptr("foo", NULL) > 0);
+ assert_se(strcmp_ptr(NULL, "") < 0);
+ assert_se(strcmp_ptr(NULL, "bar") < 0);
+ assert_se(strcmp_ptr("foo", "bar") > 0);
+ assert_se(strcmp_ptr("bar", "baz") < 0);
+ assert_se(strcmp_ptr("foo", "foo") == 0);
+ assert_se(strcmp_ptr("", "") == 0);
+}
+
int main(int argc, char *argv[]) {
log_parse_environment();
log_open();
@@ -2098,6 +2151,8 @@ int main(int argc, char *argv[]) {
test_parse_boolean();
test_parse_pid();
test_parse_uid();
+ test_safe_atou16();
+ test_safe_atoi16();
test_safe_atolli();
test_safe_atod();
test_strappend();
@@ -2147,6 +2202,7 @@ int main(int argc, char *argv[]) {
test_is_valid_documentation_url();
test_file_in_same_dir();
test_endswith();
+ test_endswith_no_case();
test_close_nointr();
test_unlink_noerrno();
test_readlink_and_make_absolute();
@@ -2169,6 +2225,7 @@ int main(int argc, char *argv[]) {
test_shell_maybe_quote();
test_parse_mode();
test_tempfn();
+ test_strcmp_ptr();
return 0;
}
diff --git a/src/timesync/timesyncd.c b/src/timesync/timesyncd.c
index b030206948..7b4178c993 100644
--- a/src/timesync/timesyncd.c
+++ b/src/timesync/timesyncd.c
@@ -113,10 +113,6 @@ int main(int argc, char *argv[]) {
if (r < 0)
goto finish;
- /* We need one process for ourselves, plus one thread for the asynchronous resolver */
- if (setrlimit(RLIMIT_NPROC, &RLIMIT_MAKE_CONST(2)) < 0)
- log_warning_errno(errno, "Failed to lower RLIMIT_NPROC to 2: %m");
-
assert_se(sigprocmask_many(SIG_BLOCK, NULL, SIGTERM, SIGINT, -1) >= 0);
r = manager_new(&m);
diff --git a/src/tty-ask-password-agent/tty-ask-password-agent.c b/src/tty-ask-password-agent/tty-ask-password-agent.c
index 73b19d8e89..82cbf95f1e 100644
--- a/src/tty-ask-password-agent/tty-ask-password-agent.c
+++ b/src/tty-ask-password-agent/tty-ask-password-agent.c
@@ -162,8 +162,7 @@ static int ask_password_plymouth(
/* Hmm, first try with cached
* passwords failed, so let's retry
* with a normal password request */
- free(packet);
- packet = NULL;
+ packet = mfree(packet);
if (asprintf(&packet, "*\002%c%s%n", (int) (strlen(message) + 1), message, &n) < 0)
return -ENOMEM;
diff --git a/src/udev/udev-builtin-path_id.c b/src/udev/udev-builtin-path_id.c
index 4ca0a69d7d..aa5cda6fe7 100644
--- a/src/udev/udev-builtin-path_id.c
+++ b/src/udev/udev-builtin-path_id.c
@@ -674,20 +674,16 @@ static int builtin_path_id(struct udev_device *dev, int argc, char *argv[], bool
* might produce conflicting IDs if the parent does not provide a
* unique and predictable name.
*/
- if (!supported_parent) {
- free(path);
- path = NULL;
- }
+ if (!supported_parent)
+ path = mfree(path);
/*
* Do not return block devices without a well-known transport. Some
* devices do not expose their buses and do not provide a unique
* and predictable name that way.
*/
- if (streq(udev_device_get_subsystem(dev), "block") && !supported_transport) {
- free(path);
- path = NULL;
- }
+ if (streq(udev_device_get_subsystem(dev), "block") && !supported_transport)
+ path = mfree(path);
out:
if (path != NULL) {
diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c
index d00f90afa6..368da9b1ae 100644
--- a/src/udev/udev-rules.c
+++ b/src/udev/udev-rules.c
@@ -2429,8 +2429,7 @@ int udev_rules_apply_to_event(struct udev_rules *rules,
rules_str(rules, rule->rule.filename_off), rule->rule.filename_line);
break;
}
- free(event->name);
- event->name = strdup(name_str);
+ free_and_strdup(&event->name, name_str);
log_debug("NAME '%s' %s:%u",
event->name,
rules_str(rules, rule->rule.filename_off),
@@ -2590,8 +2589,7 @@ int udev_rules_apply_static_dev_perms(struct udev_rules *rules) {
uid = 0;
gid = 0;
mode = 0;
- strv_free(tags);
- tags = NULL;
+ tags = strv_free(tags);
break;
case TK_A_OWNER_ID:
uid = cur->key.uid;