[systemd-commits] stable Branch 'v208-stable' - 83 commits - hwdb/20-bluetooth-vendor-product.hwdb hwdb/20-OUI.hwdb hwdb/20-pci-vendor-model.hwdb hwdb/20-usb-vendor-model.hwdb hwdb/60-keyboard.hwdb Makefile.am man/journalctl.xml man/kernel-command-line.xml man/localectl.xml man/systemctl.xml man/systemd.automount.xml man/systemd.device.xml man/systemd.exec.xml man/systemd.kill.xml man/systemd.mount.xml man/systemd.path.xml man/systemd.service.xml man/systemd.snapshot.xml man/systemd.socket.xml man/systemd.swap.xml man/systemd.target.xml man/systemd.timer.xml man/systemd.unit.xml man/systemd.xml man/udev.xml shell-completion/bash shell-completion/zsh src/analyze src/bootchart src/core src/journal src/kernel-install src/locale src/login src/nspawn src/python-systemd src/shared src/systemctl src/tmpfiles src/udev sysctl.d/50-default.conf test/loopy2.service test/loopy.service test/loopy.service.d units/emergency.service.in units/.gitignore units/rescue.service.in units/rescue.service.m4.in units /systemd-tmpfiles-setup-dev.service.in

Zbigniew Jędrzejewski-Szmek zbyszek at kemper.freedesktop.org
Wed Oct 29 22:31:56 PDT 2014


 Makefile.am                                 |   26 
 hwdb/20-OUI.hwdb                            |  804 ++++++++
 hwdb/20-bluetooth-vendor-product.hwdb       |   95 +
 hwdb/20-pci-vendor-model.hwdb               | 2608 +++++++++++++++++++++++++++-
 hwdb/20-usb-vendor-model.hwdb               |  222 ++
 hwdb/60-keyboard.hwdb                       |   89 
 man/journalctl.xml                          |   19 
 man/kernel-command-line.xml                 |    1 
 man/localectl.xml                           |    2 
 man/systemctl.xml                           |   17 
 man/systemd.automount.xml                   |    2 
 man/systemd.device.xml                      |    2 
 man/systemd.exec.xml                        |    2 
 man/systemd.kill.xml                        |    2 
 man/systemd.mount.xml                       |    2 
 man/systemd.path.xml                        |    2 
 man/systemd.service.xml                     |   12 
 man/systemd.snapshot.xml                    |    4 
 man/systemd.socket.xml                      |   12 
 man/systemd.swap.xml                        |   10 
 man/systemd.target.xml                      |    2 
 man/systemd.timer.xml                       |    2 
 man/systemd.unit.xml                        |   15 
 man/systemd.xml                             |    8 
 man/udev.xml                                |   12 
 shell-completion/bash/.gitignore            |    1 
 shell-completion/bash/systemctl             |  226 --
 shell-completion/bash/systemctl.in          |  254 ++
 shell-completion/zsh/.gitignore             |    1 
 shell-completion/zsh/_journalctl            |   16 
 shell-completion/zsh/_sd_outputmodes        |    5 
 shell-completion/zsh/_sd_unit_files         |    9 
 shell-completion/zsh/_systemctl             |  345 ---
 shell-completion/zsh/_systemctl.in          |  385 ++++
 shell-completion/zsh/_systemd-analyze       |    7 
 src/analyze/systemd-analyze.c               |    3 
 src/bootchart/bootchart.c                   |    6 
 src/core/load-dropin.c                      |    2 
 src/core/load-fragment.c                    |   58 
 src/core/main.c                             |    1 
 src/core/manager.c                          |    2 
 src/core/smack-setup.c                      |    2 
 src/core/socket.c                           |    2 
 src/core/switch-root.c                      |    4 
 src/core/unit.c                             |   86 
 src/journal/journal-file.c                  |    3 
 src/journal/journal-file.h                  |   12 
 src/journal/journal-internal.h              |    4 
 src/journal/journal-verify.c                |    2 
 src/journal/journalctl.c                    |   29 
 src/journal/journald-kmsg.c                 |    2 
 src/journal/mmap-cache.c                    |   42 
 src/journal/mmap-cache.h                    |    8 
 src/journal/sd-journal.c                    |   44 
 src/journal/test-mmap-cache.c               |   10 
 src/kernel-install/90-loaderentry.install   |    9 
 src/locale/localed.c                        |  140 +
 src/login/70-power-switch.rules             |    2 
 src/nspawn/nspawn.c                         |    2 
 src/python-systemd/_reader.c                |    5 
 src/shared/calendarspec.c                   |    3 
 src/shared/conf-parser.c                    |    1 
 src/shared/exit-status.h                    |    2 
 src/shared/fileio-label.c                   |    4 
 src/shared/install.c                        |   21 
 src/shared/path-util.c                      |   11 
 src/shared/util.c                           |    1 
 src/systemctl/systemctl.c                   |   15 
 src/tmpfiles/tmpfiles.c                     |    2 
 src/udev/udev-builtin-hwdb.c                |   22 
 src/udev/udev-builtin-keyboard.c            |   16 
 src/udev/udev-rules.c                       |    6 
 src/udev/udevd.c                            |    4 
 sysctl.d/50-default.conf                    |    2 
 test/loopy.service                          |    2 
 test/loopy.service.d/compat.conf            |    5 
 test/loopy2.service                         |    1 
 units/.gitignore                            |    1 
 units/emergency.service.in                  |    3 
 units/rescue.service.in                     |   28 
 units/rescue.service.m4.in                  |   28 
 units/systemd-tmpfiles-setup-dev.service.in |    2 
 82 files changed, 4913 insertions(+), 968 deletions(-)

New commits:
commit 136e59d275326b4becbdcefeaf3d70519df32cfd
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Wed Oct 29 23:47:55 2014 -0400

    zsh-completion: update start/restart completions
    
    Now zsh should behave the same for those two subcommands as bash.
    
    (cherry picked from commit 81333ecf9d5497f8aa95f7fec23c67b869d5abf9)

diff --git a/shell-completion/zsh/_systemctl.in b/shell-completion/zsh/_systemctl.in
index da16bc9..8630139 100644
--- a/shell-completion/zsh/_systemctl.in
+++ b/shell-completion/zsh/_systemctl.in
@@ -138,13 +138,29 @@ _filter_units_by_property() {
   done
 }
 
-_systemctl_all_units() { { __systemctl list-unit-files; __systemctl list-units --all; } | { while read -r a b; do echo -E - " $a"; done; } }
+_systemctl_all_units() { { __systemctl list-unit-files; __systemctl list-units --all; } | { while read -r a b; do [[ $a =~ @\. ]] || echo -E - " $a"; done; } }
 _systemctl_get_template_names() { __systemctl list-unit-files | { while read -r a b; do  [[ $a =~ @\. ]] && echo -E - " ${a%%@.*}@"; done; } }
 
 
 _systemctl_active_units()  {_sys_active_units=(  $(__systemctl list-units          | { while read -r a b; do echo -E - " $a"; done; }) )}
-_systemctl_startable_units(){_sys_startable_units=($(__systemctl list-units --state inactive,failed -- $(_systemctl_all_units) | { while read -r a b c d; do [[ $b == "loaded" ]] && echo -E - " $a"; done; }) )}
-_systemctl_restartable_units(){_sys_restartable_units=($(__systemctl list-units --state inactive,failed,active -- $(_systemctl_all_units) | { while read -r a b c d; do [[ $b == "loaded" ]] && echo -E - " $a"; done; }) )}
+
+_systemctl_startable_units(){
+    _sys_startable_units=(_filter_units_by_property ActiveState inactive $(
+                          _filter_units_by_property CanStart yes $(
+                          __systemctl $mode list-unit-files --state enabled,disabled,static | \
+                               { while read -r a b; do [[ $a =~ @\. ]] || echo -E - " $a"; done; }
+                          __systemctl $mode list-units --state inactive,failed | \
+                               { while read -r a b; do echo -E - " $a"; done; } )))
+}
+
+_systemctl_restartable_units(){
+    _sys_restartable_units=(_filter_units_by_property CanStart yes $(
+                          __systemctl $mode list-unit-files --state enabled,disabled,static | \
+                               { while read -r a b; do [[ $a =~ @\. ]] || echo -E - " $a"; done; }
+                          __systemctl $mode list-units | \
+                               { while read -r a b; do echo -E - " $a"; done; } ))
+}
+
 _systemctl_failed_units()  {_sys_failed_units=(  $(__systemctl list-units --failed | { while read -r a b; do echo -E - " $a"; done; }) )}
 _systemctl_enabled_units() {_sys_enabled_units=( $(__systemctl list-unit-files     | { while read -r a b; do [[ $b == "enabled" ]] && echo -E - " $a"; done; }) )}
 _systemctl_disabled_units(){_sys_disabled_units=($(__systemctl list-unit-files     | { while read -r a b; do [[ $b == "disabled" ]] && echo -E - " $a"; done; }) )}
@@ -191,8 +207,7 @@ done
 (( $+functions[_systemctl_start] )) || _systemctl_start()
 {
    _systemctl_startable_units
-   compadd "$@" - $( _filter_units_by_property CanStart yes \
-      ${_sys_startable_units[*]} )
+   compadd "$@" - ${_sys_startable_units[*]} $(_systemctl_get_template_names)
 }
 
 # Completion functions for STOPPABLE_UNITS
@@ -228,8 +243,7 @@ for fun in restart reload-or-restart ; do
   (( $+functions[_systemctl_$fun] )) || _systemctl_$fun()
   {
     _systemctl_restartable_units
-    compadd "$@" - $( _filter_units_by_property CanStart yes \
-      ${_sys_restartable_units[*]} )
+    compadd "$@" - ${_sys_restartable_units[*]} $(_systemctl_get_template_names)
   }
 done
 

commit ad894f24df73d6b5f596ff610e7ce98b4e45827f
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Wed Oct 29 23:06:58 2014 -0400

    bash-completion: use improved filtering to make things faster
    
    (cherry picked from commit 372b221166eb586c4f767969f442ed940e21f353)

diff --git a/shell-completion/bash/systemctl.in b/shell-completion/bash/systemctl.in
index 8ef4070..9d9ff22 100644
--- a/shell-completion/bash/systemctl.in
+++ b/shell-completion/bash/systemctl.in
@@ -60,14 +60,20 @@ __get_active_units   () { __systemctl $1 list-units       \
         | { while read -r a b; do echo " $a"; done; }; }
 __get_startable_units () {
         # find startable inactive units
-        __filter_units_by_property $mode LoadState loaded $(
-            __filter_units_by_property $mode ActiveState inactive $(
-                __filter_units_by_property $mode CanStart yes $( __get_all_units )))
+        __filter_units_by_property $mode ActiveState inactive $(
+            __filter_units_by_property $mode CanStart yes $(
+                __systemctl $mode list-unit-files --state enabled,disabled,static | \
+                    { while read -r a b; do [[ $a =~ @\. ]] || echo " $a"; done; }
+                __systemctl $mode list-units --state inactive,failed | \
+                    { while read -r a b; do echo " $a"; done; } ))
 }
 __get_restartable_units () {
         # filter out masked and not-found
-        __filter_units_by_property $mode LoadState loaded $(
-            __filter_units_by_property $mode CanStart yes $( __get_all_units ))
+        __filter_units_by_property $mode CanStart yes $(
+            __systemctl $mode list-unit-files --state enabled,disabled,static | \
+                    { while read -r a b; do [[ $a =~ @\. ]] || echo " $a"; done; }
+            __systemctl $mode list-units | \
+                    { while read -r a b; do echo " $a"; done; } )
 }
 __get_failed_units   () { __systemctl $1 list-units       \
         | { while read -r a b c d; do [[ $c == "failed"   ]] && echo " $a"; done; }; }

commit f971bf69e3e7d188e1cd7fa77fc7cd990e1b904e
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Wed Oct 29 22:51:00 2014 -0400

    systemctl: obey --state in list-unit-files
    
    (cherry picked from commit fec1530e6b5b8d6dc352c7338010357126e84621)
    
    Conflicts:
    	src/systemctl/systemctl.c

diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
index cca1fbb..85798e2 100644
--- a/src/systemctl/systemctl.c
+++ b/src/systemctl/systemctl.c
@@ -777,6 +777,11 @@ static int compare_unit_file_list(const void *a, const void *b) {
 static bool output_show_unit_file(const UnitFileList *u) {
         const char *dot;
 
+        if (!strv_isempty(arg_states)) {
+                if (!strv_find(arg_states, unit_file_state_to_string(u->state)))
+                        return false;
+        }
+
         return !arg_types || ((dot = strrchr(u->path, '.')) && strv_find(arg_types, dot+1));
 }
 

commit 281593c1e9ba587165442ef33cb8bec2c52f2494
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Wed Oct 29 22:46:30 2014 -0400

    systemctl: let list-{units,unit-files } honour --type
    
    The docs don't clarify what is expected, but I don't see any reason
    why --type should be ignored.
    
    Also restucture the compund conditions into separate clauses for
    easier reading.
    
    (cherry picked from commit 6c71341aeecc3d092ed90f66e1b2c481b8e260ff)
    
    Conflicts:
    	src/systemctl/systemctl.c

diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
index 7bb3d0c..cca1fbb 100644
--- a/src/systemctl/systemctl.c
+++ b/src/systemctl/systemctl.c
@@ -277,8 +277,10 @@ static int compare_unit_info(const void *a, const void *b) {
 static bool output_show_unit(const struct unit_info *u) {
         const char *dot;
 
-        if (!strv_isempty(arg_states))
-                return strv_contains(arg_states, u->load_state) || strv_contains(arg_states, u->sub_state) || strv_contains(arg_states, u->active_state);
+        if (!strv_isempty(arg_states)) {
+                if (!strv_contains(arg_states, u->load_state) && !strv_contains(arg_states, u->sub_state) && !strv_contains(arg_states, u->active_state))
+                        return false;
+        }
 
         return (!arg_types || ((dot = strrchr(u->id, '.')) &&
                                strv_find(arg_types, dot+1))) &&

commit b5d7c81b899452f4c30d056f15982be424d8d6be
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Wed Oct 29 22:25:33 2014 -0400

    bash-completion: rework startable/restartable units once more
    
    I tried to use 'systemctl --all list-units' to filter unit files, but
    this always filters out unit files which are not loaded. We want to complete
    systemctl start with those units too, so this approach is not going to work.
    
    New version is rather slow, but hopefully correct.
    
    (cherry picked from commit 9ff8af5460d57dfab78a1137ec743b539715e82a)

diff --git a/shell-completion/bash/systemctl.in b/shell-completion/bash/systemctl.in
index 3c52d2b..8ef4070 100644
--- a/shell-completion/bash/systemctl.in
+++ b/shell-completion/bash/systemctl.in
@@ -52,20 +52,23 @@ __filter_units_by_property () {
 }
 
 __get_all_units      () { { __systemctl $1 list-unit-files; __systemctl $1 list-units --all; } \
-        | { while read -r a b; do echo " $a"; done; }; }
+        | { while read -r a b; do [[ $a =~ @\. ]] || echo " $a"; done; }; }
 __get_template_names () { __systemctl $1 list-unit-files \
         | { while read -r a b; do [[ $a =~ @\. ]] && echo " ${a%%@.*}@"; done; }; }
 
 __get_active_units   () { __systemctl $1 list-units       \
         | { while read -r a b; do echo " $a"; done; }; }
 __get_startable_units () {
-        # find inactive or failed units, filter out masked and not-found
-        __systemctl $1 list-units --state inactive,failed -- $( __get_all_units ) | \
-                { while read -r a b c d; do [[ $b == "loaded" ]] && echo " $a"; done; }; }
+        # find startable inactive units
+        __filter_units_by_property $mode LoadState loaded $(
+            __filter_units_by_property $mode ActiveState inactive $(
+                __filter_units_by_property $mode CanStart yes $( __get_all_units )))
+}
 __get_restartable_units () {
-        # find !masked, filter out masked and not-found
-        __systemctl $1 list-units --state active,inactive,failed -- $( __get_all_units ) | \
-                { while read -r a b c d; do [[ $b == "loaded" ]] && echo " $a"; done; }; }
+        # filter out masked and not-found
+        __filter_units_by_property $mode LoadState loaded $(
+            __filter_units_by_property $mode CanStart yes $( __get_all_units ))
+}
 __get_failed_units   () { __systemctl $1 list-units       \
         | { while read -r a b c d; do [[ $c == "failed"   ]] && echo " $a"; done; }; }
 __get_enabled_units  () { __systemctl $1 list-unit-files  \
@@ -183,15 +186,13 @@ _systemctl () {
                 compopt -o filenames
 
         elif __contains_word "$verb" ${VERBS[STARTABLE_UNITS]}; then
-                comps=$( __filter_units_by_property $mode CanStart yes \
-                        $( __get_startable_units $mode);
-                        __get_template_names $mode)
+                comps=$( __get_startable_units $mode;
+                         __get_template_names $mode)
                 compopt -o filenames
 
         elif __contains_word "$verb" ${VERBS[RESTARTABLE_UNITS]}; then
-                comps=$( __filter_units_by_property $mode CanStart yes \
-                        $( __get_restartable_units $mode); \
-                        __get_template_names $mode)
+                comps=$( __get_restartable_units $mode;
+                         __get_template_names $mode)
                 compopt -o filenames
 
         elif __contains_word "$verb" ${VERBS[STOPPABLE_UNITS]}; then

commit 2a7401c74e2ac03e0f738fcddecfb7d7835460bb
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Mon Oct 27 21:34:28 2014 -0500

    shell-completion: systemctl set-default,get-default,is-system-running
    
    (cherry picked from commit 1cf3c30c0787f941b0f6d0b11ab504ddee3b0b8f)
    
    Conflicts:
    	TODO
    	shell-completion/bash/systemctl.in
    
    [stable: removed changes for is-system-running]

diff --git a/shell-completion/zsh/_systemctl.in b/shell-completion/zsh/_systemctl.in
index 89b04e1..da16bc9 100644
--- a/shell-completion/zsh/_systemctl.in
+++ b/shell-completion/zsh/_systemctl.in
@@ -29,6 +29,8 @@
     "disable:Disable one or more unit files"
     "reenable:Reenable one or more unit files"
     "preset:Enable/disable one or more unit files based on preset configuration"
+    "set-default:Set the default target"
+    "get-default:Query the default target"
     "help:Show documentation for specified units"
     "list-dependencies:Show unit dependency tree"
     "mask:Mask one or more units"
@@ -235,21 +237,28 @@ done
 (( $+functions[_systemctl_unmask] )) || _systemctl_unmask()
 {
   _systemctl_masked_units
-  compadd "$@" -a - _sys_masked_units || _message "no masked unit found"
+  compadd "$@" -a - _sys_masked_units || _message "no masked units found"
 }
 
 # Completion functions for JOBS
 (( $+functions[_systemctl_cancel] )) || _systemctl_cancel()
 {
   compadd "$@" - $(__systemctl list-jobs \
-    | cut -d' ' -f1  2>/dev/null ) || _message "no job found"
+    | cut -d' ' -f1  2>/dev/null ) || _message "no jobs found"
 }
 
 # Completion functions for SNAPSHOTS
 (( $+functions[_systemctl_delete] )) || _systemctl_delete()
 {
   compadd "$@" - $(__systemctl list-units --type snapshot --all \
-    | cut -d' ' -f1  2>/dev/null ) || _message "no snapshot found"
+    | cut -d' ' -f1  2>/dev/null ) || _message "no snapshots found"
+}
+
+# Completion functions for TARGETS
+(( $+functions[_systemctl_set-default] )) || _systemctl_set-default()
+{
+  compadd "$@" - $(__systemctl list-unit-files --type target --all \
+    | cut -d' ' -f1  2>/dev/null ) || _message "no targets found"
 }
 
 # Completion functions for ENVS

commit e02f23eef784445c585666257dd8fc181c9f45ca
Author: Tom Gundersen <teg at jklm.no>
Date:   Mon Oct 27 17:15:42 2014 +0100

    units: tmpfiles-setup-dev - allow unsafe file creation to happen in /dev at boot
    
    This will allow us to mark static device nodes with '!' to indicate that they should only be created at early boot.
    
    (cherry picked from commit 8c94052ee543c3598a3c7b0c46688150aa2c6168)

diff --git a/units/systemd-tmpfiles-setup-dev.service.in b/units/systemd-tmpfiles-setup-dev.service.in
index 11c5ce2..4ba33fd 100644
--- a/units/systemd-tmpfiles-setup-dev.service.in
+++ b/units/systemd-tmpfiles-setup-dev.service.in
@@ -15,4 +15,4 @@ ConditionCapability=CAP_SYS_MODULE
 [Service]
 Type=oneshot
 RemainAfterExit=yes
-ExecStart=@rootbindir@/systemd-tmpfiles --prefix=/dev --create
+ExecStart=@rootbindir@/systemd-tmpfiles --prefix=/dev --create --boot

commit bb69bfce89025ebc36f48e80f995c0725d561546
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Sun Oct 26 18:17:10 2014 -0400

    Update hwdb/60-keyboard.hwdb to version from master
    
    Synchronized to v216-759-gcaa2f4c0c9.

diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb
index dc1b78f..06caba9 100644
--- a/hwdb/60-keyboard.hwdb
+++ b/hwdb/60-keyboard.hwdb
@@ -90,7 +90,7 @@ keyboard:dmi:bvn*:bvr*:bd*:svneMachines:pneMachines*E725:pvr*
 
 # Acer platform kernel driver
 keyboard:name:Acer WMI hotkeys:dmi:bvn*:bvr*:bd*:svn*:pnAcer*:pvr*
- KEYBOARD_KEY_82=f21					# Touchpad toggle
+ KEYBOARD_KEY_82=f21                                    # Touchpad toggle
 
 # Aspire models
 keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire*:pvr*
@@ -152,9 +152,8 @@ keyboard:dmi:bvn*:bvr*:bd*:svnASUS:pn*
  KEYBOARD_KEY_ef=mute
 
 keyboard:name:Asus WMI hotkeys:dmi:bvn*:bvr*:bd*:svnASUS*:pn*:pvr*
- KEYBOARD_KEY_6b=f21		# Touchpad Toggle
-
 keyboard:name:Eee PC WMI hotkeys:dmi:bvn*:bvr*:bd*:svnASUS*:pn*:pvr*
+keyboard:name:Asus Laptop extra buttons:dmi:bvn*:bvr*:bd*:svnASUS*:pn*:pvr*
  KEYBOARD_KEY_6b=f21                                    # Touchpad Toggle
 
 ###########################################################
@@ -182,6 +181,13 @@ keyboard:dmi:bvn*:bvr*:bd*:svnCompaq*:pn*Evo*N*:pvr*
  KEYBOARD_KEY_9e=email
  KEYBOARD_KEY_9f=homepage
 
+keyboard:usb:v049Fp0051d*dc*dsc*dp*ic*isc*ip*in01*
+ KEYBOARD_KEY_0c0011=presentation
+ KEYBOARD_KEY_0c0012=addressbook
+ KEYBOARD_KEY_0c0013=info
+ KEYBOARD_KEY_0c0014=prog1
+ KEYBOARD_KEY_0c0015=messenger
+
 ###########################################################
 # Dell
 ###########################################################
@@ -245,6 +251,15 @@ keyboard:dmi:bvn*:bvr*:bd*:svnDell*:pnPrecision*:pvr*
 keyboard:dmi:bvn*:bvr*:bd*:svnDell*:pnXPS*:pvr*
  KEYBOARD_KEY_8c=!unknown
 
+# Dell XPS12 9Q33
+keyboard:dmi:bvn*:bvr*:bd*:svnDell*:pnXPS12-9Q33*:pvr*
+ KEYBOARD_KEY_88=wlan
+ KEYBOARD_KEY_65=switchvideomode                        # Screen Rotate
+
+# Dell Latitude microphone mute
+keyboard:name:Dell WMI hotkeys:dmi:bvn*:bvr*:bd*:svnDell*:pnLatitude*
+ KEYBOARD_KEY_150=f20                                   # Mic mute toggle, should be micmute
+
 ###########################################################
 # Everex
 ###########################################################
@@ -517,12 +532,7 @@ keyboard:name:ThinkPad Extra Buttons:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*
  KEYBOARD_KEY_15=volumedown
  KEYBOARD_KEY_16=mute
  KEYBOARD_KEY_17=prog1
- KEYBOARD_KEY_1a=f20
-
-#
-keyboard:name:Ideapad extra buttons:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*
- KEYBOARD_KEY_42=f23
- KEYBOARD_KEY_43=f22
+ KEYBOARD_KEY_1a=f20                                    # Microphone mute button; should be micmute
 
 # ThinkPad Keyboard with TrackPoint
 keyboard:usb:v17EFp6009*
@@ -580,18 +590,26 @@ keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pnThinkPad*X6*:pvr*
  KEYBOARD_KEY_69=enter                                  # enter on d-pad
 
 # IdeaPad
+keyboard:name:Ideapad extra buttons:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*
+ KEYBOARD_KEY_42=f23
+ KEYBOARD_KEY_43=f22
+
 keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*IdeaPad*Y550*:pvr*
  KEYBOARD_KEY_95=media
  KEYBOARD_KEY_a3=play
 
-# V480
-keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*Lenovo*V480*:pvr*
+keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*IdeaPad*U300s*:pvr*
  KEYBOARD_KEY_f1=f21
+ KEYBOARD_KEY_ce=f20                                    # micmute
 
-# IdeaPad
-keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*IdeaPad*U300s*:pvr*
+keyboard:dmi:bvn*:bvr*:svnLENOVO*:pn*IdeaPad*Z370*:pvr*
+ KEYBOARD_KEY_a0=!mute
+ KEYBOARD_KEY_ae=!volumedown
+ KEYBOARD_KEY_b0=!volumeup
+
+# V480
+keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*Lenovo*V480*:pvr*
  KEYBOARD_KEY_f1=f21
- KEYBOARD_KEY_ce=f20
 
 # enhanced USB keyboard
 keyboard:usb:v04B3p301B*
@@ -604,6 +622,7 @@ keyboard:usb:v04B3p301B*
  KEYBOARD_KEY_90007=mail
  KEYBOARD_KEY_90008=www
 
+
 ###########################################################
 # Logitech
 ###########################################################
@@ -817,7 +836,7 @@ keyboard:dmi:bvn*:bvr*:bd*:svnOLPC:pnXO:*
  KEYBOARD_KEY_f3=f17
  KEYBOARD_KEY_f2=f18
  KEYBOARD_KEY_f1=f19
- KEYBOARD_KEY_f0=f20
+ KEYBOARD_KEY_f0=f20                                    # micmute
  KEYBOARD_KEY_ef=f21
  KEYBOARD_KEY_ee=chat
  KEYBOARD_KEY_e4=chat
@@ -930,9 +949,10 @@ keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*550P*:pvr*
  KEYBOARD_KEY_a8=!                                      # Fn Lock - Function lock on
  KEYBOARD_KEY_a9=!                                      # Fn Lock - Function lock off
 
+# Series 7 / 9
 keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*700Z*:pvr*
 keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*700G*:pvr*
-keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*900X[34][CDG]*:pvr*
+keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*900X[34]*:pvr*
 keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*940X3G*:pvr*
  KEYBOARD_KEY_ce=!prog1                                 # Fn+F1 launch settings
  KEYBOARD_KEY_a0=!mute                                  # Fn+F6 mute
@@ -942,7 +962,6 @@ keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*940X3G*:pvr*
  KEYBOARD_KEY_96=!kbdillumup                            # Fn+F10 keyboard backlight up
  KEYBOARD_KEY_b3=!prog3                                 # Fn+F11 fan/cooling mode changer
 
-# Series 9
 keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*900X[34][AB]*:pvr*
  KEYBOARD_KEY_ce=!                                      # Fn+F8 keyboard backlight up
  KEYBOARD_KEY_8d=!                                      # Fn+F7 keyboard backlight down
@@ -1083,7 +1102,7 @@ keyboard:name:Toshiba*input*device:dmi:bvn*:bvr*:bd*:svnTOSHIBA*:pnSatellite*P75
  KEYBOARD_KEY_13c=brightnessdown
  KEYBOARD_KEY_13d=brightnessup
  KEYBOARD_KEY_13e=switchvideomode
- KEYBOARD_KEY_13f=touchpad_toggle
+ KEYBOARD_KEY_13f=f21                                   # Touchpad toggle
  KEYBOARD_KEY_9e=wlan
 
 ###########################################################

commit 7013bbe99f0b159f58c47ac994b68cd6db9bae9d
Author: Tom Gundersen <teg at jklm.no>
Date:   Wed Sep 10 10:56:26 2014 +0200

    udev: timeout - increase timeout
    
    Some kernel modules still take more than one minute to insmod, we no longer rely on the timeout
    killing insmod within a given period of time, so just bump this to a much higher value. Its only
    purpose is to make sure that nothing stays aronud forever.
    
    (cherry picked from commit b5338a19864ac3f5632aee48069a669479621dca)
    
    Conflicts:
    	src/udev/udevd.c
    
    [zj: This commit is not really similar to b533... at all, but hopefuly the result is alike.]

diff --git a/src/udev/udevd.c b/src/udev/udevd.c
index bbca5d5..c5dd6de 100644
--- a/src/udev/udevd.c
+++ b/src/udev/udevd.c
@@ -1240,7 +1240,7 @@ int main(int argc, char *argv[])
                                 break;
 
                         /* timeout at exit for workers to finish */
-                        timeout = 30 * 1000;
+                        timeout = 180 * 1000;
                 } else if (udev_list_node_is_empty(&event_list) && !children) {
                         /* we are idle */
                         timeout = -1;
@@ -1278,7 +1278,7 @@ int main(int argc, char *argv[])
                                 if (worker->state != WORKER_RUNNING)
                                         continue;
 
-                                if ((now(CLOCK_MONOTONIC) - worker->event_start_usec) > 30 * 1000 * 1000) {
+                                if ((now(CLOCK_MONOTONIC) - worker->event_start_usec) > 180 * 1000 * 1000) {
                                         log_error("worker [%u] %s timeout; kill it\n", worker->pid,
                                             worker->event ? worker->event->devpath : "<idle>");
                                         kill(worker->pid, SIGKILL);

commit d61ca0aa19cd8c6656428ce7f46b77b4fcccf38d
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Thu Aug 7 20:42:58 2014 -0400

    core: do not add dependencies to self
    
    Adds a pair of files which cause a segfault (also with
    systemd-analyze verify).
    
    https://bugzilla.redhat.com/show_bug.cgi?id=1124843
    (cherry picked from commit e66047ff62c971eefa32b42373420d61e3f2a9c1)

diff --git a/src/core/load-dropin.c b/src/core/load-dropin.c
index a877e66..31d0c07 100644
--- a/src/core/load-dropin.c
+++ b/src/core/load-dropin.c
@@ -206,7 +206,7 @@ int unit_load_dropin(Unit *u) {
         }
 
         u->dropin_paths = unit_find_dropin_paths(u);
-        if (! u->dropin_paths)
+        if (!u->dropin_paths)
                 return 0;
 
         STRV_FOREACH(f, u->dropin_paths) {
diff --git a/src/core/unit.c b/src/core/unit.c
index c47b2e8..22d8a7b 100644
--- a/src/core/unit.c
+++ b/src/core/unit.c
@@ -551,14 +551,22 @@ static void merge_dependencies(Unit *u, Unit *other, UnitDependency d) {
                 UnitDependency k;
 
                 for (k = 0; k < _UNIT_DEPENDENCY_MAX; k++) {
-                        r = set_remove_and_put(back->dependencies[k], other, u);
-                        if (r == -EEXIST)
+                        /* Do not add dependencies between u and itself */
+                        if (back == u) {
                                 set_remove(back->dependencies[k], other);
-                        else
-                                assert(r >= 0 || r == -ENOENT);
+                        } else {
+                                r = set_remove_and_put(back->dependencies[k], other, u);
+                                if (r == -EEXIST)
+                                        set_remove(back->dependencies[k], other);
+                                else
+                                        assert(r >= 0 || r == -ENOENT);
+                        }
                 }
         }
 
+        /* Also do not move dependencies on u to itself */
+        set_remove(other->dependencies[d], u);
+
         complete_move(&u->dependencies[d], &other->dependencies[d]);
 
         set_free(other->dependencies[d]);
diff --git a/test/loopy.service b/test/loopy.service
new file mode 100644
index 0000000..9eb6457
--- /dev/null
+++ b/test/loopy.service
@@ -0,0 +1,2 @@
+[Service]
+ExecStart=/bin/true
diff --git a/test/loopy.service.d/compat.conf b/test/loopy.service.d/compat.conf
new file mode 100644
index 0000000..51b84b8
--- /dev/null
+++ b/test/loopy.service.d/compat.conf
@@ -0,0 +1,5 @@
+[Unit]
+BindsTo=loopy2.service
+
+[Install]
+Also=loopy2.service
diff --git a/test/loopy2.service b/test/loopy2.service
new file mode 120000
index 0000000..961b1fe
--- /dev/null
+++ b/test/loopy2.service
@@ -0,0 +1 @@
+loopy.service
\ No newline at end of file

commit daf3702ded96ad4d794a94d95454bf3a662b992f
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Mon Oct 21 19:54:10 2013 -0400

    core: some more _cleanup_free_
    
    (cherry picked from commit e48614c4b268d9e7ecbd478d1d2410f9e92095e0)

diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c
index 31554c2..6c3b10c 100644
--- a/src/core/load-fragment.c
+++ b/src/core/load-fragment.c
@@ -2431,9 +2431,10 @@ static int merge_by_names(Unit **u, Set *names, const char *id) {
 
 static int load_from_path(Unit *u, const char *path) {
         int r;
-        Set *symlink_names;
-        FILE *f = NULL;
-        char *filename = NULL, *id = NULL;
+        _cleanup_set_free_free_ Set *symlink_names = NULL;
+        _cleanup_fclose_ FILE *f = NULL;
+        _cleanup_free_ char *filename = NULL;
+        char *id = NULL;
         Unit *merged;
         struct stat st;
 
@@ -2447,10 +2448,8 @@ static int load_from_path(Unit *u, const char *path) {
         if (path_is_absolute(path)) {
 
                 filename = strdup(path);
-                if (!filename) {
-                        r = -ENOMEM;
-                        goto finish;
-                }
+                if (!filename)
+                        return -ENOMEM;
 
                 r = open_follow(&filename, &f, symlink_names, &id);
                 if (r < 0) {
@@ -2458,7 +2457,7 @@ static int load_from_path(Unit *u, const char *path) {
                         filename = NULL;
 
                         if (r != -ENOENT)
-                                goto finish;
+                                return r;
                 }
 
         } else  {
@@ -2470,10 +2469,8 @@ static int load_from_path(Unit *u, const char *path) {
                          * follow all symlinks and add their name to our unit
                          * name set while doing so */
                         filename = path_make_absolute(path, *p);
-                        if (!filename) {
-                                r = -ENOMEM;
-                                goto finish;
-                        }
+                        if (!filename)
+                                return -ENOMEM;
 
                         if (u->manager->unit_path_cache &&
                             !set_get(u->manager->unit_path_cache, filename))
@@ -2486,7 +2483,7 @@ static int load_from_path(Unit *u, const char *path) {
                                 filename = NULL;
 
                                 if (r != -ENOENT)
-                                        goto finish;
+                                        return r;
 
                                 /* Empty the symlink names for the next run */
                                 set_clear_free(symlink_names);
@@ -2497,27 +2494,22 @@ static int load_from_path(Unit *u, const char *path) {
                 }
         }
 
-        if (!filename) {
+        if (!filename)
                 /* Hmm, no suitable file found? */
-                r = 0;
-                goto finish;
-        }
+                return 0;
 
         merged = u;
         r = merge_by_names(&merged, symlink_names, id);
         if (r < 0)
-                goto finish;
+                return r;
 
         if (merged != u) {
                 u->load_state = UNIT_MERGED;
-                r = 0;
-                goto finish;
+                return 0;
         }
 
-        if (fstat(fileno(f), &st) < 0) {
-                r = -errno;
-                goto finish;
-        }
+        if (fstat(fileno(f), &st) < 0)
+                return -errno;
 
         if (null_or_empty(&st))
                 u->load_state = UNIT_MASKED;
@@ -2529,7 +2521,7 @@ static int load_from_path(Unit *u, const char *path) {
                                  config_item_perf_lookup,
                                  (void*) load_fragment_gperf_lookup, false, true, u);
                 if (r < 0)
-                        goto finish;
+                        return r;
         }
 
         free(u->fragment_path);
@@ -2545,16 +2537,7 @@ static int load_from_path(Unit *u, const char *path) {
                         u->source_mtime = 0;
         }
 
-        r = 0;
-
-finish:
-        set_free_free(symlink_names);
-        free(filename);
-
-        if (f)
-                fclose(f);
-
-        return r;
+        return 0;
 }
 
 int unit_load_fragment(Unit *u) {
diff --git a/src/core/unit.c b/src/core/unit.c
index 035340b..c47b2e8 100644
--- a/src/core/unit.c
+++ b/src/core/unit.c
@@ -127,7 +127,8 @@ int unit_add_name(Unit *u, const char *text) {
                 goto fail;
         }
 
-        if ((r = unit_name_to_instance(s, &i)) < 0)
+        r = unit_name_to_instance(s, &i);
+        if (r < 0)
                 goto fail;
 
         if (i && unit_vtable[t]->no_instances) {
@@ -154,13 +155,15 @@ int unit_add_name(Unit *u, const char *text) {
                 goto fail;
         }
 
-        if ((r = set_put(u->names, s)) < 0) {
+        r = set_put(u->names, s);
+        if (r < 0) {
                 if (r == -EEXIST)
                         r = 0;
                 goto fail;
         }
 
-        if ((r = hashmap_put(u->manager->units, s, u)) < 0) {
+        r = hashmap_put(u->manager->units, s, u);
+        if (r < 0) {
                 set_remove(u->names, s);
                 goto fail;
         }
@@ -201,7 +204,8 @@ int unit_choose_id(Unit *u, const char *name) {
                 if (!u->instance)
                         return -EINVAL;
 
-                if (!(t = unit_name_replace_instance(name, u->instance)))
+                t = unit_name_replace_instance(name, u->instance);
+                if (!t)
                         return -ENOMEM;
 
                 name = t;
@@ -213,7 +217,8 @@ int unit_choose_id(Unit *u, const char *name) {
         if (!s)
                 return -ENOENT;
 
-        if ((r = unit_name_to_instance(s, &i)) < 0)
+        r = unit_name_to_instance(s, &i);
+        if (r < 0)
                 return r;
 
         u->id = s;
@@ -545,14 +550,13 @@ static void merge_dependencies(Unit *u, Unit *other, UnitDependency d) {
         SET_FOREACH(back, other->dependencies[d], i) {
                 UnitDependency k;
 
-                for (k = 0; k < _UNIT_DEPENDENCY_MAX; k++)
-                        if ((r = set_remove_and_put(back->dependencies[k], other, u)) < 0) {
-
-                                if (r == -EEXIST)
-                                        set_remove(back->dependencies[k], other);
-                                else
-                                        assert(r == -ENOENT);
-                        }
+                for (k = 0; k < _UNIT_DEPENDENCY_MAX; k++) {
+                        r = set_remove_and_put(back->dependencies[k], other, u);
+                        if (r == -EEXIST)
+                                set_remove(back->dependencies[k], other);
+                        else
+                                assert(r >= 0 || r == -ENOENT);
+                }
         }
 
         complete_move(&u->dependencies[d], &other->dependencies[d]);
@@ -631,7 +635,8 @@ int unit_merge_by_name(Unit *u, const char *name) {
                 if (!u->instance)
                         return -EINVAL;
 
-                if (!(s = unit_name_replace_instance(name, u->instance)))
+                s = unit_name_replace_instance(name, u->instance);
+                if (!s)
                         return -ENOMEM;
 
                 name = s;
@@ -842,7 +847,7 @@ int unit_load_fragment_and_dropin(Unit *u) {
 
         assert(u);
 
-        /* Load a .service file */
+        /* Load a .{service,socket,...} file */
         r = unit_load_fragment(u);
         if (r < 0)
                 return r;
@@ -1244,7 +1249,8 @@ int unit_reload(Unit *u) {
                 return -ENOEXEC;
         }
 
-        if ((following = unit_following(u))) {
+        following = unit_following(u);
+        if (following) {
                 log_debug_unit(u->id, "Redirecting reload request from %s to %s.",
                                u->id, following->id);
                 return unit_reload(following);

commit 36f1284c3f36ad7244e5add7c960fd631d238fa9
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Sat Jul 19 21:05:07 2014 -0400

    journalctl,man: allow + only between terms
    
    https://bugzilla.redhat.com/show_bug.cgi?id=1110712
    (cherry picked from commit 4e6029435111adcad71489aca2dd68bc65aeffd4)
    
    Conflicts:
    	man/journalctl.xml

diff --git a/man/journalctl.xml b/man/journalctl.xml
index 623d966..55eaa2c 100644
--- a/man/journalctl.xml
+++ b/man/journalctl.xml
@@ -83,10 +83,11 @@
                 field, then they are automatically matched as
                 alternatives, i.e. the resulting output will show
                 entries matching any of the specified matches for the
-                same field. Finally, if the character
-                <literal>+</literal> appears as separate word on the
-                command line, all matches before and after are combined
-                in a disjunction (i.e. logical OR).</para>
+                same field. Finally, the character
+                <literal>+</literal> may appears as a separate word
+                between other terms on the command line. This causes
+                all matches before and after to be combined in a
+                disjunction (i.e. logical OR).</para>
 
                 <para>As shortcuts for a few types of field/value
                 matches, file paths may be specified. If a file path
@@ -97,11 +98,21 @@
                 <literal>_KERNEL_DEVICE=</literal> match for the
                 device.</para>
 
+                <para>Additional contraints may be added using options
+                <option>--boot</option>, <option>--unit=</option>,
+                etc, to futher limit what entries will be shown
+                (logical AND).</para>
+
                 <para>Output is interleaved from all accessible
                 journal files, whether they are rotated or currently
                 being written, and regardless of whether they belong to the
                 system itself or are accessible user journals.</para>
 
+                <para>The set of journal files which will be used
+                can be modified using the <option>--user</option>,
+                <option>--system</option>, <option>--directory</option>,
+                and <option>--file</option> options, see below.</para>
+
                 <para>All users are granted access to their private
                 per-user journals. However, by default, only root and
                 users who are members of the <literal>systemd-journal</literal>
diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c
index ca2ea05..f330b77 100644
--- a/src/journal/journalctl.c
+++ b/src/journal/journalctl.c
@@ -687,15 +687,20 @@ static int generate_new_id128(void) {
 
 static int add_matches(sd_journal *j, char **args) {
         char **i;
+        bool have_term = false;
 
         assert(j);
 
         STRV_FOREACH(i, args) {
                 int r;
 
-                if (streq(*i, "+"))
+                if (streq(*i, "+")) {
+                        if (!have_term)
+                                break;
                         r = sd_journal_add_disjunction(j);
-                else if (path_is_absolute(*i)) {
+                        have_term = false;
+
+                } else if (path_is_absolute(*i)) {
                         _cleanup_free_ char *p, *t = NULL, *t2 = NULL;
                         const char *path;
                         _cleanup_free_ char *interpreter = NULL;
@@ -744,8 +749,12 @@ static int add_matches(sd_journal *j, char **args) {
                         r = sd_journal_add_match(j, t, 0);
                         if (t2)
                                 r = sd_journal_add_match(j, t2, 0);
-                } else
+                        have_term = true;
+
+                } else {
                         r = sd_journal_add_match(j, *i, 0);
+                        have_term = true;
+                }
 
                 if (r < 0) {
                         log_error("Failed to add match '%s': %s", *i, strerror(-r));
@@ -753,6 +762,11 @@ static int add_matches(sd_journal *j, char **args) {
                 }
         }
 
+        if (!strv_isempty(args) && !have_term) {
+                log_error("\"+\" can only be used between terms");
+                return -EINVAL;
+        }
+
         return 0;
 }
 

commit 8382dfb6c20771eaa8a5f70839ca51e2111f5ee4
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Sat Oct 25 15:15:28 2014 -0400

    systemctl: do not ignore errors in symlink removal
    
    On an ro fs, systemctl disable ... would fail silently.
    
    (cherry picked from commit e95c98378ac2d34df864de4a9b785fd17defb77b)

diff --git a/src/shared/install.c b/src/shared/install.c
index f49c3d3..f67ebf5 100644
--- a/src/shared/install.c
+++ b/src/shared/install.c
@@ -1572,7 +1572,7 @@ int unit_file_disable(
         r = install_context_mark_for_removal(&c, &paths, &remove_symlinks_to, config_path, root_dir);
 
         q = remove_marked_symlinks(remove_symlinks_to, config_path, changes, n_changes, files);
-        if (r == 0)
+        if (r >= 0)
                 r = q;
 
         return r;

commit d616ea839bd822bb82d83f69b3a4207517f94bea
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Sat Oct 25 11:59:36 2014 -0400

    calendarspec: fix typo in "annually"
    
    https://bugs.freedesktop.org/show_bug.cgi?id=85447
    (cherry picked from commit e90efc70900f8e69cfbafd9e9508bdeb4d40dad7)

diff --git a/src/shared/calendarspec.c b/src/shared/calendarspec.c
index 7075159..934f94d 100644
--- a/src/shared/calendarspec.c
+++ b/src/shared/calendarspec.c
@@ -686,7 +686,8 @@ int calendar_spec_from_string(const char *p, CalendarSpec **spec) {
                 if (r < 0)
                         goto fail;
 
-        } else if (strcaseeq(p, "anually") || strcaseeq(p, "yearly")) {
+        } else if (strcaseeq(p, "annually") || strcaseeq(p, "yearly")
+                   || strcaseeq(p, "anually") /* backwards compatibility */ ) {
                 r = const_chain(1, &c->month);
                 if (r < 0)
                         goto fail;

commit 41d0281745491369633589604c9192e737680881
Author: Santiago Vila <sanvila at unex.es>
Date:   Sat Oct 25 10:40:30 2014 -0400

    journalctl: correct help text for --until
    
    http://bugs.debian.org/766598
    (cherry picked from commit 7558251eef610e71595a0aa48952479906cb899a)

diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c
index 8a32de3..ca2ea05 100644
--- a/src/journal/journalctl.c
+++ b/src/journal/journalctl.c
@@ -168,7 +168,7 @@ static int help(void) {
                "     --system              Show only the system journal\n"
                "     --user                Show only the user journal for the current user\n"
                "     --since=DATE          Start showing entries on or newer than the specified date\n"
-               "     --until=DATE          Stop showing entries on or older than the specified date\n"
+               "     --until=DATE          Stop showing entries on or newer than the specified date\n"
                "  -c --cursor=CURSOR       Start showing entries from the specified cursor\n"
                "     --after-cursor=CURSOR Start showing entries from after the specified cursor\n"
                "     --show-cursor         Print the cursor after all the entries\n"

commit e565759b07170c09e1769ae31b2768efde686b55
Author: Jan Synacek <jsynacek at redhat.com>
Date:   Mon Oct 20 12:43:39 2014 +0200

    man: fix localectl set-x11-keymap syntax description
    
    (cherry picked from commit cd4c6fb12598435fe24431f1dd616f9582f0e3bd)

diff --git a/man/localectl.xml b/man/localectl.xml
index ad4f3d4..97c5dc0 100644
--- a/man/localectl.xml
+++ b/man/localectl.xml
@@ -208,7 +208,7 @@
                         </varlistentry>
 
                         <varlistentry>
-                                <term><command>set-x11-keymap LAYOUT [MODEL] [VARIANT] [OPTIONS]</command></term>
+                                <term><command>set-x11-keymap LAYOUT [MODEL [VARIANT [OPTIONS]]]</command></term>
 
                                 <listitem><para>Set the system default
                                 keyboard mapping for X11. This takes a

commit 9033ca38cec8621cc619e158c8423278789bbbd1
Author: Lukas Nykryn <lnykryn at redhat.com>
Date:   Wed Oct 15 09:28:31 2014 +0200

    man: we don't have 'Wanted' dependency
    
    (cherry picked from commit 3e883473a0f36c220fc45ecf61d6878c9ac308b4)

diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml
index 9164717..acf9800 100644
--- a/man/systemd.unit.xml
+++ b/man/systemd.unit.xml
@@ -175,10 +175,10 @@
                 <filename>foo.service.wants/</filename> may exist. All
                 unit files symlinked from such a directory are
                 implicitly added as dependencies of type
-                <varname>Wanted=</varname> to the unit. This is useful
+                <varname>Wants=</varname> to the unit. This is useful
                 to hook units into the start-up of other units,
                 without having to modify their unit files. For details
-                about the semantics of <varname>Wanted=</varname>, see
+                about the semantics of <varname>Wants=</varname>, see
                 below. The preferred way to create symlinks in the
                 <filename>.wants/</filename> directory of a unit file
                 is with the <command>enable</command> command of the

commit 54a21e301cd1d6ceb1e25711d4ea497216521c54
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Tue Oct 14 21:10:02 2014 -0400

    shell-completion: propose templates for disable/[re]enable/[re]start
    
    Templates can be [re]enabled, on their own if the have DefaultInstance set,
    and with an instance suffix in all cases. Propose just the template name
    ending in @, to underline the instance suffix may have to be appended.
    
    Likewise for start/restart.
    
    This means that sometimes superflous units that one will not really
    want to operate on will be proposed, but this seems better than
    proposing a very incomplete set of names.
    
    https://bugs.freedesktop.org/show_bug.cgi?id=66912
    (cherry picked from commit e9a19bd882ff8a2c8aef5c63b39525ea231e5fb9)

diff --git a/shell-completion/bash/systemctl.in b/shell-completion/bash/systemctl.in
index 4ca57fb..3c52d2b 100644
--- a/shell-completion/bash/systemctl.in
+++ b/shell-completion/bash/systemctl.in
@@ -53,6 +53,9 @@ __filter_units_by_property () {
 
 __get_all_units      () { { __systemctl $1 list-unit-files; __systemctl $1 list-units --all; } \
         | { while read -r a b; do echo " $a"; done; }; }
+__get_template_names () { __systemctl $1 list-unit-files \
+        | { while read -r a b; do [[ $a =~ @\. ]] && echo " ${a%%@.*}@"; done; }; }
+
 __get_active_units   () { __systemctl $1 list-units       \
         | { while read -r a b; do echo " $a"; done; }; }
 __get_startable_units () {
@@ -169,22 +172,26 @@ _systemctl () {
                 compopt -o filenames
 
         elif __contains_word "$verb" ${VERBS[DISABLED_UNITS]}; then
-                comps=$( __get_disabled_units $mode )
+                comps=$( __get_disabled_units $mode;
+                        __get_template_names $mode)
                 compopt -o filenames
 
         elif __contains_word "$verb" ${VERBS[REENABLABLE_UNITS]}; then
                 comps=$( __get_disabled_units $mode;
-                         __get_enabled_units $mode )
+                         __get_enabled_units $mode;
+                         __get_template_names $mode)
                 compopt -o filenames
 
         elif __contains_word "$verb" ${VERBS[STARTABLE_UNITS]}; then
                 comps=$( __filter_units_by_property $mode CanStart yes \
-                      $( __get_startable_units $mode))
+                        $( __get_startable_units $mode);
+                        __get_template_names $mode)
                 compopt -o filenames
 
         elif __contains_word "$verb" ${VERBS[RESTARTABLE_UNITS]}; then
                 comps=$( __filter_units_by_property $mode CanStart yes \
-                      $( __get_restartable_units $mode))
+                        $( __get_restartable_units $mode); \
+                        __get_template_names $mode)
                 compopt -o filenames
 
         elif __contains_word "$verb" ${VERBS[STOPPABLE_UNITS]}; then
diff --git a/shell-completion/zsh/_systemctl.in b/shell-completion/zsh/_systemctl.in
index 1e9ee4d..89b04e1 100644
--- a/shell-completion/zsh/_systemctl.in
+++ b/shell-completion/zsh/_systemctl.in
@@ -137,6 +137,8 @@ _filter_units_by_property() {
 }
 
 _systemctl_all_units() { { __systemctl list-unit-files; __systemctl list-units --all; } | { while read -r a b; do echo -E - " $a"; done; } }
+_systemctl_get_template_names() { __systemctl list-unit-files | { while read -r a b; do  [[ $a =~ @\. ]] && echo -E - " ${a%%@.*}@"; done; } }
+
 
 _systemctl_active_units()  {_sys_active_units=(  $(__systemctl list-units          | { while read -r a b; do echo -E - " $a"; done; }) )}
 _systemctl_startable_units(){_sys_startable_units=($(__systemctl list-units --state inactive,failed -- $(_systemctl_all_units) | { while read -r a b c d; do [[ $b == "loaded" ]] && echo -E - " $a"; done; }) )}
@@ -156,20 +158,24 @@ for fun in is-active is-failed is-enabled status show mask preset help list-depe
 done
 
 # Completion functions for ENABLED_UNITS
-for fun in disable reenable ; do
-  (( $+functions[_systemctl_$fun] )) || _systemctl_$fun()
-  {
+(( $+functions[_systemctl_disable] )) || _systemctl_disable()
+{
+    _systemctl_enabled_units
+    compadd "$@" -a - _sys_enabled_units
+}
+
+(( $+functions[_systemctl_reenable] )) || _systemctl_reenable()
+{
     _systemctl_enabled_units
     _systemctl_disabled_units
-    compadd "$@" -a - _sys_enabled_units _sys_disabled_units
-  }
-done
+    compadd "$@" -a - _sys_enabled_units _sys_disabled_units $(_systemctl_get_template_names)
+}
 
 # Completion functions for DISABLED_UNITS
 (( $+functions[_systemctl_enable] )) || _systemctl_enable()
 {
   _systemctl_disabled_units
-  compadd "$@" -a - _sys_disabled_units
+  compadd "$@" -a - _sys_disabled_units $(_systemctl_get_template_names)
 }
 
 # Completion functions for FAILED_UNITS

commit 26df33449f6800097a4afea0d4a43a5d87183591
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Tue Oct 14 20:20:07 2014 -0400

    shell-completion: fix completion of inactive units
    
    Units which not loaded were not proposed properly. OTOH, we should
    filter units from get-unit-files by their state if they are currently
    loaded. Bring zsh completions in line with bash completion, the same
    logic should be used in both implementations.
    
    https://bugzilla.redhat.com/show_bug.cgi?id=1024379
    https://bugzilla.redhat.com/show_bug.cgi?id=790768
    https://bugs.freedesktop.org/show_bug.cgi?id=84720
    (cherry picked from commit f29c77bc0179b0fa57407dbe30b495be9f5ad2e8)

diff --git a/shell-completion/bash/systemctl.in b/shell-completion/bash/systemctl.in
index e779a70..4ca57fb 100644
--- a/shell-completion/bash/systemctl.in
+++ b/shell-completion/bash/systemctl.in
@@ -55,10 +55,14 @@ __get_all_units      () { { __systemctl $1 list-unit-files; __systemctl $1 list-
         | { while read -r a b; do echo " $a"; done; }; }
 __get_active_units   () { __systemctl $1 list-units       \
         | { while read -r a b; do echo " $a"; done; }; }
-__get_startable_units () { {
-        __systemctl $1 list-units --all -t service,timer,socket,mount,automount,path,snapshot,swap
-        __systemctl $1 list-unit-files -t service,timer,socket,mount,automount,path,snapshot,swap; } \
-        | { while read -r a b c d; do [[ $c == "inactive" || $c == "failed" ]] && echo " $a"; done; }; }
+__get_startable_units () {
+        # find inactive or failed units, filter out masked and not-found
+        __systemctl $1 list-units --state inactive,failed -- $( __get_all_units ) | \
+                { while read -r a b c d; do [[ $b == "loaded" ]] && echo " $a"; done; }; }
+__get_restartable_units () {
+        # find !masked, filter out masked and not-found
+        __systemctl $1 list-units --state active,inactive,failed -- $( __get_all_units ) | \
+                { while read -r a b c d; do [[ $b == "loaded" ]] && echo " $a"; done; }; }
 __get_failed_units   () { __systemctl $1 list-units       \
         | { while read -r a b c d; do [[ $c == "failed"   ]] && echo " $a"; done; }; }
 __get_enabled_units  () { __systemctl $1 list-unit-files  \
@@ -180,10 +184,7 @@ _systemctl () {
 
         elif __contains_word "$verb" ${VERBS[RESTARTABLE_UNITS]}; then
                 comps=$( __filter_units_by_property $mode CanStart yes \
-                      $( __get_all_units $mode \
-                        | while read -r line; do \
-                                [[ "$line" =~ @\.|\.(device|snapshot|socket|timer)$ ]] || echo " $line"; \
-                        done ))
+                      $( __get_restartable_units $mode))
                 compopt -o filenames
 
         elif __contains_word "$verb" ${VERBS[STOPPABLE_UNITS]}; then
diff --git a/shell-completion/zsh/_systemctl.in b/shell-completion/zsh/_systemctl.in
index 74304e2..1e9ee4d 100644
--- a/shell-completion/zsh/_systemctl.in
+++ b/shell-completion/zsh/_systemctl.in
@@ -136,8 +136,11 @@ _filter_units_by_property() {
   done
 }
 
+_systemctl_all_units() { { __systemctl list-unit-files; __systemctl list-units --all; } | { while read -r a b; do echo -E - " $a"; done; } }
+
 _systemctl_active_units()  {_sys_active_units=(  $(__systemctl list-units          | { while read -r a b; do echo -E - " $a"; done; }) )}
-_systemctl_inactive_units(){_sys_inactive_units=($(__systemctl list-units --all    | { while read -r a b c d; do [[ $c == "inactive" || $c == "failed" ]] && echo -E - " $a"; done; }) )}
+_systemctl_startable_units(){_sys_startable_units=($(__systemctl list-units --state inactive,failed -- $(_systemctl_all_units) | { while read -r a b c d; do [[ $b == "loaded" ]] && echo -E - " $a"; done; }) )}
+_systemctl_restartable_units(){_sys_restartable_units=($(__systemctl list-units --state inactive,failed,active -- $(_systemctl_all_units) | { while read -r a b c d; do [[ $b == "loaded" ]] && echo -E - " $a"; done; }) )}
 _systemctl_failed_units()  {_sys_failed_units=(  $(__systemctl list-units --failed | { while read -r a b; do echo -E - " $a"; done; }) )}
 _systemctl_enabled_units() {_sys_enabled_units=( $(__systemctl list-unit-files     | { while read -r a b; do [[ $b == "enabled" ]] && echo -E - " $a"; done; }) )}
 _systemctl_disabled_units(){_sys_disabled_units=($(__systemctl list-unit-files     | { while read -r a b; do [[ $b == "disabled" ]] && echo -E - " $a"; done; }) )}
@@ -179,8 +182,9 @@ done
 # Completion functions for STARTABLE_UNITS
 (( $+functions[_systemctl_start] )) || _systemctl_start()
 {
-  _systemctl_inactive_units
-  compadd "$@" -a - _sys_inactive_units
+   _systemctl_startable_units
+   compadd "$@" - $( _filter_units_by_property CanStart yes \
+      ${_sys_startable_units[*]} )
 }
 
 # Completion functions for STOPPABLE_UNITS
@@ -215,11 +219,9 @@ done
 for fun in restart reload-or-restart ; do
   (( $+functions[_systemctl_$fun] )) || _systemctl_$fun()
   {
-    _systemctl_all_units
+    _systemctl_restartable_units
     compadd "$@" - $( _filter_units_by_property CanStart yes \
-      ${_sys_all_units[*]} | while read -r line; do \
-      [[ "$line" =~ \.device$ ]] || echo -E - " $line"; \
-      done )
+      ${_sys_restartable_units[*]} )
   }
 done
 

commit 1016e13e6aa713235f918b215619ba86fcdc7b4c
Author: Dave Reisner <dreisner at archlinux.org>
Date:   Fri Aug 29 20:35:15 2014 -0400

    completion: filter templates from restartable units
    
    Since c6a373a2634854, we might encounter unit templates via the
    'list-units' verb. These aren't restartable (and we throw errors), so
    make sure they're filtered out of the completion options.
    
    fixes downstream bug: https://bugs.archlinux.org/task/41719
    
    (cherry picked from commit ec15977a3cd82eff6c94bb13db72195f7cd512e8)

diff --git a/shell-completion/bash/systemctl.in b/shell-completion/bash/systemctl.in
index e7f736c..e779a70 100644
--- a/shell-completion/bash/systemctl.in
+++ b/shell-completion/bash/systemctl.in
@@ -182,7 +182,7 @@ _systemctl () {
                 comps=$( __filter_units_by_property $mode CanStart yes \
                       $( __get_all_units $mode \
                         | while read -r line; do \
-                                [[ "$line" =~ \.(device|snapshot|socket|timer)$ ]] || echo " $line"; \
+                                [[ "$line" =~ @\.|\.(device|snapshot|socket|timer)$ ]] || echo " $line"; \
                         done ))
                 compopt -o filenames
 

commit ab5543f5af8ee9c29465245688b0328191ecb29c
Author: Eric Cook <llua at gmx.com>
Date:   Sun Jul 27 15:07:03 2014 -0400

    shell-completion: prevent mangling unit names (bash)
    
    This fixes the issue noted by Zbigniew in most cases.
    if a unit's name is enclosed in single quotes completion still
    will not happen after the first `\'.
    
    https://bugs.freedesktop.org/show_bug.cgi?id=78388
    (cherry picked from commit c317a1a19cd9584e07ee43f1b6fafc26c2c75cca)

diff --git a/shell-completion/bash/systemctl.in b/shell-completion/bash/systemctl.in
index 7959ad2..e7f736c 100644
--- a/shell-completion/bash/systemctl.in
+++ b/shell-completion/bash/systemctl.in
@@ -158,20 +158,25 @@ _systemctl () {
 
         elif __contains_word "$verb" ${VERBS[ALL_UNITS]}; then
                 comps=$( __get_all_units $mode )
+                compopt -o filenames
 
         elif __contains_word "$verb" ${VERBS[ENABLED_UNITS]}; then
                 comps=$( __get_enabled_units $mode )
+                compopt -o filenames
 
         elif __contains_word "$verb" ${VERBS[DISABLED_UNITS]}; then
                 comps=$( __get_disabled_units $mode )
+                compopt -o filenames
 
         elif __contains_word "$verb" ${VERBS[REENABLABLE_UNITS]}; then
                 comps=$( __get_disabled_units $mode;
                          __get_enabled_units $mode )
+                compopt -o filenames
 
         elif __contains_word "$verb" ${VERBS[STARTABLE_UNITS]}; then
                 comps=$( __filter_units_by_property $mode CanStart yes \
                       $( __get_startable_units $mode))
+                compopt -o filenames
 
         elif __contains_word "$verb" ${VERBS[RESTARTABLE_UNITS]}; then
                 comps=$( __filter_units_by_property $mode CanStart yes \
@@ -179,24 +184,30 @@ _systemctl () {
                         | while read -r line; do \
                                 [[ "$line" =~ \.(device|snapshot|socket|timer)$ ]] || echo " $line"; \
                         done ))
+                compopt -o filenames
 
         elif __contains_word "$verb" ${VERBS[STOPPABLE_UNITS]}; then
                 comps=$( __filter_units_by_property $mode CanStop yes \
                       $( __get_active_units $mode ) )
+                compopt -o filenames
 
         elif __contains_word "$verb" ${VERBS[RELOADABLE_UNITS]}; then
                 comps=$( __filter_units_by_property $mode CanReload yes \
                       $( __get_active_units $mode ) )
+                compopt -o filenames
 
         elif __contains_word "$verb" ${VERBS[ISOLATABLE_UNITS]}; then
                 comps=$( __filter_units_by_property $mode AllowIsolate yes \
                       $( __get_all_units $mode ) )
+                compopt -o filenames
 
         elif __contains_word "$verb" ${VERBS[FAILED_UNITS]}; then
                 comps=$( __get_failed_units $mode )
+                compopt -o filenames
 
         elif __contains_word "$verb" ${VERBS[MASKED_UNITS]}; then
                 comps=$( __get_masked_units $mode )
+                compopt -o filenames
 
         elif __contains_word "$verb" ${VERBS[STANDALONE]} ${VERBS[NAME]}; then
                 comps=''
@@ -221,7 +232,7 @@ _systemctl () {
                         | { while read -r a b; do echo " $a"; done; } )
         fi
 
-        COMPREPLY=( $(compgen -W '$comps' -- "$cur") )
+        COMPREPLY=( $(compgen -o filenames -W '$comps' -- "$cur") )
         return 0
 }
 

commit 8c2e21cf4ad4bdb48c767d0a7269b8d7ff564a8e
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Sat Jul 26 20:11:58 2014 -0400

    bash-completion: use list-unit-files to get "all" units
    
    I think that it is better to return good results slightly more slowly,
    than partial quickly. Also reading from disk seems fast enough. Even
    the delay on first try with completely cold cache is acceptable.
    
    This is just for bash, 'cause zsh was already doing this.
    
    https://bugzilla.redhat.com/show_bug.cgi?id=790768
    (cherry picked from commit c6a373a26348544d944b08bf0c5dea4f72f6980b)

diff --git a/shell-completion/bash/systemctl.in b/shell-completion/bash/systemctl.in
index d9bfbe5..7959ad2 100644
--- a/shell-completion/bash/systemctl.in
+++ b/shell-completion/bash/systemctl.in
@@ -51,11 +51,13 @@ __filter_units_by_property () {
         done
 }
 
-__get_all_units      () { __systemctl $1 list-units --all \
+__get_all_units      () { { __systemctl $1 list-unit-files; __systemctl $1 list-units --all; } \
         | { while read -r a b; do echo " $a"; done; }; }
 __get_active_units   () { __systemctl $1 list-units       \
         | { while read -r a b; do echo " $a"; done; }; }
-__get_startable_units () { __systemctl $1 list-units --all -t service,timer,socket,mount,automount,path,snapshot,swap \
+__get_startable_units () { {
+        __systemctl $1 list-units --all -t service,timer,socket,mount,automount,path,snapshot,swap
+        __systemctl $1 list-unit-files -t service,timer,socket,mount,automount,path,snapshot,swap; } \
         | { while read -r a b c d; do [[ $c == "inactive" || $c == "failed" ]] && echo " $a"; done; }; }
 __get_failed_units   () { __systemctl $1 list-units       \
         | { while read -r a b c d; do [[ $c == "failed"   ]] && echo " $a"; done; }; }

commit 9d657ea29413c1c7516c2f39b22ea2348bb7725c
Author: Eric Cook <llua at gmx.com>
Date:   Sat Jul 26 11:15:52 2014 -0400

    shell-completion: prevent mangling unit names
    
    Units with literal hex '\xFF' in their names has to be read
    and printed properly.
    dev-disk-byx2dlabel-root.device != dev-disk-by\x2dlabel-root.device
    
    (cherry picked from commit 6d314eca15f6cbda38d82774b210f784d3d4f52a)

diff --git a/shell-completion/zsh/_systemctl.in b/shell-completion/zsh/_systemctl.in
index 0c27ab1..74304e2 100644
--- a/shell-completion/zsh/_systemctl.in
+++ b/shell-completion/zsh/_systemctl.in
@@ -98,7 +98,7 @@ _systemctl_all_units()
   if ( [[ ${+_sys_all_units} -eq 0 ]] || _cache_invalid SYS_ALL_UNITS ) &&
     ! _retrieve_cache SYS_ALL_UNITS;
   then
-    _sys_all_units=( $(__systemctl list-units --all | { while read a b; do echo " $a"; done; }) )
+    _sys_all_units=( $(__systemctl list-units --all | { while read -r a b; do echo -E - " $a"; done; }) )
     _store_cache SYS_ALL_UNITS _sys_all_units
   fi
 }
@@ -111,7 +111,7 @@ _systemctl_really_all_units()
   if ( [[ ${+_sys_really_all_units} -eq 0 ]] || _cache_invalid SYS_REALLY_ALL_UNITS ) &&
     ! _retrieve_cache SYS_REALLY_ALL_UNITS;
   then
-    all_unit_files=( $(__systemctl list-unit-files | { while read a b; do echo " $a"; done; }) )
+    all_unit_files=( $(__systemctl list-unit-files | { while read -r a b; do echo -E - " $a"; done; }) )
     _systemctl_all_units
     really_all_units=($_sys_all_units $all_unit_files)
     _sys_really_all_units=(${(u)really_all_units})
@@ -136,12 +136,12 @@ _filter_units_by_property() {
   done
 }
 
-_systemctl_active_units()  {_sys_active_units=(  $(__systemctl list-units          | { while read a b; do echo " $a"; done; }) )}
-_systemctl_inactive_units(){_sys_inactive_units=($(__systemctl list-units --all    | { while read a b c d; do [[ $c == "inactive" || $c == "failed" ]] && echo " $a"; done; }) )}
-_systemctl_failed_units()  {_sys_failed_units=(  $(__systemctl list-units --failed | { while read a b; do echo " $a"; done; }) )}
-_systemctl_enabled_units() {_sys_enabled_units=( $(__systemctl list-unit-files     | { while read a b; do [[ $b == "enabled" ]] && echo " $a"; done; }) )}
-_systemctl_disabled_units(){_sys_disabled_units=($(__systemctl list-unit-files     | { while read a b; do [[ $b == "disabled" ]] && echo " $a"; done; }) )}
-_systemctl_masked_units()  {_sys_masked_units=(  $(__systemctl list-unit-files     | { while read a b; do [[ $b == "masked" ]] && echo " $a"; done; }) )}
+_systemctl_active_units()  {_sys_active_units=(  $(__systemctl list-units          | { while read -r a b; do echo -E - " $a"; done; }) )}
+_systemctl_inactive_units(){_sys_inactive_units=($(__systemctl list-units --all    | { while read -r a b c d; do [[ $c == "inactive" || $c == "failed" ]] && echo -E - " $a"; done; }) )}
+_systemctl_failed_units()  {_sys_failed_units=(  $(__systemctl list-units --failed | { while read -r a b; do echo -E - " $a"; done; }) )}
+_systemctl_enabled_units() {_sys_enabled_units=( $(__systemctl list-unit-files     | { while read -r a b; do [[ $b == "enabled" ]] && echo -E - " $a"; done; }) )}
+_systemctl_disabled_units(){_sys_disabled_units=($(__systemctl list-unit-files     | { while read -r a b; do [[ $b == "disabled" ]] && echo -E - " $a"; done; }) )}
+_systemctl_masked_units()  {_sys_masked_units=(  $(__systemctl list-unit-files     | { while read -r a b; do [[ $b == "masked" ]] && echo -E - " $a"; done; }) )}
 
 # Completion functions for ALL_UNITS
 for fun in is-active is-failed is-enabled status show mask preset help list-dependencies ; do
@@ -217,8 +217,8 @@ for fun in restart reload-or-restart ; do
   {
     _systemctl_all_units
     compadd "$@" - $( _filter_units_by_property CanStart yes \
-      ${_sys_all_units[*]} | while read line; do \
-      [[ "$line" =~ \.device$ ]] || echo " $line"; \
+      ${_sys_all_units[*]} | while read -r line; do \
+      [[ "$line" =~ \.device$ ]] || echo -E - " $line"; \
       done )
   }
 done

commit b76c90d451c08508716ab7a7f07dc11199583dd8
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Mon Jul 21 21:11:56 2014 -0400

    shell-completion: systemd-analyze verify, systemctl link
    
    Some zsh completion helpers were not installed, so completion
    was broken.
    
    Add systemd-analyze verify. Make systemctl link complete only
    unit names.
    
    (cherry picked from commit 2c12a402cb1e8277c271ced8dc9c06d20b8f6017)
    
    Conflicts:
    	TODO
    
    [backport: undo verify and busname changes]

diff --git a/Makefile.am b/Makefile.am
index 5cc5c7c..d61838e 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -362,6 +362,8 @@ dist_zshcompletion_DATA = \
 	shell-completion/zsh/_systemd-analyze \
 	shell-completion/zsh/_systemd-run \
 	shell-completion/zsh/_sd_hosts_or_user_at_host \
+	shell-completion/zsh/_sd_outputmodes \
+	shell-completion/zsh/_sd_unit_files \
 	shell-completion/zsh/_systemd-delta \
 	shell-completion/zsh/_systemd
 
diff --git a/shell-completion/zsh/_sd_unit_files b/shell-completion/zsh/_sd_unit_files
new file mode 100644
index 0000000..4778a04
--- /dev/null
+++ b/shell-completion/zsh/_sd_unit_files
@@ -0,0 +1,9 @@
+#autoload
+
+_sd_unit_files() {
+    local files expl
+    files=( '*:files:->files' )
+
+    _description files expl 'unit file'
+    _files "$expl[@]" -g '*.(automount|busname|device|mount|path|service|snapshot|socket|swap|target|timer)'
+}
diff --git a/shell-completion/zsh/_systemctl.in b/shell-completion/zsh/_systemctl.in
index 0652349..0c27ab1 100644
--- a/shell-completion/zsh/_systemctl.in
+++ b/shell-completion/zsh/_systemctl.in
@@ -259,7 +259,9 @@ for fun in set-environment unset-environment ; do
   }
 done
 
-(( $+functions[_systemctl_link] )) || _systemctl_link() { _files }
+(( $+functions[_systemctl_link] )) || _systemctl_link() {
+   _sd_unit_files
+}
 
 # no systemctl completion for:
 #    [STANDALONE]='daemon-reexec daemon-reload default
diff --git a/shell-completion/zsh/_systemd-analyze b/shell-completion/zsh/_systemd-analyze
index 2eda5fe..d82e226 100644
--- a/shell-completion/zsh/_systemd-analyze
+++ b/shell-completion/zsh/_systemd-analyze
@@ -38,7 +38,12 @@ _systemd_analyze_command(){
 
 _arguments \
     {-h,--help}'[Show help text.]' \
-    '--user[Shows performance data of user sessions instead of the system manager.]' \
+    '--system[Operate on system systemd instance.]' \
+    '--user[Operate on user systemd instance.]' \
+    '--no-pager[Do not user pager.]' \
+    '--no-man[Do not check man pages.]' \
     '--order[When generating graph for dot, show only order]' \
     '--require[When generating graph for dot, show only requirement]' \
+    {-H+,--host=}'[Operate on remote host]:userathost:_sd_hosts_or_user_at_host' \
+    {-M+,--machine=}'[Operate on local container]:machine' \
     '*::systemd-analyze commands:_systemd_analyze_command'

commit 7919b87d1f9fd25a63296fe3e62d5576aab90d08
Author: William Giokas <1007380 at gmail.com>
Date:   Thu Nov 7 16:00:52 2013 -0600

    zsh-completion: Move output modes to autoload
    
    (cherry picked from commit a02c5fe7cbad3ca0536286ceab0bde5fb1c0ba13)

diff --git a/shell-completion/zsh/_journalctl b/shell-completion/zsh/_journalctl
index a8f3a28..a469bbc 100644
--- a/shell-completion/zsh/_journalctl
+++ b/shell-completion/zsh/_journalctl
@@ -1,11 +1,5 @@
 #compdef journalctl
 
-_outputmodes() {
-    local -a _output_opts
-    _output_opts=(short short-monotonic verbose export json json-pretty json-see cat)
-    _describe -t output 'output mode' _output_opts || compadd "$@"
-}
-
 _list_fields() {
     local -a journal_fields
     journal_fields=(MESSAGE{,_ID} PRIORITY CODE_{FILE,LINE,FUNC}
@@ -65,7 +59,7 @@ _arguments -s \
     {-n+,--lines=}'[Number of journal entries to show]:integer' \
     '--no-tail[Show all lines, even in follow mode]' \
     {-r,--reverse}'[Reverse output]' \
-    {-o+,--output=}'[Change journal output mode]:output modes:_outputmodes' \
+    {-o+,--output=}'[Change journal output mode]:output modes:_sd_outputmodes' \
     {-x,--catalog}'[Show explanatory texts with each log line]' \
     {-q,--quiet}"[Don't show privilege warning]" \
     {-m,--merge}'[Show entries from all available journals]' \
diff --git a/shell-completion/zsh/_sd_outputmodes b/shell-completion/zsh/_sd_outputmodes
new file mode 100644
index 0000000..dae8a5c
--- /dev/null
+++ b/shell-completion/zsh/_sd_outputmodes
@@ -0,0 +1,5 @@
+#autoload
+
+local -a _output_opts
+_output_opts=(short short-monotonic verbose export json json-pretty json-see cat)
+_describe -t output 'output mode' _output_opts || compadd "$@"
diff --git a/shell-completion/zsh/_systemctl.in b/shell-completion/zsh/_systemctl.in
index 2593b82..0652349 100644
--- a/shell-completion/zsh/_systemctl.in
+++ b/shell-completion/zsh/_systemctl.in
@@ -287,12 +287,6 @@ _systemctl_caching_policy()
   return 1
 }
 
-_outputmodes() {
-    local -a _output_opts
-    _output_opts=(short short-monotonic verbose export json json-pretty json-see cat)
-    _describe -t output 'output mode' _output_opts || compadd "$@"
-}
-
 _unit_states() {
     local -a _states
     _states=(loaded failed active inactive not-found listening running waiting plugged mounted exited dead masked)
@@ -353,6 +347,6 @@ _arguments -s \
     {-H+,--host=}'[Show information for remote host]:userathost:_sd_hosts_or_user_at_host' \
     {-P,--privileged}'[Acquire privileges before execution]' \
     {-n+,--lines=}'[Journal entries to show]:number of entries' \
-    {-o+,--output=}'[Change journal output mode]:modes:_outputmodes' \
+    {-o+,--output=}'[Change journal output mode]:modes:_sd_outputmodes' \
     '--plain[When used with list-dependencies, print output as a list]' \
     '*::systemctl command:_systemctl_command'

commit c2e540291db8c358a02e48de8e7ab5e837ab4274
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Mon Jul 14 19:24:46 2014 -0400

    shell-completion: restore completion for -p
    
    It was broken since systemd was moved out of /bin.
    
    For zsh it was never there.
    
    (cherry picked from commit c0a67aef31bb9716617ffe150ca8be19c5df203e)
    
    Conflicts:
    	Makefile.am

diff --git a/Makefile.am b/Makefile.am
index 48300eb..5cc5c7c 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -340,7 +340,6 @@ systemd_analyze_LDADD = \
 
 dist_bashcompletion_DATA = \
 	shell-completion/bash/journalctl \
-	shell-completion/bash/systemctl \
 	shell-completion/bash/systemd-analyze \
 	shell-completion/bash/systemd-cat \
 	shell-completion/bash/systemd-cgls \
@@ -352,8 +351,10 @@ dist_bashcompletion_DATA = \
 	shell-completion/bash/udevadm \
 	shell-completion/bash/kernel-install
 
+nodist_bashcompletion_DATA = \
+	shell-completion/bash/systemctl
+
 dist_zshcompletion_DATA = \
-	shell-completion/zsh/_systemctl \
 	shell-completion/zsh/_journalctl \
 	shell-completion/zsh/_udevadm \
 	shell-completion/zsh/_kernel-install \
@@ -364,6 +365,17 @@ dist_zshcompletion_DATA = \
 	shell-completion/zsh/_systemd-delta \
 	shell-completion/zsh/_systemd
 
+nodist_zshcompletion_DATA = \
+	shell-completion/zsh/_systemctl
+
+EXTRA_DIST += \
+	shell-completion/bash/systemctl.in \
+	shell-completion/zsh/_systemctl.in
+
+CLEANFILES += \
+	$(nodist_bashcompletion_DATA) \
+	$(nodist_zshcompletion_DATA)
+
 dist_sysctl_DATA = \
 	sysctl.d/50-default.conf
 
@@ -4294,6 +4306,9 @@ src/core/macros.%: src/core/macros.%.in Makefile
 src/%.policy.in: src/%.policy.in.in Makefile
 	$(SED_PROCESS)
 
+shell-completion/%: shell-completion/%.in
+	$(SED_PROCESS)
+
 %.rules: %.rules.in Makefile
 	$(SED_PROCESS)
 
diff --git a/shell-completion/bash/.gitignore b/shell-completion/bash/.gitignore
new file mode 100644
index 0000000..016e09d
--- /dev/null
+++ b/shell-completion/bash/.gitignore
@@ -0,0 +1 @@
+/systemctl
diff --git a/shell-completion/bash/systemctl b/shell-completion/bash/systemctl
deleted file mode 100644
index 1e4d07a..0000000
--- a/shell-completion/bash/systemctl
+++ /dev/null
@@ -1,226 +0,0 @@
-# systemctl(1) completion                                 -*- shell-script -*-
-#
-# This file is part of systemd.
-#
-# Copyright 2010 Ran Benita
-#
-# 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
-# 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/>.
-
-__systemctl() {
-        local mode=$1; shift 1
-        systemctl $mode --full --no-legend "$@"
-}
-
-__systemd_properties() {
-        local mode=$1
-        { __systemctl -a $mode show;
-         systemd --dump-configuration-items; } |
-        while IFS='=' read -r key value; do
-            [[ $value ]] && echo "$key"
-        done
-}
-
-__contains_word () {
-        local w word=$1; shift
-        for w in "$@"; do
-                [[ $w = "$word" ]] && return
-        done
-}
-
-__filter_units_by_property () {
-        local mode=$1 property=$2 value=$3 ; shift 3
-        local units=("$@")
-        local props
-        IFS=$'\n' read -rd '' -a props < \
-            <(__systemctl $mode show --property "$property" -- "${units[@]}")
-        for ((i=0; $i < ${#units[*]}; i++)); do
-                if [[ "${props[i]}" = "$property=$value" ]]; then
-                        echo " ${units[i]}"
-                fi
-        done
-}
-
-__get_all_units      () { __systemctl $1 list-units --all \
-        | { while read -r a b; do echo " $a"; done; }; }
-__get_active_units   () { __systemctl $1 list-units       \
-        | { while read -r a b; do echo " $a"; done; }; }
-__get_startable_units () { __systemctl $1 list-units --all -t service,timer,socket,mount,automount,path,snapshot,swap \
-        | { while read -r a b c d; do [[ $c == "inactive" || $c == "failed" ]] && echo " $a"; done; }; }
-__get_failed_units   () { __systemctl $1 list-units       \
-        | { while read -r a b c d; do [[ $c == "failed"   ]] && echo " $a"; done; }; }
-__get_enabled_units  () { __systemctl $1 list-unit-files  \
-        | { while read -r a b c  ; do [[ $b == "enabled"  ]] && echo " $a"; done; }; }
-__get_disabled_units () { __systemctl $1 list-unit-files  \
-        | { while read -r a b c  ; do [[ $b == "disabled" ]] && echo " $a"; done; }; }
-__get_masked_units   () { __systemctl $1 list-unit-files  \
-        | { while read -r a b c  ; do [[ $b == "masked"   ]] && echo " $a"; done; }; }
-
-_systemctl () {
-        local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]}
-        local i verb comps mode
-
-        local -A OPTS=(
-               [STANDALONE]='--all -a --reverse --after --before --defaults --fail --ignore-dependencies --failed --force -f --full -l --global
-                             --help -h --no-ask-password --no-block --no-legend --no-pager --no-reload --no-wall
-                             --quiet -q --privileged -P --system --user --version --runtime'
-                      [ARG]='--host -H --kill-who --property -p --signal -s --type -t --state --root'
-        )
-
-        if __contains_word "--user" ${COMP_WORDS[*]}; then
-            mode=--user
-        else
-            mode=--system
-        fi
-
-        if __contains_word "$prev" ${OPTS[ARG]}; then
-                case $prev in
-                        --signal|-s)
-                                comps=$(compgen -A signal)
-                        ;;
-                        --type|-t)
-                                comps='automount device mount path service snapshot socket swap target timer'
-                        ;;
-                        --state)
-                                comps='loaded not-found stub
-                                       active inactive
-                                       dead elapsed exited listening mounted plugged running waiting'
-                        ;;
-                        --kill-who)
-                                comps='all control main'
-                        ;;
-                        --root)
-                                comps=$(compgen -A directory -- "$cur" )
-                                compopt -o filenames
-                        ;;
-                        --host|-H)
-                                comps=$(compgen -A hostname)
-                        ;;
-                        --property|-p)
-                                comps=$(__systemd_properties $mode)
-                        ;;
-                esac
-                COMPREPLY=( $(compgen -W '$comps' -- "$cur") )
-                return 0
-        fi
-
-        if [[ "$cur" = -* ]]; then
-                COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") )
-                return 0
-        fi
-
-        local -A VERBS=(
-                [ALL_UNITS]='is-active is-failed is-enabled status show mask preset help list-dependencies'
-            [ENABLED_UNITS]='disable'
-           [DISABLED_UNITS]='enable'
-        [REENABLABLE_UNITS]='reenable'
-             [FAILED_UNITS]='reset-failed'
-          [STARTABLE_UNITS]='start'
-          [STOPPABLE_UNITS]='stop condstop kill try-restart condrestart'
-         [ISOLATABLE_UNITS]='isolate'
-         [RELOADABLE_UNITS]='reload condreload reload-or-try-restart force-reload'
-        [RESTARTABLE_UNITS]='restart reload-or-restart'
-             [MASKED_UNITS]='unmask'
-                     [JOBS]='cancel'
-                [SNAPSHOTS]='delete'
-                     [ENVS]='set-environment unset-environment'
-               [STANDALONE]='daemon-reexec daemon-reload default
-                             emergency exit halt hibernate hybrid-sleep kexec list-jobs
-                             list-sockets list-units list-unit-files poweroff reboot rescue
-                             show-environment suspend get-default'
-                     [NAME]='snapshot'
-                     [FILE]='link'
-                  [TARGETS]='set-default'
-        )
-
-        for ((i=0; i < COMP_CWORD; i++)); do
-                if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} &&
-                 ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then
-                        verb=${COMP_WORDS[i]}
-                        break
-                fi
-        done
-
-        if   [[ -z $verb ]]; then
-                comps="${VERBS[*]}"
-
-        elif __contains_word "$verb" ${VERBS[ALL_UNITS]}; then
-                comps=$( __get_all_units $mode )
-
-        elif __contains_word "$verb" ${VERBS[ENABLED_UNITS]}; then
-                comps=$( __get_enabled_units $mode )
-
-        elif __contains_word "$verb" ${VERBS[DISABLED_UNITS]}; then
-                comps=$( __get_disabled_units $mode )
-
-        elif __contains_word "$verb" ${VERBS[REENABLABLE_UNITS]}; then
-                comps=$( __get_disabled_units $mode;
-                         __get_enabled_units $mode )
-
-        elif __contains_word "$verb" ${VERBS[STARTABLE_UNITS]}; then
-                comps=$( __filter_units_by_property $mode CanStart yes \
-                      $( __get_startable_units $mode))
-
-        elif __contains_word "$verb" ${VERBS[RESTARTABLE_UNITS]}; then
-                comps=$( __filter_units_by_property $mode CanStart yes \
-                      $( __get_all_units $mode \
-                        | while read -r line; do \
-                                [[ "$line" =~ \.(device|snapshot|socket|timer)$ ]] || echo " $line"; \
-                        done ))
-
-        elif __contains_word "$verb" ${VERBS[STOPPABLE_UNITS]}; then
-                comps=$( __filter_units_by_property $mode CanStop yes \
-                      $( __get_active_units $mode ) )
-
-        elif __contains_word "$verb" ${VERBS[RELOADABLE_UNITS]}; then
-                comps=$( __filter_units_by_property $mode CanReload yes \
-                      $( __get_active_units $mode ) )
-
-        elif __contains_word "$verb" ${VERBS[ISOLATABLE_UNITS]}; then
-                comps=$( __filter_units_by_property $mode AllowIsolate yes \
-                      $( __get_all_units $mode ) )
-
-        elif __contains_word "$verb" ${VERBS[FAILED_UNITS]}; then
-                comps=$( __get_failed_units $mode )
-
-        elif __contains_word "$verb" ${VERBS[MASKED_UNITS]}; then
-                comps=$( __get_masked_units $mode )
-
-        elif __contains_word "$verb" ${VERBS[STANDALONE]} ${VERBS[NAME]}; then
-                comps=''
-
-        elif __contains_word "$verb" ${VERBS[JOBS]}; then
-                comps=$( __systemctl $mode list-jobs | { while read -r a b; do echo " $a"; done; } )
-
-        elif __contains_word "$verb" ${VERBS[SNAPSHOTS]}; then
-                comps=$( __systemctl $mode list-units --type snapshot --full --all \
-                        | { while read -r a b; do echo " $a"; done; } )
-
-        elif __contains_word "$verb" ${VERBS[ENVS]}; then
-                comps=$( __systemctl $mode show-environment \
-                    | while read -r line; do echo " ${line%%=*}=";done )
-                compopt -o nospace
-
-        elif __contains_word "$verb" ${VERBS[FILE]}; then
-                comps=$( compgen -A file -- "$cur" )
-                compopt -o filenames
-        elif __contains_word "$verb" ${VERBS[TARGETS]}; then
-                comps=$( __systemctl $mode list-unit-files --type target --full --all \
-                        | { while read -r a b; do echo " $a"; done; } )
-        fi
-
-        COMPREPLY=( $(compgen -W '$comps' -- "$cur") )
-        return 0
-}
-
-complete -F _systemctl systemctl
diff --git a/shell-completion/bash/systemctl.in b/shell-completion/bash/systemctl.in
new file mode 100644
index 0000000..d9bfbe5
--- /dev/null
+++ b/shell-completion/bash/systemctl.in
@@ -0,0 +1,226 @@
+# systemctl(1) completion                                 -*- shell-script -*-
+#
+# This file is part of systemd.
+#
+# Copyright 2010 Ran Benita
+#
+# 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
+# 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/>.
+
+__systemctl() {
+        local mode=$1; shift 1
+        systemctl $mode --full --no-legend "$@"
+}
+
+__systemd_properties() {
+        local mode=$1
+        { __systemctl $mode show --all;
+         @rootlibexecdir@/systemd --dump-configuration-items; } |
+        while IFS='=' read -r key value; do
+            [[ $value ]] && echo "$key"
+        done
+}
+
+__contains_word () {
+        local w word=$1; shift
+        for w in "$@"; do
+                [[ $w = "$word" ]] && return
+        done
+}
+
+__filter_units_by_property () {
+        local mode=$1 property=$2 value=$3 ; shift 3
+        local units=("$@")
+        local props
+        IFS=$'\n' read -rd '' -a props < \
+            <(__systemctl $mode show --property "$property" -- "${units[@]}")
+        for ((i=0; $i < ${#units[*]}; i++)); do
+                if [[ "${props[i]}" = "$property=$value" ]]; then
+                        echo " ${units[i]}"
+                fi
+        done
+}
+
+__get_all_units      () { __systemctl $1 list-units --all \
+        | { while read -r a b; do echo " $a"; done; }; }
+__get_active_units   () { __systemctl $1 list-units       \
+        | { while read -r a b; do echo " $a"; done; }; }
+__get_startable_units () { __systemctl $1 list-units --all -t service,timer,socket,mount,automount,path,snapshot,swap \
+        | { while read -r a b c d; do [[ $c == "inactive" || $c == "failed" ]] && echo " $a"; done; }; }
+__get_failed_units   () { __systemctl $1 list-units       \
+        | { while read -r a b c d; do [[ $c == "failed"   ]] && echo " $a"; done; }; }
+__get_enabled_units  () { __systemctl $1 list-unit-files  \
+        | { while read -r a b c  ; do [[ $b == "enabled"  ]] && echo " $a"; done; }; }
+__get_disabled_units () { __systemctl $1 list-unit-files  \
+        | { while read -r a b c  ; do [[ $b == "disabled" ]] && echo " $a"; done; }; }
+__get_masked_units   () { __systemctl $1 list-unit-files  \
+        | { while read -r a b c  ; do [[ $b == "masked"   ]] && echo " $a"; done; }; }
+
+_systemctl () {
+        local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]}
+        local i verb comps mode
+
+        local -A OPTS=(
+               [STANDALONE]='--all -a --reverse --after --before --defaults --fail --ignore-dependencies --failed --force -f --full -l --global
+                             --help -h --no-ask-password --no-block --no-legend --no-pager --no-reload --no-wall
+                             --quiet -q --privileged -P --system --user --version --runtime'
+                      [ARG]='--host -H --kill-who --property -p --signal -s --type -t --state --root'
+        )
+
+        if __contains_word "--user" ${COMP_WORDS[*]}; then
+            mode=--user
+        else
+            mode=--system
+        fi
+
+        if __contains_word "$prev" ${OPTS[ARG]}; then
+                case $prev in
+                        --signal|-s)
+                                comps=$(compgen -A signal)
+                        ;;
+                        --type|-t)
+                                comps='automount device mount path service snapshot socket swap target timer'
+                        ;;
+                        --state)
+                                comps='loaded not-found stub
+                                       active inactive
+                                       dead elapsed exited listening mounted plugged running waiting'
+                        ;;
+                        --kill-who)
+                                comps='all control main'
+                        ;;
+                        --root)
+                                comps=$(compgen -A directory -- "$cur" )
+                                compopt -o filenames
+                        ;;
+                        --host|-H)
+                                comps=$(compgen -A hostname)
+                        ;;
+                        --property|-p)
+                                comps=$(__systemd_properties $mode)
+                        ;;
+                esac
+                COMPREPLY=( $(compgen -W '$comps' -- "$cur") )
+                return 0
+        fi
+
+        if [[ "$cur" = -* ]]; then
+                COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") )
+                return 0
+        fi
+
+        local -A VERBS=(
+                [ALL_UNITS]='is-active is-failed is-enabled status show mask preset help list-dependencies'
+            [ENABLED_UNITS]='disable'
+           [DISABLED_UNITS]='enable'
+        [REENABLABLE_UNITS]='reenable'
+             [FAILED_UNITS]='reset-failed'
+          [STARTABLE_UNITS]='start'
+          [STOPPABLE_UNITS]='stop condstop kill try-restart condrestart'
+         [ISOLATABLE_UNITS]='isolate'
+         [RELOADABLE_UNITS]='reload condreload reload-or-try-restart force-reload'
+        [RESTARTABLE_UNITS]='restart reload-or-restart'
+             [MASKED_UNITS]='unmask'
+                     [JOBS]='cancel'
+                [SNAPSHOTS]='delete'
+                     [ENVS]='set-environment unset-environment'
+               [STANDALONE]='daemon-reexec daemon-reload default
+                             emergency exit halt hibernate hybrid-sleep kexec list-jobs
+                             list-sockets list-units list-unit-files poweroff reboot rescue
+                             show-environment suspend get-default'
+                     [NAME]='snapshot'
+                     [FILE]='link'
+                  [TARGETS]='set-default'
+        )
+
+        for ((i=0; i < COMP_CWORD; i++)); do
+                if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} &&
+                 ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then
+                        verb=${COMP_WORDS[i]}
+                        break
+                fi
+        done
+
+        if   [[ -z $verb ]]; then
+                comps="${VERBS[*]}"
+
+        elif __contains_word "$verb" ${VERBS[ALL_UNITS]}; then
+                comps=$( __get_all_units $mode )
+
+        elif __contains_word "$verb" ${VERBS[ENABLED_UNITS]}; then
+                comps=$( __get_enabled_units $mode )
+
+        elif __contains_word "$verb" ${VERBS[DISABLED_UNITS]}; then
+                comps=$( __get_disabled_units $mode )
+
+        elif __contains_word "$verb" ${VERBS[REENABLABLE_UNITS]}; then
+                comps=$( __get_disabled_units $mode;
+                         __get_enabled_units $mode )
+
+        elif __contains_word "$verb" ${VERBS[STARTABLE_UNITS]}; then
+                comps=$( __filter_units_by_property $mode CanStart yes \
+                      $( __get_startable_units $mode))
+
+        elif __contains_word "$verb" ${VERBS[RESTARTABLE_UNITS]}; then
+                comps=$( __filter_units_by_property $mode CanStart yes \
+                      $( __get_all_units $mode \
+                        | while read -r line; do \
+                                [[ "$line" =~ \.(device|snapshot|socket|timer)$ ]] || echo " $line"; \
+                        done ))
+
+        elif __contains_word "$verb" ${VERBS[STOPPABLE_UNITS]}; then
+                comps=$( __filter_units_by_property $mode CanStop yes \
+                      $( __get_active_units $mode ) )
+
+        elif __contains_word "$verb" ${VERBS[RELOADABLE_UNITS]}; then
+                comps=$( __filter_units_by_property $mode CanReload yes \
+                      $( __get_active_units $mode ) )
+
+        elif __contains_word "$verb" ${VERBS[ISOLATABLE_UNITS]}; then
+                comps=$( __filter_units_by_property $mode AllowIsolate yes \
+                      $( __get_all_units $mode ) )
+
+        elif __contains_word "$verb" ${VERBS[FAILED_UNITS]}; then
+                comps=$( __get_failed_units $mode )
+
+        elif __contains_word "$verb" ${VERBS[MASKED_UNITS]}; then
+                comps=$( __get_masked_units $mode )
+
+        elif __contains_word "$verb" ${VERBS[STANDALONE]} ${VERBS[NAME]}; then
+                comps=''
+
+        elif __contains_word "$verb" ${VERBS[JOBS]}; then
+                comps=$( __systemctl $mode list-jobs | { while read -r a b; do echo " $a"; done; } )
+
+        elif __contains_word "$verb" ${VERBS[SNAPSHOTS]}; then
+                comps=$( __systemctl $mode list-units --type snapshot --full --all \
+                        | { while read -r a b; do echo " $a"; done; } )
+
+        elif __contains_word "$verb" ${VERBS[ENVS]}; then
+                comps=$( __systemctl $mode show-environment \
+                    | while read -r line; do echo " ${line%%=*}=";done )
+                compopt -o nospace
+
+        elif __contains_word "$verb" ${VERBS[FILE]}; then
+                comps=$( compgen -A file -- "$cur" )
+                compopt -o filenames
+        elif __contains_word "$verb" ${VERBS[TARGETS]}; then
+                comps=$( __systemctl $mode list-unit-files --type target --full --all \
+                        | { while read -r a b; do echo " $a"; done; } )
+        fi
+
+        COMPREPLY=( $(compgen -W '$comps' -- "$cur") )
+        return 0
+}
+
+complete -F _systemctl systemctl
diff --git a/shell-completion/zsh/.gitignore b/shell-completion/zsh/.gitignore
new file mode 100644
index 0000000..75f13ad
--- /dev/null
+++ b/shell-completion/zsh/.gitignore
@@ -0,0 +1 @@
+/_systemctl
diff --git a/shell-completion/zsh/_systemctl b/shell-completion/zsh/_systemctl
deleted file mode 100644
index 6d98cb6..0000000
--- a/shell-completion/zsh/_systemctl
+++ /dev/null
@@ -1,345 +0,0 @@
-#compdef systemctl
-
-(( $+functions[_systemctl_command] )) || _systemctl_command()
-{
-  local -a _systemctl_cmds
-  _systemctl_cmds=(
-    "list-sockets:List sockets"
-    "list-units:List units"
-    "start:Start (activate) one or more units"
-    "stop:Stop (deactivate) one or more units"
-    "reload:Reload one or more units"
-    "restart:Start or restart one or more units"
-    "condrestart:Restart one or more units if active"
-    "try-restart:Restart one or more units if active"
-    "reload-or-restart:Reload one or more units if possible, otherwise start or restart"
-    "force-reload:Reload one or more units if possible, otherwise restart if active"
-    "hibernate:Hibernate the system"
-    "hybrid-sleep:Hibernate and suspend the system"
-    "reload-or-try-restart:Reload one or more units if possible, otherwise restart if active"
-    "isolate:Start one unit and stop all others"
-    "kill:Send signal to processes of a unit"
-    "is-active:Check whether units are active"
-    "is-failed:Check whether units are failed"
-    "status:Show runtime status of one or more units"
-    "show:Show properties of one or more units/jobs or the manager"
-    "reset-failed:Reset failed state for all, one, or more units"
-    "list-unit-files:List installed unit files"
-    "enable:Enable one or more unit files"
-    "disable:Disable one or more unit files"
-    "reenable:Reenable one or more unit files"
-    "preset:Enable/disable one or more unit files based on preset configuration"
-    "help:Show documentation for specified units"
-    "list-dependencies:Show unit dependency tree"
-    "mask:Mask one or more units"
-    "unmask:Unmask one or more units"
-    "link:Link one or more units files into the search path"
-    "is-enabled:Check whether unit files are enabled"
-    "list-jobs:List jobs"
-    "cancel:Cancel all, one, or more jobs"
-    "snapshot:Create a snapshot"
-    "delete:Remove one or more snapshots"
-    "show-environment:Dump environment"
-    "set-environment:Set one or more environment variables"
-    "unset-environment:Unset one or more environment variables"
-    "daemon-reload:Reload systemd manager configuration"
-    "daemon-reexec:Reexecute systemd manager"
-    "default:Enter system default mode"
-    "rescue:Enter system rescue mode"
-    "emergency:Enter system emergency mode"
-    "halt:Shut down and halt the system"
-    "suspend:Suspend the system"
-    "poweroff:Shut down and power-off the system"
-    "reboot:Shut down and reboot the system"
-    "kexec:Shut down and reboot the system with kexec"
-    "exit:Ask for user instance termination"
-  )
-
-  if (( CURRENT == 1 )); then
-    _describe -t commands 'systemctl command' _systemctl_cmds || compadd "$@"
-  else
-    local curcontext="$curcontext"
-
-    cmd="${${_systemctl_cmds[(r)$words[1]:*]%%:*}}"
-    # Deal with any aliases
-    case $cmd in
-      condrestart) cmd="try-restart";;
-      force-reload) cmd="reload-or-try-restart";;
-    esac
-
-    if (( $#cmd )); then
-      curcontext="${curcontext%:*:*}:systemctl-${cmd}:"
-
-      local update_policy
-      zstyle -s ":completion:${curcontext}:" cache-policy update_policy
-      if [[ -z "$update_policy" ]]; then
-        zstyle ":completion:${curcontext}:" cache-policy _systemctl_caching_policy
-      fi
-
-      _call_function ret _systemctl_$cmd || _message 'no more arguments'
-    else
-      _message "unknown systemctl command: $words[1]"
-    fi
-    return ret
-  fi
-}
-
-__systemctl()
-{
-  local -a _modes
-  _modes=("--user" "--system")
-  systemctl ${words:*_modes} --full --no-legend --no-pager "$@"
-}
-
-
-# Fills the unit list
-_systemctl_all_units()
-{
-  if ( [[ ${+_sys_all_units} -eq 0 ]] || _cache_invalid SYS_ALL_UNITS ) &&
-    ! _retrieve_cache SYS_ALL_UNITS;
-  then
-    _sys_all_units=( $(__systemctl list-units --all | { while read a b; do echo " $a"; done; }) )
-    _store_cache SYS_ALL_UNITS _sys_all_units
-  fi
-}
-
-# Fills the unit list including all file units
-_systemctl_really_all_units()
-{
-  local -a all_unit_files;
-  local -a really_all_units;
-  if ( [[ ${+_sys_really_all_units} -eq 0 ]] || _cache_invalid SYS_REALLY_ALL_UNITS ) &&
-    ! _retrieve_cache SYS_REALLY_ALL_UNITS;
-  then
-    all_unit_files=( $(__systemctl list-unit-files | { while read a b; do echo " $a"; done; }) )
-    _systemctl_all_units
-    really_all_units=($_sys_all_units $all_unit_files)
-    _sys_really_all_units=(${(u)really_all_units})
-    _store_cache SYS_REALLY_ALL_UNITS _sys_really_all_units
-  fi
-}
-
-_filter_units_by_property() {
-  local property=$1 value=$2 ; shift ; shift
-  local -a units ; units=($*)
-  local prop unit
-  for ((i=1; $i <= ${#units[*]}; i++)); do
-    # FIXME: "Failed to issue method call: Unknown unit" errors are ignored for
-    # now (related to DBUS_ERROR_UNKNOWN_OBJECT). in the future, we need to
-    # revert to calling 'systemctl show' once for all units, which is way
-    # faster
-    unit=${units[i]}
-    prop=${(f)"$(_call_program units "$service show --no-pager --property="$property" ${unit} 2>/dev/null")"}
-    if [[ "${prop}" = "$property=$value" ]]; then
-      echo " ${unit}"
-    fi
-  done
-}
-
-_systemctl_active_units()  {_sys_active_units=(  $(__systemctl list-units          | { while read a b; do echo " $a"; done; }) )}
-_systemctl_inactive_units(){_sys_inactive_units=($(__systemctl list-units --all    | { while read a b c d; do [[ $c == "inactive" || $c == "failed" ]] && echo " $a"; done; }) )}
-_systemctl_failed_units()  {_sys_failed_units=(  $(__systemctl list-units --failed | { while read a b; do echo " $a"; done; }) )}
-_systemctl_enabled_units() {_sys_enabled_units=( $(__systemctl list-unit-files     | { while read a b; do [[ $b == "enabled" ]] && echo " $a"; done; }) )}
-_systemctl_disabled_units(){_sys_disabled_units=($(__systemctl list-unit-files     | { while read a b; do [[ $b == "disabled" ]] && echo " $a"; done; }) )}
-_systemctl_masked_units()  {_sys_masked_units=(  $(__systemctl list-unit-files     | { while read a b; do [[ $b == "masked" ]] && echo " $a"; done; }) )}
-
-# Completion functions for ALL_UNITS
-for fun in is-active is-failed is-enabled status show mask preset help list-dependencies ; do
-  (( $+functions[_systemctl_$fun] )) || _systemctl_$fun()
-  {
-    _systemctl_really_all_units
-    compadd "$@" -a - _sys_really_all_units
-  }
-done
-
-# Completion functions for ENABLED_UNITS
-for fun in disable reenable ; do
-  (( $+functions[_systemctl_$fun] )) || _systemctl_$fun()
-  {
-    _systemctl_enabled_units
-    _systemctl_disabled_units
-    compadd "$@" -a - _sys_enabled_units _sys_disabled_units
-  }
-done
-
-# Completion functions for DISABLED_UNITS
-(( $+functions[_systemctl_enable] )) || _systemctl_enable()
-{
-  _systemctl_disabled_units
-  compadd "$@" -a - _sys_disabled_units
-}
-
-# Completion functions for FAILED_UNITS
-(( $+functions[_systemctl_reset-failed] )) || _systemctl_reset-failed()
-{
-  _systemctl_failed_units
-  compadd "$@" -a - _sys_failed_units || _message "no failed unit found"
-}
-
-# Completion functions for STARTABLE_UNITS
-(( $+functions[_systemctl_start] )) || _systemctl_start()
-{
-  _systemctl_inactive_units
-  compadd "$@" -a - _sys_inactive_units
-}
-
-# Completion functions for STOPPABLE_UNITS
-for fun in stop kill try-restart condrestart ; do
-  (( $+functions[_systemctl_$fun] )) || _systemctl_$fun()
-  {
-    _systemctl_active_units
-    compadd "$@" - $( _filter_units_by_property CanStop yes \
-      ${_sys_active_units[*]} )
-  }
-done
-
-# Completion functions for ISOLATABLE_UNITS
-(( $+functions[_systemctl_isolate] )) || _systemctl_isolate()
-{
-  _systemctl_all_units
-  compadd "$@" - $( _filter_units_by_property AllowIsolate yes \
-    ${_sys_all_units[*]} )
-}
-
-# Completion functions for RELOADABLE_UNITS
-for fun in reload reload-or-try-restart force-reload ; do
-  (( $+functions[_systemctl_$fun] )) || _systemctl_$fun()
-  {
-    _systemctl_active_units
-    compadd "$@" - $( _filter_units_by_property CanReload yes \
-      ${_sys_active_units[*]} )
-  }
-done
-
-# Completion functions for RESTARTABLE_UNITS
-for fun in restart reload-or-restart ; do
-  (( $+functions[_systemctl_$fun] )) || _systemctl_$fun()
-  {
-    _systemctl_all_units
-    compadd "$@" - $( _filter_units_by_property CanStart yes \
-      ${_sys_all_units[*]} | while read line; do \
-      [[ "$line" =~ \.device$ ]] || echo " $line"; \
-      done )
-  }
-done
-
-# Completion functions for MASKED_UNITS
-(( $+functions[_systemctl_unmask] )) || _systemctl_unmask()
-{
-  _systemctl_masked_units
-  compadd "$@" -a - _sys_masked_units || _message "no masked unit found"
-}
-
-# Completion functions for JOBS
-(( $+functions[_systemctl_cancel] )) || _systemctl_cancel()
-{
-  compadd "$@" - $(__systemctl list-jobs \
-    | cut -d' ' -f1  2>/dev/null ) || _message "no job found"
-}
-
-# Completion functions for SNAPSHOTS
-(( $+functions[_systemctl_delete] )) || _systemctl_delete()
-{
-  compadd "$@" - $(__systemctl list-units --type snapshot --all \
-    | cut -d' ' -f1  2>/dev/null ) || _message "no snapshot found"
-}
-
-# Completion functions for ENVS
-for fun in set-environment unset-environment ; do
-  (( $+functions[_systemctl_$fun] )) || _systemctl_$fun()
-  {
-    local fun=$0 ; fun=${fun##_systemctl_}
-    local suf
-    if [[ "${fun}" = "set-environment" ]]; then
-      suf='-S='
-    fi
-
-    compadd "$@" ${suf} - $(systemctl show-environment \
-      | while read line; do echo " ${line%%\=}";done )
-  }
-done
-
-(( $+functions[_systemctl_link] )) || _systemctl_link() { _files }
-
-# no systemctl completion for:
-#    [STANDALONE]='daemon-reexec daemon-reload default
-#                  emergency exit halt kexec list-jobs list-units
-#                  list-unit-files poweroff reboot rescue show-environment'
-#         [NAME]='snapshot'
-
-_systemctl_caching_policy()
-{
-  local _sysunits
-  local -a oldcache
-
-  # rebuild if cache is more than a day old
-  oldcache=( "$1"(mh+1) )
-  (( $#oldcache )) && return 0
-
-  _sysunits=($(__systemctl --all | cut -d' ' -f1))
-
-  if (( $#_sysunits )); then
-    for unit in $_sysunits; do
-      [[ "$unit" -nt "$1" ]] && return 0
-    done
-  fi
-
-  return 1
-}
-
-_outputmodes() {
-    local -a _output_opts
-    _output_opts=(short short-monotonic verbose export json json-pretty json-see cat)
-    _describe -t output 'output mode' _output_opts || compadd "$@"
-}
-
-_unit_states() {
-    local -a _states
-    _states=(loaded failed active inactive not-found listening running waiting plugged mounted exited dead masked)
-    _values -s , "${_states[@]}"
-}
-
-_unit_types() {
-    local -a _types
-    _types=(automount device mount path service snapshot socket swap target timer)
-    _values -s , "${_types[@]}"
-}
-
-_arguments -s \
-    {-h,--help}'[Show help]' \
-    '--version[Show package version]' \
-    {-t+,--type=}'[List only units of a particular type]:unit type:_unit_types' \
-    '--state=[Display units in the specifyied state]:unit state:_unit_states' \
-    \*{-p+,--property=}'[Show only properties by specific name]:unit property' \
-    {-a,--all}'[Show all units/properties, including dead/empty ones]' \
-    '--reverse[Show reverse dependencies]' \
-    '--after[Show units ordered after]' \
-    '--before[Show units ordered before]' \
-    '--failed[Show only failed units]' \
-    {-l,--full}"[Don't ellipsize unit names on output]" \
-    '--fail[When queueing a new job, fail if conflicting jobs are pending]' \
-    '--show-types[When showing sockets, show socket type]' \
-    '--irreversible[Mark transactions as irreversible]' \
-    '--ignore-dependencies[When queueing a new job, ignore all its dependencies]' \
-    {-i,--ignore-inhibitors}'[When executing a job, ignore jobs dependencies]' \
-    {-q,--quiet}'[Suppress output]' \
-    '--no-block[Do not wait until operation finished]' \
-    '--no-legend[Do not print a legend, i.e. the column headers and the footer with hints]' \
-    '--no-pager[Do not pipe output into a pager]' \
-    '--system[Connect to system manager]' \
-    '--user[Connect to user service manager]' \
-    "--no-wall[Don't send wall message before halt/power-off/reboot]" \
-    '--global[Enable/disable unit files globally]' \
-    "--no-reload[When enabling/disabling unit files, don't reload daemon configuration]" \
-    '--no-ask-password[Do not ask for system passwords]' \
-    '--kill-who=[Who to send signal to]:killwho:(main control all)' \
-    {-s+,--signal=}'[Which signal to send]:signal:_signals' \
-    {-f,--force}'[When enabling unit files, override existing symlinks. When shutting down, execute action immediately]' \
-    '--root=[Enable unit files in the specified root directory]:directory:_directories' \
-    '--runtime[Enable unit files only temporarily until next reboot]' \
-    {-H+,--host=}'[Show information for remote host]:userathost:_sd_hosts_or_user_at_host' \
-    {-P,--privileged}'[Acquire privileges before execution]' \
-    {-n+,--lines=}'[Journal entries to show]:number of entries' \
-    {-o+,--output=}'[Change journal output mode]:modes:_outputmodes' \
-    '--plain[When used with list-dependencies, print output as a list]' \
-    '*::systemctl command:_systemctl_command'
diff --git a/shell-completion/zsh/_systemctl.in b/shell-completion/zsh/_systemctl.in
new file mode 100644
index 0000000..2593b82
--- /dev/null
+++ b/shell-completion/zsh/_systemctl.in
@@ -0,0 +1,358 @@
+#compdef systemctl
+
+(( $+functions[_systemctl_command] )) || _systemctl_command()
+{
+  local -a _systemctl_cmds
+  _systemctl_cmds=(
+    "list-sockets:List sockets"
+    "list-units:List units"
+    "start:Start (activate) one or more units"
+    "stop:Stop (deactivate) one or more units"
+    "reload:Reload one or more units"
+    "restart:Start or restart one or more units"
+    "condrestart:Restart one or more units if active"
+    "try-restart:Restart one or more units if active"
+    "reload-or-restart:Reload one or more units if possible, otherwise start or restart"
+    "force-reload:Reload one or more units if possible, otherwise restart if active"
+    "hibernate:Hibernate the system"
+    "hybrid-sleep:Hibernate and suspend the system"
+    "reload-or-try-restart:Reload one or more units if possible, otherwise restart if active"
+    "isolate:Start one unit and stop all others"
+    "kill:Send signal to processes of a unit"
+    "is-active:Check whether units are active"
+    "is-failed:Check whether units are failed"
+    "status:Show runtime status of one or more units"
+    "show:Show properties of one or more units/jobs or the manager"
+    "reset-failed:Reset failed state for all, one, or more units"
+    "list-unit-files:List installed unit files"
+    "enable:Enable one or more unit files"
+    "disable:Disable one or more unit files"
+    "reenable:Reenable one or more unit files"
+    "preset:Enable/disable one or more unit files based on preset configuration"
+    "help:Show documentation for specified units"
+    "list-dependencies:Show unit dependency tree"
+    "mask:Mask one or more units"
+    "unmask:Unmask one or more units"
+    "link:Link one or more units files into the search path"
+    "is-enabled:Check whether unit files are enabled"
+    "list-jobs:List jobs"
+    "cancel:Cancel all, one, or more jobs"
+    "snapshot:Create a snapshot"
+    "delete:Remove one or more snapshots"
+    "show-environment:Dump environment"
+    "set-environment:Set one or more environment variables"
+    "unset-environment:Unset one or more environment variables"
+    "daemon-reload:Reload systemd manager configuration"
+    "daemon-reexec:Reexecute systemd manager"
+    "default:Enter system default mode"
+    "rescue:Enter system rescue mode"
+    "emergency:Enter system emergency mode"
+    "halt:Shut down and halt the system"
+    "suspend:Suspend the system"
+    "poweroff:Shut down and power-off the system"
+    "reboot:Shut down and reboot the system"
+    "kexec:Shut down and reboot the system with kexec"
+    "exit:Ask for user instance termination"
+  )
+
+  if (( CURRENT == 1 )); then
+    _describe -t commands 'systemctl command' _systemctl_cmds || compadd "$@"
+  else
+    local curcontext="$curcontext"
+
+    cmd="${${_systemctl_cmds[(r)$words[1]:*]%%:*}}"
+    # Deal with any aliases
+    case $cmd in
+      condrestart) cmd="try-restart";;
+      force-reload) cmd="reload-or-try-restart";;
+    esac
+
+    if (( $#cmd )); then
+      curcontext="${curcontext%:*:*}:systemctl-${cmd}:"
+
+      local update_policy
+      zstyle -s ":completion:${curcontext}:" cache-policy update_policy
+      if [[ -z "$update_policy" ]]; then
+        zstyle ":completion:${curcontext}:" cache-policy _systemctl_caching_policy
+      fi
+
+      _call_function ret _systemctl_$cmd || _message 'no more arguments'
+    else
+      _message "unknown systemctl command: $words[1]"
+    fi
+    return ret
+  fi
+}
+
+__systemctl()
+{
+  local -a _modes
+  _modes=("--user" "--system")
+  systemctl ${words:*_modes} --full --no-legend --no-pager "$@"
+}
+
+
+# Fills the unit list
+_systemctl_all_units()
+{
+  if ( [[ ${+_sys_all_units} -eq 0 ]] || _cache_invalid SYS_ALL_UNITS ) &&
+    ! _retrieve_cache SYS_ALL_UNITS;
+  then
+    _sys_all_units=( $(__systemctl list-units --all | { while read a b; do echo " $a"; done; }) )
+    _store_cache SYS_ALL_UNITS _sys_all_units
+  fi
+}
+
+# Fills the unit list including all file units
+_systemctl_really_all_units()
+{
+  local -a all_unit_files;
+  local -a really_all_units;
+  if ( [[ ${+_sys_really_all_units} -eq 0 ]] || _cache_invalid SYS_REALLY_ALL_UNITS ) &&
+    ! _retrieve_cache SYS_REALLY_ALL_UNITS;
+  then
+    all_unit_files=( $(__systemctl list-unit-files | { while read a b; do echo " $a"; done; }) )
+    _systemctl_all_units
+    really_all_units=($_sys_all_units $all_unit_files)
+    _sys_really_all_units=(${(u)really_all_units})
+    _store_cache SYS_REALLY_ALL_UNITS _sys_really_all_units
+  fi
+}
+
+_filter_units_by_property() {
+  local property=$1 value=$2 ; shift ; shift
+  local -a units ; units=($*)
+  local prop unit
+  for ((i=1; $i <= ${#units[*]}; i++)); do
+    # FIXME: "Failed to issue method call: Unknown unit" errors are ignored for
+    # now (related to DBUS_ERROR_UNKNOWN_OBJECT). in the future, we need to
+    # revert to calling 'systemctl show' once for all units, which is way
+    # faster
+    unit=${units[i]}
+    prop=${(f)"$(_call_program units "$service show --no-pager --property="$property" ${unit} 2>/dev/null")"}
+    if [[ "${prop}" = "$property=$value" ]]; then
+      echo " ${unit}"
+    fi
+  done
+}
+
+_systemctl_active_units()  {_sys_active_units=(  $(__systemctl list-units          | { while read a b; do echo " $a"; done; }) )}
+_systemctl_inactive_units(){_sys_inactive_units=($(__systemctl list-units --all    | { while read a b c d; do [[ $c == "inactive" || $c == "failed" ]] && echo " $a"; done; }) )}
+_systemctl_failed_units()  {_sys_failed_units=(  $(__systemctl list-units --failed | { while read a b; do echo " $a"; done; }) )}
+_systemctl_enabled_units() {_sys_enabled_units=( $(__systemctl list-unit-files     | { while read a b; do [[ $b == "enabled" ]] && echo " $a"; done; }) )}
+_systemctl_disabled_units(){_sys_disabled_units=($(__systemctl list-unit-files     | { while read a b; do [[ $b == "disabled" ]] && echo " $a"; done; }) )}
+_systemctl_masked_units()  {_sys_masked_units=(  $(__systemctl list-unit-files     | { while read a b; do [[ $b == "masked" ]] && echo " $a"; done; }) )}
+
+# Completion functions for ALL_UNITS
+for fun in is-active is-failed is-enabled status show mask preset help list-dependencies ; do
+  (( $+functions[_systemctl_$fun] )) || _systemctl_$fun()
+  {
+    _systemctl_really_all_units
+    compadd "$@" -a - _sys_really_all_units
+  }
+done
+
+# Completion functions for ENABLED_UNITS
+for fun in disable reenable ; do
+  (( $+functions[_systemctl_$fun] )) || _systemctl_$fun()
+  {
+    _systemctl_enabled_units
+    _systemctl_disabled_units
+    compadd "$@" -a - _sys_enabled_units _sys_disabled_units
+  }
+done
+
+# Completion functions for DISABLED_UNITS
+(( $+functions[_systemctl_enable] )) || _systemctl_enable()
+{
+  _systemctl_disabled_units
+  compadd "$@" -a - _sys_disabled_units
+}
+
+# Completion functions for FAILED_UNITS
+(( $+functions[_systemctl_reset-failed] )) || _systemctl_reset-failed()
+{
+  _systemctl_failed_units
+  compadd "$@" -a - _sys_failed_units || _message "no failed unit found"
+}
+
+# Completion functions for STARTABLE_UNITS
+(( $+functions[_systemctl_start] )) || _systemctl_start()
+{
+  _systemctl_inactive_units
+  compadd "$@" -a - _sys_inactive_units
+}
+
+# Completion functions for STOPPABLE_UNITS
+for fun in stop kill try-restart condrestart ; do
+  (( $+functions[_systemctl_$fun] )) || _systemctl_$fun()
+  {
+    _systemctl_active_units
+    compadd "$@" - $( _filter_units_by_property CanStop yes \
+      ${_sys_active_units[*]} )
+  }
+done
+
+# Completion functions for ISOLATABLE_UNITS
+(( $+functions[_systemctl_isolate] )) || _systemctl_isolate()
+{
+  _systemctl_all_units
+  compadd "$@" - $( _filter_units_by_property AllowIsolate yes \
+    ${_sys_all_units[*]} )
+}
+
+# Completion functions for RELOADABLE_UNITS
+for fun in reload reload-or-try-restart force-reload ; do
+  (( $+functions[_systemctl_$fun] )) || _systemctl_$fun()
+  {
+    _systemctl_active_units
+    compadd "$@" - $( _filter_units_by_property CanReload yes \
+      ${_sys_active_units[*]} )
+  }
+done
+
+# Completion functions for RESTARTABLE_UNITS
+for fun in restart reload-or-restart ; do
+  (( $+functions[_systemctl_$fun] )) || _systemctl_$fun()
+  {
+    _systemctl_all_units
+    compadd "$@" - $( _filter_units_by_property CanStart yes \
+      ${_sys_all_units[*]} | while read line; do \
+      [[ "$line" =~ \.device$ ]] || echo " $line"; \
+      done )
+  }
+done
+
+# Completion functions for MASKED_UNITS
+(( $+functions[_systemctl_unmask] )) || _systemctl_unmask()
+{
+  _systemctl_masked_units
+  compadd "$@" -a - _sys_masked_units || _message "no masked unit found"
+}
+
+# Completion functions for JOBS
+(( $+functions[_systemctl_cancel] )) || _systemctl_cancel()
+{
+  compadd "$@" - $(__systemctl list-jobs \
+    | cut -d' ' -f1  2>/dev/null ) || _message "no job found"
+}
+
+# Completion functions for SNAPSHOTS
+(( $+functions[_systemctl_delete] )) || _systemctl_delete()
+{
+  compadd "$@" - $(__systemctl list-units --type snapshot --all \
+    | cut -d' ' -f1  2>/dev/null ) || _message "no snapshot found"
+}
+
+# Completion functions for ENVS
+for fun in set-environment unset-environment ; do
+  (( $+functions[_systemctl_$fun] )) || _systemctl_$fun()
+  {
+    local fun=$0 ; fun=${fun##_systemctl_}
+    local suf
+    if [[ "${fun}" = "set-environment" ]]; then
+      suf='-S='
+    fi
+
+    compadd "$@" ${suf} - $(systemctl show-environment \
+      | while read line; do echo " ${line%%\=}";done )
+  }
+done
+
+(( $+functions[_systemctl_link] )) || _systemctl_link() { _files }
+
+# no systemctl completion for:
+#    [STANDALONE]='daemon-reexec daemon-reload default
+#                  emergency exit halt kexec list-jobs list-units
+#                  list-unit-files poweroff reboot rescue show-environment'
+#         [NAME]='snapshot'
+
+_systemctl_caching_policy()
+{
+  local _sysunits
+  local -a oldcache
+
+  # rebuild if cache is more than a day old
+  oldcache=( "$1"(mh+1) )
+  (( $#oldcache )) && return 0
+
+  _sysunits=($(__systemctl --all | cut -d' ' -f1))
+
+  if (( $#_sysunits )); then
+    for unit in $_sysunits; do
+      [[ "$unit" -nt "$1" ]] && return 0
+    done
+  fi
+
+  return 1
+}
+
+_outputmodes() {
+    local -a _output_opts
+    _output_opts=(short short-monotonic verbose export json json-pretty json-see cat)
+    _describe -t output 'output mode' _output_opts || compadd "$@"
+}
+
+_unit_states() {
+    local -a _states
+    _states=(loaded failed active inactive not-found listening running waiting plugged mounted exited dead masked)
+    _values -s , "${_states[@]}"
+}
+
+_unit_types() {
+    local -a _types
+    _types=(automount device mount path service snapshot socket swap target timer)
+    _values -s , "${_types[@]}"
+}
+
+_unit_properties() {
+  if ( [[ ${+_sys_all_properties} -eq 0 ]] || _cache_invalid SYS_ALL_PROPERTIES ) &&
+    ! _retrieve_cache SYS_ALL_PROPERTIES;
+  then
+    _sys_all_properties=( $( {__systemctl show --all;
+       @rootlibexecdir@/systemd --dump-configuration-items; } | {
+       while IFS='=' read -r a b; do [ -n "$b" ] && echo "$a"; done
+    }) )
+    _store_cache SYS_ALL_PROPRTIES _sys_all_properties
+  fi
+  _values -s , "${_sys_all_properties[@]}"
+}
+
+_arguments -s \
+    {-h,--help}'[Show help]' \
+    '--version[Show package version]' \
+    {-t+,--type=}'[List only units of a particular type]:unit type:_unit_types' \
+    '--state=[Display units in the specifyied state]:unit state:_unit_states' \
+    {-p+,--property=}'[Show only properties by specific name]:unit property:_unit_properties' \
+    {-a,--all}'[Show all units/properties, including dead/empty ones]' \
+    '--reverse[Show reverse dependencies]' \
+    '--after[Show units ordered after]' \
+    '--before[Show units ordered before]' \
+    '--failed[Show only failed units]' \
+    {-l,--full}"[Don't ellipsize unit names on output]" \
+    '--fail[When queueing a new job, fail if conflicting jobs are pending]' \
+    '--show-types[When showing sockets, show socket type]' \
+    '--irreversible[Mark transactions as irreversible]' \
+    '--ignore-dependencies[When queueing a new job, ignore all its dependencies]' \
+    {-i,--ignore-inhibitors}'[When executing a job, ignore jobs dependencies]' \
+    {-q,--quiet}'[Suppress output]' \
+    '--no-block[Do not wait until operation finished]' \
+    '--no-legend[Do not print a legend, i.e. the column headers and the footer with hints]' \
+    '--no-pager[Do not pipe output into a pager]' \
+    '--system[Connect to system manager]' \
+    '--user[Connect to user service manager]' \
+    "--no-wall[Don't send wall message before halt/power-off/reboot]" \
+    '--global[Enable/disable unit files globally]' \
+    "--no-reload[When enabling/disabling unit files, don't reload daemon configuration]" \
+    '--no-ask-password[Do not ask for system passwords]' \
+    '--kill-who=[Who to send signal to]:killwho:(main control all)' \
+    {-s+,--signal=}'[Which signal to send]:signal:_signals' \
+    {-f,--force}'[When enabling unit files, override existing symlinks. When shutting down, execute action immediately]' \
+    '--root=[Enable unit files in the specified root directory]:directory:_directories' \
+    '--runtime[Enable unit files only temporarily until next reboot]' \
+    {-H+,--host=}'[Show information for remote host]:userathost:_sd_hosts_or_user_at_host' \
+    {-P,--privileged}'[Acquire privileges before execution]' \
+    {-n+,--lines=}'[Journal entries to show]:number of entries' \
+    {-o+,--output=}'[Change journal output mode]:modes:_outputmodes' \
+    '--plain[When used with list-dependencies, print output as a list]' \
+    '*::systemctl command:_systemctl_command'

commit fd764e8bee33e7a65647a8c77a360da741407afc
Author: Dave Reisner <dreisner at archlinux.org>
Date:   Tue Oct 14 07:54:56 2014 -0400

    python-systemd: avoid hitting assert in __exit__
    
    Reader_close() asserts that 'args' is always NULL, but the __exit__
    function forwards a non-NULL args.
    
    (cherry picked from commit 9ff5ff320ec71fec7f2c841223380665794afd07)
    
    Conflicts:
    	src/python-systemd/_reader.c

diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c
index 0c88926..d1e05a4 100644
--- a/src/python-systemd/_reader.c
+++ b/src/python-systemd/_reader.c
@@ -325,9 +325,8 @@ PyDoc_STRVAR(Reader___exit____doc__,
              "__exit__(type, value, traceback) -> None\n\n"
              "Part of the context manager protocol.\n"
              "Closes the journal.\n");
-static PyObject* Reader___exit__(Reader *self, PyObject *args)
-{
-    return Reader_close(self, args);
+static PyObject* Reader___exit__(Reader *self, PyObject *args) {
+        return Reader_close(self, NULL);
 }
 
 

commit 18c4d58b7982c03ed189a3321843c039f64a3257
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Thu Oct 9 19:52:31 2014 -0400

    journalctl: use pager for --list-boots
    
    (cherry picked from commit cab9b000f28a940e92d1d4241d967cad94c650e3)

diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c
index 07a08aa..8a32de3 100644
--- a/src/journal/journalctl.c
+++ b/src/journal/journalctl.c
@@ -778,6 +778,8 @@ static int list_boots(sd_journal *j) {
         if (r < 0)
                 return r;
 
+        pager_open_if_enabled();
+
         SD_JOURNAL_FOREACH_UNIQUE(j, data, length) {
                 assert(startswith(data, "_BOOT_ID="));
 

commit 2f3668cecb5ed986245e032237fcf5dd65255ccf
Author: Jan Janssen <medhefgo at web.de>
Date:   Sat Sep 6 10:36:34 2014 +0200

    sd-journal: fix sd_journal_enumerate_unique skipping values
    
    sd_journal_enumerate_unique will lock its mmap window to prevent it
    from being released by calling mmap_cache_get with keep_always=true.
    This call may return windows that are wider, but compatible with the
    parameters provided to it.
    
    This can result in a mismatch where the window to be released cannot
    properly be selected, because we have more than one window matching the
    parameters of mmap_cache_release. Therefore, introduce a release_cookie
    to be used when releasing the window.
    
    https://bugs.freedesktop.org/show_bug.cgi?id=79380
    (cherry picked from commit 06cc69d44c8ff2b652527357f28acd4cbe77c814)

diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
index db2b77c..f69faa4 100644
--- a/src/journal/journal-file.c
+++ b/src/journal/journal-file.c
@@ -385,7 +385,7 @@ static int journal_file_move_to(JournalFile *f, int context, bool keep_always, u
                         return -EADDRNOTAVAIL;
         }
 
-        return mmap_cache_get(f->mmap, f->fd, f->prot, context, keep_always, offset, size, &f->last_stat, ret);
+        return mmap_cache_get(f->mmap, f->fd, f->prot, context, keep_always, offset, size, &f->last_stat, ret, NULL);
 }
 
 static uint64_t minimum_header_size(Object *o) {
diff --git a/src/journal/journal-file.h b/src/journal/journal-file.h
index d202eb5..108017a 100644
--- a/src/journal/journal-file.h
+++ b/src/journal/journal-file.h
@@ -209,17 +209,14 @@ static unsigned type_to_context(int type) {
         return type > 0 && type < _OBJECT_TYPE_MAX ? type : 0;
 }
 
-static inline int journal_file_object_keep(JournalFile *f, Object *o, uint64_t offset) {
+static inline int journal_file_object_keep(JournalFile *f, Object *o, uint64_t offset, void **release_cookie) {
         unsigned context = type_to_context(o->object.type);
         uint64_t s = le64toh(o->object.size);
 
         return mmap_cache_get(f->mmap, f->fd, f->prot, context, true,
-                              offset, s, &f->last_stat, NULL);
+                              offset, s, &f->last_stat, NULL, release_cookie);
 }
 
-static inline int journal_file_object_release(JournalFile *f, Object *o, uint64_t offset) {
-        unsigned context = type_to_context(o->object.type);
-        uint64_t s = le64toh(o->object.size);
-
-        return mmap_cache_release(f->mmap, f->fd, f->prot, context, offset, s);
+static inline int journal_file_object_release(JournalFile *f, void *release_cookie) {
+        return mmap_cache_release(f->mmap, f->fd, release_cookie);
 }
diff --git a/src/journal/journal-verify.c b/src/journal/journal-verify.c
index 55ec6fd..43c343e 100644
--- a/src/journal/journal-verify.c
+++ b/src/journal/journal-verify.c
@@ -356,7 +356,7 @@ static int contains_uint64(MMapCache *m, int fd, uint64_t n, uint64_t p) {
 
                 c = (a + b) / 2;
 
-                r = mmap_cache_get(m, fd, PROT_READ|PROT_WRITE, 0, false, c * sizeof(uint64_t), sizeof(uint64_t), NULL, (void **) &z);
+                r = mmap_cache_get(m, fd, PROT_READ|PROT_WRITE, 0, false, c * sizeof(uint64_t), sizeof(uint64_t), NULL, (void **) &z, NULL);
                 if (r < 0)
                         return r;
 
diff --git a/src/journal/mmap-cache.c b/src/journal/mmap-cache.c
index fdd0c9e..dd2a78e 100644
--- a/src/journal/mmap-cache.c
+++ b/src/journal/mmap-cache.c
@@ -352,7 +352,8 @@ static int try_context(
                 bool keep_always,
                 uint64_t offset,
                 size_t size,
-                void **ret) {
+                void **ret,
+                void **release_cookie) {
 
         Context *c;
 
@@ -381,6 +382,8 @@ static int try_context(
 
         if (ret)
                 *ret = (uint8_t*) c->window->ptr + (offset - c->window->offset);
+        if (keep_always && release_cookie)
+                *release_cookie = c->window;
         return 1;
 }
 
@@ -392,7 +395,8 @@ static int find_mmap(
                 bool keep_always,
                 uint64_t offset,
                 size_t size,
-                void **ret) {
+                void **ret,
+                void **release_cookie) {
 
         FileDescriptor *f;
         Window *w;
@@ -425,6 +429,8 @@ static int find_mmap(
 
         if (ret)
                 *ret = (uint8_t*) w->ptr + (offset - w->offset);
+        if (keep_always && release_cookie)
+                *release_cookie = c->window;
         return 1;
 }
 
@@ -437,7 +443,8 @@ static int add_mmap(
                 uint64_t offset,
                 size_t size,
                 struct stat *st,
-                void **ret) {
+                void **ret,
+                void **release_cookie) {
 
         uint64_t woffset, wsize;
         Context *c;
@@ -521,6 +528,8 @@ static int add_mmap(
 
         if (ret)
                 *ret = (uint8_t*) w->ptr + (offset - w->offset);
+        if (keep_always && release_cookie)
+                *release_cookie = c->window;
         return 1;
 
 outofmem:
@@ -537,7 +546,8 @@ int mmap_cache_get(
                 uint64_t offset,
                 size_t size,
                 struct stat *st,
-                void **ret) {
+                void **ret,
+                void **release_cookie) {
 
         int r;
 
@@ -547,14 +557,14 @@ int mmap_cache_get(
         assert(size > 0);
 
         /* Check whether the current context is the right one already */
-        r = try_context(m, fd, prot, context, keep_always, offset, size, ret);
+        r = try_context(m, fd, prot, context, keep_always, offset, size, ret, release_cookie);
         if (r != 0) {
                 m->n_hit ++;
                 return r;
         }
 
         /* Search for a matching mmap */
-        r = find_mmap(m, fd, prot, context, keep_always, offset, size, ret);
+        r = find_mmap(m, fd, prot, context, keep_always, offset, size, ret, release_cookie);
         if (r != 0) {
                 m->n_hit ++;
                 return r;
@@ -563,16 +573,13 @@ int mmap_cache_get(
         m->n_missed++;
 
         /* Create a new mmap */
-        return add_mmap(m, fd, prot, context, keep_always, offset, size, st, ret);
+        return add_mmap(m, fd, prot, context, keep_always, offset, size, st, ret, release_cookie);
 }
 
 int mmap_cache_release(
                 MMapCache *m,
                 int fd,
-                int prot,
-                unsigned context,
-                uint64_t offset,
-                size_t size) {
+                void *release_cookie) {
 
         FileDescriptor *f;
         Window *w;
@@ -580,7 +587,6 @@ int mmap_cache_release(
         assert(m);
         assert(m->n_ref > 0);
         assert(fd >= 0);
-        assert(size > 0);
 
         f = hashmap_get(m->fds, INT_TO_PTR(fd + 1));
         if (!f)
@@ -589,7 +595,7 @@ int mmap_cache_release(
         assert(f->fd == fd);
 
         LIST_FOREACH(by_fd, w, f->windows)
-                if (window_matches(w, fd, prot, offset, size))
+                if (w == release_cookie)
                         break;
 
         if (!w)
diff --git a/src/journal/mmap-cache.h b/src/journal/mmap-cache.h
index 647555a..76e5316 100644
--- a/src/journal/mmap-cache.h
+++ b/src/journal/mmap-cache.h
@@ -40,14 +40,12 @@ int mmap_cache_get(
         uint64_t offset,
         size_t size,
         struct stat *st,
-        void **ret);
+        void **ret,
+        void **release_cookie);
 int mmap_cache_release(
         MMapCache *m,
         int fd,
-        int prot,
-        unsigned context,
-        uint64_t offset,
-        size_t size);
+        void *release_cookie);
 void mmap_cache_close_fd(MMapCache *m, int fd);
 void mmap_cache_close_context(MMapCache *m, unsigned context);
 
diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c
index ba4e4ab..7e226e3 100644
--- a/src/journal/sd-journal.c
+++ b/src/journal/sd-journal.c
@@ -2555,6 +2555,7 @@ _public_ int sd_journal_enumerate_unique(sd_journal *j, const void **data, size_
                 size_t ol;
                 bool found;
                 int r;
+                void *release_cookie;
 
                 /* Proceed to next data object in the field's linked list */
                 if (j->unique_offset == 0) {
@@ -2595,7 +2596,7 @@ _public_ int sd_journal_enumerate_unique(sd_journal *j, const void **data, size_
                         return -EBADMSG;
                 }
 
-                r = journal_file_object_keep(j->unique_file, o, j->unique_offset);
+                r = journal_file_object_keep(j->unique_file, o, j->unique_offset, &release_cookie);
                 if (r < 0)
                         return r;
 
@@ -2643,13 +2644,13 @@ _public_ int sd_journal_enumerate_unique(sd_journal *j, const void **data, size_
                                 found = true;
                 }
 
-                if (found)
-                        continue;
-
-                r = journal_file_object_release(j->unique_file, o, j->unique_offset);
+                r = journal_file_object_release(j->unique_file, release_cookie);
                 if (r < 0)
                         return r;
 
+                if (found)
+                        continue;
+
                 r = return_data(j, j->unique_file, o, data, l);
                 if (r < 0)
                         return r;
diff --git a/src/journal/test-mmap-cache.c b/src/journal/test-mmap-cache.c
index 868ba00..1bffd51 100644
--- a/src/journal/test-mmap-cache.c
+++ b/src/journal/test-mmap-cache.c
@@ -48,23 +48,23 @@ int main(int argc, char *argv[]) {
         assert(z >= 0);
         unlink(pz);
 
-        r = mmap_cache_get(m, x, PROT_READ, 0, false, 1, 2, NULL, &p);
+        r = mmap_cache_get(m, x, PROT_READ, 0, false, 1, 2, NULL, &p, NULL);
         assert(r >= 0);
 
-        r = mmap_cache_get(m, x, PROT_READ, 0, false, 2, 2, NULL, &q);
+        r = mmap_cache_get(m, x, PROT_READ, 0, false, 2, 2, NULL, &q, NULL);
         assert(r >= 0);
 
         assert((uint8_t*) p + 1 == (uint8_t*) q);
 
-        r = mmap_cache_get(m, x, PROT_READ, 1, false, 3, 2, NULL, &q);
+        r = mmap_cache_get(m, x, PROT_READ, 1, false, 3, 2, NULL, &q, NULL);
         assert(r >= 0);
 
         assert((uint8_t*) p + 2 == (uint8_t*) q);
 
-        r = mmap_cache_get(m, x, PROT_READ, 0, false, 16ULL*1024ULL*1024ULL, 2, NULL, &p);
+        r = mmap_cache_get(m, x, PROT_READ, 0, false, 16ULL*1024ULL*1024ULL, 2, NULL, &p, NULL);
         assert(r >= 0);
 
-        r = mmap_cache_get(m, x, PROT_READ, 1, false, 16ULL*1024ULL*1024ULL+1, 2, NULL, &q);
+        r = mmap_cache_get(m, x, PROT_READ, 1, false, 16ULL*1024ULL*1024ULL+1, 2, NULL, &q, NULL);
         assert(r >= 0);
 
         assert((uint8_t*) p + 1 == (uint8_t*) q);

commit 2bbdcbc8284ebca6df059f17e967d0444f6e786d
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Thu Oct 9 22:51:35 2014 -0400

    sd-journal: change check to assert
    
    As of 0f99f74a14 'sd-journal: verify that object start with the field
    name' this condition should never happen.
    
    (cherry picked from commit 853bd5cc72a0d4cbdd07cc3cabc65bef333a0c71)

diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c
index e57a547..07a08aa 100644
--- a/src/journal/journalctl.c
+++ b/src/journal/journalctl.c
@@ -779,8 +779,7 @@ static int list_boots(sd_journal *j) {
                 return r;
 
         SD_JOURNAL_FOREACH_UNIQUE(j, data, length) {
-                if (length < strlen("_BOOT_ID="))
-                        continue;
+                assert(startswith(data, "_BOOT_ID="));
 
                 if (!GREEDY_REALLOC(all_ids, allocated, count + 1))
                         return log_oom();

commit 078634bd4df6977e3a05cb93f23bb591a6378a93
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Thu Oct 9 22:44:29 2014 -0400

    sd-journal: do not reset sd_j_enumerate_unique position on error
    
    systemctl would call sd_j_enumerate_unique() interleaved with
    sd_j_next(). But the latter can remove a file if it detects an
    error in it. In those circumstances sd_j_enumerate_unique would
    restart with the first file in hashmap. With many corrupted files
    sd_j_enumerate_unique might iterate over the list multiple times.
    
    Avoid this by jumping to the next file in unique list if possible,
    or setting a flag that tells sd_j_enumerate_unique that it is done
    otherwise.
    
    (cherry picked from commit 360af4cf6f18469df97c11af4cd5696e0ca8b3ef)

diff --git a/src/journal/journal-internal.h b/src/journal/journal-internal.h
index 3355fca..df19c68 100644
--- a/src/journal/journal-internal.h
+++ b/src/journal/journal-internal.h
@@ -123,6 +123,10 @@ struct sd_journal {
 
         bool on_network;
         bool no_new_files;
+        bool unique_file_lost; /* File we were iterating over got
+                                  removed, and there were no more
+                                  files, so sd_j_enumerate_unique
+                                  will return a value equal to 0. */
 
         size_t data_threshold;
 
diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c
index 311eb81..ba4e4ab 100644
--- a/src/journal/sd-journal.c
+++ b/src/journal/sd-journal.c
@@ -1404,8 +1404,11 @@ static void remove_file_real(sd_journal *j, JournalFile *f) {
         }
 
         if (j->unique_file == f) {
-                j->unique_file = NULL;
+                /* Jump to the next unique_file or NULL if that one was last */
+                j->unique_file = hashmap_next(j->files, j->unique_file->path);
                 j->unique_offset = 0;
+                if (!j->unique_file)
+                        j->unique_file_lost = true;
         }
 
         journal_file_close(f);
@@ -2512,6 +2515,7 @@ _public_ int sd_journal_query_unique(sd_journal *j, const char *field) {
         j->unique_field = f;
         j->unique_file = NULL;
         j->unique_offset = 0;
+        j->unique_file_lost = false;
 
         return 0;
 }
@@ -2533,9 +2537,13 @@ _public_ int sd_journal_enumerate_unique(sd_journal *j, const void **data, size_
         k = strlen(j->unique_field);
 
         if (!j->unique_file) {
+                if (j->unique_file_lost)
+                        return 0;
+
                 j->unique_file = hashmap_first(j->files);
                 if (!j->unique_file)
                         return 0;
+
                 j->unique_offset = 0;
         }
 
@@ -2565,13 +2573,10 @@ _public_ int sd_journal_enumerate_unique(sd_journal *j, const void **data, size_
 
                 /* We reached the end of the list? Then start again, with the next file */
                 if (j->unique_offset == 0) {
-                        JournalFile *n;
-
-                        n = hashmap_next(j->files, j->unique_file->path);
-                        if (!n)
+                        j->unique_file = hashmap_next(j->files, j->unique_file->path);
+                        if (!j->unique_file)
                                 return 0;
 
-                        j->unique_file = n;
                         continue;
                 }
 
@@ -2659,6 +2664,7 @@ _public_ void sd_journal_restart_unique(sd_journal *j) {
 
         j->unique_file = NULL;
         j->unique_offset = 0;
+        j->unique_file_lost = false;
 }
 
 _public_ int sd_journal_reliable_fd(sd_journal *j) {

commit 28592f75d4dd7131b042454f6fb9e5e70238bdef
Author: Lennart Poettering <lennart at poettering.net>
Date:   Thu Oct 9 18:26:47 2014 +0200

    man: document the new "rescue" kernel command line option
    
    (cherry picked from commit f280bcfb21aacce03abf17b3ad732c1351df42b9)

diff --git a/man/kernel-command-line.xml b/man/kernel-command-line.xml
index abe68e5..092940b 100644
--- a/man/kernel-command-line.xml
+++ b/man/kernel-command-line.xml
@@ -125,6 +125,7 @@
                         <varlistentry>
                                 <term><varname>-b</varname></term>
                                 <term><varname>emergency</varname></term>
+                                <term><varname>rescue</varname></term>
                                 <term><varname>single</varname></term>
                                 <term><varname>s</varname></term>
                                 <term><varname>S</varname></term>
diff --git a/man/systemd.xml b/man/systemd.xml
index 76d977d..9cadfae 100644
--- a/man/systemd.xml
+++ b/man/systemd.xml
@@ -1149,17 +1149,19 @@
                         </varlistentry>
 
                         <varlistentry>
-                                <term><varname>-b</varname></term>
                                 <term><varname>emergency</varname></term>
+                                <term><varname>-b</varname></term>
 
                                 <listitem><para>Boot into emergency
                                 mode. This is equivalent to
                                 <varname>systemd.unit=emergency.target</varname>
-                                and provided for compatibility
-                                reasons and to be easier to type.</para></listitem>
+                                and provided for compatibility reasons
+                                and to be easier to
+                                type.</para></listitem>
                         </varlistentry>
 
                         <varlistentry>
+                                <term><varname>rescue</varname></term>
                                 <term><varname>single</varname></term>
                                 <term><varname>s</varname></term>
                                 <term><varname>S</varname></term>

commit 8b2e770d7d8e4d1c75402fe3beb0118f47257ba3
Author: Jan Synacek <jsynacek at redhat.com>
Date:   Wed Oct 8 08:04:52 2014 +0200

    man/systemctl: document enable on masked units
    
    (cherry picked from commit 751ea8deaf96cabd4f1321735cd86535840a3faf)
    
    Conflicts:
    	man/systemctl.xml

diff --git a/man/systemctl.xml b/man/systemctl.xml
index 934bc54..c73fa80 100644
--- a/man/systemctl.xml
+++ b/man/systemctl.xml
@@ -888,6 +888,9 @@ kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service
             the system, or for all future logins of all users, or only this
             boot.  Note that in the last case, no systemd daemon
             configuration is reloaded.</para>
+
+            <para>Using <command>enable</command> on masked units
+            results in an error.</para>
           </listitem>
         </varlistentry>
 
@@ -1025,10 +1028,10 @@ kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service
             <filename>/dev/null</filename>, making it impossible to
             start them. This is a stronger version of
             <command>disable</command>, since it prohibits all kinds of
-            activation of the unit, including manual activation. Use
-            this option with care. This honors the
-            <option>--runtime</option> option, to only mask temporarily
-            until the next reoobt of the system.</para>
+            activation of the unit, including enablement and manual
+            activation. Use this option with care. This honors the
+            <option>--runtime</option> option to only mask temporarily
+            until the next reboot of the system.</para>
           </listitem>
         </varlistentry>
 

commit 7403f4d6d71a905935dd8c0b459131569504d294
Author: Mantas Mikulėnas <grawity at gmail.com>
Date:   Tue Oct 7 14:55:21 2014 +0300

    core: map the 'rescue' argument to rescue.target
    
    Even though the 'emergency' and 'single' aliases come from sysvinit, the
    lack of 'rescue' is still quite confusing (caught me by surprise for the
    9th time yet) and inconsistent with `systemctl rescue` as well.
    
    (cherry picked from commit 5329ab10ffaf5b4a3fd6ebd9380b1ec09d05cfc8)

diff --git a/src/core/main.c b/src/core/main.c
index 8c994a8..089e2eb 100644
--- a/src/core/main.c
+++ b/src/core/main.c
@@ -259,6 +259,7 @@ static int parse_proc_cmdline_word(const char *word) {
         static const char * const rlmap[] = {
                 "emergency", SPECIAL_EMERGENCY_TARGET,
                 "-b",        SPECIAL_EMERGENCY_TARGET,
+                "rescue",    SPECIAL_RESCUE_TARGET,
                 "single",    SPECIAL_RESCUE_TARGET,
                 "-s",        SPECIAL_RESCUE_TARGET,
                 "s",         SPECIAL_RESCUE_TARGET,

commit 75f86204f4ecb586336bb5b034fb8f58d18036a4
Author: Jan Synacek <jsynacek at redhat.com>
Date:   Tue Oct 7 13:35:41 2014 +0200

    core: don't allow enabling if unit is masked
    
    (cherry picked from commit f7101b7368dfe41dbc8b7203e06133cccb589c01)

diff --git a/src/shared/install.c b/src/shared/install.c
index ca3595a..f49c3d3 100644
--- a/src/shared/install.c
+++ b/src/shared/install.c
@@ -1511,6 +1511,19 @@ int unit_file_enable(
                 return r;
 
         STRV_FOREACH(i, files) {
+                UnitFileState state;
+
+                state = unit_file_get_state(scope, root_dir, *i);
+                if (state < 0) {
+                        log_error("Failed to get unit file state for %s: %s", *i, strerror(-state));
+                        return state;
+                }
+
+                if (state == UNIT_FILE_MASKED || state == UNIT_FILE_MASKED_RUNTIME) {
+                        log_error("Failed to enable unit: Unit %s is masked", *i);
+                        return -ENOTSUP;
+                }
+
                 r = install_info_add_auto(&c, *i);
                 if (r < 0)
                         return r;

commit ba0b742a83f3a494660575545768b3f053f51c25
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Fri Oct 3 08:58:40 2014 -0400

    fileio-label: return error when writing fails
    
    The status of actually writing the file was totally ignored.
    
    (cherry picked from commit 754fc0c720eb998b8e47e695c12807ced0ff3602)

diff --git a/src/shared/fileio-label.c b/src/shared/fileio-label.c
index 0711826..9bfa813 100644
--- a/src/shared/fileio-label.c
+++ b/src/shared/fileio-label.c
@@ -33,7 +33,7 @@ int write_string_file_atomic_label(const char *fn, const char *line) {
         if (r  < 0)
                 return r;
 
-        write_string_file_atomic(fn, line);
+        r = write_string_file_atomic(fn, line);
 
         label_context_clear();
 
@@ -47,7 +47,7 @@ int write_env_file_label(const char *fname, char **l) {
         if (r  < 0)
                 return r;
 
-        write_env_file(fname, l);
+        r = write_env_file(fname, l);
 
         label_context_clear();
 

commit 48fe5cdcf1092f2ad817885d5ed506b63891ee9e
Author: Thomas Hindoe Paaboel Andersen <phomes at gmail.com>
Date:   Fri Sep 26 22:01:32 2014 +0200

    bootchart: use 'n/a' if PRETTY_NAME is not found
    
    Spotted with coverity. If parsing both /etc/os-release and
    /usr/lib/os-release fails then null would be passed on. The calls
    to parse the two files are allowed to fail. A empty /etc may not
    have had the /etc/os-release symlink restored yet and we just
    try again in the loop. If for whatever reason that does not happen
    then we now pass on 'n/a' instead of null.
    
    (cherry picked from commit 1c92ff85b786c423f4436ec26007e79369c9ac05)

diff --git a/src/bootchart/bootchart.c b/src/bootchart/bootchart.c
index eadf17c..169d7c0 100644
--- a/src/bootchart/bootchart.c
+++ b/src/bootchart/bootchart.c
@@ -433,7 +433,7 @@ int main(int argc, char *argv[]) {
                 exit (EXIT_FAILURE);
         }
 
-        svg_do(build);
+        svg_do(strna(build));
 
         fprintf(stderr, "systemd-bootchart wrote %s\n", output_file);
 

commit 8597690cf9dd8334a20a3160980642a978ea4783
Author: Marcel Holtmann <marcel at holtmann.org>
Date:   Thu Oct 2 07:53:15 2014 +0200

    hwdb: Update database of Bluetooth company identifiers
    
    (cherry picked from commit 2e3390ea4684b954edce66b7758b5371d3338a9f)

diff --git a/hwdb/20-bluetooth-vendor-product.hwdb b/hwdb/20-bluetooth-vendor-product.hwdb
index 14aee74..ee2efdf 100644
--- a/hwdb/20-bluetooth-vendor-product.hwdb
+++ b/hwdb/20-bluetooth-vendor-product.hwdb
@@ -1148,3 +1148,21 @@ bluetooth:v017B*
 
 bluetooth:v017C*
  ID_VENDOR_FROM_DATABASE=Daimler AG
+
+bluetooth:v017D*
+ ID_VENDOR_FROM_DATABASE=BatAndCat
+
+bluetooth:v017E*
+ ID_VENDOR_FROM_DATABASE=BluDotz Ltd
+
+bluetooth:v017F*
+ ID_VENDOR_FROM_DATABASE=XTel ApS
+
+bluetooth:v0180*
+ ID_VENDOR_FROM_DATABASE=Gigaset Communications GmbH
+
+bluetooth:v0181*
+ ID_VENDOR_FROM_DATABASE=Gecko Health Innovations, Inc.
+
+bluetooth:v0182*
+ ID_VENDOR_FROM_DATABASE=HOP Ubiquitous

commit 50a1e52b12298cc60b1f96d093fec7d1696942e9
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Fri Sep 26 10:49:55 2014 -0400

    journalctl: do not output --reboot-- markers when running non-interactively
    
    They are not legal in the export format.
    
    (cherry picked from commit 4bed248505da4da94d82078fe60326a374970e97)

diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c
index 9886a2f..e57a547 100644
--- a/src/journal/journalctl.c
+++ b/src/journal/journalctl.c
@@ -1723,7 +1723,7 @@ int main(int argc, char *argv[]) {
                                         goto finish;
                         }
 
-                        if (!arg_merge) {
+                        if (!arg_merge && !arg_quiet) {
                                 sd_id128_t boot_id;
 
                                 r = sd_journal_get_monotonic_usec(j, NULL, &boot_id);

commit 644af8bba1d83e06e251228eea6f10525cabe977
Author: Koen Kooi <koen at dominion.thruhere.net>
Date:   Sat Sep 27 09:55:44 2014 +0200

    logind: add support for TPS65217 Power Button
    
    This PMIC is found on TI AM335x based boards like the beaglebone and
    beaglebone black.
    
    root at beaglebone-white:~# udevadm info -a /dev/input/event0
    
    Udevadm info starts with the device specified by the devpath and then
    walks up the chain of parent devices. It prints for every device
    found, all possible attributes in the udev rules key format.
    A rule to match, can be composed by the attributes of the device
    and the attributes from one single parent device.
    
      looking at device
    '/devices/ocp.3/44e0b000.i2c/i2c-0/0-0024/input/input0/event0':
        KERNEL=="event0"
        SUBSYSTEM=="input"
        DRIVER==""
    
      looking at parent device
    '/devices/ocp.3/44e0b000.i2c/i2c-0/0-0024/input/input0':
        KERNELS=="input0"
        SUBSYSTEMS=="input"
        DRIVERS==""
        ATTRS{name}=="tps65217_pwr_but"
        ATTRS{phys}==""
        ATTRS{uniq}==""
        ATTRS{properties}=="0"
    
      looking at parent device '/devices/ocp.3/44e0b000.i2c/i2c-0/0-0024':
        KERNELS=="0-0024"
        SUBSYSTEMS=="i2c"
        DRIVERS=="tps65217"
        ATTRS{name}=="tps65217"
    
      looking at parent device '/devices/ocp.3/44e0b000.i2c/i2c-0':
        KERNELS=="i2c-0"
        SUBSYSTEMS=="i2c"
        DRIVERS==""
        ATTRS{name}=="OMAP I2C adapter"
    
      looking at parent device '/devices/ocp.3/44e0b000.i2c':
        KERNELS=="44e0b000.i2c"
        SUBSYSTEMS=="platform"
        DRIVERS=="omap_i2c"
    
      looking at parent device '/devices/ocp.3':
        KERNELS=="ocp.3"
        SUBSYSTEMS=="platform"
        DRIVERS==""
    
    (cherry picked from commit 492d7a3038b154e1813a1ece913a5a27148fec19)

diff --git a/src/login/70-power-switch.rules b/src/login/70-power-switch.rules
index a6997f7..695d246 100644
--- a/src/login/70-power-switch.rules
+++ b/src/login/70-power-switch.rules
@@ -10,5 +10,6 @@ ACTION=="remove", GOTO="power_switch_end"
 SUBSYSTEM=="input", KERNEL=="event*", SUBSYSTEMS=="acpi", TAG+="power-switch"
 SUBSYSTEM=="input", KERNEL=="event*", KERNELS=="thinkpad_acpi", TAG+="power-switch"
 SUBSYSTEM=="input", KERNEL=="event*", ATTRS{name}=="twl4030_pwrbutton", TAG+="power-switch"
+SUBSYSTEM=="input", KERNEL=="event*", ATTRS{name}=="tps65217_pwr_but", TAG+="power-switch"
 
 LABEL="power_switch_end"

commit b97a348e317db8af0f205c653bf0d55309450779
Author: Eric Cook <llua at gmx.com>
Date:   Sat Sep 27 08:48:09 2014 -0400

    shell-completion(zsh): journalctl's -b changes
    
    removed pointless index sort of bootids.
    use `compadd -a' to add each array, instead of expanding possibly hundreds of words needlessly.
    optional completion of -b
    
    (cherry picked from commit c2026f28bdc64c608e9b00e8f7916c82f44ec610)

diff --git a/shell-completion/zsh/_journalctl b/shell-completion/zsh/_journalctl
index 8c3dbb0..a8f3a28 100644
--- a/shell-completion/zsh/_journalctl
+++ b/shell-completion/zsh/_journalctl
@@ -47,11 +47,11 @@ _journal_fields() {
 
 _journal_boots() {
   local -a _bootid _previousboots
-  _bootid=( ${(fao)"$(_call_program bootid "$service -F _BOOT_ID")"}  )
+  _bootid=( ${(f)"$(_call_program bootid "$service -F _BOOT_ID")"}  )
   _previousboots=( -{1..${#_bootid}} )
   _alternative : \
-    "offsets:boot offsets:(${_previousboots[1,-2]})" \
-    "bootid:boot ids:(${_bootid[@]})"
+    "offsets:boot offsets:compadd -a '_previousboots[1,-2]'" \
+    "bootid:boot ids:compadd -a _bootid"
 }
 
 _arguments -s \
@@ -69,7 +69,7 @@ _arguments -s \
     {-x,--catalog}'[Show explanatory texts with each log line]' \
     {-q,--quiet}"[Don't show privilege warning]" \
     {-m,--merge}'[Show entries from all available journals]' \
-    {-b+,--boot=}'[Show data only from the specified boot or offset]:boot id or offset:_journal_boots' \
+    {-b+,--boot=}'[Show data only from the specified boot or offset]::boot id or offset:_journal_boots' \
     '--list-boots[List boots ordered by time]' \
     {-k,--dmesg}'[Show only kernel messages from the current boot]' \
     {-u+,--unit=}'[Show data only from the specified unit]:units:_journal_fields _SYSTEMD_UNIT' \

commit b66559b11f192ee2b4f8e1d7acbe667bb75b77fd
Author: Richard Weinberger <richard at nod.at>
Date:   Tue Sep 9 11:09:37 2014 +0200

    systemd-tmpfiles: Fix IGNORE_DIRECTORY_PATH age handling
    
    If one has a config like:
    d /tmp 1777 root root -
    X /tmp/important_mount
    
    All files below /tmp/important_mount will be deleted as the
    /tmp/important_mount item will spuriously inherit a max age of 0
    from /tmp.
    /tmp has a max age of 0 but age_set is (of course) false.
    
    This affects also the PrivateTmp feature of systemd.
    All tmp files of such services will be deleted unconditionally
    and can cause service failures and data loss.
    
    Fix this by checking ->age_set in the IGNORE_DIRECTORY_PATH logic.
    
    (cherry picked from commit 9ed2a35e93f4a9e82585f860f54cdcbbdf3e1f86)

diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
index ca99bb4..f585573 100644
--- a/src/tmpfiles/tmpfiles.c
+++ b/src/tmpfiles/tmpfiles.c
@@ -1410,7 +1410,7 @@ static int read_config_file(const char *fn, bool ignore_enoent) {
                                 candidate_item = j;
                 }
 
-                if (candidate_item) {
+                if (candidate_item && candidate_item->age_set) {
                         i->age = candidate_item->age;
                         i->age_set = true;
                 }

commit 387a5a9345b808cd361e0a75188f852011572ca6
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Mon Sep 22 22:14:39 2014 -0400

    logind: add support for Triton2 Power Button
    
    https://bugs.freedesktop.org/show_bug.cgi?id=84201
    (cherry picked from commit 58d4aabedd415a735efeb8c2608ee73618c07f78)

diff --git a/src/login/70-power-switch.rules b/src/login/70-power-switch.rules
index 36fb827..a6997f7 100644
--- a/src/login/70-power-switch.rules
+++ b/src/login/70-power-switch.rules
@@ -9,5 +9,6 @@ ACTION=="remove", GOTO="power_switch_end"
 
 SUBSYSTEM=="input", KERNEL=="event*", SUBSYSTEMS=="acpi", TAG+="power-switch"
 SUBSYSTEM=="input", KERNEL=="event*", KERNELS=="thinkpad_acpi", TAG+="power-switch"
+SUBSYSTEM=="input", KERNEL=="event*", ATTRS{name}=="twl4030_pwrbutton", TAG+="power-switch"
 
 LABEL="power_switch_end"

commit c6ba31f718ac6bda8150c55777deb29f905eb5eb
Author: Michael Marineau <michael.marineau at coreos.com>
Date:   Mon Sep 15 14:07:39 2014 -0700

    man: use the escape for "-" in example instead of space.
    
    This sentence can be misread to mean that "\x20" is the escape code for
    "-" which is the only character explicitly mentioned. This lead to at
    least one user loosing hair over why a mount unit for "/foo/bar-baz"
    didn't work. The example escape is arbitrary so lets prevent hair loss.
    
    (cherry picked from commit fb7661a6020b5680d5647d3d85b0501a4f3a5042)

diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml
index 8dc6211..9164717 100644
--- a/man/systemd.unit.xml
+++ b/man/systemd.unit.xml
@@ -227,7 +227,7 @@
                 result is usable as part of a filename. Basically,
                 given a path, "/" is replaced by "-", and all
                 unprintable characters and the "-" are replaced by
-                C-style "\x20" escapes. The root directory "/" is
+                C-style "\x2d" escapes. The root directory "/" is
                 encoded as single dash, while otherwise the initial
                 and ending "/" is removed from all paths during
                 transformation. This escaping is reversible.</para>

commit fb6d069db28a4abb165f8d48319676b07c3c3491
Author: Tom Gundersen <teg at jklm.no>
Date:   Wed Sep 17 19:53:01 2014 +0200

    udev: rules - close empty file
    
    If the file is found to be empty, we exit early without closing the file first.
    
    Found by coverity. Fixes CID #1237759.
    
    (cherry picked from commit 6c8aaf0c1bf2a04010ae7125a08ceb51e7058712)
    
    Conflicts:
    	src/udev/udev-rules.c

diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c
index 7e6db81..3b7e263 100644
--- a/src/udev/udev-rules.c
+++ b/src/udev/udev-rules.c
@@ -1514,9 +1514,8 @@ invalid:
         return -1;
 }
 
-static int parse_file(struct udev_rules *rules, const char *filename)
-{
-        FILE *f;
+static int parse_file(struct udev_rules *rules, const char *filename) {
+        _cleanup_fclose_ FILE *f = NULL;
         unsigned int first_token;
         unsigned int filename_off;
         char line[UTIL_LINE_SIZE];
@@ -1570,7 +1569,6 @@ static int parse_file(struct udev_rules *rules, const char *filename)
                 }
                 add_rule(rules, key, filename, filename_off, line_nr);
         }
-        fclose(f);
 
         /* link GOTOs to LABEL rules in this file to be able to fast-forward */
         for (i = first_token+1; i < rules->token_cur; i++) {

commit 08b4f3f8e37fce97b4549ed5dbb6c0a5c7051b0f
Author: Dave Reisner <dreisner at archlinux.org>
Date:   Sat Sep 13 11:18:26 2014 -0400

    core: use correct function to free CalendarSpec
    
    (cherry picked from commit eed9386748cb6bd7b1aecc62ea723db2e0c541ca)

diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c
index 2b736af..31554c2 100644
--- a/src/core/load-fragment.c
+++ b/src/core/load-fragment.c
@@ -1193,7 +1193,7 @@ int config_parse_timer(const char *unit,
         v = new0(TimerValue, 1);
         if (!v) {
                 if (c)
-                        free(c);
+                        calendar_spec_free(c);
                 return log_oom();
         }
 

commit f9a500bd5b41e796a19492dbbf4922bb8e3c2c89
Author: Thomas Hindoe Paaboel Andersen <phomes at gmail.com>
Date:   Sat Sep 13 12:35:06 2014 +0200

    core: fix a potential mem leak
    
    Found with Coverity. Fixes: CID#996438
    
    (cherry picked from commit 4d5e13a125cf8d77d432225ab69826caa1d1cf59)

diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c
index 45b36b9..2b736af 100644
--- a/src/core/load-fragment.c
+++ b/src/core/load-fragment.c
@@ -1191,8 +1191,11 @@ int config_parse_timer(const char *unit,
         }
 
         v = new0(TimerValue, 1);
-        if (!v)
+        if (!v) {
+                if (c)
+                        free(c);
                 return log_oom();
+        }
 
         v->base = b;
         v->clock_id = id;

commit a630a10d74f1f28dc8668876dadf526db36b9fe3
Author: Philippe De Swert <philippedeswert at gmail.com>
Date:   Fri Sep 12 16:49:48 2014 +0300

    core: smack-setup: Actually allow for succesfully loading CIPSO policy
    
    The line under the last switch statement  *loaded_policy = true;
    would never be executed. As all switch cases return 0. Thus the
    policy would never be marked as loaded.
    
    Found with Coverity. Fixes: CID#1237785
    
    (cherry picked from commit b9289d4c6e13ec5fb67bfce69c826d93b004da6a)

diff --git a/src/core/smack-setup.c b/src/core/smack-setup.c
index 8838d31..c2acba7 100644
--- a/src/core/smack-setup.c
+++ b/src/core/smack-setup.c
@@ -148,7 +148,7 @@ int smack_setup(void) {
                 return 0;
         case 0:
                 log_info("Successfully loaded Smack/CIPSO policies.");
-                return 0;
+                break;
         default:
                 log_warning("Failed to load Smack/CIPSO access rules: %s, ignoring.",
                             strerror(abs(r)));

commit a4a7569ab7e4e7b4939e74a7fc03ee913511ee15
Author: Thomas Hindoe Paaboel Andersen <phomes at gmail.com>
Date:   Thu Sep 11 23:41:44 2014 +0200

    analyze: avoid a null dereference
    
    If we have an error in the early sd_bus_* calls then unit_times
    will still be null.
    
    Found with coverity. Fixes: CID#996464
    
    (cherry picked from commit d725a138c5c311ba06567d6841933aa5b7b6a435)

diff --git a/src/analyze/systemd-analyze.c b/src/analyze/systemd-analyze.c
index db5d6e6..67fcb4c 100644
--- a/src/analyze/systemd-analyze.c
+++ b/src/analyze/systemd-analyze.c
@@ -275,7 +275,8 @@ static int acquire_time_data(DBusConnection *bus, struct unit_times **out) {
         return c;
 
 fail:
-        free_unit_times(unit_times, (unsigned) c);
+        if (unit_times)
+                free_unit_times(unit_times, (unsigned) c);
         return r;
 }
 

commit 8653aa4acb7fd541dc46c36700db57527d0eb0b7
Author: Thomas Hindoe Paaboel Andersen <phomes at gmail.com>
Date:   Thu Sep 11 21:14:53 2014 +0200

    manager: use correct cleanup function
    
    Close the dir instead of attempt to free it.
    
    Introduced in 874310b7b68c4c0d36ff07397db30a959bb7dae5
    
    Found with coverity. Fixes: CID#996368
    
    (cherry picked from commit 807d0cca2b0daf4cd725298c1b5e062b1126f15b)

diff --git a/src/core/manager.c b/src/core/manager.c
index e75550b..720537d 100644
--- a/src/core/manager.c
+++ b/src/core/manager.c
@@ -816,7 +816,7 @@ int manager_coldplug(Manager *m) {
 
 static void manager_build_unit_path_cache(Manager *m) {
         char **i;
-        _cleanup_free_ DIR *d = NULL;
+        _cleanup_closedir_ DIR *d = NULL;
         int r;
 
         assert(m);

commit 2e5e58bc8430a5856c9612276b8b1c4147ef0d8e
Author: Philippe De Swert <philippedeswert at gmail.com>
Date:   Wed Sep 10 12:20:41 2014 +0300

    journal: do not leak mmaps on OOM
    
    After a section of memory is succesfully allocated, some of the following
    actions can still fail due to lack of memory. In this case -ENOMEM is
    returned without actually freeing the already mapped memory.
    Found with coverity. Fixes: CID#1237762
    
    (cherry picked from commit b67ddc7bbe31cde7f69f9814204d9bb1d4623c47)

diff --git a/src/journal/mmap-cache.c b/src/journal/mmap-cache.c
index 24b2bb8..fdd0c9e 100644
--- a/src/journal/mmap-cache.c
+++ b/src/journal/mmap-cache.c
@@ -496,15 +496,15 @@ static int add_mmap(
 
         c = context_add(m, context);
         if (!c)
-                return -ENOMEM;
+                goto outofmem;
 
         f = fd_add(m, fd);
         if (!f)
-                return -ENOMEM;
+                goto outofmem;
 
         w = window_add(m);
         if (!w)
-                return -ENOMEM;
+                goto outofmem;
 
         w->keep_always = keep_always;
         w->ptr = d;
@@ -522,6 +522,10 @@ static int add_mmap(
         if (ret)
                 *ret = (uint8_t*) w->ptr + (offset - w->offset);
         return 1;
+
+outofmem:
+        munmap(d, wsize);
+        return -ENOMEM;
 }
 
 int mmap_cache_get(

commit 94b126ad4f7ae06facdd7cfbb74acd7b882479f7
Author: Marcel Holtmann <marcel at holtmann.org>
Date:   Tue Sep 9 07:44:02 2014 +0200

    hwdb: update
    
    (cherry picked from commit fea0bfaed5411de43811dc428e763029d3aaabe5)

diff --git a/hwdb/20-OUI.hwdb b/hwdb/20-OUI.hwdb
index e0c5fed..73df96c 100644
--- a/hwdb/20-OUI.hwdb
+++ b/hwdb/20-OUI.hwdb
@@ -4103,7 +4103,7 @@ OUI:0050C2561*
  ID_OUI_FROM_DATABASE=Seitec Elektronik GmbH
 
 OUI:0050C2562*
- ID_OUI_FROM_DATABASE=C21 Technology Limited
+ ID_OUI_FROM_DATABASE=C21 Systems Limited
 
 OUI:0050C2563*
  ID_OUI_FROM_DATABASE=ORTRAT, S.L.
@@ -26081,7 +26081,7 @@ OUI:00105D*
  ID_OUI_FROM_DATABASE=Draeger Medical
 
 OUI:00105E*
- ID_OUI_FROM_DATABASE=HEKIMIAN LABORATORIES, INC.
+ ID_OUI_FROM_DATABASE=Spirent plc, Service Assurance Broadband
 
 OUI:00105F*
  ID_OUI_FROM_DATABASE=ZODIAC DATA SYSTEMS
@@ -35786,7 +35786,7 @@ OUI:001D04*
  ID_OUI_FROM_DATABASE=Zipit Wireless, Inc.
 
 OUI:001D05*
- ID_OUI_FROM_DATABASE=iLight
+ ID_OUI_FROM_DATABASE=Eaton Corporation
 
 OUI:001D06*
  ID_OUI_FROM_DATABASE=HM Electronics, Inc.
@@ -44287,6 +44287,9 @@ OUI:0034F1*
 OUI:003532*
  ID_OUI_FROM_DATABASE=Electro-Metrics Corporation
 
+OUI:003560*
+ ID_OUI_FROM_DATABASE=Rosen Aviation
+
 OUI:0036F8*
  ID_OUI_FROM_DATABASE=Conti Temic microelectronic GmbH
 
@@ -50072,7 +50075,7 @@ OUI:00D01E*
  ID_OUI_FROM_DATABASE=PINGTEL CORP.
 
 OUI:00D01F*
- ID_OUI_FROM_DATABASE=CTAM PTY. LTD.
+ ID_OUI_FROM_DATABASE=Senetas Security
 
 OUI:00D020*
  ID_OUI_FROM_DATABASE=AIM SYSTEM, INC.
@@ -51616,6 +51619,9 @@ OUI:00EEBD*
 OUI:00F051*
  ID_OUI_FROM_DATABASE=KWB Gmbh
 
+OUI:00F3DB*
+ ID_OUI_FROM_DATABASE=WOO Sports
+
 OUI:00F403*
  ID_OUI_FROM_DATABASE=Orbis Systems Oy
 
@@ -51889,6 +51895,9 @@ OUI:04B3B6*
 OUI:04B466*
  ID_OUI_FROM_DATABASE=BSP Co., Ltd.
 
+OUI:04BD70*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
 OUI:04BFA8*
  ID_OUI_FROM_DATABASE=ISB Corporation
 
@@ -51898,6 +51907,9 @@ OUI:04C05B*
 OUI:04C06F*
  ID_OUI_FROM_DATABASE=Shenzhen Huawei Communication Technologies Co., Ltd
 
+OUI:04C09C*
+ ID_OUI_FROM_DATABASE=Tellabs Inc.
+
 OUI:04C1B9*
  ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Tech.Co.,Ltd.
 
@@ -52657,6 +52669,9 @@ OUI:089F97*
 OUI:08A12B*
  ID_OUI_FROM_DATABASE=ShenZhen EZL Technology Co., Ltd
 
+OUI:08A5C8*
+ ID_OUI_FROM_DATABASE=Sunnovo International Limited
+
 OUI:08A95A*
  ID_OUI_FROM_DATABASE=Azurewave
 
@@ -52747,6 +52762,9 @@ OUI:08EE8B*
 OUI:08EF3B*
  ID_OUI_FROM_DATABASE=MCS Logic Inc.
 
+OUI:08EFAB*
+ ID_OUI_FROM_DATABASE=SAYME WIRELESS SENSOR NETWORK
+
 OUI:08F1B7*
  ID_OUI_FROM_DATABASE=Towerstream Corpration
 
@@ -53125,6 +53143,9 @@ OUI:1001CA*
 OUI:1005CA*
  ID_OUI_FROM_DATABASE=Cisco
 
+OUI:100723*
+ ID_OUI_FROM_DATABASE=IEEE REGISTRATION AUTHORITY  - Please see MAM public listing for more information.
+
 OUI:1008B1*
  ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
 
@@ -53389,6 +53410,9 @@ OUI:10C586*
 OUI:10C61F*
  ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
 
+OUI:10C67E*
+ ID_OUI_FROM_DATABASE=SHENZHEN JUCHIN TECHNOLOGY CO., LTD
+
 OUI:10C6FC*
  ID_OUI_FROM_DATABASE=Garmin International
 
@@ -53446,6 +53470,9 @@ OUI:10F3DB*
 OUI:10F49A*
  ID_OUI_FROM_DATABASE=T3 Innovation
 
+OUI:10F681*
+ ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd.
+
 OUI:10F96F*
  ID_OUI_FROM_DATABASE=LG Electronics
 
@@ -53527,6 +53554,9 @@ OUI:1435B3*
 OUI:143605*
  ID_OUI_FROM_DATABASE=Nokia Corporation
 
+OUI:1436C6*
+ ID_OUI_FROM_DATABASE=Lenovo Mobile Communication Technology Ltd.
+
 OUI:14373B*
  ID_OUI_FROM_DATABASE=PROCOM Systems
 
@@ -53782,6 +53812,9 @@ OUI:18193F*
 OUI:181BEB*
  ID_OUI_FROM_DATABASE=Actiontec Electronics, Inc
 
+OUI:181E78*
+ ID_OUI_FROM_DATABASE=SAGEMCOM
+
 OUI:181EB0*
  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
 
@@ -53881,6 +53914,9 @@ OUI:18622C*
 OUI:186472*
  ID_OUI_FROM_DATABASE=Aruba Networks
 
+OUI:186571*
+ ID_OUI_FROM_DATABASE=Top Victory Electronics (Taiwan) Co., Ltd.
+
 OUI:1866E3*
  ID_OUI_FROM_DATABASE=Veros Systems, Inc.
 
@@ -54023,7 +54059,7 @@ OUI:18CF5E*
  ID_OUI_FROM_DATABASE=Liteon Technology Corporation
 
 OUI:18D071*
- ID_OUI_FROM_DATABASE=DASAN SMC, Inc.
+ ID_OUI_FROM_DATABASE=DASAN CO., LTD.
 
 OUI:18D5B6*
  ID_OUI_FROM_DATABASE=SMG Holdings LLC
@@ -55270,6 +55306,9 @@ OUI:28D576*
 OUI:28D93E*
  ID_OUI_FROM_DATABASE=Telecor Inc.
 
+OUI:28D98A*
+ ID_OUI_FROM_DATABASE=Hangzhou Konke Technology Co.,Ltd.
+
 OUI:28D997*
  ID_OUI_FROM_DATABASE=Yuduan Mobile Co., Ltd.
 
@@ -55387,6 +55426,9 @@ OUI:2C2D48*
 OUI:2C3068*
  ID_OUI_FROM_DATABASE=Pantech Co.,Ltd
 
+OUI:2C337A*
+ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+
 OUI:2C3427*
  ID_OUI_FROM_DATABASE=ERCO & GENER
 
@@ -55891,6 +55933,9 @@ OUI:30D357*
 OUI:30D46A*
  ID_OUI_FROM_DATABASE=Autosales Incorporated
 
+OUI:30D587*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
 OUI:30D6C9*
  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
 
@@ -56062,6 +56107,9 @@ OUI:346BD3*
 OUI:346E8A*
  ID_OUI_FROM_DATABASE=Ecosense
 
+OUI:346F90*
+ ID_OUI_FROM_DATABASE=Cisco
+
 OUI:346F92*
  ID_OUI_FROM_DATABASE=White Rodgers Division
 
@@ -56266,6 +56314,9 @@ OUI:34E42A*
 OUI:34E6AD*
  ID_OUI_FROM_DATABASE=Intel Corporate
 
+OUI:34E6D7*
+ ID_OUI_FROM_DATABASE=Dell Inc.
+
 OUI:34EF44*
  ID_OUI_FROM_DATABASE=2Wire
 
@@ -56413,6 +56464,9 @@ OUI:385FC3*
 OUI:386077*
  ID_OUI_FROM_DATABASE=PEGATRON CORPORATION
 
+OUI:3863BB*
+ ID_OUI_FROM_DATABASE=Hewlett Packard
+
 OUI:3863F6*
  ID_OUI_FROM_DATABASE=3NOD MULTIMEDIA(SHENZHEN)CO.,LTD
 
@@ -56677,6 +56731,9 @@ OUI:3C3888*
 OUI:3C39C3*
  ID_OUI_FROM_DATABASE=JW Electronics Co., Ltd.
 
+OUI:3C39E7*
+ ID_OUI_FROM_DATABASE=IEEE REGISTRATION AUTHORITY  - Please see MAM public listing for more information.
+
 OUI:3C3A73*
  ID_OUI_FROM_DATABASE=Avaya, Inc
 
@@ -56689,6 +56746,9 @@ OUI:3C438E*
 OUI:3C46D8*
  ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
 
+OUI:3C4937*
+ ID_OUI_FROM_DATABASE=ASSMANN Electronic GmbH
+
 OUI:3C4A92*
  ID_OUI_FROM_DATABASE=Hewlett-Packard Company
 
@@ -56815,6 +56875,9 @@ OUI:3CAA3F*
 OUI:3CAB8E*
  ID_OUI_FROM_DATABASE=Apple
 
+OUI:3CAE69*
+ ID_OUI_FROM_DATABASE=ESA Elektroschaltanlagen Grimma GmbH
+
 OUI:3CB15B*
  ID_OUI_FROM_DATABASE=Avaya, Inc
 
@@ -57211,6 +57274,9 @@ OUI:40E730*
 OUI:40E793*
  ID_OUI_FROM_DATABASE=Shenzhen Siviton Technology Co.,Ltd
 
+OUI:40EACE*
+ ID_OUI_FROM_DATABASE=FOUNDER BROADBAND NETWORK SERVICE CO.,LTD
+
 OUI:40ECF8*
  ID_OUI_FROM_DATABASE=Siemens AG
 
@@ -57535,6 +57601,9 @@ OUI:44DCCB*
 OUI:44E08E*
  ID_OUI_FROM_DATABASE=Cisco SPVTG
 
+OUI:44E137*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
 OUI:44E49A*
  ID_OUI_FROM_DATABASE=OMNITRONICS PTY LTD
 
@@ -58348,6 +58417,9 @@ OUI:50A733*
 OUI:50ABBF*
  ID_OUI_FROM_DATABASE=Hoseo Telecom
 
+OUI:50ADD5*
+ ID_OUI_FROM_DATABASE=Dynalec Corporation
+
 OUI:50AF73*
  ID_OUI_FROM_DATABASE=Shenzhen Bitland Information Technology Co., Ltd.
 
@@ -58537,6 +58609,9 @@ OUI:544A05*
 OUI:544A16*
  ID_OUI_FROM_DATABASE=Texas Instruments
 
+OUI:545146*
+ ID_OUI_FROM_DATABASE=AMG Systems Ltd.
+
 OUI:5453ED*
  ID_OUI_FROM_DATABASE=Sony Corporation
 
@@ -58852,6 +58927,9 @@ OUI:58696C*
 OUI:5869F9*
  ID_OUI_FROM_DATABASE=Fusion Transactive Ltd.
 
+OUI:586AB1*
+ ID_OUI_FROM_DATABASE=Hangzhou H3C Technologies Co., Limited
+
 OUI:586D8F*
  ID_OUI_FROM_DATABASE=Cisco-Linksys, LLC
 
@@ -59080,6 +59158,9 @@ OUI:5C2BF5*
 OUI:5C2E59*
  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
 
+OUI:5C2ED2*
+ ID_OUI_FROM_DATABASE=ABC(XiSheng) Electronics Co.,Ltd
+
 OUI:5C313E*
  ID_OUI_FROM_DATABASE=Texas Instruments
 
@@ -59272,6 +59353,9 @@ OUI:5CDAD4*
 OUI:5CDD70*
  ID_OUI_FROM_DATABASE=Hangzhou H3C Technologies Co., Limited
 
+OUI:5CE0C5*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
 OUI:5CE0CA*
  ID_OUI_FROM_DATABASE=FeiTian United (Beijing) System Technology Co., Ltd.
 
@@ -59767,6 +59851,9 @@ OUI:64317E*
 OUI:643409*
  ID_OUI_FROM_DATABASE=BITwave Pte Ltd
 
+OUI:643E8C*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
 OUI:643F5F*
  ID_OUI_FROM_DATABASE=Exablaze
 
@@ -59908,6 +59995,9 @@ OUI:6487D7*
 OUI:6488FF*
  ID_OUI_FROM_DATABASE=Sichuan Changhong Electric Ltd.
 
+OUI:64899A*
+ ID_OUI_FROM_DATABASE=LG Electronics
+
 OUI:648D9E*
  ID_OUI_FROM_DATABASE=IVT Electronic Co.,Ltd
 
@@ -60328,6 +60418,9 @@ OUI:68BC0C*
 OUI:68BDAB*
  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
 
+OUI:68C90B*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
 OUI:68CA00*
  ID_OUI_FROM_DATABASE=Octopus Systems Limited
 
@@ -60442,6 +60535,9 @@ OUI:6C22AB*
 OUI:6C23B9*
  ID_OUI_FROM_DATABASE=Sony Ericsson Mobile Communications AB
 
+OUI:6C25B9*
+ ID_OUI_FROM_DATABASE=BBK Electronics Corp., Ltd.,
+
 OUI:6C2995*
  ID_OUI_FROM_DATABASE=Intel Corporate
 
@@ -60574,6 +60670,9 @@ OUI:6C90B1*
 OUI:6C92BF*
  ID_OUI_FROM_DATABASE=Inspur Electronic Information Industry Co.,Ltd.
 
+OUI:6C94F8*
+ ID_OUI_FROM_DATABASE=Apple
+
 OUI:6C98EB*
  ID_OUI_FROM_DATABASE=Ocedo GmbH
 
@@ -60724,6 +60823,9 @@ OUI:700514*
 OUI:700BC0*
  ID_OUI_FROM_DATABASE=Dewav Technology Company
 
+OUI:700FC7*
+ ID_OUI_FROM_DATABASE=SHENZHEN IKINLOOP TECHNOLOGY CO.,LTD.
+
 OUI:700FEC*
  ID_OUI_FROM_DATABASE=Poindus Systems Corp.
 
@@ -60802,6 +60904,9 @@ OUI:703AD8*
 OUI:703C39*
  ID_OUI_FROM_DATABASE=SEAWING Kft
 
+OUI:703EAC*
+ ID_OUI_FROM_DATABASE=Apple
+
 OUI:7041B7*
  ID_OUI_FROM_DATABASE=Edwards Lifesciences LLC
 
@@ -60901,6 +61006,9 @@ OUI:7076DD*
 OUI:7076F0*
  ID_OUI_FROM_DATABASE=LevelOne Communications (India) Private Limited
 
+OUI:7076FF*
+ ID_OUI_FROM_DATABASE=KERLINK
+
 OUI:707BE8*
  ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
 
@@ -61105,6 +61213,9 @@ OUI:74273C*
 OUI:7427EA*
  ID_OUI_FROM_DATABASE=Elitegroup Computer Systems Co., Ltd.
 
+OUI:7429AF*
+ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+
 OUI:742B0F*
  ID_OUI_FROM_DATABASE=Infinidat Ltd.
 
@@ -61447,6 +61558,9 @@ OUI:78303B*
 OUI:7830E1*
  ID_OUI_FROM_DATABASE=UltraClenz, LLC
 
+OUI:78312B*
+ ID_OUI_FROM_DATABASE=zte corporation
+
 OUI:7831C1*
  ID_OUI_FROM_DATABASE=Apple
 
@@ -61639,6 +61753,9 @@ OUI:78ACC0*
 OUI:78AE0C*
  ID_OUI_FROM_DATABASE=Far South Networks
 
+OUI:78B3B9*
+ ID_OUI_FROM_DATABASE=ShangHai sunup lighting CO.,LTD
+
 OUI:78B3CE*
  ID_OUI_FROM_DATABASE=Elo touch solutions
 
@@ -61741,6 +61858,9 @@ OUI:78E7D1*
 OUI:78E8B6*
  ID_OUI_FROM_DATABASE=zte corporation
 
+OUI:78EB14*
+ ID_OUI_FROM_DATABASE=SHENZHEN FAST TECHNOLOGIES CO.,LTD
+
 OUI:78EC22*
  ID_OUI_FROM_DATABASE=Shanghai Qihui Telecom Technology Co., LTD
 
@@ -62569,6 +62689,9 @@ OUI:843A4B*
 OUI:843F4E*
  ID_OUI_FROM_DATABASE=Tri-Tech Manufacturing, Inc.
 
+OUI:844464*
+ ID_OUI_FROM_DATABASE=ServerU Inc
+
 OUI:844823*
  ID_OUI_FROM_DATABASE=WOXTER TECHNOLOGY Co. Ltd
 
@@ -62605,6 +62728,9 @@ OUI:846223*
 OUI:8462A6*
  ID_OUI_FROM_DATABASE=EuroCB (Phils), Inc.
 
+OUI:8463D6*
+ ID_OUI_FROM_DATABASE=Microsoft Corporation
+
 OUI:846AED*
  ID_OUI_FROM_DATABASE=Wireless Tsukamoto.,co.LTD
 
@@ -62665,6 +62791,9 @@ OUI:848E0C*
 OUI:848E96*
  ID_OUI_FROM_DATABASE=Embertec Pty Ltd
 
+OUI:848EDF*
+ ID_OUI_FROM_DATABASE=Sony Mobile Communications AB
+
 OUI:848F69*
  ID_OUI_FROM_DATABASE=Dell Inc.
 
@@ -62746,6 +62875,9 @@ OUI:84DB2F*
 OUI:84DD20*
  ID_OUI_FROM_DATABASE=Texas Instruments
 
+OUI:84DDB7*
+ ID_OUI_FROM_DATABASE=Cilag GmbH International
+
 OUI:84DE3D*
  ID_OUI_FROM_DATABASE=Crystal Vision Ltd
 
@@ -62812,6 +62944,9 @@ OUI:881544*
 OUI:8818AE*
  ID_OUI_FROM_DATABASE=Tamron Co., Ltd
 
+OUI:881DFC*
+ ID_OUI_FROM_DATABASE=Cisco
+
 OUI:881FA1*
  ID_OUI_FROM_DATABASE=Apple
 
@@ -63367,6 +63502,9 @@ OUI:8CDF9D*
 OUI:8CE081*
  ID_OUI_FROM_DATABASE=zte corporation
 
+OUI:8CE78C*
+ ID_OUI_FROM_DATABASE=DK Networks
+
 OUI:8CE7B3*
  ID_OUI_FROM_DATABASE=Sonardyne International Ltd
 
@@ -63409,6 +63547,9 @@ OUI:900917*
 OUI:900A3A*
  ID_OUI_FROM_DATABASE=PSG Plastic Service GmbH
 
+OUI:900CB4*
+ ID_OUI_FROM_DATABASE=Alinket Electronic Technology Co., Ltd
+
 OUI:900D66*
  ID_OUI_FROM_DATABASE=Digimore Electronics Co., Ltd
 
@@ -63556,6 +63697,9 @@ OUI:9067B5*
 OUI:9067F3*
  ID_OUI_FROM_DATABASE=Alcatel Lucent
 
+OUI:9068C3*
+ ID_OUI_FROM_DATABASE=Motorola Mobility LLC
+
 OUI:906DC8*
  ID_OUI_FROM_DATABASE=DLG Automação Industrial Ltda
 
@@ -63781,6 +63925,9 @@ OUI:940149*
 OUI:9401C2*
  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
 
+OUI:9405B6*
+ ID_OUI_FROM_DATABASE=Liling FullRiver Electronics & Technology Ltd
+
 OUI:940B2D*
  ID_OUI_FROM_DATABASE=NetView Technologies(Shenzhen) Co., Ltd
 
@@ -63913,6 +64060,9 @@ OUI:948B03*
 OUI:948D50*
  ID_OUI_FROM_DATABASE=Beamex Oy Ab
 
+OUI:948E89*
+ ID_OUI_FROM_DATABASE=INDUSTRIAS UNIDAS SA DE CV
+
 OUI:948FEE*
  ID_OUI_FROM_DATABASE=Hughes Telematics, Inc.
 
@@ -64639,6 +64789,9 @@ OUI:9CD36D*
 OUI:9CD643*
  ID_OUI_FROM_DATABASE=D-Link International
 
+OUI:9CD917*
+ ID_OUI_FROM_DATABASE=Motorola Mobility LLC
+
 OUI:9CDF03*
  ID_OUI_FROM_DATABASE=Harman/Becker Automotive Systems GmbH
 
@@ -65407,6 +65560,9 @@ OUI:A81B18*
 OUI:A81B5D*
  ID_OUI_FROM_DATABASE=Foxtel Management Pty Ltd
 
+OUI:A81D16*
+ ID_OUI_FROM_DATABASE=AzureWave Technologies, Inc
+
 OUI:A81FAF*
  ID_OUI_FROM_DATABASE=KRYPTON POLSKA
 
@@ -65473,6 +65629,9 @@ OUI:A863DF*
 OUI:A863F2*
  ID_OUI_FROM_DATABASE=Texas Instruments
 
+OUI:A86405*
+ ID_OUI_FROM_DATABASE=nimbus 9, Inc
+
 OUI:A865B2*
  ID_OUI_FROM_DATABASE=DONGGUAN YISHANG ELECTRONIC TECHNOLOGY CO., LIMITED
 
@@ -66064,6 +66223,9 @@ OUI:B0435D*
 OUI:B04515*
  ID_OUI_FROM_DATABASE=mira fitness,LLC.
 
+OUI:B04519*
+ ID_OUI_FROM_DATABASE=TCT mobile ltd
+
 OUI:B04545*
  ID_OUI_FROM_DATABASE=YACOUB Automation GmbH
 
@@ -67105,6 +67267,9 @@ OUI:BC4760*
 OUI:BC4B79*
  ID_OUI_FROM_DATABASE=SensingTek
 
+OUI:BC4DFB*
+ ID_OUI_FROM_DATABASE=Hitron Technologies. Inc
+
 OUI:BC4E3C*
  ID_OUI_FROM_DATABASE=CORE STAFF CO., LTD.
 
@@ -67114,6 +67279,9 @@ OUI:BC4E5D*
 OUI:BC51FE*
  ID_OUI_FROM_DATABASE=Swann Communications Pty Ltd
 
+OUI:BC52B4*
+ ID_OUI_FROM_DATABASE=Alcatel-Lucent
+
 OUI:BC52B7*
  ID_OUI_FROM_DATABASE=Apple
 
@@ -67153,6 +67321,9 @@ OUI:BC71C1*
 OUI:BC72B1*
  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
 
+OUI:BC74D7*
+ ID_OUI_FROM_DATABASE=HangZhou JuRu Technology CO.,LTD
+
 OUI:BC764E*
  ID_OUI_FROM_DATABASE=Rackspace US, Inc.
 
@@ -67363,6 +67534,9 @@ OUI:C03580*
 OUI:C035BD*
  ID_OUI_FROM_DATABASE=Velocytech Aps
 
+OUI:C035C5*
+ ID_OUI_FROM_DATABASE=Prosoft Systems LTD
+
 OUI:C03896*
  ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
 
@@ -67867,6 +68041,9 @@ OUI:C4BA99*
 OUI:C4BD6A*
  ID_OUI_FROM_DATABASE=SKF GmbH
 
+OUI:C4BE84*
+ ID_OUI_FROM_DATABASE=Texas Instruments.
+
 OUI:C4C0AE*
  ID_OUI_FROM_DATABASE=MIDORI ELECTRONIC CO., LTD.
 
@@ -68527,6 +68704,9 @@ OUI:CCB8F1*
 OUI:CCBD35*
  ID_OUI_FROM_DATABASE=Steinel GmbH
 
+OUI:CCBDD3*
+ ID_OUI_FROM_DATABASE=Ultimaker B.V.
+
 OUI:CCBE71*
  ID_OUI_FROM_DATABASE=OptiLogix BV
 
@@ -68698,6 +68878,9 @@ OUI:D046DC*
 OUI:D04CC1*
  ID_OUI_FROM_DATABASE=SINTRONES Technology Corp.
 
+OUI:D04F7E*
+ ID_OUI_FROM_DATABASE=Apple
+
 OUI:D05099*
  ID_OUI_FROM_DATABASE=ASRock Incorporation
 
@@ -68734,6 +68917,9 @@ OUI:D05A0F*
 OUI:D05AF1*
  ID_OUI_FROM_DATABASE=Shenzhen Pulier Tech CO.,Ltd
 
+OUI:D05BA8*
+ ID_OUI_FROM_DATABASE=zte corporation
+
 OUI:D05FB8*
  ID_OUI_FROM_DATABASE=Texas Instruments
 
@@ -69025,6 +69211,9 @@ OUI:D42F23*
 OUI:D4319D*
  ID_OUI_FROM_DATABASE=Sinwatec
 
+OUI:D43266*
+ ID_OUI_FROM_DATABASE=Fike Corporation
+
 OUI:D437D7*
  ID_OUI_FROM_DATABASE=zte corporation
 
@@ -69307,6 +69496,9 @@ OUI:D4F143*
 OUI:D4F46F*
  ID_OUI_FROM_DATABASE=Apple
 
+OUI:D4F513*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
 OUI:D4F63F*
  ID_OUI_FROM_DATABASE=IEA S.R.L.
 
@@ -69568,6 +69760,9 @@ OUI:D8B8F6*
 OUI:D8B90E*
  ID_OUI_FROM_DATABASE=Triple Domain Vision Co.,Ltd.
 
+OUI:D8BB2C*
+ ID_OUI_FROM_DATABASE=Apple
+
 OUI:D8BF4C*
  ID_OUI_FROM_DATABASE=Victory Concept Electronics Limited
 
@@ -69635,7 +69830,7 @@ OUI:D8E56D*
  ID_OUI_FROM_DATABASE=TCT Mobile Limited
 
 OUI:D8E72B*
- ID_OUI_FROM_DATABASE=OnPATH Technologies
+ ID_OUI_FROM_DATABASE=NetScout Systems, Inc.
 
 OUI:D8E743*
  ID_OUI_FROM_DATABASE=Wush, Inc
@@ -70084,6 +70279,9 @@ OUI:E08177*
 OUI:E087B1*
  ID_OUI_FROM_DATABASE=Nata-Info Ltd.
 
+OUI:E0885D*
+ ID_OUI_FROM_DATABASE=Technicolor CH USA Inc
+
 OUI:E08A7E*
  ID_OUI_FROM_DATABASE=Exponent
 
@@ -70474,6 +70672,9 @@ OUI:E4AFA1*
 OUI:E4B021*
  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
 
+OUI:E4BAD9*
+ ID_OUI_FROM_DATABASE=360 Fly Inc.
+
 OUI:E4C146*
  ID_OUI_FROM_DATABASE=Objetivos y Servicios de Valor A
 
@@ -70603,6 +70804,9 @@ OUI:E82AEA*
 OUI:E82E24*
  ID_OUI_FROM_DATABASE=Out of the Fog Research LLC
 
+OUI:E83381*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
 OUI:E83935*
  ID_OUI_FROM_DATABASE=Hewlett Packard
 
@@ -70720,6 +70924,9 @@ OUI:E88D28*
 OUI:E88DF5*
  ID_OUI_FROM_DATABASE=ZNYX Networks, Inc.
 
+OUI:E88E60*
+ ID_OUI_FROM_DATABASE=NSD Corporation
+
 OUI:E89218*
  ID_OUI_FROM_DATABASE=Arcontia International AB
 
@@ -70918,6 +71125,9 @@ OUI:EC233D*
 OUI:EC2368*
  ID_OUI_FROM_DATABASE=IntelliVoice Co.,Ltd.
 
+OUI:EC24B8*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
 OUI:EC2AF0*
  ID_OUI_FROM_DATABASE=Ypsomed AG
 
@@ -70978,6 +71188,9 @@ OUI:EC542E*
 OUI:EC55F9*
  ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
 
+OUI:EC59E7*
+ ID_OUI_FROM_DATABASE=Microsoft Corporation
+
 OUI:EC5C69*
  ID_OUI_FROM_DATABASE=MITSUBISHI HEAVY INDUSTRIES MECHATRONICS SYSTEMS,LTD.
 
@@ -71002,6 +71215,9 @@ OUI:EC7C74*
 OUI:EC7D9D*
  ID_OUI_FROM_DATABASE=MEI
 
+OUI:EC8009*
+ ID_OUI_FROM_DATABASE=NovaSparks
+
 OUI:EC836C*
  ID_OUI_FROM_DATABASE=RM Tech Co., Ltd.
 
@@ -71449,6 +71665,9 @@ OUI:F0F002*
 OUI:F0F260*
  ID_OUI_FROM_DATABASE=Mobitec AB
 
+OUI:F0F336*
+ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD
+
 OUI:F0F5AE*
  ID_OUI_FROM_DATABASE=Adaptrum Inc.
 
@@ -71476,6 +71695,9 @@ OUI:F0F9F7*
 OUI:F0FDA0*
  ID_OUI_FROM_DATABASE=Acurix Networks LP
 
+OUI:F0FE6B*
+ ID_OUI_FROM_DATABASE=Shanghai High-Flying Electronics Technology Co., Ltd
+
 OUI:F40321*
  ID_OUI_FROM_DATABASE=BeNeXt B.V.
 
@@ -71758,6 +71980,9 @@ OUI:F4EA67*
 OUI:F4EC38*
  ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO., LTD.
 
+OUI:F4EE14*
+ ID_OUI_FROM_DATABASE=SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.
+
 OUI:F4F15A*
  ID_OUI_FROM_DATABASE=Apple
 
@@ -71881,6 +72106,9 @@ OUI:F83DFF*
 OUI:F842FB*
  ID_OUI_FROM_DATABASE=Yasuda Joho Co.,ltd.
 
+OUI:F84360*
+ ID_OUI_FROM_DATABASE=INGENICO
+
 OUI:F845AD*
  ID_OUI_FROM_DATABASE=Konka Group Co., Ltd.
 
@@ -72037,12 +72265,18 @@ OUI:F8AC6D*
 OUI:F8B156*
  ID_OUI_FROM_DATABASE=Dell Inc
 
+OUI:F8B2F3*
+ ID_OUI_FROM_DATABASE=GUANGZHOU BOSMA TECHNOLOGY CO.,LTD
+
 OUI:F8B599*
  ID_OUI_FROM_DATABASE=Guangzhou CHNAVS Digital Technology Co.,Ltd
 
 OUI:F8BC12*
  ID_OUI_FROM_DATABASE=Dell Inc
 
+OUI:F8BC41*
+ ID_OUI_FROM_DATABASE=Rosslare Enterprises Limited
+
 OUI:F8C001*
  ID_OUI_FROM_DATABASE=Juniper Networks
 
@@ -72310,6 +72544,9 @@ OUI:FC6198*
 OUI:FC626E*
  ID_OUI_FROM_DATABASE=Beijing MDC Telecom
 
+OUI:FC62B9*
+ ID_OUI_FROM_DATABASE=ALPS ERECTRIC CO.,LTD
+
 OUI:FC683E*
  ID_OUI_FROM_DATABASE=Directed Perception, Inc
 
diff --git a/hwdb/20-pci-vendor-model.hwdb b/hwdb/20-pci-vendor-model.hwdb
index 3bcdbc0..1b98b1d 100644
--- a/hwdb/20-pci-vendor-model.hwdb
+++ b/hwdb/20-pci-vendor-model.hwdb
@@ -7892,6 +7892,9 @@ pci:v00001002d0000692B*
 pci:v00001002d0000692F*
  ID_MODEL_FROM_DATABASE=Tonga XT GL [FirePro W8100]
 
+pci:v00001002d00006939*
+ ID_MODEL_FROM_DATABASE=Tonga PRO [Radeon R9 285]
+
 pci:v00001002d0000700F*
  ID_MODEL_FROM_DATABASE=RS100 AGP Bridge
 
@@ -17466,7 +17469,7 @@ pci:v00001093d00000162*
  ID_MODEL_FROM_DATABASE=PCI-MIO-16XE-50
 
 pci:v00001093d00001150*
- ID_MODEL_FROM_DATABASE=PCI-DIO-32HS High Speed Digital I/O Board
+ ID_MODEL_FROM_DATABASE=PCI-6533 (PCI-DIO-32HS)
 
 pci:v00001093d00001170*
  ID_MODEL_FROM_DATABASE=PCI-MIO-16XE-10
@@ -17481,22 +17484,31 @@ pci:v00001093d000011B0*
  ID_MODEL_FROM_DATABASE=PXI-6070E
 
 pci:v00001093d000011C0*
- ID_MODEL_FROM_DATABASE=PXI-6040e
+ ID_MODEL_FROM_DATABASE=PXI-6040E
 
 pci:v00001093d000011D0*
- ID_MODEL_FROM_DATABASE=PXI-6030e
+ ID_MODEL_FROM_DATABASE=PXI-6030E
 
 pci:v00001093d00001270*
- ID_MODEL_FROM_DATABASE=PCI-6032e
+ ID_MODEL_FROM_DATABASE=PCI-6032E
+
+pci:v00001093d00001290*
+ ID_MODEL_FROM_DATABASE=PCI-6704
+
+pci:v00001093d000012B0*
+ ID_MODEL_FROM_DATABASE=PCI-6534
 
 pci:v00001093d00001310*
  ID_MODEL_FROM_DATABASE=PCI-6602
 
+pci:v00001093d00001320*
+ ID_MODEL_FROM_DATABASE=PXI-6533
+
 pci:v00001093d00001330*
  ID_MODEL_FROM_DATABASE=PCI-6031E
 
 pci:v00001093d00001340*
- ID_MODEL_FROM_DATABASE=PCI-6033e
+ ID_MODEL_FROM_DATABASE=PCI-6033E
 
 pci:v00001093d00001350*
  ID_MODEL_FROM_DATABASE=PCI-6071E
@@ -17504,6 +17516,12 @@ pci:v00001093d00001350*
 pci:v00001093d00001360*
  ID_MODEL_FROM_DATABASE=PXI-6602
 
+pci:v00001093d000013C0*
+ ID_MODEL_FROM_DATABASE=PXI-6508
+
+pci:v00001093d00001490*
+ ID_MODEL_FROM_DATABASE=PXI-6534
+
 pci:v00001093d000014E0*
  ID_MODEL_FROM_DATABASE=PCI-6110
 
@@ -17519,6 +17537,9 @@ pci:v00001093d000015B0*
 pci:v00001093d00001710*
  ID_MODEL_FROM_DATABASE=PXI-6509
 
+pci:v00001093d000017C0*
+ ID_MODEL_FROM_DATABASE=PXI-5690
+
 pci:v00001093d000017D0*
  ID_MODEL_FROM_DATABASE=PCI-6503
 
@@ -17534,6 +17555,33 @@ pci:v00001093d000018B0*
 pci:v00001093d000018C0*
  ID_MODEL_FROM_DATABASE=PXI-6052E
 
+pci:v00001093d00001920*
+ ID_MODEL_FROM_DATABASE=PXI-6704
+
+pci:v00001093d00001930*
+ ID_MODEL_FROM_DATABASE=PCI-6040E
+
+pci:v00001093d000019C0*
+ ID_MODEL_FROM_DATABASE=PCI-4472
+
+pci:v00001093d00001AA0*
+ ID_MODEL_FROM_DATABASE=PXI-4110
+
+pci:v00001093d00001AD0*
+ ID_MODEL_FROM_DATABASE=PCI-6133
+
+pci:v00001093d00001AE0*
+ ID_MODEL_FROM_DATABASE=PXI-6133
+
+pci:v00001093d00001E30*
+ ID_MODEL_FROM_DATABASE=PCI-6624
+
+pci:v00001093d00001E40*
+ ID_MODEL_FROM_DATABASE=PXI-6624
+
+pci:v00001093d00001E50*
+ ID_MODEL_FROM_DATABASE=PXI-5404
+
 pci:v00001093d00002410*
  ID_MODEL_FROM_DATABASE=PCI-6733
 
@@ -17543,12 +17591,42 @@ pci:v00001093d00002420*
 pci:v00001093d00002430*
  ID_MODEL_FROM_DATABASE=PCI-6731
 
+pci:v00001093d00002470*
+ ID_MODEL_FROM_DATABASE=PCI-4474
+
+pci:v00001093d000024A0*
+ ID_MODEL_FROM_DATABASE=PCI-4065
+
+pci:v00001093d000024B0*
+ ID_MODEL_FROM_DATABASE=PXI-4200
+
+pci:v00001093d000024F0*
+ ID_MODEL_FROM_DATABASE=PXI-4472
+
+pci:v00001093d00002510*
+ ID_MODEL_FROM_DATABASE=PCI-4472
+
+pci:v00001093d00002520*
+ ID_MODEL_FROM_DATABASE=PCI-4474
+
+pci:v00001093d000027A0*
+ ID_MODEL_FROM_DATABASE=PCI-6123
+
+pci:v00001093d000027B0*
+ ID_MODEL_FROM_DATABASE=PXI-6123
+
 pci:v00001093d00002880*
  ID_MODEL_FROM_DATABASE=DAQCard-6601
 
 pci:v00001093d00002890*
  ID_MODEL_FROM_DATABASE=PCI-6036E
 
+pci:v00001093d000028A0*
+ ID_MODEL_FROM_DATABASE=PXI-4461
+
+pci:v00001093d000028B0*
+ ID_MODEL_FROM_DATABASE=PCI-6013
+
 pci:v00001093d000028C0*
  ID_MODEL_FROM_DATABASE=PCI-6014
 
@@ -17558,6 +17636,12 @@ pci:v00001093d000028D0*
 pci:v00001093d000028E0*
  ID_MODEL_FROM_DATABASE=PXI-5122
 
+pci:v00001093d000029F0*
+ ID_MODEL_FROM_DATABASE=PXI-7334
+
+pci:v00001093d00002A00*
+ ID_MODEL_FROM_DATABASE=PXI-7344
+
 pci:v00001093d00002A60*
  ID_MODEL_FROM_DATABASE=PCI-6023E
 
@@ -17568,7 +17652,13 @@ pci:v00001093d00002A80*
  ID_MODEL_FROM_DATABASE=PCI-6025E
 
 pci:v00001093d00002AB0*
- ID_MODEL_FROM_DATABASE=PXI-6025e
+ ID_MODEL_FROM_DATABASE=PXI-6025E
+
+pci:v00001093d00002B10*
+ ID_MODEL_FROM_DATABASE=PXI-6527
+
+pci:v00001093d00002B20*
+ ID_MODEL_FROM_DATABASE=PCI-6527
 
 pci:v00001093d00002B80*
  ID_MODEL_FROM_DATABASE=PXI-6713
@@ -17585,15 +17675,75 @@ pci:v00001093d00002C70*
 pci:v00001093d00002C80*
  ID_MODEL_FROM_DATABASE=PCI-6035E
 
+pci:v00001093d00002C90*
+ ID_MODEL_FROM_DATABASE=PCI-6703
+
 pci:v00001093d00002CA0*
  ID_MODEL_FROM_DATABASE=PCI-6034E
 
+pci:v00001093d00002CB0*
+ ID_MODEL_FROM_DATABASE=PCI-7344
+
 pci:v00001093d00002CC0*
  ID_MODEL_FROM_DATABASE=PXI-6608
 
+pci:v00001093d00002D20*
+ ID_MODEL_FROM_DATABASE=PXI-5600
+
 pci:v00001093d00002DB0*
  ID_MODEL_FROM_DATABASE=PCI-6608
 
+pci:v00001093d00002DC0*
+ ID_MODEL_FROM_DATABASE=PCI-4070
+
+pci:v00001093d00002DD0*
+ ID_MODEL_FROM_DATABASE=PXI-4070
+
+pci:v00001093d00002EB0*
+ ID_MODEL_FROM_DATABASE=PXI-4472
+
+pci:v00001093d00002EC0*
+ ID_MODEL_FROM_DATABASE=PXI-6115
+
+pci:v00001093d00002ED0*
+ ID_MODEL_FROM_DATABASE=PCI-6115
+
+pci:v00001093d00002EE0*
+ ID_MODEL_FROM_DATABASE=PXI-6120
+
+pci:v00001093d00002EF0*
+ ID_MODEL_FROM_DATABASE=PCI-6120
+
+pci:v00001093d00002FD1*
+ ID_MODEL_FROM_DATABASE=PCI-7334
+
+pci:v00001093d00002FD2*
+ ID_MODEL_FROM_DATABASE=PCI-7350
+
+pci:v00001093d00002FD3*
+ ID_MODEL_FROM_DATABASE=PCI-7342
+
+pci:v00001093d00002FD5*
+ ID_MODEL_FROM_DATABASE=PXI-7350
+
+pci:v00001093d00002FD6*
+ ID_MODEL_FROM_DATABASE=PXI-7342
+
+pci:v00001093d00007003*
+ ID_MODEL_FROM_DATABASE=PCI-6551
+
+pci:v00001093d00007004*
+ ID_MODEL_FROM_DATABASE=PXI-6551
+
+pci:v00001093d0000700B*
+ ID_MODEL_FROM_DATABASE=PXI-5421
+
+pci:v00001093d0000700C*
+ ID_MODEL_FROM_DATABASE=PCI-5421
+
+pci:v00001093d00007023*
+ ID_MODEL_FROM_DATABASE=PXI-2593
+
 pci:v00001093d0000702C*
  ID_MODEL_FROM_DATABASE=PXI-7831R
 
@@ -17606,23 +17756,152 @@ pci:v00001093d0000702E*
 pci:v00001093d0000702F*
  ID_MODEL_FROM_DATABASE=PCI-7811R
 
+pci:v00001093d00007030*
+ ID_MODEL_FROM_DATABASE=PCI-CAN (Series 2)
+
+pci:v00001093d00007031*
+ ID_MODEL_FROM_DATABASE=PCI-CAN/2 (Series 2)
+
+pci:v00001093d00007032*
+ ID_MODEL_FROM_DATABASE=PCI-CAN/LS (Series 2)
+
+pci:v00001093d00007033*
+ ID_MODEL_FROM_DATABASE=PCI-CAN/LS2 (Series 2)
+
+pci:v00001093d00007034*
+ ID_MODEL_FROM_DATABASE=PCI-CAN/DS (Series 2)
+
+pci:v00001093d00007035*
+ ID_MODEL_FROM_DATABASE=PXI-8460 (Series 2, 1 port)
+
+pci:v00001093d00007036*
+ ID_MODEL_FROM_DATABASE=PXI-8460 (Series 2, 2 ports)
+
+pci:v00001093d00007037*
+ ID_MODEL_FROM_DATABASE=PXI-8461 (Series 2, 1 port)
+
+pci:v00001093d00007038*
+ ID_MODEL_FROM_DATABASE=PXI-8461 (Series 2, 2 ports)
+
+pci:v00001093d00007039*
+ ID_MODEL_FROM_DATABASE=PXI-8462 (Series 2)
+
+pci:v00001093d0000703F*
+ ID_MODEL_FROM_DATABASE=PXI-2566
+
+pci:v00001093d00007040*
+ ID_MODEL_FROM_DATABASE=PXI-2567
+
+pci:v00001093d00007044*
+ ID_MODEL_FROM_DATABASE=MXI-4 Connection Monitor
+
+pci:v00001093d00007047*
+ ID_MODEL_FROM_DATABASE=PXI-6653
+
+pci:v00001093d0000704C*
+ ID_MODEL_FROM_DATABASE=PXI-2530
+
+pci:v00001093d0000704F*
+ ID_MODEL_FROM_DATABASE=PXI-4220
+
+pci:v00001093d00007050*
+ ID_MODEL_FROM_DATABASE=PXI-4204
+
 pci:v00001093d00007055*
  ID_MODEL_FROM_DATABASE=PXI-7830R
 
 pci:v00001093d00007056*
  ID_MODEL_FROM_DATABASE=PCI-7830R
 
+pci:v00001093d0000705A*
+ ID_MODEL_FROM_DATABASE=PCI-CAN/XS (Series 2)
+
+pci:v00001093d0000705B*
+ ID_MODEL_FROM_DATABASE=PCI-CAN/XS2 (Series 2)
+
+pci:v00001093d0000705C*
+ ID_MODEL_FROM_DATABASE=PXI-8464 (Series 2, 1 port)
+
+pci:v00001093d0000705D*
+ ID_MODEL_FROM_DATABASE=PXI-8464 (Series 2, 2 ports)
+
+pci:v00001093d0000705E*
+ ID_MODEL_FROM_DATABASE=cRIO-9102
+
+pci:v00001093d00007060*
+ ID_MODEL_FROM_DATABASE=PXI-5610
+
+pci:v00001093d00007064*
+ ID_MODEL_FROM_DATABASE=PXI-1045 Trigger Routing Module
+
+pci:v00001093d00007065*
+ ID_MODEL_FROM_DATABASE=PXI-6652
+
+pci:v00001093d00007066*
+ ID_MODEL_FROM_DATABASE=PXI-6651
+
+pci:v00001093d00007067*
+ ID_MODEL_FROM_DATABASE=PXI-2529
+
+pci:v00001093d00007068*
+ ID_MODEL_FROM_DATABASE=PCI-CAN/SW (Series 2)
+
+pci:v00001093d00007069*
+ ID_MODEL_FROM_DATABASE=PCI-CAN/SW2 (Series 2)
+
+pci:v00001093d0000706A*
+ ID_MODEL_FROM_DATABASE=PXI-8463 (Series 2, 1 port)
+
+pci:v00001093d0000706B*
+ ID_MODEL_FROM_DATABASE=PXI-8463 (Series 2, 2 ports)
+
+pci:v00001093d00007073*
+ ID_MODEL_FROM_DATABASE=PCI-6723
+
 pci:v00001093d00007074*
  ID_MODEL_FROM_DATABASE=PXI-7833R
 
+pci:v00001093d00007075*
+ ID_MODEL_FROM_DATABASE=PXI-6552
+
+pci:v00001093d00007076*
+ ID_MODEL_FROM_DATABASE=PCI-6552
+
+pci:v00001093d0000707C*
+ ID_MODEL_FROM_DATABASE=PXI-1428
+
+pci:v00001093d0000707E*
+ ID_MODEL_FROM_DATABASE=PXI-4462
+
+pci:v00001093d00007080*
+ ID_MODEL_FROM_DATABASE=PXI-8430/2 (RS-232) Interface
+
+pci:v00001093d00007081*
+ ID_MODEL_FROM_DATABASE=PXI-8431/2 (RS-485) Interface
+
 pci:v00001093d00007083*
  ID_MODEL_FROM_DATABASE=PCI-7833R
 
 pci:v00001093d00007085*
  ID_MODEL_FROM_DATABASE=PCI-6509
 
+pci:v00001093d00007086*
+ ID_MODEL_FROM_DATABASE=PXI-6528
+
+pci:v00001093d00007087*
+ ID_MODEL_FROM_DATABASE=PCI-6515
+
+pci:v00001093d00007088*
+ ID_MODEL_FROM_DATABASE=PCI-6514
+
+pci:v00001093d0000708C*
+ ID_MODEL_FROM_DATABASE=PXI-2568
+
+pci:v00001093d0000708D*
+ ID_MODEL_FROM_DATABASE=PXI-2569
+
 pci:v00001093d000070A9*
- ID_MODEL_FROM_DATABASE=PCI-6528 (Digital I/O at 60V)
+ ID_MODEL_FROM_DATABASE=PCI-6528
 
 pci:v00001093d000070AA*
  ID_MODEL_FROM_DATABASE=PCI-6229
@@ -17633,6 +17912,9 @@ pci:v00001093d000070AB*
 pci:v00001093d000070AC*
  ID_MODEL_FROM_DATABASE=PCI-6289
 
+pci:v00001093d000070AD*
+ ID_MODEL_FROM_DATABASE=PXI-6251
+
 pci:v00001093d000070AE*
  ID_MODEL_FROM_DATABASE=PXI-6220
 
@@ -17642,9 +17924,21 @@ pci:v00001093d000070AF*
 pci:v00001093d000070B0*
  ID_MODEL_FROM_DATABASE=PCI-6220
 
+pci:v00001093d000070B1*
+ ID_MODEL_FROM_DATABASE=PXI-6229
+
+pci:v00001093d000070B2*
+ ID_MODEL_FROM_DATABASE=PXI-6259
+
+pci:v00001093d000070B3*
+ ID_MODEL_FROM_DATABASE=PXI-6289
+
 pci:v00001093d000070B4*
  ID_MODEL_FROM_DATABASE=PCI-6250
 
+pci:v00001093d000070B5*
+ ID_MODEL_FROM_DATABASE=PXI-6221
+
 pci:v00001093d000070B6*
  ID_MODEL_FROM_DATABASE=PCI-6280
 
@@ -17652,7 +17946,16 @@ pci:v00001093d000070B7*
  ID_MODEL_FROM_DATABASE=PCI-6254
 
 pci:v00001093d000070B8*
- ID_MODEL_FROM_DATABASE=PCI-6251 [M Series - High Speed Multifunction DAQ]
+ ID_MODEL_FROM_DATABASE=PCI-6251
+
+pci:v00001093d000070B9*
+ ID_MODEL_FROM_DATABASE=PXI-6250
+
+pci:v00001093d000070BA*
+ ID_MODEL_FROM_DATABASE=PXI-6254
+
+pci:v00001093d000070BB*
+ ID_MODEL_FROM_DATABASE=PXI-6280
 
 pci:v00001093d000070BC*
  ID_MODEL_FROM_DATABASE=PCI-6284
@@ -17660,12 +17963,144 @@ pci:v00001093d000070BC*
 pci:v00001093d000070BD*
  ID_MODEL_FROM_DATABASE=PCI-6281
 
+pci:v00001093d000070BE*
+ ID_MODEL_FROM_DATABASE=PXI-6284
+
 pci:v00001093d000070BF*
  ID_MODEL_FROM_DATABASE=PXI-6281
 
 pci:v00001093d000070C0*
  ID_MODEL_FROM_DATABASE=PCI-6143
 
+pci:v00001093d000070C3*
+ ID_MODEL_FROM_DATABASE=PCI-6511
+
+pci:v00001093d000070C4*
+ ID_MODEL_FROM_DATABASE=PXI-7330
+
+pci:v00001093d000070C5*
+ ID_MODEL_FROM_DATABASE=PXI-7340
+
+pci:v00001093d000070C6*
+ ID_MODEL_FROM_DATABASE=PCI-7330
+
+pci:v00001093d000070C7*
+ ID_MODEL_FROM_DATABASE=PCI-7340
+
+pci:v00001093d000070C8*
+ ID_MODEL_FROM_DATABASE=PCI-6513
+
+pci:v00001093d000070C9*
+ ID_MODEL_FROM_DATABASE=PXI-6515
+
+pci:v00001093d000070CA*
+ ID_MODEL_FROM_DATABASE=PCI-1405
+
+pci:v00001093d000070CC*
+ ID_MODEL_FROM_DATABASE=PCI-6512
+
+pci:v00001093d000070CD*
+ ID_MODEL_FROM_DATABASE=PXI-6514
+
+pci:v00001093d000070CE*
+ ID_MODEL_FROM_DATABASE=PXI-1405
+
+pci:v00001093d000070CF*
+ ID_MODEL_FROM_DATABASE=PCIe-GPIB
+
+pci:v00001093d000070D0*
+ ID_MODEL_FROM_DATABASE=PXI-2570
+
+pci:v00001093d000070D1*
+ ID_MODEL_FROM_DATABASE=PXI-6513
+
+pci:v00001093d000070D2*
+ ID_MODEL_FROM_DATABASE=PXI-6512
+
+pci:v00001093d000070D3*
+ ID_MODEL_FROM_DATABASE=PXI-6511
+
+pci:v00001093d000070D4*
+ ID_MODEL_FROM_DATABASE=PCI-6722
+
+pci:v00001093d000070D6*
+ ID_MODEL_FROM_DATABASE=PXI-4072
+
+pci:v00001093d000070D7*
+ ID_MODEL_FROM_DATABASE=PXI-6541
+
+pci:v00001093d000070D8*
+ ID_MODEL_FROM_DATABASE=PXI-6542
+
+pci:v00001093d000070D9*
+ ID_MODEL_FROM_DATABASE=PCI-6541
+
+pci:v00001093d000070DA*
+ ID_MODEL_FROM_DATABASE=PCI-6542
+
+pci:v00001093d000070DB*
+ ID_MODEL_FROM_DATABASE=PCI-8430/2 (RS-232) Interface
+
+pci:v00001093d000070DC*
+ ID_MODEL_FROM_DATABASE=PCI-8431/2 (RS-485) Interface
+
+pci:v00001093d000070DD*
+ ID_MODEL_FROM_DATABASE=PXI-8430/4 (RS-232) Interface
+
+pci:v00001093d000070DE*
+ ID_MODEL_FROM_DATABASE=PXI-8431/4 (RS-485) Interface
+
+pci:v00001093d000070DF*
+ ID_MODEL_FROM_DATABASE=PCI-8430/4 (RS-232) Interface
+
+pci:v00001093d000070E0*
+ ID_MODEL_FROM_DATABASE=PCI-8431/4 (RS-485) Interface
+
+pci:v00001093d000070E1*
+ ID_MODEL_FROM_DATABASE=PXI-2532
+
+pci:v00001093d000070E2*
+ ID_MODEL_FROM_DATABASE=PXI-8430/8 (RS-232) Interface
+
+pci:v00001093d000070E3*
+ ID_MODEL_FROM_DATABASE=PXI-8431/8 (RS-485) Interface
+
+pci:v00001093d000070E4*
+ ID_MODEL_FROM_DATABASE=PCI-8430/8 (RS-232) Interface
+
+pci:v00001093d000070E5*
+ ID_MODEL_FROM_DATABASE=PCI-8431/8 (RS-485) Interface
+
+pci:v00001093d000070E6*
+ ID_MODEL_FROM_DATABASE=PXI-8430/16 (RS-232) Interface
+
+pci:v00001093d000070E7*
+ ID_MODEL_FROM_DATABASE=PCI-8430/16 (RS-232) Interface
+
+pci:v00001093d000070E8*
+ ID_MODEL_FROM_DATABASE=PXI-8432/2 (Isolated RS-232) Interface
+
+pci:v00001093d000070E9*
+ ID_MODEL_FROM_DATABASE=PXI-8433/2 (Isolated RS-485) Interface
+
+pci:v00001093d000070EA*
+ ID_MODEL_FROM_DATABASE=PCI-8432/2 (Isolated RS-232) Interface
+
+pci:v00001093d000070EB*
+ ID_MODEL_FROM_DATABASE=PCI-8433/2 (Isolated RS-485) Interface
+
+pci:v00001093d000070EC*
+ ID_MODEL_FROM_DATABASE=PXI-8432/4 (Isolated RS-232) Interface
+
+pci:v00001093d000070ED*
+ ID_MODEL_FROM_DATABASE=PXI-8433/4 (Isolated RS-485) Interface
+
+pci:v00001093d000070EE*
+ ID_MODEL_FROM_DATABASE=PCI-8432/4 (Isolated RS-232) Interface
+
+pci:v00001093d000070EF*
+ ID_MODEL_FROM_DATABASE=PCI-8433/4 (Isolated RS-485) Interface
+
 pci:v00001093d000070F0*
  ID_MODEL_FROM_DATABASE=PXI-5922
 
@@ -17675,57 +18110,363 @@ pci:v00001093d000070F1*
 pci:v00001093d000070F2*
  ID_MODEL_FROM_DATABASE=PCI-6224
 
+pci:v00001093d000070F3*
+ ID_MODEL_FROM_DATABASE=PXI-6224
+
+pci:v00001093d000070F6*
+ ID_MODEL_FROM_DATABASE=cRIO-9101
+
+pci:v00001093d000070F7*
+ ID_MODEL_FROM_DATABASE=cRIO-9103
+
+pci:v00001093d000070F8*
+ ID_MODEL_FROM_DATABASE=cRIO-9104
+
+pci:v00001093d000070FF*
+ ID_MODEL_FROM_DATABASE=PXI-6723
+
+pci:v00001093d00007100*
+ ID_MODEL_FROM_DATABASE=PXI-6722
+
+pci:v00001093d00007104*
+ ID_MODEL_FROM_DATABASE=PCIx-1429
+
+pci:v00001093d00007105*
+ ID_MODEL_FROM_DATABASE=PCIe-1429
+
+pci:v00001093d0000710A*
+ ID_MODEL_FROM_DATABASE=PXI-4071
+
+pci:v00001093d0000710D*
+ ID_MODEL_FROM_DATABASE=PXI-6143
+
+pci:v00001093d0000710E*
+ ID_MODEL_FROM_DATABASE=PCIe-GPIB
+
+pci:v00001093d0000710F*
+ ID_MODEL_FROM_DATABASE=PXI-5422
+
+pci:v00001093d00007110*
+ ID_MODEL_FROM_DATABASE=PCI-5422
+
+pci:v00001093d00007111*
+ ID_MODEL_FROM_DATABASE=PXI-5441
+
+pci:v00001093d00007119*
+ ID_MODEL_FROM_DATABASE=PXI-6561
+
+pci:v00001093d0000711A*
+ ID_MODEL_FROM_DATABASE=PXI-6562
+
+pci:v00001093d0000711B*
+ ID_MODEL_FROM_DATABASE=PCI-6561
+
+pci:v00001093d0000711C*
+ ID_MODEL_FROM_DATABASE=PCI-6562
+
+pci:v00001093d00007120*
+ ID_MODEL_FROM_DATABASE=PCI-7390
+
 pci:v00001093d00007121*
  ID_MODEL_FROM_DATABASE=PXI-5122EX
 
 pci:v00001093d00007122*
  ID_MODEL_FROM_DATABASE=PCI-5122EX
 
+pci:v00001093d00007123*
+ ID_MODEL_FROM_DATABASE=PXIe-5653
+
+pci:v00001093d00007124*
+ ID_MODEL_FROM_DATABASE=PCI-6510
+
+pci:v00001093d00007125*
+ ID_MODEL_FROM_DATABASE=PCI-6516
+
+pci:v00001093d00007126*
+ ID_MODEL_FROM_DATABASE=PCI-6517
+
+pci:v00001093d00007127*
+ ID_MODEL_FROM_DATABASE=PCI-6518
+
+pci:v00001093d00007128*
+ ID_MODEL_FROM_DATABASE=PCI-6519
+
+pci:v00001093d00007137*
+ ID_MODEL_FROM_DATABASE=PXI-2575
+
+pci:v00001093d0000713C*
+ ID_MODEL_FROM_DATABASE=PXI-2585
+
+pci:v00001093d0000713D*
+ ID_MODEL_FROM_DATABASE=PXI-2586
+
+pci:v00001093d00007142*
+ ID_MODEL_FROM_DATABASE=PXI-4224
+
 pci:v00001093d00007144*
- ID_MODEL_FROM_DATABASE=PXI-5124 (12-bit 200 MS/s Digitizer)
+ ID_MODEL_FROM_DATABASE=PXI-5124
 
 pci:v00001093d00007145*
  ID_MODEL_FROM_DATABASE=PCI-5124
 
+pci:v00001093d00007146*
+ ID_MODEL_FROM_DATABASE=PCI-6132
+
+pci:v00001093d00007147*
+ ID_MODEL_FROM_DATABASE=PXI-6132
+
+pci:v00001093d00007148*
+ ID_MODEL_FROM_DATABASE=PCI-6122
+
+pci:v00001093d00007149*
+ ID_MODEL_FROM_DATABASE=PXI-6122
+
 pci:v00001093d0000714C*
  ID_MODEL_FROM_DATABASE=PXI-5114
 
 pci:v00001093d0000714D*
  ID_MODEL_FROM_DATABASE=PCI-5114
 
+pci:v00001093d00007150*
+ ID_MODEL_FROM_DATABASE=PXI-2564
+
 pci:v00001093d00007152*
  ID_MODEL_FROM_DATABASE=PCI-5640R
 
+pci:v00001093d00007156*
+ ID_MODEL_FROM_DATABASE=PXI-1044 Trigger Routing Module
+
+pci:v00001093d0000715D*
+ ID_MODEL_FROM_DATABASE=PCI-1426
+
+pci:v00001093d00007167*
+ ID_MODEL_FROM_DATABASE=PXI-5412
+
+pci:v00001093d00007168*
+ ID_MODEL_FROM_DATABASE=PCI-5412
+
+pci:v00001093d0000716B*
+ ID_MODEL_FROM_DATABASE=PCI-6230
+
 pci:v00001093d0000716C*
  ID_MODEL_FROM_DATABASE=PCI-6225
 
+pci:v00001093d0000716D*
+ ID_MODEL_FROM_DATABASE=PXI-6225
+
+pci:v00001093d0000716F*
+ ID_MODEL_FROM_DATABASE=PCI-4461
+
+pci:v00001093d00007170*
+ ID_MODEL_FROM_DATABASE=PCI-4462
+
+pci:v00001093d00007171*
+ ID_MODEL_FROM_DATABASE=PCI-6010
+
+pci:v00001093d00007174*
+ ID_MODEL_FROM_DATABASE=PXI-8360
+
+pci:v00001093d00007177*
+ ID_MODEL_FROM_DATABASE=PXI-6230
+
 pci:v00001093d0000717D*
- ID_MODEL_FROM_DATABASE=PCIE-6251
+ ID_MODEL_FROM_DATABASE=PCIe-6251
 
 pci:v00001093d0000717F*
  ID_MODEL_FROM_DATABASE=PCIe-6259
 
+pci:v00001093d00007187*
+ ID_MODEL_FROM_DATABASE=PCI-1410
+
+pci:v00001093d0000718B*
+ ID_MODEL_FROM_DATABASE=PCI-6521
+
+pci:v00001093d0000718C*
+ ID_MODEL_FROM_DATABASE=PXI-6521
+
+pci:v00001093d00007191*
+ ID_MODEL_FROM_DATABASE=PCI-6154
+
 pci:v00001093d00007193*
  ID_MODEL_FROM_DATABASE=PXI-7813R
 
 pci:v00001093d00007194*
  ID_MODEL_FROM_DATABASE=PCI-7813R
 
+pci:v00001093d00007195*
+ ID_MODEL_FROM_DATABASE=PCI-8254R
+
+pci:v00001093d00007197*
+ ID_MODEL_FROM_DATABASE=PXI-5402
+
+pci:v00001093d00007198*
+ ID_MODEL_FROM_DATABASE=PCI-5402
+
+pci:v00001093d0000719F*
+ ID_MODEL_FROM_DATABASE=PCIe-6535
+
+pci:v00001093d000071A0*
+ ID_MODEL_FROM_DATABASE=PCIe-6536
+
+pci:v00001093d000071A3*
+ ID_MODEL_FROM_DATABASE=PXI-5650
+
+pci:v00001093d000071A4*
+ ID_MODEL_FROM_DATABASE=PXI-5652
+
+pci:v00001093d000071A5*
+ ID_MODEL_FROM_DATABASE=PXI-2594
+
+pci:v00001093d000071A7*
+ ID_MODEL_FROM_DATABASE=PXI-2595
+
+pci:v00001093d000071A9*
+ ID_MODEL_FROM_DATABASE=PXI-2596
+
+pci:v00001093d000071AA*
+ ID_MODEL_FROM_DATABASE=PXI-2597
+
+pci:v00001093d000071AB*
+ ID_MODEL_FROM_DATABASE=PXI-2598
+
+pci:v00001093d000071AC*
+ ID_MODEL_FROM_DATABASE=PXI-2599
+
+pci:v00001093d000071AD*
+ ID_MODEL_FROM_DATABASE=PCI-GPIB+
+
+pci:v00001093d000071AE*
+ ID_MODEL_FROM_DATABASE=PCIe-1430
+
+pci:v00001093d000071B7*
+ ID_MODEL_FROM_DATABASE=PXI-1056 Trigger Routing Module
+
+pci:v00001093d000071B8*
+ ID_MODEL_FROM_DATABASE=PXI-1045 Trigger Routing Module
+
+pci:v00001093d000071B9*
+ ID_MODEL_FROM_DATABASE=PXI-1044 Trigger Routing Module
+
+pci:v00001093d000071BB*
+ ID_MODEL_FROM_DATABASE=PXI-2584
+
 pci:v00001093d000071BC*
- ID_MODEL_FROM_DATABASE=PCI-6221 (37pin)
+ ID_MODEL_FROM_DATABASE=PCI-6221 (37-pin)
 
-pci:v00001093d000071D0*
- ID_MODEL_FROM_DATABASE=PXI-6143
+pci:v00001093d000071BF*
+ ID_MODEL_FROM_DATABASE=PCIe-1427
+
+pci:v00001093d000071C5*
+ ID_MODEL_FROM_DATABASE=PCI-6520
+
+pci:v00001093d000071C6*
+ ID_MODEL_FROM_DATABASE=PXI-2576
+
+pci:v00001093d000071C7*
+ ID_MODEL_FROM_DATABASE=cRIO-9072
 
 pci:v00001093d000071DC*
  ID_MODEL_FROM_DATABASE=PCI-1588
 
+pci:v00001093d000071E0*
+ ID_MODEL_FROM_DATABASE=PCI-6255
+
+pci:v00001093d000071E1*
+ ID_MODEL_FROM_DATABASE=PXI-6255
+
+pci:v00001093d000071E2*
+ ID_MODEL_FROM_DATABASE=PXI-5406
+
+pci:v00001093d000071E3*
+ ID_MODEL_FROM_DATABASE=PCI-5406
+
+pci:v00001093d000071FC*
+ ID_MODEL_FROM_DATABASE=PXI-4022
+
+pci:v00001093d00007209*
+ ID_MODEL_FROM_DATABASE=PCI-6233
+
+pci:v00001093d0000720A*
+ ID_MODEL_FROM_DATABASE=PXI-6233
+
+pci:v00001093d0000720B*
+ ID_MODEL_FROM_DATABASE=PCI-6238
+
+pci:v00001093d0000720C*
+ ID_MODEL_FROM_DATABASE=PXI-6238
+
 pci:v00001093d00007260*
  ID_MODEL_FROM_DATABASE=PXI-5142
 
 pci:v00001093d00007261*
  ID_MODEL_FROM_DATABASE=PCI-5142
 
+pci:v00001093d0000726D*
+ ID_MODEL_FROM_DATABASE=PXI-5651
+
+pci:v00001093d00007273*
+ ID_MODEL_FROM_DATABASE=PXI-4461
+
+pci:v00001093d00007274*
+ ID_MODEL_FROM_DATABASE=PXI-4462
+
+pci:v00001093d00007279*
+ ID_MODEL_FROM_DATABASE=PCI-6232
+
+pci:v00001093d0000727A*
+ ID_MODEL_FROM_DATABASE=PXI-6232
+
+pci:v00001093d0000727B*
+ ID_MODEL_FROM_DATABASE=PCI-6239
+
+pci:v00001093d0000727C*
+ ID_MODEL_FROM_DATABASE=PXI-6239
+
+pci:v00001093d0000727E*
+ ID_MODEL_FROM_DATABASE=SMBus Controller
+
+pci:v00001093d0000727Esv00001093sd000075AC*
+ ID_MODEL_FROM_DATABASE=SMBus Controller (PXIe-8388)
+
+pci:v00001093d0000727Esv00001093sd000075AD*
+ ID_MODEL_FROM_DATABASE=SMBus Controller (PXIe-8389)
+
+pci:v00001093d0000727Esv00001093sd00007650*
+ ID_MODEL_FROM_DATABASE=SMBus Controller (PXIe-8381)
+
+pci:v00001093d0000727Esv00001093sd00008360*
+ ID_MODEL_FROM_DATABASE=SMBus Controller (PXIe-8360)
+
+pci:v00001093d0000727Esv00001093sd00008370*
+ ID_MODEL_FROM_DATABASE=SMBus Controller (PXIe-8370)
+
+pci:v00001093d0000727Esv00001093sd00008375*
+ ID_MODEL_FROM_DATABASE=SMBus Controller (PXIe-8375)
+
+pci:v00001093d00007281*
+ ID_MODEL_FROM_DATABASE=PCI-6236
+
+pci:v00001093d00007282*
+ ID_MODEL_FROM_DATABASE=PXI-6236
+
+pci:v00001093d00007283*
+ ID_MODEL_FROM_DATABASE=PXI-2554
+
+pci:v00001093d00007288*
+ ID_MODEL_FROM_DATABASE=PXIe-5611
+
+pci:v00001093d00007293*
+ ID_MODEL_FROM_DATABASE=PCIe-8255R
+
+pci:v00001093d0000729D*
+ ID_MODEL_FROM_DATABASE=cRIO-9074
+
+pci:v00001093d000072A4*
+ ID_MODEL_FROM_DATABASE=PCIe-4065
+
+pci:v00001093d000072A7*
+ ID_MODEL_FROM_DATABASE=PCIe-6537
+
 pci:v00001093d000072A8*
  ID_MODEL_FROM_DATABASE=PXI-5152
 
@@ -17741,21 +18482,117 @@ pci:v00001093d000072AB*
 pci:v00001093d000072B8*
  ID_MODEL_FROM_DATABASE=PXI-6682
 
+pci:v00001093d000072D0*
+ ID_MODEL_FROM_DATABASE=PXI-2545
+
+pci:v00001093d000072D1*
+ ID_MODEL_FROM_DATABASE=PXI-2546
+
+pci:v00001093d000072D2*
+ ID_MODEL_FROM_DATABASE=PXI-2547
+
+pci:v00001093d000072D3*
+ ID_MODEL_FROM_DATABASE=PXI-2548
+
+pci:v00001093d000072D4*
+ ID_MODEL_FROM_DATABASE=PXI-2549
+
+pci:v00001093d000072D5*
+ ID_MODEL_FROM_DATABASE=PXI-2555
+
+pci:v00001093d000072D6*
+ ID_MODEL_FROM_DATABASE=PXI-2556
+
+pci:v00001093d000072D7*
+ ID_MODEL_FROM_DATABASE=PXI-2557
+
+pci:v00001093d000072D8*
+ ID_MODEL_FROM_DATABASE=PXI-2558
+
+pci:v00001093d000072D9*
+ ID_MODEL_FROM_DATABASE=PXI-2559
+
+pci:v00001093d000072E8*
+ ID_MODEL_FROM_DATABASE=PXIe-6251
+
+pci:v00001093d000072E9*
+ ID_MODEL_FROM_DATABASE=PXIe-6259
+
+pci:v00001093d000072EF*
+ ID_MODEL_FROM_DATABASE=PXI-4498
+
+pci:v00001093d000072F0*
+ ID_MODEL_FROM_DATABASE=PXI-4496
+
+pci:v00001093d000072FB*
+ ID_MODEL_FROM_DATABASE=PXIe-6672
+
+pci:v00001093d0000730E*
+ ID_MODEL_FROM_DATABASE=PXI-4130
+
 pci:v00001093d0000730F*
  ID_MODEL_FROM_DATABASE=PXI-5922EX
 
 pci:v00001093d00007310*
  ID_MODEL_FROM_DATABASE=PCI-5922EX
 
+pci:v00001093d0000731C*
+ ID_MODEL_FROM_DATABASE=PXI-2535
+
+pci:v00001093d0000731D*
+ ID_MODEL_FROM_DATABASE=PXI-2536
+
+pci:v00001093d00007322*
+ ID_MODEL_FROM_DATABASE=PXIe-6124
+
+pci:v00001093d00007327*
+ ID_MODEL_FROM_DATABASE=PXI-6529
+
+pci:v00001093d00007331*
+ ID_MODEL_FROM_DATABASE=PXIe-5602
+
+pci:v00001093d00007332*
+ ID_MODEL_FROM_DATABASE=PXIe-5601
+
 pci:v00001093d00007333*
  ID_MODEL_FROM_DATABASE=PXI-5900
 
+pci:v00001093d00007335*
+ ID_MODEL_FROM_DATABASE=PXI-2533
+
+pci:v00001093d00007336*
+ ID_MODEL_FROM_DATABASE=PXI-2534
+
+pci:v00001093d00007342*
+ ID_MODEL_FROM_DATABASE=PXI-4461
+
 pci:v00001093d00007349*
  ID_MODEL_FROM_DATABASE=PXI-5154
 
 pci:v00001093d0000734A*
  ID_MODEL_FROM_DATABASE=PCI-5154
 
+pci:v00001093d00007357*
+ ID_MODEL_FROM_DATABASE=PXI-4065
+
+pci:v00001093d00007359*
+ ID_MODEL_FROM_DATABASE=PXI-4495
+
+pci:v00001093d00007370*
+ ID_MODEL_FROM_DATABASE=PXI-4461
+
+pci:v00001093d00007373*
+ ID_MODEL_FROM_DATABASE=sbRIO-9601
+
+pci:v00001093d00007374*
+ ID_MODEL_FROM_DATABASE=IOtech-9601
+
+pci:v00001093d00007375*
+ ID_MODEL_FROM_DATABASE=sbRIO-9602
+
+pci:v00001093d00007378*
+ ID_MODEL_FROM_DATABASE=sbRIO-9641
+
 pci:v00001093d0000737D*
  ID_MODEL_FROM_DATABASE=PXI-5124EX
 
@@ -17786,9 +18623,126 @@ pci:v00001093d00007393*
 pci:v00001093d00007394*
  ID_MODEL_FROM_DATABASE=PCIe-7842R
 
+pci:v00001093d00007397*
+ ID_MODEL_FROM_DATABASE=sbRIO-9611
+
+pci:v00001093d00007398*
+ ID_MODEL_FROM_DATABASE=sbRIO-9612
+
+pci:v00001093d00007399*
+ ID_MODEL_FROM_DATABASE=sbRIO-9631
+
+pci:v00001093d0000739A*
+ ID_MODEL_FROM_DATABASE=sbRIO-9632
+
+pci:v00001093d0000739B*
+ ID_MODEL_FROM_DATABASE=sbRIO-9642
+
+pci:v00001093d000073A1*
+ ID_MODEL_FROM_DATABASE=PXIe-4498
+
+pci:v00001093d000073A2*
+ ID_MODEL_FROM_DATABASE=PXIe-4496
+
 pci:v00001093d000073A5*
  ID_MODEL_FROM_DATABASE=PXIe-5641R
 
+pci:v00001093d000073A7*
+ ID_MODEL_FROM_DATABASE=PXI-8250 Chassis Monitor Module
+
+pci:v00001093d000073A8*
+ ID_MODEL_FROM_DATABASE=PXI-8511 CAN/LS
+
+pci:v00001093d000073A9*
+ ID_MODEL_FROM_DATABASE=PXI-8511 CAN/LS
+
+pci:v00001093d000073AA*
+ ID_MODEL_FROM_DATABASE=PXI-8512 CAN/HS
+
+pci:v00001093d000073AB*
+ ID_MODEL_FROM_DATABASE=PXI-8512 CAN/HS
+
+pci:v00001093d000073AC*
+ ID_MODEL_FROM_DATABASE=PXI-8513 CAN/XS
+
+pci:v00001093d000073AD*
+ ID_MODEL_FROM_DATABASE=PXI-8513 CAN/XS
+
+pci:v00001093d000073AF*
+ ID_MODEL_FROM_DATABASE=PXI-8516 LIN
+
+pci:v00001093d000073B1*
+ ID_MODEL_FROM_DATABASE=PXI-8517 FlexRay
+
+pci:v00001093d000073B2*
+ ID_MODEL_FROM_DATABASE=PXI-8531 CANopen
+
+pci:v00001093d000073B3*
+ ID_MODEL_FROM_DATABASE=PXI-8531 CANopen
+
+pci:v00001093d000073B4*
+ ID_MODEL_FROM_DATABASE=PXI-8532 DeviceNet
+
+pci:v00001093d000073B5*
+ ID_MODEL_FROM_DATABASE=PXI-8532 DeviceNet
+
+pci:v00001093d000073B6*
+ ID_MODEL_FROM_DATABASE=PCI-8511 CAN/LS
+
+pci:v00001093d000073B7*
+ ID_MODEL_FROM_DATABASE=PCI-8511 CAN/LS
+
+pci:v00001093d000073B8*
+ ID_MODEL_FROM_DATABASE=PCI-8512 CAN/HS
+
+pci:v00001093d000073B9*
+ ID_MODEL_FROM_DATABASE=PCI-8512 CAN/HS
+
+pci:v00001093d000073BA*
+ ID_MODEL_FROM_DATABASE=PCI-8513 CAN/XS
+
+pci:v00001093d000073BB*
+ ID_MODEL_FROM_DATABASE=PCI-8513 CAN/XS
+
+pci:v00001093d000073BD*
+ ID_MODEL_FROM_DATABASE=PCI-8516 LIN
+
+pci:v00001093d000073BF*
+ ID_MODEL_FROM_DATABASE=PCI-8517 FlexRay
+
+pci:v00001093d000073C0*
+ ID_MODEL_FROM_DATABASE=PCI-8531 CANopen
+
+pci:v00001093d000073C1*
+ ID_MODEL_FROM_DATABASE=PCI-8531 CANopen
+
+pci:v00001093d000073C2*
+ ID_MODEL_FROM_DATABASE=PCI-8532 DeviceNet
+
+pci:v00001093d000073C3*
+ ID_MODEL_FROM_DATABASE=PCI-8532 DeviceNet
+
+pci:v00001093d000073C5*
+ ID_MODEL_FROM_DATABASE=PXIe-2527
+
+pci:v00001093d000073C6*
+ ID_MODEL_FROM_DATABASE=PXIe-2529
+
+pci:v00001093d000073C8*
+ ID_MODEL_FROM_DATABASE=PXIe-2530
+
+pci:v00001093d000073C9*
+ ID_MODEL_FROM_DATABASE=PXIe-2532
+
+pci:v00001093d000073CA*
+ ID_MODEL_FROM_DATABASE=PXIe-2569
+
+pci:v00001093d000073CB*
+ ID_MODEL_FROM_DATABASE=PXIe-2575
+
+pci:v00001093d000073CC*
+ ID_MODEL_FROM_DATABASE=PXIe-2593
+
 pci:v00001093d000073D5*
  ID_MODEL_FROM_DATABASE=PXI-7951R
 
@@ -17804,15 +18758,87 @@ pci:v00001093d000073E1*
 pci:v00001093d000073EC*
  ID_MODEL_FROM_DATABASE=PXI-7954R
 
+pci:v00001093d000073ED*
+ ID_MODEL_FROM_DATABASE=cRIO-9073
+
 pci:v00001093d000073F0*
  ID_MODEL_FROM_DATABASE=PXI-5153
 
 pci:v00001093d000073F1*
  ID_MODEL_FROM_DATABASE=PCI-5153
 
+pci:v00001093d000073F4*
+ ID_MODEL_FROM_DATABASE=PXI-2515
+
+pci:v00001093d000073F6*
+ ID_MODEL_FROM_DATABASE=cRIO-9111
+
+pci:v00001093d000073F7*
+ ID_MODEL_FROM_DATABASE=cRIO-9112
+
+pci:v00001093d000073F8*
+ ID_MODEL_FROM_DATABASE=cRIO-9113
+
+pci:v00001093d000073F9*
+ ID_MODEL_FROM_DATABASE=cRIO-9114
+
+pci:v00001093d000073FA*
+ ID_MODEL_FROM_DATABASE=cRIO-9116
+
+pci:v00001093d000073FB*
+ ID_MODEL_FROM_DATABASE=cRIO-9118
+
+pci:v00001093d00007404*
+ ID_MODEL_FROM_DATABASE=PXI-4132
+
 pci:v00001093d00007405*
  ID_MODEL_FROM_DATABASE=PXIe-6674T
 
+pci:v00001093d00007406*
+ ID_MODEL_FROM_DATABASE=PXIe-6674
+
+pci:v00001093d0000740E*
+ ID_MODEL_FROM_DATABASE=PCIe-8430/16 (RS-232) Interface
+
+pci:v00001093d0000740F*
+ ID_MODEL_FROM_DATABASE=PCIe-8430/8 (RS-232) Interface
+
+pci:v00001093d00007410*
+ ID_MODEL_FROM_DATABASE=PCIe-8431/16 (RS-485) Interface
+
+pci:v00001093d00007411*
+ ID_MODEL_FROM_DATABASE=PCIe-8431/8 (RS-485) Interface
+
+pci:v00001093d00007414*
+ ID_MODEL_FROM_DATABASE=PCIe-GPIB+
+
+pci:v00001093d0000741C*
+ ID_MODEL_FROM_DATABASE=PXI-5691
+
+pci:v00001093d0000741D*
+ ID_MODEL_FROM_DATABASE=PXI-5695
+
+pci:v00001093d0000743C*
+ ID_MODEL_FROM_DATABASE=CSC-3059
+
+pci:v00001093d00007448*
+ ID_MODEL_FROM_DATABASE=PXI-2510
+
+pci:v00001093d00007454*
+ ID_MODEL_FROM_DATABASE=PXI-2512
+
+pci:v00001093d00007455*
+ ID_MODEL_FROM_DATABASE=PXI-2514
+
+pci:v00001093d00007456*
+ ID_MODEL_FROM_DATABASE=PXIe-2512
+
+pci:v00001093d00007457*
+ ID_MODEL_FROM_DATABASE=PXIe-2514
+
+pci:v00001093d0000745A*
+ ID_MODEL_FROM_DATABASE=PXI-6682H
+
 pci:v00001093d0000745E*
  ID_MODEL_FROM_DATABASE=PXI-5153EX
 
@@ -17825,86 +18851,740 @@ pci:v00001093d00007460*
 pci:v00001093d00007461*
  ID_MODEL_FROM_DATABASE=PCI-5154EX
 
+pci:v00001093d0000746D*
+ ID_MODEL_FROM_DATABASE=PXIe-5650
+
+pci:v00001093d0000746E*
+ ID_MODEL_FROM_DATABASE=PXIe-5651
+
+pci:v00001093d0000746F*
+ ID_MODEL_FROM_DATABASE=PXIe-5652
+
+pci:v00001093d00007472*
+ ID_MODEL_FROM_DATABASE=PXI-2800
+
+pci:v00001093d00007495*
+ ID_MODEL_FROM_DATABASE=PXIe-5603
+
+pci:v00001093d00007497*
+ ID_MODEL_FROM_DATABASE=PXIe-5605
+
+pci:v00001093d000074AE*
+ ID_MODEL_FROM_DATABASE=PXIe-2515
+
+pci:v00001093d000074B4*
+ ID_MODEL_FROM_DATABASE=PXI-2531
+
+pci:v00001093d000074B5*
+ ID_MODEL_FROM_DATABASE=PXIe-2531
+
+pci:v00001093d000074C1*
+ ID_MODEL_FROM_DATABASE=PXIe-8430/16 (RS-232) Interface
+
+pci:v00001093d000074C2*
+ ID_MODEL_FROM_DATABASE=PXIe-8430/8 (RS-232) Interface
+
+pci:v00001093d000074C3*
+ ID_MODEL_FROM_DATABASE=PXIe-8431/16 (RS-485) Interface
+
+pci:v00001093d000074C4*
+ ID_MODEL_FROM_DATABASE=PXIe-8431/8 (RS-485) Interface
+
+pci:v00001093d000074D5*
+ ID_MODEL_FROM_DATABASE=PXIe-5630
+
+pci:v00001093d000074D9*
+ ID_MODEL_FROM_DATABASE=PCIe-8432/2 (Isolated RS-232) Interface
+
+pci:v00001093d000074DA*
+ ID_MODEL_FROM_DATABASE=PCIe-8433/2 (Isolated RS-485) Interface
+
+pci:v00001093d000074DB*
+ ID_MODEL_FROM_DATABASE=PCIe-8432/4 (Isolated RS-232) Interface
+
+pci:v00001093d000074DC*
+ ID_MODEL_FROM_DATABASE=PCIe-8433/4 (Isolated RS-485) Interface
+
+pci:v00001093d000074E8*
+ ID_MODEL_FROM_DATABASE=NI 9148
+
+pci:v00001093d00007515*
+ ID_MODEL_FROM_DATABASE=PCIe-8430/2 (RS-232) Interface
+
+pci:v00001093d00007516*
+ ID_MODEL_FROM_DATABASE=PCIe-8430/4 (RS-232) Interface
+
+pci:v00001093d00007517*
+ ID_MODEL_FROM_DATABASE=PCIe-8431/2 (RS-485) Interface
+
+pci:v00001093d00007518*
+ ID_MODEL_FROM_DATABASE=PCIe-8431/4 (RS-485) Interface
+
+pci:v00001093d0000751B*
+ ID_MODEL_FROM_DATABASE=cRIO-9081
+
+pci:v00001093d0000751C*
+ ID_MODEL_FROM_DATABASE=cRIO-9082
+
+pci:v00001093d00007528*
+ ID_MODEL_FROM_DATABASE=PXIe-4497
+
+pci:v00001093d00007529*
+ ID_MODEL_FROM_DATABASE=PXIe-4499
+
+pci:v00001093d0000752A*
+ ID_MODEL_FROM_DATABASE=PXIe-4492
+
 pci:v00001093d00007539*
  ID_MODEL_FROM_DATABASE=NI 9157
 
 pci:v00001093d0000753A*
  ID_MODEL_FROM_DATABASE=NI 9159
 
+pci:v00001093d00007598*
+ ID_MODEL_FROM_DATABASE=PXI-2571
+
+pci:v00001093d000075A4*
+ ID_MODEL_FROM_DATABASE=PXI-4131A
+
+pci:v00001093d000075B1*
+ ID_MODEL_FROM_DATABASE=PCIe-7854R
+
+pci:v00001093d000075BA*
+ ID_MODEL_FROM_DATABASE=PXI-2543
+
+pci:v00001093d000075BB*
+ ID_MODEL_FROM_DATABASE=PXIe-2543
+
 pci:v00001093d000075E5*
  ID_MODEL_FROM_DATABASE=PXI-6683
 
 pci:v00001093d000075E6*
  ID_MODEL_FROM_DATABASE=PXI-6683H
 
+pci:v00001093d000075EF*
+ ID_MODEL_FROM_DATABASE=PXIe-5632
+
+pci:v00001093d0000761F*
+ ID_MODEL_FROM_DATABASE=PXI-2540
+
+pci:v00001093d00007620*
+ ID_MODEL_FROM_DATABASE=PXIe-2540
+
+pci:v00001093d00007621*
+ ID_MODEL_FROM_DATABASE=PXI-2541
+
+pci:v00001093d00007622*
+ ID_MODEL_FROM_DATABASE=PXIe-2541
+
 pci:v00001093d00007626*
  ID_MODEL_FROM_DATABASE=NI 9154
 
 pci:v00001093d00007627*
  ID_MODEL_FROM_DATABASE=NI 9155
 
+pci:v00001093d00007638*
+ ID_MODEL_FROM_DATABASE=PXI-2720
+
+pci:v00001093d00007639*
+ ID_MODEL_FROM_DATABASE=PXI-2722
+
+pci:v00001093d0000763A*
+ ID_MODEL_FROM_DATABASE=PXIe-2725
+
+pci:v00001093d0000763B*
+ ID_MODEL_FROM_DATABASE=PXIe-2727
+
+pci:v00001093d0000763C*
+ ID_MODEL_FROM_DATABASE=PXI-4465
+
+pci:v00001093d0000764B*
+ ID_MODEL_FROM_DATABASE=PXIe-2790
+
+pci:v00001093d0000764C*
+ ID_MODEL_FROM_DATABASE=PXI-2520
+
+pci:v00001093d0000764D*
+ ID_MODEL_FROM_DATABASE=PXI-2521
+
+pci:v00001093d0000764E*
+ ID_MODEL_FROM_DATABASE=PXI-2522
+
+pci:v00001093d0000764F*
+ ID_MODEL_FROM_DATABASE=PXI-2523
+
+pci:v00001093d00007654*
+ ID_MODEL_FROM_DATABASE=PXI-2796
+
+pci:v00001093d00007655*
+ ID_MODEL_FROM_DATABASE=PXI-2797
+
+pci:v00001093d00007656*
+ ID_MODEL_FROM_DATABASE=PXI-2798
+
+pci:v00001093d00007657*
+ ID_MODEL_FROM_DATABASE=PXI-2799
+
+pci:v00001093d0000765D*
+ ID_MODEL_FROM_DATABASE=PXI-2542
+
+pci:v00001093d0000765E*
+ ID_MODEL_FROM_DATABASE=PXIe-2542
+
+pci:v00001093d0000765F*
+ ID_MODEL_FROM_DATABASE=PXI-2544
+
+pci:v00001093d00007660*
+ ID_MODEL_FROM_DATABASE=PXIe-2544
+
+pci:v00001093d0000766D*
+ ID_MODEL_FROM_DATABASE=PCIe-6535B
+
+pci:v00001093d0000766E*
+ ID_MODEL_FROM_DATABASE=PCIe-6536B
+
+pci:v00001093d0000766F*
+ ID_MODEL_FROM_DATABASE=PCIe-6537B
+
+pci:v00001093d000076A3*
+ ID_MODEL_FROM_DATABASE=PXIe-6535B
+
+pci:v00001093d000076A4*
+ ID_MODEL_FROM_DATABASE=PXIe-6536B
+
+pci:v00001093d000076A5*
+ ID_MODEL_FROM_DATABASE=PXIe-6537B
+
+pci:v00001093d00009020*
+ ID_MODEL_FROM_DATABASE=PXI-2501
+
+pci:v00001093d00009030*
+ ID_MODEL_FROM_DATABASE=PXI-2503
+
+pci:v00001093d00009040*
+ ID_MODEL_FROM_DATABASE=PXI-2527
+
+pci:v00001093d00009050*
+ ID_MODEL_FROM_DATABASE=PXI-2565
+
+pci:v00001093d00009060*
+ ID_MODEL_FROM_DATABASE=PXI-2590
+
+pci:v00001093d00009070*
+ ID_MODEL_FROM_DATABASE=PXI-2591
+
+pci:v00001093d00009080*
+ ID_MODEL_FROM_DATABASE=PXI-2580
+
+pci:v00001093d00009090*
+ ID_MODEL_FROM_DATABASE=PCI-4021
+
+pci:v00001093d000090A0*
+ ID_MODEL_FROM_DATABASE=PXI-4021
+
 pci:v00001093d0000B001*
- ID_MODEL_FROM_DATABASE=IMAQ-PCI-1408
+ ID_MODEL_FROM_DATABASE=PCI-1408
 
 pci:v00001093d0000B011*
- ID_MODEL_FROM_DATABASE=IMAQ-PXI-1408
+ ID_MODEL_FROM_DATABASE=PXI-1408
 
 pci:v00001093d0000B021*
- ID_MODEL_FROM_DATABASE=IMAQ-PCI-1424
+ ID_MODEL_FROM_DATABASE=PCI-1424
+
+pci:v00001093d0000B022*
+ ID_MODEL_FROM_DATABASE=PXI-1424
 
 pci:v00001093d0000B031*
- ID_MODEL_FROM_DATABASE=IMAQ-PCI-1413
+ ID_MODEL_FROM_DATABASE=PCI-1413
 
 pci:v00001093d0000B041*
- ID_MODEL_FROM_DATABASE=IMAQ-PCI-1407
+ ID_MODEL_FROM_DATABASE=PCI-1407
 
 pci:v00001093d0000B051*
- ID_MODEL_FROM_DATABASE=IMAQ-PXI-1407
+ ID_MODEL_FROM_DATABASE=PXI-1407
 
 pci:v00001093d0000B061*
- ID_MODEL_FROM_DATABASE=IMAQ-PCI-1411
+ ID_MODEL_FROM_DATABASE=PCI-1411
 
 pci:v00001093d0000B071*
- ID_MODEL_FROM_DATABASE=IMAQ-PCI-1422
+ ID_MODEL_FROM_DATABASE=PCI-1422
 
 pci:v00001093d0000B081*
- ID_MODEL_FROM_DATABASE=IMAQ-PXI-1422
+ ID_MODEL_FROM_DATABASE=PXI-1422
 
 pci:v00001093d0000B091*
- ID_MODEL_FROM_DATABASE=IMAQ-PXI-1411
+ ID_MODEL_FROM_DATABASE=PXI-1411
+
+pci:v00001093d0000B0B1*
+ ID_MODEL_FROM_DATABASE=PCI-1409
+
+pci:v00001093d0000B0C1*
+ ID_MODEL_FROM_DATABASE=PXI-1409
+
+pci:v00001093d0000B0E1*
+ ID_MODEL_FROM_DATABASE=PCI-1428
 
 pci:v00001093d0000C4C4*
  ID_MODEL_FROM_DATABASE=PXIe/PCIe Device
 
+pci:v00001093d0000C4C4sv00001093sd0000728A*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5421)
+
+pci:v00001093d0000C4C4sv00001093sd0000728B*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5442)
+
+pci:v00001093d0000C4C4sv00001093sd0000728D*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5451)
+
+pci:v00001093d0000C4C4sv00001093sd000072A2*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5122)
+
+pci:v00001093d0000C4C4sv00001093sd000072DA*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5422)
+
+pci:v00001093d0000C4C4sv00001093sd000072F7*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-6535)
+
+pci:v00001093d0000C4C4sv00001093sd000072F8*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-6536)
+
+pci:v00001093d0000C4C4sv00001093sd000072F9*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-6537)
+
+pci:v00001093d0000C4C4sv00001093sd00007326*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PCIe-6509)
+
+pci:v00001093d0000C4C4sv00001093sd0000736C*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-4140)
+
+pci:v00001093d0000C4C4sv00001093sd0000738B*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5622)
+
+pci:v00001093d0000C4C4sv00001093sd000073C4*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5450)
+
+pci:v00001093d0000C4C4sv00001093sd000073C7*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-6545)
+
+pci:v00001093d0000C4C4sv00001093sd000073D4*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-6544)
+
+pci:v00001093d0000C4C4sv00001093sd00007425*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PCIe-6320)
+
+pci:v00001093d0000C4C4sv00001093sd00007427*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PCIe-6321)
+
+pci:v00001093d0000C4C4sv00001093sd00007428*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-6323)
+
+pci:v00001093d0000C4C4sv00001093sd00007429*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PCIe-6323)
+
+pci:v00001093d0000C4C4sv00001093sd0000742A*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-6341)
+
+pci:v00001093d0000C4C4sv00001093sd0000742B*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PCIe-6341)
+
+pci:v00001093d0000C4C4sv00001093sd0000742C*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-6343)
+
+pci:v00001093d0000C4C4sv00001093sd0000742D*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PCIe-6343)
+
+pci:v00001093d0000C4C4sv00001093sd0000742F*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PCIe-6351)
+
+pci:v00001093d0000C4C4sv00001093sd00007431*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PCIe-6353)
+
+pci:v00001093d0000C4C4sv00001093sd00007432*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-6361)
+
+pci:v00001093d0000C4C4sv00001093sd00007433*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PCIe-6361)
+
+pci:v00001093d0000C4C4sv00001093sd00007434*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-6363)
+
+pci:v00001093d0000C4C4sv00001093sd00007435*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PCIe-6363)
+
+pci:v00001093d0000C4C4sv00001093sd00007436*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-6356)
+
+pci:v00001093d0000C4C4sv00001093sd00007437*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-6358)
+
+pci:v00001093d0000C4C4sv00001093sd00007438*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-6366)
+
+pci:v00001093d0000C4C4sv00001093sd00007439*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-6368)
+
+pci:v00001093d0000C4C4sv00001093sd00007468*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5185)
+
+pci:v00001093d0000C4C4sv00001093sd00007469*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5186)
+
+pci:v00001093d0000C4C4sv00001093sd00007492*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-4300)
+
+pci:v00001093d0000C4C4sv00001093sd00007498*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-6548)
+
+pci:v00001093d0000C4C4sv00001093sd00007499*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-6547)
+
+pci:v00001093d0000C4C4sv00001093sd000074A8*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-4330)
+
+pci:v00001093d0000C4C4sv00001093sd000074A9*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-4331)
+
+pci:v00001093d0000C4C4sv00001093sd000074B1*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-4154)
+
 pci:v00001093d0000C4C4sv00001093sd000074B2*
  ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-4353)
 
+pci:v00001093d0000C4C4sv00001093sd000074B6*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PCIe-1433)
+
+pci:v00001093d0000C4C4sv00001093sd000074CD*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5643R)
+
 pci:v00001093d0000C4C4sv00001093sd000074D0*
  ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-7961R)
 
+pci:v00001093d0000C4C4sv00001093sd000074DD*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-6376)
+
+pci:v00001093d0000C4C4sv00001093sd000074DE*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-6378)
+
 pci:v00001093d0000C4C4sv00001093sd000074E2*
  ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-7962R)
 
 pci:v00001093d0000C4C4sv00001093sd000074E3*
  ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-7965R)
 
+pci:v00001093d0000C4C4sv00001093sd000074E5*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-4844)
+
+pci:v00001093d0000C4C4sv00001093sd000074F3*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PCIe-5140)
+
+pci:v00001093d0000C4C4sv00001093sd0000753C*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-1435)
+
+pci:v00001093d0000C4C4sv00001093sd00007548*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5622 (25MHz DDC))
+
+pci:v00001093d0000C4C4sv00001093sd0000754D*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PCIe-5155)
+
+pci:v00001093d0000C4C4sv00001093sd00007551*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-6556)
+
 pci:v00001093d0000C4C4sv00001093sd00007553*
  ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PCIe-1473R)
 
+pci:v00001093d0000C4C4sv00001093sd00007570*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PCIe-1474R)
+
+pci:v00001093d0000C4C4sv00001093sd00007571*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-1475R)
+
+pci:v00001093d0000C4C4sv00001093sd00007572*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-1476R)
+
+pci:v00001093d0000C4C4sv00001093sd000075A2*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5693)
+
+pci:v00001093d0000C4C4sv00001093sd000075A3*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5694)
+
+pci:v00001093d0000C4C4sv00001093sd000075A5*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-4141)
+
 pci:v00001093d0000C4C4sv00001093sd000075CE*
  ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-7966R)
 
+pci:v00001093d0000C4C4sv00001093sd000075CF*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-4357)
+
+pci:v00001093d0000C4C4sv00001093sd000075D2*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-RevB-5643R)
+
+pci:v00001093d0000C4C4sv00001093sd000075D3*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5644R)
+
+pci:v00001093d0000C4C4sv00001093sd000075EE*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5645R)
+
+pci:v00001093d0000C4C4sv00001093sd00007613*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-6555)
+
+pci:v00001093d0000C4C4sv00001093sd00007619*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5185)
+
+pci:v00001093d0000C4C4sv00001093sd0000761A*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5186)
+
+pci:v00001093d0000C4C4sv00001093sd00007629*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-4142)
+
+pci:v00001093d0000C4C4sv00001093sd0000762A*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-4143)
+
+pci:v00001093d0000C4C4sv00001093sd0000762B*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-4138)
+
+pci:v00001093d0000C4C4sv00001093sd0000762C*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-4144)
+
+pci:v00001093d0000C4C4sv00001093sd0000762D*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-4145)
+
+pci:v00001093d0000C4C4sv00001093sd00007644*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-4841)
+
+pci:v00001093d0000C4C4sv00001093sd00007658*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5162 (4CH))
+
+pci:v00001093d0000C4C4sv00001093sd000076AB*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-4322)
+
+pci:v00001093d0000C4C4sv00001093sd000076AD*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-4112)
+
+pci:v00001093d0000C4C4sv00001093sd000076AE*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-4113)
+
+pci:v00001093d0000C4C4sv00001093sd000076B5*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-7971R)
+
+pci:v00001093d0000C4C4sv00001093sd000076B6*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-7972R)
+
 pci:v00001093d0000C4C4sv00001093sd000076B7*
  ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-7975R)
 
+pci:v00001093d0000C4C4sv00001093sd000076C8*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-6614)
+
+pci:v00001093d0000C4C4sv00001093sd000076C9*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-6612)
+
+pci:v00001093d0000C4C4sv00001093sd000076CB*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5646R)
+
+pci:v00001093d0000C4C4sv00001093sd000076CC*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5162 (2CH))
+
 pci:v00001093d0000C4C4sv00001093sd000076D0*
- ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5160)
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5160 (2CH))
+
+pci:v00001093d0000C4C4sv00001093sd000076D1*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5160 (4CH))
+
+pci:v00001093d0000C4C4sv00001093sd000076DC*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-4610)
+
+pci:v00001093d0000C4C4sv00001093sd000076FB*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PCIe-1473R-LX110)
+
+pci:v00001093d0000C4C4sv00001093sd000076FE*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5644R)
+
+pci:v00001093d0000C4C4sv00001093sd000076FF*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5644R)
+
+pci:v00001093d0000C4C4sv00001093sd00007700*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5644R)
+
+pci:v00001093d0000C4C4sv00001093sd00007701*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5645R)
+
+pci:v00001093d0000C4C4sv00001093sd00007702*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5645R)
+
+pci:v00001093d0000C4C4sv00001093sd00007703*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5645R)
+
+pci:v00001093d0000C4C4sv00001093sd0000770C*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-4139)
+
+pci:v00001093d0000C4C4sv00001093sd00007711*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-4464)
+
+pci:v00001093d0000C4C4sv00001093sd00007716*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PCIe-6612)
+
+pci:v00001093d0000C4C4sv00001093sd0000771E*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-4339)
+
+pci:v00001093d0000C4C4sv00001093sd00007735*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (cRIO-9033)
+
+pci:v00001093d0000C4C4sv00001093sd0000774B*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (cRIO-9031)
+
+pci:v00001093d0000C4C4sv00001093sd0000774D*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (cRIO-9034)
+
+pci:v00001093d0000C4C4sv00001093sd00007755*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (cRIO-9030)
+
+pci:v00001093d0000C4C4sv00001093sd00007777*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-7976R)
+
+pci:v00001093d0000C4C4sv00001093sd00007782*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5646R)
+
+pci:v00001093d0000C4C4sv00001093sd00007783*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5646R)
+
+pci:v00001093d0000C4C4sv00001093sd00007784*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5646R)
+
+pci:v00001093d0000C4C4sv00001093sd000077A5*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-6345)
+
+pci:v00001093d0000C4C4sv00001093sd000077A6*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-6355)
+
+pci:v00001093d0000C4C4sv00001093sd000077A7*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-6365)
+
+pci:v00001093d0000C4C4sv00001093sd000077A8*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-6375)
+
+pci:v00001093d0000C4C4sv00001093sd000077B4*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-7820R)
+
+pci:v00001093d0000C4C4sv00001093sd000077B5*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-7821R)
+
+pci:v00001093d0000C4C4sv00001093sd000077B6*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-7822R)
+
+pci:v00001093d0000C4C4sv00001093sd000077B9*
+ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (cRIO-9038)
 
 pci:v00001093d0000C801*
  ID_MODEL_FROM_DATABASE=PCI-GPIB
 
+pci:v00001093d0000C811*
+ ID_MODEL_FROM_DATABASE=PCI-GPIB+
+
+pci:v00001093d0000C821*
+ ID_MODEL_FROM_DATABASE=PXI-GPIB
+
 pci:v00001093d0000C831*
- ID_MODEL_FROM_DATABASE=PCI-GPIB bridge
+ ID_MODEL_FROM_DATABASE=PMC-GPIB
+
+pci:v00001093d0000C840*
+ ID_MODEL_FROM_DATABASE=PCI-GPIB
+
+pci:v00001093d0000D130*
+ ID_MODEL_FROM_DATABASE=PCI-232/2 Interface
+
+pci:v00001093d0000D140*
+ ID_MODEL_FROM_DATABASE=PCI-232/4 Interface
+
+pci:v00001093d0000D150*
+ ID_MODEL_FROM_DATABASE=PCI-232/8 Interface
+
+pci:v00001093d0000D160*
+ ID_MODEL_FROM_DATABASE=PCI-485/2 Interface
+
+pci:v00001093d0000D170*
+ ID_MODEL_FROM_DATABASE=PCI-485/4 Interface
+
+pci:v00001093d0000D190*
+ ID_MODEL_FROM_DATABASE=PXI-8422/2 (Isolated RS-232) Interface
+
+pci:v00001093d0000D1A0*
+ ID_MODEL_FROM_DATABASE=PXI-8422/4 (Isolated RS-232) Interface
+
+pci:v00001093d0000D1B0*
+ ID_MODEL_FROM_DATABASE=PXI-8423/2 (Isolated RS-485) Interface
+
+pci:v00001093d0000D1C0*
+ ID_MODEL_FROM_DATABASE=PXI-8423/4 (Isolated RS-485) Interface
+
+pci:v00001093d0000D1D0*
+ ID_MODEL_FROM_DATABASE=PXI-8420/2 (RS-232) Interface
+
+pci:v00001093d0000D1E0*
+ ID_MODEL_FROM_DATABASE=PXI-8420/4 (RS-232) Interface
+
+pci:v00001093d0000D1F0*
+ ID_MODEL_FROM_DATABASE=PXI-8420/8 (RS-232) Interface
+
+pci:v00001093d0000D1F1*
+ ID_MODEL_FROM_DATABASE=PXI-8420/16 (RS-232) Interface
+
+pci:v00001093d0000D230*
+ ID_MODEL_FROM_DATABASE=PXI-8421/2 (RS-485) Interface
+
+pci:v00001093d0000D240*
+ ID_MODEL_FROM_DATABASE=PXI-8421/4 (RS-485) Interface
+
+pci:v00001093d0000D250*
+ ID_MODEL_FROM_DATABASE=PCI-232/2 (Isolated) Interface
+
+pci:v00001093d0000D260*
+ ID_MODEL_FROM_DATABASE=PCI-485/2 (Isolated) Interface
+
+pci:v00001093d0000D270*
+ ID_MODEL_FROM_DATABASE=PCI-232/4 (Isolated) Interface
+
+pci:v00001093d0000D280*
+ ID_MODEL_FROM_DATABASE=PCI-485/4 (Isolated) Interface
+
+pci:v00001093d0000D290*
+ ID_MODEL_FROM_DATABASE=PCI-485/8 Interface
+
+pci:v00001093d0000D2A0*
+ ID_MODEL_FROM_DATABASE=PXI-8421/8 (RS-485) Interface
+
+pci:v00001093d0000D2B0*
+ ID_MODEL_FROM_DATABASE=PCI-232/16 Interface
+
+pci:v00001093d0000E111*
+ ID_MODEL_FROM_DATABASE=PCI-CAN
+
+pci:v00001093d0000E131*
+ ID_MODEL_FROM_DATABASE=PXI-8461 (1 port)
+
+pci:v00001093d0000E141*
+ ID_MODEL_FROM_DATABASE=PCI-CAN/LS
+
+pci:v00001093d0000E151*
+ ID_MODEL_FROM_DATABASE=PXI-8460 (1 port)
+
+pci:v00001093d0000E211*
+ ID_MODEL_FROM_DATABASE=PCI-CAN/2
+
+pci:v00001093d0000E231*
+ ID_MODEL_FROM_DATABASE=PXI-8461 (2 ports)
+
+pci:v00001093d0000E241*
+ ID_MODEL_FROM_DATABASE=PCI-CAN/LS2
+
+pci:v00001093d0000E251*
+ ID_MODEL_FROM_DATABASE=PXI-8460 (2 ports)
+
+pci:v00001093d0000E261*
+ ID_MODEL_FROM_DATABASE=PCI-CAN/DS
+
+pci:v00001093d0000E271*
+ ID_MODEL_FROM_DATABASE=PXI-8462
 
 pci:v00001094*
  ID_VENDOR_FROM_DATABASE=First International Computers [FIC]
@@ -23331,16 +25011,16 @@ pci:v000010DEd00000367*
  ID_MODEL_FROM_DATABASE=MCP55 LPC Bridge
 
 pci:v000010DEd00000368*
- ID_MODEL_FROM_DATABASE=MCP55 SMBus
+ ID_MODEL_FROM_DATABASE=MCP55 SMBus Controller
 
 pci:v000010DEd00000368sv00001028sd0000020C*
- ID_MODEL_FROM_DATABASE=MCP55 SMBus (PowerEdge M605 MCP55 SMBus)
+ ID_MODEL_FROM_DATABASE=MCP55 SMBus Controller (PowerEdge M605 MCP55 SMBus)
 
 pci:v000010DEd00000368sv00001028sd00000221*
- ID_MODEL_FROM_DATABASE=MCP55 SMBus (PowerEdge R805 MCP55 SMBus)
+ ID_MODEL_FROM_DATABASE=MCP55 SMBus Controller (PowerEdge R805 MCP55 SMBus)
 
 pci:v000010DEd00000368sv0000147Bsd00001C24*
- ID_MODEL_FROM_DATABASE=MCP55 SMBus (KN9 series mainboard)
+ ID_MODEL_FROM_DATABASE=MCP55 SMBus Controller (KN9 series mainboard)
 
 pci:v000010DEd00000369*
  ID_MODEL_FROM_DATABASE=MCP55 Memory Controller
@@ -24530,6 +26210,9 @@ pci:v000010DEd00000641*
 pci:v000010DEd00000641sv00001682sd00004009*
  ID_MODEL_FROM_DATABASE=G96 [GeForce 9400 GT] (PV-T94G-ZAFG)
 
+pci:v000010DEd00000642*
+ ID_MODEL_FROM_DATABASE=G96 [D9M-10]
+
 pci:v000010DEd00000643*
  ID_MODEL_FROM_DATABASE=G96 [GeForce 9500 GT]
 
@@ -26522,6 +28205,9 @@ pci:v000010DEd0000100A*
 pci:v000010DEd0000100C*
  ID_MODEL_FROM_DATABASE=GK110B [GeForce GTX Titan Black]
 
+pci:v000010DEd0000101E*
+ ID_MODEL_FROM_DATABASE=GK110GL [Tesla K20X]
+
 pci:v000010DEd0000101F*
  ID_MODEL_FROM_DATABASE=GK110GL [Tesla K20]
 
@@ -26552,6 +28238,15 @@ pci:v000010DEd00001028*
 pci:v000010DEd00001029*
  ID_MODEL_FROM_DATABASE=GK110BGL [Tesla K40s]
 
+pci:v000010DEd0000102A*
+ ID_MODEL_FROM_DATABASE=GK110BGL [Tesla K40t]
+
+pci:v000010DEd0000102D*
+ ID_MODEL_FROM_DATABASE=GK110BGL [Tesla K80]
+
+pci:v000010DEd0000102E*
+ ID_MODEL_FROM_DATABASE=GK110BGL [Tesla K40d]
+
 pci:v000010DEd0000103A*
  ID_MODEL_FROM_DATABASE=GK110GL [Quadro K6000]
 
@@ -26582,6 +28277,9 @@ pci:v000010DEd0000104B*
 pci:v000010DEd0000104C*
  ID_MODEL_FROM_DATABASE=GF119 [GeForce GT 705]
 
+pci:v000010DEd0000104D*
+ ID_MODEL_FROM_DATABASE=GF119 [GeForce GT 710]
+
 pci:v000010DEd00001050*
  ID_MODEL_FROM_DATABASE=GF119M [GeForce GT 520M]
 
@@ -27551,9 +29249,15 @@ pci:v000010DEd0000118E*
 pci:v000010DEd0000118F*
  ID_MODEL_FROM_DATABASE=GK104GL [Tesla K10]
 
+pci:v000010DEd00001191*
+ ID_MODEL_FROM_DATABASE=GK104 [GeForce GTX 760 Rev. 2]
+
 pci:v000010DEd00001193*
  ID_MODEL_FROM_DATABASE=GK104 [GeForce GTX 760 Ti OEM]
 
+pci:v000010DEd00001194*
+ ID_MODEL_FROM_DATABASE=GK104GL [Tesla K8]
+
 pci:v000010DEd00001195*
  ID_MODEL_FROM_DATABASE=GK104 [GeForce GTX 660 Rev. 2]
 
@@ -27944,6 +29648,9 @@ pci:v000010DEd00001381*
 pci:v000010DEd00001382*
  ID_MODEL_FROM_DATABASE=GM107 [GeForce GTX 745]
 
+pci:v000010DEd00001389*
+ ID_MODEL_FROM_DATABASE=GM107GL [GRID M3]
+
 pci:v000010DEd00001390*
  ID_MODEL_FROM_DATABASE=GM107M [GeForce 845M]
 
@@ -27971,6 +29678,9 @@ pci:v000010DEd000013BA*
 pci:v000010DEd000013BB*
  ID_MODEL_FROM_DATABASE=GM107GL [Quadro K620]
 
+pci:v000010DEd000013BD*
+ ID_MODEL_FROM_DATABASE=GM107GL [Tesla M40]
+
 pci:v000010DF*
  ID_VENDOR_FROM_DATABASE=Emulex Corporation
 
@@ -31772,6 +33482,30 @@ pci:v0000111Dd0000806E*
 pci:v0000111Dd0000806F*
  ID_MODEL_FROM_DATABASE=HIO524G2 PCI Express Gen2 Switch
 
+pci:v0000111Dd00008088*
+ ID_MODEL_FROM_DATABASE=PES32NT8BG2 PCI Express Switch
+
+pci:v0000111Dd00008088sv00001093sd0000752F*
+ ID_MODEL_FROM_DATABASE=PES32NT8BG2 PCI Express Switch (PXIe-8383mc Device)
+
+pci:v0000111Dd00008088sv00001093sd00007543*
+ ID_MODEL_FROM_DATABASE=PES32NT8BG2 PCI Express Switch (PXIe-8383mc System Host)
+
+pci:v0000111Dd00008088sv00001093sd0000755C*
+ ID_MODEL_FROM_DATABASE=PES32NT8BG2 PCI Express Switch (PXIe-8364)
+
+pci:v0000111Dd00008088sv00001093sd0000755D*
+ ID_MODEL_FROM_DATABASE=PES32NT8BG2 PCI Express Switch (PXIe-8374)
+
+pci:v0000111Dd00008088sv00001093sd000075FF*
+ ID_MODEL_FROM_DATABASE=PES32NT8BG2 PCI Express Switch (PXIe-8383mc DMA)
+
+pci:v0000111Dd00008088sv00001093sd00007600*
+ ID_MODEL_FROM_DATABASE=PES32NT8BG2 PCI Express Switch (PXIe-8383mc DMA)
+
+pci:v0000111Dd00008088sv00001093sd00007602*
+ ID_MODEL_FROM_DATABASE=PES32NT8BG2 PCI Express Switch (PXIe-8384)
+
 pci:v0000111E*
  ID_VENDOR_FROM_DATABASE=Eldec
 
@@ -42929,6 +44663,9 @@ pci:v00001425d00005084*
 pci:v00001425d00005085*
  ID_MODEL_FROM_DATABASE=T580-5085 Unified Wire Ethernet Controller
 
+pci:v00001425d00005086*
+ ID_MODEL_FROM_DATABASE=T580-5086 Unified Wire Ethernet Controller
+
 pci:v00001425d00005401*
  ID_MODEL_FROM_DATABASE=T520-CR Unified Wire Ethernet Controller
 
@@ -43007,6 +44744,9 @@ pci:v00001425d00005484*
 pci:v00001425d00005485*
  ID_MODEL_FROM_DATABASE=T580-5085 Unified Wire Ethernet Controller
 
+pci:v00001425d00005486*
+ ID_MODEL_FROM_DATABASE=T580-5086 Unified Wire Ethernet Controller
+
 pci:v00001425d00005501*
  ID_MODEL_FROM_DATABASE=T520-CR Unified Wire Storage Controller
 
@@ -43085,6 +44825,9 @@ pci:v00001425d00005584*
 pci:v00001425d00005585*
  ID_MODEL_FROM_DATABASE=T580-5085 Unified Wire Storage Controller
 
+pci:v00001425d00005586*
+ ID_MODEL_FROM_DATABASE=T580-5086 Unified Wire Storage Controller
+
 pci:v00001425d00005601*
  ID_MODEL_FROM_DATABASE=T520-CR Unified Wire Storage Controller
 
@@ -43163,6 +44906,9 @@ pci:v00001425d00005684*
 pci:v00001425d00005685*
  ID_MODEL_FROM_DATABASE=T580-5085 Unified Wire Storage Controller
 
+pci:v00001425d00005686*
+ ID_MODEL_FROM_DATABASE=T580-5086 Unified Wire Storage Controller
+
 pci:v00001425d00005701*
  ID_MODEL_FROM_DATABASE=T520-CR Unified Wire Ethernet Controller
 
@@ -43319,6 +45065,9 @@ pci:v00001425d00005884*
 pci:v00001425d00005885*
  ID_MODEL_FROM_DATABASE=T580-5085 Unified Wire Ethernet Controller [VF]
 
+pci:v00001425d00005886*
+ ID_MODEL_FROM_DATABASE=T580-5086 Unified Wire Ethernet Controller [VF]
+
 pci:v00001425d0000A000*
  ID_MODEL_FROM_DATABASE=PE10K Unified Wire Ethernet Controller
 
@@ -49862,6 +51611,15 @@ pci:v000016ED*
 pci:v000016EDd00001001*
  ID_MODEL_FROM_DATABASE=UMIO communication card
 
+pci:v000016F2*
+ ID_VENDOR_FROM_DATABASE=ETAS GmbH
+
+pci:v000016F2d00000200*
+ ID_MODEL_FROM_DATABASE=I/O board
+
+pci:v000016F2d00000200sv000016F2sd00000010*
+ ID_MODEL_FROM_DATABASE=I/O board (ES53xx I/O board)
+
 pci:v000016F3*
  ID_VENDOR_FROM_DATABASE=Jetway Information Co., Ltd.
 
@@ -50004,7 +51762,7 @@ pci:v00001775*
  ID_VENDOR_FROM_DATABASE=GE Intelligent Platforms
 
 pci:v0000177D*
- ID_VENDOR_FROM_DATABASE=Cavium Networks
+ ID_VENDOR_FROM_DATABASE=Cavium, Inc.
 
 pci:v0000177Dd00000001*
  ID_MODEL_FROM_DATABASE=Nitrox XL N1
@@ -50063,6 +51821,147 @@ pci:v0000177Dd00000095*
 pci:v0000177Dd00000096*
  ID_MODEL_FROM_DATABASE=Octeon III CN70XX Network Processor
 
+pci:v0000177Dd0000A001*
+ ID_MODEL_FROM_DATABASE=THUNDERX MRML Bridge
+
+pci:v0000177Dd0000A002*
+ ID_MODEL_FROM_DATABASE=THUNDERX PCC Bridge
+
+pci:v0000177Dd0000A002sv0000177Dsd0000A102*
+ ID_MODEL_FROM_DATABASE=THUNDERX PCC Bridge (CN88XX PCC Bridge)
+
+pci:v0000177Dd0000A008*
+ ID_MODEL_FROM_DATABASE=THUNDERX SMMU
+
+pci:v0000177Dd0000A008sv0000177Dsd0000A108*
+ ID_MODEL_FROM_DATABASE=THUNDERX SMMU (CN88XX SMMU)
+
+pci:v0000177Dd0000A009*
+ ID_MODEL_FROM_DATABASE=THUNDERX Generic Interrupt Controller
+
+pci:v0000177Dd0000A00A*
+ ID_MODEL_FROM_DATABASE=THUNDERX GPIO Controller
+
+pci:v0000177Dd0000A00B*
+ ID_MODEL_FROM_DATABASE=THUNDERX MPI / SPI Controller
+
+pci:v0000177Dd0000A00C*
+ ID_MODEL_FROM_DATABASE=THUNDERX MIO-PTP Controller
+
+pci:v0000177Dd0000A00D*
+ ID_MODEL_FROM_DATABASE=THUNDERX MIX Network Controller
+
+pci:v0000177Dd0000A00E*
+ ID_MODEL_FROM_DATABASE=THUNDERX Reset Controller
+
+pci:v0000177Dd0000A00F*
+ ID_MODEL_FROM_DATABASE=THUNDERX UART Controller
+
+pci:v0000177Dd0000A010*
+ ID_MODEL_FROM_DATABASE=THUNDERX eMMC/SD Controller
+
+pci:v0000177Dd0000A011*
+ ID_MODEL_FROM_DATABASE=THUNDERX MIO-BOOT Controller
+
+pci:v0000177Dd0000A012*
+ ID_MODEL_FROM_DATABASE=THUNDERX TWSI / I2C Controller
+
+pci:v0000177Dd0000A013*
+ ID_MODEL_FROM_DATABASE=THUNDERX CCPI (Multi-node connect)
+
+pci:v0000177Dd0000A014*
+ ID_MODEL_FROM_DATABASE=THUNDERX Voltage Regulator Module
+
+pci:v0000177Dd0000A015*
+ ID_MODEL_FROM_DATABASE=THUNDERX PCIe Switch Logic Interface
+
+pci:v0000177Dd0000A016*
+ ID_MODEL_FROM_DATABASE=THUNDERX Key Memory
+
+pci:v0000177Dd0000A017*
+ ID_MODEL_FROM_DATABASE=THUNDERX GTI (Global System Timers)
+
+pci:v0000177Dd0000A018*
+ ID_MODEL_FROM_DATABASE=THUNDERX Random Number Generator
+
+pci:v0000177Dd0000A019*
+ ID_MODEL_FROM_DATABASE=THUNDERX DFA
+
+pci:v0000177Dd0000A01A*
+ ID_MODEL_FROM_DATABASE=THUNDERX Zip Coprocessor
+
+pci:v0000177Dd0000A01B*
+ ID_MODEL_FROM_DATABASE=THUNDERX xHCI USB Controller
+
+pci:v0000177Dd0000A01C*
+ ID_MODEL_FROM_DATABASE=THUNDERX AHCI SATA Controller
+
+pci:v0000177Dd0000A01Csv0000177Dsd0000A11C*
+ ID_MODEL_FROM_DATABASE=THUNDERX AHCI SATA Controller (CN88XX AHCI SATA Controller)
+
+pci:v0000177Dd0000A01D*
+ ID_MODEL_FROM_DATABASE=THUNDERX RAID Coprocessor
+
+pci:v0000177Dd0000A01E*
+ ID_MODEL_FROM_DATABASE=THUNDERX Network Interface Controller
+
+pci:v0000177Dd0000A01F*
+ ID_MODEL_FROM_DATABASE=THUNDERX Traffic Network Switch
+
+pci:v0000177Dd0000A020*
+ ID_MODEL_FROM_DATABASE=THUNDERX PEM (PCI Express Interface)
+
+pci:v0000177Dd0000A021*
+ ID_MODEL_FROM_DATABASE=THUNDERX L2C (Level-2 Cache Controller)
+
+pci:v0000177Dd0000A022*
+ ID_MODEL_FROM_DATABASE=THUNDERX LMC (DRAM Controller)
+
+pci:v0000177Dd0000A023*
+ ID_MODEL_FROM_DATABASE=THUNDERX OCLA (On-Chip Logic Analyzer)
+
+pci:v0000177Dd0000A024*
+ ID_MODEL_FROM_DATABASE=THUNDERX OSM
+
+pci:v0000177Dd0000A025*
+ ID_MODEL_FROM_DATABASE=THUNDERX GSER (General Serializer/Deserializer)
+
+pci:v0000177Dd0000A026*
+ ID_MODEL_FROM_DATABASE=THUNDERX BGX (Common Ethernet Interface)
+
+pci:v0000177Dd0000A027*
+ ID_MODEL_FROM_DATABASE=THUNDERX IOBN
+
+pci:v0000177Dd0000A029*
+ ID_MODEL_FROM_DATABASE=THUNDERX NCSI (Network Controller Sideband Interface)
+
+pci:v0000177Dd0000A02A*
+ ID_MODEL_FROM_DATABASE=THUNDERX SGP
+
+pci:v0000177Dd0000A02B*
+ ID_MODEL_FROM_DATABASE=THUNDERX SMI / MDIO Controller
+
+pci:v0000177Dd0000A02C*
+ ID_MODEL_FROM_DATABASE=THUNDERX DAP (Debug Access Port)
+
+pci:v0000177Dd0000A02D*
+ ID_MODEL_FROM_DATABASE=THUNDERX PCIERC (PCIe Root Complex)
+
+pci:v0000177Dd0000A02E*
+ ID_MODEL_FROM_DATABASE=THUNDERX L2C-TAD
+
+pci:v0000177Dd0000A02F*
+ ID_MODEL_FROM_DATABASE=THUNDERX L2C-CBC
+
+pci:v0000177Dd0000A030*
+ ID_MODEL_FROM_DATABASE=THUNDERX L2C-MCI
+
+pci:v0000177Dd0000A031*
+ ID_MODEL_FROM_DATABASE=THUNDERX MIO-FUS (Fuse Access Controller)
+
+pci:v0000177Dd0000A032*
+ ID_MODEL_FROM_DATABASE=THUNDERX FUSF (Fuse Controller)
+
 pci:v00001787*
  ID_VENDOR_FROM_DATABASE=Hightech Information System Ltd.
 
@@ -53312,6 +55211,12 @@ pci:v00001BBFd00000003*
 pci:v00001BBFd00000004*
  ID_MODEL_FROM_DATABASE=MAX4
 
+pci:v00001BEE*
+ ID_VENDOR_FROM_DATABASE=IXXAT Automation GmbH
+
+pci:v00001BEEd00000003*
+ ID_MODEL_FROM_DATABASE=CAN-IB200/PCIe
+
 pci:v00001BF4*
  ID_VENDOR_FROM_DATABASE=VTI Instruments Corporation
 
@@ -58271,6 +60176,9 @@ pci:v00008086d000010D3sv0000103Csd00003250*
 pci:v00008086d000010D3sv00001043sd00008369*
  ID_MODEL_FROM_DATABASE=82574L Gigabit Network Connection (Motherboard)
 
+pci:v00008086d000010D3sv00001093sd000076E9*
+ ID_MODEL_FROM_DATABASE=82574L Gigabit Network Connection (PCIe-8233 Ethernet Adapter)
+
 pci:v00008086d000010D3sv000010A9sd00008029*
  ID_MODEL_FROM_DATABASE=82574L Gigabit Network Connection (Prism XL Single Port Gigabit Ethernet)
 
@@ -59339,6 +61247,18 @@ pci:v00008086d00001521sv0000108Esd00007B16*
 pci:v00008086d00001521sv0000108Esd00007B18*
  ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Quad Port GbE PCIe 2.0 Low Profile Adapter, UTP)
 
+pci:v00008086d00001521sv00001093sd00007648*
+ ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (PCIe-8237R Ethernet Adapter)
+
+pci:v00008086d00001521sv00001093sd00007649*
+ ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (PCIe-8236 Ethernet Adapter)
+
+pci:v00008086d00001521sv00001093sd000076B1*
+ ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (PCIe-8237R-S Ethernet Adapter)
+
+pci:v00008086d00001521sv00001093sd0000775B*
+ ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (PCIe-8237 Ethernet Adapter)
+
 pci:v00008086d00001521sv000010A9sd0000802A*
  ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (UV2-BaseIO dual-port GbE)
 
@@ -59498,6 +61418,9 @@ pci:v00008086d00001533*
 pci:v00008086d00001533sv0000103Csd00000003*
  ID_MODEL_FROM_DATABASE=I210 Gigabit Network Connection (Ethernet I210-T1 GbE NIC)
 
+pci:v00008086d00001533sv00001093sd00007706*
+ ID_MODEL_FROM_DATABASE=I210 Gigabit Network Connection (Compact Vision System Ethernet Adapter)
+
 pci:v00008086d00001533sv000010A9sd0000802C*
  ID_MODEL_FROM_DATABASE=I210 Gigabit Network Connection (UV300 BaseIO single-port GbE)
 
@@ -59703,10 +61626,10 @@ pci:v00008086d000015A3*
  ID_MODEL_FROM_DATABASE=Ethernet Connection (3) I218-V
 
 pci:v00008086d000015B7*
- ID_MODEL_FROM_DATABASE=Ethernet Connection (2) I219-V
+ ID_MODEL_FROM_DATABASE=Ethernet Connection (2) I219-LM
 
 pci:v00008086d000015B8*
- ID_MODEL_FROM_DATABASE=Ethernet Connection (2) I219-LM
+ ID_MODEL_FROM_DATABASE=Ethernet Connection (2) I219-V
 
 pci:v00008086d00001600*
  ID_MODEL_FROM_DATABASE=Broadwell-U Host Bridge -OPI
diff --git a/hwdb/20-usb-vendor-model.hwdb b/hwdb/20-usb-vendor-model.hwdb
index d87313c..ea1c3e3 100644
--- a/hwdb/20-usb-vendor-model.hwdb
+++ b/hwdb/20-usb-vendor-model.hwdb
@@ -30222,7 +30222,7 @@ usb:v0930p6544*
  ID_MODEL_FROM_DATABASE=Kingston DataTraveler 2.0 Stick (2GB)
 
 usb:v0930p6545*
- ID_MODEL_FROM_DATABASE=Kingston DataTraveler 102 Flash Drive / HEMA Flash Drive 2 GB / PNY Attache 4GB Stick
+ ID_MODEL_FROM_DATABASE=Kingston DataTraveler 102/2.0 / HEMA Flash Drive 2 GB / PNY Attache 4GB Stick
 
 usb:v0931*
  ID_VENDOR_FROM_DATABASE=Harmonic Data Systems, Ltd

commit 52257350c7d74203e045fd3798367057d24611bf
Author: Marcel Holtmann <marcel at holtmann.org>
Date:   Mon Sep 8 05:06:18 2014 +0200

    hwdb: Update database of Bluetooth company identifiers
    
    (cherry picked from commit de68938a2cb3ab535ebd9198723a651753c1a1df)

diff --git a/hwdb/20-bluetooth-vendor-product.hwdb b/hwdb/20-bluetooth-vendor-product.hwdb
index 9f3136a..14aee74 100644
--- a/hwdb/20-bluetooth-vendor-product.hwdb
+++ b/hwdb/20-bluetooth-vendor-product.hwdb
@@ -184,7 +184,7 @@ bluetooth:v003B*
  ID_VENDOR_FROM_DATABASE=Gennum Corporation
 
 bluetooth:v003C*
- ID_VENDOR_FROM_DATABASE=Research In Motion
+ ID_VENDOR_FROM_DATABASE=BlackBerry Limited (formerly Research In Motion)
 
 bluetooth:v003D*
  ID_VENDOR_FROM_DATABASE=IPextreme, Inc.
@@ -1073,3 +1073,78 @@ bluetooth:v0162*
 
 bluetooth:v0163*
  ID_VENDOR_FROM_DATABASE=PCH International
+
+bluetooth:v0164*
+ ID_VENDOR_FROM_DATABASE=Qingdao Yeelink Information Technology Co., Ltd.
+
+bluetooth:v0165*
+ ID_VENDOR_FROM_DATABASE=Milwaukee Tool (formerly Milwaukee Electric Tools)
+
+bluetooth:v0166*
+ ID_VENDOR_FROM_DATABASE=MISHIK Pte Ltd
+
+bluetooth:v0167*
+ ID_VENDOR_FROM_DATABASE=Bayer HealthCare
+
+bluetooth:v0168*
+ ID_VENDOR_FROM_DATABASE=Spicebox LLC
+
+bluetooth:v0169*
+ ID_VENDOR_FROM_DATABASE=emberlight
+
+bluetooth:v016A*
+ ID_VENDOR_FROM_DATABASE=Cooper-Atkins Corporation
+
+bluetooth:v016B*
+ ID_VENDOR_FROM_DATABASE=Qblinks
+
+bluetooth:v016C*
+ ID_VENDOR_FROM_DATABASE=MYSPHERA
+
+bluetooth:v016D*
+ ID_VENDOR_FROM_DATABASE=LifeScan Inc
+
+bluetooth:v016E*
+ ID_VENDOR_FROM_DATABASE=Volantic AB
+
+bluetooth:v016F*
+ ID_VENDOR_FROM_DATABASE=Podo Labs, Inc
+
+bluetooth:v0170*
+ ID_VENDOR_FROM_DATABASE=Roche Diabetes Care AG
+
+bluetooth:v0171*
+ ID_VENDOR_FROM_DATABASE=Amazon Fulfillment Service
+
+bluetooth:v0172*
+ ID_VENDOR_FROM_DATABASE=Connovate Technology Private Limited
+
+bluetooth:v0173*
+ ID_VENDOR_FROM_DATABASE=Kocomojo, LLC
+
+bluetooth:v0174*
+ ID_VENDOR_FROM_DATABASE=Everykey LLC
+
+bluetooth:v0175*
+ ID_VENDOR_FROM_DATABASE=Dynamic Controls
+
+bluetooth:v0176*
+ ID_VENDOR_FROM_DATABASE=SentriLock
+
+bluetooth:v0177*
+ ID_VENDOR_FROM_DATABASE=I-SYST inc.
+
+bluetooth:v0178*
+ ID_VENDOR_FROM_DATABASE=CASIO COMPUTER CO., LTD.
+
+bluetooth:v0179*
+ ID_VENDOR_FROM_DATABASE=LAPIS Semiconductor Co., Ltd.
+
+bluetooth:v017A*
+ ID_VENDOR_FROM_DATABASE=Telemonitor, Inc.
+
+bluetooth:v017B*
+ ID_VENDOR_FROM_DATABASE=taskit GmbH
+
+bluetooth:v017C*
+ ID_VENDOR_FROM_DATABASE=Daimler AG

commit 966f574e898e7b0920835f857e1aa6a53f454eb0
Author: Michael Biebl <biebl at debian.org>
Date:   Sat Sep 6 13:43:25 2014 +0200

    man: fix references to systemctl man page which is now in section 1
    
    https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=760613
    (cherry picked from commit 67826132adfdf626413f08fb664debd4a7ec35b7)

diff --git a/man/systemd.automount.xml b/man/systemd.automount.xml
index 3410512..f04a4a4 100644
--- a/man/systemd.automount.xml
+++ b/man/systemd.automount.xml
@@ -156,7 +156,7 @@
                   <title>See Also</title>
                   <para>
                           <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
-                          <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+                          <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
                           <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
                           <citerefentry><refentrytitle>systemd.mount</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
                           <citerefentry><refentrytitle>mount</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
diff --git a/man/systemd.device.xml b/man/systemd.device.xml
index 586473c..27d1a3e 100644
--- a/man/systemd.device.xml
+++ b/man/systemd.device.xml
@@ -176,7 +176,7 @@
                   <title>See Also</title>
                   <para>
                           <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
-                          <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+                          <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
                           <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
                           <citerefentry><refentrytitle>udev</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
                           <citerefentry><refentrytitle>systemd.directives</refentrytitle><manvolnum>7</manvolnum></citerefentry>
diff --git a/man/systemd.exec.xml b/man/systemd.exec.xml
index 37b9c4d..97f1fc3 100644
--- a/man/systemd.exec.xml
+++ b/man/systemd.exec.xml
@@ -1135,7 +1135,7 @@
                   <title>See Also</title>
                   <para>
                           <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
-                          <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+                          <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
                           <citerefentry><refentrytitle>journalctl</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
                           <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
                           <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
diff --git a/man/systemd.kill.xml b/man/systemd.kill.xml
index 1b10fba..d290978 100644
--- a/man/systemd.kill.xml
+++ b/man/systemd.kill.xml
@@ -176,7 +176,7 @@
                   <title>See Also</title>
                   <para>
                           <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
-                          <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+                          <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
                           <citerefentry><refentrytitle>journalctl</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
                           <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
                           <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
diff --git a/man/systemd.mount.xml b/man/systemd.mount.xml
index cadf950..bdfb0e1 100644
--- a/man/systemd.mount.xml
+++ b/man/systemd.mount.xml
@@ -316,7 +316,7 @@
                   <title>See Also</title>
                   <para>
                           <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
-                          <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+                          <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
                           <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
                           <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
                           <citerefentry><refentrytitle>systemd.kill</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
diff --git a/man/systemd.path.xml b/man/systemd.path.xml
index 8d86fca..c6d61cf 100644
--- a/man/systemd.path.xml
+++ b/man/systemd.path.xml
@@ -224,7 +224,7 @@
                   <title>See Also</title>
                   <para>
                           <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
-                          <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+                          <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
                           <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
                           <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
                           <citerefentry><refentrytitle>inotify</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
diff --git a/man/systemd.service.xml b/man/systemd.service.xml
index 279e415..5e673cf 100644
--- a/man/systemd.service.xml
+++ b/man/systemd.service.xml
@@ -1109,7 +1109,7 @@ ExecStart=/bin/echo $ONE $TWO ${TWO}</programlisting>
                   <title>See Also</title>
                   <para>
                           <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
-                          <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+                          <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
                           <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
                           <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
                           <citerefentry><refentrytitle>systemd.resource-control</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
diff --git a/man/systemd.snapshot.xml b/man/systemd.snapshot.xml
index 1bb074a..f08e38e 100644
--- a/man/systemd.snapshot.xml
+++ b/man/systemd.snapshot.xml
@@ -63,7 +63,7 @@
                 <para>Snapshots are not configured on disk but created
                 dynamically via <command>systemctl snapshot</command>
                 (see
-                <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+                <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
                 for details) or an equivalent command. When created,
                 they will automatically get dependencies on the
                 currently activated units. They act as saved
@@ -79,7 +79,7 @@
                   <title>See Also</title>
                   <para>
                           <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
-                          <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+                          <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
                           <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
                           <citerefentry><refentrytitle>systemd.directives</refentrytitle><manvolnum>7</manvolnum></citerefentry>
                   </para>
diff --git a/man/systemd.socket.xml b/man/systemd.socket.xml
index 699c5a3..4f07154 100644
--- a/man/systemd.socket.xml
+++ b/man/systemd.socket.xml
@@ -759,7 +759,7 @@
                   <title>See Also</title>
                   <para>
                           <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
-                          <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+                          <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
                           <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
                           <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
                           <citerefentry><refentrytitle>systemd.kill</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
diff --git a/man/systemd.swap.xml b/man/systemd.swap.xml
index 61901d2..62a4d08 100644
--- a/man/systemd.swap.xml
+++ b/man/systemd.swap.xml
@@ -204,7 +204,7 @@
                   <title>See Also</title>
                   <para>
                           <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
-                          <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+                          <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
                           <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
                           <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
                           <citerefentry><refentrytitle>systemd.kill</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
diff --git a/man/systemd.target.xml b/man/systemd.target.xml
index 15662a5..e2cdfd8 100644
--- a/man/systemd.target.xml
+++ b/man/systemd.target.xml
@@ -99,7 +99,7 @@
                   <title>See Also</title>
                   <para>
                           <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
-                          <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+                          <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
                           <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
                           <citerefentry><refentrytitle>systemd.special</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
                           <citerefentry><refentrytitle>systemd.directives</refentrytitle><manvolnum>7</manvolnum></citerefentry>
diff --git a/man/systemd.timer.xml b/man/systemd.timer.xml
index 659bc81..8693d74 100644
--- a/man/systemd.timer.xml
+++ b/man/systemd.timer.xml
@@ -204,7 +204,7 @@
                   <title>See Also</title>
                   <para>
                           <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
-                          <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+                          <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
                           <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
                           <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
                           <citerefentry><refentrytitle>systemd.time</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml
index b94555f..8dc6211 100644
--- a/man/systemd.unit.xml
+++ b/man/systemd.unit.xml
@@ -1346,7 +1346,7 @@
                 <title>See Also</title>
                 <para>
                         <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
-                        <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+                        <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
                         <citerefentry><refentrytitle>systemd.special</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
                         <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
                         <citerefentry><refentrytitle>systemd.socket</refentrytitle><manvolnum>5</manvolnum></citerefentry>,

commit ddcef72e03255c08e767d76a6016afc50130eafb
Author: Daniel Mack <daniel at zonque.org>
Date:   Fri Sep 5 13:48:05 2014 +0200

    exit-status: fix URL in comment
    
    The LSB sites have moved, so update the URL.
    
    (cherry picked from commit 5b89f67f03dce933c0b30408ce81e2ac539ed544)

diff --git a/src/shared/exit-status.h b/src/shared/exit-status.h
index babef31..94b406f 100644
--- a/src/shared/exit-status.h
+++ b/src/shared/exit-status.h
@@ -37,7 +37,7 @@ typedef enum ExitStatus {
          * use them here under the assumption that they hence are
          * unused by init scripts.
          *
-         * http://refspecs.freestandards.org/LSB_3.1.0/LSB-Core-generic/LSB-Core-generic/iniscrptact.html */
+         * http://refspecs.linuxfoundation.org/LSB_3.2.0/LSB-Core-generic/LSB-Core-generic/iniscrptact.html */
 
         EXIT_CHDIR = 200,
         EXIT_NICE,

commit 8a9472c69e3ccf36ebeca022f35bdaae2e6653b5
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Thu Sep 25 15:13:29 2014 +0200

    localed: check for partially matching converted keymaps
    
    If a user specifies multiple X11 keymaps, with a (at least the first
    one) nonempty variant, and we don't match the whole combo, use
    a converted keymap which includes the variant in preference to
    the default, variantless, keymap.
    
    E.g.: We would convert X11 config "layout=fr variant=mac" to "fr-mac",
    but "layout=fr,us variant=mac," to "fr", because we don't have a
    converted keymap which would match "fr,us", and we don't have a legacy
    mapping for "fr,us". This is unexpected, and if we cannot match both,
    it is still better to match the primary mapping and use "fr-mac".
    
    Conflicts:
            src/locale/localed.c
    
    (cherry picked from commit 78bd12a05a9252cf573da28394b23e2b891cbba8)
    
    Resolves: #1109145

diff --git a/src/locale/localed.c b/src/locale/localed.c
index 55c6a8d..01d254f 100644
--- a/src/locale/localed.c
+++ b/src/locale/localed.c
@@ -776,8 +776,10 @@ static int convert_vconsole_to_x11(DBusConnection *connection) {
                 int r;
 
                 r = write_data_x11();
-                if (r < 0)
+                if (r < 0) {
                         log_error("Failed to set X11 keyboard layout: %s", strerror(-r));
+                        return r;
+                }
 
                 log_info("Changed X11 keyboard layout to '%s' model '%s' variant '%s' options '%s'",
                          strempty(state.x11_layout),
@@ -807,14 +809,14 @@ static int convert_vconsole_to_x11(DBusConnection *connection) {
         return 0;
 }
 
-static int find_converted_keymap(char **new_keymap) {
+static int find_converted_keymap(const char *x11_layout, const char *x11_variant, char **new_keymap) {
         const char *dir;
         _cleanup_free_ char *n;
 
-        if (state.x11_variant)
-                n = strjoin(state.x11_layout, "-", state.x11_variant, NULL);
+        if (x11_variant)
+                n = strjoin(x11_layout, "-", x11_variant, NULL);
         else
-                n = strdup(state.x11_layout);
+                n = strdup(x11_layout);
         if (!n)
                 return -ENOMEM;
 
@@ -845,7 +847,7 @@ static int find_legacy_keymap(char **new_keymap) {
         _cleanup_fclose_ FILE *f;
         unsigned n = 0;
         unsigned best_matching = 0;
-
+        int r;
 
         f = fopen(SYSTEMD_KBD_MODEL_MAP, "re");
         if (!f)
@@ -854,7 +856,6 @@ static int find_legacy_keymap(char **new_keymap) {
         for (;;) {
                 _cleanup_strv_free_ char **a = NULL;
                 unsigned matching = 0;
-                int r;
 
                 r = read_next_mapping(f, &n, &a);
                 if (r < 0)
@@ -912,6 +913,25 @@ static int find_legacy_keymap(char **new_keymap) {
                 }
         }
 
+        if (best_matching < 10 && state.x11_layout) {
+                /* The best match is only the first part of the X11
+                 * keymap. Check if we have a converted map which
+                 * matches just the first layout.
+                 */
+                char *l, *v = NULL, *converted;
+
+                l = strndupa(state.x11_layout, strcspn(state.x11_layout, ","));
+                if (state.x11_variant)
+                        v = strndupa(state.x11_variant, strcspn(state.x11_variant, ","));
+                r = find_converted_keymap(l, v, &converted);
+                if (r < 0)
+                        return r;
+                if (r > 0) {
+                        free(*new_keymap);
+                        *new_keymap = converted;
+                }
+        }
+
         return 0;
 }
 
@@ -931,7 +951,7 @@ static int convert_x11_to_vconsole(DBusConnection *connection) {
         } else {
                 char *new_keymap = NULL;
 
-                r = find_converted_keymap(&new_keymap);
+                r = find_converted_keymap(state.x11_layout, state.x11_variant, &new_keymap);
                 if (r < 0)
                         return r;
                 else if (r == 0) {

commit 5c8826fbb4ad47c5e448228e3a7a50972be7acc0
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Thu Sep 25 15:13:28 2014 +0200

    localed: introduce helper function to simplify matching
    
    Conflicts:
            src/locale/localed.c
    
    (cherry picked from commit 81fd105a5f9762fa2f2e42bc949876e32b3a126f)
    
    Related: #1109145

diff --git a/src/locale/localed.c b/src/locale/localed.c
index ce6403d..55c6a8d 100644
--- a/src/locale/localed.c
+++ b/src/locale/localed.c
@@ -145,6 +145,12 @@ static int free_and_set(char **s, const char *v) {
         return 0;
 }
 
+static bool startswith_comma(const char *s, const char *prefix) {
+        const char *t;
+
+        return s && (t = startswith(s, prefix)) && (*t == ',');
+}
+
 static void free_data_locale(void) {
         int p;
 
@@ -861,26 +867,18 @@ static int find_legacy_keymap(char **new_keymap) {
                         /* If we got an exact match, this is best */
                         matching = 10;
                 else {
-                        size_t x;
-
-                        x = strcspn(state.x11_layout, ",");
-
                         /* We have multiple X layouts, look for an
                          * entry that matches our key with everything
                          * but the first layout stripped off. */
-                        if (x > 0 &&
-                            strlen(a[1]) == x &&
-                            strneq(state.x11_layout, a[1], x))
+                        if (startswith_comma(state.x11_layout, a[1]))
                                 matching = 5;
                         else  {
-                                size_t w;
+                                char *x;
 
                                 /* If that didn't work, strip off the
                                  * other layouts from the entry, too */
-                                w = strcspn(a[1], ",");
-
-                                if (x > 0 && x == w &&
-                                    memcmp(state.x11_layout, a[1], x) == 0)
+                                x = strndupa(a[1], strcspn(a[1], ","));
+                                if (startswith_comma(state.x11_layout, x))
                                         matching = 1;
                         }
                 }

commit cf3cc3fb38d35d8b94ad1c92922a1072f98d3c9d
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Thu Sep 25 15:13:27 2014 +0200

    localed: log locale/keymap changes in detail
    
    Converting X11 to legacy keymaps and back is a fucking mess. Let's
    make it at least possible to request detailed logs of what is being
    changed and why (LOG_DEBUG level).
    
    At LOG_INFO level, we would log the requested change of X11 or console
    keymap, but not the resulting change after conversion to console or X11.
    Make sure that every change of configuration on disk has a matching
    line in the logs.
    
    Conflicts:
            src/locale/localed.c
    
    (cherry picked from commit 502f961425f9dea1a85239766a3189695194da63)
    
    Related: #1109145

diff --git a/src/locale/localed.c b/src/locale/localed.c
index b9b98f4..ce6403d 100644
--- a/src/locale/localed.c
+++ b/src/locale/localed.c
@@ -337,9 +337,11 @@ static int read_data(void) {
         return r < 0 ? r : q < 0 ? q : p;
 }
 
-static int write_data_locale(void) {
+static int write_data_locale(char ***settings) {
         int r, p;
-        char **l = NULL;
+        _cleanup_strv_free_ char **l = NULL;
+
+        /* Set values will be returned as strv in *settings on success. */
 
         r = load_env_file("/etc/locale.conf", NULL, &l);
         if (r < 0 && r != -ENOENT)
@@ -355,14 +357,12 @@ static int write_data_locale(void) {
                         continue;
                 }
 
-                if (asprintf(&t, "%s=%s", names[p], data[p]) < 0) {
-                        strv_free(l);
+                if (asprintf(&t, "%s=%s", names[p], data[p]) < 0)
                         return -ENOMEM;
-                }
+
 
                 u = strv_env_set(l, t);
                 free(t);
-                strv_free(l);
 
                 if (!u)
                         return -ENOMEM;
@@ -371,8 +371,6 @@ static int write_data_locale(void) {
         }
 
         if (strv_isempty(l)) {
-                strv_free(l);
-
                 if (unlink("/etc/locale.conf") < 0)
                         return errno == ENOENT ? 0 : -errno;
 
@@ -380,7 +378,11 @@ static int write_data_locale(void) {
         }
 
         r = write_env_file_label("/etc/locale.conf", l);
-        strv_free(l);
+        if (r < 0)
+                return r;
+
+        *settings = l;
+        l = NULL;
 
         return r;
 }
@@ -771,6 +773,12 @@ static int convert_vconsole_to_x11(DBusConnection *connection) {
                 if (r < 0)
                         log_error("Failed to set X11 keyboard layout: %s", strerror(-r));
 
+                log_info("Changed X11 keyboard layout to '%s' model '%s' variant '%s' options '%s'",
+                         strempty(state.x11_layout),
+                         strempty(state.x11_model),
+                         strempty(state.x11_variant),
+                         strempty(state.x11_options));
+
                 changed = bus_properties_changed_new(
                                 "/org/freedesktop/locale1",
                                 "org.freedesktop.locale1",
@@ -787,7 +795,8 @@ static int convert_vconsole_to_x11(DBusConnection *connection) {
 
                 if (!b)
                         return -ENOMEM;
-        }
+        } else
+                log_debug("X11 keyboard layout was not modified.");
 
         return 0;
 }
@@ -805,13 +814,18 @@ static int find_converted_keymap(char **new_keymap) {
 
         NULSTR_FOREACH(dir, KBD_KEYMAP_DIRS) {
                 _cleanup_free_ char *p = NULL, *pz = NULL;
+                bool uncompressed;
 
                 p = strjoin(dir, "xkb/", n, ".map", NULL);
                 pz = strjoin(dir, "xkb/", n, ".map.gz", NULL);
                 if (!p || !pz)
                         return -ENOMEM;
 
-                if (access(p, F_OK) == 0 || access(pz, F_OK) == 0) {
+                uncompressed = access(p, F_OK) == 0;
+                if (uncompressed || access(pz, F_OK) == 0) {
+                        log_debug("Found converted keymap %s at %s",
+                                  n, uncompressed ? p : pz);
+
                         *new_keymap = n;
                         n = NULL;
                         return 1;
@@ -884,13 +898,19 @@ static int find_legacy_keymap(char **new_keymap) {
                 }
 
                 /* The best matching entry so far, then let's save that */
-                if (matching > best_matching) {
-                        best_matching = matching;
+                if (matching >= MAX(best_matching, 1u)) {
+                        log_debug("Found legacy keymap %s with score %u",
+                                  a[0], matching);
 
-                        free(*new_keymap);
-                        *new_keymap = strdup(a[0]);
-                        if (!*new_keymap)
-                                return -ENOMEM;
+                        if (matching > best_matching) {
+                                best_matching = matching;
+
+                                free(*new_keymap);
+                                *new_keymap = strdup(a[0]);
+
+                                if (!*new_keymap)
+                                        return -ENOMEM;
+                        }
                 }
         }
 
@@ -942,6 +962,9 @@ static int convert_x11_to_vconsole(DBusConnection *connection) {
                 if (r < 0)
                         log_error("Failed to set virtual console keymap: %s", strerror(-r));
 
+                log_info("Changed virtual console keymap to '%s' toggle '%s'",
+                         strempty(state.vc_keymap), strempty(state.vc_keymap_toggle));
+
                 changed = bus_properties_changed_new(
                                 "/org/freedesktop/locale1",
                                 "org.freedesktop.locale1",
@@ -958,7 +981,8 @@ static int convert_x11_to_vconsole(DBusConnection *connection) {
                         return -ENOMEM;
 
                 return load_vconsole_keymap(connection, NULL);
-        }
+        } else
+                log_debug("Virtual console keymap was not modified.");
 
         return 0;
 }
@@ -967,6 +991,7 @@ static int append_locale(DBusMessageIter *i, const char *property, void *userdat
         int r, c = 0, p;
         char **l;
 
+        /* Check whether a variable changed and if it is valid */
         l = new0(char*, _PROP_MAX+1);
         if (!l)
                 return -ENOMEM;
@@ -1085,6 +1110,7 @@ static DBusHandlerResult locale_message_handler(
                 }
 
                 if (modified) {
+                        _cleanup_strv_free_ char **settings = NULL;
 
                         r = verify_polkit(connection, message, "org.freedesktop.locale1.set-locale", interactive, NULL, &error);
                         if (r < 0) {
@@ -1126,7 +1152,7 @@ static DBusHandlerResult locale_message_handler(
 
                         simplify();
 
-                        r = write_data_locale();
+                        r = write_data_locale(&settings);
                         if (r < 0) {
                                 log_error("Failed to set locale: %s", strerror(-r));
                                 return bus_send_error_reply(connection, message, NULL, r);
@@ -1134,7 +1160,13 @@ static DBusHandlerResult locale_message_handler(
 
                         push_data(connection);
 
-                        log_info("Changed locale information.");
+                        if (settings) {
+                                _cleanup_free_ char *line;
+
+                                line = strv_join(settings, ", ");
+                                log_info("Changed locale to %s.", strnull(line));
+                        } else
+                                log_info("Changed locale to unset.");
 
                         changed = bus_properties_changed_new(
                                         "/org/freedesktop/locale1",
@@ -1142,8 +1174,10 @@ static DBusHandlerResult locale_message_handler(
                                         "Locale\0");
                         if (!changed)
                                 goto oom;
-                } else
+                } else {
+                        log_debug("Locale settings were not modified.");
                         strv_free(l);
+                }
 
         } else if (dbus_message_is_method_call(message, "org.freedesktop.locale1", "SetVConsoleKeyboard")) {
 
@@ -1187,7 +1221,8 @@ static DBusHandlerResult locale_message_handler(
                                 return bus_send_error_reply(connection, message, NULL, r);
                         }
 
-                        log_info("Changed virtual console keymap to '%s'", strempty(state.vc_keymap));
+                        log_info("Changed virtual console keymap to '%s' toggle '%s'",
+                                 strempty(state.vc_keymap), strempty(state.vc_keymap_toggle));
 
                         r = load_vconsole_keymap(connection, NULL);
                         if (r < 0)
@@ -1265,7 +1300,10 @@ static DBusHandlerResult locale_message_handler(
                                 return bus_send_error_reply(connection, message, NULL, r);
                         }
 
-                        log_info("Changed X11 keyboard layout to '%s'", strempty(state.x11_layout));
+                        log_info("Changed X11 keyboard layout to '%s' model '%s' variant '%s' options '%s'", strempty(state.x11_layout),
+                                 strempty(state.x11_model),
+                                 strempty(state.x11_variant),
+                                 strempty(state.x11_options));
 
                         changed = bus_properties_changed_new(
                                         "/org/freedesktop/locale1",

commit 4ec215c93c72178ef6d32b4e716325e0d07d88f6
Author: Thomas Hindoe Paaboel Andersen <phomes at gmail.com>
Date:   Sun Aug 31 23:13:12 2014 +0200

    config-parser: fix mem leak
    
    (cherry picked from commit 9e60277835e61597011358afcdbfb3dd712ce128)

diff --git a/src/shared/conf-parser.c b/src/shared/conf-parser.c
index 348a540..735f82d 100644
--- a/src/shared/conf-parser.c
+++ b/src/shared/conf-parser.c
@@ -675,6 +675,7 @@ int config_parse_strv(const char *unit,
 
                 if (!utf8_is_valid(n)) {
                         log_invalid_utf8(unit, LOG_ERR, filename, line, EINVAL, rvalue);
+                        free(n);
                         continue;
                 }
 

commit 6dae05001f2820cda115cee2ba8b44a0cc997d38
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Sat Aug 30 22:34:56 2014 -0400

    units: update rescue.service and emergency.service
    
    ^D works in emergency.service too. One needs to log in when in rescue
    mode too.
    
    (cherry picked from commit 42377d6bb771c31bff931f83163972fdcb224d0c)

diff --git a/units/emergency.service.in b/units/emergency.service.in
index 224a434..18973e7 100644
--- a/units/emergency.service.in
+++ b/units/emergency.service.in
@@ -17,7 +17,7 @@ Before=shutdown.target
 Environment=HOME=/root
 WorkingDirectory=/root
 ExecStartPre=-/bin/plymouth quit
-ExecStartPre=-/bin/echo -e 'Welcome to emergency mode! After logging in, type "journalctl -xb" to view\\nsystem logs, "systemctl reboot" to reboot, "systemctl default" to try again\\nto boot into default mode.'
+ExecStartPre=-/bin/echo -e 'Welcome to emergency mode! After logging in, type "journalctl -xb" to view\\nsystem logs, "systemctl reboot" to reboot, "systemctl default" or ^D to\\ntry again to boot into default mode.'
 ExecStart=-/bin/sh -c "/sbin/sulogin; @SYSTEMCTL@ --fail --no-block default"
 Type=idle
 StandardInput=tty-force
diff --git a/units/rescue.service.in b/units/rescue.service.in
index ef54369..fc93f1e 100644
--- a/units/rescue.service.in
+++ b/units/rescue.service.in
@@ -17,7 +17,7 @@ Before=shutdown.target
 Environment=HOME=/root
 WorkingDirectory=/root
 ExecStartPre=-/bin/plymouth quit
-ExecStartPre=-/bin/echo -e 'Welcome to rescue mode! Type "systemctl default" or ^D to enter default mode.\\nType "journalctl -xb" to view system logs. Type "systemctl reboot" to reboot.'
+ExecStartPre=-/bin/echo -e 'Welcome to emergency mode! After logging in, type "journalctl -xb" to view\\nsystem logs, "systemctl reboot" to reboot, "systemctl default" or ^D to\\nboot into default mode.'
 ExecStart=-/bin/sh -c "/sbin/sulogin; @SYSTEMCTL@ --fail --no-block default"
 Type=idle
 StandardInput=tty-force

commit 2442be32ad0b27e50792e454ea5a03759aeeabcb
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Sat Aug 30 23:59:37 2014 -0400

    units: m4 is not needed for rescue.service
    
    (cherry picked from commit 9c0804278b42261b4dce20ea0ea79bcbad291639)
    
    Conflicts:
    	Makefile.am
    	units/.gitignore

diff --git a/Makefile.am b/Makefile.am
index 205ea50..48300eb 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -475,7 +475,7 @@ EXTRA_DIST += \
 	units/serial-getty at .service.m4 \
 	units/console-shell.service.m4.in \
 	units/console-getty.service.m4.in \
-	units/rescue.service.m4.in \
+	units/rescue.service.in \
 	units/systemd-initctl.service.in \
 	units/systemd-shutdownd.service.in \
 	units/systemd-remount-fs.service.in \
@@ -510,8 +510,7 @@ EXTRA_DIST += \
 
 CLEANFILES += \
 	units/console-shell.service.m4 \
-	units/console-getty.service.m4 \
-	units/rescue.service.m4
+	units/console-getty.service.m4
 
 if HAVE_SYSV_COMPAT
 nodist_systemunit_DATA += \
diff --git a/units/.gitignore b/units/.gitignore
index 9c65075..ea99dfb 100644
--- a/units/.gitignore
+++ b/units/.gitignore
@@ -19,7 +19,6 @@
 /systemd-sysctl.service
 /systemd-ask-password-console.service
 /rescue.service
-/rescue.service.m4
 /systemd-ask-password-wall.service
 /systemd-quotacheck.service
 /quotaon.service
diff --git a/units/rescue.service.in b/units/rescue.service.in
new file mode 100644
index 0000000..ef54369
--- /dev/null
+++ b/units/rescue.service.in
@@ -0,0 +1,28 @@
+#  This file is part of systemd.
+#
+#  systemd is free software; you can redistribute it and/or modify it
+#  under the terms of the GNU Lesser General Public License as published by
+#  the Free Software Foundation; either version 2.1 of the License, or
+#  (at your option) any later version.
+
+[Unit]
+Description=Rescue Shell
+Documentation=man:sulogin(8)
+DefaultDependencies=no
+Conflicts=shutdown.target
+After=sysinit.target plymouth-start.service
+Before=shutdown.target
+
+[Service]
+Environment=HOME=/root
+WorkingDirectory=/root
+ExecStartPre=-/bin/plymouth quit
+ExecStartPre=-/bin/echo -e 'Welcome to rescue mode! Type "systemctl default" or ^D to enter default mode.\\nType "journalctl -xb" to view system logs. Type "systemctl reboot" to reboot.'
+ExecStart=-/bin/sh -c "/sbin/sulogin; @SYSTEMCTL@ --fail --no-block default"
+Type=idle
+StandardInput=tty-force
+StandardOutput=inherit
+StandardError=inherit
+KillMode=process
+IgnoreSIGPIPE=no
+SendSIGHUP=yes
diff --git a/units/rescue.service.m4.in b/units/rescue.service.m4.in
deleted file mode 100644
index ef54369..0000000
--- a/units/rescue.service.m4.in
+++ /dev/null
@@ -1,28 +0,0 @@
-#  This file is part of systemd.
-#
-#  systemd is free software; you can redistribute it and/or modify it
-#  under the terms of the GNU Lesser General Public License as published by
-#  the Free Software Foundation; either version 2.1 of the License, or
-#  (at your option) any later version.
-
-[Unit]
-Description=Rescue Shell
-Documentation=man:sulogin(8)
-DefaultDependencies=no
-Conflicts=shutdown.target
-After=sysinit.target plymouth-start.service
-Before=shutdown.target
-
-[Service]
-Environment=HOME=/root
-WorkingDirectory=/root
-ExecStartPre=-/bin/plymouth quit
-ExecStartPre=-/bin/echo -e 'Welcome to rescue mode! Type "systemctl default" or ^D to enter default mode.\\nType "journalctl -xb" to view system logs. Type "systemctl reboot" to reboot.'
-ExecStart=-/bin/sh -c "/sbin/sulogin; @SYSTEMCTL@ --fail --no-block default"
-Type=idle
-StandardInput=tty-force
-StandardOutput=inherit
-StandardError=inherit
-KillMode=process
-IgnoreSIGPIPE=no
-SendSIGHUP=yes

commit 91d19d0fcca359e1b2c52a6ed8e695c6a636ed36
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Sat Aug 30 22:33:40 2014 -0400

    units: make emergency.service conflict with rescue.service
    
    They both use StandardInput=tty-force so they cannot be run
    concurrently.
    
    https://bugs.freedesktop.org/show_bug.cgi?id=82778
    https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=757072
    (cherry picked from commit 87502e5868a8dbe2fda9a8e66a37ed6996646ef8)

diff --git a/units/emergency.service.in b/units/emergency.service.in
index 91fc1bb..224a434 100644
--- a/units/emergency.service.in
+++ b/units/emergency.service.in
@@ -10,6 +10,7 @@ Description=Emergency Shell
 Documentation=man:sulogin(8)
 DefaultDependencies=no
 Conflicts=shutdown.target
+Conflicts=rescue.service
 Before=shutdown.target
 
 [Service]

commit c6788cd5614de5925dbd03fec854c9cdfef7556d
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Tue Aug 26 23:54:31 2014 -0400

    sd-journal: verify that object start with the field name
    
    If the journal is corrupted, we might return an object that does
    not start with the expected field name and/or is shorter than it
    should.
    
    (cherry picked from commit 0f99f74a14ef193c1ebde687c5cc76e1d67b85ef)

diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
index 2d79dce..db2b77c 100644
--- a/src/journal/journal-file.c
+++ b/src/journal/journal-file.c
@@ -419,7 +419,6 @@ int journal_file_move_to_object(JournalFile *f, int type, uint64_t offset, Objec
         if (!VALID64(offset))
                 return -EFAULT;
 
-
         r = journal_file_move_to(f, type_to_context(type), false, offset, sizeof(ObjectHeader), &t);
         if (r < 0)
                 return r;
diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c
index 3840ee4..311eb81 100644
--- a/src/journal/sd-journal.c
+++ b/src/journal/sd-journal.c
@@ -2598,6 +2598,21 @@ _public_ int sd_journal_enumerate_unique(sd_journal *j, const void **data, size_
                 if (r < 0)
                         return r;
 
+                /* Check if we have at least the field name and "=". */
+                if (ol <= k) {
+                        log_debug("%s:offset " OFSfmt ": object has size %zu, expected at least %zu",
+                                  j->unique_file->path, j->unique_offset,
+                                  ol, k + 1);
+                        return -EBADMSG;
+                }
+
+                if (memcmp(odata, j->unique_field, k) || ((const char*) odata)[k] != '=') {
+                        log_debug("%s:offset " OFSfmt ": object does not start with \"%s=\"",
+                                  j->unique_file->path, j->unique_offset,
+                                  j->unique_field);
+                        return -EBADMSG;
+                }
+
                 /* OK, now let's see if we already returned this data
                  * object by checking if it exists in the earlier
                  * traversed files. */

commit 2fe4cab3caa7bae6184b2586edaa93577ece0354
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Sat Aug 23 22:35:03 2014 -0400

    sd-journal: properly convert object->size on big endian
    
    mmap code crashes when attempting to map an object of zero size.
    
    https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=758392
    https://bugs.freedesktop.org/show_bug.cgi?id=82894
    (cherry picked from commit 57cd09acf2c63a414aa2131c00a2b3f600eb0133)

diff --git a/src/journal/journal-file.h b/src/journal/journal-file.h
index 2e06b57..d202eb5 100644
--- a/src/journal/journal-file.h
+++ b/src/journal/journal-file.h
@@ -211,14 +211,15 @@ static unsigned type_to_context(int type) {
 
 static inline int journal_file_object_keep(JournalFile *f, Object *o, uint64_t offset) {
         unsigned context = type_to_context(o->object.type);
+        uint64_t s = le64toh(o->object.size);
 
         return mmap_cache_get(f->mmap, f->fd, f->prot, context, true,
-                              offset, o->object.size, &f->last_stat, NULL);
+                              offset, s, &f->last_stat, NULL);
 }
 
 static inline int journal_file_object_release(JournalFile *f, Object *o, uint64_t offset) {
         unsigned context = type_to_context(o->object.type);
+        uint64_t s = le64toh(o->object.size);
 
-        return mmap_cache_release(f->mmap, f->fd, f->prot, context,
-                                  offset, o->object.size);
+        return mmap_cache_release(f->mmap, f->fd, f->prot, context, offset, s);
 }

commit 33bcf8ea5c1e75fa7599fb543b219dae9116275d
Author: Andrei Borzenkov <arvidjaar at gmail.com>
Date:   Sun Aug 24 11:11:33 2014 +0400

    Document "...|..." udev match syntax
    
    (cherry picked from commit bf2e0ece853b888eb37055849975ddeab3f5f051)

diff --git a/man/udev.xml b/man/udev.xml
index 25a3ea9..f713398 100644
--- a/man/udev.xml
+++ b/man/udev.xml
@@ -272,8 +272,8 @@
         </varlistentry>
       </variablelist>
 
-      <para>Most of the fields support shell glob pattern matching. The following
-      pattern characters are supported:</para>
+      <para>Most of the fields support shell glob pattern matching and
+      alternate patterns. The following special characters are supported:</para>
       <variablelist>
         <varlistentry>
           <term><literal>*</literal></term>
@@ -300,6 +300,14 @@
             any characters not enclosed are matched.</para>
           </listitem>
         </varlistentry>
+        <varlistentry>
+          <term><literal>|</literal></term>
+          <listitem>
+            <para>Separates alternative patterns. For example, the pattern string
+            <literal>abc|x*</literal> would match either <literal>abc</literal>
+            or <literal>x*</literal>.</para>
+          </listitem>
+        </varlistentry>
       </variablelist>
 
       <para>The following keys can get values assigned:</para>

commit 8e2990858e1166783f139e4f26d9fe95b144863a
Author: Kay Sievers <kay at vrfy.org>
Date:   Tue Aug 26 18:27:36 2014 +0200

    udev: hwdb - do not look at "usb_device" parents
    
    Based on a patch from Simon McVittie <simon.mcvittie at collabora.co.uk>.
    
    Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=758050
    (cherry picked from commit 77cf759ea05bea476cdcb8d0dcd04c4e6fb3b2ff)

diff --git a/src/udev/udev-builtin-hwdb.c b/src/udev/udev-builtin-hwdb.c
index d6aa96b..bb7e587 100644
--- a/src/udev/udev-builtin-hwdb.c
+++ b/src/udev/udev-builtin-hwdb.c
@@ -88,9 +88,10 @@ static int udev_builtin_hwdb_search(struct udev_device *dev, struct udev_device
                                     const char *filter, bool test) {
         struct udev_device *d;
         char s[16];
-        int n = 0;
+        bool last = false;
+        int r = 0;
 
-        for (d = srcdev; d; d = udev_device_get_parent(d)) {
+        for (d = srcdev; d && !last; d = udev_device_get_parent(d)) {
                 const char *dsubsys;
                 const char *modalias = NULL;
 
@@ -104,19 +105,24 @@ static int udev_builtin_hwdb_search(struct udev_device *dev, struct udev_device
 
                 modalias = udev_device_get_property_value(d, "MODALIAS");
 
-                /* the usb_device does not have a modalias, compose one */
-                if (!modalias && streq(dsubsys, "usb"))
-                        modalias = modalias_usb(d, s, sizeof(s));
+                if (streq(dsubsys, "usb") && streq_ptr(udev_device_get_devtype(d), "usb_device")) {
+                        /* if the usb_device does not have a modalias, compose one */
+                        if (!modalias)
+                                modalias = modalias_usb(d, s, sizeof(s));
+
+                        /* avoid looking at any parent device, they are usually just a USB hub */
+                        last = true;
+                }
 
                 if (!modalias)
                         continue;
 
-                n = udev_builtin_hwdb_lookup(dev, prefix, modalias, filter, test);
-                if (n > 0)
+                r = udev_builtin_hwdb_lookup(dev, prefix, modalias, filter, test);
+                if (r > 0)
                         break;
         }
 
-        return n;
+        return r;
 }
 
 static int builtin_hwdb(struct udev_device *dev, int argc, char *argv[], bool test) {

commit 2865a5d66d112e05deea087ef03e1dda1ff14c05
Author: Lukas Nykryn <lnykryn at redhat.com>
Date:   Tue Aug 19 20:53:29 2014 +0200

    systemctl: fail in the case that no unit files were found
    
    Previously systemctl died with message
    
    -bash-4.2# systemctl --root /rawhi list-unit-files
    (src/systemctl/systemctl.c:868) Out of memory.
    
    in the case that no unit files were found in the --root
    or the directory did not exist.
    
    So lets return ENOENT in the case that --root does not exist
    and empty list in the case that there are no unit files.
    
    (cherry picked from commit fdbdf6ec29bda40763d7d3e7bb2a63e2f5d60c4c)

diff --git a/src/shared/install.c b/src/shared/install.c
index f40be79..ca3595a 100644
--- a/src/shared/install.c
+++ b/src/shared/install.c
@@ -1921,6 +1921,12 @@ int unit_file_get_list(
         if (root_dir && scope != UNIT_FILE_SYSTEM)
                 return -EINVAL;
 
+        if (root_dir) {
+                r = access(root_dir, F_OK);
+                if (r < 0)
+                        return -errno;
+        }
+
         r = lookup_paths_init_from_scope(&paths, scope, root_dir);
         if (r < 0)
                 return r;
diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
index 517257b..7bb3d0c 100644
--- a/src/systemctl/systemctl.c
+++ b/src/systemctl/systemctl.c
@@ -865,6 +865,10 @@ static int list_unit_files(DBusConnection *bus, char **args) {
                 }
 
                 n_units = hashmap_size(h);
+
+                if (n_units == 0)
+                        return 0;
+
                 units = new(UnitFileList, n_units);
                 if (!units) {
                         unit_file_list_free(h);

commit ce6ad4396d8d8b44a16c0f4e17316ee37d6665cd
Author: Lennart Poettering <lennart at poettering.net>
Date:   Wed Aug 20 00:38:39 2014 +0200

    update hwdb
    
    (cherry picked from commit cccc74971fe3c853832d742a15eac94f365603b6)
    
    Conflicts:
    	hwdb/20-OUI.hwdb
    	hwdb/20-pci-vendor-model.hwdb
    	hwdb/20-usb-vendor-model.hwdb

diff --git a/hwdb/20-OUI.hwdb b/hwdb/20-OUI.hwdb
index 97f1e6b..e0c5fed 100644
--- a/hwdb/20-OUI.hwdb
+++ b/hwdb/20-OUI.hwdb
@@ -21371,7 +21371,7 @@ OUI:000A2F*
  ID_OUI_FROM_DATABASE=Artnix Inc.
 
 OUI:000A30*
- ID_OUI_FROM_DATABASE=Johnson Controls-ASG
+ ID_OUI_FROM_DATABASE=Visteon Corporation
 
 OUI:000A31*
  ID_OUI_FROM_DATABASE=HCV Consulting
@@ -23288,7 +23288,7 @@ OUI:000CB1*
  ID_OUI_FROM_DATABASE=Salland Engineering (Europe) BV
 
 OUI:000CB2*
- ID_OUI_FROM_DATABASE=Comstar Co., Ltd.
+ ID_OUI_FROM_DATABASE=UNION co., ltd.
 
 OUI:000CB3*
  ID_OUI_FROM_DATABASE=ROUND Co.,Ltd.
@@ -23528,7 +23528,7 @@ OUI:000D01*
  ID_OUI_FROM_DATABASE=P&E Microcomputer Systems, Inc.
 
 OUI:000D02*
- ID_OUI_FROM_DATABASE=NEC AccessTechnica, Ltd.
+ ID_OUI_FROM_DATABASE=NEC Platforms, Ltd.
 
 OUI:000D03*
  ID_OUI_FROM_DATABASE=Matrics, Inc.
@@ -30311,7 +30311,7 @@ OUI:0015DF*
  ID_OUI_FROM_DATABASE=Clivet S.p.A.
 
 OUI:0015E0*
- ID_OUI_FROM_DATABASE=ST-Ericsson
+ ID_OUI_FROM_DATABASE=Ericsson
 
 OUI:0015E1*
  ID_OUI_FROM_DATABASE=Picochip Ltd
@@ -32375,7 +32375,7 @@ OUI:001893*
  ID_OUI_FROM_DATABASE=SHENZHEN PHOTON BROADBAND TECHNOLOGY CO.,LTD
 
 OUI:001894*
- ID_OUI_FROM_DATABASE=zimocom
+ ID_OUI_FROM_DATABASE=NPCore, Inc.
 
 OUI:001895*
  ID_OUI_FROM_DATABASE=Hansun Technologies Inc.
@@ -33887,7 +33887,7 @@ OUI:001A8B*
  ID_OUI_FROM_DATABASE=CHUNIL ELECTRIC IND., CO.
 
 OUI:001A8C*
- ID_OUI_FROM_DATABASE=Astaro AG
+ ID_OUI_FROM_DATABASE=Sophos Ltd
 
 OUI:001A8D*
  ID_OUI_FROM_DATABASE=AVECS Bergen GmbH
@@ -34652,7 +34652,7 @@ OUI:001B8A*
  ID_OUI_FROM_DATABASE=2M Electronic A/S
 
 OUI:001B8B*
- ID_OUI_FROM_DATABASE=NEC AccessTechnica, Ltd.
+ ID_OUI_FROM_DATABASE=NEC Platforms, Ltd.
 
 OUI:001B8C*
  ID_OUI_FROM_DATABASE=JMicron Technology Corp.
@@ -35066,7 +35066,7 @@ OUI:001C14*
  ID_OUI_FROM_DATABASE=VMware, Inc
 
 OUI:001C15*
- ID_OUI_FROM_DATABASE=TXP Corporation
+ ID_OUI_FROM_DATABASE=iPhotonix LLC
 
 OUI:001C16*
  ID_OUI_FROM_DATABASE=ThyssenKrupp Elevator
@@ -35975,7 +35975,7 @@ OUI:001D43*
  ID_OUI_FROM_DATABASE=Shenzhen G-link Digital Technology Co., Ltd.
 
 OUI:001D44*
- ID_OUI_FROM_DATABASE=KROHNE
+ ID_OUI_FROM_DATABASE=KROHNE Messtechnik GmbH
 
 OUI:001D45*
  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
@@ -36863,7 +36863,7 @@ OUI:001E6B*
  ID_OUI_FROM_DATABASE=Cisco SPVTG
 
 OUI:001E6C*
- ID_OUI_FROM_DATABASE=Carbon Mountain LLC
+ ID_OUI_FROM_DATABASE=Opaque Systems
 
 OUI:001E6D*
  ID_OUI_FROM_DATABASE=IT R&D Center
@@ -38471,7 +38471,7 @@ OUI:002084*
  ID_OUI_FROM_DATABASE=OCE PRINTING SYSTEMS, GMBH
 
 OUI:002085*
- ID_OUI_FROM_DATABASE=EXIDE ELECTRONICS
+ ID_OUI_FROM_DATABASE=Eaton Corporation
 
 OUI:002086*
  ID_OUI_FROM_DATABASE=MICROTECH ELECTRONICS LIMITED
@@ -44312,7 +44312,7 @@ OUI:003A9C*
  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
 
 OUI:003A9D*
- ID_OUI_FROM_DATABASE=NEC AccessTechnica, Ltd.
+ ID_OUI_FROM_DATABASE=NEC Platforms, Ltd.
 
 OUI:003AAF*
  ID_OUI_FROM_DATABASE=BlueBit Ltd.
@@ -46394,7 +46394,7 @@ OUI:0060B8*
  ID_OUI_FROM_DATABASE=CORELIS Inc.
 
 OUI:0060B9*
- ID_OUI_FROM_DATABASE=NEC Infrontia Corporation
+ ID_OUI_FROM_DATABASE=NEC Platforms, Ltd
 
 OUI:0060BA*
  ID_OUI_FROM_DATABASE=SAHARA NETWORKS, INC.
@@ -49015,6 +49015,9 @@ OUI:00A1DE*
 OUI:00A2DA*
  ID_OUI_FROM_DATABASE=INAT GmbH
 
+OUI:00A2F5*
+ ID_OUI_FROM_DATABASE=Guangzhou Yuanyun Network Technology Co.,Ltd
+
 OUI:00A2FF*
  ID_OUI_FROM_DATABASE=abatec group AG
 
@@ -49036,6 +49039,9 @@ OUI:00AA70*
 OUI:00ACE0*
  ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
 
+OUI:00AEFA*
+ ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd.
+
 OUI:00B009*
  ID_OUI_FROM_DATABASE=Grass Valley Group
 
@@ -51595,6 +51601,9 @@ OUI:00E666*
 OUI:00E6D3*
  ID_OUI_FROM_DATABASE=NIXDORF COMPUTER CORP.
 
+OUI:00E6E8*
+ ID_OUI_FROM_DATABASE=Netzin Technology Corporation,.Ltd.
+
 OUI:00E8AB*
  ID_OUI_FROM_DATABASE=Meggitt Training Systems, Inc.
 
@@ -51610,9 +51619,15 @@ OUI:00F051*
 OUI:00F403*
  ID_OUI_FROM_DATABASE=Orbis Systems Oy
 
+OUI:00F46F*
+ ID_OUI_FROM_DATABASE=Samsung Elec Co.,Ltd
+
 OUI:00F4B9*
  ID_OUI_FROM_DATABASE=Apple
 
+OUI:00F76F*
+ ID_OUI_FROM_DATABASE=Apple
+
 OUI:00F860*
  ID_OUI_FROM_DATABASE=PT. Panggung Electric Citrabuana
 
@@ -51844,6 +51859,12 @@ OUI:0494A1*
 OUI:0498F3*
  ID_OUI_FROM_DATABASE=ALPS Electric Co,. Ltd.
 
+OUI:0499E6*
+ ID_OUI_FROM_DATABASE=Shenzhen Yoostar Technology Co., Ltd
+
+OUI:049B9C*
+ ID_OUI_FROM_DATABASE=Eadingcore  Intelligent Technology Co., Ltd.
+
 OUI:049C62*
  ID_OUI_FROM_DATABASE=BMT Medical Technology s.r.o.
 
@@ -52423,6 +52444,9 @@ OUI:0808C2*
 OUI:0808EA*
  ID_OUI_FROM_DATABASE=AMSC
 
+OUI:0809B6*
+ ID_OUI_FROM_DATABASE=Masimo Corp
+
 OUI:080C0B*
  ID_OUI_FROM_DATABASE=SysMik GmbH Dresden
 
@@ -52438,6 +52462,9 @@ OUI:080EA8*
 OUI:080FFA*
  ID_OUI_FROM_DATABASE=KSP INC.
 
+OUI:08115E*
+ ID_OUI_FROM_DATABASE=Bitel Co., Ltd.
+
 OUI:081196*
  ID_OUI_FROM_DATABASE=Intel Corporate
 
@@ -52597,6 +52624,9 @@ OUI:087D21*
 OUI:088039*
  ID_OUI_FROM_DATABASE=Cisco SPVTG
 
+OUI:0881BC*
+ ID_OUI_FROM_DATABASE=HongKong Ipro Technology Co., Limited
+
 OUI:0881F4*
  ID_OUI_FROM_DATABASE=Juniper Networks
 
@@ -52693,9 +52723,15 @@ OUI:08E5DA*
 OUI:08E672*
  ID_OUI_FROM_DATABASE=JEBSEE ELECTRONICS CO.,LTD.
 
+OUI:08E84F*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
 OUI:08EA44*
  ID_OUI_FROM_DATABASE=Aerohive Networks, Inc.
 
+OUI:08EB29*
+ ID_OUI_FROM_DATABASE=Jiangsu Huitong Group Co.,Ltd.
+
 OUI:08EB74*
  ID_OUI_FROM_DATABASE=Humax
 
@@ -52705,6 +52741,9 @@ OUI:08EBED*
 OUI:08EDB9*
  ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
 
+OUI:08EE8B*
+ ID_OUI_FROM_DATABASE=Samsung Elec Co.,Ltd
+
 OUI:08EF3B*
  ID_OUI_FROM_DATABASE=MCS Logic Inc.
 
@@ -52759,6 +52798,9 @@ OUI:0C17F1*
 OUI:0C191F*
  ID_OUI_FROM_DATABASE=Inform Electronik
 
+OUI:0C1DAF*
+ ID_OUI_FROM_DATABASE=Beijing Xiaomi communications co.,ltd
+
 OUI:0C1DC2*
  ID_OUI_FROM_DATABASE=SeAH Networks
 
@@ -52942,6 +52984,9 @@ OUI:0CAC05*
 OUI:0CAF5A*
  ID_OUI_FROM_DATABASE=GENUS POWER INFRASTRUCTURES LIMITED
 
+OUI:0CB319*
+ ID_OUI_FROM_DATABASE=Samsung Elec Co.,Ltd
+
 OUI:0CB4EF*
  ID_OUI_FROM_DATABASE=Digience Co.,Ltd.
 
@@ -53009,7 +53054,7 @@ OUI:0CD996*
  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
 
 OUI:0CD9C1*
- ID_OUI_FROM_DATABASE=Johnson Controls-ASG
+ ID_OUI_FROM_DATABASE=Visteon Corporation
 
 OUI:0CDA41*
  ID_OUI_FROM_DATABASE=Hangzhou H3C Technologies Co., Limited
@@ -53080,6 +53125,9 @@ OUI:1001CA*
 OUI:1005CA*
  ID_OUI_FROM_DATABASE=Cisco
 
+OUI:1008B1*
+ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+
 OUI:10090C*
  ID_OUI_FROM_DATABASE=Janome Sewing Machine Co., Ltd.
 
@@ -53200,6 +53248,9 @@ OUI:104B46*
 OUI:104D77*
  ID_OUI_FROM_DATABASE=Innovative Computer Engineering
 
+OUI:104E07*
+ ID_OUI_FROM_DATABASE=Shanghai Genvision Industries Co.,Ltd
+
 OUI:105172*
  ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
 
@@ -53234,7 +53285,7 @@ OUI:1065CF*
  ID_OUI_FROM_DATABASE=IQSIM
 
 OUI:106682*
- ID_OUI_FROM_DATABASE=NEC AccessTechnica, Ltd.
+ ID_OUI_FROM_DATABASE=NEC Platforms, Ltd.
 
 OUI:10683F*
  ID_OUI_FROM_DATABASE=LG Electronics
@@ -53401,6 +53452,9 @@ OUI:10F96F*
 OUI:10F9EE*
  ID_OUI_FROM_DATABASE=Nokia Corporation
 
+OUI:10FACE*
+ ID_OUI_FROM_DATABASE=Reacheng Communication Technology Co.,Ltd
+
 OUI:10FBF0*
  ID_OUI_FROM_DATABASE=KangSheng LTD.
 
@@ -53668,6 +53722,9 @@ OUI:14F42A*
 OUI:14F65A*
  ID_OUI_FROM_DATABASE=Xiaomi inc.
 
+OUI:14F893*
+ ID_OUI_FROM_DATABASE=Wuhan FiberHome Digital Technology Co.,Ltd.
+
 OUI:14FEAF*
  ID_OUI_FROM_DATABASE=SAGITTAR LIMITED
 
@@ -54190,6 +54247,9 @@ OUI:1C7C45*
 OUI:1C7CC7*
  ID_OUI_FROM_DATABASE=Coriant GmbH
 
+OUI:1C7E51*
+ ID_OUI_FROM_DATABASE=3bumen.com
+
 OUI:1C7EE5*
  ID_OUI_FROM_DATABASE=D-Link International
 
@@ -54220,6 +54280,9 @@ OUI:1C955D*
 OUI:1C959F*
  ID_OUI_FROM_DATABASE=Veethree Electronics And Marine LLC
 
+OUI:1C965A*
+ ID_OUI_FROM_DATABASE=Weifang goertek Electronics CO.,LTD
+
 OUI:1C973D*
  ID_OUI_FROM_DATABASE=PRICOM Design
 
@@ -54229,6 +54292,9 @@ OUI:1C994C*
 OUI:1C9C26*
  ID_OUI_FROM_DATABASE=Zoovel Technologies
 
+OUI:1C9ECB*
+ ID_OUI_FROM_DATABASE=Beijing Nari Smartchip Microelectronics Company Limited
+
 OUI:1CA2B1*
  ID_OUI_FROM_DATABASE=ruwido austria gmbh
 
@@ -54254,7 +54320,7 @@ OUI:1CB094*
  ID_OUI_FROM_DATABASE=HTC Corporation
 
 OUI:1CB17F*
- ID_OUI_FROM_DATABASE=NEC AccessTechnica, Ltd.
+ ID_OUI_FROM_DATABASE=NEC Platforms, Ltd.
 
 OUI:1CB243*
  ID_OUI_FROM_DATABASE=TDC A/S
@@ -54478,6 +54544,9 @@ OUI:2074CF*
 OUI:207600*
  ID_OUI_FROM_DATABASE=Actiontec Electronics, Inc
 
+OUI:207693*
+ ID_OUI_FROM_DATABASE=Lenovo (Beijing) Limited.
+
 OUI:207C8F*
  ID_OUI_FROM_DATABASE=Quanta Microsystems,Inc.
 
@@ -54766,6 +54835,9 @@ OUI:249442*
 OUI:249504*
  ID_OUI_FROM_DATABASE=SFR
 
+OUI:2497ED*
+ ID_OUI_FROM_DATABASE=Techvision Intelligent Technology Limited
+
 OUI:24A2E1*
  ID_OUI_FROM_DATABASE=Apple, Inc
 
@@ -55306,6 +55378,9 @@ OUI:2C27D7*
 OUI:2C282D*
  ID_OUI_FROM_DATABASE=BBK COMMUNICATIAO TECHNOLOGY CO.,LTD.
 
+OUI:2C2997*
+ ID_OUI_FROM_DATABASE=Microsoft Corporation
+
 OUI:2C2D48*
  ID_OUI_FROM_DATABASE=bct electronic GesmbH
 
@@ -55327,6 +55402,9 @@ OUI:2C36F8*
 OUI:2C3731*
  ID_OUI_FROM_DATABASE=ShenZhen Yifang Digital Technology Co.,LTD
 
+OUI:2C3796*
+ ID_OUI_FROM_DATABASE=CYBO CO.,LTD.
+
 OUI:2C3996*
  ID_OUI_FROM_DATABASE=SAGEMCOM
 
@@ -55360,6 +55438,9 @@ OUI:2C441B*
 OUI:2C44FD*
  ID_OUI_FROM_DATABASE=Hewlett Packard
 
+OUI:2C5089*
+ ID_OUI_FROM_DATABASE=Shenzhen Kaixuan Visual Technology Co.,Limited
+
 OUI:2C534A*
  ID_OUI_FROM_DATABASE=Shenzhen Winyao Electronic Limited
 
@@ -55390,6 +55471,9 @@ OUI:2C5D93*
 OUI:2C5FF3*
  ID_OUI_FROM_DATABASE=Pertronic Industries
 
+OUI:2C600C*
+ ID_OUI_FROM_DATABASE=QUANTA COMPUTER INC.
+
 OUI:2C625A*
  ID_OUI_FROM_DATABASE=Finest Security Systems Co., Ltd
 
@@ -55549,12 +55633,18 @@ OUI:2CEDEB*
 OUI:2CEE26*
  ID_OUI_FROM_DATABASE=Petroleum Geo-Services
 
+OUI:2CF0EE*
+ ID_OUI_FROM_DATABASE=Apple
+
 OUI:2CF203*
  ID_OUI_FROM_DATABASE=EMKO ELEKTRONIK SAN VE TIC AS
 
 OUI:2CF4C5*
  ID_OUI_FROM_DATABASE=Avaya, Inc
 
+OUI:2CF7F1*
+ ID_OUI_FROM_DATABASE=Seeed Technology Inc.
+
 OUI:2CFAA2*
  ID_OUI_FROM_DATABASE=Alcatel-Lucent
 
@@ -55570,6 +55660,9 @@ OUI:300D2A*
 OUI:300ED5*
  ID_OUI_FROM_DATABASE=Hon Hai Precision Ind.Co.Ltd
 
+OUI:3010B3*
+ ID_OUI_FROM_DATABASE=Liteon Technology Corporation
+
 OUI:3010E4*
  ID_OUI_FROM_DATABASE=Apple, Inc.
 
@@ -55705,12 +55798,18 @@ OUI:306E5C*
 OUI:3071B2*
  ID_OUI_FROM_DATABASE=Hangzhou Prevail Optoelectronic Equipment Co.,LTD.
 
+OUI:307350*
+ ID_OUI_FROM_DATABASE=Inpeco SA
+
 OUI:307512*
  ID_OUI_FROM_DATABASE=Sony Mobile Communications AB
 
 OUI:30766F*
  ID_OUI_FROM_DATABASE=LG Electronics
 
+OUI:3077CB*
+ ID_OUI_FROM_DATABASE=Maike Industry(Shenzhen)CO.,LTD
+
 OUI:30786B*
  ID_OUI_FROM_DATABASE=TIANJIN Golden Pentagon Electronics Co., Ltd.
 
@@ -55831,6 +55930,9 @@ OUI:30F7D7*
 OUI:30F9ED*
  ID_OUI_FROM_DATABASE=Sony Corporation
 
+OUI:30FAB7*
+ ID_OUI_FROM_DATABASE=Tunai Creative
+
 OUI:30FD11*
  ID_OUI_FROM_DATABASE=MACROTECH (USA) INC.
 
@@ -55897,6 +55999,9 @@ OUI:343111*
 OUI:3431C4*
  ID_OUI_FROM_DATABASE=AVM GmbH
 
+OUI:3438AF*
+ ID_OUI_FROM_DATABASE=Inlab Software GmbH
+
 OUI:3440B5*
  ID_OUI_FROM_DATABASE=IBM
 
@@ -55909,6 +56014,9 @@ OUI:344B3D*
 OUI:344B50*
  ID_OUI_FROM_DATABASE=ZTE Corporation
 
+OUI:344DEA*
+ ID_OUI_FROM_DATABASE=zte corporation
+
 OUI:344DF7*
  ID_OUI_FROM_DATABASE=LG Electronics
 
@@ -55942,6 +56050,9 @@ OUI:346178*
 OUI:346288*
  ID_OUI_FROM_DATABASE=Cisco
 
+OUI:3464A9*
+ ID_OUI_FROM_DATABASE=Hewlett Packard
+
 OUI:34684A*
  ID_OUI_FROM_DATABASE=Teraworks Co., Ltd.
 
@@ -56152,6 +56263,9 @@ OUI:34E2FD*
 OUI:34E42A*
  ID_OUI_FROM_DATABASE=Automatic Bar Controls Inc.
 
+OUI:34E6AD*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
 OUI:34EF44*
  ID_OUI_FROM_DATABASE=2Wire
 
@@ -56200,6 +56314,9 @@ OUI:380B40*
 OUI:380DD4*
  ID_OUI_FROM_DATABASE=Primax Electronics LTD.
 
+OUI:380E7B*
+ ID_OUI_FROM_DATABASE=V.P.S. Thai Co., Ltd
+
 OUI:380F4A*
  ID_OUI_FROM_DATABASE=Apple
 
@@ -56236,12 +56353,18 @@ OUI:3826CD*
 OUI:3828EA*
  ID_OUI_FROM_DATABASE=Fujian Netcom Technology Co., LTD
 
+OUI:382C4A*
+ ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
+
 OUI:382DD1*
  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
 
 OUI:3831AC*
  ID_OUI_FROM_DATABASE=WEG
 
+OUI:383BC8*
+ ID_OUI_FROM_DATABASE=2wire
+
 OUI:383F10*
  ID_OUI_FROM_DATABASE=DBL Technology Ltd.
 
@@ -56329,6 +56452,9 @@ OUI:388EE7*
 OUI:3891FB*
  ID_OUI_FROM_DATABASE=Xenox Holding BV
 
+OUI:389496*
+ ID_OUI_FROM_DATABASE=Samsung Elec Co.,Ltd
+
 OUI:389592*
  ID_OUI_FROM_DATABASE=Beijing Tendyron Corporation
 
@@ -56518,6 +56644,9 @@ OUI:3C1A79*
 OUI:3C1CBE*
  ID_OUI_FROM_DATABASE=JADAK LLC
 
+OUI:3C1E13*
+ ID_OUI_FROM_DATABASE=HANGZHOU SUNRISE TECHNOLOGY CO., LTD
+
 OUI:3C25D7*
  ID_OUI_FROM_DATABASE=Nokia Corporation
 
@@ -56989,6 +57118,9 @@ OUI:40984E*
 OUI:40987B*
  ID_OUI_FROM_DATABASE=Aisino Corporation
 
+OUI:409B0D*
+ ID_OUI_FROM_DATABASE=Shenzhen Yourf Kwan Industrial Co., Ltd
+
 OUI:409FC7*
  ID_OUI_FROM_DATABASE=BAEKCHUN I&C Co., Ltd.
 
@@ -57253,6 +57385,9 @@ OUI:446C24*
 OUI:446D57*
  ID_OUI_FROM_DATABASE=Liteon Technology Corporation
 
+OUI:446D6C*
+ ID_OUI_FROM_DATABASE=Samsung Elec Co.,Ltd
+
 OUI:44700B*
  ID_OUI_FROM_DATABASE=IFFU
 
@@ -57367,6 +57502,9 @@ OUI:44C56F*
 OUI:44C9A2*
  ID_OUI_FROM_DATABASE=Greenwald Industries
 
+OUI:44CE7D*
+ ID_OUI_FROM_DATABASE=SFR
+
 OUI:44D15E*
  ID_OUI_FROM_DATABASE=Shanghai Kingto Information Technology Ltd
 
@@ -57685,6 +57823,9 @@ OUI:4C09B4*
 OUI:4C0B3A*
  ID_OUI_FROM_DATABASE=TCT Mobile Limited
 
+OUI:4C0BBE*
+ ID_OUI_FROM_DATABASE=Microsoft
+
 OUI:4C0DEE*
  ID_OUI_FROM_DATABASE=JABIL CIRCUIT (SHANGHAI) LTD.
 
@@ -57703,6 +57844,9 @@ OUI:4C1480*
 OUI:4C14A3*
  ID_OUI_FROM_DATABASE=TCL Technoly Electronics (Huizhou) Co., Ltd.
 
+OUI:4C16F1*
+ ID_OUI_FROM_DATABASE=zte corporation
+
 OUI:4C17EB*
  ID_OUI_FROM_DATABASE=SAGEMCOM
 
@@ -57730,6 +57874,9 @@ OUI:4C26E7*
 OUI:4C2C80*
  ID_OUI_FROM_DATABASE=Beijing Skyway Technologies Co.,Ltd
 
+OUI:4C2C83*
+ ID_OUI_FROM_DATABASE=Zhejiang KaNong Network Technology Co.,Ltd.
+
 OUI:4C2F9D*
  ID_OUI_FROM_DATABASE=ICM Controls
 
@@ -57754,6 +57901,9 @@ OUI:4C3B74*
 OUI:4C3C16*
  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
 
+OUI:4C48DA*
+ ID_OUI_FROM_DATABASE=Beijing Autelan Technology Co.,Ltd
+
 OUI:4C4B68*
  ID_OUI_FROM_DATABASE=Mobile Device, Inc.
 
@@ -57943,6 +58093,9 @@ OUI:4CDF3D*
 OUI:4CE1BB*
  ID_OUI_FROM_DATABASE=Zhuhai HiFocus Technology Co., Ltd.
 
+OUI:4CE2F1*
+ ID_OUI_FROM_DATABASE=sclak srl
+
 OUI:4CE676*
  ID_OUI_FROM_DATABASE=Buffalo Inc.
 
@@ -58267,6 +58420,9 @@ OUI:50ED94*
 OUI:50F003*
  ID_OUI_FROM_DATABASE=Open Stack, Inc.
 
+OUI:50F43C*
+ ID_OUI_FROM_DATABASE=Leeo Inc
+
 OUI:50F520*
  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
 
@@ -58300,6 +58456,9 @@ OUI:540536*
 OUI:54055F*
  ID_OUI_FROM_DATABASE=Alcatel Lucent
 
+OUI:54098D*
+ ID_OUI_FROM_DATABASE=deister electronic GmbH
+
 OUI:54112F*
  ID_OUI_FROM_DATABASE=Sulzer Pump Solutions Finland Oy
 
@@ -58459,6 +58618,9 @@ OUI:549F35*
 OUI:54A04F*
  ID_OUI_FROM_DATABASE=t-mac Technologies Ltd
 
+OUI:54A050*
+ ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
+
 OUI:54A31B*
  ID_OUI_FROM_DATABASE=Shenzhen Linkworld Technology Co,.LTD
 
@@ -58525,6 +58687,9 @@ OUI:54E3B0*
 OUI:54E43A*
  ID_OUI_FROM_DATABASE=Apple, Inc.
 
+OUI:54E4BD*
+ ID_OUI_FROM_DATABASE=FN-LINK TECHNOLOGY LIMITED
+
 OUI:54E63F*
  ID_OUI_FROM_DATABASE=ShenZhen LingKeWeiEr Technology Co., Ltd.
 
@@ -58603,6 +58768,9 @@ OUI:581FAA*
 OUI:581FEF*
  ID_OUI_FROM_DATABASE=Tuttnaer LTD
 
+OUI:582136*
+ ID_OUI_FROM_DATABASE=KMB systems, s.r.o.
+
 OUI:58238C*
  ID_OUI_FROM_DATABASE=Technicolor CH USA
 
@@ -58705,6 +58873,9 @@ OUI:587BE9*
 OUI:587E61*
  ID_OUI_FROM_DATABASE=Hisense Electric Co., Ltd
 
+OUI:587FB7*
+ ID_OUI_FROM_DATABASE=SONAR INDUSTRIAL CO., LTD.
+
 OUI:587FC8*
  ID_OUI_FROM_DATABASE=S2M
 
@@ -58903,6 +59074,9 @@ OUI:5C260A*
 OUI:5C2AEF*
  ID_OUI_FROM_DATABASE=Open Access Pty Ltd
 
+OUI:5C2BF5*
+ ID_OUI_FROM_DATABASE=Vivint
+
 OUI:5C2E59*
  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
 
@@ -59017,9 +59191,15 @@ OUI:5C93A2*
 OUI:5C95AE*
  ID_OUI_FROM_DATABASE=Apple
 
+OUI:5C966A*
+ ID_OUI_FROM_DATABASE=RTNET
+
 OUI:5C969D*
  ID_OUI_FROM_DATABASE=Apple
 
+OUI:5C97F3*
+ ID_OUI_FROM_DATABASE=Apple
+
 OUI:5C9AD8*
  ID_OUI_FROM_DATABASE=Fujitsu Limited
 
@@ -59032,6 +59212,9 @@ OUI:5CA3EB*
 OUI:5CA48A*
  ID_OUI_FROM_DATABASE=Cisco
 
+OUI:5CAAFD*
+ ID_OUI_FROM_DATABASE=Sonos, Inc.
+
 OUI:5CAC4C*
  ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
 
@@ -59167,6 +59350,9 @@ OUI:600308*
 OUI:600347*
  ID_OUI_FROM_DATABASE=Billion Electric Co. Ltd.
 
+OUI:600417*
+ ID_OUI_FROM_DATABASE=POSBANK CO.,LTD
+
 OUI:600F77*
  ID_OUI_FROM_DATABASE=SilverPlus, Inc
 
@@ -59407,6 +59593,9 @@ OUI:60C547*
 OUI:60C5A8*
  ID_OUI_FROM_DATABASE=Beijing LT Honway Technology Co.,Ltd
 
+OUI:60C798*
+ ID_OUI_FROM_DATABASE=Verifone, Inc.
+
 OUI:60C980*
  ID_OUI_FROM_DATABASE=Trymus
 
@@ -59773,6 +59962,9 @@ OUI:64AE0C*
 OUI:64AE88*
  ID_OUI_FROM_DATABASE=Polytec GmbH
 
+OUI:64B21D*
+ ID_OUI_FROM_DATABASE=Chengdu Phycom Tech Co., Ltd.
+
 OUI:64B310*
  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
 
@@ -59785,6 +59977,9 @@ OUI:64B473*
 OUI:64B64A*
  ID_OUI_FROM_DATABASE=ViVOtech, Inc.
 
+OUI:64B853*
+ ID_OUI_FROM_DATABASE=Samsung Elec Co.,Ltd
+
 OUI:64B9E8*
  ID_OUI_FROM_DATABASE=Apple
 
@@ -59947,6 +60142,9 @@ OUI:6828BA*
 OUI:682DDC*
  ID_OUI_FROM_DATABASE=Wuhan Changjiang Electro-Communication Equipment CO.,LTD
 
+OUI:6836B5*
+ ID_OUI_FROM_DATABASE=DriveScale, Inc.
+
 OUI:683B1E*
  ID_OUI_FROM_DATABASE=Countwise LTD
 
@@ -60007,6 +60205,9 @@ OUI:686E48*
 OUI:687251*
  ID_OUI_FROM_DATABASE=Ubiquiti Networks
 
+OUI:6872DC*
+ ID_OUI_FROM_DATABASE=CETORY.TV Company Limited
+
 OUI:68764F*
  ID_OUI_FROM_DATABASE=Sony Mobile Communications AB
 
@@ -60070,6 +60271,9 @@ OUI:68974B*
 OUI:6897E8*
  ID_OUI_FROM_DATABASE=Society of Motion Picture & Television Engineers
 
+OUI:6899CD*
+ ID_OUI_FROM_DATABASE=Cisco
+
 OUI:689C5E*
  ID_OUI_FROM_DATABASE=AcSiP Technology Corp.
 
@@ -60097,6 +60301,9 @@ OUI:68AAD2*
 OUI:68AB8A*
  ID_OUI_FROM_DATABASE=RF IDeas
 
+OUI:68AE20*
+ ID_OUI_FROM_DATABASE=Apple
+
 OUI:68AF13*
  ID_OUI_FROM_DATABASE=Futura Mobility
 
@@ -60184,6 +60391,9 @@ OUI:68F06D*
 OUI:68F125*
  ID_OUI_FROM_DATABASE=Data Controls Inc.
 
+OUI:68F728*
+ ID_OUI_FROM_DATABASE=LCFC(HeFei) Electronics Technology co., ltd
+
 OUI:68F895*
  ID_OUI_FROM_DATABASE=Redflow Limited
 
@@ -60202,6 +60412,9 @@ OUI:6C0460*
 OUI:6C09D6*
  ID_OUI_FROM_DATABASE=Digiquest Electronics LTD
 
+OUI:6C0B84*
+ ID_OUI_FROM_DATABASE=Universal Global Scientific Industrial Co.,Ltd.
+
 OUI:6C0E0D*
  ID_OUI_FROM_DATABASE=Sony Ericsson Mobile Communications AB
 
@@ -60268,6 +60481,9 @@ OUI:6C3E6D*
 OUI:6C3E9C*
  ID_OUI_FROM_DATABASE=KE Knestel Elektronik GmbH
 
+OUI:6C4008*
+ ID_OUI_FROM_DATABASE=Apple
+
 OUI:6C40C6*
  ID_OUI_FROM_DATABASE=Nimbus Data Systems, Inc.
 
@@ -60850,6 +61066,12 @@ OUI:70F927*
 OUI:70F96D*
  ID_OUI_FROM_DATABASE=Hangzhou H3C Technologies Co., Limited
 
+OUI:70FC8C*
+ ID_OUI_FROM_DATABASE=OneAccess SA
+
+OUI:70FF5C*
+ ID_OUI_FROM_DATABASE=Cheerzing Communication(Xiamen)Technology Co.,Ltd
+
 OUI:70FF76*
  ID_OUI_FROM_DATABASE=Texas Instruments
 
@@ -60928,12 +61150,18 @@ OUI:744D79*
 OUI:745327*
  ID_OUI_FROM_DATABASE=COMMSEN CO., LIMITED
 
+OUI:74547D*
+ ID_OUI_FROM_DATABASE=Cisco SPVTG
+
 OUI:745612*
  ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
 
 OUI:745798*
  ID_OUI_FROM_DATABASE=TRUMPF Laser GmbH + Co. KG
 
+OUI:745C9F*
+ ID_OUI_FROM_DATABASE=TCT mobile ltd.
+
 OUI:745E1C*
  ID_OUI_FROM_DATABASE=PIONEER CORPORATION
 
@@ -60967,6 +61195,9 @@ OUI:746F3D*
 OUI:7472F2*
  ID_OUI_FROM_DATABASE=Chipsip Technology Co., Ltd.
 
+OUI:747548*
+ ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
+
 OUI:747818*
  ID_OUI_FROM_DATABASE=ServiceAssure
 
@@ -61117,6 +61348,9 @@ OUI:74E537*
 OUI:74E543*
  ID_OUI_FROM_DATABASE=Liteon Technology Corporation
 
+OUI:74E6E2*
+ ID_OUI_FROM_DATABASE=Dell Inc.
+
 OUI:74E7C6*
  ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
 
@@ -61921,6 +62155,9 @@ OUI:8005DF*
 OUI:8007A2*
  ID_OUI_FROM_DATABASE=Esson Technology Inc.
 
+OUI:800902*
+ ID_OUI_FROM_DATABASE=Keysight Technologies, Inc.
+
 OUI:800A06*
  ID_OUI_FROM_DATABASE=COMTEC co.,ltd
 
@@ -61945,6 +62182,9 @@ OUI:8018A7*
 OUI:801934*
  ID_OUI_FROM_DATABASE=Intel Corporate
 
+OUI:801967*
+ ID_OUI_FROM_DATABASE=Shanghai Reallytek Information Technology  Co.,Ltd
+
 OUI:801DAA*
  ID_OUI_FROM_DATABASE=Avaya Inc
 
@@ -61972,6 +62212,9 @@ OUI:802FDE*
 OUI:803457*
  ID_OUI_FROM_DATABASE=OT Systems Limited
 
+OUI:803773*
+ ID_OUI_FROM_DATABASE=Netgear Inc
+
 OUI:8038FD*
  ID_OUI_FROM_DATABASE=LeapFrog Enterprises, Inc.
 
@@ -62146,6 +62389,9 @@ OUI:80BAE6*
 OUI:80BBEB*
  ID_OUI_FROM_DATABASE=Satmap Systems Ltd
 
+OUI:80BE05*
+ ID_OUI_FROM_DATABASE=Apple
+
 OUI:80C16E*
  ID_OUI_FROM_DATABASE=Hewlett Packard
 
@@ -62236,6 +62482,9 @@ OUI:841715*
 OUI:841766*
  ID_OUI_FROM_DATABASE=Weifang GoerTek Electronics Co., Ltd
 
+OUI:841826*
+ ID_OUI_FROM_DATABASE=Osram GmbH
+
 OUI:84183A*
  ID_OUI_FROM_DATABASE=Ruckus Wireless
 
@@ -62272,6 +62521,9 @@ OUI:842615*
 OUI:84262B*
  ID_OUI_FROM_DATABASE=Alcatel-Lucent
 
+OUI:842690*
+ ID_OUI_FROM_DATABASE=BEIJING THOUGHT SCIENCE CO.,LTD.
+
 OUI:8427CE*
  ID_OUI_FROM_DATABASE=Corporation of the Presiding Bishop of The Church of Jesus Christ of Latter-day Saints
 
@@ -62332,6 +62584,9 @@ OUI:844F03*
 OUI:845181*
  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
 
+OUI:8455A5*
+ ID_OUI_FROM_DATABASE=Samsung Elec Co.,Ltd
+
 OUI:84569C*
  ID_OUI_FROM_DATABASE=Coho Data, Inc.,
 
@@ -62365,6 +62620,9 @@ OUI:84742A*
 OUI:847616*
  ID_OUI_FROM_DATABASE=Addat S.r.o.
 
+OUI:84788B*
+ ID_OUI_FROM_DATABASE=Apple
+
 OUI:8478AC*
  ID_OUI_FROM_DATABASE=Cisco
 
@@ -62434,6 +62692,9 @@ OUI:849CA6*
 OUI:849DC5*
  ID_OUI_FROM_DATABASE=Centera Photonics Inc.
 
+OUI:84A466*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
 OUI:84A6C8*
  ID_OUI_FROM_DATABASE=Intel Corporate
 
@@ -62506,6 +62767,9 @@ OUI:84E714*
 OUI:84EA99*
  ID_OUI_FROM_DATABASE=Vieworks
 
+OUI:84EB18*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
 OUI:84ED33*
  ID_OUI_FROM_DATABASE=BBMC Co.,Ltd
 
@@ -62641,6 +62905,12 @@ OUI:88685C*
 OUI:886B76*
  ID_OUI_FROM_DATABASE=CHINA HOPEFUL GROUP HOPEFUL ELECTRIC CO.,LTD
 
+OUI:88708C*
+ ID_OUI_FROM_DATABASE=Lenovo Mobile Communication Technology Ltd.
+
+OUI:8870EF*
+ ID_OUI_FROM_DATABASE=SC Professional Trading Co., Ltd.
+
 OUI:887398*
  ID_OUI_FROM_DATABASE=K2E Tekpoint
 
@@ -62746,6 +63016,9 @@ OUI:88C626*
 OUI:88C663*
  ID_OUI_FROM_DATABASE=Apple
 
+OUI:88C9D0*
+ ID_OUI_FROM_DATABASE=LG Electronics
+
 OUI:88CB87*
  ID_OUI_FROM_DATABASE=Apple
 
@@ -62812,6 +63085,9 @@ OUI:8C006D*
 OUI:8C04FF*
  ID_OUI_FROM_DATABASE=Technicolor USA Inc.
 
+OUI:8C0551*
+ ID_OUI_FROM_DATABASE=Koubachi AG
+
 OUI:8C078C*
  ID_OUI_FROM_DATABASE=FLOW DATA INC
 
@@ -62995,6 +63271,9 @@ OUI:8C8E76*
 OUI:8C90D3*
  ID_OUI_FROM_DATABASE=Alcatel Lucent
 
+OUI:8C9109*
+ ID_OUI_FROM_DATABASE=Toyoshima Electric Technoeogy(Suzhou) Co.,Ltd.
+
 OUI:8C9236*
  ID_OUI_FROM_DATABASE=Aus.Linx Technology Co., Ltd.
 
@@ -63082,6 +63361,9 @@ OUI:8CDE52*
 OUI:8CDE99*
  ID_OUI_FROM_DATABASE=Comlab Inc.
 
+OUI:8CDF9D*
+ ID_OUI_FROM_DATABASE=NEC Corporation
+
 OUI:8CE081*
  ID_OUI_FROM_DATABASE=zte corporation
 
@@ -63133,6 +63415,12 @@ OUI:900D66*
 OUI:900DCB*
  ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
 
+OUI:90179B*
+ ID_OUI_FROM_DATABASE=Nanomegas
+
+OUI:9017AC*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
 OUI:90185E*
  ID_OUI_FROM_DATABASE=Apex Tool Group GmbH & Co OHG
 
@@ -63166,12 +63454,18 @@ OUI:902083*
 OUI:902155*
  ID_OUI_FROM_DATABASE=HTC Corporation
 
+OUI:902181*
+ ID_OUI_FROM_DATABASE=Shanghai Huaqin Telecom Technology Co.,Ltd
+
 OUI:9027E4*
  ID_OUI_FROM_DATABASE=Apple
 
 OUI:902B34*
  ID_OUI_FROM_DATABASE=GIGA-BYTE TECHNOLOGY CO.,LTD.
 
+OUI:902CC7*
+ ID_OUI_FROM_DATABASE=C-MAX Asia Limited
+
 OUI:902E87*
  ID_OUI_FROM_DATABASE=LabJack
 
@@ -63304,6 +63598,9 @@ OUI:90840D*
 OUI:9088A2*
  ID_OUI_FROM_DATABASE=IONICS TECHNOLOGY ME LTDA
 
+OUI:908C09*
+ ID_OUI_FROM_DATABASE=Total Phase
+
 OUI:908C44*
  ID_OUI_FROM_DATABASE=H.K ZONGMU TECHNOLOGY CO., LTD.
 
@@ -63337,6 +63634,9 @@ OUI:909916*
 OUI:909DE0*
  ID_OUI_FROM_DATABASE=Newland Design + Assoc. Inc.
 
+OUI:909F33*
+ ID_OUI_FROM_DATABASE=EFM Networks
+
 OUI:909F43*
  ID_OUI_FROM_DATABASE=Accutron Instruments Inc.
 
@@ -63416,7 +63716,7 @@ OUI:90DA4E*
  ID_OUI_FROM_DATABASE=AVANU
 
 OUI:90DA6A*
- ID_OUI_FROM_DATABASE=MCC System Co., Ltd.
+ ID_OUI_FROM_DATABASE=FOCUS H&S Co., Ltd.
 
 OUI:90DB46*
  ID_OUI_FROM_DATABASE=E-LEAD ELECTRONIC CO., LTD
@@ -63580,6 +63880,9 @@ OUI:946269*
 OUI:9463D1*
  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
 
+OUI:9470D2*
+ ID_OUI_FROM_DATABASE=WINFIRM TECHNOLOGY
+
 OUI:9471AC*
  ID_OUI_FROM_DATABASE=TCT Mobile Limited
 
@@ -63646,6 +63949,9 @@ OUI:94AE61*
 OUI:94AEE3*
  ID_OUI_FROM_DATABASE=Belden Hirschmann Industries (Suzhou) Ltd.
 
+OUI:94B40F*
+ ID_OUI_FROM_DATABASE=Aruba Networks
+
 OUI:94B8C5*
  ID_OUI_FROM_DATABASE=RuggedCom Inc.
 
@@ -63661,9 +63967,15 @@ OUI:94BA56*
 OUI:94BF1E*
  ID_OUI_FROM_DATABASE=eflow Inc. / Smart Device Planning and Development Division
 
+OUI:94BF95*
+ ID_OUI_FROM_DATABASE=Shenzhen Coship Electronics Co., Ltd
+
 OUI:94C014*
  ID_OUI_FROM_DATABASE=Sorter Sp. j. Konrad Grzeszczyk MichaA, Ziomek
 
+OUI:94C038*
+ ID_OUI_FROM_DATABASE=Tallac Networks
+
 OUI:94C150*
  ID_OUI_FROM_DATABASE=2Wire Inc
 
@@ -63793,6 +64105,9 @@ OUI:980D2E*
 OUI:981094*
  ID_OUI_FROM_DATABASE=Shenzhen Vsun communication technology Co.,ltd
 
+OUI:9816EC*
+ ID_OUI_FROM_DATABASE=IC Intracom
+
 OUI:98208E*
  ID_OUI_FROM_DATABASE=Definium Technologies
 
@@ -64027,6 +64342,9 @@ OUI:98F8C1*
 OUI:98F8DB*
  ID_OUI_FROM_DATABASE=Marini Impianti Industriali s.r.l.
 
+OUI:98FAE3*
+ ID_OUI_FROM_DATABASE=Xiaomi inc.
+
 OUI:98FB12*
  ID_OUI_FROM_DATABASE=Grand Electronics (HK) Ltd
 
@@ -64582,6 +64900,9 @@ OUI:A0A130*
 OUI:A0A23C*
  ID_OUI_FROM_DATABASE=GPMS
 
+OUI:A0A3E2*
+ ID_OUI_FROM_DATABASE=Actiontec Electronics, Inc
+
 OUI:A0A763*
  ID_OUI_FROM_DATABASE=Polytron Vertrieb GmbH
 
@@ -64597,6 +64918,9 @@ OUI:A0B100*
 OUI:A0B3CC*
  ID_OUI_FROM_DATABASE=Hewlett Packard
 
+OUI:A0B4A5*
+ ID_OUI_FROM_DATABASE=Samsung Elec Co.,Ltd
+
 OUI:A0B5DA*
  ID_OUI_FROM_DATABASE=HongKong THTF Co., Ltd
 
@@ -64724,7 +65048,7 @@ OUI:A40CC3*
  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
 
 OUI:A41242*
- ID_OUI_FROM_DATABASE=NEC AccessTechnica, Ltd.
+ ID_OUI_FROM_DATABASE=NEC Platforms, Ltd.
 
 OUI:A4134E*
  ID_OUI_FROM_DATABASE=Luxul
@@ -64753,6 +65077,9 @@ OUI:A42305*
 OUI:A424B3*
  ID_OUI_FROM_DATABASE=FlatFrog Laboratories AB
 
+OUI:A4251B*
+ ID_OUI_FROM_DATABASE=Avaya, Inc
+
 OUI:A42940*
  ID_OUI_FROM_DATABASE=Shenzhen YOUHUA Technology Co., Ltd
 
@@ -64783,6 +65110,9 @@ OUI:A4466B*
 OUI:A446FA*
  ID_OUI_FROM_DATABASE=AmTRAN Video Corporation
 
+OUI:A44AD3*
+ ID_OUI_FROM_DATABASE=ST Electronics(Shanghai) Co.,Ltd
+
 OUI:A44B15*
  ID_OUI_FROM_DATABASE=Sun Cupid Technology (HK) LTD
 
@@ -64888,6 +65218,9 @@ OUI:A49A58*
 OUI:A49B13*
  ID_OUI_FROM_DATABASE=Burroughs Payment Systems, Inc.
 
+OUI:A49D49*
+ ID_OUI_FROM_DATABASE=Ketra, Inc.
+
 OUI:A49EDB*
  ID_OUI_FROM_DATABASE=AutoCrib, Inc.
 
@@ -64897,6 +65230,9 @@ OUI:A49F85*
 OUI:A49F89*
  ID_OUI_FROM_DATABASE=Shanghai Rui Rui Communication Technology Co.Ltd.
 
+OUI:A4A1C2*
+ ID_OUI_FROM_DATABASE=Ericsson AB (EAB)
+
 OUI:A4A24A*
  ID_OUI_FROM_DATABASE=Cisco SPVTG
 
@@ -65158,6 +65494,9 @@ OUI:A8776F*
 OUI:A87B39*
  ID_OUI_FROM_DATABASE=Nokia Corporation
 
+OUI:A87C01*
+ ID_OUI_FROM_DATABASE=Samsung Elec Co.,Ltd
+
 OUI:A87E33*
  ID_OUI_FROM_DATABASE=Nokia Danmark A/S
 
@@ -65209,6 +65548,9 @@ OUI:A8995C*
 OUI:A89B10*
  ID_OUI_FROM_DATABASE=inMotion Ltd.
 
+OUI:A89DD2*
+ ID_OUI_FROM_DATABASE=Shanghai DareGlobal Technologies Co., Ltd
+
 OUI:A8A668*
  ID_OUI_FROM_DATABASE=zte corporation
 
@@ -65245,6 +65587,9 @@ OUI:A8CCC5*
 OUI:A8CE90*
  ID_OUI_FROM_DATABASE=CVC
 
+OUI:A8D0E3*
+ ID_OUI_FROM_DATABASE=Systech Electronics Ltd.
+
 OUI:A8D0E5*
  ID_OUI_FROM_DATABASE=Juniper Networks
 
@@ -65254,6 +65599,9 @@ OUI:A8D236*
 OUI:A8D3C8*
  ID_OUI_FROM_DATABASE=Wachendorff Elektronik  GmbH & Co. KG
 
+OUI:A8D88A*
+ ID_OUI_FROM_DATABASE=Wyconn
+
 OUI:A8E018*
  ID_OUI_FROM_DATABASE=Nokia Corporation
 
@@ -65368,6 +65716,9 @@ OUI:AC3613*
 OUI:AC3870*
  ID_OUI_FROM_DATABASE=Lenovo Mobile Communication Technology Ltd.
 
+OUI:AC3A7A*
+ ID_OUI_FROM_DATABASE=Roku
+
 OUI:AC3C0B*
  ID_OUI_FROM_DATABASE=Apple
 
@@ -65488,6 +65839,9 @@ OUI:AC8674*
 OUI:AC867E*
  ID_OUI_FROM_DATABASE=Create New Technology (HK) Limited Company
 
+OUI:AC87A3*
+ ID_OUI_FROM_DATABASE=Apple
+
 OUI:AC8ACD*
  ID_OUI_FROM_DATABASE=ROGER D.Wensker, G.Wensker sp.j.
 
@@ -65650,6 +66004,9 @@ OUI:ACF7F3*
 OUI:ACF97E*
  ID_OUI_FROM_DATABASE=ELESYS INC.
 
+OUI:ACFDCE*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
 OUI:ACFDEC*
  ID_OUI_FROM_DATABASE=Apple, Inc
 
@@ -65809,6 +66166,9 @@ OUI:B09074*
 OUI:B09134*
  ID_OUI_FROM_DATABASE=Taleo
 
+OUI:B09137*
+ ID_OUI_FROM_DATABASE=ISis ImageStream Internet Solutions, Inc
+
 OUI:B0973A*
  ID_OUI_FROM_DATABASE=E-Fuel Corporation
 
@@ -66031,6 +66391,9 @@ OUI:B435F7*
 OUI:B43741*
  ID_OUI_FROM_DATABASE=Consert, Inc.
 
+OUI:B43934*
+ ID_OUI_FROM_DATABASE=Pen Generations, Inc.
+
 OUI:B439D6*
  ID_OUI_FROM_DATABASE=ProCurve Networking by HP
 
@@ -66157,6 +66520,9 @@ OUI:B4A4E3*
 OUI:B4A5A9*
  ID_OUI_FROM_DATABASE=MODI GmbH
 
+OUI:B4A828*
+ ID_OUI_FROM_DATABASE=Shenzhen Concox Information Technology Co., Ltd
+
 OUI:B4A82B*
  ID_OUI_FROM_DATABASE=Histar Digital Electronics Co., Ltd.
 
@@ -66496,6 +66862,9 @@ OUI:B8AD3E*
 OUI:B8AE6E*
  ID_OUI_FROM_DATABASE=Nintendo Co., Ltd.
 
+OUI:B8AEED*
+ ID_OUI_FROM_DATABASE=Elitegroup Computer Systems Co., Ltd.
+
 OUI:B8AF67*
  ID_OUI_FROM_DATABASE=Hewlett-Packard Company
 
@@ -66562,6 +66931,9 @@ OUI:B8D06F*
 OUI:B8D49D*
  ID_OUI_FROM_DATABASE=M Seven System Ltd.
 
+OUI:B8D812*
+ ID_OUI_FROM_DATABASE=IEEE REGISTRATION AUTHORITY  - Please see MAM public listing for more information.
+
 OUI:B8D9CE*
  ID_OUI_FROM_DATABASE=Samsung Electronics
 
@@ -66658,6 +67030,9 @@ OUI:BC15A6*
 OUI:BC1665*
  ID_OUI_FROM_DATABASE=Cisco
 
+OUI:BC16F5*
+ ID_OUI_FROM_DATABASE=Cisco
+
 OUI:BC1A67*
  ID_OUI_FROM_DATABASE=YF Technology Co., Ltd
 
@@ -66766,6 +67141,9 @@ OUI:BC6A16*
 OUI:BC6A29*
  ID_OUI_FROM_DATABASE=Texas Instruments
 
+OUI:BC6B4D*
+ ID_OUI_FROM_DATABASE=Alcatel-Lucent
+
 OUI:BC6E76*
  ID_OUI_FROM_DATABASE=Green Energy Options Ltd
 
@@ -66862,12 +67240,18 @@ OUI:BCBAE1*
 OUI:BCBBC9*
  ID_OUI_FROM_DATABASE=Kellendonk Elektronik GmbH
 
+OUI:BCBC46*
+ ID_OUI_FROM_DATABASE=SKS Welding Systems GmbH
+
 OUI:BCC168*
  ID_OUI_FROM_DATABASE=DinBox Sverige AB
 
 OUI:BCC23A*
  ID_OUI_FROM_DATABASE=Thomson Video Networks
 
+OUI:BCC342*
+ ID_OUI_FROM_DATABASE=Panasonic System Networks Co., Ltd.
+
 OUI:BCC61A*
  ID_OUI_FROM_DATABASE=SPECTRA EMBEDDED SYSTEMS
 
@@ -66907,6 +67291,9 @@ OUI:BCE59F*
 OUI:BCEA2B*
  ID_OUI_FROM_DATABASE=CityCom GmbH
 
+OUI:BCEAFA*
+ ID_OUI_FROM_DATABASE=Hewlett Packard
+
 OUI:BCEE7B*
  ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
 
@@ -66976,6 +67363,9 @@ OUI:C03580*
 OUI:C035BD*
  ID_OUI_FROM_DATABASE=Velocytech Aps
 
+OUI:C03896*
+ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+
 OUI:C038F9*
  ID_OUI_FROM_DATABASE=Nokia Danmark A/S
 
@@ -67087,6 +67477,9 @@ OUI:C09132*
 OUI:C09134*
  ID_OUI_FROM_DATABASE=ProCurve Networking by HP
 
+OUI:C09879*
+ ID_OUI_FROM_DATABASE=Acer Inc.
+
 OUI:C098E5*
  ID_OUI_FROM_DATABASE=University of Michigan
 
@@ -67228,6 +67621,9 @@ OUI:C40528*
 OUI:C4084A*
  ID_OUI_FROM_DATABASE=Alcatel-Lucent
 
+OUI:C40880*
+ ID_OUI_FROM_DATABASE=Shenzhen UTEPO Tech Co., Ltd.
+
 OUI:C40938*
  ID_OUI_FROM_DATABASE=Fujian Star-net Communication Co., Ltd
 
@@ -67573,6 +67969,9 @@ OUI:C819F7*
 OUI:C81AFE*
  ID_OUI_FROM_DATABASE=DLOGIC GmbH
 
+OUI:C81B6B*
+ ID_OUI_FROM_DATABASE=Innova Security
+
 OUI:C81E8E*
  ID_OUI_FROM_DATABASE=ADV Security (S) Pte Ltd
 
@@ -67675,6 +68074,9 @@ OUI:C88439*
 OUI:C88447*
  ID_OUI_FROM_DATABASE=Beautiful Enterprise Co., Ltd
 
+OUI:C88550*
+ ID_OUI_FROM_DATABASE=Apple
+
 OUI:C8873B*
  ID_OUI_FROM_DATABASE=Net Optics
 
@@ -67774,6 +68176,9 @@ OUI:C8CBB8*
 OUI:C8CD72*
  ID_OUI_FROM_DATABASE=SAGEMCOM
 
+OUI:C8D019*
+ ID_OUI_FROM_DATABASE=Shanghai Tigercel Communication Technology Co.,Ltd
+
 OUI:C8D10B*
  ID_OUI_FROM_DATABASE=Nokia Corporation
 
@@ -67960,6 +68365,9 @@ OUI:CC3D82*
 OUI:CC3E5F*
  ID_OUI_FROM_DATABASE=Hewlett Packard
 
+OUI:CC3F1D*
+ ID_OUI_FROM_DATABASE=Intesis Software SL
+
 OUI:CC43E3*
  ID_OUI_FROM_DATABASE=Trump s.a.
 
@@ -68254,6 +68662,9 @@ OUI:D01AA7*
 OUI:D01CBB*
  ID_OUI_FROM_DATABASE=Beijing Ctimes Digital Technology Co., Ltd.
 
+OUI:D02212*
+ ID_OUI_FROM_DATABASE=IEEE REGISTRATION AUTHORITY  - Please see MAM public listing for more information.
+
 OUI:D022BE*
  ID_OUI_FROM_DATABASE=Samsung Electro Mechanics co.,LTD.
 
@@ -68668,6 +69079,9 @@ OUI:D45C70*
 OUI:D45D42*
  ID_OUI_FROM_DATABASE=Nokia Corporation
 
+OUI:D46132*
+ ID_OUI_FROM_DATABASE=Pro Concept Manufacturer Co.,Ltd.
+
 OUI:D464F7*
  ID_OUI_FROM_DATABASE=CHENGDU USEE DIGITAL TECHNOLOGY CO., LTD
 
@@ -68728,6 +69142,9 @@ OUI:D48890*
 OUI:D48CB5*
  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
 
+OUI:D48DD9*
+ ID_OUI_FROM_DATABASE=Meld Technology, Inc
+
 OUI:D48F33*
  ID_OUI_FROM_DATABASE=Microsoft Corporation
 
@@ -68887,6 +69304,9 @@ OUI:D4F0B4*
 OUI:D4F143*
  ID_OUI_FROM_DATABASE=IPROAD.,Inc
 
+OUI:D4F46F*
+ ID_OUI_FROM_DATABASE=Apple
+
 OUI:D4F63F*
  ID_OUI_FROM_DATABASE=IEA S.R.L.
 
@@ -68974,6 +69394,9 @@ OUI:D831CF*
 OUI:D8337F*
  ID_OUI_FROM_DATABASE=Office FA.com Co.,Ltd.
 
+OUI:D83C69*
+ ID_OUI_FROM_DATABASE=Tinno Mobile Technology Corp
+
 OUI:D842AC*
  ID_OUI_FROM_DATABASE=Shanghai Feixun Communication Co.,Ltd.
 
@@ -69058,9 +69481,15 @@ OUI:D87CDD*
 OUI:D87EB1*
  ID_OUI_FROM_DATABASE=x.o.ware, inc.
 
+OUI:D88039*
+ ID_OUI_FROM_DATABASE=Microchip Technology Inc.
+
 OUI:D881CE*
  ID_OUI_FROM_DATABASE=AHN INC.
 
+OUI:D88466*
+ ID_OUI_FROM_DATABASE=Extreme Networks
+
 OUI:D88A3B*
  ID_OUI_FROM_DATABASE=UNIT-EM
 
@@ -69088,6 +69517,9 @@ OUI:D89760*
 OUI:D8977C*
  ID_OUI_FROM_DATABASE=Grey Innovation
 
+OUI:D897BA*
+ ID_OUI_FROM_DATABASE=PEGATRON CORPORATION
+
 OUI:D89D67*
  ID_OUI_FROM_DATABASE=Hewlett Packard
 
@@ -69121,6 +69553,9 @@ OUI:D8B12A*
 OUI:D8B377*
  ID_OUI_FROM_DATABASE=HTC Corporation
 
+OUI:D8B6B7*
+ ID_OUI_FROM_DATABASE=Comtrend Corporation
+
 OUI:D8B6C1*
  ID_OUI_FROM_DATABASE=NetworkAccountant, Inc.
 
@@ -69151,6 +69586,9 @@ OUI:D8C7C8*
 OUI:D8C99D*
  ID_OUI_FROM_DATABASE=EA DISPLAY LIMITED
 
+OUI:D8CB8A*
+ ID_OUI_FROM_DATABASE=Micro-Star INTL CO., LTD.
+
 OUI:D8CF9C*
  ID_OUI_FROM_DATABASE=Apple
 
@@ -69214,6 +69652,12 @@ OUI:D8EE78*
 OUI:D8F0F2*
  ID_OUI_FROM_DATABASE=Zeebo Inc
 
+OUI:D8F710*
+ ID_OUI_FROM_DATABASE=Libre Wireless Technologies Inc.
+
+OUI:D8FB11*
+ ID_OUI_FROM_DATABASE=AXACORE
+
 OUI:D8FC93*
  ID_OUI_FROM_DATABASE=Intel Corporate
 
@@ -69286,6 +69730,9 @@ OUI:DC2C26*
 OUI:DC2E6A*
  ID_OUI_FROM_DATABASE=HCT. Co., Ltd.
 
+OUI:DC2F03*
+ ID_OUI_FROM_DATABASE=Step forward Group Co., Ltd.
+
 OUI:DC309C*
  ID_OUI_FROM_DATABASE=Heyrex Limited
 
@@ -69418,6 +69865,9 @@ OUI:DCC101*
 OUI:DCC422*
  ID_OUI_FROM_DATABASE=Systembase Limited
 
+OUI:DCC622*
+ ID_OUI_FROM_DATABASE=BUHEUNG SYSTEM
+
 OUI:DCC793*
  ID_OUI_FROM_DATABASE=Nokia Corporation
 
@@ -69448,6 +69898,9 @@ OUI:DCD52A*
 OUI:DCD87F*
  ID_OUI_FROM_DATABASE=Shenzhen JoinCyber Telecom Equipment Ltd
 
+OUI:DCDA4F*
+ ID_OUI_FROM_DATABASE=GETCK TECHNOLOGY,  INC
+
 OUI:DCDECA*
  ID_OUI_FROM_DATABASE=Akyllor
 
@@ -69460,6 +69913,9 @@ OUI:DCE578*
 OUI:DCE71C*
  ID_OUI_FROM_DATABASE=AUG Elektronik GmbH
 
+OUI:DCEC06*
+ ID_OUI_FROM_DATABASE=Heimi Network Technology Co., Ltd.
+
 OUI:DCF05D*
  ID_OUI_FROM_DATABASE=Letta Teknoloji
 
@@ -69490,6 +69946,9 @@ OUI:E00B28*
 OUI:E00C7F*
  ID_OUI_FROM_DATABASE=Nintendo Co., Ltd.
 
+OUI:E0107F*
+ ID_OUI_FROM_DATABASE=Ruckus Wireless
+
 OUI:E0143E*
  ID_OUI_FROM_DATABASE=Modoosis Inc.
 
@@ -69550,6 +70009,9 @@ OUI:E039D7*
 OUI:E03C5B*
  ID_OUI_FROM_DATABASE=SHENZHEN JIAXINJIE ELECTRON CO.,LTD
 
+OUI:E03E44*
+ ID_OUI_FROM_DATABASE=Broadcom Corporation
+
 OUI:E03E4A*
  ID_OUI_FROM_DATABASE=Cavanagh Group International
 
@@ -69688,6 +70150,9 @@ OUI:E0AF4B*
 OUI:E0B2F1*
  ID_OUI_FROM_DATABASE=FN-LINK TECHNOLOGY LIMITED
 
+OUI:E0B52D*
+ ID_OUI_FROM_DATABASE=Apple
+
 OUI:E0B7B1*
  ID_OUI_FROM_DATABASE=Pace plc
 
@@ -69829,9 +70294,15 @@ OUI:E41289*
 OUI:E41C4B*
  ID_OUI_FROM_DATABASE=V2 TECHNOLOGY, INC.
 
+OUI:E41D2D*
+ ID_OUI_FROM_DATABASE=Mellanox Technologies, Inc.
+
 OUI:E41F13*
  ID_OUI_FROM_DATABASE=IBM Corp
 
+OUI:E42354*
+ ID_OUI_FROM_DATABASE=SHENZHEN FUZHI SOFTWARE TECHNOLOGY CO.,LTD
+
 OUI:E425E7*
  ID_OUI_FROM_DATABASE=Apple
 
@@ -69961,6 +70432,9 @@ OUI:E48AD5*
 OUI:E48B7F*
  ID_OUI_FROM_DATABASE=Apple
 
+OUI:E48C0F*
+ ID_OUI_FROM_DATABASE=Discovery Insure
+
 OUI:E49069*
  ID_OUI_FROM_DATABASE=Rockwell Automation
 
@@ -70060,6 +70534,9 @@ OUI:E4F4C6*
 OUI:E4F7A1*
  ID_OUI_FROM_DATABASE=Datafox GmbH
 
+OUI:E4F8EF*
+ ID_OUI_FROM_DATABASE=Samsung Elec Co.,Ltd
+
 OUI:E4FA1D*
  ID_OUI_FROM_DATABASE=PAD Peripheral Advanced Design Inc.
 
@@ -70111,6 +70588,9 @@ OUI:E8150E*
 OUI:E817FC*
  ID_OUI_FROM_DATABASE=NIFTY Corporation
 
+OUI:E81863*
+ ID_OUI_FROM_DATABASE=IEEE REGISTRATION AUTHORITY  - Please see MAM public listing for more information.
+
 OUI:E82877*
  ID_OUI_FROM_DATABASE=TMY Co., Ltd.
 
@@ -70228,6 +70708,9 @@ OUI:E8802E*
 OUI:E880D8*
  ID_OUI_FROM_DATABASE=GNTEK Electronics Co.,Ltd.
 
+OUI:E887A3*
+ ID_OUI_FROM_DATABASE=Loxley Public Company Limited
+
 OUI:E8892C*
  ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
 
@@ -70249,6 +70732,9 @@ OUI:E8944C*
 OUI:E894F6*
  ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
 
+OUI:E89606*
+ ID_OUI_FROM_DATABASE=testo Instruments (Shenzhen) Co., Ltd.
+
 OUI:E8995A*
  ID_OUI_FROM_DATABASE=PiiGAB, Processinformation i Goteborg AB
 
@@ -70303,6 +70789,9 @@ OUI:E8C320*
 OUI:E8CBA1*
  ID_OUI_FROM_DATABASE=Nokia Corporation
 
+OUI:E8CC18*
+ ID_OUI_FROM_DATABASE=D-Link International
+
 OUI:E8CC32*
  ID_OUI_FROM_DATABASE=Micronet  LTD
 
@@ -70396,6 +70885,9 @@ OUI:EC0ED6*
 OUI:EC1120*
  ID_OUI_FROM_DATABASE=FloDesign Wind Turbine Corporation
 
+OUI:EC13B2*
+ ID_OUI_FROM_DATABASE=Netonix
+
 OUI:EC14F6*
  ID_OUI_FROM_DATABASE=BioControl AS
 
@@ -70681,6 +71173,9 @@ OUI:F015A0*
 OUI:F01C13*
  ID_OUI_FROM_DATABASE=LG Electronics
 
+OUI:F01C2D*
+ ID_OUI_FROM_DATABASE=Juniper Networks
+
 OUI:F01FAF*
  ID_OUI_FROM_DATABASE=Dell Inc
 
@@ -70729,6 +71224,9 @@ OUI:F03A4B*
 OUI:F03A55*
  ID_OUI_FROM_DATABASE=Omega Elektronik AS
 
+OUI:F03D29*
+ ID_OUI_FROM_DATABASE=Actility
+
 OUI:F03FF8*
  ID_OUI_FROM_DATABASE=R L Drake
 
@@ -70801,6 +71299,9 @@ OUI:F07BCB*
 OUI:F07D68*
  ID_OUI_FROM_DATABASE=D-Link Corporation
 
+OUI:F07F06*
+ ID_OUI_FROM_DATABASE=Cisco
+
 OUI:F07F0C*
  ID_OUI_FROM_DATABASE=Leopold Kostal GmbH &Co. KG
 
@@ -70843,6 +71344,9 @@ OUI:F09CBB*
 OUI:F09CE9*
  ID_OUI_FROM_DATABASE=Aerohive Networks Inc
 
+OUI:F09E63*
+ ID_OUI_FROM_DATABASE=Cisco
+
 OUI:F0A764*
  ID_OUI_FROM_DATABASE=GST Co., Ltd.
 
@@ -71062,6 +71566,9 @@ OUI:F4472A*
 OUI:F44848*
  ID_OUI_FROM_DATABASE=Amscreen Group Ltd
 
+OUI:F44E05*
+ ID_OUI_FROM_DATABASE=Cisco
+
 OUI:F44EFD*
  ID_OUI_FROM_DATABASE=Actions Semiconductor Co.,Ltd.(Cayman Islands)
 
@@ -71188,6 +71695,9 @@ OUI:F4B72A*
 OUI:F4B7E2*
  ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
 
+OUI:F4B85E*
+ ID_OUI_FROM_DATABASE=Texas INstruments
+
 OUI:F4BD7C*
  ID_OUI_FROM_DATABASE=Chengdu jinshi communication Co., LTD
 
@@ -71461,6 +71971,9 @@ OUI:F87B8C*
 OUI:F8811A*
  ID_OUI_FROM_DATABASE=OVERKIZ
 
+OUI:F88479*
+ ID_OUI_FROM_DATABASE=Yaojin Technology(Shenzhen)Co.,Ltd
+
 OUI:F884F2*
  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
 
@@ -71599,6 +72112,9 @@ OUI:F8E7B5*
 OUI:F8E811*
  ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
 
+OUI:F8E903*
+ ID_OUI_FROM_DATABASE=D-Link International
+
 OUI:F8E968*
  ID_OUI_FROM_DATABASE=Egker Kft.
 
@@ -71782,6 +72298,9 @@ OUI:FC5B24*
 OUI:FC5B26*
  ID_OUI_FROM_DATABASE=MikroBits
 
+OUI:FC5B39*
+ ID_OUI_FROM_DATABASE=Cisco
+
 OUI:FC6018*
  ID_OUI_FROM_DATABASE=Zhejiang Kangtai Electric Co., Ltd.
 
diff --git a/hwdb/20-pci-vendor-model.hwdb b/hwdb/20-pci-vendor-model.hwdb
index 77c727d..3bcdbc0 100644
--- a/hwdb/20-pci-vendor-model.hwdb
+++ b/hwdb/20-pci-vendor-model.hwdb
@@ -10478,6 +10478,9 @@ pci:v00001014d0000034Asv00001014sd000004C8*
 pci:v00001014d0000034Asv00001014sd00000C49*
  ID_MODEL_FROM_DATABASE=PCI-E IPR SAS Adapter (ASIC) (PCIe3 x 8 Cache SAS RAID Internal Adapter 6GB(2CCD))
 
+pci:v00001014d0000044B*
+ ID_MODEL_FROM_DATABASE=GenWQE Accelerator Adapter
+
 pci:v00001014d000004AA*
  ID_MODEL_FROM_DATABASE=Flash Adapter 90 (PCIe2 0.9TB)
 
@@ -26387,6 +26390,9 @@ pci:v000010DEd00000FE2*
 pci:v000010DEd00000FE3*
  ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 745M]
 
+pci:v000010DEd00000FE3sv0000103Csd00002B16*
+ ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 745M] (GeForce GT 745A)
+
 pci:v000010DEd00000FE3sv000017AAsd00003675*
  ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 745M] (GeForce GT 745A)
 
@@ -26420,6 +26426,9 @@ pci:v000010DEd00000FF1*
 pci:v000010DEd00000FF2*
  ID_MODEL_FROM_DATABASE=GK107GL [GRID K1]
 
+pci:v000010DEd00000FF3*
+ ID_MODEL_FROM_DATABASE=GK107GL [Quadro K420]
+
 pci:v000010DEd00000FF5*
  ID_MODEL_FROM_DATABASE=GK107GL [GRID K1 Tesla USM]
 
@@ -26546,6 +26555,9 @@ pci:v000010DEd00001029*
 pci:v000010DEd0000103A*
  ID_MODEL_FROM_DATABASE=GK110GL [Quadro K6000]
 
+pci:v000010DEd0000103C*
+ ID_MODEL_FROM_DATABASE=GK110GL [Quadro K5200]
+
 pci:v000010DEd00001040*
  ID_MODEL_FROM_DATABASE=GF119 [GeForce GT 520]
 
@@ -26981,6 +26993,12 @@ pci:v000010DEd00001140sv00001028sd000005F4*
 pci:v000010DEd00001140sv00001028sd0000064E*
  ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
 
+pci:v000010DEd00001140sv00001028sd00000652*
+ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+
+pci:v000010DEd00001140sv00001028sd00000662*
+ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+
 pci:v000010DEd00001140sv00001028sd0000068D*
  ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
 
@@ -27239,9 +27257,15 @@ pci:v000010DEd00001140sv0000152Dsd00000982*
 pci:v000010DEd00001140sv0000152Dsd00000983*
  ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
 
+pci:v000010DEd00001140sv0000152Dsd00001005*
+ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 820M)
+
 pci:v000010DEd00001140sv0000152Dsd00001012*
  ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
 
+pci:v000010DEd00001140sv0000152Dsd00001019*
+ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+
 pci:v000010DEd00001140sv0000152Dsd00001030*
  ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
 
@@ -27254,6 +27278,9 @@ pci:v000010DEd00001140sv0000152Dsd00001067*
 pci:v000010DEd00001140sv0000152Dsd00001072*
  ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
 
+pci:v000010DEd00001140sv0000152Dsd00001086*
+ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+
 pci:v000010DEd00001140sv000017AAsd00002200*
  ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (NVS 5200M)
 
@@ -27578,6 +27605,9 @@ pci:v000010DEd000011B0sv000010DEsd0000101B*
 pci:v000010DEd000011B1*
  ID_MODEL_FROM_DATABASE=GK104GL [GRID K2 Tesla USM]
 
+pci:v000010DEd000011B4*
+ ID_MODEL_FROM_DATABASE=GK104GL [Quadro K4200]
+
 pci:v000010DEd000011B6*
  ID_MODEL_FROM_DATABASE=GK104GLM [Quadro K3100M]
 
@@ -27863,6 +27893,9 @@ pci:v000010DEd00001295sv0000103Csd00002B0F*
 pci:v000010DEd00001295sv0000103Csd00002B11*
  ID_MODEL_FROM_DATABASE=GK208M [GeForce 710M] (GeForce GT 710A)
 
+pci:v000010DEd00001295sv0000103Csd00002B20*
+ ID_MODEL_FROM_DATABASE=GK208M [GeForce 710M] (GeForce 810A)
+
 pci:v000010DEd00001295sv0000103Csd00002B21*
  ID_MODEL_FROM_DATABASE=GK208M [GeForce 710M] (GeForce GT 810A)
 
@@ -27887,6 +27920,9 @@ pci:v000010DEd000012BA*
 pci:v000010DEd00001340*
  ID_MODEL_FROM_DATABASE=GM108M [GeForce 830M]
 
+pci:v000010DEd00001340sv0000103Csd00002B2B*
+ ID_MODEL_FROM_DATABASE=GM108M [GeForce 830M] (GeForce 830A)
+
 pci:v000010DEd00001341*
  ID_MODEL_FROM_DATABASE=GM108M [GeForce 840M]
 
@@ -27926,6 +27962,15 @@ pci:v000010DEd00001392*
 pci:v000010DEd00001393*
  ID_MODEL_FROM_DATABASE=GM107M [GeForce 840M]
 
+pci:v000010DEd000013B3*
+ ID_MODEL_FROM_DATABASE=GM107GLM [Quadro K2200M]
+
+pci:v000010DEd000013BA*
+ ID_MODEL_FROM_DATABASE=GM107GL [Quadro K2200]
+
+pci:v000010DEd000013BB*
+ ID_MODEL_FROM_DATABASE=GM107GL [Quadro K620]
+
 pci:v000010DF*
  ID_VENDOR_FROM_DATABASE=Emulex Corporation
 
@@ -29291,6 +29336,9 @@ pci:v00001103d00000622*
 pci:v00001103d00000640*
  ID_MODEL_FROM_DATABASE=RocketRAID 640 4 Port SATA-III Controller
 
+pci:v00001103d00000644*
+ ID_MODEL_FROM_DATABASE=RocketRAID 644 4 Port SATA-III Controller (eSATA)
+
 pci:v00001103d00001720*
  ID_MODEL_FROM_DATABASE=RocketRAID 1720 (2x SATA II RAID Controller)
 
@@ -32403,11 +32451,14 @@ pci:v00001131d00007146sv0000153Bsd00001155*
  ID_MODEL_FROM_DATABASE=SAA7146 (Cinergy 1200 DVB-S)
 
 pci:v00001131d00007146sv0000153Bsd00001156*
- ID_MODEL_FROM_DATABASE=SAA7146 (Terratec Cynergy 1200C)
+ ID_MODEL_FROM_DATABASE=SAA7146 (Cinergy 1200 DVB-C)
 
 pci:v00001131d00007146sv0000153Bsd00001157*
  ID_MODEL_FROM_DATABASE=SAA7146 (Cinergy 1200 DVB-T)
 
+pci:v00001131d00007146sv0000153Bsd00001176*
+ ID_MODEL_FROM_DATABASE=SAA7146 (Cinergy 1200 DVB-C (MK3))
+
 pci:v00001131d00007146sv00001894sd00000020*
  ID_MODEL_FROM_DATABASE=SAA7146 (KNC One DVB-C V1.0)
 
@@ -40322,6 +40373,12 @@ pci:v00001360d00000205*
 pci:v00001360d00000206*
  ID_MODEL_FROM_DATABASE=GPS180PEX GPS Receiver (PCI Express)
 
+pci:v00001360d00000207*
+ ID_MODEL_FROM_DATABASE=GLN180PEX GPS/GLONASS receiver (PCI Express)
+
+pci:v00001360d00000208*
+ ID_MODEL_FROM_DATABASE=GPS180AMC GPS Receiver (PCI Express / MicroTCA / AdvancedMC)
+
 pci:v00001360d00000301*
  ID_MODEL_FROM_DATABASE=TCR510PCI IRIG Timecode Reader
 
@@ -41522,6 +41579,9 @@ pci:v000013F6d00008788sv00001043sd00008428*
 pci:v000013F6d00008788sv00001043sd00008467*
  ID_MODEL_FROM_DATABASE=CMI8788 [Oxygen HD Audio] (CMI8786 (Xonar DG))
 
+pci:v000013F6d00008788sv00001043sd000085F4*
+ ID_MODEL_FROM_DATABASE=CMI8788 [Oxygen HD Audio] (Virtuoso 100 (Xonar Essence STX II))
+
 pci:v000013F6d00008788sv000013F6sd00008782*
  ID_MODEL_FROM_DATABASE=CMI8788 [Oxygen HD Audio] (PCI 2.0 HD Audio)
 
@@ -42846,7 +42906,7 @@ pci:v00001425d00005012*
  ID_MODEL_FROM_DATABASE=T560-CR Unified Wire Ethernet Controller
 
 pci:v00001425d00005013*
- ID_MODEL_FROM_DATABASE=T580-CR Unified Wire Ethernet Controller
+ ID_MODEL_FROM_DATABASE=T580-CHR Unified Wire Ethernet Controller
 
 pci:v00001425d00005014*
  ID_MODEL_FROM_DATABASE=T580-LP-SO-CR Unified Wire Ethernet Controller
@@ -42924,7 +42984,7 @@ pci:v00001425d00005412*
  ID_MODEL_FROM_DATABASE=T560-CR Unified Wire Ethernet Controller
 
 pci:v00001425d00005413*
- ID_MODEL_FROM_DATABASE=T580-CR Unified Wire Ethernet Controller
+ ID_MODEL_FROM_DATABASE=T580-CHR Unified Wire Ethernet Controller
 
 pci:v00001425d00005414*
  ID_MODEL_FROM_DATABASE=T580-LP-SO-CR Unified Wire Ethernet Controller
@@ -43002,7 +43062,7 @@ pci:v00001425d00005512*
  ID_MODEL_FROM_DATABASE=T560-CR Unified Wire Storage Controller
 
 pci:v00001425d00005513*
- ID_MODEL_FROM_DATABASE=T580-CR Unified Wire Storage Controller
+ ID_MODEL_FROM_DATABASE=T580-CHR Unified Wire Storage Controller
 
 pci:v00001425d00005514*
  ID_MODEL_FROM_DATABASE=T580-LP-SO-CR Unified Wire Storage Controller
@@ -43080,7 +43140,7 @@ pci:v00001425d00005612*
  ID_MODEL_FROM_DATABASE=T560-CR Unified Wire Storage Controller
 
 pci:v00001425d00005613*
- ID_MODEL_FROM_DATABASE=T580-CR Unified Wire Storage Controller
+ ID_MODEL_FROM_DATABASE=T580-CHR Unified Wire Storage Controller
 
 pci:v00001425d00005614*
  ID_MODEL_FROM_DATABASE=T580-LP-SO-CR Unified Wire Storage Controller
@@ -43236,7 +43296,7 @@ pci:v00001425d00005812*
  ID_MODEL_FROM_DATABASE=T560-CR Unified Wire Ethernet Controller [VF]
 
 pci:v00001425d00005813*
- ID_MODEL_FROM_DATABASE=T580-CR Unified Wire Ethernet Controller [VF]
+ ID_MODEL_FROM_DATABASE=T580-CHR Unified Wire Ethernet Controller [VF]
 
 pci:v00001425d00005814*
  ID_MODEL_FROM_DATABASE=T580-LP-SO-CR Unified Wire Ethernet Controller [VF]
@@ -45887,6 +45947,9 @@ pci:v000014E4d00004359sv00001028sd00000011*
 pci:v000014E4d00004359sv0000103Csd0000182C*
  ID_MODEL_FROM_DATABASE=BCM43228 802.11a/b/g/n (BCM943228HM4L 802.11a/b/g/n 2x2 Wi-Fi Adapter)
 
+pci:v000014E4d00004360*
+ ID_MODEL_FROM_DATABASE=BCM4360 802.11ac Wireless Network Adapter
+
 pci:v000014E4d00004365*
  ID_MODEL_FROM_DATABASE=BCM43142 802.11b/g/n
 
@@ -45896,6 +45959,12 @@ pci:v000014E4d00004365sv00001028sd00000016*
 pci:v000014E4d000043A0*
  ID_MODEL_FROM_DATABASE=BCM4360 802.11ac Wireless Network Adapter
 
+pci:v000014E4d000043A9*
+ ID_MODEL_FROM_DATABASE=BCM43217 802.11b/g/n
+
+pci:v000014E4d000043AA*
+ ID_MODEL_FROM_DATABASE=BCM43131 802.11b/g/n
+
 pci:v000014E4d000043B1*
  ID_MODEL_FROM_DATABASE=BCM4352 802.11ac Wireless Network Adapter
 
@@ -46875,7 +46944,7 @@ pci:v000014F1d00008852*
  ID_MODEL_FROM_DATABASE=CX23885 PCI Video and Audio Decoder
 
 pci:v000014F1d00008852sv00000070sd00008010*
- ID_MODEL_FROM_DATABASE=CX23885 PCI Video and Audio Decoder (Hauppauge WinTV HVR-1400 ExpressCard)
+ ID_MODEL_FROM_DATABASE=CX23885 PCI Video and Audio Decoder (WinTV HVR-1400 ExpressCard)
 
 pci:v000014F1d00008852sv0000107Dsd00006F22*
  ID_MODEL_FROM_DATABASE=CX23885 PCI Video and Audio Decoder (WinFast PxTV1200)
@@ -46889,6 +46958,9 @@ pci:v000014F1d00008852sv0000153Bsd0000117E*
 pci:v000014F1d00008852sv000018ACsd0000DB78*
  ID_MODEL_FROM_DATABASE=CX23885 PCI Video and Audio Decoder (FusionHDTV DVB-T Dual Express)
 
+pci:v000014F1d00008852sv00004254sd00009580*
+ ID_MODEL_FROM_DATABASE=CX23885 PCI Video and Audio Decoder (T9580)
+
 pci:v000014F1d00008880*
  ID_MODEL_FROM_DATABASE=CX23887/8 PCIe Broadcast Audio and Video Decoder with 3D Comb
 
@@ -47429,6 +47501,18 @@ pci:v00001542*
 pci:v00001542d00009260*
  ID_MODEL_FROM_DATABASE=RCIM-II Real-Time Clock & Interrupt Module
 
+pci:v00001542d00009272*
+ ID_MODEL_FROM_DATABASE=Pulse Width Modulator Card
+
+pci:v00001542d00009277*
+ ID_MODEL_FROM_DATABASE=5 Volt Delta Sigma Converter Card
+
+pci:v00001542d00009278*
+ ID_MODEL_FROM_DATABASE=10 Volt Delta Sigma Converter Card
+
+pci:v00001542d00009287*
+ ID_MODEL_FROM_DATABASE=Analog Output Card
+
 pci:v00001543*
  ID_VENDOR_FROM_DATABASE=SILICON Laboratories
 
@@ -47886,7 +47970,10 @@ pci:v000015ADd00000774*
  ID_MODEL_FROM_DATABASE=USB1.1 UHCI Controller
 
 pci:v000015ADd00000778*
- ID_MODEL_FROM_DATABASE=USB3 xHCI Controller
+ ID_MODEL_FROM_DATABASE=USB3 xHCI 0.96 Controller
+
+pci:v000015ADd00000779*
+ ID_MODEL_FROM_DATABASE=USB3 xHCI 1.0 Controller
 
 pci:v000015ADd00000790*
  ID_MODEL_FROM_DATABASE=PCI bridge
@@ -49493,6 +49580,9 @@ pci:v000016B8*
 pci:v000016BE*
  ID_VENDOR_FROM_DATABASE=Creatix Polymedia GmbH
 
+pci:v000016C3*
+ ID_VENDOR_FROM_DATABASE=Synopsys, Inc.
+
 pci:v000016C6*
  ID_VENDOR_FROM_DATABASE=Micrel-Kendin
 
@@ -52490,6 +52580,9 @@ pci:v00001A29*
 pci:v00001A29d00004338*
  ID_MODEL_FROM_DATABASE=CP8 Content Processor ASIC
 
+pci:v00001A29d00004E36*
+ ID_MODEL_FROM_DATABASE=NP6 Network Processor
+
 pci:v00001A2B*
  ID_VENDOR_FROM_DATABASE=Ascom AG
 
@@ -53921,6 +54014,9 @@ pci:v0000416Cd00000100*
 pci:v0000416Cd00000200*
  ID_MODEL_FROM_DATABASE=CPC
 
+pci:v00004254*
+ ID_VENDOR_FROM_DATABASE=DVBSky
+
 pci:v00004321*
  ID_VENDOR_FROM_DATABASE=Tata Power Strategic Electronics Division
 
@@ -59606,6 +59702,12 @@ pci:v00008086d000015A2*
 pci:v00008086d000015A3*
  ID_MODEL_FROM_DATABASE=Ethernet Connection (3) I218-V
 
+pci:v00008086d000015B7*
+ ID_MODEL_FROM_DATABASE=Ethernet Connection (2) I219-V
+
+pci:v00008086d000015B8*
+ ID_MODEL_FROM_DATABASE=Ethernet Connection (2) I219-LM
+
 pci:v00008086d00001600*
  ID_MODEL_FROM_DATABASE=Broadwell-U Host Bridge -OPI
 
@@ -69599,6 +69701,9 @@ pci:v00008086d00003B23*
 pci:v00008086d00003B25*
  ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset SATA RAID Controller
 
+pci:v00008086d00003B25sv0000103Csd00003118*
+ ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset SATA RAID Controller (HP Smart Array B110i SATA RAID Controller)
+
 pci:v00008086d00003B26*
  ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset 2 port SATA IDE Controller
 
@@ -70703,6 +70808,489 @@ pci:v00008086d000065FA*
 pci:v00008086d000065FF*
  ID_MODEL_FROM_DATABASE=5100 Chipset DMA Engine
 
+pci:v00008086d00006F00*
+ ID_MODEL_FROM_DATABASE=Broadwell DMI2
+
+pci:v00008086d00006F01*
+ ID_MODEL_FROM_DATABASE=Broadwell PCI Express Root Port 0
+
+pci:v00008086d00006F02*
+ ID_MODEL_FROM_DATABASE=Broadwell PCI Express Root Port 1
+
+pci:v00008086d00006F03*
+ ID_MODEL_FROM_DATABASE=Broadwell PCI Express Root Port 1
+
+pci:v00008086d00006F04*
+ ID_MODEL_FROM_DATABASE=Broadwell PCI Express Root Port 2
+
+pci:v00008086d00006F05*
+ ID_MODEL_FROM_DATABASE=Broadwell PCI Express Root Port 2
+
+pci:v00008086d00006F06*
+ ID_MODEL_FROM_DATABASE=Broadwell PCI Express Root Port 2
+
+pci:v00008086d00006F07*
+ ID_MODEL_FROM_DATABASE=Broadwell PCI Express Root Port 2
+
+pci:v00008086d00006F08*
+ ID_MODEL_FROM_DATABASE=Broadwell PCI Express Root Port 3
+
+pci:v00008086d00006F09*
+ ID_MODEL_FROM_DATABASE=Broadwell PCI Express Root Port 3
+
+pci:v00008086d00006F0A*
+ ID_MODEL_FROM_DATABASE=Broadwell PCI Express Root Port 3
+
+pci:v00008086d00006F0B*
+ ID_MODEL_FROM_DATABASE=Broadwell PCI Express Root Port 3
+
+pci:v00008086d00006F10*
+ ID_MODEL_FROM_DATABASE=Broadwell IIO Debug
+
+pci:v00008086d00006F11*
+ ID_MODEL_FROM_DATABASE=Broadwell IIO Debug
+
+pci:v00008086d00006F12*
+ ID_MODEL_FROM_DATABASE=Broadwell IIO Debug
+
+pci:v00008086d00006F13*
+ ID_MODEL_FROM_DATABASE=Broadwell IIO Debug
+
+pci:v00008086d00006F14*
+ ID_MODEL_FROM_DATABASE=Broadwell IIO Debug
+
+pci:v00008086d00006F15*
+ ID_MODEL_FROM_DATABASE=Broadwell IIO Debug
+
+pci:v00008086d00006F16*
+ ID_MODEL_FROM_DATABASE=Broadwell IIO Debug
+
+pci:v00008086d00006F17*
+ ID_MODEL_FROM_DATABASE=Broadwell IIO Debug
+
+pci:v00008086d00006F18*
+ ID_MODEL_FROM_DATABASE=Broadwell IIO Debug
+
+pci:v00008086d00006F19*
+ ID_MODEL_FROM_DATABASE=Broadwell IIO Debug
+
+pci:v00008086d00006F1A*
+ ID_MODEL_FROM_DATABASE=Broadwell IIO Debug
+
+pci:v00008086d00006F1B*
+ ID_MODEL_FROM_DATABASE=Broadwell IIO Debug
+
+pci:v00008086d00006F1C*
+ ID_MODEL_FROM_DATABASE=Broadwell IIO Debug
+
+pci:v00008086d00006F1D*
+ ID_MODEL_FROM_DATABASE=Broadwell R2PCIe Agent
+
+pci:v00008086d00006F1E*
+ ID_MODEL_FROM_DATABASE=Broadwell Ubox
+
+pci:v00008086d00006F1F*
+ ID_MODEL_FROM_DATABASE=Broadwell Ubox
+
+pci:v00008086d00006F20*
+ ID_MODEL_FROM_DATABASE=Broadwell-DE Crystal Beach DMA Channel 0
+
+pci:v00008086d00006F21*
+ ID_MODEL_FROM_DATABASE=Broadwell-DE Crystal Beach DMA Channel 1
+
+pci:v00008086d00006F22*
+ ID_MODEL_FROM_DATABASE=Broadwell-DE Crystal Beach DMA Channel 2
+
+pci:v00008086d00006F23*
+ ID_MODEL_FROM_DATABASE=Broadwell-DE Crystal Beach DMA Channel 3
+
+pci:v00008086d00006F24*
+ ID_MODEL_FROM_DATABASE=Broadwell-DE Crystal Beach DMA Channel 4
+
+pci:v00008086d00006F25*
+ ID_MODEL_FROM_DATABASE=Broadwell-DE Crystal Beach DMA Channel 5
+
+pci:v00008086d00006F26*
+ ID_MODEL_FROM_DATABASE=Broadwell-DE Crystal Beach DMA Channel 6
+
+pci:v00008086d00006F27*
+ ID_MODEL_FROM_DATABASE=Broadwell-DE Crystal Beach DMA Channel 7
+
+pci:v00008086d00006F28*
+ ID_MODEL_FROM_DATABASE=Broadwell Adress Map/VTd_Misc/System Management
+
+pci:v00008086d00006F29*
+ ID_MODEL_FROM_DATABASE=Broadwell IIO Hot Plug
+
+pci:v00008086d00006F2A*
+ ID_MODEL_FROM_DATABASE=Broadwell IIO RAS/Control Status/Global Errors
+
+pci:v00008086d00006F2C*
+ ID_MODEL_FROM_DATABASE=Broadwell I/O APIC
+
+pci:v00008086d00006F30*
+ ID_MODEL_FROM_DATABASE=Broadwell Home Agent 0
+
+pci:v00008086d00006F32*
+ ID_MODEL_FROM_DATABASE=Broadwell QPI Link 0
+
+pci:v00008086d00006F33*
+ ID_MODEL_FROM_DATABASE=Broadwell QPI Link 1
+
+pci:v00008086d00006F34*
+ ID_MODEL_FROM_DATABASE=Broadwell R2PCIe Agent
+
+pci:v00008086d00006F36*
+ ID_MODEL_FROM_DATABASE=Broadwell R3 QPI Link 0/1
+
+pci:v00008086d00006F37*
+ ID_MODEL_FROM_DATABASE=Broadwell R3 QPI Link 0/1
+
+pci:v00008086d00006F38*
+ ID_MODEL_FROM_DATABASE=Broadwell Home Agent 1
+
+pci:v00008086d00006F39*
+ ID_MODEL_FROM_DATABASE=Broadwell IO Performance Monitoring
+
+pci:v00008086d00006F3A*
+ ID_MODEL_FROM_DATABASE=Broadwell QPI Link 2
+
+pci:v00008086d00006F3E*
+ ID_MODEL_FROM_DATABASE=Broadwell R3 QPI Link 2
+
+pci:v00008086d00006F3F*
+ ID_MODEL_FROM_DATABASE=Broadwell R3 QPI Link 2
+
+pci:v00008086d00006F40*
+ ID_MODEL_FROM_DATABASE=Broadwell QPI Link 2
+
+pci:v00008086d00006F41*
+ ID_MODEL_FROM_DATABASE=Broadwell R3 QPI Link 2
+
+pci:v00008086d00006F43*
+ ID_MODEL_FROM_DATABASE=Broadwell QPI Link 2
+
+pci:v00008086d00006F45*
+ ID_MODEL_FROM_DATABASE=Broadwell QPI Link 2 Debug
+
+pci:v00008086d00006F46*
+ ID_MODEL_FROM_DATABASE=Broadwell QPI Link 2 Debug
+
+pci:v00008086d00006F47*
+ ID_MODEL_FROM_DATABASE=Broadwell QPI Link 2 Debug
+
+pci:v00008086d00006F60*
+ ID_MODEL_FROM_DATABASE=Broadwell Home Agent 1
+
+pci:v00008086d00006F68*
+ ID_MODEL_FROM_DATABASE=Broadwell Target Address/Thermal/RAS
+
+pci:v00008086d00006F6A*
+ ID_MODEL_FROM_DATABASE=Broadwell Channel Target Address Decoder
+
+pci:v00008086d00006F6B*
+ ID_MODEL_FROM_DATABASE=Broadwell Channel Target Address Decoder
+
+pci:v00008086d00006F6C*
+ ID_MODEL_FROM_DATABASE=Broadwell Channel Target Address Decoder
+
+pci:v00008086d00006F6D*
+ ID_MODEL_FROM_DATABASE=Broadwell Channel Target Address Decoder
+
+pci:v00008086d00006F6E*
+ ID_MODEL_FROM_DATABASE=Broadwell DDRIO Channel 2/3 Broadcast
+
+pci:v00008086d00006F6F*
+ ID_MODEL_FROM_DATABASE=Broadwell DDRIO Global Broadcast
+
+pci:v00008086d00006F70*
+ ID_MODEL_FROM_DATABASE=Broadwell Home Agent 0 Debug
+
+pci:v00008086d00006F71*
+ ID_MODEL_FROM_DATABASE=Broadwell Memory Controller 0 - Target Address/Thermal/RAS
+
+pci:v00008086d00006F76*
+ ID_MODEL_FROM_DATABASE=Broadwell R3 QPI Link Debug
+
+pci:v00008086d00006F78*
+ ID_MODEL_FROM_DATABASE=Broadwell Home Agent 1 Debug
+
+pci:v00008086d00006F79*
+ ID_MODEL_FROM_DATABASE=Broadwell Target Address/Thermal/RAS
+
+pci:v00008086d00006F7D*
+ ID_MODEL_FROM_DATABASE=Broadwell Ubox
+
+pci:v00008086d00006F7E*
+ ID_MODEL_FROM_DATABASE=Broadwell R3 QPI Link Debug
+
+pci:v00008086d00006F80*
+ ID_MODEL_FROM_DATABASE=Broadwell QPI Link 0
+
+pci:v00008086d00006F81*
+ ID_MODEL_FROM_DATABASE=Broadwell R3 QPI Link 0/1
+
+pci:v00008086d00006F83*
+ ID_MODEL_FROM_DATABASE=Broadwell QPI Link 0
+
+pci:v00008086d00006F85*
+ ID_MODEL_FROM_DATABASE=Broadwell QPI Link 0 Debug
+
+pci:v00008086d00006F86*
+ ID_MODEL_FROM_DATABASE=Broadwell QPI Link 0 Debug
+
+pci:v00008086d00006F87*
+ ID_MODEL_FROM_DATABASE=Broadwell QPI Link 0 Debug
+
+pci:v00008086d00006F88*
+ ID_MODEL_FROM_DATABASE=Broadwell Power Control Unit
+
+pci:v00008086d00006F8A*
+ ID_MODEL_FROM_DATABASE=Broadwell Power Control Unit
+
+pci:v00008086d00006F90*
+ ID_MODEL_FROM_DATABASE=Broadwell QPI Link 1
+
+pci:v00008086d00006F93*
+ ID_MODEL_FROM_DATABASE=Broadwell QPI Link 1
+
+pci:v00008086d00006F95*
+ ID_MODEL_FROM_DATABASE=Broadwell QPI Link 1 Debug
+
+pci:v00008086d00006F96*
+ ID_MODEL_FROM_DATABASE=Broadwell QPI Link 1 Debug
+
+pci:v00008086d00006F98*
+ ID_MODEL_FROM_DATABASE=Broadwell Power Control Unit
+
+pci:v00008086d00006F99*
+ ID_MODEL_FROM_DATABASE=Broadwell Power Control Unit
+
+pci:v00008086d00006F9A*
+ ID_MODEL_FROM_DATABASE=Broadwell Power Control Unit
+
+pci:v00008086d00006F9C*
+ ID_MODEL_FROM_DATABASE=Broadwell Power Control Unit
+
+pci:v00008086d00006FA0*
+ ID_MODEL_FROM_DATABASE=Broadwell Home Agent 0
+
+pci:v00008086d00006FA8*
+ ID_MODEL_FROM_DATABASE=Broadwell Memory Controller 0 - Target Address/Thermal/RAS
+
+pci:v00008086d00006FAA*
+ ID_MODEL_FROM_DATABASE=Broadwell Memory Controller 0 - Channel Target Address Decoder
+
+pci:v00008086d00006FAB*
+ ID_MODEL_FROM_DATABASE=Broadwell Memory Controller 0 - Channel Target Address Decoder
+
+pci:v00008086d00006FAC*
+ ID_MODEL_FROM_DATABASE=Broadwell Memory Controller 0 - Channel Target Address Decoder
+
+pci:v00008086d00006FAD*
+ ID_MODEL_FROM_DATABASE=Broadwell Memory Controller 0 - Channel Target Address Decoder
+
+pci:v00008086d00006FAE*
+ ID_MODEL_FROM_DATABASE=Broadwell DDRIO Channel 0/1 Broadcast
+
+pci:v00008086d00006FAF*
+ ID_MODEL_FROM_DATABASE=Broadwell DDRIO Global Broadcast
+
+pci:v00008086d00006FB0*
+ ID_MODEL_FROM_DATABASE=Broadwell Memory Controller 0 - Channel 0 Thermal Control
+
+pci:v00008086d00006FB1*
+ ID_MODEL_FROM_DATABASE=Broadwell Memory Controller 0 - Channel 1 Thermal Control
+
+pci:v00008086d00006FB2*
+ ID_MODEL_FROM_DATABASE=Broadwell Memory Controller 0 - Channel 0 Error
+
+pci:v00008086d00006FB3*
+ ID_MODEL_FROM_DATABASE=Broadwell Memory Controller 0 - Channel 1 Error
+
+pci:v00008086d00006FB4*
+ ID_MODEL_FROM_DATABASE=Broadwell Memory Controller 0 - Channel 2 Thermal Control
+
+pci:v00008086d00006FB5*
+ ID_MODEL_FROM_DATABASE=Broadwell Memory Controller 0 - Channel 3 Thermal Control
+
+pci:v00008086d00006FB6*
+ ID_MODEL_FROM_DATABASE=Broadwell Memory Controller 0 - Channel 2 Error
+
+pci:v00008086d00006FB7*
+ ID_MODEL_FROM_DATABASE=Broadwell Memory Controller 0 - Channel 3 Error
+
+pci:v00008086d00006FB8*
+ ID_MODEL_FROM_DATABASE=Broadwell DDRIO Channel 2/3 Interface
+
+pci:v00008086d00006FB9*
+ ID_MODEL_FROM_DATABASE=Broadwell DDRIO Channel 2/3 Interface
+
+pci:v00008086d00006FBA*
+ ID_MODEL_FROM_DATABASE=Broadwell DDRIO Channel 2/3 Interface
+
+pci:v00008086d00006FBB*
+ ID_MODEL_FROM_DATABASE=Broadwell DDRIO Channel 2/3 Interface
+
+pci:v00008086d00006FBC*
+ ID_MODEL_FROM_DATABASE=Broadwell DDRIO Channel 0/1 Interface
+
+pci:v00008086d00006FBD*
+ ID_MODEL_FROM_DATABASE=Broadwell DDRIO Channel 0/1 Interface
+
+pci:v00008086d00006FBE*
+ ID_MODEL_FROM_DATABASE=Broadwell DDRIO Channel 0/1 Interface
+
+pci:v00008086d00006FBF*
+ ID_MODEL_FROM_DATABASE=Broadwell DDRIO Channel 0/1 Interface
+
+pci:v00008086d00006FC0*
+ ID_MODEL_FROM_DATABASE=Broadwell Power Control Unit
+
+pci:v00008086d00006FC1*
+ ID_MODEL_FROM_DATABASE=Broadwell Power Control Unit
+
+pci:v00008086d00006FC2*
+ ID_MODEL_FROM_DATABASE=Broadwell Power Control Unit
+
+pci:v00008086d00006FC3*
+ ID_MODEL_FROM_DATABASE=Broadwell Power Control Unit
+
+pci:v00008086d00006FC4*
+ ID_MODEL_FROM_DATABASE=Broadwell Power Control Unit
+
+pci:v00008086d00006FC5*
+ ID_MODEL_FROM_DATABASE=Broadwell Power Control Unit
+
+pci:v00008086d00006FC6*
+ ID_MODEL_FROM_DATABASE=Broadwell Power Control Unit
+
+pci:v00008086d00006FC7*
+ ID_MODEL_FROM_DATABASE=Broadwell Power Control Unit
+
+pci:v00008086d00006FC8*
+ ID_MODEL_FROM_DATABASE=Broadwell Power Control Unit
+
+pci:v00008086d00006FC9*
+ ID_MODEL_FROM_DATABASE=Broadwell Power Control Unit
+
+pci:v00008086d00006FCA*
+ ID_MODEL_FROM_DATABASE=Broadwell Power Control Unit
+
+pci:v00008086d00006FCB*
+ ID_MODEL_FROM_DATABASE=Broadwell Power Control Unit
+
+pci:v00008086d00006FCC*
+ ID_MODEL_FROM_DATABASE=Broadwell Power Control Unit
+
+pci:v00008086d00006FCD*
+ ID_MODEL_FROM_DATABASE=Broadwell Power Control Unit
+
+pci:v00008086d00006FCE*
+ ID_MODEL_FROM_DATABASE=Broadwell Power Control Unit
+
+pci:v00008086d00006FCF*
+ ID_MODEL_FROM_DATABASE=Broadwell Power Control Unit
+
+pci:v00008086d00006FD0*
+ ID_MODEL_FROM_DATABASE=Broadwell Memory Controller 1 - Channel 0 Thermal Control
+
+pci:v00008086d00006FD1*
+ ID_MODEL_FROM_DATABASE=Broadwell Memory Controller 1 - Channel 1 Thermal Control
+
+pci:v00008086d00006FD2*
+ ID_MODEL_FROM_DATABASE=Broadwell Memory Controller 1 - Channel 0 Error
+
+pci:v00008086d00006FD3*
+ ID_MODEL_FROM_DATABASE=Broadwell Memory Controller 1 - Channel 1 Error
+
+pci:v00008086d00006FD4*
+ ID_MODEL_FROM_DATABASE=Broadwell Memory Controller 1 - Channel 2 Thermal Control
+
+pci:v00008086d00006FD5*
+ ID_MODEL_FROM_DATABASE=Broadwell Memory Controller 1 - Channel 3 Thermal Control
+
+pci:v00008086d00006FD6*
+ ID_MODEL_FROM_DATABASE=Broadwell Memory Controller 1 - Channel 2 Error
+
+pci:v00008086d00006FD7*
+ ID_MODEL_FROM_DATABASE=Broadwell Memory Controller 1 - Channel 3 Error
+
+pci:v00008086d00006FE0*
+ ID_MODEL_FROM_DATABASE=Broadwell Caching Agent
+
+pci:v00008086d00006FE1*
+ ID_MODEL_FROM_DATABASE=Broadwell Caching Agent
+
+pci:v00008086d00006FE2*
+ ID_MODEL_FROM_DATABASE=Broadwell Caching Agent
+
+pci:v00008086d00006FE3*
+ ID_MODEL_FROM_DATABASE=Broadwell Caching Agent
+
+pci:v00008086d00006FE4*
+ ID_MODEL_FROM_DATABASE=Broadwell Caching Agent
+
+pci:v00008086d00006FE5*
+ ID_MODEL_FROM_DATABASE=Broadwell Caching Agent
+
+pci:v00008086d00006FE6*
+ ID_MODEL_FROM_DATABASE=Broadwell Caching Agent
+
+pci:v00008086d00006FE7*
+ ID_MODEL_FROM_DATABASE=Broadwell Caching Agent
+
+pci:v00008086d00006FE8*
+ ID_MODEL_FROM_DATABASE=Broadwell Caching Agent
+
+pci:v00008086d00006FE9*
+ ID_MODEL_FROM_DATABASE=Broadwell Caching Agent
+
+pci:v00008086d00006FEA*
+ ID_MODEL_FROM_DATABASE=Broadwell Caching Agent
+
+pci:v00008086d00006FEB*
+ ID_MODEL_FROM_DATABASE=Broadwell Caching Agent
+
+pci:v00008086d00006FEC*
+ ID_MODEL_FROM_DATABASE=Broadwell Caching Agent
+
+pci:v00008086d00006FED*
+ ID_MODEL_FROM_DATABASE=Broadwell Caching Agent
+
+pci:v00008086d00006FEE*
+ ID_MODEL_FROM_DATABASE=Broadwell Caching Agent
+
+pci:v00008086d00006FEF*
+ ID_MODEL_FROM_DATABASE=Broadwell Caching Agent
+
+pci:v00008086d00006FF0*
+ ID_MODEL_FROM_DATABASE=Broadwell Caching Agent
+
+pci:v00008086d00006FF1*
+ ID_MODEL_FROM_DATABASE=Broadwell Caching Agent
+
+pci:v00008086d00006FF8*
+ ID_MODEL_FROM_DATABASE=Broadwell Caching Agent
+
+pci:v00008086d00006FF9*
+ ID_MODEL_FROM_DATABASE=Broadwell Caching Agent
+
+pci:v00008086d00006FFA*
+ ID_MODEL_FROM_DATABASE=Broadwell Caching Agent
+
+pci:v00008086d00006FFB*
+ ID_MODEL_FROM_DATABASE=Broadwell Caching Agent
+
+pci:v00008086d00006FFC*
+ ID_MODEL_FROM_DATABASE=Broadwell Caching Agent
+
+pci:v00008086d00006FFD*
+ ID_MODEL_FROM_DATABASE=Broadwell Caching Agent
+
+pci:v00008086d00006FFE*
+ ID_MODEL_FROM_DATABASE=Broadwell Caching Agent
+
 pci:v00008086d00007000*
  ID_MODEL_FROM_DATABASE=82371SB PIIX3 ISA [Natoma/Triton II]
 
@@ -73781,6 +74369,9 @@ pci:v0000D161d00001405*
 pci:v0000D161d00001420*
  ID_MODEL_FROM_DATABASE=Wildcard TE420 quad-span T1/E1/J1 card 3.3V (PCI-Express) (5th gen)
 
+pci:v0000D161d00001820*
+ ID_MODEL_FROM_DATABASE=Wildcard TE820 octal-span T1/E1/J1 card 3.3V (PCI-Express)
+
 pci:v0000D161d00002400*
  ID_MODEL_FROM_DATABASE=Wildcard TDM2400P 24-port analog card
 
@@ -73820,6 +74411,24 @@ pci:v0000D161d0000800A*
 pci:v0000D161d0000800B*
  ID_MODEL_FROM_DATABASE=Wildcard TE134 single-span T1/E1/J1 card
 
+pci:v0000D161d0000800C*
+ ID_MODEL_FROM_DATABASE=Wildcard A8A 8-port analog card
+
+pci:v0000D161d0000800D*
+ ID_MODEL_FROM_DATABASE=Wildcard A8B 8-port analog card (PCI-Express)
+
+pci:v0000D161d0000800E*
+ ID_MODEL_FROM_DATABASE=Wildcard TE235/TE435 quad-span T1/E1/J1 card (PCI-Express)
+
+pci:v0000D161d0000800F*
+ ID_MODEL_FROM_DATABASE=Wildcard A4A 4-port analog card
+
+pci:v0000D161d00008010*
+ ID_MODEL_FROM_DATABASE=Wildcard A4B 4-port analog card (PCI-Express)
+
+pci:v0000D161d00008013*
+ ID_MODEL_FROM_DATABASE=Wildcard TE236/TE436 quad-span T1/E1/J1 card
+
 pci:v0000D161d0000B410*
  ID_MODEL_FROM_DATABASE=Wildcard B410 quad-BRI card
 
diff --git a/hwdb/20-usb-vendor-model.hwdb b/hwdb/20-usb-vendor-model.hwdb
index 89cd5b1..d87313c 100644
--- a/hwdb/20-usb-vendor-model.hwdb
+++ b/hwdb/20-usb-vendor-model.hwdb
@@ -524,6 +524,9 @@ usb:v03F0p0317*
 usb:v03F0p0324*
  ID_MODEL_FROM_DATABASE=SK-2885 keyboard
 
+usb:v03F0p034A*
+ ID_MODEL_FROM_DATABASE=Elite Keyboard
+
 usb:v03F0p0401*
  ID_MODEL_FROM_DATABASE=ScanJet 5200c
 
@@ -767,6 +770,9 @@ usb:v03F0p1317*
 usb:v03F0p1327*
  ID_MODEL_FROM_DATABASE=iLO Virtual Hub
 
+usb:v03F0p134A*
+ ID_MODEL_FROM_DATABASE=Optical Mouse
+
 usb:v03F0p1405*
  ID_MODEL_FROM_DATABASE=ScanJet 3670
 
@@ -2336,6 +2342,12 @@ usb:v0403pEF10*
 usb:v0403pF070*
  ID_MODEL_FROM_DATABASE=Serial Converter 422/485 [Vardaan VEUSB422R3]
 
+usb:v0403pF0C8*
+ ID_MODEL_FROM_DATABASE=SPROG Decoder Programmer
+
+usb:v0403pF0C9*
+ ID_MODEL_FROM_DATABASE=SPROG-DCC CAN-USB
+
 usb:v0403pF0E9*
  ID_MODEL_FROM_DATABASE=Tagsys L-P101
 
@@ -2642,6 +2654,9 @@ usb:v0409p02B4*
 usb:v0409p02B6*
  ID_MODEL_FROM_DATABASE=Aterm WL300NU-GS 802.11n Wireless Adapter
 
+usb:v0409p02BC*
+ ID_MODEL_FROM_DATABASE=Computer Monitor
+
 usb:v0409p0300*
  ID_MODEL_FROM_DATABASE=LifeTouch Note
 
@@ -5348,6 +5363,9 @@ usb:v0452p0050*
 usb:v0452p0051*
  ID_MODEL_FROM_DATABASE=Integrated Hub
 
+usb:v0452p0100*
+ ID_MODEL_FROM_DATABASE=Control Panel for Leica TCS SP5
+
 usb:v0453*
  ID_VENDOR_FROM_DATABASE=CMD Technology
 
@@ -8759,6 +8777,9 @@ usb:v0480pA009*
 usb:v0480pA00D*
  ID_MODEL_FROM_DATABASE=STOR.E BASICS 500GB
 
+usb:v0480pB001*
+ ID_MODEL_FROM_DATABASE=Stor.E Partner
+
 usb:v0480pD010*
  ID_MODEL_FROM_DATABASE=External Disk 3TB
 
@@ -11222,6 +11243,9 @@ usb:v04A9p3261*
 usb:v04A9p3262*
  ID_MODEL_FROM_DATABASE=PowerShot A2600
 
+usb:v04A9p3263*
+ ID_MODEL_FROM_DATABASE=PowerShot SX275 HS
+
 usb:v04A9p3264*
  ID_MODEL_FROM_DATABASE=PowerShot A1400
 
@@ -11240,6 +11264,9 @@ usb:v04A9p3276*
 usb:v04A9p3277*
  ID_MODEL_FROM_DATABASE=PowerShot SX510 HS
 
+usb:v04A9p3278*
+ ID_MODEL_FROM_DATABASE=PowerShot S200
+
 usb:v04A9p327D*
  ID_MODEL_FROM_DATABASE=Powershot ELPH 115 IS / IXUS 132
 
@@ -11645,6 +11672,9 @@ usb:v04B4p2050*
 usb:v04B4p2830*
  ID_MODEL_FROM_DATABASE=Opera1 DVB-S (cold state)
 
+usb:v04B4p3813*
+ ID_MODEL_FROM_DATABASE=NANO BIOS Programmer
+
 usb:v04B4p4235*
  ID_MODEL_FROM_DATABASE=Monitor 02 Driver
 
@@ -13100,9 +13130,15 @@ usb:v04D8p900A*
 usb:v04D8pC001*
  ID_MODEL_FROM_DATABASE=PicoLCD 20x4
 
+usb:v04D8pF4B5*
+ ID_MODEL_FROM_DATABASE=SmartScope
+
 usb:v04D8pF8DA*
  ID_MODEL_FROM_DATABASE=Hughski Ltd. ColorHug
 
+usb:v04D8pF91C*
+ ID_MODEL_FROM_DATABASE=SPROG IIv3
+
 usb:v04D8pFAFF*
  ID_MODEL_FROM_DATABASE=Dangerous Prototypes BusPirate v4 Bootloader mode
 
@@ -13118,6 +13154,9 @@ usb:v04D8pFBBA*
 usb:v04D8pFBBB*
  ID_MODEL_FROM_DATABASE=DiscFerret Magnetic Disc Analyser (active mode)
 
+usb:v04D8pFC1E*
+ ID_MODEL_FROM_DATABASE=Bachrus Speedometer Interface
+
 usb:v04D8pFC92*
  ID_MODEL_FROM_DATABASE=Open Bench Logic Sniffer
 
@@ -14432,6 +14471,9 @@ usb:v04F2p0403*
 usb:v04F2p0418*
  ID_MODEL_FROM_DATABASE=KU-0418 Tactical Pad
 
+usb:v04F2p0618*
+ ID_MODEL_FROM_DATABASE=RG-0618U Wireless HID Receiver & KG-0609 Wireless Keyboard with Touchpad
+
 usb:v04F2p0760*
  ID_MODEL_FROM_DATABASE=Acer KU-0760 Keyboard
 
@@ -15336,7 +15378,7 @@ usb:v04FCp0171*
  ID_MODEL_FROM_DATABASE=SPCA1527A/SPCA1528 SD card camera (Mass Storage mode)
 
 usb:v04FCp0201*
- ID_MODEL_FROM_DATABASE=RS232C Adapter
+ ID_MODEL_FROM_DATABASE=SPCP825 RS232C Adapter
 
 usb:v04FCp0232*
  ID_MODEL_FROM_DATABASE=Fingerprint
@@ -29036,6 +29078,9 @@ usb:v08E3p0301*
 usb:v08E4*
  ID_VENDOR_FROM_DATABASE=Pioneer Corp.
 
+usb:v08E4p0185*
+ ID_MODEL_FROM_DATABASE=DDJ-WeGO2
+
 usb:v08E5*
  ID_VENDOR_FROM_DATABASE=Litronic
 
@@ -33080,6 +33125,12 @@ usb:v0B48p300D*
 usb:v0B48p300E*
  ID_MODEL_FROM_DATABASE=TT-connect C-2400
 
+usb:v0B48p3012*
+ ID_MODEL_FROM_DATABASE=TT-connect CT2-4650 CI
+
+usb:v0B48p3014*
+ ID_MODEL_FROM_DATABASE=TT-TVStick CT2-4400
+
 usb:v0B49*
  ID_VENDOR_FROM_DATABASE=ASCII Corp.
 
@@ -34086,7 +34137,7 @@ usb:v0BC2p3101*
  ID_MODEL_FROM_DATABASE=FreeAgent XTreme 640GB
 
 usb:v0BC2p3312*
- ID_MODEL_FROM_DATABASE=SRD00F2 [Expansion Desktop Drive 2TB]
+ ID_MODEL_FROM_DATABASE=SRD00F2 Expansion Desktop Drive (STBV)
 
 usb:v0BC2p3320*
  ID_MODEL_FROM_DATABASE=SRD00F2 [Expansion Desktop Drive]
@@ -34109,6 +34160,9 @@ usb:v0BC2p5031*
 usb:v0BC2p5070*
  ID_MODEL_FROM_DATABASE=FreeAgent GoFlex Desk
 
+usb:v0BC2p5071*
+ ID_MODEL_FROM_DATABASE=FreeAgent GoFlex Desk
+
 usb:v0BC2p50A1*
  ID_MODEL_FROM_DATABASE=FreeAgent GoFlex Desk
 
@@ -34133,6 +34187,9 @@ usb:v0BC2pA0A4*
 usb:v0BC2pAB00*
  ID_MODEL_FROM_DATABASE=Slim Portable Drive
 
+usb:v0BC2pAB20*
+ ID_MODEL_FROM_DATABASE=Backup Plus Portable Drive
+
 usb:v0BC3*
  ID_VENDOR_FROM_DATABASE=IPWireless, Inc.
 
@@ -34301,6 +34358,9 @@ usb:v0BDAp0176*
 usb:v0BDAp0178*
  ID_MODEL_FROM_DATABASE=Mass Storage Device
 
+usb:v0BDAp0179*
+ ID_MODEL_FROM_DATABASE=RTL8188ETV Wireless LAN 802.11n Network Adapter
+
 usb:v0BDAp0184*
  ID_MODEL_FROM_DATABASE=RTS5182 Card Reader
 
@@ -34322,6 +34382,9 @@ usb:v0BDAp2832*
 usb:v0BDAp2838*
  ID_MODEL_FROM_DATABASE=RTL2838 DVB-T
 
+usb:v0BDAp5730*
+ ID_MODEL_FROM_DATABASE=HP 2.0MP High Definition Webcam
+
 usb:v0BDAp8150*
  ID_MODEL_FROM_DATABASE=RTL8150 Fast Ethernet Adapter
 
@@ -36012,11 +36075,53 @@ usb:v0CE5p0003*
  ID_MODEL_FROM_DATABASE=Matrix
 
 usb:v0CE9*
- ID_VENDOR_FROM_DATABASE=pico Technology
+ ID_VENDOR_FROM_DATABASE=Pico Technology
 
 usb:v0CE9p1001*
  ID_MODEL_FROM_DATABASE=PicoScope3000 series PC Oscilloscope
 
+usb:v0CE9p1007*
+ ID_MODEL_FROM_DATABASE=PicoScope 2000 series PC Oscilloscope
+
+usb:v0CE9p1008*
+ ID_MODEL_FROM_DATABASE=PicoScope 5000 series PC Oscilloscope
+
+usb:v0CE9p1009*
+ ID_MODEL_FROM_DATABASE=PicoScope 4000 series PC Oscilloscope
+
+usb:v0CE9p100E*
+ ID_MODEL_FROM_DATABASE=PicoScope 6000 series PC Oscilloscope
+
+usb:v0CE9p1012*
+ ID_MODEL_FROM_DATABASE=PicoScope 3000A series PC Oscilloscope
+
+usb:v0CE9p1016*
+ ID_MODEL_FROM_DATABASE=PicoScope 2000A series PC Oscilloscope
+
+usb:v0CE9p1018*
+ ID_MODEL_FROM_DATABASE=PicoScope 4000A series PC Oscilloscope
+
+usb:v0CE9p1200*
+ ID_MODEL_FROM_DATABASE=PicoScope 2000 series PC Oscilloscope
+
+usb:v0CE9p1201*
+ ID_MODEL_FROM_DATABASE=PicoScope 3000 series PC Oscilloscope
+
+usb:v0CE9p1202*
+ ID_MODEL_FROM_DATABASE=PicoScope 4000 series PC Oscilloscope
+
+usb:v0CE9p1203*
+ ID_MODEL_FROM_DATABASE=PicoScope 5000 series PC Oscilloscope
+
+usb:v0CE9p1204*
+ ID_MODEL_FROM_DATABASE=PicoScope 6000 series PC Oscilloscope
+
+usb:v0CE9p1211*
+ ID_MODEL_FROM_DATABASE=PicoScope 3000 series PC Oscilloscope
+
+usb:v0CE9p1212*
+ ID_MODEL_FROM_DATABASE=PicoScope 4000 series PC Oscilloscope
+
 usb:v0CF1*
  ID_VENDOR_FROM_DATABASE=e-Conn Electronic Co., Ltd
 
@@ -36998,6 +37103,9 @@ usb:v0DB0p1020*
 usb:v0DB0p1967*
  ID_MODEL_FROM_DATABASE=Bluetooth Dongle
 
+usb:v0DB0p3713*
+ ID_MODEL_FROM_DATABASE=Primo 73
+
 usb:v0DB0p3801*
  ID_MODEL_FROM_DATABASE=Motorola Bluetooth 2.1+EDR Device
 
@@ -37112,6 +37220,9 @@ usb:v0DB7p0002*
 usb:v0DBA*
  ID_VENDOR_FROM_DATABASE=Digidesign
 
+usb:v0DBAp1000*
+ ID_MODEL_FROM_DATABASE=Mbox 1 [Mbox]
+
 usb:v0DBAp3000*
  ID_MODEL_FROM_DATABASE=Mbox 2
 
@@ -37913,6 +38024,12 @@ usb:v0E6A*
 usb:v0E6Ap0101*
  ID_MODEL_FROM_DATABASE=MA100 [USB-UART Bridge IC]
 
+usb:v0E6Ap030B*
+ ID_MODEL_FROM_DATABASE=Truly Ergonomic Computer Keyboard (Device Firmware Update mode)
+
+usb:v0E6Ap030C*
+ ID_MODEL_FROM_DATABASE=Truly Ergonomic Computer Keyboard
+
 usb:v0E6Ap6001*
  ID_MODEL_FROM_DATABASE=GEMBIRD Flexible keyboard KB-109F-B-DE
 
@@ -39548,6 +39665,12 @@ usb:v1039p0824*
 usb:v1039p2140*
  ID_MODEL_FROM_DATABASE=dsl+ 1100 duo
 
+usb:v103A*
+ ID_VENDOR_FROM_DATABASE=PSA
+
+usb:v103ApF000*
+ ID_MODEL_FROM_DATABASE=Actia Evo XS
+
 usb:v103D*
  ID_VENDOR_FROM_DATABASE=Stanton
 
@@ -39692,6 +39815,9 @@ usb:v1050p0110*
 usb:v1050p0111*
  ID_MODEL_FROM_DATABASE=Yubikey NEO OTP+CCID
 
+usb:v1050p0200*
+ ID_MODEL_FROM_DATABASE=U2F Gnubby
+
 usb:v1050p0211*
  ID_MODEL_FROM_DATABASE=Gnubby
 
@@ -39735,16 +39861,25 @@ usb:v1058p0704*
  ID_MODEL_FROM_DATABASE=Passport External HDD
 
 usb:v1058p070A*
- ID_MODEL_FROM_DATABASE=My Passport Essential SE, My Passport for Mac (WDBAAB)
+ ID_MODEL_FROM_DATABASE=My Passport Essential (WDBAAA), My Passport for Mac (WDBAAB), My Passport Essential SE (WDBABM), My Passport SE for Mac (WDBABW)
+
+usb:v1058p070B*
+ ID_MODEL_FROM_DATABASE=My Passport Elite (WDBAAC)
+
+usb:v1058p070C*
+ ID_MODEL_FROM_DATABASE=My Passport Studio (WDBAAE)
 
 usb:v1058p071A*
- ID_MODEL_FROM_DATABASE=My Passport
+ ID_MODEL_FROM_DATABASE=My Passport Essential (WDBAAA)
+
+usb:v1058p071D*
+ ID_MODEL_FROM_DATABASE=My Passport Studio (WDBALG)
 
 usb:v1058p0730*
  ID_MODEL_FROM_DATABASE=My Passport Essential (WDBACY)
 
 usb:v1058p0740*
- ID_MODEL_FROM_DATABASE=My Passport
+ ID_MODEL_FROM_DATABASE=My Passport Essential (WDBACY)
 
 usb:v1058p0741*
  ID_MODEL_FROM_DATABASE=My Passport Ultra
@@ -39756,22 +39891,22 @@ usb:v1058p0748*
  ID_MODEL_FROM_DATABASE=My Passport (WDBKXH)
 
 usb:v1058p0810*
- ID_MODEL_FROM_DATABASE=My Passport Ultra
+ ID_MODEL_FROM_DATABASE=My Passport Ultra (WDBZFP)
 
 usb:v1058p0900*
  ID_MODEL_FROM_DATABASE=MyBook Essential External HDD
 
 usb:v1058p0901*
- ID_MODEL_FROM_DATABASE=My Book Essential Edition (Green Ring)
+ ID_MODEL_FROM_DATABASE=My Book Essential Edition (Green Ring) (WDG1U)
 
 usb:v1058p0902*
- ID_MODEL_FROM_DATABASE=My Book Pro Edition
+ ID_MODEL_FROM_DATABASE=My Book Pro Edition (WDG1T)
 
 usb:v1058p0903*
  ID_MODEL_FROM_DATABASE=My Book Premium Edition
 
 usb:v1058p0910*
- ID_MODEL_FROM_DATABASE=MyBook Essential External HDD
+ ID_MODEL_FROM_DATABASE=My Book Essential Edition (Green Ring) (WDG1U)
 
 usb:v1058p1001*
  ID_MODEL_FROM_DATABASE=Elements Desktop (WDE1U)
@@ -39786,7 +39921,7 @@ usb:v1058p1021*
  ID_MODEL_FROM_DATABASE=Elements Desktop (WDBAAU)
 
 usb:v1058p1023*
- ID_MODEL_FROM_DATABASE=Elements SE
+ ID_MODEL_FROM_DATABASE=Elements SE Portable (WDBABV)
 
 usb:v1058p1048*
  ID_MODEL_FROM_DATABASE=Elements Portable (WDBU6Y)
@@ -39809,11 +39944,23 @@ usb:v1058p1104*
 usb:v1058p1105*
  ID_MODEL_FROM_DATABASE=My Book Studio II
 
+usb:v1058p1110*
+ ID_MODEL_FROM_DATABASE=My Book Essential (WDBAAF), My Book for Mac (WDBAAG)
+
+usb:v1058p1111*
+ ID_MODEL_FROM_DATABASE=My Book Elite (WDBAAH)
+
+usb:v1058p1112*
+ ID_MODEL_FROM_DATABASE=My Book Studio (WDBAAJ), My Book Studio LX (WDBACH)
+
 usb:v1058p1123*
- ID_MODEL_FROM_DATABASE=My Book 3.0
+ ID_MODEL_FROM_DATABASE=My Book 3.0 (WDBABP)
+
+usb:v1058p1130*
+ ID_MODEL_FROM_DATABASE=My Book Essential (WDBACW)
 
 usb:v1058p1140*
- ID_MODEL_FROM_DATABASE=My Book Essential USB3.0
+ ID_MODEL_FROM_DATABASE=My Book Essential (WDBACW)
 
 usb:v1059*
  ID_VENDOR_FROM_DATABASE=Giesecke & Devrient GmbH
@@ -42098,6 +42245,12 @@ usb:v132Bp2045*
 usb:v132Bp2049*
  ID_MODEL_FROM_DATABASE=Magicolor 2490MF
 
+usb:v133E*
+ ID_VENDOR_FROM_DATABASE=Kemper Digital GmbH
+
+usb:v133Ep0815*
+ ID_MODEL_FROM_DATABASE=Virus TI Desktop
+
 usb:v1342*
  ID_VENDOR_FROM_DATABASE=Mobility
 
@@ -42203,6 +42356,9 @@ usb:v134E*
 usb:v1357*
  ID_VENDOR_FROM_DATABASE=P&E Microcomputer Systems
 
+usb:v1357p0089*
+ ID_MODEL_FROM_DATABASE=OpenSDA - CDC Serial Port
+
 usb:v1357p0503*
  ID_MODEL_FROM_DATABASE=USB-ML-12 HCS08/HCS12 Multilink
 
@@ -42213,7 +42369,7 @@ usb:v1366*
  ID_VENDOR_FROM_DATABASE=SEGGER
 
 usb:v1366p0101*
- ID_MODEL_FROM_DATABASE=J-Link ARM
+ ID_MODEL_FROM_DATABASE=J-Link PLUS
 
 usb:v136B*
  ID_VENDOR_FROM_DATABASE=STEC
@@ -42311,6 +42467,9 @@ usb:v138Ap003C*
 usb:v138Ap003D*
  ID_MODEL_FROM_DATABASE=VFS491
 
+usb:v138Ap003F*
+ ID_MODEL_FROM_DATABASE=VFS495 Fingerprint Reader
+
 usb:v138Ap0050*
  ID_MODEL_FROM_DATABASE=Swipe Fingerprint Sensor
 
@@ -42647,6 +42806,9 @@ usb:v13D3p5122*
 usb:v13D3p5126*
  ID_MODEL_FROM_DATABASE=PC Cam
 
+usb:v13D3p5130*
+ ID_MODEL_FROM_DATABASE=Integrated Webcam
+
 usb:v13D3p5702*
  ID_MODEL_FROM_DATABASE=UVC VGA Webcam
 
@@ -43232,6 +43394,9 @@ usb:v1493p0019*
 usb:v1493p001A*
  ID_MODEL_FROM_DATABASE=Colibri [Ambit2 S]
 
+usb:v1493p001D*
+ ID_MODEL_FROM_DATABASE=Greentit [Ambit2 R]
+
 usb:v1497*
  ID_VENDOR_FROM_DATABASE=Panstrong Company Ltd.
 
@@ -49640,12 +49805,39 @@ usb:v2478*
 usb:v2478p2008*
  ID_MODEL_FROM_DATABASE=U209-000-R Serial Port
 
+usb:v249C*
+ ID_VENDOR_FROM_DATABASE=M2Tech s.r.l.
+
 usb:v2632*
  ID_VENDOR_FROM_DATABASE=TwinMOS
 
 usb:v2632p3209*
  ID_MODEL_FROM_DATABASE=7-in-1 Card Reader
 
+usb:v2639*
+ ID_VENDOR_FROM_DATABASE=Xsens
+
+usb:v2639p0001*
+ ID_MODEL_FROM_DATABASE=MTi-10 IMU
+
+usb:v2639p0002*
+ ID_MODEL_FROM_DATABASE=MTi-20 VRU
+
+usb:v2639p0003*
+ ID_MODEL_FROM_DATABASE=MTi-30 AHRS
+
+usb:v2639p0011*
+ ID_MODEL_FROM_DATABASE=MTi-100 IMU
+
+usb:v2639p0012*
+ ID_MODEL_FROM_DATABASE=MTi-200 VRU
+
+usb:v2639p0013*
+ ID_MODEL_FROM_DATABASE=MTi-300 AHRS
+
+usb:v2639p0017*
+ ID_MODEL_FROM_DATABASE=MTi-G-700 GPS INS
+
 usb:v2650*
  ID_VENDOR_FROM_DATABASE=Electronics For Imaging, Inc. [hex]
 

commit 149c98aeaad0a6022543d9e3b36617bb1ac006f1
Author: Lennart Poettering <lennart at poettering.net>
Date:   Mon Aug 18 23:15:51 2014 +0200

    util: try to be a bit more NFS compatible when checking whether an FS is writable
    
    https://bugs.freedesktop.org/show_bug.cgi?id=81169
    (cherry picked from commit 70421bdce2719d76efffd8afdc28433c75aac5a2)

diff --git a/src/shared/path-util.c b/src/shared/path-util.c
index 5c0bf93..55a8e61 100644
--- a/src/shared/path-util.c
+++ b/src/shared/path-util.c
@@ -446,7 +446,16 @@ int path_is_read_only_fs(const char *path) {
         if (statvfs(path, &st) < 0)
                 return -errno;
 
-        return !!(st.f_flag & ST_RDONLY);
+        if (st.f_flag & ST_RDONLY)
+                return true;
+
+        /* On NFS, statvfs() might not reflect whether we can actually
+         * write to the remote share. Let's try again with
+         * access(W_OK) which is more reliable, at least sometimes. */
+        if (access(path, W_OK) < 0 && errno == EROFS)
+                return true;
+
+        return false;
 }
 
 int path_is_os_tree(const char *path) {

commit a13b6a4a92c215a4f3df7bc42c0019870f88fdc7
Author: Lennart Poettering <lennart at poettering.net>
Date:   Mon Aug 18 22:21:42 2014 +0200

    units: fix BindsTo= logic when applied relative to services with Type=oneshot
    
    Start jobs for Type=oneshot units are successful when the unit state
    transition activating → inactive took place. In such a case all units
    that BindsTo= on it previously would continue to run, even though the unit
    they dependet on was actually already gone.
    
    (cherry picked from commit ff50244582bf69e8489bba6ce59a21663d7f8274)

diff --git a/src/core/unit.c b/src/core/unit.c
index 5226963..035340b 100644
--- a/src/core/unit.c
+++ b/src/core/unit.c
@@ -1299,12 +1299,44 @@ static void unit_check_unneeded(Unit *u) {
                 if (unit_active_or_pending(other))
                         return;
 
-        log_info_unit(u->id, "Service %s is not needed anymore. Stopping.", u->id);
+        log_info_unit(u->id, "Unit %s is not needed anymore. Stopping.", u->id);
 
         /* Ok, nobody needs us anymore. Sniff. Then let's commit suicide */
         manager_add_job(u->manager, JOB_STOP, u, JOB_FAIL, true, NULL, NULL);
 }
 
+static void unit_check_binds_to(Unit *u) {
+        bool stop = false;
+        Unit *other;
+        Iterator i;
+
+        assert(u);
+
+        if (u->job)
+                return;
+
+        if (unit_active_state(u) != UNIT_ACTIVE)
+                return;
+
+        SET_FOREACH(other, u->dependencies[UNIT_BINDS_TO], i) {
+                if (other->job)
+                        continue;
+
+                if (!UNIT_IS_INACTIVE_OR_FAILED(unit_active_state(other)))
+                        continue;
+
+                stop = true;
+        }
+
+        if (!stop)
+                return;
+
+        log_info_unit(u->id, "Unit %s is bound to inactive service. Stopping, too.", u->id);
+
+        /* A unit we need to run is gone. Sniff. Let's stop this. */
+        manager_add_job(u->manager, JOB_STOP, u, JOB_FAIL, true, NULL, NULL);
+}
+
 static void retroactively_start_dependencies(Unit *u) {
         Iterator i;
         Unit *other;
@@ -1608,11 +1640,19 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_su
         manager_recheck_journal(m);
         unit_trigger_notify(u);
 
-        /* Maybe we finished startup and are now ready for being
-         * stopped because unneeded? */
-        if (u->manager->n_reloading <= 0)
+        if (u->manager->n_reloading <= 0) {
+                /* Maybe we finished startup and are now ready for
+                 * being stopped because unneeded? */
                 unit_check_unneeded(u);
 
+                /* Maybe we finished startup, but something we needed
+                 * has vanished? Let's die then. (This happens when
+                 * something BindsTo= to a Type=oneshot unit, as these
+                 * units go directly from starting to inactive,
+                 * without ever entering started.) */
+                unit_check_binds_to(u);
+        }
+
         unit_add_to_dbus_queue(u);
         unit_add_to_gc_queue(u);
 }

commit e413924ba5f2a256162e5866795c6e8b58a9130e
Author: Harald Hoyer <harald at redhat.com>
Date:   Fri Aug 15 14:39:05 2014 +0200

    kernel-install/90-loaderentry.install: fixed cmdline parsing
    
    If /etc/kernel/cmdline is missing or empty, we read /proc/cmdline and
    want to filter out the initrd line. Due to a bug, the whole contents was
    filtered out.
    
    (cherry picked from commit 2f3a215f61d758cd59b3be5b65976a12401ac4ff)

diff --git a/src/kernel-install/90-loaderentry.install b/src/kernel-install/90-loaderentry.install
index a6a8abc..4a990c3 100644
--- a/src/kernel-install/90-loaderentry.install
+++ b/src/kernel-install/90-loaderentry.install
@@ -45,11 +45,10 @@ if [[ -f /etc/kernel/cmdline ]]; then
 fi
 
 if ! [[ ${BOOT_OPTIONS[*]} ]]; then
-    readarray -t line < /proc/cmdline
-    for i in ${line[*]}; do
-        if [[ "${i#initrd=*}" == "$i" ]]; then
-            BOOT_OPTIONS[${#BOOT_OPTIONS[@]}]="$i"
-        fi
+    read -ar line < /proc/cmdline
+    for i in "${line[@]}"; do
+        [[ "${i#initrd=*}" != "$i" ]] && continue
+        BOOT_OPTIONS[${#BOOT_OPTIONS[@]}]="$i"
     done
 fi
 

commit 001ad24794748ec1f89dd335769dfd020ed89a93
Author: Lennart Poettering <lennart at poettering.net>
Date:   Fri Aug 15 12:07:33 2014 +0200

    sysctl: always write net.ipv4.conf.all.xyz= in addition to net.ipv4.conf.default.xyz=
    
    Otherwise we have a boot-time race, where interfaces that popped up
    after the sysctl service would get the settings applied, but all others
    wouldn't.
    
    (cherry picked from commit 1836bf9e1d70240c8079e4db4312309f4f1f91fd)
    
    Conflicts:
    	sysctl.d/50-default.conf

diff --git a/sysctl.d/50-default.conf b/sysctl.d/50-default.conf
index 46bae21..20f0bd9 100644
--- a/sysctl.d/50-default.conf
+++ b/sysctl.d/50-default.conf
@@ -15,9 +15,11 @@ kernel.core_uses_pid = 1
 
 # Source route verification
 net.ipv4.conf.default.rp_filter = 1
+net.ipv4.conf.all.rp_filter = 1
 
 # Do not accept source routing
 net.ipv4.conf.default.accept_source_route = 0
+net.ipv4.conf.all.accept_source_route = 0
 
 # Enable hard and soft link protection
 fs.protected_hardlinks = 1

commit dea052ea745baf632edd40bea3e5ccc39f4ed3cb
Author: Lennart Poettering <lennart at poettering.net>
Date:   Fri Aug 15 02:41:14 2014 +0200

    man: drop references to removed and obsolete 'systemctl load' command
    
    (cherry picked from commit d0a3fb7556d77c44c2bc38a560e99d4ad0abcf33)

diff --git a/man/systemctl.xml b/man/systemctl.xml
index 6492b0e..934bc54 100644
--- a/man/systemctl.xml
+++ b/man/systemctl.xml
@@ -626,8 +626,7 @@ kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service
             file.</para>
 
             <para>This command should not be confused with the
-            <command>daemon-reload</command> or <command>load</command>
-            commands.</para>
+            <command>daemon-reload</command> command.</para>
           </listitem>
 
         </varlistentry>
@@ -1190,8 +1189,7 @@ kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service
             tree. While the daemon is being reloaded, all sockets systemd
             listens on on behalf of user configuration will stay
             accessible.</para> <para>This command should not be confused
-            with the <command>load</command> or
-            <command>reload</command> commands.</para>
+            with the <command>reload</command> command.</para>
           </listitem>
         </varlistentry>
         <varlistentry>

commit 135dced9073335e3d2131df0cfb0e4c4bf2295ef
Author: Eelco Dolstra <eelco.dolstra at logicblox.com>
Date:   Wed Aug 6 13:14:51 2014 +0200

    journald: Fix off-by-one error in "Missed X kernel messages" warning
    
    On receiving a message, "kernel_seqnum" is set to "serial + 1". So
    subtracting 1 will cause messages like "Missed 0 kernel messages",
    which should be "Missed 1 kernel messages".
    
    (cherry picked from commit b9c488f60050248b35640f28e4d00958702ba1c3)

diff --git a/src/journal/journald-kmsg.c b/src/journal/journald-kmsg.c
index 4c2f6e7..4f22864 100644
--- a/src/journal/journald-kmsg.c
+++ b/src/journal/journald-kmsg.c
@@ -152,7 +152,7 @@ static void dev_kmsg_record(Server *s, char *p, size_t l) {
                 /* Did we lose any? */
                 if (serial > *s->kernel_seqnum)
                         server_driver_message(s, SD_MESSAGE_JOURNAL_MISSED, "Missed %"PRIu64" kernel messages",
-                                              serial - *s->kernel_seqnum - 1);
+                                              serial - *s->kernel_seqnum);
 
                 /* Make sure we never read this one again. Note that
                  * we always store the next message serial we expect

commit 704dd9ab74b4c619be23e9b50f3990000f84ddf3
Author: Lennart Poettering <lennart at poettering.net>
Date:   Mon Aug 11 18:23:47 2014 +0200

    bootchart: it's not OK to return -1 from a main program
    
    (cherry picked from commit 4155f7d4be5053d5f34a26e5437fd85e1fe00fa3)

diff --git a/src/bootchart/bootchart.c b/src/bootchart/bootchart.c
index 9f99c1f..eadf17c 100644
--- a/src/bootchart/bootchart.c
+++ b/src/bootchart/bootchart.c
@@ -346,8 +346,8 @@ int main(int argc, char *argv[]) {
 
                 sampledata = new0(struct list_sample_data, 1);
                 if (sampledata == NULL) {
-                        log_error("Failed to allocate memory for a node: %m");
-                        return -1;
+                        log_oom();
+                        return EXIT_FAILURE;
                 }
 
                 sampledata->sampletime = gettime_ns();

commit ce6906933486400d6a579e6fddd0b39a46b14db8
Author: Lennart Poettering <lennart at poettering.net>
Date:   Mon Aug 11 16:41:05 2014 +0200

    man: document that we look for both the instance's and the template's .d/ directory when looking for unit file drop-ins.
    
    (cherry picked from commit 96ddbf819a5675dba23ffadc35099462fdb2579f)

diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml
index eb8b13d..b94555f 100644
--- a/man/systemd.unit.xml
+++ b/man/systemd.unit.xml
@@ -198,7 +198,12 @@
                 settings to a unit, without having to modify their
                 unit files. Make sure that the file that is included
                 has the appropriate section headers before any
-                directive.</para>
+                directive. Note that for instanced units this logic
+                will first look for the instance
+                <literal>.d/</literal> subdirectory and read its
+                <literal>.conf</literal> files, followed by the
+                template <literal>.d/</literal> subdirectory and reads
+                its <literal>.conf</literal> files.</para>
 
                 <para>If a line starts with <option>.include</option>
                 followed by a filename, the specified file will be

commit 66ec1f263f2775918e9317e4e9287914a1e441dd
Author: Lennart Poettering <lennart at poettering.net>
Date:   Mon Aug 11 15:32:09 2014 +0200

    util: avoid considering dpkg temporary files relevant for anything
    
    https://bugs.freedesktop.org/show_bug.cgi?id=82453
    (cherry picked from commit 0cdfd26ef826f8a595ab7d85ebc37894f4f3d940)

diff --git a/src/shared/util.c b/src/shared/util.c
index a634b9d..c0476e0 100644
--- a/src/shared/util.c
+++ b/src/shared/util.c
@@ -1492,6 +1492,7 @@ _pure_ static bool ignore_file_allow_backup(const char *filename) {
                 endswith(filename, ".rpmorig") ||
                 endswith(filename, ".dpkg-old") ||
                 endswith(filename, ".dpkg-new") ||
+                endswith(filename, ".dpkg-tmp") ||
                 endswith(filename, ".swp");
 }
 

commit 4109212fef5d1e4bdda00d713d3f215ce6cb785b
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Thu Aug 7 21:48:57 2014 -0400

    hwdb: update format description and document reloading
    
    https://bugs.freedesktop.org/show_bug.cgi?id=82311
    (cherry picked from commit fa9d4be3f1f4a792b2f3624c2a08fe9cc6ce6e54)

diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb
index ea94df5..dc1b78f 100644
--- a/hwdb/60-keyboard.hwdb
+++ b/hwdb/60-keyboard.hwdb
@@ -28,19 +28,33 @@
 #    driver, <vendor> is the firmware-provided string exported
 #    by the kernel DMI modalias.
 #
-#  Scan codes are specified as:
-#    KEYBOARD_KEY_<hex scan code>=<key code identifier>
-#  The scan code should be expressed in hex lowercase and in
-#  full bytes, a multiple of 2 digits. The key codes are retrieved
-#  and normalized from the kernel input API header.
+# Scan codes are specified as:
+#   KEYBOARD_KEY_<hex scan code>=<key code identifier>
+# The scan code should be expressed in hex lowercase. The key codes
+# are retrieved and normalized from the kernel input API header.
 #
-#  A '!' as the first charcter of the key identifier string
-#  will add the scan code to the AT keyboard's list of scan codes
-#  where the driver will synthesize a release event and not expect
-#  it to be generated by the hardware.
+# An '!' as the first character of the key identifier string
+# will add the scan code to the AT keyboard's list of scan codes
+# where the driver will synthesize a release event and not expect
+# it to be generated by the hardware.
 #
 # To debug key presses and access scan code mapping data of
 # an input device use the commonly available tool: evtest(1).
+#
+# To update this file, create a new file
+#   /etc/udev/hwdb.d/70-keyboad.hwdb
+# and add your rules there. To load the new rules execute (as root):
+#   udevadm hwdb --update
+#   udevadm trigger /dev/input/eventXX
+# where /dev/input/eventXX is the keyboard 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
+#   udevadm info /dev/input/eventXX
+# (or /dev/input/event*).
 
 ##########################################
 # Acer

commit 6e529058d047ad7184d6c247d65eebbb51692f71
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Thu Aug 7 20:46:34 2014 -0400

    man: correct references to DefaultTimeout*Sec
    
    Noticed by thp on #systemd.
    
    (cherry picked from commit 5e34b37c9fec5da130f6549ddabd8a2af5c9faac)
    
    Conflicts:
    	man/systemd.socket.xml
    	man/systemd.swap.xml

diff --git a/man/systemd.service.xml b/man/systemd.service.xml
index f549e89..279e415 100644
--- a/man/systemd.service.xml
+++ b/man/systemd.service.xml
@@ -605,11 +605,12 @@ ExecStart=/bin/echo $ONE $TWO ${TWO}</programlisting>
                                 time span value such as "5min
                                 20s". Pass <literal>0</literal> to
                                 disable the timeout logic. Defaults to
-                                <varname>TimeoutStartSec=</varname> from
+                                <varname>DefaultTimeoutStartSec=</varname> from
                                 the manager configuration file, except
                                 when <varname>Type=oneshot</varname> is
                                 used, in which case the timeout
-                                is disabled by default.
+                                is disabled by default
+                                (see <citerefentry><refentrytitle>systemd-systemd.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>).
                                 </para></listitem>
                         </varlistentry>
 
@@ -628,8 +629,9 @@ ExecStart=/bin/echo $ONE $TWO ${TWO}</programlisting>
                                 time span value such as "5min
                                 20s". Pass <literal>0</literal> to disable
                                 the timeout logic. Defaults to
-                                <varname>TimeoutStartSec=</varname> from the
-                                manager configuration file.
+                                <varname>DefaultTimeoutStopSec=</varname> from the
+                                manager configuration file
+                                (see <citerefentry><refentrytitle>systemd-systemd.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>).
                                 </para></listitem>
                         </varlistentry>
 
diff --git a/man/systemd.socket.xml b/man/systemd.socket.xml
index d0c2595..699c5a3 100644
--- a/man/systemd.socket.xml
+++ b/man/systemd.socket.xml
@@ -717,16 +717,18 @@
                                 finish. If a command does not exit
                                 within the configured time, the socket
                                 will be considered failed and be shut
-                                down again. All commands still running,
+                                down again. All commands still running
                                 will be terminated forcibly via
                                 <constant>SIGTERM</constant>, and after another delay of
                                 this time with <constant>SIGKILL</constant>. (See
                                 <option>KillMode=</option> in <citerefentry><refentrytitle>systemd.kill</refentrytitle><manvolnum>5</manvolnum></citerefentry>.)
                                 Takes a unit-less value in seconds, or
                                 a time span value such as "5min
-                                20s". Pass 0 to disable the timeout
-                                logic. Defaults to <varname>TimeoutStartSec=</varname> in
-                                manager configuration file.</para></listitem>
+                                20s". Pass <literal>0</literal> to disable the timeout
+                                logic. Defaults to <varname>DefaultTimeoutStartSec=</varname> from the
+                                manager configuration file
+                                (see <citerefentry><refentrytitle>systemd-systemd.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>).
+                                </para></listitem>
                         </varlistentry>
 
                         <varlistentry>
diff --git a/man/systemd.swap.xml b/man/systemd.swap.xml
index 5e8b25f..61901d2 100644
--- a/man/systemd.swap.xml
+++ b/man/systemd.swap.xml
@@ -185,9 +185,11 @@
                                 <citerefentry><refentrytitle>systemd.kill</refentrytitle><manvolnum>5</manvolnum></citerefentry>.)
                                 Takes a unit-less value in seconds, or
                                 a time span value such as "5min
-                                20s". Pass 0 to disable the timeout
-                                logic. Defaults to <varname>TimeoutStartSec=</varname> in
-                                manager configuration file.</para></listitem>
+                                20s". Pass <literal>0</literal> to disable the timeout
+                                logic. Defaults to <varname>DefaultTimeoutStartSec=</varname> from the
+                                manager configuration file
+                                (see <citerefentry><refentrytitle>systemd-systemd.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>).
+                                </para></listitem>
                         </varlistentry>
                 </variablelist>
 
diff --git a/src/core/socket.c b/src/core/socket.c
index 1bf1f05..5a5fa11 100644
--- a/src/core/socket.c
+++ b/src/core/socket.c
@@ -29,7 +29,7 @@
 #include <arpa/inet.h>
 #include <mqueue.h>
 #ifdef HAVE_XATTR
-#include <attr/xattr.h>
+//#include <attr/xattr.h>
 #endif
 
 #include "unit.h"

commit 40f1cc308dff0480c4b8493570b52d3071fe3842
Author: Martin Pitt <martin.pitt at ubuntu.com>
Date:   Tue Aug 5 12:29:27 2014 +0200

    keymap: Fix HP Pavillon DV7
    
    Properly disable scan code 94 instead of producing KEY_0.
    
    https://launchpad.net/bugs/1322770
    (cherry picked from commit efb4bf4e419e14a13eead6289ea40165579a816f)

diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb
index 3071c61..ea94df5 100644
--- a/hwdb/60-keyboard.hwdb
+++ b/hwdb/60-keyboard.hwdb
@@ -366,7 +366,7 @@ keyboard:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pnHP*Pavilion*dv7*Notebook*PC:pvr
  KEYBOARD_KEY_b7=print
  KEYBOARD_KEY_c2=media                                  # FIXME: quick play
  KEYBOARD_KEY_c6=break
- KEYBOARD_KEY_94=0
+ KEYBOARD_KEY_94=reserved
 
 # Elitebook
 keyboard:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pn*Compaq*:pvr*

commit e39b227b68c16a494307fda88546a23114ab14fa
Author: Martin Pitt <martin.pitt at ubuntu.com>
Date:   Tue Aug 5 10:40:46 2014 +0200

    udev-builtin-keyboard: Allow numeric key codes
    
    Like with the old udev rules, allow hwdb entries to specify numeric key codes.
    Based on a patch from Mircea Miron.
    
    https://launchpad.net/bugs/1247584
    (cherry picked from commit 7925709c9a29363d38c97a30af85830d1be0d4bf)
    
    Conflicts:
    	src/udev/udev-builtin-keyboard.c

diff --git a/src/udev/udev-builtin-keyboard.c b/src/udev/udev-builtin-keyboard.c
index 6357931..b32d05b 100644
--- a/src/udev/udev-builtin-keyboard.c
+++ b/src/udev/udev-builtin-keyboard.c
@@ -78,7 +78,7 @@ static int builtin_keyboard(struct udev_device *dev, int argc, char *argv[], boo
 
         udev_list_entry_foreach(entry, udev_device_get_properties_list_entry(dev)) {
                 const char *key;
-                unsigned int scancode;
+                unsigned int scancode, keycode_num;
                 char *endptr;
                 const char *keycode;
                 const struct key *k;
@@ -110,13 +110,19 @@ static int builtin_keyboard(struct udev_device *dev, int argc, char *argv[], boo
 
                 /* translate identifier to key code */
                 k = keyboard_lookup_key(keycode, strlen(keycode));
-                if (!k) {
-                        log_error("Error, unknown key identifier '%s'\n", keycode);
-                        continue;
+                if (k) {
+                        keycode_num = k->id;
+                } else {
+                        /* check if it's a numeric code already */
+                        keycode_num = strtoul(keycode, &endptr, 0);
+                        if (endptr[0] !='\0') {
+                                log_error("Error, unknown key identifier '%s'", keycode);
+                                continue;
+                        }
                 }
 
                 map[map_count].scan = scancode;
-                map[map_count].key = k->id;
+                map[map_count].key = keycode_num;
                 if (map_count < ELEMENTSOF(map)-1)
                         map_count++;
         }

commit 41a050837d27d6ef095e804c707509de1819fa75
Author: Dan Dedrick <dan.dedrick at gmail.com>
Date:   Tue Jul 29 15:31:23 2014 -0400

    switch-root: umount the old root correctly
    
    The unmount occurs after the pivot_root, so the path used to unmount
    should take into account the new root directory. This will allow the
    umount to actually succeed.
    
    (cherry picked from commit 23f25b1496c31ef4c20b8f3ee8328f7b1d5f3a54)

diff --git a/src/core/switch-root.c b/src/core/switch-root.c
index 518ec1f..a2ded14 100644
--- a/src/core/switch-root.c
+++ b/src/core/switch-root.c
@@ -117,8 +117,8 @@ int switch_root(const char *new_root) {
 
                 /* Immediately get rid of the old root. Since we are
                  * running off it we need to do this lazily. */
-                if (umount2(temporary_old_root, MNT_DETACH) < 0) {
-                        log_error("Failed to umount old root dir %s: %m", temporary_old_root);
+                if (umount2("/mnt", MNT_DETACH) < 0) {
+                        log_error("Failed to umount old root dir /mnt: %m");
                         return -errno;
                 }
 

commit 22d33e526f549660228c6c1bf85844e49b6e58ec
Author: Brandon Philips <brandon.philips at coreos.com>
Date:   Thu Mar 13 15:19:40 2014 -0700

    nspawn: allow -EEXIST on mkdir_safe /home/${uid}
    
    With systemd 211 nspawn attempts to create the home directory for the
    given uid. However, if the home directory already exists then it will
    fail. Don't error out on -EEXIST.
    
    (cherry picked from commit f418f31d5042398344740f2d8ac4dc1c2583151c)

diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
index 28e50fb..14cd97d 100644
--- a/src/nspawn/nspawn.c
+++ b/src/nspawn/nspawn.c
@@ -1404,7 +1404,7 @@ int main(int argc, char *argv[]) {
                                         goto child_fail;
                                 }
 
-                                if (mkdir_safe_label(home, 0775, uid, gid) < 0) {
+                                if (mkdir_safe_label(home, 0775, uid, gid) < 0 && errno != EEXIST) {
                                         log_error("mkdir_safe_label() failed: %m");
                                         goto child_fail;
                                 }



More information about the systemd-commits mailing list