diff options
1068 files changed, 13558 insertions, 10656 deletions
diff --git a/.dir-locals.el b/.dir-locals.el index 9388bd66c2..3e1b2d76c0 100644 --- a/.dir-locals.el +++ b/.dir-locals.el @@ -2,13 +2,22 @@ ; A list of (major-mode . ((var1 . value1) (var2 . value2))) ; Mode can be nil, which gives default values. +; Note that we set a line width of 119 for .c and XML files, but for everything +; else (such as journal catalog files, unit files, README files) we stick to a +; more conservative 79 characters. + +; NOTE: If you update this file make sure to update .vimrc and .editorconfig, +; too. + ((nil . ((indent-tabs-mode . nil) (tab-width . 8) - (fill-column . 119))) - (c-mode . ((c-basic-offset . 8) + (fill-column . 79))) + (c-mode . ((fill-column . 119) + (c-basic-offset . 8) (eval . (c-set-offset 'substatement-open 0)) (eval . (c-set-offset 'statement-case-open 0)) (eval . (c-set-offset 'case-label 0)) (eval . (c-set-offset 'arglist-intro '++)) (eval . (c-set-offset 'arglist-close 0)))) - (nxml-mode . ((nxml-child-indent . 2)))) + (nxml-mode . ((nxml-child-indent . 2) + (fill-column . 119)))) diff --git a/.editorconfig b/.editorconfig index 70b6c0f139..e98007c4e8 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,7 +1,10 @@ # EditorConfig configuration for systemd # http://EditorConfig.org -# top-most EditorConfig file +# NOTE: If you update this file make sure to update .dir-locals.el and .vimrc, +# too. + +# Top-most EditorConfig file root = true # Unix-style newlines with a newline ending every file, utf-8 charset @@ -11,7 +14,7 @@ insert_final_newline = true trim_trailing_whitespace = true charset = utf-8 -# match config files, set indent to spaces with width of eight +# Match config files, set indent to spaces with width of eight [*.{c,h}] indent_style = space indent_size = 8 @@ -3,8 +3,18 @@ " vimrc configuration file, including write operations and shell execution. " You should consider setting 'set secure' as well, which is highly " recommended! + +" Note that we set a line width of 119 for .c and XML files, but for everything +" else (such as journal catalog files, unit files, README files) we stick to a +" more conservative 79 characters. + +" NOTE: If you update this file make sure to update .dir-locals.el and +" .editorconfig, too. + set tabstop=8 set shiftwidth=8 set expandtab set makeprg=GCC_COLORS=\ make -set tw=119 +set tw=79 +au FileType xml set tw=119 +au FileType c set tw=119 diff --git a/Makefile-man.am b/Makefile-man.am index 12900daa96..28b5fb6adb 100644 --- a/Makefile-man.am +++ b/Makefile-man.am @@ -72,6 +72,7 @@ MANPAGES += \ man/sd_id128_to_string.3 \ man/sd_is_fifo.3 \ man/sd_journal_add_match.3 \ + man/sd_journal_enumerate_fields.3 \ man/sd_journal_get_catalog.3 \ man/sd_journal_get_cursor.3 \ man/sd_journal_get_cutoff_realtime_usec.3 \ @@ -237,6 +238,7 @@ MANPAGES_ALIAS += \ man/SD_JOURNAL_FOREACH.3 \ man/SD_JOURNAL_FOREACH_BACKWARDS.3 \ man/SD_JOURNAL_FOREACH_DATA.3 \ + man/SD_JOURNAL_FOREACH_FIELD.3 \ man/SD_JOURNAL_FOREACH_UNIQUE.3 \ man/SD_JOURNAL_INVALIDATE.3 \ man/SD_JOURNAL_LOCAL_ONLY.3 \ @@ -397,6 +399,7 @@ MANPAGES_ALIAS += \ man/sd_journal_process.3 \ man/sd_journal_reliable_fd.3 \ man/sd_journal_restart_data.3 \ + man/sd_journal_restart_fields.3 \ man/sd_journal_restart_unique.3 \ man/sd_journal_seek_cursor.3 \ man/sd_journal_seek_monotonic_usec.3 \ @@ -565,6 +568,7 @@ man/SD_JOURNAL_CURRENT_USER.3: man/sd_journal_open.3 man/SD_JOURNAL_FOREACH.3: man/sd_journal_next.3 man/SD_JOURNAL_FOREACH_BACKWARDS.3: man/sd_journal_next.3 man/SD_JOURNAL_FOREACH_DATA.3: man/sd_journal_get_data.3 +man/SD_JOURNAL_FOREACH_FIELD.3: man/sd_journal_enumerate_fields.3 man/SD_JOURNAL_FOREACH_UNIQUE.3: man/sd_journal_query_unique.3 man/SD_JOURNAL_INVALIDATE.3: man/sd_journal_get_fd.3 man/SD_JOURNAL_LOCAL_ONLY.3: man/sd_journal_open.3 @@ -725,6 +729,7 @@ man/sd_journal_printv.3: man/sd_journal_print.3 man/sd_journal_process.3: man/sd_journal_get_fd.3 man/sd_journal_reliable_fd.3: man/sd_journal_get_fd.3 man/sd_journal_restart_data.3: man/sd_journal_get_data.3 +man/sd_journal_restart_fields.3: man/sd_journal_enumerate_fields.3 man/sd_journal_restart_unique.3: man/sd_journal_query_unique.3 man/sd_journal_seek_cursor.3: man/sd_journal_seek_head.3 man/sd_journal_seek_monotonic_usec.3: man/sd_journal_seek_head.3 @@ -1017,6 +1022,9 @@ man/SD_JOURNAL_FOREACH_BACKWARDS.html: man/sd_journal_next.html man/SD_JOURNAL_FOREACH_DATA.html: man/sd_journal_get_data.html $(html-alias) +man/SD_JOURNAL_FOREACH_FIELD.html: man/sd_journal_enumerate_fields.html + $(html-alias) + man/SD_JOURNAL_FOREACH_UNIQUE.html: man/sd_journal_query_unique.html $(html-alias) @@ -1497,6 +1505,9 @@ man/sd_journal_reliable_fd.html: man/sd_journal_get_fd.html man/sd_journal_restart_data.html: man/sd_journal_get_data.html $(html-alias) +man/sd_journal_restart_fields.html: man/sd_journal_enumerate_fields.html + $(html-alias) + man/sd_journal_restart_unique.html: man/sd_journal_query_unique.html $(html-alias) @@ -2534,6 +2545,7 @@ EXTRA_DIST += \ man/sd_id128_to_string.xml \ man/sd_is_fifo.xml \ man/sd_journal_add_match.xml \ + man/sd_journal_enumerate_fields.xml \ man/sd_journal_get_catalog.xml \ man/sd_journal_get_cursor.xml \ man/sd_journal_get_cutoff_realtime_usec.xml \ diff --git a/Makefile.am b/Makefile.am index 5d39967f2c..badf1ac9ab 100644 --- a/Makefile.am +++ b/Makefile.am @@ -42,9 +42,9 @@ LIBUDEV_CURRENT=7 LIBUDEV_REVISION=4 LIBUDEV_AGE=6 -LIBSYSTEMD_CURRENT=13 +LIBSYSTEMD_CURRENT=14 LIBSYSTEMD_REVISION=0 -LIBSYSTEMD_AGE=13 +LIBSYSTEMD_AGE=14 # The following four libraries only exist for compatibility reasons, # their version info should not be bumped anymore @@ -1136,8 +1136,6 @@ libcore_la_SOURCES = \ src/core/socket.h \ src/core/busname.c \ src/core/busname.h \ - src/core/bus-endpoint.c \ - src/core/bus-endpoint.h \ src/core/bus-policy.c \ src/core/bus-policy.h \ src/core/target.c \ @@ -2692,6 +2690,7 @@ systemd_boot_headers = \ src/boot/efi/console.h \ src/boot/efi/graphics.h \ src/boot/efi/pefile.h \ + src/boot/efi/measure.h \ src/boot/efi/disk.h systemd_boot_sources = \ @@ -2700,6 +2699,7 @@ systemd_boot_sources = \ src/boot/efi/graphics.c \ src/boot/efi/pefile.c \ src/boot/efi/disk.c \ + src/boot/efi/measure.c \ src/boot/efi/boot.c EXTRA_DIST += $(systemd_boot_sources) $(systemd_boot_headers) @@ -2736,6 +2736,7 @@ stub_headers = \ src/boot/efi/disk.h \ src/boot/efi/graphics.h \ src/boot/efi/splash.h \ + src/boot/efi/measure.h \ src/boot/efi/linux.h stub_sources = \ @@ -2745,6 +2746,7 @@ stub_sources = \ src/boot/efi/graphics.c \ src/boot/efi/splash.c \ src/boot/efi/linux.c \ + src/boot/efi/measure.c \ src/boot/efi/stub.c EXTRA_DIST += \ @@ -2934,6 +2936,8 @@ systemd_nspawn_SOURCES = \ src/nspawn/nspawn-register.h \ src/nspawn/nspawn-setuid.c \ src/nspawn/nspawn-setuid.h \ + src/nspawn/nspawn-stub-pid1.c \ + src/nspawn/nspawn-stub-pid1.h \ src/core/mount-setup.c \ src/core/mount-setup.h \ src/core/loopback-setup.c \ @@ -4017,7 +4021,8 @@ journalctl_SOURCES = \ src/journal/journalctl.c journalctl_LDADD = \ - libshared.la + libshared.la \ + libudev-core.la if HAVE_QRENCODE journalctl_SOURCES += \ @@ -4387,30 +4392,39 @@ systemd_socket_proxyd_LDADD = \ # ------------------------------------------------------------------------------ if ENABLE_COREDUMP systemd_coredump_SOURCES = \ - src/journal/coredump.c \ - src/journal/coredump-vacuum.c \ - src/journal/coredump-vacuum.h + src/coredump/coredump.c \ + src/coredump/coredump-vacuum.c \ + src/coredump/coredump-vacuum.h systemd_coredump_LDADD = \ libshared.la if HAVE_ELFUTILS systemd_coredump_SOURCES += \ - src/journal/stacktrace.c \ - src/journal/stacktrace.h + src/coredump/stacktrace.c \ + src/coredump/stacktrace.h systemd_coredump_LDADD += \ $(ELFUTILS_LIBS) endif +nodist_systemunit_DATA += \ + units/systemd-coredump@.service + +dist_systemunit_DATA += \ + units/systemd-coredump.socket + +SOCKETS_TARGET_WANTS += \ + systemd-coredump.socket + rootlibexec_PROGRAMS += \ systemd-coredump dist_pkgsysconf_DATA += \ - src/journal/coredump.conf + src/coredump/coredump.conf coredumpctl_SOURCES = \ - src/journal/coredumpctl.c + src/coredump/coredumpctl.c coredumpctl_LDADD = \ libshared.la @@ -4422,9 +4436,9 @@ manual_tests += \ test-coredump-vacuum test_coredump_vacuum_SOURCES = \ - src/journal/test-coredump-vacuum.c \ - src/journal/coredump-vacuum.c \ - src/journal/coredump-vacuum.h + src/coredump/test-coredump-vacuum.c \ + src/coredump/coredump-vacuum.c \ + src/coredump/coredump-vacuum.h test_coredump_vacuum_LDADD = \ libshared.la @@ -4443,7 +4457,8 @@ CLEANFILES += \ endif EXTRA_DIST += \ - sysctl.d/50-coredump.conf.in + sysctl.d/50-coredump.conf.in \ + units/systemd-coredump@.service.in # ------------------------------------------------------------------------------ if ENABLE_BINFMT @@ -4850,7 +4865,6 @@ nodist_systemunit_DATA += \ GENERAL_ALIASES += \ $(systemunitdir)/systemd-timesyncd.service $(pkgsysconfdir)/system/sysinit.target.wants/systemd-timesyncd.service - nodist_pkgsysconf_DATA += \ src/timesync/timesyncd.conf @@ -5769,6 +5783,14 @@ EXTRA_DIST += \ test/TEST-05-RLIMITS/Makefile \ test/TEST-05-RLIMITS/test-rlimits.sh \ test/TEST-05-RLIMITS/test.sh \ + test/TEST-06-SELINUX/Makefile \ + test/TEST-06-SELINUX/test-selinux-checks.sh \ + test/TEST-06-SELINUX/test.sh \ + test/TEST-06-SELINUX/systemd_test.te \ + test/TEST-06-SELINUX/systemd_test.if \ + test/TEST-07-ISSUE-1981/Makefile \ + test/TEST-07-ISSUE-1981/test-segfault.sh \ + test/TEST-07-ISSUE-1981/test.sh \ test/test-functions EXTRA_DIST += \ @@ -6294,14 +6316,6 @@ www_target = www.freedesktop.org:/srv/www.freedesktop.org/www/software/systemd doc-sync: all rsync -rlv --delete-excluded --include="*.html" --exclude="*" --omit-dir-times man/ $(www_target)/man/ -.PHONY: gardel -gardel: - scp man/*.html gardel:public/systemd-man/ - -.PHONY: lennart-fedora -lennart-fedora: - cp -v systemd-$(VERSION).tar.xz /home/lennart/git.fedora/systemd/ - .PHONY: install-tree install-tree: all rm -rf $(abs_srcdir)/install-tree @@ -2,16 +2,220 @@ systemd System and Service Manager CHANGES WITH 229: - * Creation of the legacy /run/lock/lockdev/ directory was - dropped from tmpfiles.d/legacy.conf. Hardly any software uses - that any more, and better locking mechanisms like flock() have + * The systemd-resolved DNS resolver service has gained a substantial + set of new features, most prominently it may now act as a DNSSEC + validating stub resolver. DNSSEC mode is currently turned off by + default, but is expected to be turned on by default in one of the + next releases. For now, we invite everybody to test the DNSSEC logic + by setting DNSSEC=allow-downgrade in /etc/systemd/resolved.conf. The + service also gained a full set of D-Bus interfaces, including calls + to configure DNS and DNSSEC settings per link (for use by external + network management software). systemd-resolved and systemd-networkd + now distinguish between "search" and "routing" domains. The former + are used to qualify single-label names, the latter are used purely + for routing lookups within certain domains to specific links. + resolved now also synthesizes RRs for all entries from /etc/hosts. + + * The systemd-resolve tool (which is a client utility for + systemd-resolved) has been improved considerably and is now fully + supported and documented. Hence it has moved from /usr/lib/systemd to + /usr/bin. + + * /dev/disk/by-path/ symlink support has been (re-)added for virtio + devices. + + * The coredump collection logic has been reworked: when a coredump is + collected it is now written to disk, compressed and processed + (including stacktrace extraction) from a new instantiated service + systemd-coredump@.service, instead of directly from the + /proc/sys/kernel/core_pattern hook we provide. This is beneficial as + processing large coredumps can take up a substantial amount of + resources and time, and this previously happened entirely outside of + systemd's service supervision. With the new logic the core_pattern + hook only does minimal metadata collection before passing off control + to the new instantiated service, which is configured with a time + limit, a nice level and other settings to minimize negative impact on + the rest of the system. Also note that the new logic will honour the + RLIMIT_CORE setting of the crashed process, which now allows users + and processes to turn off coredumping for their processes by setting + this limit. + + * The RLIMIT_CORE resource limit now defaults to "unlimited" for PID 1 + and all forked processes by default. Previously, PID 1 would leave + the setting at "0" for all processes, as set by the kernel. Note that + the resource limit traditionally has no effect on the generated + coredumps on the system if the /proc/sys/kernel/core_pattern hook + logic is used. Since the limit is now honoured (see above) its + default has been changed so that the coredumping logic is enabled by + default for all processes, while allowing specific opt-out. + + * When the stacktrace is extracted from processes of system users, this + is now done as "systemd-coredump" user, in order to sandbox this + potentially security sensitive parsing operation. (Note that when + processing coredumps of normal users this is done under the user ID + of process that crashed, as before.) Packagers should take notice + that it is now necessary to create the "systemd-coredump" system user + and group at package installation time. + + * The systemd-activate socket activation testing tool gained support + for SOCK_DGRAM and SOCK_SEQPACKET sockets using the new --datagram + and --seqpacket switches. It also has been extended to support both + new-style and inetd-style file descriptor passing. Use the new + --inetd switch to request inetd-style file descriptor passing. + + * Most systemd tools now honor a new $SYSTEMD_COLORS environment + variable, which takes a boolean value. If set to false, ANSI color + output is disabled in the tools even when run on a terminal that + supports it. + + * The VXLAN support in networkd now supports two new settings + DestinationPort= and PortRange=. + + * A new systemd.machine_id= kernel command line switch has been added, + that may be used to set the machine ID in /etc/machine-id if it is + not initialized yet. This command line option has no effect if the + file is already initialized. + + * systemd-nspawn gained a new --as-pid2 switch that invokes any + specified command line as PID 2 rather than PID 1 in the + container. In this mode PID 1 is a minimal stub init process that + implements the special POSIX and Linux semantics of PID 1 regarding + signal and child process management. Note that this stub init process + is implemented in nspawn itself and requires no support from the + container image. This new logic is useful to support running + arbitrary commands in the container, as normal processes are + generally not prepared to run as PID 1. + + * systemd-nspawn gained a new --chdir= switch for setting the current + working directory for the process started in the container. + + * "journalctl /dev/sda" will now output all kernel log messages for + specified device from the current boot, in addition to all devices + that are parents of it. This should make log output about devices + pretty useful, as long as kernel drivers attach enough metadata to + the log messages. (The usual SATA drivers do.) + + * The sd-journal API gained two new calls + sd_journal_has_runtime_files() and sd_journal_has_persistent_files() + that report whether log data from /run or /var has been found. + + * journalctl gained a new switch "--fields" that prints all journal + record field names currently in use in the journal. This is backed + by two new sd-journal API calls sd_journal_enumerate_fields() and + sd_journal_restart_fields(). + + * Most configurable timeouts in systemd now expect an argument of + "infinity" to turn them off, instead of "0" as before. The semantics + from now on is that a timeout of "0" means "now", and "infinity" + means "never". To maintain backwards compatibility, "0" continues to + turn off previously existing timeout settings. + + * "systemctl reload-or-try-restart" has been renamed to "systemctl + try-reload-or-restart" to clarify what it actually does: the "try" + logic applies to both reloading and restarting, not just restarting. + The old name continues to be accepted for compatibility. + + * On boot-up, when PID 1 detects that the system clock is behind the + release date of the systemd version in use, the clock is now set + to the latter. Previously, this was already done in timesyncd, in order + to avoid running with clocks set to the various clock epochs such as + 1902, 1938 or 1970. With this change the logic is now done in PID 1 + in addition to timesyncd during early boot-up, so that it is enforced + before the first process is spawned by systemd. Note that the logic + in timesyncd remains, as it is more comprehensive and ensures + clock monotonicity by maintaining a persistent timestamp file in + /var. Since /var is generally not available in earliest boot or the + initrd, this part of the logic remains in timesyncd, and is not done + by PID 1. + + * Support for tweaking details in net_cls.class_id through the + NetClass= configuration directive has been removed, as the kernel + people have decided to deprecate that controller in cgroup v2. + Userspace tools such as nftables are moving over to setting rules + that are specific to the full cgroup path of a task, which obsoletes + these controllers anyway. The NetClass= directive is kept around for + legacy compatibility reasons. For a more in-depth description of the + kernel change, please refer to the respective upstream commit: + + https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=bd1060a1d671 + + * A new service setting RuntimeMaxSec= has been added that may be used + to specify a maximum runtime for a service. If the timeout is hit, the + service is terminated and put into a failure state. + + * A new service setting AmbientCapabilities= has been added. It allows + configuration of additional Linux process capabilities that are + passed to the activated processes. This is only available on very + recent kernels. + + * The process resource limit settings in service units may now be used + to configure hard and soft limits individually. + + * The various libsystemd APIs such as sd-bus or sd-event now publicly + expose support for gcc's __attribute__((cleanup())) C extension. + Specifically, for many object destructor functions alternative + versions have been added that have names suffixed with "p" and take a + pointer to a pointer to the object to destroy, instead of just a + pointer to the object itself. This is useful because these destructor + functions may be used directly as parameters to the cleanup + construct. Internally, systemd has been a heavy user of this GCC + extension for a long time, and with this change similar support is + now available to consumers of the library outside of systemd. Note + that by using this extension in your sources compatibility with old + and strictly ANSI compatible C compilers is lost. However, all gcc or + LLVM versions of recent years support this extension. + + * Timer units gained support for a new setting RandomizedDelaySec= that + allows configuring some additional randomized delay to the configured + time. This is useful to spread out timer events to avoid load peaks in + clusters or larger setups. + + * Calendar time specifications now support sub-second accuracy. + + * Socket units now support listening on SCTP and UDP-lite protocol + sockets. + + * The sd-event API now comes with a full set of man pages. + + * Older versions of systemd contained experimental support for + compressing journal files and coredumps with the LZ4 compressor that + was not compatible with the lz4 binary (due to API limitations of the + lz4 library). This support has been removed; only support for files + compatible with the lz4 binary remains. This LZ4 logic is now + officially supported and no longer considered experimental. + + * The dkr image import logic has been removed again from importd. dkr's + micro-services focus doesn't fit into the machine image focus of + importd, and quickly got out of date with the upstream dkr API. + + * Creation of the /run/lock/lockdev/ directory was dropped from + tmpfiles.d/legacy.conf. Better locking mechanisms like flock() have been available for many years. If you still need this, you need to create your own tmpfiles.d config file with: - d /run/lock/lockdev 0775 root lock - - - Contributions from: ... - -- Berlin, 2016-MM-DD + d /run/lock/lockdev 0775 root lock - + + Contributions from: Abdo Roig-Maranges, Alban Crequy, Aleksander + Adamowski, Alexander Kuleshov, Andreas Pokorny, Andrei Borzenkov, + Andrew Wilcox, Arthur Clement, Beniamino Galvani, Casey Schaufler, + Chris Atkinson, Chris Mayo, Christian Hesse, Damjan Georgievski, Dan + Dedrick, Daniele Medri, Daniel J Walsh, Daniel Korostil, Daniel Mack, + David Herrmann, Dimitri John Ledkov, Dominik Hannen, Douglas Christman, + Evgeny Vereshchagin, Filipe Brandenburger, Franck Bui, Gabor Kelemen, + Harald Hoyer, Hayden Walles, Helmut Grohne, Henrik Kaare Poulsen, + Hristo Venev, Hui Wang, Indrajit Raychaudhuri, Ismo Puustinen, Jakub + Wilk, Jan Alexander Steffens (heftig), Jan Engelhardt, Jan Synacek, + Joost Bremmer, Jorgen Schaefer, Karel Zak, Klearchos Chaloulos, + lc85446, Lennart Poettering, Lukas Nykryn, Mantas Mikulėnas, Marcel + Holtmann, Martin Pitt, Michael Biebl, Michael Olbrich, Michael Scherer, + Michał Górny, Michal Sekletar, Nicolas Cornu, Nicolas Iooss, Nils + Carlson, nmartensen, nnz1024, Patrick Ohly, Peter Hutterer, Phillip Sz, + Ronny Chevalier, Samu Kallio, Shawn Landden, Stef Walter, Susant + Sahani, Sylvain Plantefève, Tadej Janež, Thomas Hindoe Paaboel + Andersen, Tom Gundersen, Torstein Husebø, Umut Tezduyar Lindskog, Vito + Caputo, WaLyong Cho, Yu Watanabe, Zbigniew Jędrzejewski-Szmek + + -- Berlin, 2016-02-11 CHANGES WITH 228: @@ -203,6 +203,9 @@ USERS AND GROUPS: Similarly, the kdbus dbus1 proxy daemon requires the "systemd-bus-proxy" system user and group to exist. + Similarly, the coredump support requires the + "systemd-coredump" system user and group to exist. + NSS: systemd ships with three NSS modules: @@ -33,6 +33,9 @@ Janitorial Clean-ups: Features: +* delay activation of logind until somebody logs in, or when /dev/tty0 pulls it + in or lingering is on (so that containers don't bother with it until PAM is used). also exit-on-idle + * cache sd_event_now() result from before the first iteration... * remove Capabilities=, after all AmbientCapabilities= and CapabilityBoundingSet= should be enough. @@ -41,11 +44,6 @@ Features: * add systemctl stop --job-mode=triggering that follows TRIGGERED_BY deps and adds them to the same transaction -* coredump logic should use prlimit() to query RLIMIT_CORE of the dumpee and honour it - -* Add a MaxRuntimeSec= setting for service units (or units in general) to terminate units after they ran for a certain - amount of time - * Maybe add a way how users can "pin" units into memory, so that they are not subject to automatic GC? * PID1: find a way how we can reload unit file configuration for @@ -647,10 +645,6 @@ Features: * coredump: - save coredump in Windows/Mozilla minidump format - move PID 1 segfaults to /var/lib/systemd/coredump? - - make the handler check /proc/$PID/rlimits for RLIMIT_CORE, - and supress coredump if turned off. Then change RLIMIT_CORE to - infinity by default for all services. This then allows per-service - control of coredumping. * support crash reporting operation modes (https://live.gnome.org/GnomeOS/Design/Whiteboards/ProblemReporting) diff --git a/catalog/systemd.catalog b/catalog/systemd.catalog index 1025590681..077f182a5a 100644 --- a/catalog/systemd.catalog +++ b/catalog/systemd.catalog @@ -1,4 +1,3 @@ -# -*- fill-column: 79; indent-tabs-mode: nil -*- # This file is part of systemd. # # Copyright 2012 Lennart Poettering diff --git a/catalog/systemd.ru.catalog b/catalog/systemd.ru.catalog index 03eea04c9f..eedbb8aa9c 100644 --- a/catalog/systemd.ru.catalog +++ b/catalog/systemd.ru.catalog @@ -1,7 +1,7 @@ # This file is part of systemd. # # Copyright 2012 Lennart Poettering -# Copyright 2013 Sergey Ptashnick +# Copyright 2013-2016 Sergey Ptashnick # # 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 @@ -43,6 +43,25 @@ Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel Процесс, отвечающий за журналирование системных событий, завершил работу и закрыл все свои файлы. +# Subject: Disk space used by the journal +-- ec387f577b844b8fa948f33cad9a75e6 +Subject: Место на диске, занятое журналом +Defined-By: systemd +Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel + +@JOURNAL_NAME@ (@JOURNAL_PATH@) сейчас занимает @CURRENT_USE_PRETTY@. +Максимальный разрешенный размер составляет @MAX_USE_PRETTY@. +Оставляем свободными как минимум @DISK_KEEP_FREE_PRETTY@ (сейчас на диске +свободно @DISK_AVAILABLE_PRETTY@). +Таким образом, предел использования составляет @LIMIT_PRETTY@, из которых +@AVAILABLE_PRETTY@ пока свободно. + +Ограничения на размер журнала настраиваются при помощи параметров +SystemMaxUse=, SystemKeepFree=, SystemMaxFileSize=, RuntimeMaxUse=, +RuntimeKeepFree=, RuntimeMaxFileSize= в файле /etc/systemd/journald.conf. +Более подробные сведения вы можете получить на справочной странице +journald.conf(5). + # Subject: Messages from a service have been suppressed -- a596d6fe7bfa4994828e72309e95d61e Subject: Часть сообщений от службы пропущена @@ -292,3 +311,44 @@ Defined-By: systemd Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel Виртуальная машина @NAME@ (идентификатор главного процесса: @LEADER@) выключена. + +# Subject: DNSSEC mode has been turned off, as server doesn't support it +-- 36db2dfa5a9045e1bd4af5f93e1cf057 +Subject: Механизм DNSSEC был отключен, так как DNS-сервер его не поддерживает +Defined-By: systemd +Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel +Documentation: man:systemd-resolved.service(8) resolved.conf(5) + +Служба разрешения имен хостов (systemd-resolved.service) определила, что +указанный в настойках DNS-сервер не поддерживает технологию DNSSEC, и +автоматически отключила DNSSEC-проверки. + +Данное событие возникает, если в файле resolved.conf указан параметр +DNSSEC=allow-downgrade, и вышестоящий DNS-сервер не поддерживает DNSSEC. +Обратите внимание, что режим allow-downgrade допускает возможность атаки +"DNSSEC downgrade", в ходе которой атакующий хакер блокирует проверки DNSSEC +путем отправки ложных сообщений от имени DNS-сервера. + +Возникновение данного события может свидетельствовать как о том, что ваш +DNS-сервер не поддерживает DNSSEC, так и о том, что некий хакер успешно провел +против вас атаку, направленную на блокировку DNSSEC-проверок. + +# Subject: DNSSEC validation failed +-- 1675d7f172174098b1108bf8c7dc8f5d +Subject: Проверка DNSSEC провалена +Defined-By: systemd +Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel +Documentation: man:systemd-resolved.service(8) + +DNS-запрос или отдельная ресурсная запись не прошла проверку DNSSEC. +Как правило, это свидетельствует о постороннем вмешательстве в канал связи. + +# Subject: A DNSSEC trust anchor has been revoked +-- 4d4408cfd0d144859184d1e65d7c8a65 +Subject: Открытый ключ DNSSEC был отозван +Defined-By: systemd +Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel +Documentation: man:systemd-resolved.service(8) + +Открытый ключ (trust ahcnor) DNSSEC был отозван. Необходимо настроить новый +открытый ключ, либо обновить систему, чтобы получить обновленный открытый ключ. diff --git a/configure.ac b/configure.ac index 1517b4e197..59cc9fd99e 100644 --- a/configure.ac +++ b/configure.ac @@ -20,7 +20,7 @@ AC_PREREQ([2.64]) AC_INIT([systemd], - [228], + [229], [http://github.com/systemd/systemd/issues], [systemd], [http://www.freedesktop.org/wiki/Software/systemd]) @@ -556,7 +556,7 @@ AM_CONDITIONAL(HAVE_ZLIB, [test "$have_zlib" = "yes"]) # ------------------------------------------------------------------------------ have_bzip2=no -AC_ARG_ENABLE(bzip2, AS_HELP_STRING([--enable-bzip2], [Disable optional BZIP2 support])) +AC_ARG_ENABLE(bzip2, AS_HELP_STRING([--enable-bzip2], [Enable optional BZIP2 support])) AS_IF([test "x$enable_bzip2" != "xno"], [ AC_CHECK_HEADERS(bzlib.h, [AC_DEFINE(HAVE_BZIP2, 1, [Define if BZIP2 is available]) @@ -1106,6 +1106,7 @@ have_coredump=no AC_ARG_ENABLE(coredump, AS_HELP_STRING([--disable-coredump], [disable coredump hook])) if test "x$enable_coredump" != "xno"; then have_coredump=yes + M4_DEFINES="$M4_DEFINES -DENABLE_COREDUMP" fi AM_CONDITIONAL(ENABLE_COREDUMP, [test "$have_coredump" = "yes"]) @@ -1176,7 +1177,7 @@ AC_SUBST([EFI_ARCH]) AC_SUBST([EFI_MACHINE_TYPE_NAME]) have_gnuefi=no -AC_ARG_ENABLE(gnuefi, AS_HELP_STRING([--enable-gnuefi], [Disable optional gnuefi support])) +AC_ARG_ENABLE(gnuefi, AS_HELP_STRING([--enable-gnuefi], [Enable optional gnuefi support])) AS_IF([test "x$enable_gnuefi" != "xno"], [ AC_CHECK_HEADERS(efi/${EFI_ARCH}/efibind.h, [AC_DEFINE(HAVE_GNUEFI, 1, [Define if gnuefi is available]) @@ -1217,6 +1218,28 @@ AS_IF([test "x$enable_gnuefi" != "xno"], [ AM_CONDITIONAL(HAVE_GNUEFI, [test "x$have_gnuefi" = xyes]) # ------------------------------------------------------------------------------ +have_tpm=no +AC_ARG_ENABLE([tpm], AS_HELP_STRING([--enable-tpm],[Enable optional TPM support]), + [case "${enableval}" in + yes) have_tpm=yes ;; + no) have_tpm=no ;; + *) AC_MSG_ERROR(bad value ${enableval} for --enable-tpm) ;; + esac], + [have_tpm=no]) + +if test "x${have_tpm}" != xno ; then + AC_DEFINE(SD_BOOT_LOG_TPM, 1, [Define if TPM should be used to log events and extend the registers]) +fi + +AC_ARG_WITH(tpm-pcrindex, + AS_HELP_STRING([--with-tpm-pcrindex=<NUM>], + [TPM PCR register number to use]), + [SD_TPM_PCR="$withval"], + [SD_TPM_PCR="8"]) + +AC_DEFINE_UNQUOTED(SD_TPM_PCR, [$SD_TPM_PCR], [TPM PCR register number to use]) + +# ------------------------------------------------------------------------------ have_kdbus=no AC_ARG_ENABLE(kdbus, AS_HELP_STRING([--disable-kdbus], [do not connect to kdbus by default])) if test "x$enable_kdbus" != "xno"; then @@ -1570,6 +1593,7 @@ AC_MSG_RESULT([ dbus: ${have_dbus} nss-myhostname: ${have_myhostname} hwdb: ${enable_hwdb} + tpm: ${have_tpm} kdbus: ${have_kdbus} Python: ${have_python} man pages: ${have_manpages} diff --git a/hwdb/20-OUI.hwdb b/hwdb/20-OUI.hwdb index 62e77714c4..80f1890714 100644 --- a/hwdb/20-OUI.hwdb +++ b/hwdb/20-OUI.hwdb @@ -629,9 +629,6 @@ OUI:001BC508C* OUI:001BC5090* ID_OUI_FROM_DATABASE=Seven Solutions S.L -OUI:001BC5087* - ID_OUI_FROM_DATABASE=Onnet Technologies And Innovations - OUI:001BC507D* ID_OUI_FROM_DATABASE=Greatcom AG @@ -779,6 +776,78 @@ OUI:70B3D5A6F* OUI:70B3D5929* ID_OUI_FROM_DATABASE=OutSys +OUI:70B3D5120* + ID_OUI_FROM_DATABASE=GSP Sprachtechnologie GmbH + +OUI:70B3D523E* + ID_OUI_FROM_DATABASE=Tornado Modular Systems + +OUI:70B3D5EA2* + ID_OUI_FROM_DATABASE=Transportal Solutions Ltd + +OUI:70B3D545D* + ID_OUI_FROM_DATABASE=Sensapex Oy + +OUI:70B3D58B0* + ID_OUI_FROM_DATABASE=IES S.r.l. + +OUI:70B3D5FB6* + ID_OUI_FROM_DATABASE=KRONOTECH SRL + +OUI:70B3D5EB7* + ID_OUI_FROM_DATABASE=Skreens + +OUI:70B3D538F* + ID_OUI_FROM_DATABASE=Sorynorydotcom Inc + +OUI:70B3D57E9* + ID_OUI_FROM_DATABASE=Mecsel Oy + +OUI:70B3D506C* + ID_OUI_FROM_DATABASE=AppTek + +OUI:70B3D5818* + ID_OUI_FROM_DATABASE=CRDE + +OUI:70B3D5895* + ID_OUI_FROM_DATABASE=Integrated Control Corp. + +OUI:70B3D5232* + ID_OUI_FROM_DATABASE=UCONSYS + +OUI:70B3D501A* + ID_OUI_FROM_DATABASE=Cubro Acronet GesmbH + +OUI:70B3D537B* + ID_OUI_FROM_DATABASE=Power Ltd. + +OUI:70B3D5FCC* + ID_OUI_FROM_DATABASE=DIgSILENT GmbH + +OUI:70B3D5FD8* + ID_OUI_FROM_DATABASE=MB connect line GmbH Fernwartungssysteme + +OUI:70B3D576B* + ID_OUI_FROM_DATABASE=EMPELOR GmbH + +OUI:70B3D50B8* + ID_OUI_FROM_DATABASE=Lucas-Nülle GmbH + +OUI:70B3D5FEB* + ID_OUI_FROM_DATABASE=Les distributions Multi-Secure incorporee + +OUI:70B3D5658* + ID_OUI_FROM_DATABASE=emperor brands + +OUI:70B3D53A9* + ID_OUI_FROM_DATABASE=Vivalnk + +OUI:001BC5087* + ID_OUI_FROM_DATABASE=Onnet Technologies and Innovations LLC + +OUI:70B3D5720* + ID_OUI_FROM_DATABASE=Private + OUI:70B3D5D60* ID_OUI_FROM_DATABASE=Flintab AB @@ -1130,9 +1199,6 @@ OUI:70B3D5DE7* OUI:70B3D51F4* ID_OUI_FROM_DATABASE=Hangzhou Woosiyuan Communication Co.,Ltd. -OUI:70B3D5B7E* - ID_OUI_FROM_DATABASE=Elbit Systems of America - FMF Operations - OUI:70B3D5092* ID_OUI_FROM_DATABASE=inomed Medizintechnik GmbH @@ -1472,6 +1538,102 @@ OUI:70B3D5384* OUI:70B3D5893* ID_OUI_FROM_DATABASE=Cubitech +OUI:70B3D509E* + ID_OUI_FROM_DATABASE=MobiPromo + +OUI:70B3D549E* + ID_OUI_FROM_DATABASE=CAPTEMP, Lda + +OUI:70B3D54B6* + ID_OUI_FROM_DATABASE=VEILUX INC. + +OUI:70B3D57CF* + ID_OUI_FROM_DATABASE=ORCA Technologies, LLC + +OUI:70B3D55A3* + ID_OUI_FROM_DATABASE=CT Company + +OUI:70B3D580A* + ID_OUI_FROM_DATABASE=SENSING LABS + +OUI:70B3D5E45* + ID_OUI_FROM_DATABASE=Momentum Data Systems + +OUI:70B3D5059* + ID_OUI_FROM_DATABASE=Pro-Digital Projetos Eletronicos Ltda + +OUI:70B3D5091* + ID_OUI_FROM_DATABASE=PROFITT Ltd + +OUI:70B3D5647* + ID_OUI_FROM_DATABASE=KZTA + +OUI:70B3D56DF* + ID_OUI_FROM_DATABASE=Mango DSP, Inc. + +OUI:70B3D5CBE* + ID_OUI_FROM_DATABASE=Ensura Solutions BV + +OUI:70B3D5CAC* + ID_OUI_FROM_DATABASE=CRDE + +OUI:70B3D58B9* + ID_OUI_FROM_DATABASE=Toptech Systems, Inc. + +OUI:70B3D574E* + ID_OUI_FROM_DATABASE=PushCorp, Inc. + +OUI:70B3D5FD2* + ID_OUI_FROM_DATABASE=DALIAN LEVEAR ELECTRIC CO., LTD + +OUI:70B3D5F08* + ID_OUI_FROM_DATABASE=Szabo Software & Engineering UK Ltd + +OUI:70B3D56A1* + ID_OUI_FROM_DATABASE=GLIAL TECHNOLOGY + +OUI:70B3D5955* + ID_OUI_FROM_DATABASE=Dynacard Co., Ltd. + +OUI:70B3D512B* + ID_OUI_FROM_DATABASE=RIC Electronics + +OUI:70B3D517E* + ID_OUI_FROM_DATABASE=OCULI VISION + +OUI:70B3D5046* + ID_OUI_FROM_DATABASE=Shenzhen Rihuida Electronics Co,. Ltd + +OUI:70B3D5268* + ID_OUI_FROM_DATABASE=Cardinal Scale Mfg Co + +OUI:70B3D5B7E* + ID_OUI_FROM_DATABASE=Elbit Systems of America - Fort Worth Operations + +OUI:70B3D5DB5* + ID_OUI_FROM_DATABASE=Xiamen Point Circle Technologh Co,ltd + +OUI:70B3D5429* + ID_OUI_FROM_DATABASE=Redco Audio Inc + +OUI:70B3D52E7* + ID_OUI_FROM_DATABASE=Atos spa + +OUI:70B3D5766* + ID_OUI_FROM_DATABASE=Tirasoft Nederland + +OUI:70B3D517D* + ID_OUI_FROM_DATABASE=Entech Electronics + +OUI:70B3D599A* + ID_OUI_FROM_DATABASE=KEVIC. inc, + +OUI:70B3D502A* + ID_OUI_FROM_DATABASE=BAE Systems Surface Ships Limited + +OUI:70B3D5DE2* + ID_OUI_FROM_DATABASE=ACD Elekronik GmbH + OUI:70B3D5FFF* ID_OUI_FROM_DATABASE=Private @@ -1961,9 +2123,6 @@ OUI:70B3D5AC8* OUI:70B3D5F2A* ID_OUI_FROM_DATABASE=WIBOND Informationssysteme GmbH -OUI:70B3D5C24* - ID_OUI_FROM_DATABASE=Elbit Systems of America - OUI:70B3D52A5* ID_OUI_FROM_DATABASE=Taitotekniikka @@ -2141,6 +2300,93 @@ OUI:70B3D55D1* OUI:70B3D5A2E* ID_OUI_FROM_DATABASE=Kokam Co., Ltd +OUI:70B3D58A6* + ID_OUI_FROM_DATABASE=CRDE + +OUI:70B3D5FB5* + ID_OUI_FROM_DATABASE=Orange Tree Technologies Ltd + +OUI:70B3D5E02* + ID_OUI_FROM_DATABASE=YEHL & JORDAN LLC + +OUI:70B3D5F56* + ID_OUI_FROM_DATABASE=VirtualHere Pty. Ltd. + +OUI:70B3D58BE* + ID_OUI_FROM_DATABASE=Connoiseur Electronics Private Limited + +OUI:70B3D526B* + ID_OUI_FROM_DATABASE=Sorama BV + +OUI:70B3D52FA* + ID_OUI_FROM_DATABASE=Toray Medical Co.,Ltd + +OUI:70B3D5975* + ID_OUI_FROM_DATABASE=Coester Automação Ltda + +OUI:70B3D513C* + ID_OUI_FROM_DATABASE=Detec Systems Ltd + +OUI:70B3D5455* + ID_OUI_FROM_DATABASE=Heartlandmicropayments + +OUI:70B3D5070* + ID_OUI_FROM_DATABASE=Lumiplan Duhamel + +OUI:70B3D58D8* + ID_OUI_FROM_DATABASE=VNG Corporation + +OUI:70B3D5392* + ID_OUI_FROM_DATABASE=Contec DTx + +OUI:70B3D514D* + ID_OUI_FROM_DATABASE=2-Observe + +OUI:70B3D5A9F* + ID_OUI_FROM_DATABASE=Private + +OUI:70B3D59CB* + ID_OUI_FROM_DATABASE=Alligator Communications + +OUI:70B3D5B67* + ID_OUI_FROM_DATABASE=RedWave Labs Ltd + +OUI:70B3D5B93* + ID_OUI_FROM_DATABASE=INTERNET PROTOCOLO LOGICA SL + +OUI:70B3D5B89* + ID_OUI_FROM_DATABASE=IDA + +OUI:70B3D57E2* + ID_OUI_FROM_DATABASE=Depro Électronique inc + +OUI:70B3D5772* + ID_OUI_FROM_DATABASE=enModus + +OUI:70B3D53C5* + ID_OUI_FROM_DATABASE=P4Q ELECTRONICS, S.L. + +OUI:70B3D5FE2* + ID_OUI_FROM_DATABASE=Galileo Tıp Teknolojileri San. ve Tic. A.S. + +OUI:70B3D5C24* + ID_OUI_FROM_DATABASE=Elbit Systems of America - Fort Worth Operations + +OUI:70B3D5AC6* + ID_OUI_FROM_DATABASE=SMTC Corporation + +OUI:70B3D5028* + ID_OUI_FROM_DATABASE=AT-Automation Technology GmbH + +OUI:70B3D50B9* + ID_OUI_FROM_DATABASE=Easy Digital Concept + +OUI:70B3D5CF2* + ID_OUI_FROM_DATABASE=tinnos + +OUI:70B3D59E0* + ID_OUI_FROM_DATABASE=ES Industrial Systems Co., Ltd. + OUI:70B3D566B* ID_OUI_FROM_DATABASE=Innitive B.V. @@ -2555,9 +2801,6 @@ OUI:70B3D5710* OUI:70B3D5A0B* ID_OUI_FROM_DATABASE=ambiHome GmbH -OUI:70B3D58B1* - ID_OUI_FROM_DATABASE=M-Tech Innovations Ltd - OUI:70B3D5204* ID_OUI_FROM_DATABASE=TWC @@ -2762,6 +3005,111 @@ OUI:70B3D5B05* OUI:70B3D5847* ID_OUI_FROM_DATABASE=Ai-Lynx +OUI:70B3D5148* + ID_OUI_FROM_DATABASE=Power Electronics Espana, S.L. + +OUI:70B3D5BFE* + ID_OUI_FROM_DATABASE=Aplex Technology Inc. + +OUI:70B3D5261* + ID_OUI_FROM_DATABASE=Potter Electric Signal Co. LLC + +OUI:70B3D5618* + ID_OUI_FROM_DATABASE=Motec Pty Ltd + +OUI:70B3D5892* + ID_OUI_FROM_DATABASE=ABB + +OUI:70B3D59BA* + ID_OUI_FROM_DATABASE=ATIM Radiocommunication + +OUI:70B3D54C4* + ID_OUI_FROM_DATABASE=OOO Research and Production Center Computer Technologies + +OUI:70B3D59B3* + ID_OUI_FROM_DATABASE=K&J Schmittschneider AG + +OUI:70B3D5747* + ID_OUI_FROM_DATABASE=Eva Automation + +OUI:70B3D53F4* + ID_OUI_FROM_DATABASE=Wincode Technology Co., Ltd. + +OUI:70B3D56E6* + ID_OUI_FROM_DATABASE=Eleven Engineering Incorporated + +OUI:70B3D5E39* + ID_OUI_FROM_DATABASE=Thinnect, Inc, + +OUI:70B3D5216* + ID_OUI_FROM_DATABASE=FLEXTRONICS + +OUI:70B3D50FE* + ID_OUI_FROM_DATABASE=Vocality International Ltd + +OUI:70B3D54B7* + ID_OUI_FROM_DATABASE=Aplex Technology Inc. + +OUI:70B3D555C* + ID_OUI_FROM_DATABASE=Saratoga Speed, Inc. + +OUI:70B3D5428* + ID_OUI_FROM_DATABASE=Presentation Switchers, Inc. + +OUI:70B3D5C32* + ID_OUI_FROM_DATABASE=INFRASAFE/ ADVANTOR SYSTEMS + +OUI:70B3D5592* + ID_OUI_FROM_DATABASE=CRDE + +OUI:70B3D5F1A* + ID_OUI_FROM_DATABASE=Sator Controls s.r.o. + +OUI:70B3D505A* + ID_OUI_FROM_DATABASE=Uni Control System Sp. z o. o. + +OUI:70B3D59EF* + ID_OUI_FROM_DATABASE=Cottonwood Creek Technologies, Inc. + +OUI:70B3D59EB* + ID_OUI_FROM_DATABASE=Preston Industries dba PolyScience + +OUI:70B3D5A3B* + ID_OUI_FROM_DATABASE=Grace Design/Lunatec LLC + +OUI:70B3D57A0* + ID_OUI_FROM_DATABASE=Reactec Ltd + +OUI:70B3D529B* + ID_OUI_FROM_DATABASE=DermaLumics S.L. + +OUI:70B3D5202* + ID_OUI_FROM_DATABASE=DEUTA-WERKE GmbH + +OUI:70B3D5259* + ID_OUI_FROM_DATABASE=Zebra Elektronik A.S. + +OUI:70B3D5FBE* + ID_OUI_FROM_DATABASE=Hanbat National University + +OUI:70B3D5FE4* + ID_OUI_FROM_DATABASE=CARE PVT LTD + +OUI:70B3D58B1* + ID_OUI_FROM_DATABASE=M-Tech Innovations Limited + +OUI:70B3D5D34* + ID_OUI_FROM_DATABASE=G-PHILOS CO.,LTD + +OUI:70B3D5528* + ID_OUI_FROM_DATABASE=Aplex Technology Inc. + +OUI:70B3D5B81* + ID_OUI_FROM_DATABASE=Instro Precision Limited + +OUI:70B3D5479* + ID_OUI_FROM_DATABASE=LINEAGE POWER PVT. LTD. + OUI:70B3D58AB* ID_OUI_FROM_DATABASE=EMAC, Inc. @@ -3239,9 +3587,6 @@ OUI:70B3D5918* OUI:70B3D5308* ID_OUI_FROM_DATABASE=DSD MICROTECHNOLOGY,INC. -OUI:70B3D5184* - ID_OUI_FROM_DATABASE=XV360 Optical Information Systems Ltd. - OUI:70B3D56D3* ID_OUI_FROM_DATABASE=DEUTA-WERKE GmbH @@ -3392,6 +3737,105 @@ OUI:70B3D5297* OUI:70B3D5942* ID_OUI_FROM_DATABASE=TruTeq Devices (Pty) Ltd +OUI:70B3D5F7B* + ID_OUI_FROM_DATABASE=KST technology + +OUI:70B3D5B99* + ID_OUI_FROM_DATABASE=DomoSafety S.A. + +OUI:70B3D5D51* + ID_OUI_FROM_DATABASE=Azcom Technology S.r.l. + +OUI:70B3D5BA1* + ID_OUI_FROM_DATABASE=Cathwell AS + +OUI:70B3D5286* + ID_OUI_FROM_DATABASE=Pedax Danmark + +OUI:70B3D51A9* + ID_OUI_FROM_DATABASE=OCEANIX INC. + +OUI:70B3D5733* + ID_OUI_FROM_DATABASE=SA Instrumentation Limited + +OUI:70B3D5652* + ID_OUI_FROM_DATABASE=Robert Bosch, LLC + +OUI:70B3D5F65* + ID_OUI_FROM_DATABASE=MARKUS LABS + +OUI:70B3D5F2E* + ID_OUI_FROM_DATABASE=Shanghai JCY Technology Company + +OUI:70B3D57F8* + ID_OUI_FROM_DATABASE=Solvera Lynx d.d. + +OUI:70B3D55BE* + ID_OUI_FROM_DATABASE=CASWA + +OUI:70B3D5F55* + ID_OUI_FROM_DATABASE=Kohler Mira Ltd + +OUI:70B3D57ED* + ID_OUI_FROM_DATABASE=The Things Network Foundation + +OUI:70B3D5A9D* + ID_OUI_FROM_DATABASE=VITEC MULTIMEDIA + +OUI:70B3D51A8* + ID_OUI_FROM_DATABASE=STC Rainbow Ltd. + +OUI:70B3D53CA* + ID_OUI_FROM_DATABASE=TTI Ltd + +OUI:70B3D5E1C* + ID_OUI_FROM_DATABASE=Xcenter AS + +OUI:70B3D5184* + ID_OUI_FROM_DATABASE=XV360 Optical Information Systems Ltd. + +OUI:70B3D5B5C* + ID_OUI_FROM_DATABASE=Prozess Technologie + +OUI:70B3D5AF4* + ID_OUI_FROM_DATABASE=TATTILE SRL + +OUI:70B3D5531* + ID_OUI_FROM_DATABASE=ATEME + +OUI:70B3D5BA7* + ID_OUI_FROM_DATABASE=Digital Yacht Ltd + +OUI:70B3D51C7* + ID_OUI_FROM_DATABASE=Hoshin Electronics Co., Ltd. + +OUI:70B3D528B* + ID_OUI_FROM_DATABASE=Arnouse Digital Devices, Corp. + +OUI:70B3D5D94* + ID_OUI_FROM_DATABASE=Dewetron GmbH + +OUI:70B3D5974* + ID_OUI_FROM_DATABASE=Jireh Industries Ltd. + +OUI:70B3D5544* + ID_OUI_FROM_DATABASE=Silicon Safe Ltd + +OUI:70B3D5EE1* + ID_OUI_FROM_DATABASE=allora Factory BVBA + +OUI:70B3D5389* + ID_OUI_FROM_DATABASE=Private + +OUI:70B3D5640* + ID_OUI_FROM_DATABASE=Electronic Equipment Company Pvt. Ltd. + +OUI:70B3D5D65* + ID_OUI_FROM_DATABASE=CRDE + +OUI:70B3D53C3* + ID_OUI_FROM_DATABASE=AIMCO + OUI:1C8776D* ID_OUI_FROM_DATABASE=Qivivo @@ -3851,6 +4295,75 @@ OUI:1C8774E* OUI:78CA834* ID_OUI_FROM_DATABASE=Pinhole (Beijing) Technology Co., Ltd. +OUI:78CA83E* + ID_OUI_FROM_DATABASE=Konecranes + +OUI:38B8EBB* + ID_OUI_FROM_DATABASE=ExaScaler Inc. + +OUI:38FDFEC* + ID_OUI_FROM_DATABASE=New Garden Co., Ltd. + +OUI:38FDFE5* + ID_OUI_FROM_DATABASE=CaptiveAire Systems Inc. + +OUI:5CF2867* + ID_OUI_FROM_DATABASE=Access IS + +OUI:5CF286C* + ID_OUI_FROM_DATABASE=Sunpet Industries Limited + +OUI:5CF2862* + ID_OUI_FROM_DATABASE=Shanghai Notion Information Technology CO.,LTD. + +OUI:5CF2866* + ID_OUI_FROM_DATABASE=VPInstruments + +OUI:5CF286A* + ID_OUI_FROM_DATABASE=Unfors Raysafe AB + +OUI:7C477C5* + ID_OUI_FROM_DATABASE=Midwest Microwave Solutions + +OUI:5CF286E* + ID_OUI_FROM_DATABASE=Daisen Electronic Industrial Co., Ltd. + +OUI:7C477C1* + ID_OUI_FROM_DATABASE=Photosynth Inc. + +OUI:986D35A* + ID_OUI_FROM_DATABASE=iWave Japan, Inc. + +OUI:986D357* + ID_OUI_FROM_DATABASE=Zhejiang Hanshow Technology Co., Ltd. + +OUI:50FF99C* + ID_OUI_FROM_DATABASE=Goetting KG + +OUI:50FF995* + ID_OUI_FROM_DATABASE=Garrison Technology + +OUI:50FF997* + ID_OUI_FROM_DATABASE=Honeywell International + +OUI:50FF99B* + ID_OUI_FROM_DATABASE=Sichuan Dowlab Electronics Technology Co. Ltd + +OUI:E0B6F55* + ID_OUI_FROM_DATABASE=Shenzhen Civicom Technology Co.,Limited + +OUI:E0B6F50* + ID_OUI_FROM_DATABASE=BeSTAR Corporation + +OUI:E0B6F57* + ID_OUI_FROM_DATABASE=Shenzhen Xrinda Technology Ltd + +OUI:E0B6F5B* + ID_OUI_FROM_DATABASE=Moog Crossbow + +OUI:E0B6F5C* + ID_OUI_FROM_DATABASE=funktel GmbH + OUI:1C8776C* ID_OUI_FROM_DATABASE=Strone Technology @@ -4301,6 +4814,84 @@ OUI:78CA839* OUI:78CA83C* ID_OUI_FROM_DATABASE=Elanview Technology Co.,Ltd +OUI:38B8EB8* + ID_OUI_FROM_DATABASE=CeeNex Inc + +OUI:38B8EBD* + ID_OUI_FROM_DATABASE=Yellowbrick Data, Inc. + +OUI:38B8EB6* + ID_OUI_FROM_DATABASE=MATRIXSTREAM TECHNOLOGIES, INC. + +OUI:38B8EB2* + ID_OUI_FROM_DATABASE=barox Kommunikation GmbH + +OUI:38B8EBC* + ID_OUI_FROM_DATABASE=Ajax Systems Inc + +OUI:38B8EBE* + ID_OUI_FROM_DATABASE=Wyres SAS + +OUI:38FDFE1* + ID_OUI_FROM_DATABASE=WAYTONE (BEIIJNG) COMMUNICATIONS CO.,LTD + +OUI:38FDFEE* + ID_OUI_FROM_DATABASE=iSmart electronic technology co.,LTD + +OUI:38FDFE8* + ID_OUI_FROM_DATABASE=Indra Navia AS + +OUI:5CF2864* + ID_OUI_FROM_DATABASE=CHIPSEN Co.,Ltd. + +OUI:5CF2868* + ID_OUI_FROM_DATABASE=SHENZHEN HIVT TECHNOLOGY CO.,LTD + +OUI:7C477C9* + ID_OUI_FROM_DATABASE=DaLian Cheering Tech Co.,Ltd + +OUI:7C477C0* + ID_OUI_FROM_DATABASE=BungBungame Inc + +OUI:7C477C4* + ID_OUI_FROM_DATABASE=RLC Electronics Systems + +OUI:7C477CE* + ID_OUI_FROM_DATABASE=I-Convergence.com + +OUI:986D35D* + ID_OUI_FROM_DATABASE=Praesideo B.V. + +OUI:986D358* + ID_OUI_FROM_DATABASE=Beijing 3CAVI Tech Co.,Ltd + +OUI:986D350* + ID_OUI_FROM_DATABASE=Shenzhen MALATA Mobile Communication Co.,LTD + +OUI:986D354* + ID_OUI_FROM_DATABASE=blossom communications corp. + +OUI:50FF998* + ID_OUI_FROM_DATABASE=Dolphin Concepts Limited + +OUI:50FF99D* + ID_OUI_FROM_DATABASE=Shenzhen Haipengxin Electronic Co., Ltd. + +OUI:50FF993* + ID_OUI_FROM_DATABASE=Yongjing Shanghai Electronic Science and Technology + +OUI:50FF992* + ID_OUI_FROM_DATABASE=SHENZHEN KINGVT ELECTRONICS CO.,LTD + +OUI:E0B6F5A* + ID_OUI_FROM_DATABASE=Folksam AB + +OUI:E0B6F54* + ID_OUI_FROM_DATABASE=Agora + +OUI:E0B6F5E* + ID_OUI_FROM_DATABASE=Advatek Lighting Pty Ltd + OUI:1C87790* ID_OUI_FROM_DATABASE=Wurm GmbH & Co. KG Elektronische Systeme @@ -4811,6 +5402,66 @@ OUI:78CA831* OUI:78CA837* ID_OUI_FROM_DATABASE=Beijing CarePulse Electronic Technology +OUI:78CA83D* + ID_OUI_FROM_DATABASE=Hubei Boyuan Zhijia Network Media Co. Ltd. + +OUI:38B8EB3* + ID_OUI_FROM_DATABASE=Aina Wireless Inc + +OUI:38FDFE3* + ID_OUI_FROM_DATABASE=Siemens AG, PG IE R&D + +OUI:38FDFED* + ID_OUI_FROM_DATABASE=FUBA Automotive Electronics GmbH + +OUI:38FDFE7* + ID_OUI_FROM_DATABASE=Rademacher Geraete-Elektronik GmbH + +OUI:38FDFE0* + ID_OUI_FROM_DATABASE=Edge I&D Co., Ltd. + +OUI:5CF286B* + ID_OUI_FROM_DATABASE=Itron UK Limited + +OUI:7C477C2* + ID_OUI_FROM_DATABASE=POWERLAND LIMITED + +OUI:5CF286D* + ID_OUI_FROM_DATABASE=BrightSky, LLC + +OUI:7C477CB* + ID_OUI_FROM_DATABASE=Hangzhou Yiyitaidi Information Technology Co., Ltd. + +OUI:7C477C3* + ID_OUI_FROM_DATABASE=EyeLock LLC + +OUI:986D351* + ID_OUI_FROM_DATABASE=Shenzhen cositea electronics technology co.,LTD + +OUI:986D35C* + ID_OUI_FROM_DATABASE=my-PV GmbH + +OUI:986D35E* + ID_OUI_FROM_DATABASE=BAYCOM OPTO-ELECTRONICS TECHNOLGY CO., LTD. + +OUI:50FF994* + ID_OUI_FROM_DATABASE=IPC Global + +OUI:50FF996* + ID_OUI_FROM_DATABASE=LEGEND WINNER LIMITED + +OUI:50FF99A* + ID_OUI_FROM_DATABASE=metraTec GmbH + +OUI:50FF99E* + ID_OUI_FROM_DATABASE=Informa LLC + +OUI:E0B6F5D* + ID_OUI_FROM_DATABASE=ITEL MOBILE LIMITED + +OUI:E0B6F53* + ID_OUI_FROM_DATABASE=Huizhou GISUN Industrial CO. LTD + OUI:1C8776B* ID_OUI_FROM_DATABASE=Hekatron Vertriebs GmbH @@ -5105,9 +5756,6 @@ OUI:28FD804* OUI:2C265FB* ID_OUI_FROM_DATABASE=Rexgen Inc. -OUI:2C265FC* - ID_OUI_FROM_DATABASE=AATON DIGITAL - OUI:2C265F6* ID_OUI_FROM_DATABASE=Appostar Technology Co. Ltd @@ -5342,6 +5990,75 @@ OUI:78CA83B* OUI:78CA835* ID_OUI_FROM_DATABASE=Huatune Technology (Shanghai) Co., Ltd. +OUI:38B8EB0* + ID_OUI_FROM_DATABASE=Bumjin C&L Co., Ltd. + +OUI:38B8EB5* + ID_OUI_FROM_DATABASE=Dojo-Labs Ltd + +OUI:38B8EB1* + ID_OUI_FROM_DATABASE=1.A Connect GmbH + +OUI:38B8EBA* + ID_OUI_FROM_DATABASE=SECAD SA + +OUI:38B8EB7* + ID_OUI_FROM_DATABASE=Private + +OUI:38FDFE6* + ID_OUI_FROM_DATABASE=Inspero Inc + +OUI:38FDFE2* + ID_OUI_FROM_DATABASE=B.U.G.SST,Inc + +OUI:5CF2869* + ID_OUI_FROM_DATABASE=Shenzhen VST Automotive Electronics Co., LTD + +OUI:7C477C7* + ID_OUI_FROM_DATABASE=BlueSmart Technology Corporation + +OUI:7C477CA* + ID_OUI_FROM_DATABASE=Dspread Technology (Beijing) Inc. + +OUI:7C477CC* + ID_OUI_FROM_DATABASE=annapurnalabs + +OUI:986D356* + ID_OUI_FROM_DATABASE=Vitronic Dr.-Ing. Stein Bildverarbeitungssysteme GmbH + +OUI:7C477C8* + ID_OUI_FROM_DATABASE=Shenzhen Eunicum Electric Co.,Ltd. + +OUI:986D35B* + ID_OUI_FROM_DATABASE=INTECH + +OUI:986D352* + ID_OUI_FROM_DATABASE=SHENZHEN FISE TECHNOLOGY HOLDING CO.,LTD. + +OUI:50FF990* + ID_OUI_FROM_DATABASE=Simicon + +OUI:50FF991* + ID_OUI_FROM_DATABASE=Coyote Sytem + +OUI:50FF999* + ID_OUI_FROM_DATABASE=Sea Eagle Optoelectronic Information Technology(Tianjin)co,Ltd + +OUI:E0B6F58* + ID_OUI_FROM_DATABASE=Yuneec International(China)Co.,Ltd + +OUI:E0B6F52* + ID_OUI_FROM_DATABASE=Shanghai- British Information Technology Co., Ltd + +OUI:E0B6F56* + ID_OUI_FROM_DATABASE=POMCube Inc. + +OUI:2C265FC* + ID_OUI_FROM_DATABASE=AATON DIGITAL + +OUI:6891D05* + ID_OUI_FROM_DATABASE=NIPK Electron Co. + OUI:1C87740* ID_OUI_FROM_DATABASE=Philips Personal Health Solutions @@ -5801,6 +6518,57 @@ OUI:1C8774A* OUI:78CA830* ID_OUI_FROM_DATABASE=DAINCUBE +OUI:38B8EB4* + ID_OUI_FROM_DATABASE=UMLOGICS + +OUI:38B8EB9* + ID_OUI_FROM_DATABASE=NHS Sistemas de Energia + +OUI:38FDFEA* + ID_OUI_FROM_DATABASE=Management Service Corporation + +OUI:38FDFEB* + ID_OUI_FROM_DATABASE=Swedish Adrenaline AB + +OUI:38FDFE4* + ID_OUI_FROM_DATABASE=New Telecom Solutions LLC + +OUI:38FDFE9* + ID_OUI_FROM_DATABASE=OOO Group of Industrial Technologies + +OUI:5CF2860* + ID_OUI_FROM_DATABASE=Hangzhou Signwei Electronics Technology Co., Ltd + +OUI:5CF2863* + ID_OUI_FROM_DATABASE=beijing your wonderful control system technology co.,ltd + +OUI:5CF2865* + ID_OUI_FROM_DATABASE=EUROIMMUN Medizinische Labordiagnostika AG + +OUI:5CF2861* + ID_OUI_FROM_DATABASE=iSon Tech + +OUI:7C477C6* + ID_OUI_FROM_DATABASE=Zerosystem LTD.Co + +OUI:7C477CD* + ID_OUI_FROM_DATABASE=Speedifi Inc + +OUI:986D353* + ID_OUI_FROM_DATABASE=DH Mechatronic AG + +OUI:986D359* + ID_OUI_FROM_DATABASE=Private + +OUI:986D355* + ID_OUI_FROM_DATABASE=PDAHL + +OUI:E0B6F59* + ID_OUI_FROM_DATABASE=Motiveprime Consumer Electronics Pvt Ltd + +OUI:E0B6F51* + ID_OUI_FROM_DATABASE=START TODAY CO.,LTD. + OUI:E043DB* ID_OUI_FROM_DATABASE=Shenzhen ViewAt Technology Co.,Ltd. @@ -7121,9 +7889,6 @@ OUI:741F4A* OUI:88CBA5* ID_OUI_FROM_DATABASE=Suzhou Torchstar Intelligent Technology Co.,Ltd -OUI:A47B2C* - ID_OUI_FROM_DATABASE=Alcatel-Lucent - OUI:184F32* ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. @@ -7184,9 +7949,6 @@ OUI:F85B9C* OUI:7CA237* ID_OUI_FROM_DATABASE=King Slide Technology CO., LTD. -OUI:B0E2E5* - ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Tech.Co.,Ltd. - OUI:300EE3* ID_OUI_FROM_DATABASE=Aquantia Corporation @@ -7214,9 +7976,6 @@ OUI:D4522A* OUI:B0ECE1* ID_OUI_FROM_DATABASE=Private -OUI:AC9B0A* - ID_OUI_FROM_DATABASE=Sony Corporation - OUI:407FE0* ID_OUI_FROM_DATABASE=Glory Star Technics (ShenZhen) Limited @@ -7355,9 +8114,6 @@ OUI:3077CB* OUI:88C9D0* ID_OUI_FROM_DATABASE=LG Electronics -OUI:BC6B4D* - ID_OUI_FROM_DATABASE=Alcatel-Lucent - OUI:3428F0* ID_OUI_FROM_DATABASE=ATN International Limited @@ -7550,9 +8306,6 @@ OUI:3C46D8* OUI:6C0273* ID_OUI_FROM_DATABASE=Shenzhen Jin Yun Video Equipment Co., Ltd. -OUI:600292* - ID_OUI_FROM_DATABASE=PEGATRON CORPORATION - OUI:2CFAA2* ID_OUI_FROM_DATABASE=Alcatel-Lucent @@ -7616,9 +8369,6 @@ OUI:D8E56D* OUI:3CCD5A* ID_OUI_FROM_DATABASE=Technische Alternative GmbH -OUI:B0754D* - ID_OUI_FROM_DATABASE=Alcatel-Lucent - OUI:604826* ID_OUI_FROM_DATABASE=Newbridge Technologies Int. Ltd. @@ -7667,9 +8417,6 @@ OUI:6C2C06* OUI:54EE75* ID_OUI_FROM_DATABASE=Wistron InfoComm(Kunshan)Co.,Ltd. -OUI:202564* - ID_OUI_FROM_DATABASE=PEGATRON CORPORATION - OUI:60812B* ID_OUI_FROM_DATABASE=Custom Control Concepts @@ -7679,9 +8426,6 @@ OUI:F86601* OUI:FC4AE9* ID_OUI_FROM_DATABASE=Castlenet Technology Inc. -OUI:BC8D0E* - ID_OUI_FROM_DATABASE=Alcatel-Lucent - OUI:34E42A* ID_OUI_FROM_DATABASE=Automatic Bar Controls Inc. @@ -7865,9 +8609,6 @@ OUI:30D6C9* OUI:107BEF* ID_OUI_FROM_DATABASE=ZyXEL Communications Corporation -OUI:84262B* - ID_OUI_FROM_DATABASE=Alcatel-Lucent - OUI:8CCDA2* ID_OUI_FROM_DATABASE=ACTP, Inc. @@ -7889,9 +8630,6 @@ OUI:98FF6A* OUI:AC6BAC* ID_OUI_FROM_DATABASE=Jenny Science AG -OUI:0C54A5* - ID_OUI_FROM_DATABASE=PEGATRON CORPORATION - OUI:707C18* ID_OUI_FROM_DATABASE=ADATA Technology Co., Ltd @@ -7919,9 +8657,6 @@ OUI:2C3731* OUI:041A04* ID_OUI_FROM_DATABASE=WaveIP -OUI:94E98C* - ID_OUI_FROM_DATABASE=Alcatel-Lucent - OUI:50206B* ID_OUI_FROM_DATABASE=Emerson Climate Technologies Transportation Solutions @@ -7997,9 +8732,6 @@ OUI:A0E453* OUI:404A18* ID_OUI_FROM_DATABASE=Addrek Smart Solutions -OUI:E48184* - ID_OUI_FROM_DATABASE=Alcatel-Lucent - OUI:C4C0AE* ID_OUI_FROM_DATABASE=MIDORI ELECTRONIC CO., LTD. @@ -8222,9 +8954,6 @@ OUI:ACE42E* OUI:08EF3B* ID_OUI_FROM_DATABASE=MCS Logic Inc. -OUI:98B039* - ID_OUI_FROM_DATABASE=Alcatel-Lucent - OUI:806C8B* ID_OUI_FROM_DATABASE=KAESER KOMPRESSOREN AG @@ -8243,9 +8972,6 @@ OUI:C47F51* OUI:E8D4E0* ID_OUI_FROM_DATABASE=Beijing BenyWave Technology Co., Ltd. -OUI:54BEF7* - ID_OUI_FROM_DATABASE=PEGATRON CORPORATION - OUI:3889DC* ID_OUI_FROM_DATABASE=Opticon Sensors Europe B.V. @@ -10073,9 +10799,6 @@ OUI:4491DB* OUI:14D76E* ID_OUI_FROM_DATABASE=CONCH ELECTRONIC Co.,Ltd -OUI:1078D2* - ID_OUI_FROM_DATABASE=ELITEGROUP COMPUTER SYSTEM CO., LTD. - OUI:CC6B98* ID_OUI_FROM_DATABASE=Minetec Wireless Technologies @@ -10367,9 +11090,6 @@ OUI:5CE286* OUI:2CCD27* ID_OUI_FROM_DATABASE=Precor Inc -OUI:AC44F2* - ID_OUI_FROM_DATABASE=Revolabs Inc - OUI:6C5E7A* ID_OUI_FROM_DATABASE=Ubiquitous Internet Telecom Co., Ltd @@ -10823,9 +11543,6 @@ OUI:002471* OUI:002473* ID_OUI_FROM_DATABASE=3COM EUROPE LTD -OUI:002465* - ID_OUI_FROM_DATABASE=Elentec - OUI:002460* ID_OUI_FROM_DATABASE=Giaval Science Development Co. Ltd. @@ -11495,9 +12212,6 @@ OUI:001F2C* OUI:001F26* ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:001F1F* - ID_OUI_FROM_DATABASE=Edimax Technology Co. Ltd. - OUI:001F1A* ID_OUI_FROM_DATABASE=Prominvest @@ -11528,9 +12242,6 @@ OUI:001E95* OUI:001E96* ID_OUI_FROM_DATABASE=Sepura Plc -OUI:001E90* - ID_OUI_FROM_DATABASE=Elitegroup Computer Systems Co - OUI:001E8B* ID_OUI_FROM_DATABASE=Infra Access Korea Co., Ltd. @@ -11633,9 +12344,6 @@ OUI:001F13* OUI:001F0F* ID_OUI_FROM_DATABASE=Select Engineered Systems -OUI:001F09* - ID_OUI_FROM_DATABASE=JASTEC CO., LTD. - OUI:001EFD* ID_OUI_FROM_DATABASE=Microbit 2.0 AB @@ -11819,9 +12527,6 @@ OUI:001E39* OUI:001E34* ID_OUI_FROM_DATABASE=CryptoMetrics -OUI:001E33* - ID_OUI_FROM_DATABASE=Inventec Corporation - OUI:001E2D* ID_OUI_FROM_DATABASE=STIM @@ -11891,9 +12596,6 @@ OUI:001CE3* OUI:001CDC* ID_OUI_FROM_DATABASE=Custom Computer Services, Inc. -OUI:001CD7* - ID_OUI_FROM_DATABASE=Harman/Becker Automotive Systems GmbH - OUI:001CD0* ID_OUI_FROM_DATABASE=Circleone Co.,Ltd. @@ -12191,9 +12893,6 @@ OUI:001A2E* OUI:001A33* ID_OUI_FROM_DATABASE=ASI Communications, Inc. -OUI:001A29* - ID_OUI_FROM_DATABASE=Johnson Outdoors Marine Electronics, Inc - OUI:001A1D* ID_OUI_FROM_DATABASE=PChome Online Inc. @@ -12626,12 +13325,6 @@ OUI:001717* OUI:00170B* ID_OUI_FROM_DATABASE=Contela, Inc. -OUI:001706* - ID_OUI_FROM_DATABASE=Techfaith Wireless Communication Technology Limited. - -OUI:0016FA* - ID_OUI_FROM_DATABASE=ECI Telecom Ltd. - OUI:0016FF* ID_OUI_FROM_DATABASE=Wamin Optocomm Mfg Corp @@ -12776,9 +13469,6 @@ OUI:0016EE* OUI:0016E7* ID_OUI_FROM_DATABASE=Dynamix Promotions Limited -OUI:0016EC* - ID_OUI_FROM_DATABASE=Elitegroup Computer Systems Co., Ltd. - OUI:0016DB* ID_OUI_FROM_DATABASE=Samsung Electronics Co., Ltd. @@ -13262,9 +13952,6 @@ OUI:001459* OUI:001454* ID_OUI_FROM_DATABASE=Symwave -OUI:00144F* - ID_OUI_FROM_DATABASE=Oracle Corporation - OUI:001443* ID_OUI_FROM_DATABASE=Consultronics Europe Ltd @@ -13406,9 +14093,6 @@ OUI:001199* OUI:00118F* ID_OUI_FROM_DATABASE=EUTECH INSTRUMENTS PTE. LTD. -OUI:001188* - ID_OUI_FROM_DATABASE=Enterasys - OUI:001183* ID_OUI_FROM_DATABASE=Datalogic ADC, Inc. @@ -13769,9 +14453,6 @@ OUI:000D8D* OUI:000D8E* ID_OUI_FROM_DATABASE=Koden Electronics Co., Ltd. -OUI:000D87* - ID_OUI_FROM_DATABASE=Elitegroup Computer System Co. (ECS) - OUI:000D84* ID_OUI_FROM_DATABASE=Makus Inc. @@ -14303,9 +14984,6 @@ OUI:000AEB* OUI:000AE4* ID_OUI_FROM_DATABASE=Wistron Corp. -OUI:000AE6* - ID_OUI_FROM_DATABASE=Elitegroup Computer System Co. (ECS) - OUI:000A0E* ID_OUI_FROM_DATABASE=Invivo Research Inc. @@ -16352,9 +17030,6 @@ OUI:0090B9* OUI:00901A* ID_OUI_FROM_DATABASE=UNISPHERE SOLUTIONS -OUI:0090AE* - ID_OUI_FROM_DATABASE=ITALTEL S.p.A. - OUI:009082* ID_OUI_FROM_DATABASE=FORCE INSTITUTE @@ -16472,9 +17147,6 @@ OUI:001074* OUI:001057* ID_OUI_FROM_DATABASE=Rebel.com, Inc. -OUI:0010E0* - ID_OUI_FROM_DATABASE=Oracle Corporation - OUI:0010BC* ID_OUI_FROM_DATABASE=Aastra Telecom @@ -16784,9 +17456,6 @@ OUI:00A052* OUI:00A0EA* ID_OUI_FROM_DATABASE=ETHERCOM CORP. -OUI:00A0B8* - ID_OUI_FROM_DATABASE=SYMBIOS LOGIC INC. - OUI:00A02E* ID_OUI_FROM_DATABASE=BRAND COMMUNICATIONS, LTD. @@ -18161,9 +18830,6 @@ OUI:001577* OUI:ACE010* ID_OUI_FROM_DATABASE=Liteon Technology Corporation -OUI:000BA2* - ID_OUI_FROM_DATABASE=Sumitomo Electric Industries,Ltd - OUI:EC086B* ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. @@ -18176,12 +18842,6 @@ OUI:00192C* OUI:2421AB* ID_OUI_FROM_DATABASE=Sony Mobile Communications AB -OUI:001FA7* - ID_OUI_FROM_DATABASE=Sony Computer Entertainment Inc. - -OUI:A8E3EE* - ID_OUI_FROM_DATABASE=Sony Computer Entertainment Inc. - OUI:6C23B9* ID_OUI_FROM_DATABASE=Sony Mobile Communications AB @@ -18200,12 +18860,6 @@ OUI:303926* OUI:00EB2D* ID_OUI_FROM_DATABASE=Sony Mobile Communications AB -OUI:709E29* - ID_OUI_FROM_DATABASE=Sony Corporation - -OUI:FC0FE6* - ID_OUI_FROM_DATABASE=Sony Corporation - OUI:B00594* ID_OUI_FROM_DATABASE=Liteon Technology Corporation @@ -18236,9 +18890,6 @@ OUI:E86D52* OUI:0015D0* ID_OUI_FROM_DATABASE=ARRIS Group, Inc. -OUI:001315* - ID_OUI_FROM_DATABASE=Sony Computer Entertainment Inc. - OUI:0013A9* ID_OUI_FROM_DATABASE=Sony Corporation @@ -18359,27 +19010,6 @@ OUI:0010E7* OUI:5C9656* ID_OUI_FROM_DATABASE=AzureWave Technology Inc. -OUI:0881F4* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:A8D0E5* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:648788* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:28C0DA* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:80711F* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:00239C* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:001DB5* - ID_OUI_FROM_DATABASE=Juniper Networks - OUI:7C4CA5* ID_OUI_FROM_DATABASE=BSkyB Ltd @@ -18548,29 +19178,35 @@ OUI:001DBC* OUI:001F32* ID_OUI_FROM_DATABASE=Nintendo Co., Ltd. -OUI:D8FB5E* - ID_OUI_FROM_DATABASE=ASKEY COMPUTER CORP - OUI:544408* ID_OUI_FROM_DATABASE=Nokia Corporation -OUI:0017B0* +OUI:D8FB5E* + ID_OUI_FROM_DATABASE=ASKEY COMPUTER CORP + +OUI:1886AC* ID_OUI_FROM_DATABASE=Nokia Danmark A/S -OUI:001BEE* +OUI:0021FE* ID_OUI_FROM_DATABASE=Nokia Danmark A/S -OUI:1886AC* +OUI:001DFD* ID_OUI_FROM_DATABASE=Nokia Danmark A/S -OUI:0021FE* +OUI:001EA3* ID_OUI_FROM_DATABASE=Nokia Danmark A/S OUI:002266* ID_OUI_FROM_DATABASE=Nokia Danmark A/S -OUI:DCB3B4* - ID_OUI_FROM_DATABASE=Honeywell Environmental & Combustion Controls (Tianjin) Co., Ltd. +OUI:0017B0* + ID_OUI_FROM_DATABASE=Nokia Danmark A/S + +OUI:001BEE* + ID_OUI_FROM_DATABASE=Nokia Danmark A/S + +OUI:002548* + ID_OUI_FROM_DATABASE=Nokia Danmark A/S OUI:C8D10B* ID_OUI_FROM_DATABASE=Nokia Corporation @@ -18581,36 +19217,381 @@ OUI:C8979F* OUI:F4F5A5* ID_OUI_FROM_DATABASE=Nokia Corporation -OUI:3CC243* - ID_OUI_FROM_DATABASE=Nokia Corporation +OUI:DCB3B4* + ID_OUI_FROM_DATABASE=Honeywell Environmental & Combustion Controls (Tianjin) Co., Ltd. -OUI:0015A0* +OUI:001D98* ID_OUI_FROM_DATABASE=Nokia Danmark A/S -OUI:001A16* +OUI:00119F* ID_OUI_FROM_DATABASE=Nokia Danmark A/S -OUI:0022FC* +OUI:0015A0* ID_OUI_FROM_DATABASE=Nokia Danmark A/S -OUI:002548* +OUI:001A16* ID_OUI_FROM_DATABASE=Nokia Danmark A/S -OUI:001DFD* +OUI:0022FC* ID_OUI_FROM_DATABASE=Nokia Danmark A/S -OUI:001EA3* - ID_OUI_FROM_DATABASE=Nokia Danmark A/S +OUI:3CC243* + ID_OUI_FROM_DATABASE=Nokia Corporation -OUI:001D98* - ID_OUI_FROM_DATABASE=Nokia Danmark A/S +OUI:18A6F7* + ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. -OUI:00119F* - ID_OUI_FROM_DATABASE=Nokia Danmark A/S +OUI:246968* + ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. OUI:8CA2FD* ID_OUI_FROM_DATABASE=Starry, Inc. +OUI:14BB6E* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:AC61EA* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:38B54D* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:90A62F* + ID_OUI_FROM_DATABASE=NAVER + +OUI:9476B7* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:8C1ABF* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:B47443* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:30CBF8* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:000BA2* + ID_OUI_FROM_DATABASE=Sumitomo Electric Industries,Ltd + +OUI:F4ED5F* + ID_OUI_FROM_DATABASE=SHENZHEN KTC TECHNOLOGY GROUP + +OUI:2C4D79* + ID_OUI_FROM_DATABASE=GoerTek Inc. + +OUI:40D357* + ID_OUI_FROM_DATABASE=Ison Technology Co., Ltd. + +OUI:A4F1E8* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:F03404* + ID_OUI_FROM_DATABASE=TCT mobile ltd + +OUI:AC9B0A* + ID_OUI_FROM_DATABASE=Sony Computer Entertainment Inc. + +OUI:FC0FE6* + ID_OUI_FROM_DATABASE=Sony Computer Entertainment Inc. + +OUI:709E29* + ID_OUI_FROM_DATABASE=Sony Computer Entertainment Inc. + +OUI:00351A* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:9CD48B* + ID_OUI_FROM_DATABASE=Innolux Technology Europe BV + +OUI:00A0B8* + ID_OUI_FROM_DATABASE=NetApp + +OUI:DCE838* + ID_OUI_FROM_DATABASE=CK Telecom (Shenzhen) Limited + +OUI:545AA6* + ID_OUI_FROM_DATABASE=Espressif Inc. + +OUI:BC8D0E* + ID_OUI_FROM_DATABASE=Alcatel-Lucent + +OUI:E48184* + ID_OUI_FROM_DATABASE=Alcatel-Lucent + +OUI:94E98C* + ID_OUI_FROM_DATABASE=Alcatel-Lucent + +OUI:84262B* + ID_OUI_FROM_DATABASE=Alcatel-Lucent + +OUI:98B039* + ID_OUI_FROM_DATABASE=Alcatel-Lucent + +OUI:A47B2C* + ID_OUI_FROM_DATABASE=Alcatel-Lucent + +OUI:BC6B4D* + ID_OUI_FROM_DATABASE=Alcatel-Lucent + +OUI:B0754D* + ID_OUI_FROM_DATABASE=Alcatel-Lucent + +OUI:00CCFC* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:2C9662* + ID_OUI_FROM_DATABASE=Invenit BV + +OUI:DC2DCB* + ID_OUI_FROM_DATABASE=Beijing Unis HengYue Technology Co., Ltd. + +OUI:3810D5* + ID_OUI_FROM_DATABASE=AVM Audiovisuelles Marketing und Computersysteme GmbH + +OUI:44AAF5* + ID_OUI_FROM_DATABASE=Pace plc + +OUI:1C5F2B* + ID_OUI_FROM_DATABASE=D-Link International + +OUI:D8803C* + ID_OUI_FROM_DATABASE=Anhui Huami Information Technology Company Limited + +OUI:A8E3EE* + ID_OUI_FROM_DATABASE=Sony Computer Entertainment Inc. + +OUI:001FA7* + ID_OUI_FROM_DATABASE=Sony Computer Entertainment Inc. + +OUI:001315* + ID_OUI_FROM_DATABASE=Sony Computer Entertainment Inc. + +OUI:703C03* + ID_OUI_FROM_DATABASE=RadiAnt Co.,Ltd + +OUI:F0D2F1* + ID_OUI_FROM_DATABASE=Amazon Technologies Inc. + +OUI:583277* + ID_OUI_FROM_DATABASE=Reliance Communications LLC + +OUI:CCD3E2* + ID_OUI_FROM_DATABASE=Jiangsu Yinhe Electronics Co.,Ltd. + +OUI:182195* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:A88195* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:88ADD2* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:008E73* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:B805AB* + ID_OUI_FROM_DATABASE=zte corporation + +OUI:9C52F8* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:900325* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:DC094C* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:DCEE06* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:AC44F2* + ID_OUI_FROM_DATABASE=YAMAHA CORPORATION + +OUI:508965* + ID_OUI_FROM_DATABASE=SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD. + +OUI:808C97* + ID_OUI_FROM_DATABASE=Kaonmedia CO., LTD. + +OUI:30B49E* + ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. + +OUI:349971* + ID_OUI_FROM_DATABASE=Quanta Storage Inc. + +OUI:24615A* + ID_OUI_FROM_DATABASE=China Mobile Group Device Co.,Ltd. + +OUI:B0E2E5* + ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD + +OUI:AC0D1B* + ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications) + +OUI:5CC7D7* + ID_OUI_FROM_DATABASE=AZROAD TECHNOLOGY COMPANY LIMITED + +OUI:A0043E* + ID_OUI_FROM_DATABASE=Parker Hannifin Manufacturing Germany GmbH & Co. KG + +OUI:001706* + ID_OUI_FROM_DATABASE=Techfaithwireless Communication Technology Limited. + +OUI:30F6B9* + ID_OUI_FROM_DATABASE=Ecocentric Energy + +OUI:1C3ADE* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:004268* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:00BD82* + ID_OUI_FROM_DATABASE=Shenzhen YOUHUA Technology Co., Ltd + +OUI:603ECA* + ID_OUI_FROM_DATABASE=Cambridge Medical Robotics Ltd + +OUI:E4A1E6* + ID_OUI_FROM_DATABASE=Alcatel-Lucent Shanghai Bell Co., Ltd + +OUI:54489C* + ID_OUI_FROM_DATABASE=CDOUBLES ELECTRONICS CO. LTD. + +OUI:54BEF7* + ID_OUI_FROM_DATABASE=PEGATRON CORPORATION + +OUI:0C54A5* + ID_OUI_FROM_DATABASE=PEGATRON CORPORATION + +OUI:202564* + ID_OUI_FROM_DATABASE=PEGATRON CORPORATION + +OUI:600292* + ID_OUI_FROM_DATABASE=PEGATRON CORPORATION + +OUI:84002D* + ID_OUI_FROM_DATABASE=PEGATRON CORPORATION + +OUI:8019FE* + ID_OUI_FROM_DATABASE=JianLing Technology CO., LTD + +OUI:58605F* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:001188* + ID_OUI_FROM_DATABASE=Enterasys + +OUI:1078D2* + ID_OUI_FROM_DATABASE=Elitegroup Computer Systems Co.,Ltd. + +OUI:001E90* + ID_OUI_FROM_DATABASE=Elitegroup Computer Systems Co.,Ltd. + +OUI:002465* + ID_OUI_FROM_DATABASE=Elentec + +OUI:001CD7* + ID_OUI_FROM_DATABASE=Harman/Becker Automotive Systems GmbH + +OUI:0016EC* + ID_OUI_FROM_DATABASE=Elitegroup Computer Systems Co.,Ltd. + +OUI:000D87* + ID_OUI_FROM_DATABASE=Elitegroup Computer Systems Co.,Ltd. + +OUI:000AE6* + ID_OUI_FROM_DATABASE=Elitegroup Computer Systems Co.,Ltd. + +OUI:945089* + ID_OUI_FROM_DATABASE=SimonsVoss Technologies GmbH + +OUI:001F1F* + ID_OUI_FROM_DATABASE=Edimax Technology Co. Ltd. + +OUI:0016FA* + ID_OUI_FROM_DATABASE=ECI Telecom Ltd. + +OUI:003A7D* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:844076* + ID_OUI_FROM_DATABASE=Drivenets + +OUI:E80959* + ID_OUI_FROM_DATABASE=Guoguang Electric Co.,Ltd + +OUI:00144F* + ID_OUI_FROM_DATABASE=Oracle Corporation + +OUI:541379* + ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. + +OUI:0010E0* + ID_OUI_FROM_DATABASE=Oracle Corporation + +OUI:0090AE* + ID_OUI_FROM_DATABASE=ITALTEL S.p.A/RF-UP-I + +OUI:001E33* + ID_OUI_FROM_DATABASE=INVENTEC Corporation + +OUI:001A29* + ID_OUI_FROM_DATABASE=Johnson Outdoors Marine Electronics d/b/a Minnkota + +OUI:001F09* + ID_OUI_FROM_DATABASE=Jastec + +OUI:D0A4B1* + ID_OUI_FROM_DATABASE=Sonifex Ltd. + +OUI:001DB5* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:00239C* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:80711F* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:28F366* + ID_OUI_FROM_DATABASE=Shenzhen Bilian electronic CO.,LTD + +OUI:D44165* + ID_OUI_FROM_DATABASE=SICHUAN TIANYI COMHEART TELECOMCO.,LTD + +OUI:8828B3* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:C4F081* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:801382* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:341290* + ID_OUI_FROM_DATABASE=Treeview Co.,Ltd. + +OUI:BCAD28* + ID_OUI_FROM_DATABASE=Hangzhou Hikvision Digital Technology Co.,Ltd. + +OUI:3CB6B7* + ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd. + +OUI:28C0DA* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:648788* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:A8D0E5* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:0881F4* + ID_OUI_FROM_DATABASE=Juniper Networks + OUI:0C6F9C* ID_OUI_FROM_DATABASE=Shaw Communications Inc. @@ -19733,9 +20714,6 @@ OUI:B88687* OUI:68F956* ID_OUI_FROM_DATABASE=Objetivos y Servicio de Valor Añadido -OUI:C07CD1* - ID_OUI_FROM_DATABASE=PEGATRON CORPORATION - OUI:58B633* ID_OUI_FROM_DATABASE=Ruckus Wireless @@ -19841,9 +20819,6 @@ OUI:D468BA* OUI:A47B85* ID_OUI_FROM_DATABASE=ULTIMEDIA Co Ltd, -OUI:A8D828* - ID_OUI_FROM_DATABASE=Bayer HealthCare - OUI:CC37AB* ID_OUI_FROM_DATABASE=Edgecore Networks Corportation @@ -19868,9 +20843,6 @@ OUI:E89120* OUI:546172* ID_OUI_FROM_DATABASE=ZODIAC AEROSPACE SAS -OUI:AC620D* - ID_OUI_FROM_DATABASE=Jabil Circuit (Wuxi) Co. LTD - OUI:54CD10* ID_OUI_FROM_DATABASE=Panasonic Mobile Communications Co.,Ltd. @@ -20078,9 +21050,6 @@ OUI:EC74BA* OUI:683C7D* ID_OUI_FROM_DATABASE=Magic Intelligence Technology Limited -OUI:18A3E8* - ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Tech.Co.,Ltd. - OUI:60128B* ID_OUI_FROM_DATABASE=CANON INC. @@ -20393,9 +21362,6 @@ OUI:B0D59D* OUI:C4913A* ID_OUI_FROM_DATABASE=Shenzhen Sanland Electronic Co., ltd. -OUI:60B617* - ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Tech.Co.,Ltd. - OUI:A46032* ID_OUI_FROM_DATABASE=MRV Communications (Networks) LTD @@ -21197,9 +22163,6 @@ OUI:A01C05* OUI:F80DEA* ID_OUI_FROM_DATABASE=ZyCast Technology Inc. -OUI:7C0507* - ID_OUI_FROM_DATABASE=PEGATRON CORPORATION - OUI:1800DB* ID_OUI_FROM_DATABASE=Fitbit Inc. @@ -21302,9 +22265,6 @@ OUI:D40FB2* OUI:74FE48* ID_OUI_FROM_DATABASE=ADVANTECH CO., LTD. -OUI:7054D2* - ID_OUI_FROM_DATABASE=PEGATRON CORPORATION - OUI:D0B498* ID_OUI_FROM_DATABASE=Robert Bosch LLC Automotive Electronics @@ -21563,9 +22523,6 @@ OUI:803FD6* OUI:645FFF* ID_OUI_FROM_DATABASE=Nicolet Neuro -OUI:741E93* - ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Tech.Co.,Ltd. - OUI:2829D9* ID_OUI_FROM_DATABASE=GlobalBeiMing technology (Beijing)Co. Ltd @@ -21758,9 +22715,6 @@ OUI:5C4A26* OUI:289EDF* ID_OUI_FROM_DATABASE=Danfoss Turbocor Compressors, Inc -OUI:E840F2* - ID_OUI_FROM_DATABASE=PEGATRON CORPORATION - OUI:50053D* ID_OUI_FROM_DATABASE=CyWee Group Ltd @@ -21815,9 +22769,6 @@ OUI:045C06* OUI:504A5E* ID_OUI_FROM_DATABASE=Masimo Corporation -OUI:4CC94F* - ID_OUI_FROM_DATABASE=Alcatel-Lucent - OUI:38BF33* ID_OUI_FROM_DATABASE=NEC CASIO Mobile Communications @@ -21890,9 +22841,6 @@ OUI:BC1401* OUI:68D925* ID_OUI_FROM_DATABASE=ProSys Development Services -OUI:2C2D48* - ID_OUI_FROM_DATABASE=bct electronic GesmbH - OUI:B41DEF* ID_OUI_FROM_DATABASE=Internet Laboratories, Inc. @@ -22136,9 +23084,6 @@ OUI:7C4B78* OUI:28D1AF* ID_OUI_FROM_DATABASE=Nokia Corporation -OUI:3482DE* - ID_OUI_FROM_DATABASE=Kayo Technology, Inc. - OUI:68BC0C* ID_OUI_FROM_DATABASE=Cisco Systems, Inc @@ -22211,9 +23156,6 @@ OUI:0041B4* OUI:0007AB* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -OUI:48F7F1* - ID_OUI_FROM_DATABASE=Alcatel-Lucent - OUI:D453AF* ID_OUI_FROM_DATABASE=VIGO System S.A. @@ -22547,9 +23489,6 @@ OUI:408BF6* OUI:447E95* ID_OUI_FROM_DATABASE=Alpha and Omega, Inc -OUI:50C971* - ID_OUI_FROM_DATABASE=GN Netcom A/S - OUI:E8B748* ID_OUI_FROM_DATABASE=Cisco Systems, Inc @@ -23324,9 +24263,6 @@ OUI:9CCD82* OUI:C8AACC* ID_OUI_FROM_DATABASE=Private -OUI:008CFA* - ID_OUI_FROM_DATABASE=Inventec Corporation - OUI:003D41* ID_OUI_FROM_DATABASE=Hatteland Computer AS @@ -23627,9 +24563,6 @@ OUI:0025B7* OUI:0025B0* ID_OUI_FROM_DATABASE=Schmartz Inc -OUI:002552* - ID_OUI_FROM_DATABASE=VXI CORPORATION - OUI:002546* ID_OUI_FROM_DATABASE=Cisco Systems, Inc @@ -23915,9 +24848,6 @@ OUI:0023A5* OUI:0022B6* ID_OUI_FROM_DATABASE=Superflow Technologies Group -OUI:0022B1* - ID_OUI_FROM_DATABASE=Elbit Systems - OUI:0022A3* ID_OUI_FROM_DATABASE=California Eastern Laboratories @@ -24446,9 +25376,6 @@ OUI:001E9E* OUI:001E99* ID_OUI_FROM_DATABASE=Vantanol Industrial Corporation -OUI:001F45* - ID_OUI_FROM_DATABASE=Enterasys - OUI:001F36* ID_OUI_FROM_DATABASE=Bellwin Information Co. Ltd., @@ -24644,9 +25571,6 @@ OUI:001D88* OUI:001D7E* ID_OUI_FROM_DATABASE=Cisco-Linksys, LLC -OUI:001D82* - ID_OUI_FROM_DATABASE=GN A/S (GN Netcom A/S) - OUI:001D7D* ID_OUI_FROM_DATABASE=GIGA-BYTE TECHNOLOGY CO.,LTD. @@ -25565,9 +26489,6 @@ OUI:001633* OUI:00162C* ID_OUI_FROM_DATABASE=Xanboo -OUI:001625* - ID_OUI_FROM_DATABASE=Impinj, Inc. - OUI:001627* ID_OUI_FROM_DATABASE=embedded-logic DESIGN AND MORE GmbH @@ -26048,9 +26969,6 @@ OUI:00131E* OUI:001323* ID_OUI_FROM_DATABASE=Cap Co., Ltd. -OUI:001317* - ID_OUI_FROM_DATABASE=GN Netcom as - OUI:00130B* ID_OUI_FROM_DATABASE=Mextal B.V. @@ -27014,9 +27932,6 @@ OUI:000CB5* OUI:000CBC* ID_OUI_FROM_DATABASE=Iscutum -OUI:000CC1* - ID_OUI_FROM_DATABASE=Cooper Industries Inc. - OUI:000CA3* ID_OUI_FROM_DATABASE=Rancho Technology, Inc. @@ -27470,9 +28385,6 @@ OUI:0008CA* OUI:0008BF* ID_OUI_FROM_DATABASE=Aptus Elektronik AB -OUI:0008B9* - ID_OUI_FROM_DATABASE=KAON MEDIA Co., Ltd. - OUI:0008B3* ID_OUI_FROM_DATABASE=Fastwel @@ -27812,9 +28724,6 @@ OUI:000659* OUI:000658* ID_OUI_FROM_DATABASE=Helmut Fischer GmbH Institut für Elektronik und Messtechnik -OUI:00065F* - ID_OUI_FROM_DATABASE=ECI Telecom - NGTS Ltd. - OUI:000646* ID_OUI_FROM_DATABASE=ShenZhen XunBao Network Technology Co Ltd @@ -29030,9 +29939,6 @@ OUI:0050F1* OUI:00501B* ID_OUI_FROM_DATABASE=ABL CANADA, INC. -OUI:005058* - ID_OUI_FROM_DATABASE=VegaStream Group Limted - OUI:005036* ID_OUI_FROM_DATABASE=NETCAM, LTD. @@ -29072,9 +29978,6 @@ OUI:009042* OUI:009051* ID_OUI_FROM_DATABASE=ULTIMATE TECHNOLOGY CORP. -OUI:0090F9* - ID_OUI_FROM_DATABASE=LEITCH - OUI:0090FF* ID_OUI_FROM_DATABASE=TELLUS TECHNOLOGY INC. @@ -29117,9 +30020,6 @@ OUI:009013* OUI:0090CC* ID_OUI_FROM_DATABASE=Planex Communications -OUI:0090FA* - ID_OUI_FROM_DATABASE=Emulex Corporation - OUI:009004* ID_OUI_FROM_DATABASE=3COM EUROPE LTD. @@ -29393,9 +30293,6 @@ OUI:00E0C6* OUI:00E06D* ID_OUI_FROM_DATABASE=COMPUWARE CORPORATION -OUI:00E0E6* - ID_OUI_FROM_DATABASE=INCAA DATACOM B.V. - OUI:00E074* ID_OUI_FROM_DATABASE=TIERNAN COMMUNICATIONS, INC. @@ -29726,9 +30623,6 @@ OUI:00A000* OUI:00A07B* ID_OUI_FROM_DATABASE=DAWN COMPUTER INCORPORATION -OUI:00A0DE* - ID_OUI_FROM_DATABASE=YAMAHA CORPORATION - OUI:00A05C* ID_OUI_FROM_DATABASE=INVENTORY CONVERSION, INC./ @@ -29783,9 +30677,6 @@ OUI:00C019* OUI:00A062* ID_OUI_FROM_DATABASE=AES PRODATA -OUI:00A0F4* - ID_OUI_FROM_DATABASE=GE - OUI:00A008* ID_OUI_FROM_DATABASE=NETCORP @@ -30353,9 +31244,6 @@ OUI:0080F6* OUI:00001F* ID_OUI_FROM_DATABASE=Telco Systems, Inc. -OUI:0000B4* - ID_OUI_FROM_DATABASE=EDIMAX COMPUTER COMPANY - OUI:000058* ID_OUI_FROM_DATABASE=RACORE COMPUTER PRODUCTS INC. @@ -30887,12 +31775,6 @@ OUI:948815* OUI:3010B3* ID_OUI_FROM_DATABASE=Liteon Technology Corporation -OUI:00005F* - ID_OUI_FROM_DATABASE=Sumitomo Electric Industries,Ltd - -OUI:0008F6* - ID_OUI_FROM_DATABASE=Sumitomo Electric Industries,Ltd - OUI:001802* ID_OUI_FROM_DATABASE=Alpha Networks Inc. @@ -31094,42 +31976,9 @@ OUI:00264D* OUI:74A528* ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -OUI:3C8AB0* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:4C9614* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:88E0F3* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:2C2172* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:7819F7* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:5C5EAB* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:009069* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:B0C69A* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:88A25E* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:001BC0* - ID_OUI_FROM_DATABASE=Juniper Networks - OUI:30A220* ID_OUI_FROM_DATABASE=ARG Telecom -OUI:F4B52F* - ID_OUI_FROM_DATABASE=Juniper Networks - OUI:783E53* ID_OUI_FROM_DATABASE=BSkyB Ltd @@ -31337,6 +32186,378 @@ OUI:0025D0* OUI:001FDE* ID_OUI_FROM_DATABASE=Nokia Danmark A/S +OUI:907282* + ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS + +OUI:006CFD* + ID_OUI_FROM_DATABASE=Sichuan Changhong Electric Ltd. + +OUI:1C234F* + ID_OUI_FROM_DATABASE=EDMI Europe Ltd + +OUI:A444D1* + ID_OUI_FROM_DATABASE=Wingtech Group (HongKong)Limited + +OUI:1C9E46* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:005058* + ID_OUI_FROM_DATABASE=Sangoma Technologies + +OUI:3482DE* + ID_OUI_FROM_DATABASE=Kiio Inc + +OUI:0008F6* + ID_OUI_FROM_DATABASE=Sumitomo Electric Industries,Ltd + +OUI:00005F* + ID_OUI_FROM_DATABASE=Sumitomo Electric Industries,Ltd + +OUI:A0C589* + ID_OUI_FROM_DATABASE=Intel Corporate + +OUI:74BFB7* + ID_OUI_FROM_DATABASE=Nusoft Corporation + +OUI:50DA00* + ID_OUI_FROM_DATABASE=Hangzhou H3C Technologies Co., Limited + +OUI:9C2A83* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:E45D75* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:3CBEE1* + ID_OUI_FROM_DATABASE=NIKON CORPORATION + +OUI:047E4A* + ID_OUI_FROM_DATABASE=moobox CO., Ltd. + +OUI:104FA8* + ID_OUI_FROM_DATABASE=Sony Computer Entertainment Inc. + +OUI:F01B6C* + ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd. + +OUI:E0C767* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:2C09CB* + ID_OUI_FROM_DATABASE=COBS AB + +OUI:60ACC8* + ID_OUI_FROM_DATABASE=KunTeng Inc. + +OUI:0404EA* + ID_OUI_FROM_DATABASE=Valens Semiconductor Ltd. + +OUI:800DD7* + ID_OUI_FROM_DATABASE=Latticework, Inc + +OUI:402E28* + ID_OUI_FROM_DATABASE=MiXTelematics + +OUI:18C501* + ID_OUI_FROM_DATABASE=SHENZHEN GONGJIN ELECTRONICS CO.,LT + +OUI:546D52* + ID_OUI_FROM_DATABASE=TOPVIEW OPTRONICS CORP. + +OUI:CCB3AB* + ID_OUI_FROM_DATABASE=shenzhen Biocare Bio-Medical Equipment Co.,Ltd. + +OUI:4CC94F* + ID_OUI_FROM_DATABASE=Alcatel-Lucent + +OUI:48F7F1* + ID_OUI_FROM_DATABASE=Alcatel-Lucent + +OUI:E4B318* + ID_OUI_FROM_DATABASE=Intel Corporate + +OUI:00C88B* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:A85EE4* + ID_OUI_FROM_DATABASE=12Sided Technology, LLC + +OUI:000CC1* + ID_OUI_FROM_DATABASE=Eaton Corporation + +OUI:0090F9* + ID_OUI_FROM_DATABASE=Imagine Communications + +OUI:04C103* + ID_OUI_FROM_DATABASE=Clover Network, Inc. + +OUI:F877B8* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:1C553A* + ID_OUI_FROM_DATABASE=QianGua Corp. + +OUI:E4A7A0* + ID_OUI_FROM_DATABASE=Intel Corporate + +OUI:E4FAED* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:789682* + ID_OUI_FROM_DATABASE=zte corporation + +OUI:F02745* + ID_OUI_FROM_DATABASE=F-Secure Corporation + +OUI:54D0B4* + ID_OUI_FROM_DATABASE=Xiamen Four-Faith Communication Technology Co.,Ltd + +OUI:D017C2* + ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC. + +OUI:10DA43* + ID_OUI_FROM_DATABASE=NETGEAR + +OUI:001625* + ID_OUI_FROM_DATABASE=Impinj, Inc. + +OUI:1CEA1B* + ID_OUI_FROM_DATABASE=Alcatel-Lucent + +OUI:DC1AC5* + ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd. + +OUI:60EE5C* + ID_OUI_FROM_DATABASE=SHENZHEN FAST TECHNOLOGIES CO.,LTD + +OUI:BC60A7* + ID_OUI_FROM_DATABASE=Sony Computer Entertainment Inc. + +OUI:58D67A* + ID_OUI_FROM_DATABASE=TCPlink + +OUI:00A0DE* + ID_OUI_FROM_DATABASE=YAMAHA CORPORATION + +OUI:081F71* + ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. + +OUI:2C2D48* + ID_OUI_FROM_DATABASE=bct electronic GesmbH + +OUI:E4A471* + ID_OUI_FROM_DATABASE=Intel Corporate + +OUI:60B617* + ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD + +OUI:18A3E8* + ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD + +OUI:741E93* + ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD + +OUI:F0C77F* + ID_OUI_FROM_DATABASE=Texas Instruments + +OUI:00A0F4* + ID_OUI_FROM_DATABASE=GE + +OUI:00CAE5* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:4883C7* + ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS + +OUI:7050AF* + ID_OUI_FROM_DATABASE=BSkyB Ltd + +OUI:F4EF9E* + ID_OUI_FROM_DATABASE=SGSG SCIENCE & TECHNOLOGY CO. LTD + +OUI:DC9C9F* + ID_OUI_FROM_DATABASE=Shenzhen YOUHUA Technology Co., Ltd + +OUI:0CBF3F* + ID_OUI_FROM_DATABASE=Shenzhen Lencotion Technology Co.,Ltd + +OUI:84FEDC* + ID_OUI_FROM_DATABASE=Borqs Beijing Ltd. + +OUI:F03E90* + ID_OUI_FROM_DATABASE=Ruckus Wireless + +OUI:D8D723* + ID_OUI_FROM_DATABASE=IDS, Inc + +OUI:703A0E* + ID_OUI_FROM_DATABASE=Aruba Networks + +OUI:7054D2* + ID_OUI_FROM_DATABASE=PEGATRON CORPORATION + +OUI:7C0507* + ID_OUI_FROM_DATABASE=PEGATRON CORPORATION + +OUI:C07CD1* + ID_OUI_FROM_DATABASE=PEGATRON CORPORATION + +OUI:94DBDA* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:384C4F* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:E4A8B6* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:244C07* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:E840F2* + ID_OUI_FROM_DATABASE=PEGATRON CORPORATION + +OUI:F0D1B8* + ID_OUI_FROM_DATABASE=LEDVANCE + +OUI:60B387* + ID_OUI_FROM_DATABASE=Synergics Technologies GmbH + +OUI:7085C2* + ID_OUI_FROM_DATABASE=ASRock Incorporation + +OUI:C825E1* + ID_OUI_FROM_DATABASE=Lemobile Information Technology (Beijing) Co., Ltd + +OUI:0022B1* + ID_OUI_FROM_DATABASE=Elbit Systems Ltd. + +OUI:0000B4* + ID_OUI_FROM_DATABASE=Edimax Technology Co. Ltd. + +OUI:00065F* + ID_OUI_FROM_DATABASE=ECI Telecom Ltd. + +OUI:001F45* + ID_OUI_FROM_DATABASE=Enterasys + +OUI:0090FA* + ID_OUI_FROM_DATABASE=Emulex Corporation + +OUI:50C971* + ID_OUI_FROM_DATABASE=GN Netcom A/S + +OUI:001D82* + ID_OUI_FROM_DATABASE=GN Netcom A/S + +OUI:001317* + ID_OUI_FROM_DATABASE=GN Netcom A/S + +OUI:749781* + ID_OUI_FROM_DATABASE=zte corporation + +OUI:B4B15A* + ID_OUI_FROM_DATABASE=Siemens AG Energy Management Division + +OUI:A86BAD* + ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. + +OUI:D80F99* + ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. + +OUI:A8D828* + ID_OUI_FROM_DATABASE=Ascensia Diabetes Care + +OUI:FCBC9C* + ID_OUI_FROM_DATABASE=Vimar Spa + +OUI:149ECF* + ID_OUI_FROM_DATABASE=Dell Inc. + +OUI:AC620D* + ID_OUI_FROM_DATABASE=Jabil Circuit(Wuxi) Co.,Ltd + +OUI:008CFA* + ID_OUI_FROM_DATABASE=INVENTEC Corporation + +OUI:0008B9* + ID_OUI_FROM_DATABASE=Kaonmedia CO., LTD. + +OUI:C83F26* + ID_OUI_FROM_DATABASE=Microsoft Corporation + +OUI:00E0E6* + ID_OUI_FROM_DATABASE=INCAA Computers + +OUI:5C5EAB* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:7819F7* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:2C2172* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:88E0F3* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:4C9614* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:3C8AB0* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:B0C69A* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:009069* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:204E71* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:F4B52F* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:88A25E* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:001BC0* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:F49EEF* + ID_OUI_FROM_DATABASE=Taicang T&W Electronics + +OUI:F4911E* + ID_OUI_FROM_DATABASE=ZHUHAI EWPE INFORMATION TECHNOLOGY INC + +OUI:94FE22* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:F823B2* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:DCD916* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:002552* + ID_OUI_FROM_DATABASE=VXi Corporation + +OUI:341FE4* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:006CBC* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:DC3752* + ID_OUI_FROM_DATABASE=GE + +OUI:F08261* + ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS + +OUI:D084B0* + ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS + OUI:5846E1* ID_OUI_FROM_DATABASE=Baxter International Inc @@ -31361,41 +32582,26 @@ OUI:B4EED4* OUI:D08CB5* ID_OUI_FROM_DATABASE=Texas Instruments -OUI:001831* - ID_OUI_FROM_DATABASE=Texas Instruments - -OUI:0023D4* - ID_OUI_FROM_DATABASE=Texas Instruments - -OUI:3C2DB7* - ID_OUI_FROM_DATABASE=Texas Instruments - -OUI:40984E* - ID_OUI_FROM_DATABASE=Texas Instruments - -OUI:3C7DB1* - ID_OUI_FROM_DATABASE=Texas Instruments - -OUI:505663* - ID_OUI_FROM_DATABASE=Texas Instruments +OUI:0030C5* + ID_OUI_FROM_DATABASE=CADENCE DESIGN SYSTEMS, INC. -OUI:B0B448* - ID_OUI_FROM_DATABASE=Texas Instruments +OUI:00FEC8* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:F08261* - ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS +OUI:BC5436* + ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:D084B0* - ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS +OUI:0CC731* + ID_OUI_FROM_DATABASE=Currant, Inc. -OUI:00FEC8* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc +OUI:00142F* + ID_OUI_FROM_DATABASE=Savvius -OUI:0030C5* - ID_OUI_FROM_DATABASE=CADENCE DESIGN SYSTEMS, INC. +OUI:70CA4D* + ID_OUI_FROM_DATABASE=Shenzhen lnovance Technology Co.,Ltd. -OUI:EC2280* - ID_OUI_FROM_DATABASE=D-Link International +OUI:DCC0EB* + ID_OUI_FROM_DATABASE=ASSA ABLOY CÔTE PICARDE OUI:047863* ID_OUI_FROM_DATABASE=Shanghai MXCHIP Information Technology Co., Ltd. @@ -31406,33 +32612,24 @@ OUI:24BA13* OUI:24DA11* ID_OUI_FROM_DATABASE=NO NDA Inc -OUI:70CA4D* - ID_OUI_FROM_DATABASE=Shenzhen lnovance Technology Co.,Ltd. +OUI:BCD1D3* + ID_OUI_FROM_DATABASE=Shenzhen TINNO Mobile Technology Corp. -OUI:DCC0EB* - ID_OUI_FROM_DATABASE=ASSA ABLOY CÔTE PICARDE +OUI:BC4434* + ID_OUI_FROM_DATABASE=Shenzhen TINNO Mobile Technology Corp. -OUI:001735* - ID_OUI_FROM_DATABASE=Intel Wireless Network Group +OUI:0041D2* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:9CDFB1* - ID_OUI_FROM_DATABASE=Shenzhen Crave Communication Co., LTD +OUI:4CFB45* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -OUI:5CF938* - ID_OUI_FROM_DATABASE=Apple, Inc. +OUI:A4BA76* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD OUI:3871DE* ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:BC5436* - ID_OUI_FROM_DATABASE=Apple, Inc. - -OUI:0CC731* - ID_OUI_FROM_DATABASE=Currant, Inc. - -OUI:00142F* - ID_OUI_FROM_DATABASE=Savvius - OUI:2CDDA3* ID_OUI_FROM_DATABASE=Point Grey Research Inc. @@ -31451,23 +32648,23 @@ OUI:F4F5E8* OUI:F88FCA* ID_OUI_FROM_DATABASE=Google, Inc. -OUI:BCD1D3* - ID_OUI_FROM_DATABASE=Shenzhen TINNO Mobile Technology Corp. +OUI:14D64D* + ID_OUI_FROM_DATABASE=D-Link International -OUI:BC4434* - ID_OUI_FROM_DATABASE=Shenzhen TINNO Mobile Technology Corp. +OUI:C8BE19* + ID_OUI_FROM_DATABASE=D-Link International -OUI:0041D2* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc +OUI:BCF685* + ID_OUI_FROM_DATABASE=D-Link International -OUI:4CFB45* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD +OUI:CCB255* + ID_OUI_FROM_DATABASE=D-Link International -OUI:A4BA76* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD +OUI:84C9B2* + ID_OUI_FROM_DATABASE=D-Link International -OUI:003676* - ID_OUI_FROM_DATABASE=Pace plc +OUI:EC2280* + ID_OUI_FROM_DATABASE=D-Link International OUI:78E3B5* ID_OUI_FROM_DATABASE=Hewlett Packard @@ -31481,47 +32678,41 @@ OUI:68B599* OUI:0C47C9* ID_OUI_FROM_DATABASE=Amazon Technologies Inc. -OUI:0017E6* +OUI:001831* ID_OUI_FROM_DATABASE=Texas Instruments -OUI:0017E8* +OUI:0023D4* ID_OUI_FROM_DATABASE=Texas Instruments -OUI:9059AF* +OUI:3C2DB7* ID_OUI_FROM_DATABASE=Texas Instruments -OUI:E0C79D* +OUI:40984E* ID_OUI_FROM_DATABASE=Texas Instruments -OUI:14D64D* - ID_OUI_FROM_DATABASE=D-Link International - -OUI:C8BE19* - ID_OUI_FROM_DATABASE=D-Link International - -OUI:BCF685* - ID_OUI_FROM_DATABASE=D-Link International +OUI:3C7DB1* + ID_OUI_FROM_DATABASE=Texas Instruments -OUI:CCB255* - ID_OUI_FROM_DATABASE=D-Link International +OUI:505663* + ID_OUI_FROM_DATABASE=Texas Instruments -OUI:84C9B2* - ID_OUI_FROM_DATABASE=D-Link International +OUI:B0B448* + ID_OUI_FROM_DATABASE=Texas Instruments -OUI:DCD321* - ID_OUI_FROM_DATABASE=HUMAX Co., Ltd. +OUI:0017E6* + ID_OUI_FROM_DATABASE=Texas Instruments -OUI:CC4EEC* - ID_OUI_FROM_DATABASE=HUMAX Co., Ltd. +OUI:0017E8* + ID_OUI_FROM_DATABASE=Texas Instruments -OUI:88C255* +OUI:9059AF* ID_OUI_FROM_DATABASE=Texas Instruments -OUI:DC330D* - ID_OUI_FROM_DATABASE=Qingdao Haier Telecom Co.,Ltd +OUI:E0C79D* + ID_OUI_FROM_DATABASE=Texas Instruments -OUI:0080E1* - ID_OUI_FROM_DATABASE=STMicroelectronics SRL +OUI:003676* + ID_OUI_FROM_DATABASE=Pace plc OUI:58DC6D* ID_OUI_FROM_DATABASE=Exceptional Innovation, Inc. @@ -31565,18 +32756,6 @@ OUI:08EA44* OUI:78F882* ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications) -OUI:8851FB* - ID_OUI_FROM_DATABASE=Hewlett Packard - -OUI:AC162D* - ID_OUI_FROM_DATABASE=Hewlett Packard - -OUI:A0B3CC* - ID_OUI_FROM_DATABASE=Hewlett Packard - -OUI:E4115B* - ID_OUI_FROM_DATABASE=Hewlett Packard - OUI:C8CBB8* ID_OUI_FROM_DATABASE=Hewlett Packard @@ -31598,8 +32777,29 @@ OUI:D48564* OUI:3C4A92* ID_OUI_FROM_DATABASE=Hewlett Packard -OUI:780AC7* - ID_OUI_FROM_DATABASE=Baofeng TV Co., Ltd. +OUI:0080E1* + ID_OUI_FROM_DATABASE=STMicroelectronics SRL + +OUI:2C6E85* + ID_OUI_FROM_DATABASE=Intel Corporate + +OUI:00D0B7* + ID_OUI_FROM_DATABASE=Intel Corporation + +OUI:0015D1* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:001DD3* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:001735* + ID_OUI_FROM_DATABASE=Intel Wireless Network Group + +OUI:9CDFB1* + ID_OUI_FROM_DATABASE=Shenzhen Crave Communication Co., LTD + +OUI:5CF938* + ID_OUI_FROM_DATABASE=Apple, Inc. OUI:001D73* ID_OUI_FROM_DATABASE=BUFFALO.INC @@ -31625,21 +32825,6 @@ OUI:001B78* OUI:001E0B* ID_OUI_FROM_DATABASE=Hewlett Packard -OUI:2C6E85* - ID_OUI_FROM_DATABASE=Intel Corporate - -OUI:00D0B7* - ID_OUI_FROM_DATABASE=Intel Corporation - -OUI:0015D1* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:C005C2* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:6455B1* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - OUI:0002B3* ID_OUI_FROM_DATABASE=Intel Corporation @@ -31658,6 +32843,9 @@ OUI:9049FA* OUI:C8348E* ID_OUI_FROM_DATABASE=Intel Corporate +OUI:780AC7* + ID_OUI_FROM_DATABASE=Baofeng TV Co., Ltd. + OUI:00508B* ID_OUI_FROM_DATABASE=Hewlett Packard @@ -31676,8 +32864,17 @@ OUI:A0481C* OUI:A01D48* ID_OUI_FROM_DATABASE=Hewlett Packard -OUI:001DD3* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. +OUI:8851FB* + ID_OUI_FROM_DATABASE=Hewlett Packard + +OUI:AC162D* + ID_OUI_FROM_DATABASE=Hewlett Packard + +OUI:A0B3CC* + ID_OUI_FROM_DATABASE=Hewlett Packard + +OUI:E4115B* + ID_OUI_FROM_DATABASE=Hewlett Packard OUI:E8892C* ID_OUI_FROM_DATABASE=ARRIS Group, Inc. @@ -31694,41 +32891,29 @@ OUI:8C09F4* OUI:3CDFA9* ID_OUI_FROM_DATABASE=ARRIS Group, Inc. -OUI:94B2CC* - ID_OUI_FROM_DATABASE=PIONEER CORPORATION - -OUI:887F03* - ID_OUI_FROM_DATABASE=Comper Technology Investment Limited - -OUI:E06066* - ID_OUI_FROM_DATABASE=Sercomm Corporation - -OUI:0019E0* - ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. - -OUI:0023CD* - ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. +OUI:C005C2* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. -OUI:002719* - ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. +OUI:6455B1* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. -OUI:40169F* - ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. +OUI:DCD321* + ID_OUI_FROM_DATABASE=HUMAX Co., Ltd. -OUI:940C6D* - ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. +OUI:CC4EEC* + ID_OUI_FROM_DATABASE=HUMAX Co., Ltd. -OUI:74EA3A* - ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. +OUI:88C255* + ID_OUI_FROM_DATABASE=Texas Instruments -OUI:90F652* - ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. +OUI:DC330D* + ID_OUI_FROM_DATABASE=Qingdao Haier Telecom Co.,Ltd -OUI:10FEED* - ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. +OUI:94B2CC* + ID_OUI_FROM_DATABASE=PIONEER CORPORATION -OUI:C46E1F* - ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. +OUI:887F03* + ID_OUI_FROM_DATABASE=Comper Technology Investment Limited OUI:50FA84* ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. @@ -31757,26 +32942,11 @@ OUI:1C994C* OUI:F02765* ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd. -OUI:507224* - ID_OUI_FROM_DATABASE=Texas Instruments - -OUI:D4970B* - ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd - -OUI:F48B32* - ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd - -OUI:20A783* - ID_OUI_FROM_DATABASE=miControl GmbH - -OUI:005053* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -OUI:00500F* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc +OUI:88308A* + ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd. -OUI:048A15* - ID_OUI_FROM_DATABASE=Avaya Inc +OUI:44A7CF* + ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd. OUI:44322A* ID_OUI_FROM_DATABASE=Avaya Inc @@ -31808,11 +32978,77 @@ OUI:200BC7* OUI:104780* ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -OUI:88308A* - ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd. +OUI:30D17E* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -OUI:44A7CF* - ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd. +OUI:9C28EF* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:E06066* + ID_OUI_FROM_DATABASE=Sercomm Corporation + +OUI:0019E0* + ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. + +OUI:0023CD* + ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. + +OUI:002719* + ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. + +OUI:40169F* + ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. + +OUI:940C6D* + ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. + +OUI:74EA3A* + ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. + +OUI:90F652* + ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. + +OUI:10FEED* + ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. + +OUI:C46E1F* + ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. + +OUI:68A0F6* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:5CF96A* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:B43052* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:88CEFA* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:582AF7* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:F48E92* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:40CBA8* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:087A4C* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:D46E5C* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:2469A5* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:C8D15E* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:F83DFF* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD OUI:0013E0* ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd. @@ -31874,41 +33110,29 @@ OUI:88E3AB* OUI:00664B* ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -OUI:68A0F6* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -OUI:5CF96A* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -OUI:B43052* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -OUI:88CEFA* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -OUI:582AF7* +OUI:7C6097* ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -OUI:F48E92* +OUI:60DE44* ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -OUI:40CBA8* +OUI:3400A3* ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -OUI:087A4C* +OUI:643E8C* ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -OUI:D46E5C* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD +OUI:0012D1* + ID_OUI_FROM_DATABASE=Texas Instruments -OUI:2469A5* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD +OUI:70FF76* + ID_OUI_FROM_DATABASE=Texas Instruments -OUI:C8D15E* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD +OUI:B4994C* + ID_OUI_FROM_DATABASE=Texas Instruments -OUI:F83DFF* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD +OUI:507224* + ID_OUI_FROM_DATABASE=Texas Instruments OUI:308730* ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD @@ -31934,86 +33158,26 @@ OUI:A4251B* OUI:6CA849* ID_OUI_FROM_DATABASE=Avaya Inc -OUI:30D17E* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -OUI:9C28EF* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -OUI:7C6097* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -OUI:60DE44* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -OUI:3400A3* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -OUI:643E8C* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - -OUI:0012D1* - ID_OUI_FROM_DATABASE=Texas Instruments - -OUI:70FF76* - ID_OUI_FROM_DATABASE=Texas Instruments - -OUI:B4994C* - ID_OUI_FROM_DATABASE=Texas Instruments - -OUI:00C610* - ID_OUI_FROM_DATABASE=Apple, Inc. - -OUI:70DEE2* - ID_OUI_FROM_DATABASE=Apple, Inc. - -OUI:182032* - ID_OUI_FROM_DATABASE=Apple, Inc. - -OUI:6CC26B* - ID_OUI_FROM_DATABASE=Apple, Inc. - -OUI:1040F3* - ID_OUI_FROM_DATABASE=Apple, Inc. - -OUI:FC253F* - ID_OUI_FROM_DATABASE=Apple, Inc. - -OUI:183451* - ID_OUI_FROM_DATABASE=Apple, Inc. - -OUI:C0847A* - ID_OUI_FROM_DATABASE=Apple, Inc. - -OUI:64200C* - ID_OUI_FROM_DATABASE=Apple, Inc. - -OUI:74E1B6* - ID_OUI_FROM_DATABASE=Apple, Inc. - -OUI:0C771A* - ID_OUI_FROM_DATABASE=Apple, Inc. - -OUI:00F4B9* - ID_OUI_FROM_DATABASE=Apple, Inc. +OUI:048A15* + ID_OUI_FROM_DATABASE=Avaya Inc -OUI:C8334B* - ID_OUI_FROM_DATABASE=Apple, Inc. +OUI:D4970B* + ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd -OUI:B8F6B1* - ID_OUI_FROM_DATABASE=Apple, Inc. +OUI:F48B32* + ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd -OUI:C09F42* - ID_OUI_FROM_DATABASE=Apple, Inc. +OUI:20A783* + ID_OUI_FROM_DATABASE=miControl GmbH -OUI:189EFC* - ID_OUI_FROM_DATABASE=Apple, Inc. +OUI:005053* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:6C3E6D* - ID_OUI_FROM_DATABASE=Apple, Inc. +OUI:00500F* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:0016FE* - ID_OUI_FROM_DATABASE=ALPS ELECTRIC CO.,LTD. +OUI:0050A2* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc OUI:0498F3* ID_OUI_FROM_DATABASE=ALPS ELECTRIC CO.,LTD. @@ -32045,11 +33209,50 @@ OUI:80E86F* OUI:E4AA5D* ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:000389* - ID_OUI_FROM_DATABASE=PLANTRONICS, INC. +OUI:203A07* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:0CE0E4* - ID_OUI_FROM_DATABASE=PLANTRONICS, INC. +OUI:34A84E* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:E4D3F1* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:1CE6C7* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:E02F6D* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:8478AC* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:4403A7* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:6886A7* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:B4E9B0* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:000832* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:B0FAEB* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:500604* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:70105C* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:C067AF* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:64E950* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc OUI:B0AA77* ID_OUI_FROM_DATABASE=Cisco Systems, Inc @@ -32075,47 +33278,35 @@ OUI:602AD0* OUI:001BFB* ID_OUI_FROM_DATABASE=ALPS ELECTRIC CO.,LTD. -OUI:00E08F* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -OUI:203A07* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -OUI:34A84E* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -OUI:E4D3F1* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -OUI:1CE6C7* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc +OUI:0016FE* + ID_OUI_FROM_DATABASE=ALPS ELECTRIC CO.,LTD. -OUI:E02F6D* +OUI:3C08F6* ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:8478AC* +OUI:D072DC* ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:4403A7* +OUI:28C7CE* ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:6886A7* +OUI:6CFA89* ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:B4E9B0* +OUI:58F39C* ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:000832* +OUI:346288* ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:B0FAEB* +OUI:881DFC* ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:500604* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc +OUI:000389* + ID_OUI_FROM_DATABASE=PLANTRONICS, INC. -OUI:70105C* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc +OUI:0CE0E4* + ID_OUI_FROM_DATABASE=PLANTRONICS, INC. OUI:7CFADF* ID_OUI_FROM_DATABASE=Apple, Inc. @@ -32150,30 +33341,6 @@ OUI:002500* OUI:60FB42* ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:14DAE9* - ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC. - -OUI:3C08F6* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -OUI:D072DC* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -OUI:28C7CE* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -OUI:6CFA89* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -OUI:58F39C* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -OUI:346288* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -OUI:881DFC* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - OUI:F81EDF* ID_OUI_FROM_DATABASE=Apple, Inc. @@ -32201,10 +33368,31 @@ OUI:A4D1D2* OUI:406C8F* ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:C067AF* +OUI:00C610* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:70DEE2* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:0050F0* ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:64E950* +OUI:00905F* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:00902B* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:00100B* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:00100D* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:001014* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:00E08F* ID_OUI_FROM_DATABASE=Cisco Systems, Inc OUI:189C5D* @@ -32222,105 +33410,93 @@ OUI:002618* OUI:00248C* ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC. -OUI:0050A2* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -OUI:0050F0* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -OUI:00905F* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -OUI:00902B* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc +OUI:14DAE9* + ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC. -OUI:00100B* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc +OUI:182032* + ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:00100D* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc +OUI:6CC26B* + ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:001014* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc +OUI:1040F3* + ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:649ABE* +OUI:FC253F* ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:94E96A* +OUI:183451* ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:AC293A* +OUI:C0847A* ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:10417F* +OUI:64200C* ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:7014A6* +OUI:74E1B6* ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:A8667F* +OUI:0C771A* ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:D02598* +OUI:00F4B9* ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:CC29F5* +OUI:C8334B* ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:802994* - ID_OUI_FROM_DATABASE=Technicolor CH USA +OUI:B8F6B1* + ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:6C709F* +OUI:C09F42* ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:0C3E9F* +OUI:189EFC* ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:34E2FD* +OUI:6C3E6D* ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:609217* +OUI:8C2DAA* ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:8863DF* +OUI:444C0C* ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:80E650* +OUI:84FCFE* ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:006171* +OUI:E48B7F* ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:90FD61* +OUI:94E96A* ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:5C97F3* +OUI:AC293A* ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:6C4008* +OUI:10417F* ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:24A074* +OUI:7014A6* ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:F02475* +OUI:A8667F* ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:20A2E4* +OUI:D02598* ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:5CF5DA* +OUI:CC29F5* ID_OUI_FROM_DATABASE=Apple, Inc. +OUI:802994* + ID_OUI_FROM_DATABASE=Technicolor CH USA + OUI:D4B8FF* ID_OUI_FROM_DATABASE=Home Control Singapore Pte Ltd -OUI:28E14C* - ID_OUI_FROM_DATABASE=Apple, Inc. - -OUI:54E43A* - ID_OUI_FROM_DATABASE=Apple, Inc. - OUI:C8E0EB* ID_OUI_FROM_DATABASE=Apple, Inc. @@ -32348,62 +33524,68 @@ OUI:B03495* OUI:848E0C* ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:8C2DAA* +OUI:6C709F* ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:444C0C* +OUI:0C3E9F* ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:84FCFE* +OUI:34E2FD* ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:E48B7F* +OUI:609217* ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:5C969D* +OUI:8863DF* ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:A8FAD8* +OUI:80E650* ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:949426* +OUI:006171* ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:E0F5C6* +OUI:90FD61* ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:AC6462* - ID_OUI_FROM_DATABASE=zte corporation +OUI:5C97F3* + ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:C08488* - ID_OUI_FROM_DATABASE=Finis Inc +OUI:6C4008* + ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:68E8EB* - ID_OUI_FROM_DATABASE=Linktel Technologies Co.,Ltd +OUI:24A074* + ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:20C3A4* - ID_OUI_FROM_DATABASE=RetailNext +OUI:F02475* + ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:780541* - ID_OUI_FROM_DATABASE=Queclink Wireless Solutions Co., Ltd +OUI:20A2E4* + ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:C02DEE* - ID_OUI_FROM_DATABASE=Cuff +OUI:5CF5DA* + ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:54A3FA* - ID_OUI_FROM_DATABASE=BQT Solutions (Australia)Pty Ltd +OUI:649ABE* + ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:30F772* - ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. +OUI:5C969D* + ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:9023EC* - ID_OUI_FROM_DATABASE=Availink, Inc. +OUI:A8FAD8* + ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:7467F7* - ID_OUI_FROM_DATABASE=Zebra Technologoes +OUI:949426* + ID_OUI_FROM_DATABASE=Apple, Inc. -OUI:3891D5* - ID_OUI_FROM_DATABASE=Hangzhou H3C Technologies Co., Limited +OUI:E0F5C6* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:28E14C* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:54E43A* + ID_OUI_FROM_DATABASE=Apple, Inc. OUI:90DFFB* ID_OUI_FROM_DATABASE=HOMERIDER SYSTEMS @@ -32414,8 +33596,11 @@ OUI:3C831E* OUI:381C23* ID_OUI_FROM_DATABASE=Hilan Technology CO.,LTD -OUI:E03676* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD +OUI:AC6462* + ID_OUI_FROM_DATABASE=zte corporation + +OUI:C08488* + ID_OUI_FROM_DATABASE=Finis Inc OUI:8C99E6* ID_OUI_FROM_DATABASE=TCT Mobile Limited @@ -32429,11 +33614,26 @@ OUI:243184* OUI:24DA9B* ID_OUI_FROM_DATABASE=Motorola Mobility LLC, a Lenovo Company -OUI:3052CB* - ID_OUI_FROM_DATABASE=Liteon Technology Corporation +OUI:7467F7* + ID_OUI_FROM_DATABASE=Zebra Technologoes -OUI:DCFE07* - ID_OUI_FROM_DATABASE=PEGATRON CORPORATION +OUI:3891D5* + ID_OUI_FROM_DATABASE=Hangzhou H3C Technologies Co., Limited + +OUI:68E8EB* + ID_OUI_FROM_DATABASE=Linktel Technologies Co.,Ltd + +OUI:20C3A4* + ID_OUI_FROM_DATABASE=RetailNext + +OUI:B844D9* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:DC2B2A* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:8C10D4* + ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS OUI:B8B2EB* ID_OUI_FROM_DATABASE=Googol Technology (HK) Limited @@ -32444,23 +33644,17 @@ OUI:C40049* OUI:50A9DE* ID_OUI_FROM_DATABASE=Smartcom - Bulgaria AD -OUI:54AB3A* - ID_OUI_FROM_DATABASE=QUANTA COMPUTER INC. - -OUI:8809AF* - ID_OUI_FROM_DATABASE=Masimo Corp. - -OUI:E8DED6* - ID_OUI_FROM_DATABASE=Intrising Networks, Inc. +OUI:C02DEE* + ID_OUI_FROM_DATABASE=Cuff -OUI:B844D9* - ID_OUI_FROM_DATABASE=Apple, Inc. +OUI:54A3FA* + ID_OUI_FROM_DATABASE=BQT Solutions (Australia)Pty Ltd -OUI:DC2B2A* - ID_OUI_FROM_DATABASE=Apple, Inc. +OUI:30F772* + ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. -OUI:8C10D4* - ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS +OUI:9023EC* + ID_OUI_FROM_DATABASE=Availink, Inc. OUI:203D66* ID_OUI_FROM_DATABASE=ARRIS Group, Inc. @@ -32471,11 +33665,26 @@ OUI:B83A9D* OUI:089B4B* ID_OUI_FROM_DATABASE=iKuai Networks +OUI:780541* + ID_OUI_FROM_DATABASE=Queclink Wireless Solutions Co., Ltd + OUI:3C7873* ID_OUI_FROM_DATABASE=Airsonics -OUI:BC5FF6* - ID_OUI_FROM_DATABASE=SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD. +OUI:3052CB* + ID_OUI_FROM_DATABASE=Liteon Technology Corporation + +OUI:54AB3A* + ID_OUI_FROM_DATABASE=QUANTA COMPUTER INC. + +OUI:8809AF* + ID_OUI_FROM_DATABASE=Masimo Corp. + +OUI:E8DED6* + ID_OUI_FROM_DATABASE=Intrising Networks, Inc. + +OUI:E03676* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD OUI:C8F9C8* ID_OUI_FROM_DATABASE=NewSharp Technology(SuZhou)Co,Ltd @@ -32489,6 +33698,21 @@ OUI:A8741D* OUI:F4C613* ID_OUI_FROM_DATABASE=Alcatel-Lucent Shanghai Bell Co., Ltd +OUI:D404CD* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:EC0133* + ID_OUI_FROM_DATABASE=TRINUS SYSTEMS INC. + +OUI:90D8F3* + ID_OUI_FROM_DATABASE=zte corporation + +OUI:D84710* + ID_OUI_FROM_DATABASE=Sichuan Changhong Electric Ltd. + +OUI:444CA8* + ID_OUI_FROM_DATABASE=Arista Networks + OUI:A4C138* ID_OUI_FROM_DATABASE=Telink Semiconductor (Taipei) Co. Ltd. @@ -32501,11 +33725,8 @@ OUI:48E244* OUI:D8EFCD* ID_OUI_FROM_DATABASE=Nokia -OUI:D404CD* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:EC0133* - ID_OUI_FROM_DATABASE=TRINUS SYSTEMS INC. +OUI:BC5FF6* + ID_OUI_FROM_DATABASE=SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD. OUI:1C56FE* ID_OUI_FROM_DATABASE=Motorola Mobility LLC, a Lenovo Company @@ -32534,39 +33755,9 @@ OUI:94F278* OUI:E8BDD1* ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -OUI:3481F4* - ID_OUI_FROM_DATABASE=SST Taiwan Ltd. - -OUI:F4B8A7* - ID_OUI_FROM_DATABASE=zte corporation - -OUI:58F102* - ID_OUI_FROM_DATABASE=BLU Products Inc. - -OUI:B869C2* - ID_OUI_FROM_DATABASE=Sunitec Enterprise Co., Ltd. - -OUI:2CC548* - ID_OUI_FROM_DATABASE=IAdea Corporation - -OUI:84DBFC* - ID_OUI_FROM_DATABASE=Alcatel-Lucent - OUI:307CB2* ID_OUI_FROM_DATABASE=ANOV FRANCE -OUI:90D8F3* - ID_OUI_FROM_DATABASE=zte corporation - -OUI:D84710* - ID_OUI_FROM_DATABASE=Sichuan Changhong Electric Ltd. - -OUI:444CA8* - ID_OUI_FROM_DATABASE=Arista Networks - -OUI:FCE33C* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD - OUI:BC6A2F* ID_OUI_FROM_DATABASE=Henge Docks LLC @@ -32579,32 +33770,29 @@ OUI:48066A* OUI:1CF03E* ID_OUI_FROM_DATABASE=Wearhaus Inc. -OUI:DCDB70* - ID_OUI_FROM_DATABASE=Tonfunk Systementwicklung und Service GmbH - -OUI:C47D46* - ID_OUI_FROM_DATABASE=FUJITSU LIMITED +OUI:BCF811* + ID_OUI_FROM_DATABASE=Xiamen DNAKE Technology Co.,Ltd -OUI:68EDA4* - ID_OUI_FROM_DATABASE=Shenzhen Seavo Technology Co.,Ltd +OUI:A8827F* + ID_OUI_FROM_DATABASE=CIBN Oriental Network(Beijing) CO.,Ltd -OUI:B899B0* - ID_OUI_FROM_DATABASE=Cohere Technologies +OUI:609C9F* + ID_OUI_FROM_DATABASE=Brocade Communications Systems, Inc. -OUI:2CC5D3* - ID_OUI_FROM_DATABASE=Ruckus Wireless +OUI:249EAB* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -OUI:80C5E6* - ID_OUI_FROM_DATABASE=Microsoft Corporation +OUI:DC56E6* + ID_OUI_FROM_DATABASE=Shenzhen Bococom Technology Co.,LTD -OUI:D85DEF* - ID_OUI_FROM_DATABASE=Busch-Jaeger Elektro GmbH +OUI:5CA178* + ID_OUI_FROM_DATABASE=TableTop Media (dba Ziosk) -OUI:10DF8B* - ID_OUI_FROM_DATABASE=Shenzhen CareDear Communication Technology Co.,Ltd +OUI:A0B437* + ID_OUI_FROM_DATABASE=GENERAL DYNAMICS C4 SYSEMS -OUI:00A784* - ID_OUI_FROM_DATABASE=ITX security +OUI:B89ACD* + ID_OUI_FROM_DATABASE=ELITE OPTOELECTRONIC(ASIA)CO.,LTD OUI:800184* ID_OUI_FROM_DATABASE=HTC Corporation @@ -32621,47 +33809,53 @@ OUI:C02567* OUI:B46D35* ID_OUI_FROM_DATABASE=Dalian Seasky Automation Co;Ltd -OUI:B89ACD* - ID_OUI_FROM_DATABASE=ELITE OPTOELECTRONIC(ASIA)CO.,LTD +OUI:FCE33C* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD -OUI:241C04* - ID_OUI_FROM_DATABASE=SHENZHEN JEHE TECHNOLOGY DEVELOPMENT CO., LTD. +OUI:68EDA4* + ID_OUI_FROM_DATABASE=Shenzhen Seavo Technology Co.,Ltd -OUI:F8CFC5* - ID_OUI_FROM_DATABASE=Motorola Mobility LLC, a Lenovo Company +OUI:B899B0* + ID_OUI_FROM_DATABASE=Cohere Technologies -OUI:BCF811* - ID_OUI_FROM_DATABASE=Xiamen DNAKE Technology Co.,Ltd +OUI:2CC5D3* + ID_OUI_FROM_DATABASE=Ruckus Wireless -OUI:A8827F* - ID_OUI_FROM_DATABASE=CIBN Oriental Network(Beijing) CO.,Ltd +OUI:80C5E6* + ID_OUI_FROM_DATABASE=Microsoft Corporation -OUI:609C9F* - ID_OUI_FROM_DATABASE=Brocade Communications Systems, Inc. +OUI:D85DEF* + ID_OUI_FROM_DATABASE=Busch-Jaeger Elektro GmbH -OUI:900A39* - ID_OUI_FROM_DATABASE=Wiio, Inc. +OUI:10DF8B* + ID_OUI_FROM_DATABASE=Shenzhen CareDear Communication Technology Co.,Ltd -OUI:C4693E* - ID_OUI_FROM_DATABASE=Turbulence Design Inc. +OUI:00A784* + ID_OUI_FROM_DATABASE=ITX security -OUI:1C8341* - ID_OUI_FROM_DATABASE=Hefei Bitland Information Technology Co.Ltd +OUI:3481F4* + ID_OUI_FROM_DATABASE=SST Taiwan Ltd. -OUI:4011DC* - ID_OUI_FROM_DATABASE=Sonance +OUI:F4B8A7* + ID_OUI_FROM_DATABASE=zte corporation -OUI:249EAB* - ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD +OUI:58F102* + ID_OUI_FROM_DATABASE=BLU Products Inc. -OUI:DC56E6* - ID_OUI_FROM_DATABASE=Shenzhen Bococom Technology Co.,LTD +OUI:B869C2* + ID_OUI_FROM_DATABASE=Sunitec Enterprise Co., Ltd. -OUI:5CA178* - ID_OUI_FROM_DATABASE=TableTop Media (dba Ziosk) +OUI:2CC548* + ID_OUI_FROM_DATABASE=IAdea Corporation -OUI:A0B437* - ID_OUI_FROM_DATABASE=GENERAL DYNAMICS C4 SYSEMS +OUI:84DBFC* + ID_OUI_FROM_DATABASE=Alcatel-Lucent + +OUI:DCDB70* + ID_OUI_FROM_DATABASE=Tonfunk Systementwicklung und Service GmbH + +OUI:C47D46* + ID_OUI_FROM_DATABASE=FUJITSU LIMITED OUI:702A7D* ID_OUI_FROM_DATABASE=EpSpot AB @@ -32672,12 +33866,30 @@ OUI:B8B3DC* OUI:347A60* ID_OUI_FROM_DATABASE=Pace plc +OUI:C4EA1D* + ID_OUI_FROM_DATABASE=Technicolor + +OUI:900A39* + ID_OUI_FROM_DATABASE=Wiio, Inc. + +OUI:C4693E* + ID_OUI_FROM_DATABASE=Turbulence Design Inc. + +OUI:1C8341* + ID_OUI_FROM_DATABASE=Hefei Bitland Information Technology Co.Ltd + OUI:6C1E70* ID_OUI_FROM_DATABASE=Guangzhou YBDS IT Co.,Ltd OUI:C8E130* ID_OUI_FROM_DATABASE=Milkyway Group Ltd +OUI:20E407* + ID_OUI_FROM_DATABASE=Spark srl + +OUI:887384* + ID_OUI_FROM_DATABASE=Toshiba + OUI:8833BE* ID_OUI_FROM_DATABASE=Ivenix, Inc. @@ -32690,23 +33902,8 @@ OUI:144146* OUI:F41563* ID_OUI_FROM_DATABASE=F5 Networks, Inc. -OUI:C4EA1D* - ID_OUI_FROM_DATABASE=Technicolor - -OUI:20E407* - ID_OUI_FROM_DATABASE=Spark srl - -OUI:887384* - ID_OUI_FROM_DATABASE=Toshiba - -OUI:584704* - ID_OUI_FROM_DATABASE=Shenzhen Webridge Technology Co.,Ltd - -OUI:1C14B3* - ID_OUI_FROM_DATABASE=Pinyon Technologies - -OUI:A0E4CB* - ID_OUI_FROM_DATABASE=ZyXEL Communications Corporation +OUI:4011DC* + ID_OUI_FROM_DATABASE=Sonance OUI:749CE3* ID_OUI_FROM_DATABASE=Art2Wave Canada Inc. @@ -32723,9 +33920,6 @@ OUI:7CC709* OUI:3C8C40* ID_OUI_FROM_DATABASE=Hangzhou H3C Technologies Co., Limited -OUI:0071C2* - ID_OUI_FROM_DATABASE=PEGATRON CORPORATION - OUI:D45556* ID_OUI_FROM_DATABASE=Fiber Mountain Inc. @@ -32747,6 +33941,9 @@ OUI:08D34B* OUI:C808E9* ID_OUI_FROM_DATABASE=LG Electronics +OUI:589B0B* + ID_OUI_FROM_DATABASE=Shineway Technologies, Inc. + OUI:78ACBF* ID_OUI_FROM_DATABASE=Igneous Systems @@ -32762,6 +33959,12 @@ OUI:844BB7* OUI:148F21* ID_OUI_FROM_DATABASE=Garmin International +OUI:1C7D22* + ID_OUI_FROM_DATABASE=Fuji Xerox Co., Ltd. + +OUI:ACD1B8* + ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. + OUI:3C6A9D* ID_OUI_FROM_DATABASE=Dexatek Technology LTD. @@ -32771,20 +33974,17 @@ OUI:14893E* OUI:60F189* ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd. -OUI:74A34A* - ID_OUI_FROM_DATABASE=ZIMI CORPORATION - -OUI:98F5A9* - ID_OUI_FROM_DATABASE=OHSUNG ELECTRONICS CO.,LTD. +OUI:241C04* + ID_OUI_FROM_DATABASE=SHENZHEN JEHE TECHNOLOGY DEVELOPMENT CO., LTD. -OUI:D89341* - ID_OUI_FROM_DATABASE=General Electric Global Research +OUI:F8CFC5* + ID_OUI_FROM_DATABASE=Motorola Mobility LLC, a Lenovo Company -OUI:F4645D* - ID_OUI_FROM_DATABASE=Toshiba +OUI:7C11CD* + ID_OUI_FROM_DATABASE=QianTang Technology -OUI:30D587* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd +OUI:0492EE* + ID_OUI_FROM_DATABASE=iway AG OUI:B04519* ID_OUI_FROM_DATABASE=TCT mobile ltd @@ -32801,8 +34001,23 @@ OUI:2C337A* OUI:844464* ID_OUI_FROM_DATABASE=ServerU Inc -OUI:589B0B* - ID_OUI_FROM_DATABASE=Shineway Technologies, Inc. +OUI:78312B* + ID_OUI_FROM_DATABASE=zte corporation + +OUI:74A34A* + ID_OUI_FROM_DATABASE=ZIMI CORPORATION + +OUI:98F5A9* + ID_OUI_FROM_DATABASE=OHSUNG ELECTRONICS CO.,LTD. + +OUI:D89341* + ID_OUI_FROM_DATABASE=General Electric Global Research + +OUI:F4645D* + ID_OUI_FROM_DATABASE=Toshiba + +OUI:30D587* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd OUI:A48CDB* ID_OUI_FROM_DATABASE=Lenovo @@ -32813,35 +34028,20 @@ OUI:4062B6* OUI:3C2C94* ID_OUI_FROM_DATABASE=杭州德澜科技有限公司(HangZhou Delan Technology Co.,Ltd) -OUI:78312B* - ID_OUI_FROM_DATABASE=zte corporation - -OUI:C035C5* - ID_OUI_FROM_DATABASE=Prosoft Systems LTD - -OUI:F8B2F3* - ID_OUI_FROM_DATABASE=GUANGZHOU BOSMA TECHNOLOGY CO.,LTD - -OUI:1C7D22* - ID_OUI_FROM_DATABASE=Fuji Xerox Co., Ltd. - -OUI:ACD1B8* - ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. - -OUI:7C11CD* - ID_OUI_FROM_DATABASE=QianTang Technology - -OUI:0492EE* - ID_OUI_FROM_DATABASE=iway AG - OUI:48A9D2* ID_OUI_FROM_DATABASE=Wistron Neweb Corp. OUI:F02A23* ID_OUI_FROM_DATABASE=Creative Next Design -OUI:8C9109* - ID_OUI_FROM_DATABASE=Toyoshima Electric Technoeogy(Suzhou) Co.,Ltd. +OUI:584704* + ID_OUI_FROM_DATABASE=Shenzhen Webridge Technology Co.,Ltd + +OUI:1C14B3* + ID_OUI_FROM_DATABASE=Pinyon Technologies + +OUI:A0E4CB* + ID_OUI_FROM_DATABASE=ZyXEL Communications Corporation OUI:307350* ID_OUI_FROM_DATABASE=Inpeco SA @@ -32861,26 +34061,8 @@ OUI:3C1E13* OUI:B4A828* ID_OUI_FROM_DATABASE=Shenzhen Concox Information Technology Co., Ltd -OUI:A41242* - ID_OUI_FROM_DATABASE=NEC Platforms, Ltd. - -OUI:404EEB* - ID_OUI_FROM_DATABASE=Higher Way Electronic Co., Ltd. - -OUI:50BD5F* - ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. - -OUI:147590* - ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. - -OUI:ECB907* - ID_OUI_FROM_DATABASE=CloudGenix Inc - -OUI:5CF9F0* - ID_OUI_FROM_DATABASE=Atomos Engineering P/L - -OUI:F409D8* - ID_OUI_FROM_DATABASE=Samsung Electro Mechanics co., LTD. +OUI:50F43C* + ID_OUI_FROM_DATABASE=Leeo Inc OUI:FCDBB3* ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd. @@ -32906,8 +34088,8 @@ OUI:C0EEFB* OUI:E00DB9* ID_OUI_FROM_DATABASE=Private -OUI:108A1B* - ID_OUI_FROM_DATABASE=RAONIX Inc. +OUI:A41242* + ID_OUI_FROM_DATABASE=NEC Platforms, Ltd. OUI:8CF813* ID_OUI_FROM_DATABASE=ORANGE POLSKA @@ -32927,29 +34109,8 @@ OUI:C401CE* OUI:D01242* ID_OUI_FROM_DATABASE=BIOS Corporation -OUI:50F43C* - ID_OUI_FROM_DATABASE=Leeo Inc - -OUI:B43934* - ID_OUI_FROM_DATABASE=Pen Generations, Inc. - -OUI:C03896* - ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. - -OUI:DCC622* - ID_OUI_FROM_DATABASE=BUHEUNG SYSTEM - -OUI:5C2BF5* - ID_OUI_FROM_DATABASE=Vivint - -OUI:6C0B84* - ID_OUI_FROM_DATABASE=Universal Global Scientific Industrial Co.,Ltd. - -OUI:D062A0* - ID_OUI_FROM_DATABASE=China Essence Technology (Zhumadian) Co., Ltd. - -OUI:CC10A3* - ID_OUI_FROM_DATABASE=Beijing Nan Bao Technology Co., Ltd. +OUI:6CBFB5* + ID_OUI_FROM_DATABASE=Noon Technology Co., Ltd OUI:2CA30E* ID_OUI_FROM_DATABASE=POWER DRAGON DEVELOPMENT LIMITED @@ -32975,8 +34136,50 @@ OUI:CC3080* OUI:F82441* ID_OUI_FROM_DATABASE=Yeelink -OUI:6CBFB5* - ID_OUI_FROM_DATABASE=Noon Technology Co., Ltd +OUI:108A1B* + ID_OUI_FROM_DATABASE=RAONIX Inc. + +OUI:94B40F* + ID_OUI_FROM_DATABASE=Aruba Networks + +OUI:4C2C83* + ID_OUI_FROM_DATABASE=Zhejiang KaNong Network Technology Co.,Ltd. + +OUI:BCC342* + ID_OUI_FROM_DATABASE=Panasonic System Networks Co., Ltd. + +OUI:E89606* + ID_OUI_FROM_DATABASE=testo Instruments (Shenzhen) Co., Ltd. + +OUI:CC3F1D* + ID_OUI_FROM_DATABASE=Intesis Software SL + +OUI:902181* + ID_OUI_FROM_DATABASE=Shanghai Huaqin Telecom Technology Co.,Ltd + +OUI:D062A0* + ID_OUI_FROM_DATABASE=China Essence Technology (Zhumadian) Co., Ltd. + +OUI:CC10A3* + ID_OUI_FROM_DATABASE=Beijing Nan Bao Technology Co., Ltd. + +OUI:B43934* + ID_OUI_FROM_DATABASE=Pen Generations, Inc. + +OUI:C03896* + ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. + +OUI:DCC622* + ID_OUI_FROM_DATABASE=BUHEUNG SYSTEM + +OUI:5C2BF5* + ID_OUI_FROM_DATABASE=Vivint + +OUI:6C0B84* + ID_OUI_FROM_DATABASE=Universal Global Scientific Industrial Co.,Ltd. + +OUI:600417* + ID_OUI_FROM_DATABASE=POSBANK CO.,LTD OUI:489D18* ID_OUI_FROM_DATABASE=Flashbay Limited @@ -32996,26 +34199,17 @@ OUI:E4C62B* OUI:80F8EB* ID_OUI_FROM_DATABASE=RayTight -OUI:94B40F* - ID_OUI_FROM_DATABASE=Aruba Networks - -OUI:4C2C83* - ID_OUI_FROM_DATABASE=Zhejiang KaNong Network Technology Co.,Ltd. - -OUI:BCC342* - ID_OUI_FROM_DATABASE=Panasonic System Networks Co., Ltd. - -OUI:E89606* - ID_OUI_FROM_DATABASE=testo Instruments (Shenzhen) Co., Ltd. +OUI:F409D8* + ID_OUI_FROM_DATABASE=Samsung Electro Mechanics co., LTD. -OUI:CC3F1D* - ID_OUI_FROM_DATABASE=Intesis Software SL +OUI:C035C5* + ID_OUI_FROM_DATABASE=Prosoft Systems LTD -OUI:902181* - ID_OUI_FROM_DATABASE=Shanghai Huaqin Telecom Technology Co.,Ltd +OUI:F8B2F3* + ID_OUI_FROM_DATABASE=GUANGZHOU BOSMA TECHNOLOGY CO.,LTD -OUI:600417* - ID_OUI_FROM_DATABASE=POSBANK CO.,LTD +OUI:8C9109* + ID_OUI_FROM_DATABASE=Toyoshima Electric Technoeogy(Suzhou) Co.,Ltd. OUI:A44AD3* ID_OUI_FROM_DATABASE=ST Electronics(Shanghai) Co.,Ltd @@ -33044,23 +34238,11 @@ OUI:907EBA* OUI:488244* ID_OUI_FROM_DATABASE=Life Fitness / Div. of Brunswick -OUI:A8F7E0* - ID_OUI_FROM_DATABASE=PLANET Technology Corporation - -OUI:2C5BE1* - ID_OUI_FROM_DATABASE=Centripetal Networks, Inc - -OUI:D87EB1* - ID_OUI_FROM_DATABASE=x.o.ware, inc. - -OUI:4045DA* - ID_OUI_FROM_DATABASE=Spreadtrum Communications (Shanghai) Co., Ltd. - -OUI:98BE94* - ID_OUI_FROM_DATABASE=IBM +OUI:D85DFB* + ID_OUI_FROM_DATABASE=Private -OUI:D4B43E* - ID_OUI_FROM_DATABASE=Messcomp Datentechnik GmbH +OUI:7CC4EF* + ID_OUI_FROM_DATABASE=Devialet OUI:A8E539* ID_OUI_FROM_DATABASE=Moimstone Co.,Ltd @@ -33071,21 +34253,27 @@ OUI:98F170* OUI:04C991* ID_OUI_FROM_DATABASE=Phistek INC. +OUI:404EEB* + ID_OUI_FROM_DATABASE=Higher Way Electronic Co., Ltd. + +OUI:50BD5F* + ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. + +OUI:147590* + ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. + +OUI:ECB907* + ID_OUI_FROM_DATABASE=CloudGenix Inc + +OUI:5CF9F0* + ID_OUI_FROM_DATABASE=Atomos Engineering P/L + OUI:581F67* ID_OUI_FROM_DATABASE=Open-m technology limited OUI:BC25F0* ID_OUI_FROM_DATABASE=3D Display Technologies Co., Ltd. -OUI:7CE524* - ID_OUI_FROM_DATABASE=Quirky, Inc. - -OUI:D85DFB* - ID_OUI_FROM_DATABASE=Private - -OUI:7CC4EF* - ID_OUI_FROM_DATABASE=Devialet - OUI:94AEE3* ID_OUI_FROM_DATABASE=Belden Hirschmann Industries (Suzhou) Ltd. @@ -33098,15 +34286,6 @@ OUI:705B2E* OUI:0C8C8F* ID_OUI_FROM_DATABASE=Kamo Technology Limited -OUI:F4FD2B* - ID_OUI_FROM_DATABASE=ZOYI Company - -OUI:FCAA14* - ID_OUI_FROM_DATABASE=GIGA-BYTE TECHNOLOGY CO.,LTD. - -OUI:50FEF2* - ID_OUI_FROM_DATABASE=Sify Technologies Ltd - OUI:3CD9CE* ID_OUI_FROM_DATABASE=Eclipse WiFi @@ -33128,6 +34307,27 @@ OUI:ECD9D1* OUI:748F4D* ID_OUI_FROM_DATABASE=MEN Mikro Elektronik GmbH +OUI:F4FD2B* + ID_OUI_FROM_DATABASE=ZOYI Company + +OUI:FCAA14* + ID_OUI_FROM_DATABASE=GIGA-BYTE TECHNOLOGY CO.,LTD. + +OUI:50FEF2* + ID_OUI_FROM_DATABASE=Sify Technologies Ltd + +OUI:7CE524* + ID_OUI_FROM_DATABASE=Quirky, Inc. + +OUI:7CD30A* + ID_OUI_FROM_DATABASE=INVENTEC Corporation + +OUI:3481C4* + ID_OUI_FROM_DATABASE=AVM GmbH + +OUI:885BDD* + ID_OUI_FROM_DATABASE=Aerohive Networks Inc. + OUI:A47E39* ID_OUI_FROM_DATABASE=zte corporation @@ -33140,17 +34340,23 @@ OUI:ACA9A0* OUI:A8A668* ID_OUI_FROM_DATABASE=zte corporation -OUI:60E327* - ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. +OUI:A8F7E0* + ID_OUI_FROM_DATABASE=PLANET Technology Corporation -OUI:E4D332* - ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. +OUI:2C5BE1* + ID_OUI_FROM_DATABASE=Centripetal Networks, Inc -OUI:A0DA92* - ID_OUI_FROM_DATABASE=Nanjing Glarun Atten Technology Co. Ltd. +OUI:D87EB1* + ID_OUI_FROM_DATABASE=x.o.ware, inc. -OUI:6828BA* - ID_OUI_FROM_DATABASE=Dejai +OUI:4045DA* + ID_OUI_FROM_DATABASE=Spreadtrum Communications (Shanghai) Co., Ltd. + +OUI:98BE94* + ID_OUI_FROM_DATABASE=IBM + +OUI:D4B43E* + ID_OUI_FROM_DATABASE=Messcomp Datentechnik GmbH OUI:48D18E* ID_OUI_FROM_DATABASE=Metis Communication Co.,Ltd @@ -33158,18 +34364,6 @@ OUI:48D18E* OUI:A49F85* ID_OUI_FROM_DATABASE=Lyve Minds, Inc -OUI:7CD30A* - ID_OUI_FROM_DATABASE=INVENTEC Corporation - -OUI:3481C4* - ID_OUI_FROM_DATABASE=AVM GmbH - -OUI:885BDD* - ID_OUI_FROM_DATABASE=Aerohive Networks Inc. - -OUI:085700* - ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. - OUI:888914* ID_OUI_FROM_DATABASE=All Components Incorporated @@ -33182,8 +34376,8 @@ OUI:A06518* OUI:748F1B* ID_OUI_FROM_DATABASE=MasterImage 3D -OUI:F03A4B* - ID_OUI_FROM_DATABASE=Bloombase, Inc. +OUI:684898* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd OUI:E4121D* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd @@ -33248,17 +34442,20 @@ OUI:50B695* OUI:B48547* ID_OUI_FROM_DATABASE=Amptown System Company GmbH -OUI:3C25D7* - ID_OUI_FROM_DATABASE=Nokia Corporation +OUI:085700* + ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. -OUI:1889DF* - ID_OUI_FROM_DATABASE=CerebrEX Inc. +OUI:60E327* + ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. -OUI:30A8DB* - ID_OUI_FROM_DATABASE=Sony Mobile Communications AB +OUI:E4D332* + ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. -OUI:CC9F35* - ID_OUI_FROM_DATABASE=Transbit Sp. z o.o. +OUI:A0DA92* + ID_OUI_FROM_DATABASE=Nanjing Glarun Atten Technology Co. Ltd. + +OUI:6828BA* + ID_OUI_FROM_DATABASE=Dejai OUI:407875* ID_OUI_FROM_DATABASE=IMBEL - Industria de Material Belico do Brasil @@ -33290,23 +34487,29 @@ OUI:88E8F8* OUI:2C073C* ID_OUI_FROM_DATABASE=DEVLINE LIMITED -OUI:7CE4AA* - ID_OUI_FROM_DATABASE=Private +OUI:F015A0* + ID_OUI_FROM_DATABASE=KyungDong One Co., Ltd. -OUI:1820A6* - ID_OUI_FROM_DATABASE=Sage Co., Ltd. +OUI:ECF72B* + ID_OUI_FROM_DATABASE=HD DIGITAL TECH CO., LTD. -OUI:BCF61C* - ID_OUI_FROM_DATABASE=Geomodeling Wuxi Technology Co. Ltd. +OUI:D8B6D6* + ID_OUI_FROM_DATABASE=Blu Tether Limited -OUI:083F3E* - ID_OUI_FROM_DATABASE=WSH GmbH +OUI:847207* + ID_OUI_FROM_DATABASE=I&C Technology -OUI:6C09D6* - ID_OUI_FROM_DATABASE=Digiquest Electronics LTD +OUI:3C25D7* + ID_OUI_FROM_DATABASE=Nokia Corporation -OUI:684898* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd +OUI:1889DF* + ID_OUI_FROM_DATABASE=CerebrEX Inc. + +OUI:30A8DB* + ID_OUI_FROM_DATABASE=Sony Mobile Communications AB + +OUI:CC9F35* + ID_OUI_FROM_DATABASE=Transbit Sp. z o.o. OUI:8C569D* ID_OUI_FROM_DATABASE=Imaging Solutions Group @@ -33329,11 +34532,26 @@ OUI:4CE1BB* OUI:8CDE99* ID_OUI_FROM_DATABASE=Comlab Inc. -OUI:1088CE* - ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Tech.Co.,Ltd. +OUI:085AE0* + ID_OUI_FROM_DATABASE=Recovision Technology Co., Ltd. -OUI:FCF647* - ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Tech.Co.,Ltd. +OUI:7CE4AA* + ID_OUI_FROM_DATABASE=Private + +OUI:1820A6* + ID_OUI_FROM_DATABASE=Sage Co., Ltd. + +OUI:BCF61C* + ID_OUI_FROM_DATABASE=Geomodeling Wuxi Technology Co. Ltd. + +OUI:083F3E* + ID_OUI_FROM_DATABASE=WSH GmbH + +OUI:6C09D6* + ID_OUI_FROM_DATABASE=Digiquest Electronics LTD + +OUI:F03A4B* + ID_OUI_FROM_DATABASE=Bloombase, Inc. OUI:2C9AA4* ID_OUI_FROM_DATABASE=NGI SpA @@ -33347,35 +34565,47 @@ OUI:283B96* OUI:80D433* ID_OUI_FROM_DATABASE=LzLabs GmbH -OUI:085AE0* - ID_OUI_FROM_DATABASE=Recovision Technology Co., Ltd. +OUI:687CC8* + ID_OUI_FROM_DATABASE=Measurement Systems S. de R.L. -OUI:BCEE7B* - ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC. +OUI:38BF2F* + ID_OUI_FROM_DATABASE=Espec Corp. -OUI:8C3AE3* - ID_OUI_FROM_DATABASE=LG Electronics +OUI:182012* + ID_OUI_FROM_DATABASE=Aztech Associates Inc. -OUI:FC09D8* - ID_OUI_FROM_DATABASE=ACTEON Group +OUI:34BE00* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -OUI:0C1262* - ID_OUI_FROM_DATABASE=zte corporation +OUI:343111* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -OUI:687CC8* - ID_OUI_FROM_DATABASE=Measurement Systems S. de R.L. +OUI:0CBD51* + ID_OUI_FROM_DATABASE=TCT Mobile Limited -OUI:F015A0* - ID_OUI_FROM_DATABASE=KyungDong One Co., Ltd. +OUI:C0F991* + ID_OUI_FROM_DATABASE=GME Standard Communications P/L -OUI:ECF72B* - ID_OUI_FROM_DATABASE=HD DIGITAL TECH CO., LTD. +OUI:14EDA5* + ID_OUI_FROM_DATABASE=Wächter GmbH Sicherheitssysteme -OUI:D8B6D6* - ID_OUI_FROM_DATABASE=Blu Tether Limited +OUI:E056F4* + ID_OUI_FROM_DATABASE=AxesNetwork Solutions inc. -OUI:847207* - ID_OUI_FROM_DATABASE=I&C Technology +OUI:B8C1A2* + ID_OUI_FROM_DATABASE=Dragon Path Technologies Co., Limited + +OUI:50ED78* + ID_OUI_FROM_DATABASE=Changzhou Yongse Infotech Co.,Ltd + +OUI:8CB7F7* + ID_OUI_FROM_DATABASE=Shenzhen UniStrong Science & Technology Co., Ltd + +OUI:085240* + ID_OUI_FROM_DATABASE=EbV Elektronikbau- und Vertriebs GmbH + +OUI:80F25E* + ID_OUI_FROM_DATABASE=Kyynel OUI:94DF4E* ID_OUI_FROM_DATABASE=Wistron InfoComm(Kunshan)Co.,Ltd. @@ -33383,9 +34613,6 @@ OUI:94DF4E* OUI:E0AEB2* ID_OUI_FROM_DATABASE=Bender GmbH & Co.KG -OUI:BC9889* - ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Tech.Co.,Ltd. - OUI:2C553C* ID_OUI_FROM_DATABASE=Gainspeed, Inc. @@ -33404,21 +34631,6 @@ OUI:2464EF* OUI:50B888* ID_OUI_FROM_DATABASE=wi2be Tecnologia S/A -OUI:B8C1A2* - ID_OUI_FROM_DATABASE=Dragon Path Technologies Co., Limited - -OUI:50ED78* - ID_OUI_FROM_DATABASE=Changzhou Yongse Infotech Co.,Ltd - -OUI:8CB7F7* - ID_OUI_FROM_DATABASE=Shenzhen UniStrong Science & Technology Co., Ltd - -OUI:085240* - ID_OUI_FROM_DATABASE=EbV Elektronikbau- und Vertriebs GmbH - -OUI:80F25E* - ID_OUI_FROM_DATABASE=Kyynel - OUI:844F03* ID_OUI_FROM_DATABASE=Ablelink Electronics Ltd @@ -33452,62 +34664,11 @@ OUI:D46867* OUI:68692E* ID_OUI_FROM_DATABASE=Zycoo Co.,Ltd -OUI:A875E2* - ID_OUI_FROM_DATABASE=Aventura Technologies, Inc. - -OUI:38BF2F* - ID_OUI_FROM_DATABASE=Espec Corp. - -OUI:182012* - ID_OUI_FROM_DATABASE=Aztech Associates Inc. - -OUI:34BE00* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -OUI:343111* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -OUI:0CBD51* - ID_OUI_FROM_DATABASE=TCT Mobile Limited - -OUI:C0F991* - ID_OUI_FROM_DATABASE=GME Standard Communications P/L - -OUI:14EDA5* - ID_OUI_FROM_DATABASE=Wächter GmbH Sicherheitssysteme - -OUI:E056F4* - ID_OUI_FROM_DATABASE=AxesNetwork Solutions inc. - -OUI:385AA8* - ID_OUI_FROM_DATABASE=Beijing Zhongdun Security Technology Development Co. - -OUI:FC3FAB* - ID_OUI_FROM_DATABASE=Henan Lanxin Technology Co., Ltd - -OUI:F8FF5F* - ID_OUI_FROM_DATABASE=Shenzhen Communication Technology Co.,Ltd - -OUI:DCC422* - ID_OUI_FROM_DATABASE=Systembase Limited - -OUI:F4BD7C* - ID_OUI_FROM_DATABASE=Chengdu jinshi communication Co., LTD - -OUI:C8F36B* - ID_OUI_FROM_DATABASE=Yamato Scale Co.,Ltd. - -OUI:6C90B1* - ID_OUI_FROM_DATABASE=SanLogic Inc - -OUI:845C93* - ID_OUI_FROM_DATABASE=Chabrier Services - -OUI:D44C9C* - ID_OUI_FROM_DATABASE=Shenzhen YOOBAO Technology Co.Ltd +OUI:1C63B7* + ID_OUI_FROM_DATABASE=OpenProducts 237 AB -OUI:A88D7B* - ID_OUI_FROM_DATABASE=SunDroid Global limited. +OUI:A0A23C* + ID_OUI_FROM_DATABASE=GPMS OUI:A03B1B* ID_OUI_FROM_DATABASE=Inspire Tech @@ -33530,6 +34691,30 @@ OUI:6C4B7F* OUI:0CCB8D* ID_OUI_FROM_DATABASE=ASCO Numatics GmbH +OUI:FC019E* + ID_OUI_FROM_DATABASE=VIEVU + +OUI:34AA8B* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:F45F69* + ID_OUI_FROM_DATABASE=Matsufu Electronics distribution Company + +OUI:F4A294* + ID_OUI_FROM_DATABASE=EAGLE WORLD DEVELOPMENT CO., LIMITED + +OUI:2CCD69* + ID_OUI_FROM_DATABASE=Aqavi.com + +OUI:947C3E* + ID_OUI_FROM_DATABASE=Polewall Norge AS + +OUI:385AA8* + ID_OUI_FROM_DATABASE=Beijing Zhongdun Security Technology Development Co. + +OUI:FC3FAB* + ID_OUI_FROM_DATABASE=Henan Lanxin Technology Co., Ltd + OUI:2847AA* ID_OUI_FROM_DATABASE=Nokia Corporation @@ -33539,11 +34724,14 @@ OUI:682DDC* OUI:FCB0C4* ID_OUI_FROM_DATABASE=Shanghai DareGlobal Technologies Co., Ltd -OUI:1C63B7* - ID_OUI_FROM_DATABASE=OpenProducts 237 AB +OUI:9CBB98* + ID_OUI_FROM_DATABASE=Shen Zhen RND Electronic Co.,LTD -OUI:A0A23C* - ID_OUI_FROM_DATABASE=GPMS +OUI:345C40* + ID_OUI_FROM_DATABASE=Cargt Holdings LLC + +OUI:34885D* + ID_OUI_FROM_DATABASE=Logitech Far East OUI:708D09* ID_OUI_FROM_DATABASE=Nokia Corporation @@ -33557,17 +34745,8 @@ OUI:38B74D* OUI:A0E5E9* ID_OUI_FROM_DATABASE=enimai Inc -OUI:9CBB98* - ID_OUI_FROM_DATABASE=Shen Zhen RND Electronic Co.,LTD - -OUI:345C40* - ID_OUI_FROM_DATABASE=Cargt Holdings LLC - -OUI:34885D* - ID_OUI_FROM_DATABASE=Logitech Far East - -OUI:B462AD* - ID_OUI_FROM_DATABASE=raytest GmbH +OUI:A88D7B* + ID_OUI_FROM_DATABASE=SunDroid Global limited. OUI:6064A1* ID_OUI_FROM_DATABASE=RADiflow Ltd. @@ -33587,23 +34766,20 @@ OUI:FC1BFF* OUI:AC5036* ID_OUI_FROM_DATABASE=Pi-Coral Inc -OUI:FC019E* - ID_OUI_FROM_DATABASE=VIEVU - -OUI:34AA8B* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd +OUI:BCEE7B* + ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC. -OUI:F45F69* - ID_OUI_FROM_DATABASE=Matsufu Electronics distribution Company +OUI:8C3AE3* + ID_OUI_FROM_DATABASE=LG Electronics -OUI:F4A294* - ID_OUI_FROM_DATABASE=EAGLE WORLD DEVELOPMENT CO., LIMITED +OUI:FC09D8* + ID_OUI_FROM_DATABASE=ACTEON Group -OUI:2CCD69* - ID_OUI_FROM_DATABASE=Aqavi.com +OUI:0C1262* + ID_OUI_FROM_DATABASE=zte corporation -OUI:947C3E* - ID_OUI_FROM_DATABASE=Polewall Norge AS +OUI:A875E2* + ID_OUI_FROM_DATABASE=Aventura Technologies, Inc. OUI:E0D1E6* ID_OUI_FROM_DATABASE=Aliph dba Jawbone @@ -33629,17 +34805,35 @@ OUI:306112* OUI:A0C6EC* ID_OUI_FROM_DATABASE=ShenZhen ANYK Technology Co.,LTD -OUI:C80258* - ID_OUI_FROM_DATABASE=ITW GSE ApS +OUI:6405BE* + ID_OUI_FROM_DATABASE=NEW LIGHT LED -OUI:1001CA* - ID_OUI_FROM_DATABASE=Ashley Butterworth +OUI:F8FF5F* + ID_OUI_FROM_DATABASE=Shenzhen Communication Technology Co.,Ltd -OUI:246AAB* - ID_OUI_FROM_DATABASE=IT-IS International +OUI:DCC422* + ID_OUI_FROM_DATABASE=Systembase Limited -OUI:28F532* - ID_OUI_FROM_DATABASE=ADD-Engineering BV +OUI:F4BD7C* + ID_OUI_FROM_DATABASE=Chengdu jinshi communication Co., LTD + +OUI:C8F36B* + ID_OUI_FROM_DATABASE=Yamato Scale Co.,Ltd. + +OUI:6C90B1* + ID_OUI_FROM_DATABASE=SanLogic Inc + +OUI:845C93* + ID_OUI_FROM_DATABASE=Chabrier Services + +OUI:D44C9C* + ID_OUI_FROM_DATABASE=Shenzhen YOOBAO Technology Co.Ltd + +OUI:68E166* + ID_OUI_FROM_DATABASE=Private + +OUI:60FEF9* + ID_OUI_FROM_DATABASE=Thomas & Betts OUI:FC4BBC* ID_OUI_FROM_DATABASE=Sunplus Technology Co., Ltd. @@ -33677,29 +34871,35 @@ OUI:E8519D* OUI:00B78D* ID_OUI_FROM_DATABASE=Nanjing Shining Electric Automation Co., Ltd -OUI:68E166* - ID_OUI_FROM_DATABASE=Private +OUI:882364* + ID_OUI_FROM_DATABASE=Watchnet DVR Inc -OUI:60FEF9* - ID_OUI_FROM_DATABASE=Thomas & Betts +OUI:A05B21* + ID_OUI_FROM_DATABASE=ENVINET GmbH -OUI:78FE41* - ID_OUI_FROM_DATABASE=Socus networks +OUI:50B8A2* + ID_OUI_FROM_DATABASE=ImTech Technologies LLC, -OUI:083571* - ID_OUI_FROM_DATABASE=CASwell INC. +OUI:A41566* + ID_OUI_FROM_DATABASE=Wei Fang Goertek Electronics Co.,Ltd -OUI:DCF755* - ID_OUI_FROM_DATABASE=SITRONIK +OUI:B04C05* + ID_OUI_FROM_DATABASE=Fresenius Medical Care Deutschland GmbH -OUI:E42D02* - ID_OUI_FROM_DATABASE=TCT Mobile Limited +OUI:A0EC80* + ID_OUI_FROM_DATABASE=zte corporation -OUI:ACCA8E* - ID_OUI_FROM_DATABASE=ODA Technologies +OUI:9046B7* + ID_OUI_FROM_DATABASE=Vadaro Pte Ltd -OUI:6405BE* - ID_OUI_FROM_DATABASE=NEW LIGHT LED +OUI:1C08C1* + ID_OUI_FROM_DATABASE=Lg Innotek + +OUI:201D03* + ID_OUI_FROM_DATABASE=Elatec GmbH + +OUI:C06C6D* + ID_OUI_FROM_DATABASE=MagneMotion, Inc. OUI:E03E4A* ID_OUI_FROM_DATABASE=Cavanagh Group International @@ -33725,35 +34925,32 @@ OUI:1C86AD* OUI:28D93E* ID_OUI_FROM_DATABASE=Telecor Inc. -OUI:882364* - ID_OUI_FROM_DATABASE=Watchnet DVR Inc - -OUI:A05B21* - ID_OUI_FROM_DATABASE=ENVINET GmbH +OUI:C80258* + ID_OUI_FROM_DATABASE=ITW GSE ApS -OUI:50B8A2* - ID_OUI_FROM_DATABASE=ImTech Technologies LLC, +OUI:1001CA* + ID_OUI_FROM_DATABASE=Ashley Butterworth -OUI:A41566* - ID_OUI_FROM_DATABASE=Wei Fang Goertek Electronics Co.,Ltd +OUI:246AAB* + ID_OUI_FROM_DATABASE=IT-IS International -OUI:B04C05* - ID_OUI_FROM_DATABASE=Fresenius Medical Care Deutschland GmbH +OUI:28F532* + ID_OUI_FROM_DATABASE=ADD-Engineering BV -OUI:A0EC80* - ID_OUI_FROM_DATABASE=zte corporation +OUI:78FE41* + ID_OUI_FROM_DATABASE=Socus networks -OUI:9046B7* - ID_OUI_FROM_DATABASE=Vadaro Pte Ltd +OUI:083571* + ID_OUI_FROM_DATABASE=CASwell INC. -OUI:1C08C1* - ID_OUI_FROM_DATABASE=Lg Innotek +OUI:DCF755* + ID_OUI_FROM_DATABASE=SITRONIK -OUI:201D03* - ID_OUI_FROM_DATABASE=Elatec GmbH +OUI:E42D02* + ID_OUI_FROM_DATABASE=TCT Mobile Limited -OUI:C06C6D* - ID_OUI_FROM_DATABASE=MagneMotion, Inc. +OUI:ACCA8E* + ID_OUI_FROM_DATABASE=ODA Technologies OUI:74CA25* ID_OUI_FROM_DATABASE=Calxeda, Inc. @@ -33764,42 +34961,6 @@ OUI:181EB0* OUI:CCBD35* ID_OUI_FROM_DATABASE=Steinel GmbH -OUI:788DF7* - ID_OUI_FROM_DATABASE=Hitron Technologies. Inc - -OUI:6CECA1* - ID_OUI_FROM_DATABASE=SHENZHEN CLOU ELECTRONICS CO. LTD. - -OUI:D862DB* - ID_OUI_FROM_DATABASE=Eno Inc. - -OUI:68DB67* - ID_OUI_FROM_DATABASE=Nantong Coship Electronics Co., Ltd - -OUI:BC261D* - ID_OUI_FROM_DATABASE=HONG KONG TECON TECHNOLOGY - -OUI:888964* - ID_OUI_FROM_DATABASE=GSI Electronics Inc. - -OUI:4C82CF* - ID_OUI_FROM_DATABASE=Echostar Technologies - -OUI:9CA577* - ID_OUI_FROM_DATABASE=Osorno Enterprises Inc. - -OUI:C0C3B6* - ID_OUI_FROM_DATABASE=Automatic Systems - -OUI:A8294C* - ID_OUI_FROM_DATABASE=Precision Optical Transceivers, Inc. - -OUI:D0EB03* - ID_OUI_FROM_DATABASE=Zhehua technology limited - -OUI:A0861D* - ID_OUI_FROM_DATABASE=Chengdu Fuhuaxin Technology co.,Ltd - OUI:9498A2* ID_OUI_FROM_DATABASE=Shanghai LISTEN TECH.LTD @@ -33818,89 +34979,89 @@ OUI:D82916* OUI:6472D8* ID_OUI_FROM_DATABASE=GooWi Technology Co.,Limited -OUI:84ACA4* - ID_OUI_FROM_DATABASE=Beijing Novel Super Digital TV Technology Co., Ltd +OUI:3C081E* + ID_OUI_FROM_DATABASE=Beijing Yupont Electric Power Technology Co.,Ltd -OUI:3C6FF7* - ID_OUI_FROM_DATABASE=EnTek Systems, Inc. +OUI:7CA15D* + ID_OUI_FROM_DATABASE=GN ReSound A/S -OUI:B838CA* - ID_OUI_FROM_DATABASE=Kyokko Tsushin System CO.,LTD +OUI:B4DD15* + ID_OUI_FROM_DATABASE=ControlThings Oy Ab -OUI:380FE4* - ID_OUI_FROM_DATABASE=Dedicated Network Partners Oy +OUI:F8FEA8* + ID_OUI_FROM_DATABASE=Technico Japan Corporation -OUI:847A88* - ID_OUI_FROM_DATABASE=HTC Corporation +OUI:A8154D* + ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. -OUI:0808C2* - ID_OUI_FROM_DATABASE=Samsung Electronics +OUI:D05099* + ID_OUI_FROM_DATABASE=ASRock Incorporation -OUI:5461EA* - ID_OUI_FROM_DATABASE=Zaplox AB +OUI:78A106* + ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. -OUI:78324F* - ID_OUI_FROM_DATABASE=Millennium Group, Inc. +OUI:A49EDB* + ID_OUI_FROM_DATABASE=AutoCrib, Inc. -OUI:F05DC8* - ID_OUI_FROM_DATABASE=Duracell Powermat +OUI:282CB2* + ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. -OUI:48F925* - ID_OUI_FROM_DATABASE=Maestronic +OUI:D43A65* + ID_OUI_FROM_DATABASE=IGRS Engineering Lab Ltd. -OUI:C0885B* - ID_OUI_FROM_DATABASE=SnD Tech Co., Ltd. +OUI:D0EB03* + ID_OUI_FROM_DATABASE=Zhehua technology limited -OUI:64C667* - ID_OUI_FROM_DATABASE=Barnes&Noble +OUI:A0861D* + ID_OUI_FROM_DATABASE=Chengdu Fuhuaxin Technology co.,Ltd -OUI:C47DCC* - ID_OUI_FROM_DATABASE=Zebra Technologies Inc +OUI:888964* + ID_OUI_FROM_DATABASE=GSI Electronics Inc. -OUI:64535D* - ID_OUI_FROM_DATABASE=Frauscher Sensortechnik +OUI:4C82CF* + ID_OUI_FROM_DATABASE=Echostar Technologies -OUI:105F06* - ID_OUI_FROM_DATABASE=Actiontec Electronics, Inc +OUI:9CA577* + ID_OUI_FROM_DATABASE=Osorno Enterprises Inc. -OUI:841715* - ID_OUI_FROM_DATABASE=GP Electronics (HK) Ltd. +OUI:C0C3B6* + ID_OUI_FROM_DATABASE=Automatic Systems -OUI:087999* - ID_OUI_FROM_DATABASE=AIM GmbH +OUI:A8294C* + ID_OUI_FROM_DATABASE=Precision Optical Transceivers, Inc. -OUI:84C2E4* - ID_OUI_FROM_DATABASE=Jiangsu Qinheng Co., Ltd. +OUI:3C86A8* + ID_OUI_FROM_DATABASE=Sangshin elecom .co,, LTD -OUI:C0B8B1* - ID_OUI_FROM_DATABASE=BitBox Ltd +OUI:FCDD55* + ID_OUI_FROM_DATABASE=Shenzhen WeWins wireless Co.,Ltd -OUI:0C722C* - ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. +OUI:CC0DEC* + ID_OUI_FROM_DATABASE=Cisco SPVTG -OUI:B01408* - ID_OUI_FROM_DATABASE=LIGHTSPEED INTERNATIONAL CO. +OUI:68B094* + ID_OUI_FROM_DATABASE=INESA ELECTRON CO.,LTD -OUI:F8FEA8* - ID_OUI_FROM_DATABASE=Technico Japan Corporation +OUI:40E730* + ID_OUI_FROM_DATABASE=DEY Storage Systems, Inc. -OUI:A8154D* - ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. +OUI:F05DC8* + ID_OUI_FROM_DATABASE=Duracell Powermat -OUI:D05099* - ID_OUI_FROM_DATABASE=ASRock Incorporation +OUI:6C8686* + ID_OUI_FROM_DATABASE=Technonia -OUI:78A106* - ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. +OUI:4432C8* + ID_OUI_FROM_DATABASE=Technicolor USA Inc. -OUI:A49EDB* - ID_OUI_FROM_DATABASE=AutoCrib, Inc. +OUI:78521A* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -OUI:282CB2* - ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. +OUI:68DB67* + ID_OUI_FROM_DATABASE=Nantong Coship Electronics Co., Ltd -OUI:D43A65* - ID_OUI_FROM_DATABASE=IGRS Engineering Lab Ltd. +OUI:BC261D* + ID_OUI_FROM_DATABASE=HONG KONG TECON TECHNOLOGY OUI:10B9FE* ID_OUI_FROM_DATABASE=Lika srl @@ -33923,41 +35084,47 @@ OUI:30CDA7* OUI:104D77* ID_OUI_FROM_DATABASE=Innovative Computer Engineering -OUI:3C081E* - ID_OUI_FROM_DATABASE=Beijing Yupont Electric Power Technology Co.,Ltd +OUI:788DF7* + ID_OUI_FROM_DATABASE=Hitron Technologies. Inc -OUI:7CA15D* - ID_OUI_FROM_DATABASE=GN ReSound A/S +OUI:6CECA1* + ID_OUI_FROM_DATABASE=SHENZHEN CLOU ELECTRONICS CO. LTD. -OUI:B4DD15* - ID_OUI_FROM_DATABASE=ControlThings Oy Ab +OUI:D862DB* + ID_OUI_FROM_DATABASE=Eno Inc. -OUI:3C86A8* - ID_OUI_FROM_DATABASE=Sangshin elecom .co,, LTD +OUI:A8D236* + ID_OUI_FROM_DATABASE=Lightware Visual Engineering -OUI:FCDD55* - ID_OUI_FROM_DATABASE=Shenzhen WeWins wireless Co.,Ltd +OUI:48F925* + ID_OUI_FROM_DATABASE=Maestronic -OUI:CC0DEC* - ID_OUI_FROM_DATABASE=Cisco SPVTG +OUI:C0885B* + ID_OUI_FROM_DATABASE=SnD Tech Co., Ltd. -OUI:68B094* - ID_OUI_FROM_DATABASE=INESA ELECTRON CO.,LTD +OUI:64C667* + ID_OUI_FROM_DATABASE=Barnes&Noble -OUI:40E730* - ID_OUI_FROM_DATABASE=DEY Storage Systems, Inc. +OUI:C47DCC* + ID_OUI_FROM_DATABASE=Zebra Technologies Inc -OUI:A8D236* - ID_OUI_FROM_DATABASE=Lightware Visual Engineering +OUI:64535D* + ID_OUI_FROM_DATABASE=Frauscher Sensortechnik -OUI:6C8686* - ID_OUI_FROM_DATABASE=Technonia +OUI:105F06* + ID_OUI_FROM_DATABASE=Actiontec Electronics, Inc -OUI:4432C8* - ID_OUI_FROM_DATABASE=Technicolor USA Inc. +OUI:00B56D* + ID_OUI_FROM_DATABASE=David Electronics Co., LTD. -OUI:78521A* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd +OUI:B461FF* + ID_OUI_FROM_DATABASE=Lumigon A/S + +OUI:9038DF* + ID_OUI_FROM_DATABASE=Changzhou Tiannengbo System Co. Ltd. + +OUI:CC593E* + ID_OUI_FROM_DATABASE=TOUMAZ LTD OUI:84E714* ID_OUI_FROM_DATABASE=Liang Herng Enterprise,Co.Ltd. @@ -33965,15 +35132,6 @@ OUI:84E714* OUI:303D08* ID_OUI_FROM_DATABASE=GLINTT TES S.A. -OUI:9C541C* - ID_OUI_FROM_DATABASE=Shenzhen My-power Technology Co.,Ltd - -OUI:90187C* - ID_OUI_FROM_DATABASE=Samsung Electro Mechanics co., LTD. - -OUI:FC1F19* - ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO-MECHANICS CO., LTD. - OUI:E496AE* ID_OUI_FROM_DATABASE=ALTOGRAPHICS Inc. @@ -34004,32 +35162,23 @@ OUI:ECB541* OUI:D40057* ID_OUI_FROM_DATABASE=MC Technologies GmbH -OUI:48B8DE* - ID_OUI_FROM_DATABASE=HOMEWINS TECHNOLOGY CO.,LTD. - -OUI:20D5BF* - ID_OUI_FROM_DATABASE=Samsung Eletronics Co., Ltd - -OUI:6CD032* - ID_OUI_FROM_DATABASE=LG Electronics - -OUI:1065CF* - ID_OUI_FROM_DATABASE=IQSIM +OUI:B85AF7* + ID_OUI_FROM_DATABASE=Ouya, Inc -OUI:B877C3* - ID_OUI_FROM_DATABASE=Decagon Devices, Inc. +OUI:E0D9A2* + ID_OUI_FROM_DATABASE=Hippih aps -OUI:849DC5* - ID_OUI_FROM_DATABASE=Centera Photonics Inc. +OUI:B0C4E7* + ID_OUI_FROM_DATABASE=Samsung Electronics -OUI:580943* - ID_OUI_FROM_DATABASE=Private +OUI:F0F669* + ID_OUI_FROM_DATABASE=Motion Analysis Corporation -OUI:547FA8* - ID_OUI_FROM_DATABASE=TELCO systems, s.r.o. +OUI:F0219D* + ID_OUI_FROM_DATABASE=Cal-Comp Electronics & Communications Company Ltd. -OUI:5474E6* - ID_OUI_FROM_DATABASE=Webtech Wireless +OUI:F8D7BF* + ID_OUI_FROM_DATABASE=REV Ritter GmbH OUI:AC5D10* ID_OUI_FROM_DATABASE=Pace Americas @@ -34037,11 +35186,29 @@ OUI:AC5D10* OUI:88F490* ID_OUI_FROM_DATABASE=Jetmobile Pte Ltd -OUI:E8A364* - ID_OUI_FROM_DATABASE=Signal Path International / Peachtree Audio +OUI:AC8D14* + ID_OUI_FROM_DATABASE=Smartrove Inc -OUI:D0D6CC* - ID_OUI_FROM_DATABASE=Wintop +OUI:18673F* + ID_OUI_FROM_DATABASE=Hanover Displays Limited + +OUI:A00ABF* + ID_OUI_FROM_DATABASE=Wieson Technologies Co., Ltd. + +OUI:2091D9* + ID_OUI_FROM_DATABASE=I'M SPA + +OUI:744D79* + ID_OUI_FROM_DATABASE=Arrive Systems Inc. + +OUI:C83D97* + ID_OUI_FROM_DATABASE=Nokia Corporation + +OUI:38192F* + ID_OUI_FROM_DATABASE=Nokia Corporation + +OUI:141BF0* + ID_OUI_FROM_DATABASE=Intellimedia Systems Ltd OUI:101D51* ID_OUI_FROM_DATABASE=ON-Q LLC dba ON-Q Mesh Networks @@ -34055,123 +35222,165 @@ OUI:8C4AEE* OUI:F46DE2* ID_OUI_FROM_DATABASE=zte corporation -OUI:04F8C2* - ID_OUI_FROM_DATABASE=Flaircomm Microelectronics, Inc. +OUI:B838CA* + ID_OUI_FROM_DATABASE=Kyokko Tsushin System CO.,LTD -OUI:0C93FB* - ID_OUI_FROM_DATABASE=BNS Solutions +OUI:380FE4* + ID_OUI_FROM_DATABASE=Dedicated Network Partners Oy + +OUI:847A88* + ID_OUI_FROM_DATABASE=HTC Corporation + +OUI:0808C2* + ID_OUI_FROM_DATABASE=Samsung Electronics + +OUI:5461EA* + ID_OUI_FROM_DATABASE=Zaplox AB + +OUI:78324F* + ID_OUI_FROM_DATABASE=Millennium Group, Inc. OUI:38B5BD* ID_OUI_FROM_DATABASE=E.G.O. Elektro-Ger -OUI:B85AF7* - ID_OUI_FROM_DATABASE=Ouya, Inc +OUI:841715* + ID_OUI_FROM_DATABASE=GP Electronics (HK) Ltd. -OUI:E0D9A2* - ID_OUI_FROM_DATABASE=Hippih aps +OUI:087999* + ID_OUI_FROM_DATABASE=AIM GmbH -OUI:B0C4E7* - ID_OUI_FROM_DATABASE=Samsung Electronics +OUI:84C2E4* + ID_OUI_FROM_DATABASE=Jiangsu Qinheng Co., Ltd. -OUI:F0F669* - ID_OUI_FROM_DATABASE=Motion Analysis Corporation +OUI:C0B8B1* + ID_OUI_FROM_DATABASE=BitBox Ltd -OUI:F0219D* - ID_OUI_FROM_DATABASE=Cal-Comp Electronics & Communications Company Ltd. +OUI:0C722C* + ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. -OUI:F8D7BF* - ID_OUI_FROM_DATABASE=REV Ritter GmbH +OUI:B01408* + ID_OUI_FROM_DATABASE=LIGHTSPEED INTERNATIONAL CO. -OUI:00B56D* - ID_OUI_FROM_DATABASE=David Electronics Co., LTD. +OUI:84ACA4* + ID_OUI_FROM_DATABASE=Beijing Novel Super Digital TV Technology Co., Ltd -OUI:B461FF* - ID_OUI_FROM_DATABASE=Lumigon A/S +OUI:3C6FF7* + ID_OUI_FROM_DATABASE=EnTek Systems, Inc. -OUI:9038DF* - ID_OUI_FROM_DATABASE=Changzhou Tiannengbo System Co. Ltd. +OUI:48B8DE* + ID_OUI_FROM_DATABASE=HOMEWINS TECHNOLOGY CO.,LTD. -OUI:CC593E* - ID_OUI_FROM_DATABASE=TOUMAZ LTD +OUI:20D5BF* + ID_OUI_FROM_DATABASE=Samsung Eletronics Co., Ltd -OUI:AC8D14* - ID_OUI_FROM_DATABASE=Smartrove Inc +OUI:6CD032* + ID_OUI_FROM_DATABASE=LG Electronics -OUI:18673F* - ID_OUI_FROM_DATABASE=Hanover Displays Limited +OUI:1065CF* + ID_OUI_FROM_DATABASE=IQSIM -OUI:A00ABF* - ID_OUI_FROM_DATABASE=Wieson Technologies Co., Ltd. +OUI:B877C3* + ID_OUI_FROM_DATABASE=Decagon Devices, Inc. -OUI:2091D9* - ID_OUI_FROM_DATABASE=I'M SPA +OUI:849DC5* + ID_OUI_FROM_DATABASE=Centera Photonics Inc. -OUI:744D79* - ID_OUI_FROM_DATABASE=Arrive Systems Inc. +OUI:580943* + ID_OUI_FROM_DATABASE=Private -OUI:C83D97* - ID_OUI_FROM_DATABASE=Nokia Corporation +OUI:547FA8* + ID_OUI_FROM_DATABASE=TELCO systems, s.r.o. -OUI:38192F* - ID_OUI_FROM_DATABASE=Nokia Corporation +OUI:5474E6* + ID_OUI_FROM_DATABASE=Webtech Wireless -OUI:141BF0* - ID_OUI_FROM_DATABASE=Intellimedia Systems Ltd +OUI:E8A364* + ID_OUI_FROM_DATABASE=Signal Path International / Peachtree Audio -OUI:E45614* - ID_OUI_FROM_DATABASE=Suttle Apparatus +OUI:D0D6CC* + ID_OUI_FROM_DATABASE=Wintop -OUI:842BBC* - ID_OUI_FROM_DATABASE=Modelleisenbahn GmbH +OUI:FC1F19* + ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO-MECHANICS CO., LTD. -OUI:E856D6* - ID_OUI_FROM_DATABASE=NCTech Ltd +OUI:9C541C* + ID_OUI_FROM_DATABASE=Shenzhen My-power Technology Co.,Ltd -OUI:4088E0* - ID_OUI_FROM_DATABASE=Beijing Ereneben Information Technology Limited Shenzhen Branch +OUI:90187C* + ID_OUI_FROM_DATABASE=Samsung Electro Mechanics co., LTD. -OUI:1CF4CA* - ID_OUI_FROM_DATABASE=Private +OUI:10F3DB* + ID_OUI_FROM_DATABASE=Gridco Systems, Inc. -OUI:F490EA* - ID_OUI_FROM_DATABASE=Deciso B.V. +OUI:B01203* + ID_OUI_FROM_DATABASE=Dynamics Hong Kong Limited -OUI:942197* - ID_OUI_FROM_DATABASE=Stalmart Technology Limited +OUI:7093F8* + ID_OUI_FROM_DATABASE=Space Monkey, Inc. -OUI:AC9403* - ID_OUI_FROM_DATABASE=Envision Peripherals Inc +OUI:305D38* + ID_OUI_FROM_DATABASE=Beissbarth -OUI:A865B2* - ID_OUI_FROM_DATABASE=DONGGUAN YISHANG ELECTRONIC TECHNOLOGY CO., LIMITED +OUI:FCD6BD* + ID_OUI_FROM_DATABASE=Robert Bosch GmbH -OUI:60B982* - ID_OUI_FROM_DATABASE=RO.VE.R. Laboratories S.p.A. +OUI:044A50* + ID_OUI_FROM_DATABASE=Ramaxel Technology (Shenzhen) limited company -OUI:B46238* - ID_OUI_FROM_DATABASE=Exablox +OUI:A4466B* + ID_OUI_FROM_DATABASE=EOC Technology -OUI:40704A* - ID_OUI_FROM_DATABASE=Power Idea Technology Limited +OUI:7C386C* + ID_OUI_FROM_DATABASE=Real Time Logic -OUI:A40BED* - ID_OUI_FROM_DATABASE=Carry Technology Co.,Ltd +OUI:D8AF3B* + ID_OUI_FROM_DATABASE=Hangzhou Bigbright Integrated communications system Co.,Ltd -OUI:0CD996* +OUI:78D34F* + ID_OUI_FROM_DATABASE=Pace-O-Matic, Inc. + +OUI:D857EF* + ID_OUI_FROM_DATABASE=Samsung Electronics + +OUI:647657* + ID_OUI_FROM_DATABASE=Innovative Security Designs + +OUI:60455E* + ID_OUI_FROM_DATABASE=Liptel s.r.o. + +OUI:944A09* + ID_OUI_FROM_DATABASE=BitWise Controls + +OUI:E8102E* + ID_OUI_FROM_DATABASE=Really Simple Software, Inc + +OUI:D48CB5* ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:D82DE1* - ID_OUI_FROM_DATABASE=Tricascade Inc. +OUI:24A43C* + ID_OUI_FROM_DATABASE=Ubiquiti Networks, INC -OUI:C438D3* - ID_OUI_FROM_DATABASE=TAGATEC CO.,LTD +OUI:D41E35* + ID_OUI_FROM_DATABASE=TOHO Electronics INC. + +OUI:700BC0* + ID_OUI_FROM_DATABASE=Dewav Technology Company + +OUI:3CF392* + ID_OUI_FROM_DATABASE=Virtualtek. Co. Ltd + +OUI:889676* + ID_OUI_FROM_DATABASE=TTC MARCONI s.r.o. + +OUI:149FE8* + ID_OUI_FROM_DATABASE=Lenovo Mobile Communication Technology Ltd. + +OUI:70B599* + ID_OUI_FROM_DATABASE=Embedded Technologies s.r.o. OUI:547398* ID_OUI_FROM_DATABASE=Toyo Electronics Corporation -OUI:4C72B9* - ID_OUI_FROM_DATABASE=PEGATRON CORPORATION - OUI:E0AAB0* ID_OUI_FROM_DATABASE=GENERAL VISION ELECTRONICS CO. LTD. @@ -34187,14 +35396,11 @@ OUI:C041F6* OUI:985E1B* ID_OUI_FROM_DATABASE=ConversDigital Co., Ltd. -OUI:B8B7D7* - ID_OUI_FROM_DATABASE=2GIG Technologies - -OUI:1048B1* - ID_OUI_FROM_DATABASE=Beijing Duokan Technology Limited +OUI:9C0DAC* + ID_OUI_FROM_DATABASE=Tymphany HK Limited -OUI:005D03* - ID_OUI_FROM_DATABASE=Xilinx, Inc +OUI:8CD3A2* + ID_OUI_FROM_DATABASE=VisSim AS OUI:24EE3A* ID_OUI_FROM_DATABASE=Chengdu Yingji Electronic Hi-tech Co Ltd @@ -34232,41 +35438,32 @@ OUI:ACBD0B* OUI:D8D27C* ID_OUI_FROM_DATABASE=JEMA ENERGY, SA -OUI:10F3DB* - ID_OUI_FROM_DATABASE=Gridco Systems, Inc. - -OUI:B01203* - ID_OUI_FROM_DATABASE=Dynamics Hong Kong Limited - -OUI:7093F8* - ID_OUI_FROM_DATABASE=Space Monkey, Inc. - -OUI:305D38* - ID_OUI_FROM_DATABASE=Beissbarth +OUI:60CBFB* + ID_OUI_FROM_DATABASE=AirScape Inc. -OUI:FCD6BD* - ID_OUI_FROM_DATABASE=Robert Bosch GmbH +OUI:4C5427* + ID_OUI_FROM_DATABASE=Linepro Sp. z o.o. -OUI:044A50* - ID_OUI_FROM_DATABASE=Ramaxel Technology (Shenzhen) limited company +OUI:3CEAFB* + ID_OUI_FROM_DATABASE=NSE AG -OUI:E42F26* - ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Tech.Co.,Ltd. +OUI:3476C5* + ID_OUI_FROM_DATABASE=I-O DATA DEVICE, INC. -OUI:A4466B* - ID_OUI_FROM_DATABASE=EOC Technology +OUI:407074* + ID_OUI_FROM_DATABASE=Life Technology (China) Co., Ltd -OUI:3CF392* - ID_OUI_FROM_DATABASE=Virtualtek. Co. Ltd +OUI:58BFEA* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:889676* - ID_OUI_FROM_DATABASE=TTC MARCONI s.r.o. +OUI:E856D6* + ID_OUI_FROM_DATABASE=NCTech Ltd -OUI:149FE8* - ID_OUI_FROM_DATABASE=Lenovo Mobile Communication Technology Ltd. +OUI:4088E0* + ID_OUI_FROM_DATABASE=Beijing Ereneben Information Technology Limited Shenzhen Branch -OUI:70B599* - ID_OUI_FROM_DATABASE=Embedded Technologies s.r.o. +OUI:1CF4CA* + ID_OUI_FROM_DATABASE=Private OUI:EC4C4D* ID_OUI_FROM_DATABASE=ZAO NPK RoTeK @@ -34283,36 +35480,6 @@ OUI:ACD9D6* OUI:7493A4* ID_OUI_FROM_DATABASE=Zebra Technologies Corp. -OUI:9C0DAC* - ID_OUI_FROM_DATABASE=Tymphany HK Limited - -OUI:8CD3A2* - ID_OUI_FROM_DATABASE=VisSim AS - -OUI:647657* - ID_OUI_FROM_DATABASE=Innovative Security Designs - -OUI:60455E* - ID_OUI_FROM_DATABASE=Liptel s.r.o. - -OUI:944A09* - ID_OUI_FROM_DATABASE=BitWise Controls - -OUI:E8102E* - ID_OUI_FROM_DATABASE=Really Simple Software, Inc - -OUI:D48CB5* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -OUI:24A43C* - ID_OUI_FROM_DATABASE=Ubiquiti Networks, INC - -OUI:D41E35* - ID_OUI_FROM_DATABASE=TOHO Electronics INC. - -OUI:700BC0* - ID_OUI_FROM_DATABASE=Dewav Technology Company - OUI:58C38B* ID_OUI_FROM_DATABASE=Samsung Electronics @@ -34322,35 +35489,14 @@ OUI:2CD444* OUI:EC1A59* ID_OUI_FROM_DATABASE=Belkin International Inc. -OUI:60CBFB* - ID_OUI_FROM_DATABASE=AirScape Inc. - -OUI:4C5427* - ID_OUI_FROM_DATABASE=Linepro Sp. z o.o. - -OUI:3CEAFB* - ID_OUI_FROM_DATABASE=NSE AG - -OUI:3476C5* - ID_OUI_FROM_DATABASE=I-O DATA DEVICE, INC. - -OUI:407074* - ID_OUI_FROM_DATABASE=Life Technology (China) Co., Ltd - -OUI:58BFEA* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -OUI:7C386C* - ID_OUI_FROM_DATABASE=Real Time Logic - -OUI:D8AF3B* - ID_OUI_FROM_DATABASE=Hangzhou Bigbright Integrated communications system Co.,Ltd +OUI:04F8C2* + ID_OUI_FROM_DATABASE=Flaircomm Microelectronics, Inc. -OUI:78D34F* - ID_OUI_FROM_DATABASE=Pace-O-Matic, Inc. +OUI:0C93FB* + ID_OUI_FROM_DATABASE=BNS Solutions -OUI:D857EF* - ID_OUI_FROM_DATABASE=Samsung Electronics +OUI:E45614* + ID_OUI_FROM_DATABASE=Suttle Apparatus OUI:784405* ID_OUI_FROM_DATABASE=FUJITU(HONG KONG) ELECTRONIC Co.,LTD. @@ -34361,26 +35507,41 @@ OUI:C03F2A* OUI:5001BB* ID_OUI_FROM_DATABASE=Samsung Electronics -OUI:F0FDA0* - ID_OUI_FROM_DATABASE=Acurix Networks LP +OUI:A40BED* + ID_OUI_FROM_DATABASE=Carry Technology Co.,Ltd -OUI:44B382* - ID_OUI_FROM_DATABASE=Kuang-chi Institute of Advanced Technology +OUI:0CD996* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:344B3D* - ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Tech.Co.,Ltd. +OUI:D82DE1* + ID_OUI_FROM_DATABASE=Tricascade Inc. -OUI:D80DE3* - ID_OUI_FROM_DATABASE=FXI TECHNOLOGIES AS +OUI:C438D3* + ID_OUI_FROM_DATABASE=TAGATEC CO.,LTD -OUI:1CE165* - ID_OUI_FROM_DATABASE=Marshal Corporation +OUI:842BBC* + ID_OUI_FROM_DATABASE=Modelleisenbahn GmbH -OUI:0CC0C0* - ID_OUI_FROM_DATABASE=MAGNETI MARELLI SISTEMAS ELECTRONICOS MEXICO +OUI:B8B7D7* + ID_OUI_FROM_DATABASE=2GIG Technologies -OUI:AC40EA* - ID_OUI_FROM_DATABASE=C&T Solution Inc. +OUI:1048B1* + ID_OUI_FROM_DATABASE=Beijing Duokan Technology Limited + +OUI:005D03* + ID_OUI_FROM_DATABASE=Xilinx, Inc + +OUI:20FABB* + ID_OUI_FROM_DATABASE=Cambridge Executive Limited + +OUI:1C0B52* + ID_OUI_FROM_DATABASE=EPICOM S.A + +OUI:747E2D* + ID_OUI_FROM_DATABASE=Beijing Thomson CITIC Digital Technology Co. LTD. + +OUI:E80C75* + ID_OUI_FROM_DATABASE=Syncbak, Inc. OUI:BC8B55* ID_OUI_FROM_DATABASE=NPP ELIKS America Inc. DBA T&M Atlantic @@ -34391,56 +35552,20 @@ OUI:D8EB97* OUI:202598* ID_OUI_FROM_DATABASE=Teleview -OUI:844915* - ID_OUI_FROM_DATABASE=vArmour Networks, Inc. - -OUI:A04CC1* - ID_OUI_FROM_DATABASE=Helixtech Corp. - -OUI:1CB243* - ID_OUI_FROM_DATABASE=TDC A/S - -OUI:1C51B5* - ID_OUI_FROM_DATABASE=Techaya LTD - -OUI:80DB31* - ID_OUI_FROM_DATABASE=Power Quotient International Co., Ltd. - -OUI:AC0142* - ID_OUI_FROM_DATABASE=Uriel Technologies SIA - -OUI:A007B6* - ID_OUI_FROM_DATABASE=Advanced Technical Support, Inc. - -OUI:542A9C* - ID_OUI_FROM_DATABASE=LSY Defense, LLC. - -OUI:D487D8* - ID_OUI_FROM_DATABASE=Samsung Electronics - -OUI:F89955* - ID_OUI_FROM_DATABASE=Fortress Technology Inc - -OUI:B827EB* - ID_OUI_FROM_DATABASE=Raspberry Pi Foundation - -OUI:E88DF5* - ID_OUI_FROM_DATABASE=ZNYX Networks, Inc. - -OUI:48EA63* - ID_OUI_FROM_DATABASE=Zhejiang Uniview Technologies Co., Ltd. +OUI:44B382* + ID_OUI_FROM_DATABASE=Kuang-chi Institute of Advanced Technology -OUI:0CE5D3* - ID_OUI_FROM_DATABASE=DH electronics GmbH +OUI:D80DE3* + ID_OUI_FROM_DATABASE=FXI TECHNOLOGIES AS -OUI:C47130* - ID_OUI_FROM_DATABASE=Fon Technology S.L. +OUI:1CE165* + ID_OUI_FROM_DATABASE=Marshal Corporation -OUI:90CF7D* - ID_OUI_FROM_DATABASE=Qingdao Hisense Electric Co.,Ltd. +OUI:0CC0C0* + ID_OUI_FROM_DATABASE=MAGNETI MARELLI SISTEMAS ELECTRONICOS MEXICO -OUI:48D7FF* - ID_OUI_FROM_DATABASE=BLANKOM Antennentechnik GmbH +OUI:AC40EA* + ID_OUI_FROM_DATABASE=C&T Solution Inc. OUI:F47F35* ID_OUI_FROM_DATABASE=Cisco Systems, Inc @@ -34466,35 +35591,20 @@ OUI:5C0A5B* OUI:6CA96F* ID_OUI_FROM_DATABASE=TransPacket AS -OUI:48ED80* - ID_OUI_FROM_DATABASE=daesung eltec - -OUI:A086EC* - ID_OUI_FROM_DATABASE=SAEHAN HITEC Co., Ltd - -OUI:BC4B79* - ID_OUI_FROM_DATABASE=SensingTek - -OUI:2818FD* - ID_OUI_FROM_DATABASE=Aditya Infotech Ltd. - -OUI:9003B7* - ID_OUI_FROM_DATABASE=PARROT - -OUI:E42C56* - ID_OUI_FROM_DATABASE=Lilee Systems, Ltd. +OUI:AC0142* + ID_OUI_FROM_DATABASE=Uriel Technologies SIA -OUI:50008C* - ID_OUI_FROM_DATABASE=Hong Kong Telecommunications (HKT) Limited +OUI:A007B6* + ID_OUI_FROM_DATABASE=Advanced Technical Support, Inc. -OUI:DCA8CF* - ID_OUI_FROM_DATABASE=New Spin Golf, LLC. +OUI:542A9C* + ID_OUI_FROM_DATABASE=LSY Defense, LLC. -OUI:34BA9A* - ID_OUI_FROM_DATABASE=Asiatelco Technologies Co. +OUI:D487D8* + ID_OUI_FROM_DATABASE=Samsung Electronics -OUI:642DB7* - ID_OUI_FROM_DATABASE=SEUNGIL ELECTRONICS +OUI:F89955* + ID_OUI_FROM_DATABASE=Fortress Technology Inc OUI:008DDA* ID_OUI_FROM_DATABASE=Link One Co., Ltd. @@ -34520,59 +35630,107 @@ OUI:F48E09* OUI:882012* ID_OUI_FROM_DATABASE=LMI Technologies -OUI:D443A8* - ID_OUI_FROM_DATABASE=Changzhou Haojie Electric Co., Ltd. +OUI:800A06* + ID_OUI_FROM_DATABASE=COMTEC co.,ltd -OUI:BCB852* - ID_OUI_FROM_DATABASE=Cybera, Inc. +OUI:B827EB* + ID_OUI_FROM_DATABASE=Raspberry Pi Foundation -OUI:70D6B6* - ID_OUI_FROM_DATABASE=Metrum Technologies +OUI:E88DF5* + ID_OUI_FROM_DATABASE=ZNYX Networks, Inc. -OUI:28D576* - ID_OUI_FROM_DATABASE=Premier Wireless, Inc. +OUI:48EA63* + ID_OUI_FROM_DATABASE=Zhejiang Uniview Technologies Co., Ltd. -OUI:6CE907* - ID_OUI_FROM_DATABASE=Nokia Corporation +OUI:0CE5D3* + ID_OUI_FROM_DATABASE=DH electronics GmbH -OUI:94DF58* - ID_OUI_FROM_DATABASE=IJ Electron CO.,Ltd. +OUI:C47130* + ID_OUI_FROM_DATABASE=Fon Technology S.L. -OUI:8C0CA3* - ID_OUI_FROM_DATABASE=Amper +OUI:90CF7D* + ID_OUI_FROM_DATABASE=Qingdao Hisense Electric Co.,Ltd. -OUI:28940F* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc +OUI:48D7FF* + ID_OUI_FROM_DATABASE=BLANKOM Antennentechnik GmbH -OUI:5CEB4E* - ID_OUI_FROM_DATABASE=R. STAHL HMI Systems GmbH +OUI:18D66A* + ID_OUI_FROM_DATABASE=Inmarsat -OUI:B8DAF7* - ID_OUI_FROM_DATABASE=Advanced Photonics, Inc. +OUI:C85645* + ID_OUI_FROM_DATABASE=Intermas France -OUI:2C36A0* - ID_OUI_FROM_DATABASE=Capisco Limited +OUI:F490EA* + ID_OUI_FROM_DATABASE=Deciso B.V. -OUI:800A06* - ID_OUI_FROM_DATABASE=COMTEC co.,ltd +OUI:942197* + ID_OUI_FROM_DATABASE=Stalmart Technology Limited -OUI:20FABB* - ID_OUI_FROM_DATABASE=Cambridge Executive Limited +OUI:AC9403* + ID_OUI_FROM_DATABASE=Envision Peripherals Inc -OUI:1C0B52* - ID_OUI_FROM_DATABASE=EPICOM S.A +OUI:A865B2* + ID_OUI_FROM_DATABASE=DONGGUAN YISHANG ELECTRONIC TECHNOLOGY CO., LIMITED -OUI:747E2D* - ID_OUI_FROM_DATABASE=Beijing Thomson CITIC Digital Technology Co. LTD. +OUI:60B982* + ID_OUI_FROM_DATABASE=RO.VE.R. Laboratories S.p.A. -OUI:E80C75* - ID_OUI_FROM_DATABASE=Syncbak, Inc. +OUI:B46238* + ID_OUI_FROM_DATABASE=Exablox -OUI:18D66A* - ID_OUI_FROM_DATABASE=Inmarsat +OUI:40704A* + ID_OUI_FROM_DATABASE=Power Idea Technology Limited -OUI:C85645* - ID_OUI_FROM_DATABASE=Intermas France +OUI:F0FDA0* + ID_OUI_FROM_DATABASE=Acurix Networks LP + +OUI:D8BF4C* + ID_OUI_FROM_DATABASE=Victory Concept Electronics Limited + +OUI:C0DF77* + ID_OUI_FROM_DATABASE=Conrad Electronic SE + +OUI:C86000* + ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC. + +OUI:645299* + ID_OUI_FROM_DATABASE=The Chamberlain Group, Inc + +OUI:BC125E* + ID_OUI_FROM_DATABASE=Beijing WisVideo INC. + +OUI:C80718* + ID_OUI_FROM_DATABASE=TDSi + +OUI:48ED80* + ID_OUI_FROM_DATABASE=daesung eltec + +OUI:A086EC* + ID_OUI_FROM_DATABASE=SAEHAN HITEC Co., Ltd + +OUI:BC4B79* + ID_OUI_FROM_DATABASE=SensingTek + +OUI:2818FD* + ID_OUI_FROM_DATABASE=Aditya Infotech Ltd. + +OUI:9003B7* + ID_OUI_FROM_DATABASE=PARROT + +OUI:844915* + ID_OUI_FROM_DATABASE=vArmour Networks, Inc. + +OUI:A04CC1* + ID_OUI_FROM_DATABASE=Helixtech Corp. + +OUI:1CB243* + ID_OUI_FROM_DATABASE=TDC A/S + +OUI:1C51B5* + ID_OUI_FROM_DATABASE=Techaya LTD + +OUI:80DB31* + ID_OUI_FROM_DATABASE=Power Quotient International Co., Ltd. OUI:8C604F* ID_OUI_FROM_DATABASE=Cisco Systems, Inc @@ -34595,23 +35753,26 @@ OUI:34FC6F* OUI:C0B357* ID_OUI_FROM_DATABASE=Yoshiki Electronics Industry Ltd. -OUI:D8BF4C* - ID_OUI_FROM_DATABASE=Victory Concept Electronics Limited +OUI:642DB7* + ID_OUI_FROM_DATABASE=SEUNGIL ELECTRONICS -OUI:C0DF77* - ID_OUI_FROM_DATABASE=Conrad Electronic SE +OUI:A898C6* + ID_OUI_FROM_DATABASE=Shinbo Co., Ltd. -OUI:C86000* - ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC. +OUI:006BA0* + ID_OUI_FROM_DATABASE=SHENZHEN UNIVERSAL INTELLISYS PTE LTD -OUI:645299* - ID_OUI_FROM_DATABASE=The Chamberlain Group, Inc +OUI:502690* + ID_OUI_FROM_DATABASE=FUJITSU LIMITED -OUI:BC125E* - ID_OUI_FROM_DATABASE=Beijing WisVideo INC. +OUI:B4211D* + ID_OUI_FROM_DATABASE=Beijing GuangXin Technology Co., Ltd -OUI:C80718* - ID_OUI_FROM_DATABASE=TDSi +OUI:E039D7* + ID_OUI_FROM_DATABASE=Plexxi, Inc. + +OUI:FC946C* + ID_OUI_FROM_DATABASE=UBIVELOX OUI:B4944E* ID_OUI_FROM_DATABASE=WeTelecom Co., Ltd. @@ -34625,41 +35786,71 @@ OUI:988BAD* OUI:4050E0* ID_OUI_FROM_DATABASE=Milton Security Group LLC +OUI:E42C56* + ID_OUI_FROM_DATABASE=Lilee Systems, Ltd. + +OUI:50008C* + ID_OUI_FROM_DATABASE=Hong Kong Telecommunications (HKT) Limited + +OUI:DCA8CF* + ID_OUI_FROM_DATABASE=New Spin Golf, LLC. + +OUI:34BA9A* + ID_OUI_FROM_DATABASE=Asiatelco Technologies Co. + +OUI:D443A8* + ID_OUI_FROM_DATABASE=Changzhou Haojie Electric Co., Ltd. + +OUI:BCB852* + ID_OUI_FROM_DATABASE=Cybera, Inc. + +OUI:70D6B6* + ID_OUI_FROM_DATABASE=Metrum Technologies + +OUI:28D576* + ID_OUI_FROM_DATABASE=Premier Wireless, Inc. + OUI:C87CBC* ID_OUI_FROM_DATABASE=Valink Co., Ltd. OUI:409FC7* ID_OUI_FROM_DATABASE=BAEKCHUN I&C Co., Ltd. -OUI:D4E33F* - ID_OUI_FROM_DATABASE=Alcatel-Lucent - OUI:C87D77* ID_OUI_FROM_DATABASE=Shenzhen Kingtech Communication Equipment Co.,Ltd OUI:A078BA* ID_OUI_FROM_DATABASE=Pantech Co., Ltd. -OUI:D4507A* - ID_OUI_FROM_DATABASE=CEIVA Logic, Inc +OUI:20BBC6* + ID_OUI_FROM_DATABASE=Jabil Circuit Hungary Ltd. -OUI:184617* - ID_OUI_FROM_DATABASE=Samsung Electronics +OUI:2C9717* + ID_OUI_FROM_DATABASE=I.C.Y. B.V. -OUI:9CC7D1* - ID_OUI_FROM_DATABASE=SHARP Corporation +OUI:64E84F* + ID_OUI_FROM_DATABASE=Serialway Communication Technology Co. Ltd -OUI:AC9CE4* - ID_OUI_FROM_DATABASE=Alcatel-Lucent Shanghai Bell Co., Ltd +OUI:6CE907* + ID_OUI_FROM_DATABASE=Nokia Corporation -OUI:00B9F6* - ID_OUI_FROM_DATABASE=Shenzhen Super Rich Electronics Co.,Ltd +OUI:94DF58* + ID_OUI_FROM_DATABASE=IJ Electron CO.,Ltd. -OUI:9C5C8D* - ID_OUI_FROM_DATABASE=FIREMAX INDÚSTRIA E COMÉRCIO DE PRODUTOS ELETRÔNICOS LTDA +OUI:8C0CA3* + ID_OUI_FROM_DATABASE=Amper -OUI:E01E07* - ID_OUI_FROM_DATABASE=Anite Telecoms US. Inc +OUI:28940F* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:5CEB4E* + ID_OUI_FROM_DATABASE=R. STAHL HMI Systems GmbH + +OUI:B8DAF7* + ID_OUI_FROM_DATABASE=Advanced Photonics, Inc. + +OUI:2C36A0* + ID_OUI_FROM_DATABASE=Capisco Limited OUI:B06CBF* ID_OUI_FROM_DATABASE=3ality Digital Systems GmbH @@ -34688,75 +35879,6 @@ OUI:70704C* OUI:F47ACC* ID_OUI_FROM_DATABASE=SolidFire, Inc. -OUI:24BC82* - ID_OUI_FROM_DATABASE=Dali Wireless, Inc. - -OUI:F80CF3* - ID_OUI_FROM_DATABASE=LG Electronics - -OUI:64C5AA* - ID_OUI_FROM_DATABASE=South African Broadcasting Corporation - -OUI:64ED62* - ID_OUI_FROM_DATABASE=WOORI SYSTEMS Co., Ltd - -OUI:C4237A* - ID_OUI_FROM_DATABASE=WhizNets Inc. - -OUI:8430E5* - ID_OUI_FROM_DATABASE=SkyHawke Technologies, LLC - -OUI:2C002C* - ID_OUI_FROM_DATABASE=UNOWHY - -OUI:0481AE* - ID_OUI_FROM_DATABASE=Clack Corporation - -OUI:C09132* - ID_OUI_FROM_DATABASE=Patriot Memory - -OUI:A898C6* - ID_OUI_FROM_DATABASE=Shinbo Co., Ltd. - -OUI:006BA0* - ID_OUI_FROM_DATABASE=SHENZHEN UNIVERSAL INTELLISYS PTE LTD - -OUI:502690* - ID_OUI_FROM_DATABASE=FUJITSU LIMITED - -OUI:B4211D* - ID_OUI_FROM_DATABASE=Beijing GuangXin Technology Co., Ltd - -OUI:E039D7* - ID_OUI_FROM_DATABASE=Plexxi, Inc. - -OUI:FC946C* - ID_OUI_FROM_DATABASE=UBIVELOX - -OUI:38DE60* - ID_OUI_FROM_DATABASE=Mohlenhoff GmbH - -OUI:2839E7* - ID_OUI_FROM_DATABASE=Preceno Technology Pte.Ltd. - -OUI:28D997* - ID_OUI_FROM_DATABASE=Yuduan Mobile Co., Ltd. - -OUI:886B76* - ID_OUI_FROM_DATABASE=CHINA HOPEFUL GROUP HOPEFUL ELECTRIC CO.,LTD - -OUI:A0CF5B* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -OUI:18C451* - ID_OUI_FROM_DATABASE=Tucson Embedded Systems - -OUI:582EFE* - ID_OUI_FROM_DATABASE=Lighting Science Group - -OUI:D826B9* - ID_OUI_FROM_DATABASE=Guangdong Coagent Electronics S &T Co., Ltd. - OUI:F8D3A9* ID_OUI_FROM_DATABASE=AXAN Networks @@ -34775,15 +35897,6 @@ OUI:CCA374* OUI:50F61A* ID_OUI_FROM_DATABASE=Kunshan JADE Technologies co., Ltd. -OUI:20BBC6* - ID_OUI_FROM_DATABASE=Jabil Circuit Hungary Ltd. - -OUI:2C9717* - ID_OUI_FROM_DATABASE=I.C.Y. B.V. - -OUI:64E84F* - ID_OUI_FROM_DATABASE=Serialway Communication Technology Co. Ltd - OUI:941D1C* ID_OUI_FROM_DATABASE=TLab West Systems AB @@ -34799,6 +35912,27 @@ OUI:7C6B52* OUI:48C1AC* ID_OUI_FROM_DATABASE=PLANTRONICS, INC. +OUI:D826B9* + ID_OUI_FROM_DATABASE=Guangdong Coagent Electronics S &T Co., Ltd. + +OUI:24BC82* + ID_OUI_FROM_DATABASE=Dali Wireless, Inc. + +OUI:F80CF3* + ID_OUI_FROM_DATABASE=LG Electronics + +OUI:64C5AA* + ID_OUI_FROM_DATABASE=South African Broadcasting Corporation + +OUI:64ED62* + ID_OUI_FROM_DATABASE=WOORI SYSTEMS Co., Ltd + +OUI:C4237A* + ID_OUI_FROM_DATABASE=WhizNets Inc. + +OUI:8430E5* + ID_OUI_FROM_DATABASE=SkyHawke Technologies, LLC + OUI:046D42* ID_OUI_FROM_DATABASE=Bryston Ltd. @@ -34814,14 +35948,14 @@ OUI:644D70* OUI:807693* ID_OUI_FROM_DATABASE=Newag SA -OUI:FC1794* - ID_OUI_FROM_DATABASE=InterCreative Co., Ltd +OUI:2C002C* + ID_OUI_FROM_DATABASE=UNOWHY -OUI:181420* - ID_OUI_FROM_DATABASE=TEB SAS +OUI:0481AE* + ID_OUI_FROM_DATABASE=Clack Corporation -OUI:D03110* - ID_OUI_FROM_DATABASE=Ingenic Semiconductor Co.,Ltd +OUI:C09132* + ID_OUI_FROM_DATABASE=Patriot Memory OUI:AC81F3* ID_OUI_FROM_DATABASE=Nokia Corporation @@ -34838,20 +35972,17 @@ OUI:80971B* OUI:1071F9* ID_OUI_FROM_DATABASE=Cloud Telecomputers, LLC -OUI:C47B2F* - ID_OUI_FROM_DATABASE=Beijing JoinHope Image Technology Ltd. - -OUI:18F650* - ID_OUI_FROM_DATABASE=Multimedia Pacific Limited +OUI:B8B42E* + ID_OUI_FROM_DATABASE=Gionee Communication Equipment Co,Ltd.ShenZhen -OUI:704AAE* - ID_OUI_FROM_DATABASE=Xstream Flow (Pty) Ltd +OUI:A84041* + ID_OUI_FROM_DATABASE=Dragino Technology Co., Limited -OUI:9C934E* - ID_OUI_FROM_DATABASE=Xerox Corporation +OUI:DCF05D* + ID_OUI_FROM_DATABASE=Letta Teknoloji -OUI:3C26D5* - ID_OUI_FROM_DATABASE=Sotera Wireless +OUI:D05A0F* + ID_OUI_FROM_DATABASE=I-BT DIGITAL CO.,LTD OUI:FC2E2D* ID_OUI_FROM_DATABASE=Lorom Industrial Co.LTD. @@ -34865,56 +35996,53 @@ OUI:B4C799* OUI:70B921* ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD -OUI:948FEE* - ID_OUI_FROM_DATABASE=Hughes Telematics, Inc. - -OUI:E8C320* - ID_OUI_FROM_DATABASE=Austco Communication Systems Pty Ltd +OUI:C47B2F* + ID_OUI_FROM_DATABASE=Beijing JoinHope Image Technology Ltd. -OUI:D8973B* - ID_OUI_FROM_DATABASE=Artesyn Embedded Technologies +OUI:18F650* + ID_OUI_FROM_DATABASE=Multimedia Pacific Limited -OUI:008D4E* - ID_OUI_FROM_DATABASE=CJSC NII STT +OUI:38DE60* + ID_OUI_FROM_DATABASE=Mohlenhoff GmbH -OUI:10C586* - ID_OUI_FROM_DATABASE=BIO SOUND LAB CO., LTD. +OUI:2839E7* + ID_OUI_FROM_DATABASE=Preceno Technology Pte.Ltd. -OUI:E8BA70* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc +OUI:28D997* + ID_OUI_FROM_DATABASE=Yuduan Mobile Co., Ltd. -OUI:6473E2* - ID_OUI_FROM_DATABASE=Arbiter Systems, Inc. +OUI:886B76* + ID_OUI_FROM_DATABASE=CHINA HOPEFUL GROUP HOPEFUL ELECTRIC CO.,LTD -OUI:00A1DE* - ID_OUI_FROM_DATABASE=ShenZhen ShiHua Technology CO.,LTD +OUI:A0CF5B* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:04E1C8* - ID_OUI_FROM_DATABASE=IMS Soluções em Energia Ltda. +OUI:18C451* + ID_OUI_FROM_DATABASE=Tucson Embedded Systems -OUI:E4DD79* - ID_OUI_FROM_DATABASE=En-Vision America, Inc. +OUI:582EFE* + ID_OUI_FROM_DATABASE=Lighting Science Group -OUI:60190C* - ID_OUI_FROM_DATABASE=RRAMAC +OUI:D4507A* + ID_OUI_FROM_DATABASE=CEIVA Logic, Inc -OUI:34A709* - ID_OUI_FROM_DATABASE=Trevil srl +OUI:184617* + ID_OUI_FROM_DATABASE=Samsung Electronics -OUI:F80332* - ID_OUI_FROM_DATABASE=Khomp +OUI:9CC7D1* + ID_OUI_FROM_DATABASE=SHARP Corporation -OUI:C40F09* - ID_OUI_FROM_DATABASE=Hermes electronic GmbH +OUI:AC9CE4* + ID_OUI_FROM_DATABASE=Alcatel-Lucent Shanghai Bell Co., Ltd -OUI:908D1D* - ID_OUI_FROM_DATABASE=GH Technologies +OUI:00B9F6* + ID_OUI_FROM_DATABASE=Shenzhen Super Rich Electronics Co.,Ltd -OUI:CCB55A* - ID_OUI_FROM_DATABASE=Fraunhofer ITWM +OUI:9C5C8D* + ID_OUI_FROM_DATABASE=FIREMAX INDÚSTRIA E COMÉRCIO DE PRODUTOS ELETRÔNICOS LTDA -OUI:587521* - ID_OUI_FROM_DATABASE=CJSC RTSoft +OUI:E01E07* + ID_OUI_FROM_DATABASE=Anite Telecoms US. Inc OUI:64D989* ID_OUI_FROM_DATABASE=Cisco Systems, Inc @@ -34928,6 +36056,9 @@ OUI:24DAB6* OUI:B8F5E7* ID_OUI_FROM_DATABASE=WayTools, LLC +OUI:980C82* + ID_OUI_FROM_DATABASE=Samsung Electro Mechanics + OUI:148A70* ID_OUI_FROM_DATABASE=ADS GmbH @@ -34943,20 +36074,26 @@ OUI:644346* OUI:FCE892* ID_OUI_FROM_DATABASE=Hangzhou Lancable Technology Co.,Ltd -OUI:B8B42E* - ID_OUI_FROM_DATABASE=Gionee Communication Equipment Co,Ltd.ShenZhen +OUI:FC1794* + ID_OUI_FROM_DATABASE=InterCreative Co., Ltd -OUI:A84041* - ID_OUI_FROM_DATABASE=Dragino Technology Co., Limited +OUI:181420* + ID_OUI_FROM_DATABASE=TEB SAS -OUI:686E23* - ID_OUI_FROM_DATABASE=Wi3 Inc. +OUI:D03110* + ID_OUI_FROM_DATABASE=Ingenic Semiconductor Co.,Ltd -OUI:DCF05D* - ID_OUI_FROM_DATABASE=Letta Teknoloji +OUI:48C862* + ID_OUI_FROM_DATABASE=Simo Wireless,Inc. -OUI:D05A0F* - ID_OUI_FROM_DATABASE=I-BT DIGITAL CO.,LTD +OUI:3C26D5* + ID_OUI_FROM_DATABASE=Sotera Wireless + +OUI:704AAE* + ID_OUI_FROM_DATABASE=Xstream Flow (Pty) Ltd + +OUI:9C934E* + ID_OUI_FROM_DATABASE=Xerox Corporation OUI:9439E5* ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. @@ -34973,18 +36110,6 @@ OUI:9C7BD2* OUI:900D66* ID_OUI_FROM_DATABASE=Digimore Electronics Co., Ltd -OUI:980C82* - ID_OUI_FROM_DATABASE=Samsung Electro Mechanics - -OUI:48C862* - ID_OUI_FROM_DATABASE=Simo Wireless,Inc. - -OUI:0CF3EE* - ID_OUI_FROM_DATABASE=EM Microelectronic - -OUI:F0C27C* - ID_OUI_FROM_DATABASE=Mianyang Netop Telecom Equipment Co.,Ltd. - OUI:BC35E5* ID_OUI_FROM_DATABASE=Hydro Systems Company @@ -35003,6 +36128,18 @@ OUI:A433D1* OUI:84DE3D* ID_OUI_FROM_DATABASE=Crystal Vision Ltd +OUI:F87B8C* + ID_OUI_FROM_DATABASE=Amped Wireless + +OUI:44D2CA* + ID_OUI_FROM_DATABASE=Anvia TV Oy + +OUI:4C1A3A* + ID_OUI_FROM_DATABASE=PRIMA Research And Production Enterprise Ltd. + +OUI:AC0613* + ID_OUI_FROM_DATABASE=Senselogix Ltd + OUI:B4AA4D* ID_OUI_FROM_DATABASE=Ensequence, Inc. @@ -35024,9 +36161,6 @@ OUI:3891FB* OUI:50FAAB* ID_OUI_FROM_DATABASE=L-tek d.o.o. -OUI:547F54* - ID_OUI_FROM_DATABASE=INGENICO - OUI:A8E018* ID_OUI_FROM_DATABASE=Nokia Corporation @@ -35048,53 +36182,44 @@ OUI:50E549* OUI:A8FCB7* ID_OUI_FROM_DATABASE=Consolidated Resource Imaging -OUI:F87B8C* - ID_OUI_FROM_DATABASE=Amped Wireless - -OUI:44D2CA* - ID_OUI_FROM_DATABASE=Anvia TV Oy - -OUI:4C1A3A* - ID_OUI_FROM_DATABASE=PRIMA Research And Production Enterprise Ltd. - -OUI:AC0613* - ID_OUI_FROM_DATABASE=Senselogix Ltd +OUI:6400F1* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:CCF67A* - ID_OUI_FROM_DATABASE=Ayecka Communication Systems LTD +OUI:04C5A4* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:200A5E* - ID_OUI_FROM_DATABASE=Xiangshan Giant Eagle Technology Developing co.,LTD +OUI:E4DD79* + ID_OUI_FROM_DATABASE=En-Vision America, Inc. -OUI:747818* - ID_OUI_FROM_DATABASE=ServiceAssure +OUI:60190C* + ID_OUI_FROM_DATABASE=RRAMAC -OUI:00BB8E* - ID_OUI_FROM_DATABASE=HME Co., Ltd. +OUI:34A709* + ID_OUI_FROM_DATABASE=Trevil srl -OUI:C0A26D* - ID_OUI_FROM_DATABASE=Abbott Point of Care +OUI:F80332* + ID_OUI_FROM_DATABASE=Khomp -OUI:205B2A* - ID_OUI_FROM_DATABASE=Private +OUI:C40F09* + ID_OUI_FROM_DATABASE=Hermes electronic GmbH -OUI:18B430* - ID_OUI_FROM_DATABASE=Nest Labs Inc. +OUI:908D1D* + ID_OUI_FROM_DATABASE=GH Technologies -OUI:F8769B* - ID_OUI_FROM_DATABASE=Neopis Co., Ltd. +OUI:CCB55A* + ID_OUI_FROM_DATABASE=Fraunhofer ITWM -OUI:08E672* - ID_OUI_FROM_DATABASE=JEBSEE ELECTRONICS CO.,LTD. +OUI:587521* + ID_OUI_FROM_DATABASE=CJSC RTSoft -OUI:C89CDC* - ID_OUI_FROM_DATABASE=ELITEGROUP COMPUTER SYSTEM CO., LTD. +OUI:948FEE* + ID_OUI_FROM_DATABASE=Hughes Telematics, Inc. -OUI:58E476* - ID_OUI_FROM_DATABASE=CENTRON COMMUNICATIONS TECHNOLOGIES FUJIAN CO.,LTD +OUI:E8C320* + ID_OUI_FROM_DATABASE=Austco Communication Systems Pty Ltd -OUI:B435F7* - ID_OUI_FROM_DATABASE=Zhejiang Pearmain Electronics Co.ltd. +OUI:D8973B* + ID_OUI_FROM_DATABASE=Artesyn Embedded Technologies OUI:0C6E4F* ID_OUI_FROM_DATABASE=PrimeVOLT Co., Ltd. @@ -35114,6 +36239,33 @@ OUI:CC5D4E* OUI:D0EB9E* ID_OUI_FROM_DATABASE=Seowoo Inc. +OUI:BC99BC* + ID_OUI_FROM_DATABASE=FonSee Technology Inc. + +OUI:986022* + ID_OUI_FROM_DATABASE=EMW Co., Ltd. + +OUI:80B32A* + ID_OUI_FROM_DATABASE=Alstom Grid + +OUI:803457* + ID_OUI_FROM_DATABASE=OT Systems Limited + +OUI:B83D4E* + ID_OUI_FROM_DATABASE=Shenzhen Cultraview Digital Technology Co.,Ltd Shanghai Branch + +OUI:3CA72B* + ID_OUI_FROM_DATABASE=MRV Communications (Networks) LTD + +OUI:EC55F9* + ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. + +OUI:F4D9FB* + ID_OUI_FROM_DATABASE=Samsung Electronics CO., LTD + +OUI:584C19* + ID_OUI_FROM_DATABASE=Chongqing Guohong Technology Development Company Limited + OUI:8C5FDF* ID_OUI_FROM_DATABASE=Beijing Railway Signal Factory @@ -35150,6 +36302,30 @@ OUI:7C6C39* OUI:9C5D95* ID_OUI_FROM_DATABASE=VTC Electronics Corp. +OUI:0CF3EE* + ID_OUI_FROM_DATABASE=EM Microelectronic + +OUI:F0C27C* + ID_OUI_FROM_DATABASE=Mianyang Netop Telecom Equipment Co.,Ltd. + +OUI:008D4E* + ID_OUI_FROM_DATABASE=CJSC NII STT + +OUI:10C586* + ID_OUI_FROM_DATABASE=BIO SOUND LAB CO., LTD. + +OUI:E8BA70* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:6473E2* + ID_OUI_FROM_DATABASE=Arbiter Systems, Inc. + +OUI:00A1DE* + ID_OUI_FROM_DATABASE=ShenZhen ShiHua Technology CO.,LTD + +OUI:04E1C8* + ID_OUI_FROM_DATABASE=IMS Soluções em Energia Ltda. + OUI:DC05ED* ID_OUI_FROM_DATABASE=Nabtesco Corporation @@ -35162,71 +36338,71 @@ OUI:94E848* OUI:AC5E8C* ID_OUI_FROM_DATABASE=Utillink +OUI:CCF3A5* + ID_OUI_FROM_DATABASE=Chi Mei Communication Systems, Inc + +OUI:C4242E* + ID_OUI_FROM_DATABASE=Galvanic Applied Sciences Inc + OUI:549B12* ID_OUI_FROM_DATABASE=Samsung Electronics OUI:CC7EE7* ID_OUI_FROM_DATABASE=Panasonic AVC Networks Company -OUI:BC99BC* - ID_OUI_FROM_DATABASE=FonSee Technology Inc. - -OUI:986022* - ID_OUI_FROM_DATABASE=EMW Co., Ltd. - -OUI:80B32A* - ID_OUI_FROM_DATABASE=Alstom Grid +OUI:58E476* + ID_OUI_FROM_DATABASE=CENTRON COMMUNICATIONS TECHNOLOGIES FUJIAN CO.,LTD -OUI:803457* - ID_OUI_FROM_DATABASE=OT Systems Limited +OUI:B435F7* + ID_OUI_FROM_DATABASE=Zhejiang Pearmain Electronics Co.ltd. -OUI:B83D4E* - ID_OUI_FROM_DATABASE=Shenzhen Cultraview Digital Technology Co.,Ltd Shanghai Branch +OUI:346F92* + ID_OUI_FROM_DATABASE=White Rodgers Division -OUI:CCF3A5* - ID_OUI_FROM_DATABASE=Chi Mei Communication Systems, Inc +OUI:8CDB25* + ID_OUI_FROM_DATABASE=ESG Solutions -OUI:143E60* - ID_OUI_FROM_DATABASE=Alcatel-Lucent +OUI:641A22* + ID_OUI_FROM_DATABASE=Heliospectra AB -OUI:C4242E* - ID_OUI_FROM_DATABASE=Galvanic Applied Sciences Inc +OUI:BC20BA* + ID_OUI_FROM_DATABASE=Inspur (Shandong) Electronic Information Co., Ltd -OUI:6400F1* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc +OUI:249442* + ID_OUI_FROM_DATABASE=OPEN ROAD SOLUTIONS , INC. -OUI:04C5A4* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc +OUI:E0F379* + ID_OUI_FROM_DATABASE=Vaddio -OUI:3CA72B* - ID_OUI_FROM_DATABASE=MRV Communications (Networks) LTD +OUI:B09AE2* + ID_OUI_FROM_DATABASE=STEMMER IMAGING GmbH -OUI:EC55F9* - ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. +OUI:E441E6* + ID_OUI_FROM_DATABASE=Ottec Technology GmbH -OUI:F4D9FB* - ID_OUI_FROM_DATABASE=Samsung Electronics CO., LTD +OUI:10E2D5* + ID_OUI_FROM_DATABASE=Qi Hardware Inc. -OUI:584C19* - ID_OUI_FROM_DATABASE=Chongqing Guohong Technology Development Company Limited +OUI:7CDA84* + ID_OUI_FROM_DATABASE=Dongnian Networks Inc. -OUI:D0A311* - ID_OUI_FROM_DATABASE=Neuberger Gebäudeautomation GmbH +OUI:A036FA* + ID_OUI_FROM_DATABASE=Ettus Research LLC -OUI:3C5A37* - ID_OUI_FROM_DATABASE=Samsung Electronics +OUI:EC836C* + ID_OUI_FROM_DATABASE=RM Tech Co., Ltd. -OUI:10A13B* - ID_OUI_FROM_DATABASE=FUJIKURA RUBBER LTD. +OUI:BC71C1* + ID_OUI_FROM_DATABASE=XTrillion, Inc. -OUI:F4E142* - ID_OUI_FROM_DATABASE=Delta Elektronika BV +OUI:0C469D* + ID_OUI_FROM_DATABASE=MS Sedco -OUI:F00248* - ID_OUI_FROM_DATABASE=SmarteBuilding +OUI:E0E8E8* + ID_OUI_FROM_DATABASE=Olive Telecommunication Pvt. Ltd -OUI:2CDD0C* - ID_OUI_FROM_DATABASE=Discovergy GmbH +OUI:0C3C65* + ID_OUI_FROM_DATABASE=Dome Imaging Inc OUI:40B2C8* ID_OUI_FROM_DATABASE=Nortel Networks @@ -35252,68 +36428,26 @@ OUI:088DC8* OUI:D491AF* ID_OUI_FROM_DATABASE=Electroacustica General Iberica, S.A. -OUI:1CDF0F* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -OUI:34DF2A* - ID_OUI_FROM_DATABASE=Fujikon Industrial Co.,Limited - -OUI:C88447* - ID_OUI_FROM_DATABASE=Beautiful Enterprise Co., Ltd - -OUI:C88B47* - ID_OUI_FROM_DATABASE=Nolangroup S.P.A con Socio Unico - -OUI:24BA30* - ID_OUI_FROM_DATABASE=Technical Consumer Products, Inc. - -OUI:74D675* - ID_OUI_FROM_DATABASE=WYMA Tecnologia - -OUI:D01CBB* - ID_OUI_FROM_DATABASE=Beijing Ctimes Digital Technology Co., Ltd. - -OUI:9481A4* - ID_OUI_FROM_DATABASE=Azuray Technologies - -OUI:BCE09D* - ID_OUI_FROM_DATABASE=Eoslink - -OUI:346F92* - ID_OUI_FROM_DATABASE=White Rodgers Division - -OUI:8CDB25* - ID_OUI_FROM_DATABASE=ESG Solutions - -OUI:641A22* - ID_OUI_FROM_DATABASE=Heliospectra AB - -OUI:30142D* - ID_OUI_FROM_DATABASE=Piciorgros GmbH - -OUI:E441E6* - ID_OUI_FROM_DATABASE=Ottec Technology GmbH - -OUI:10E2D5* - ID_OUI_FROM_DATABASE=Qi Hardware Inc. +OUI:CCF67A* + ID_OUI_FROM_DATABASE=Ayecka Communication Systems LTD -OUI:7CDA84* - ID_OUI_FROM_DATABASE=Dongnian Networks Inc. +OUI:00BB8E* + ID_OUI_FROM_DATABASE=HME Co., Ltd. -OUI:A036FA* - ID_OUI_FROM_DATABASE=Ettus Research LLC +OUI:C0A26D* + ID_OUI_FROM_DATABASE=Abbott Point of Care -OUI:EC836C* - ID_OUI_FROM_DATABASE=RM Tech Co., Ltd. +OUI:205B2A* + ID_OUI_FROM_DATABASE=Private -OUI:C0C520* - ID_OUI_FROM_DATABASE=Ruckus Wireless +OUI:18B430* + ID_OUI_FROM_DATABASE=Nest Labs Inc. -OUI:6083B2* - ID_OUI_FROM_DATABASE=GkWare e.K. +OUI:F8769B* + ID_OUI_FROM_DATABASE=Neopis Co., Ltd. -OUI:80D019* - ID_OUI_FROM_DATABASE=Embed, Inc +OUI:08E672* + ID_OUI_FROM_DATABASE=JEBSEE ELECTRONICS CO.,LTD. OUI:D41296* ID_OUI_FROM_DATABASE=Anobit Technologies Ltd. @@ -35333,17 +36467,17 @@ OUI:649B24* OUI:0475F5* ID_OUI_FROM_DATABASE=CSST -OUI:BC20BA* - ID_OUI_FROM_DATABASE=Inspur (Shandong) Electronic Information Co., Ltd +OUI:10A13B* + ID_OUI_FROM_DATABASE=FUJIKURA RUBBER LTD. -OUI:249442* - ID_OUI_FROM_DATABASE=OPEN ROAD SOLUTIONS , INC. +OUI:F4E142* + ID_OUI_FROM_DATABASE=Delta Elektronika BV -OUI:E0F379* - ID_OUI_FROM_DATABASE=Vaddio +OUI:F00248* + ID_OUI_FROM_DATABASE=SmarteBuilding -OUI:B09AE2* - ID_OUI_FROM_DATABASE=STEMMER IMAGING GmbH +OUI:2CDD0C* + ID_OUI_FROM_DATABASE=Discovergy GmbH OUI:CCD811* ID_OUI_FROM_DATABASE=Aiconn Technology Corporation @@ -35363,8 +36497,14 @@ OUI:44599F* OUI:3C2F3A* ID_OUI_FROM_DATABASE=SFORZATO Corp. -OUI:EC9233* - ID_OUI_FROM_DATABASE=Eddyfi NDT Inc +OUI:C0C520* + ID_OUI_FROM_DATABASE=Ruckus Wireless + +OUI:6083B2* + ID_OUI_FROM_DATABASE=GkWare e.K. + +OUI:80D019* + ID_OUI_FROM_DATABASE=Embed, Inc OUI:ECE90B* ID_OUI_FROM_DATABASE=SISTEMA SOLUCOES ELETRONICAS LTDA - EASYTECH @@ -35393,17 +36533,8 @@ OUI:6C33A9* OUI:08B7EC* ID_OUI_FROM_DATABASE=Wireless Seismic -OUI:BC71C1* - ID_OUI_FROM_DATABASE=XTrillion, Inc. - -OUI:0C469D* - ID_OUI_FROM_DATABASE=MS Sedco - -OUI:E0E8E8* - ID_OUI_FROM_DATABASE=Olive Telecommunication Pvt. Ltd - -OUI:0C3C65* - ID_OUI_FROM_DATABASE=Dome Imaging Inc +OUI:30142D* + ID_OUI_FROM_DATABASE=Piciorgros GmbH OUI:942053* ID_OUI_FROM_DATABASE=Nokia Corporation @@ -35420,32 +36551,23 @@ OUI:2CB0DF* OUI:5CF3FC* ID_OUI_FROM_DATABASE=IBM Corp -OUI:D43D67* - ID_OUI_FROM_DATABASE=Carma Industries Inc. - -OUI:00BD27* - ID_OUI_FROM_DATABASE=Exar Corp. +OUI:D01CBB* + ID_OUI_FROM_DATABASE=Beijing Ctimes Digital Technology Co., Ltd. -OUI:C8A729* - ID_OUI_FROM_DATABASE=SYStronics Co., Ltd. +OUI:9481A4* + ID_OUI_FROM_DATABASE=Azuray Technologies -OUI:6C9CE9* - ID_OUI_FROM_DATABASE=Nimble Storage +OUI:BCE09D* + ID_OUI_FROM_DATABASE=Eoslink -OUI:700258* - ID_OUI_FROM_DATABASE=01DB-METRAVIB +OUI:D0A311* + ID_OUI_FROM_DATABASE=Neuberger Gebäudeautomation GmbH -OUI:D4E8B2* +OUI:3C5A37* ID_OUI_FROM_DATABASE=Samsung Electronics -OUI:20FDF1* - ID_OUI_FROM_DATABASE=3COM EUROPE LTD - -OUI:389592* - ID_OUI_FROM_DATABASE=Beijing Tendyron Corporation - -OUI:705EAA* - ID_OUI_FROM_DATABASE=Action Target, Inc. +OUI:EC9233* + ID_OUI_FROM_DATABASE=Eddyfi NDT Inc OUI:0C8D98* ID_OUI_FROM_DATABASE=TOP EIGHT IND CORP @@ -35453,17 +36575,11 @@ OUI:0C8D98* OUI:30493B* ID_OUI_FROM_DATABASE=Nanjing Z-Com Wireless Co.,Ltd -OUI:68DB96* - ID_OUI_FROM_DATABASE=OPWILL Technologies CO .,LTD - -OUI:00F860* - ID_OUI_FROM_DATABASE=PT. Panggung Electric Citrabuana - -OUI:FCEDB9* - ID_OUI_FROM_DATABASE=Arrayent +OUI:785712* + ID_OUI_FROM_DATABASE=Mobile Integration Workgroup -OUI:44ED57* - ID_OUI_FROM_DATABASE=Longicorn, inc. +OUI:380A0A* + ID_OUI_FROM_DATABASE=Sky-City Communication and Electronics Limited Company OUI:38521A* ID_OUI_FROM_DATABASE=Alcatel-Lucent 7705 @@ -35477,11 +36593,20 @@ OUI:641E81* OUI:88ACC1* ID_OUI_FROM_DATABASE=Generiton Co., Ltd. -OUI:785712* - ID_OUI_FROM_DATABASE=Mobile Integration Workgroup +OUI:700258* + ID_OUI_FROM_DATABASE=01DB-METRAVIB -OUI:380A0A* - ID_OUI_FROM_DATABASE=Sky-City Communication and Electronics Limited Company +OUI:D4E8B2* + ID_OUI_FROM_DATABASE=Samsung Electronics + +OUI:20FDF1* + ID_OUI_FROM_DATABASE=3COM EUROPE LTD + +OUI:389592* + ID_OUI_FROM_DATABASE=Beijing Tendyron Corporation + +OUI:705EAA* + ID_OUI_FROM_DATABASE=Action Target, Inc. OUI:141BBD* ID_OUI_FROM_DATABASE=Volex Inc. @@ -35513,47 +36638,65 @@ OUI:988EDD* OUI:98FC11* ID_OUI_FROM_DATABASE=Cisco-Linksys, LLC -OUI:180C77* - ID_OUI_FROM_DATABASE=Westinghouse Electric Company, LLC - -OUI:ACA016* +OUI:A40CC3* ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:78E400* +OUI:34E0D7* + ID_OUI_FROM_DATABASE=DONGGUAN QISHENG ELECTRONICS INDUSTRIAL CO., LTD + +OUI:40520D* + ID_OUI_FROM_DATABASE=Pico Technology + +OUI:8C7CB5* ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. -OUI:E4AD7D* - ID_OUI_FROM_DATABASE=SCL Elements +OUI:543131* + ID_OUI_FROM_DATABASE=Raster Vision Ltd -OUI:40D40E* - ID_OUI_FROM_DATABASE=Biodata Ltd +OUI:90E0F0* + ID_OUI_FROM_DATABASE=IEEE 1722a Working Group -OUI:7C051E* - ID_OUI_FROM_DATABASE=RAFAEL LTD. +OUI:1C6F65* + ID_OUI_FROM_DATABASE=GIGA-BYTE TECHNOLOGY CO.,LTD. -OUI:58570D* - ID_OUI_FROM_DATABASE=Danfoss Solar Inverters +OUI:F0AD4E* + ID_OUI_FROM_DATABASE=Globalscale Technologies, Inc. -OUI:E47CF9* - ID_OUI_FROM_DATABASE=Samsung Electronics Co., LTD +OUI:903D5A* + ID_OUI_FROM_DATABASE=Shenzhen Wision Technology Holding Limited -OUI:0C826A* - ID_OUI_FROM_DATABASE=Wuhan Huagong Genuine Optics Technology Co., Ltd +OUI:609AA4* + ID_OUI_FROM_DATABASE=GVI SECURITY INC. -OUI:5C0E8B* - ID_OUI_FROM_DATABASE=Zebra Technologies Inc +OUI:F0ED1E* + ID_OUI_FROM_DATABASE=Bilkon Bilgisayar Kontrollu Cih. Im.Ltd. -OUI:38C7BA* - ID_OUI_FROM_DATABASE=CS Services Co.,Ltd. +OUI:206A8A* + ID_OUI_FROM_DATABASE=Wistron InfoComm Manufacturing(Kunshan)Co.,Ltd. -OUI:70D57E* - ID_OUI_FROM_DATABASE=Scalar Corporation +OUI:F80F41* + ID_OUI_FROM_DATABASE=Wistron InfoComm(ZhongShan) Corporation -OUI:7866AE* - ID_OUI_FROM_DATABASE=ZTEC Instruments, Inc. +OUI:1CDF0F* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:24AF4A* - ID_OUI_FROM_DATABASE=Alcatel-Lucent-IPD +OUI:34DF2A* + ID_OUI_FROM_DATABASE=Fujikon Industrial Co.,Limited + +OUI:C88447* + ID_OUI_FROM_DATABASE=Beautiful Enterprise Co., Ltd + +OUI:C88B47* + ID_OUI_FROM_DATABASE=Nolangroup S.P.A con Socio Unico + +OUI:24BA30* + ID_OUI_FROM_DATABASE=Technical Consumer Products, Inc. + +OUI:74D675* + ID_OUI_FROM_DATABASE=WYMA Tecnologia + +OUI:D43D67* + ID_OUI_FROM_DATABASE=Carma Industries Inc. OUI:78818F* ID_OUI_FROM_DATABASE=Server Racks Australia Pty Ltd @@ -35579,75 +36722,15 @@ OUI:68E41F* OUI:84F64C* ID_OUI_FROM_DATABASE=Cross Point BV -OUI:206A8A* - ID_OUI_FROM_DATABASE=Wistron InfoComm Manufacturing(Kunshan)Co.,Ltd. - -OUI:F80F41* - ID_OUI_FROM_DATABASE=Wistron InfoComm(ZhongShan) Corporation - -OUI:90513F* - ID_OUI_FROM_DATABASE=Elettronica Santerno SpA - -OUI:7CA29B* - ID_OUI_FROM_DATABASE=D.SignT GmbH & Co. KG - -OUI:34AAEE* - ID_OUI_FROM_DATABASE=Mikrovisatos Servisas UAB +OUI:180C77* + ID_OUI_FROM_DATABASE=Westinghouse Electric Company, LLC -OUI:A40CC3* +OUI:ACA016* ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:34E0D7* - ID_OUI_FROM_DATABASE=DONGGUAN QISHENG ELECTRONICS INDUSTRIAL CO., LTD - -OUI:40520D* - ID_OUI_FROM_DATABASE=Pico Technology - -OUI:8C7CB5* +OUI:78E400* ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. -OUI:543131* - ID_OUI_FROM_DATABASE=Raster Vision Ltd - -OUI:90E0F0* - ID_OUI_FROM_DATABASE=IEEE 1722a Working Group - -OUI:1C6F65* - ID_OUI_FROM_DATABASE=GIGA-BYTE TECHNOLOGY CO.,LTD. - -OUI:F0AD4E* - ID_OUI_FROM_DATABASE=Globalscale Technologies, Inc. - -OUI:903D5A* - ID_OUI_FROM_DATABASE=Shenzhen Wision Technology Holding Limited - -OUI:609AA4* - ID_OUI_FROM_DATABASE=GVI SECURITY INC. - -OUI:F0ED1E* - ID_OUI_FROM_DATABASE=Bilkon Bilgisayar Kontrollu Cih. Im.Ltd. - -OUI:24A937* - ID_OUI_FROM_DATABASE=PURE Storage - -OUI:348302* - ID_OUI_FROM_DATABASE=iFORCOM Co., Ltd - -OUI:949C55* - ID_OUI_FROM_DATABASE=Alta Data Technologies - -OUI:389F83* - ID_OUI_FROM_DATABASE=OTN Systems N.V. - -OUI:8C541D* - ID_OUI_FROM_DATABASE=LGE - -OUI:601283* - ID_OUI_FROM_DATABASE=Soluciones Tecnologicas para la Salud y el Bienestar SA - -OUI:003A9D* - ID_OUI_FROM_DATABASE=NEC Platforms, Ltd. - OUI:905446* ID_OUI_FROM_DATABASE=TES ELECTRONIC SOLUTIONS @@ -35666,11 +36749,41 @@ OUI:A4BE61* OUI:E06290* ID_OUI_FROM_DATABASE=Jinan Jovision Science & Technology Co., Ltd. -OUI:A01859* - ID_OUI_FROM_DATABASE=Shenzhen Yidashi Electronics Co Ltd +OUI:68DB96* + ID_OUI_FROM_DATABASE=OPWILL Technologies CO .,LTD -OUI:042234* - ID_OUI_FROM_DATABASE=Wireless Standard Extensions +OUI:00F860* + ID_OUI_FROM_DATABASE=PT. Panggung Electric Citrabuana + +OUI:FCEDB9* + ID_OUI_FROM_DATABASE=Arrayent + +OUI:44ED57* + ID_OUI_FROM_DATABASE=Longicorn, inc. + +OUI:90513F* + ID_OUI_FROM_DATABASE=Elettronica Santerno SpA + +OUI:7CA29B* + ID_OUI_FROM_DATABASE=D.SignT GmbH & Co. KG + +OUI:34AAEE* + ID_OUI_FROM_DATABASE=Mikrovisatos Servisas UAB + +OUI:7866AE* + ID_OUI_FROM_DATABASE=ZTEC Instruments, Inc. + +OUI:24AF4A* + ID_OUI_FROM_DATABASE=Alcatel-Lucent-IPD + +OUI:00BD27* + ID_OUI_FROM_DATABASE=Exar Corp. + +OUI:C8A729* + ID_OUI_FROM_DATABASE=SYStronics Co., Ltd. + +OUI:6C9CE9* + ID_OUI_FROM_DATABASE=Nimble Storage OUI:7812B8* ID_OUI_FROM_DATABASE=ORANTEK LIMITED @@ -35702,6 +36815,72 @@ OUI:CC69B0* OUI:2872C5* ID_OUI_FROM_DATABASE=Smartmatic Corp +OUI:E4AD7D* + ID_OUI_FROM_DATABASE=SCL Elements + +OUI:40D40E* + ID_OUI_FROM_DATABASE=Biodata Ltd + +OUI:7C051E* + ID_OUI_FROM_DATABASE=RAFAEL LTD. + +OUI:58570D* + ID_OUI_FROM_DATABASE=Danfoss Solar Inverters + +OUI:E47CF9* + ID_OUI_FROM_DATABASE=Samsung Electronics Co., LTD + +OUI:0C826A* + ID_OUI_FROM_DATABASE=Wuhan Huagong Genuine Optics Technology Co., Ltd + +OUI:5C0E8B* + ID_OUI_FROM_DATABASE=Zebra Technologies Inc + +OUI:38C7BA* + ID_OUI_FROM_DATABASE=CS Services Co.,Ltd. + +OUI:70D57E* + ID_OUI_FROM_DATABASE=Scalar Corporation + +OUI:24A937* + ID_OUI_FROM_DATABASE=PURE Storage + +OUI:348302* + ID_OUI_FROM_DATABASE=iFORCOM Co., Ltd + +OUI:949C55* + ID_OUI_FROM_DATABASE=Alta Data Technologies + +OUI:70D5E7* + ID_OUI_FROM_DATABASE=Wellcore Corporation + +OUI:3CF72A* + ID_OUI_FROM_DATABASE=Nokia Corporation + +OUI:FCE192* + ID_OUI_FROM_DATABASE=Sichuan Jinwangtong Electronic Science&Technology Co,.Ltd + +OUI:F8912A* + ID_OUI_FROM_DATABASE=GLP German Light Products GmbH + +OUI:E02630* + ID_OUI_FROM_DATABASE=Intrigue Technologies, Inc. + +OUI:8C9236* + ID_OUI_FROM_DATABASE=Aus.Linx Technology Co., Ltd. + +OUI:F445ED* + ID_OUI_FROM_DATABASE=Portable Innovation Technology Ltd. + +OUI:6C32DE* + ID_OUI_FROM_DATABASE=Indieon Technologies Pvt. Ltd. + +OUI:FCCF62* + ID_OUI_FROM_DATABASE=IBM Corp + +OUI:D8E72B* + ID_OUI_FROM_DATABASE=NetScout Systems, Inc. + OUI:B8A3E0* ID_OUI_FROM_DATABASE=BenRui Technology Co.,Ltd @@ -35729,17 +36908,23 @@ OUI:506313* OUI:A8995C* ID_OUI_FROM_DATABASE=aizo ag -OUI:F445ED* - ID_OUI_FROM_DATABASE=Portable Innovation Technology Ltd. +OUI:4012E4* + ID_OUI_FROM_DATABASE=Compass-EOS -OUI:6C32DE* - ID_OUI_FROM_DATABASE=Indieon Technologies Pvt. Ltd. +OUI:F8DC7A* + ID_OUI_FROM_DATABASE=Variscite LTD -OUI:FCCF62* - ID_OUI_FROM_DATABASE=IBM Corp +OUI:EC4476* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:D8E72B* - ID_OUI_FROM_DATABASE=NetScout Systems, Inc. +OUI:9CEBE8* + ID_OUI_FROM_DATABASE=BizLink (Kunshan) Co.,Ltd + +OUI:A01859* + ID_OUI_FROM_DATABASE=Shenzhen Yidashi Electronics Co Ltd + +OUI:042234* + ID_OUI_FROM_DATABASE=Wireless Standard Extensions OUI:B09074* ID_OUI_FROM_DATABASE=Fulan Electronics Limited @@ -35759,35 +36944,29 @@ OUI:8C736E* OUI:30EFD1* ID_OUI_FROM_DATABASE=Alstom Strongwish (Shenzhen) Co., Ltd. -OUI:C835B8* - ID_OUI_FROM_DATABASE=Ericsson, EAB/RWI/K - -OUI:243C20* - ID_OUI_FROM_DATABASE=Dynamode Group - -OUI:70D5E7* - ID_OUI_FROM_DATABASE=Wellcore Corporation +OUI:7C2CF3* + ID_OUI_FROM_DATABASE=Secure Electrans Ltd -OUI:3CF72A* - ID_OUI_FROM_DATABASE=Nokia Corporation +OUI:304174* + ID_OUI_FROM_DATABASE=ALTEC LANSING LLC -OUI:FCE192* - ID_OUI_FROM_DATABASE=Sichuan Jinwangtong Electronic Science&Technology Co,.Ltd +OUI:7830E1* + ID_OUI_FROM_DATABASE=UltraClenz, LLC -OUI:F8912A* - ID_OUI_FROM_DATABASE=GLP German Light Products GmbH +OUI:FCFBFB* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:E02630* - ID_OUI_FROM_DATABASE=Intrigue Technologies, Inc. +OUI:1C129D* + ID_OUI_FROM_DATABASE=IEEE PES PSRC/SUB -OUI:8C9236* - ID_OUI_FROM_DATABASE=Aus.Linx Technology Co., Ltd. +OUI:B40832* + ID_OUI_FROM_DATABASE=TC Communications -OUI:4012E4* - ID_OUI_FROM_DATABASE=Compass-EOS +OUI:B42CBE* + ID_OUI_FROM_DATABASE=Direct Payment Solutions Limited -OUI:F8DC7A* - ID_OUI_FROM_DATABASE=Variscite LTD +OUI:F47626* + ID_OUI_FROM_DATABASE=Viltechmeda UAB OUI:003A9C* ID_OUI_FROM_DATABASE=Cisco Systems, Inc @@ -35807,17 +36986,50 @@ OUI:0494A1* OUI:2C3427* ID_OUI_FROM_DATABASE=ERCO & GENER -OUI:B42CBE* - ID_OUI_FROM_DATABASE=Direct Payment Solutions Limited +OUI:389F83* + ID_OUI_FROM_DATABASE=OTN Systems N.V. -OUI:F47626* - ID_OUI_FROM_DATABASE=Viltechmeda UAB +OUI:8C541D* + ID_OUI_FROM_DATABASE=LGE -OUI:EC4476* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc +OUI:601283* + ID_OUI_FROM_DATABASE=Soluciones Tecnologicas para la Salud y el Bienestar SA -OUI:9CEBE8* - ID_OUI_FROM_DATABASE=BizLink (Kunshan) Co.,Ltd +OUI:003A9D* + ID_OUI_FROM_DATABASE=NEC Platforms, Ltd. + +OUI:C835B8* + ID_OUI_FROM_DATABASE=Ericsson, EAB/RWI/K + +OUI:243C20* + ID_OUI_FROM_DATABASE=Dynamode Group + +OUI:E09153* + ID_OUI_FROM_DATABASE=XAVi Technologies Corp. + +OUI:CC0080* + ID_OUI_FROM_DATABASE=BETTINI SRL + +OUI:644BC3* + ID_OUI_FROM_DATABASE=Shanghai WOASiS Telecommunications Ltd., Co. + +OUI:0CE709* + ID_OUI_FROM_DATABASE=Fox Crypto B.V. + +OUI:002720* + ID_OUI_FROM_DATABASE=NEW-SOL COM + +OUI:00271C* + ID_OUI_FROM_DATABASE=MERCURY CORPORATION + +OUI:002712* + ID_OUI_FROM_DATABASE=MaxVision LLC + +OUI:00270F* + ID_OUI_FROM_DATABASE=Envisionnovation Inc + +OUI:002703* + ID_OUI_FROM_DATABASE=Testech Electronics Pte Ltd OUI:88ED1C* ID_OUI_FROM_DATABASE=Cudo Communication Co., Ltd. @@ -35846,47 +37058,68 @@ OUI:C87E75* OUI:889821* ID_OUI_FROM_DATABASE=TERAON -OUI:CC5076* - ID_OUI_FROM_DATABASE=Ocom Communications, Inc. +OUI:0026FD* + ID_OUI_FROM_DATABASE=Interactive Intelligence -OUI:705812* - ID_OUI_FROM_DATABASE=Panasonic AVC Networks Company +OUI:0026F6* + ID_OUI_FROM_DATABASE=Military Communication Institute -OUI:7C2CF3* - ID_OUI_FROM_DATABASE=Secure Electrans Ltd +OUI:0026F0* + ID_OUI_FROM_DATABASE=cTrixs International GmbH. -OUI:304174* - ID_OUI_FROM_DATABASE=ALTEC LANSING LLC +OUI:0026EA* + ID_OUI_FROM_DATABASE=Cheerchip Electronic Technology (ShangHai) Co., Ltd. -OUI:7830E1* - ID_OUI_FROM_DATABASE=UltraClenz, LLC +OUI:0026E3* + ID_OUI_FROM_DATABASE=DTI -OUI:FCFBFB* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc +OUI:0026DD* + ID_OUI_FROM_DATABASE=Fival Science & Technology Co.,Ltd. -OUI:1C129D* - ID_OUI_FROM_DATABASE=IEEE PES PSRC/SUB +OUI:0026DE* + ID_OUI_FROM_DATABASE=FDI MATELEC -OUI:B40832* - ID_OUI_FROM_DATABASE=TC Communications +OUI:0026D7* + ID_OUI_FROM_DATABASE=KM Electornic Technology Co., Ltd. -OUI:002720* - ID_OUI_FROM_DATABASE=NEW-SOL COM +OUI:0026D1* + ID_OUI_FROM_DATABASE=S Squared Innovations Inc. -OUI:00271C* - ID_OUI_FROM_DATABASE=MERCURY CORPORATION +OUI:54B620* + ID_OUI_FROM_DATABASE=SUHDOL E&C Co.Ltd. -OUI:002712* - ID_OUI_FROM_DATABASE=MaxVision LLC +OUI:C4AAA1* + ID_OUI_FROM_DATABASE=SUMMIT DEVELOPMENT, spol.s r.o. -OUI:00270F* - ID_OUI_FROM_DATABASE=Envisionnovation Inc +OUI:78C40E* + ID_OUI_FROM_DATABASE=H&D Wireless -OUI:0026D7* - ID_OUI_FROM_DATABASE=KM Electornic Technology Co., Ltd. +OUI:9C5B96* + ID_OUI_FROM_DATABASE=NMR Corporation -OUI:0026D1* - ID_OUI_FROM_DATABASE=S Squared Innovations Inc. +OUI:E4FFDD* + ID_OUI_FROM_DATABASE=ELECTRON INDIA + +OUI:6C8CDB* + ID_OUI_FROM_DATABASE=Otus Technologies Ltd + +OUI:B4417A* + ID_OUI_FROM_DATABASE=ShenZhen Gongjin Electronics Co.,Ltd + +OUI:401597* + ID_OUI_FROM_DATABASE=Protect America, Inc. + +OUI:F852DF* + ID_OUI_FROM_DATABASE=VNL Europe AB + +OUI:1CF061* + ID_OUI_FROM_DATABASE=SCAPS GmbH + +OUI:A893E6* + ID_OUI_FROM_DATABASE=JIANGXI JINGGANGSHAN CKING COMMUNICATION TECHNOLOGY CO.,LTD + +OUI:7825AD* + ID_OUI_FROM_DATABASE=SAMSUNG ELECTRONICS CO., LTD. OUI:0026CB* ID_OUI_FROM_DATABASE=Cisco Systems, Inc @@ -35912,30 +37145,6 @@ OUI:0026A8* OUI:0026A7* ID_OUI_FROM_DATABASE=CONNECT SRL -OUI:0026A1* - ID_OUI_FROM_DATABASE=Megger - -OUI:0026A2* - ID_OUI_FROM_DATABASE=Instrumentation Technology Systems - -OUI:00269B* - ID_OUI_FROM_DATABASE=SOKRAT Ltd. - -OUI:002695* - ID_OUI_FROM_DATABASE=ZT Group Int'l Inc - -OUI:00268F* - ID_OUI_FROM_DATABASE=MTA SpA - -OUI:6C8CDB* - ID_OUI_FROM_DATABASE=Otus Technologies Ltd - -OUI:B4417A* - ID_OUI_FROM_DATABASE=ShenZhen Gongjin Electronics Co.,Ltd - -OUI:401597* - ID_OUI_FROM_DATABASE=Protect America, Inc. - OUI:60391F* ID_OUI_FROM_DATABASE=ABB Ltd @@ -35960,98 +37169,41 @@ OUI:10BAA5* OUI:586ED6* ID_OUI_FROM_DATABASE=Private -OUI:E09153* - ID_OUI_FROM_DATABASE=XAVi Technologies Corp. - -OUI:CC0080* - ID_OUI_FROM_DATABASE=BETTINI SRL - -OUI:644BC3* - ID_OUI_FROM_DATABASE=Shanghai WOASiS Telecommunications Ltd., Co. - -OUI:0CE709* - ID_OUI_FROM_DATABASE=Fox Crypto B.V. - -OUI:002703* - ID_OUI_FROM_DATABASE=Testech Electronics Pte Ltd - -OUI:0026FD* - ID_OUI_FROM_DATABASE=Interactive Intelligence - -OUI:0026F6* - ID_OUI_FROM_DATABASE=Military Communication Institute - -OUI:0026F0* - ID_OUI_FROM_DATABASE=cTrixs International GmbH. - -OUI:0026EA* - ID_OUI_FROM_DATABASE=Cheerchip Electronic Technology (ShangHai) Co., Ltd. - -OUI:0026E3* - ID_OUI_FROM_DATABASE=DTI - -OUI:0026DD* - ID_OUI_FROM_DATABASE=Fival Science & Technology Co.,Ltd. - -OUI:0026DE* - ID_OUI_FROM_DATABASE=FDI MATELEC - -OUI:7825AD* - ID_OUI_FROM_DATABASE=SAMSUNG ELECTRONICS CO., LTD. - -OUI:54B620* - ID_OUI_FROM_DATABASE=SUHDOL E&C Co.Ltd. - -OUI:C4AAA1* - ID_OUI_FROM_DATABASE=SUMMIT DEVELOPMENT, spol.s r.o. - -OUI:78C40E* - ID_OUI_FROM_DATABASE=H&D Wireless - -OUI:9C5B96* - ID_OUI_FROM_DATABASE=NMR Corporation - -OUI:E4FFDD* - ID_OUI_FROM_DATABASE=ELECTRON INDIA - -OUI:F852DF* - ID_OUI_FROM_DATABASE=VNL Europe AB - -OUI:1CF061* - ID_OUI_FROM_DATABASE=SCAPS GmbH +OUI:CC5076* + ID_OUI_FROM_DATABASE=Ocom Communications, Inc. -OUI:A893E6* - ID_OUI_FROM_DATABASE=JIANGXI JINGGANGSHAN CKING COMMUNICATION TECHNOLOGY CO.,LTD +OUI:705812* + ID_OUI_FROM_DATABASE=Panasonic AVC Networks Company -OUI:00267C* - ID_OUI_FROM_DATABASE=Metz-Werke GmbH & Co KG +OUI:002648* + ID_OUI_FROM_DATABASE=Emitech Corp. -OUI:002676* - ID_OUI_FROM_DATABASE=COMMidt AS +OUI:002644* + ID_OUI_FROM_DATABASE=Thomson Telecom Belgium -OUI:00266F* - ID_OUI_FROM_DATABASE=Coordiwise Technology Corp. +OUI:00263E* + ID_OUI_FROM_DATABASE=Trapeze Networks -OUI:002670* - ID_OUI_FROM_DATABASE=Cinch Connectors +OUI:002638* + ID_OUI_FROM_DATABASE=Xia Men Joyatech Co., Ltd. -OUI:002663* - ID_OUI_FROM_DATABASE=Shenzhen Huitaiwei Tech. Ltd, co. +OUI:00263D* + ID_OUI_FROM_DATABASE=MIA Corporation -OUI:00265D* - ID_OUI_FROM_DATABASE=Samsung Electronics +OUI:002631* + ID_OUI_FROM_DATABASE=COMMTACT LTD -OUI:0025CD* - ID_OUI_FROM_DATABASE=Skylane Optics +OUI:00262B* + ID_OUI_FROM_DATABASE=Wongs Electronics Co. Ltd. -OUI:0025C8* - ID_OUI_FROM_DATABASE=S-Access GmbH +OUI:002625* + ID_OUI_FROM_DATABASE=MediaSputnik -OUI:0025C7* - ID_OUI_FROM_DATABASE=altek Corporation +OUI:00261E* + ID_OUI_FROM_DATABASE=QINGBANG ELEC(SZ) CO., LTD -OUI:0025C1* - ID_OUI_FROM_DATABASE=Nawoo Korea Corp. +OUI:002619* + ID_OUI_FROM_DATABASE=FRC OUI:0025BA* ID_OUI_FROM_DATABASE=Alcatel-Lucent IPD @@ -36068,36 +37220,6 @@ OUI:0025A8* OUI:0025A7* ID_OUI_FROM_DATABASE=Comverge, Inc. -OUI:00262B* - ID_OUI_FROM_DATABASE=Wongs Electronics Co. Ltd. - -OUI:002625* - ID_OUI_FROM_DATABASE=MediaSputnik - -OUI:00261E* - ID_OUI_FROM_DATABASE=QINGBANG ELEC(SZ) CO., LTD - -OUI:002619* - ID_OUI_FROM_DATABASE=FRC - -OUI:002612* - ID_OUI_FROM_DATABASE=Space Exploration Technologies - -OUI:00260B* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -OUI:00260C* - ID_OUI_FROM_DATABASE=Dataram - -OUI:0025FF* - ID_OUI_FROM_DATABASE=CreNova Multimedia Co., Ltd - -OUI:002606* - ID_OUI_FROM_DATABASE=RAUMFELD GmbH - -OUI:0025F9* - ID_OUI_FROM_DATABASE=GMK electronic design GmbH - OUI:0025A2* ID_OUI_FROM_DATABASE=Alta Definicion LINCEO S.L. @@ -36110,50 +37232,44 @@ OUI:00259B* OUI:002595* ID_OUI_FROM_DATABASE=Northwest Signal Supply, Inc -OUI:00258F* - ID_OUI_FROM_DATABASE=Trident Microsystems, Inc. - -OUI:00258B* - ID_OUI_FROM_DATABASE=Mellanox Technologies Ltd - -OUI:002585* - ID_OUI_FROM_DATABASE=KOKUYO S&T Co., Ltd. +OUI:002542* + ID_OUI_FROM_DATABASE=Pittasoft -OUI:00257B* - ID_OUI_FROM_DATABASE=STJ ELECTRONICS PVT LTD +OUI:002530* + ID_OUI_FROM_DATABASE=Aetas Systems Inc. -OUI:002574* - ID_OUI_FROM_DATABASE=KUNIMI MEDIA DEVICE Co., Ltd. +OUI:002529* + ID_OUI_FROM_DATABASE=COMELIT GROUP S.P.A -OUI:00264F* - ID_OUI_FROM_DATABASE=Krüger &Gothe GmbH +OUI:002522* + ID_OUI_FROM_DATABASE=ASRock Incorporation -OUI:002648* - ID_OUI_FROM_DATABASE=Emitech Corp. +OUI:00251D* + ID_OUI_FROM_DATABASE=DSA Encore, LLC -OUI:002644* - ID_OUI_FROM_DATABASE=Thomson Telecom Belgium +OUI:002518* + ID_OUI_FROM_DATABASE=Power PLUS Communications AG -OUI:00263E* - ID_OUI_FROM_DATABASE=Trapeze Networks +OUI:002513* + ID_OUI_FROM_DATABASE=CXP DIGITAL BV -OUI:002638* - ID_OUI_FROM_DATABASE=Xia Men Joyatech Co., Ltd. +OUI:0026A1* + ID_OUI_FROM_DATABASE=Megger -OUI:00263D* - ID_OUI_FROM_DATABASE=MIA Corporation +OUI:0026A2* + ID_OUI_FROM_DATABASE=Instrumentation Technology Systems -OUI:002631* - ID_OUI_FROM_DATABASE=COMMTACT LTD +OUI:00269B* + ID_OUI_FROM_DATABASE=SOKRAT Ltd. -OUI:00256F* - ID_OUI_FROM_DATABASE=Dantherm Power +OUI:002695* + ID_OUI_FROM_DATABASE=ZT Group Int'l Inc -OUI:002562* - ID_OUI_FROM_DATABASE=interbro Co. Ltd. +OUI:00268F* + ID_OUI_FROM_DATABASE=MTA SpA -OUI:002561* - ID_OUI_FROM_DATABASE=ProCurve Networking by HP +OUI:00267C* + ID_OUI_FROM_DATABASE=Metz-Werke GmbH & Co KG OUI:00255C* ID_OUI_FROM_DATABASE=NEC Corporation @@ -36167,65 +37283,71 @@ OUI:002555* OUI:00254F* ID_OUI_FROM_DATABASE=ELETTROLAB Srl -OUI:002518* - ID_OUI_FROM_DATABASE=Power PLUS Communications AG +OUI:002549* + ID_OUI_FROM_DATABASE=Jeorich Tech. Co.,Ltd. -OUI:002511* - ID_OUI_FROM_DATABASE=ELITEGROUP COMPUTER SYSTEM CO., LTD. +OUI:002538* + ID_OUI_FROM_DATABASE=Samsung Electronics Co., Ltd., Memory Division -OUI:002513* - ID_OUI_FROM_DATABASE=CXP DIGITAL BV +OUI:002676* + ID_OUI_FROM_DATABASE=COMMidt AS -OUI:00250C* - ID_OUI_FROM_DATABASE=Enertrac +OUI:00266F* + ID_OUI_FROM_DATABASE=Coordiwise Technology Corp. -OUI:002505* - ID_OUI_FROM_DATABASE=eks Engel GmbH & Co. KG +OUI:002670* + ID_OUI_FROM_DATABASE=Cinch Connectors -OUI:0024F9* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc +OUI:002663* + ID_OUI_FROM_DATABASE=Shenzhen Huitaiwei Tech. Ltd, co. -OUI:0024F2* - ID_OUI_FROM_DATABASE=Uniphone Telecommunication Co., Ltd. +OUI:00265D* + ID_OUI_FROM_DATABASE=Samsung Electronics -OUI:0024F4* - ID_OUI_FROM_DATABASE=Kaminario Technologies Ltd. +OUI:00264F* + ID_OUI_FROM_DATABASE=Krüger &Gothe GmbH -OUI:0024ED* - ID_OUI_FROM_DATABASE=YT Elec. Co,.Ltd. +OUI:0025E0* + ID_OUI_FROM_DATABASE=CeedTec Sdn Bhd -OUI:0024E6* - ID_OUI_FROM_DATABASE=In Motion Technology Inc. +OUI:0025DA* + ID_OUI_FROM_DATABASE=Secura Key -OUI:0024E1* - ID_OUI_FROM_DATABASE=Convey Computer Corp. +OUI:0025D9* + ID_OUI_FROM_DATABASE=DataFab Systems Inc. -OUI:0024DF* - ID_OUI_FROM_DATABASE=Digitalbox Europe GmbH +OUI:0025D4* + ID_OUI_FROM_DATABASE=Fortress Technologies -OUI:0024DA* - ID_OUI_FROM_DATABASE=Innovar Systems Limited +OUI:0025CD* + ID_OUI_FROM_DATABASE=Skylane Optics -OUI:002549* - ID_OUI_FROM_DATABASE=Jeorich Tech. Co.,Ltd. +OUI:0025C8* + ID_OUI_FROM_DATABASE=S-Access GmbH -OUI:002538* - ID_OUI_FROM_DATABASE=Samsung Electronics Co., Ltd., Memory Division +OUI:0025C7* + ID_OUI_FROM_DATABASE=altek Corporation -OUI:002542* - ID_OUI_FROM_DATABASE=Pittasoft +OUI:0025C1* + ID_OUI_FROM_DATABASE=Nawoo Korea Corp. -OUI:002530* - ID_OUI_FROM_DATABASE=Aetas Systems Inc. +OUI:002612* + ID_OUI_FROM_DATABASE=Space Exploration Technologies -OUI:002529* - ID_OUI_FROM_DATABASE=COMELIT GROUP S.P.A +OUI:00260B* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:002522* - ID_OUI_FROM_DATABASE=ASRock Incorporation +OUI:00260C* + ID_OUI_FROM_DATABASE=Dataram -OUI:00251D* - ID_OUI_FROM_DATABASE=DSA Encore, LLC +OUI:0025FF* + ID_OUI_FROM_DATABASE=CreNova Multimedia Co., Ltd + +OUI:002606* + ID_OUI_FROM_DATABASE=RAUMFELD GmbH + +OUI:0025F9* + ID_OUI_FROM_DATABASE=GMK electronic design GmbH OUI:0025F5* ID_OUI_FROM_DATABASE=DVS Korea, Co., Ltd @@ -36239,23 +37361,29 @@ OUI:0025EA* OUI:0025E4* ID_OUI_FROM_DATABASE=OMNI-WiFi, LLC -OUI:0025E0* - ID_OUI_FROM_DATABASE=CeedTec Sdn Bhd +OUI:00258F* + ID_OUI_FROM_DATABASE=Trident Microsystems, Inc. -OUI:0025DA* - ID_OUI_FROM_DATABASE=Secura Key +OUI:00258B* + ID_OUI_FROM_DATABASE=Mellanox Technologies Ltd -OUI:0025D9* - ID_OUI_FROM_DATABASE=DataFab Systems Inc. +OUI:002585* + ID_OUI_FROM_DATABASE=KOKUYO S&T Co., Ltd. -OUI:0025D4* - ID_OUI_FROM_DATABASE=Fortress Technologies +OUI:00257B* + ID_OUI_FROM_DATABASE=STJ ELECTRONICS PVT LTD -OUI:002410* - ID_OUI_FROM_DATABASE=NUETEQ Technology,Inc. +OUI:002574* + ID_OUI_FROM_DATABASE=KUNIMI MEDIA DEVICE Co., Ltd. -OUI:002409* - ID_OUI_FROM_DATABASE=The Toro Company +OUI:00256F* + ID_OUI_FROM_DATABASE=Dantherm Power + +OUI:002562* + ID_OUI_FROM_DATABASE=interbro Co. Ltd. + +OUI:002561* + ID_OUI_FROM_DATABASE=ProCurve Networking by HP OUI:0023F7* ID_OUI_FROM_DATABASE=Private @@ -36272,29 +37400,8 @@ OUI:0023EC* OUI:0023E7* ID_OUI_FROM_DATABASE=Hinke A/S -OUI:002387* - ID_OUI_FROM_DATABASE=ThinkFlood, Inc. - -OUI:002381* - ID_OUI_FROM_DATABASE=Lengda Technology(Xiamen) Co.,Ltd. - -OUI:002382* - ID_OUI_FROM_DATABASE=Lih Rong Electronic Enterprise Co., Ltd. - -OUI:00237B* - ID_OUI_FROM_DATABASE=WHDI LLC - -OUI:002372* - ID_OUI_FROM_DATABASE=MORE STAR INDUSTRIAL GROUP LIMITED - -OUI:0024CE* - ID_OUI_FROM_DATABASE=Exeltech Inc - -OUI:0024D3* - ID_OUI_FROM_DATABASE=QUALICA Inc. - -OUI:0024C7* - ID_OUI_FROM_DATABASE=Mobilarm Ltd +OUI:0023E0* + ID_OUI_FROM_DATABASE=INO Therapeutics LLC OUI:0024C2* ID_OUI_FROM_DATABASE=Asumo Co.,Ltd. @@ -36317,39 +37424,6 @@ OUI:00249A* OUI:00249F* ID_OUI_FROM_DATABASE=RIM Testing Services -OUI:002487* - ID_OUI_FROM_DATABASE=Blackboard Inc. - -OUI:002498* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -OUI:002485* - ID_OUI_FROM_DATABASE=ConteXtream Ltd - -OUI:002480* - ID_OUI_FROM_DATABASE=Meteocontrol GmbH - -OUI:002454* - ID_OUI_FROM_DATABASE=Samsung Electronics CO., LTD - -OUI:002448* - ID_OUI_FROM_DATABASE=SpiderCloud Wireless, Inc - -OUI:00244A* - ID_OUI_FROM_DATABASE=Voyant International - -OUI:002449* - ID_OUI_FROM_DATABASE=Shen Zhen Lite Star Electronics Technology Co., Ltd - -OUI:002443* - ID_OUI_FROM_DATABASE=Nortel Networks - -OUI:002439* - ID_OUI_FROM_DATABASE=Digital Barriers Advanced Technologies - -OUI:002479* - ID_OUI_FROM_DATABASE=Optec Displays, Inc. - OUI:00246D* ID_OUI_FROM_DATABASE=Weinzierl Engineering GmbH @@ -36371,32 +37445,53 @@ OUI:00245C* OUI:00244F* ID_OUI_FROM_DATABASE=Asantron Technologies Ltd. -OUI:0023BB* - ID_OUI_FROM_DATABASE=Schmitt Industries +OUI:002454* + ID_OUI_FROM_DATABASE=Samsung Electronics CO., LTD -OUI:0023BA* - ID_OUI_FROM_DATABASE=Chroma +OUI:002448* + ID_OUI_FROM_DATABASE=SpiderCloud Wireless, Inc -OUI:0023B5* - ID_OUI_FROM_DATABASE=ORTANA LTD +OUI:00244A* + ID_OUI_FROM_DATABASE=Voyant International -OUI:0023A8* - ID_OUI_FROM_DATABASE=Marshall Electronics +OUI:002449* + ID_OUI_FROM_DATABASE=Shen Zhen Lite Star Electronics Technology Co., Ltd -OUI:00239B* - ID_OUI_FROM_DATABASE=Elster Solutions, LLC +OUI:00250C* + ID_OUI_FROM_DATABASE=Enertrac -OUI:002396* - ID_OUI_FROM_DATABASE=ANDES TECHNOLOGY CORPORATION +OUI:002505* + ID_OUI_FROM_DATABASE=eks Engel GmbH & Co. KG -OUI:002391* - ID_OUI_FROM_DATABASE=Maxian +OUI:0024F9* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:00238C* - ID_OUI_FROM_DATABASE=Private +OUI:0024F2* + ID_OUI_FROM_DATABASE=Uniphone Telecommunication Co., Ltd. -OUI:002432* - ID_OUI_FROM_DATABASE=Neostar Technology Co.,LTD +OUI:0024ED* + ID_OUI_FROM_DATABASE=YT Elec. Co,.Ltd. + +OUI:0024E6* + ID_OUI_FROM_DATABASE=In Motion Technology Inc. + +OUI:0024E1* + ID_OUI_FROM_DATABASE=Convey Computer Corp. + +OUI:0024DF* + ID_OUI_FROM_DATABASE=Digitalbox Europe GmbH + +OUI:0024DA* + ID_OUI_FROM_DATABASE=Innovar Systems Limited + +OUI:0024CE* + ID_OUI_FROM_DATABASE=Exeltech Inc + +OUI:0024D3* + ID_OUI_FROM_DATABASE=QUALICA Inc. + +OUI:0024C7* + ID_OUI_FROM_DATABASE=Mobilarm Ltd OUI:002429* ID_OUI_FROM_DATABASE=MK MASTER INC. @@ -36410,101 +37505,68 @@ OUI:002428* OUI:002416* ID_OUI_FROM_DATABASE=Any Use -OUI:0023E0* - ID_OUI_FROM_DATABASE=INO Therapeutics LLC - -OUI:0023DA* - ID_OUI_FROM_DATABASE=Industrial Computer Source (Deutschland)GmbH - -OUI:0023C8* - ID_OUI_FROM_DATABASE=TEAM-R - -OUI:0023C7* - ID_OUI_FROM_DATABASE=AVSystem - -OUI:0023C1* - ID_OUI_FROM_DATABASE=Securitas Direct AB - -OUI:0021DC* - ID_OUI_FROM_DATABASE=TECNOALARM S.r.l. - -OUI:0021E2* - ID_OUI_FROM_DATABASE=Creative Electronic GmbH - -OUI:0021D6* - ID_OUI_FROM_DATABASE=LXI Consortium - -OUI:0021CF* - ID_OUI_FROM_DATABASE=The Crypto Group - -OUI:0021C9* - ID_OUI_FROM_DATABASE=Wavecom Asia Pacific Limited +OUI:002410* + ID_OUI_FROM_DATABASE=NUETEQ Technology,Inc. -OUI:0021CA* - ID_OUI_FROM_DATABASE=ART System Co., Ltd. +OUI:002409* + ID_OUI_FROM_DATABASE=The Toro Company -OUI:0021C3* - ID_OUI_FROM_DATABASE=CORNELL Communications, Inc. +OUI:002487* + ID_OUI_FROM_DATABASE=Blackboard Inc. -OUI:002334* +OUI:002498* ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:00232E* - ID_OUI_FROM_DATABASE=Kedah Electronics Engineering, LLC - -OUI:002329* - ID_OUI_FROM_DATABASE=DDRdrive LLC - -OUI:002322* - ID_OUI_FROM_DATABASE=KISS Teknical Solutions, Inc. +OUI:002485* + ID_OUI_FROM_DATABASE=ConteXtream Ltd -OUI:002325* - ID_OUI_FROM_DATABASE=IOLAN Holding +OUI:002480* + ID_OUI_FROM_DATABASE=Meteocontrol GmbH -OUI:002319* - ID_OUI_FROM_DATABASE=Sielox LLC +OUI:002479* + ID_OUI_FROM_DATABASE=Optec Displays, Inc. -OUI:002270* - ID_OUI_FROM_DATABASE=ABK North America, LLC +OUI:002443* + ID_OUI_FROM_DATABASE=Nortel Networks -OUI:002317* - ID_OUI_FROM_DATABASE=Lasercraft Inc +OUI:002439* + ID_OUI_FROM_DATABASE=Digital Barriers Advanced Technologies -OUI:002310* - ID_OUI_FROM_DATABASE=LNC Technology Co., Ltd. +OUI:002432* + ID_OUI_FROM_DATABASE=Neostar Technology Co.,LTD -OUI:002273* - ID_OUI_FROM_DATABASE=Techway +OUI:0023DA* + ID_OUI_FROM_DATABASE=Industrial Computer Source (Deutschland)GmbH -OUI:002274* - ID_OUI_FROM_DATABASE=FamilyPhone AB +OUI:0023C8* + ID_OUI_FROM_DATABASE=TEAM-R -OUI:00226F* - ID_OUI_FROM_DATABASE=3onedata Technology Co. Ltd. +OUI:0023C7* + ID_OUI_FROM_DATABASE=AVSystem -OUI:00226A* - ID_OUI_FROM_DATABASE=Honeywell +OUI:0023C1* + ID_OUI_FROM_DATABASE=Securitas Direct AB -OUI:002260* - ID_OUI_FROM_DATABASE=AFREEY Inc. +OUI:0023BB* + ID_OUI_FROM_DATABASE=Schmitt Industries -OUI:00225B* - ID_OUI_FROM_DATABASE=Teradici Corporation +OUI:0023BA* + ID_OUI_FROM_DATABASE=Chroma -OUI:002256* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc +OUI:0023B5* + ID_OUI_FROM_DATABASE=ORTANA LTD -OUI:002255* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc +OUI:002381* + ID_OUI_FROM_DATABASE=Lengda Technology(Xiamen) Co.,Ltd. -OUI:00224D* - ID_OUI_FROM_DATABASE=MITAC INTERNATIONAL CORP. +OUI:002382* + ID_OUI_FROM_DATABASE=Lih Rong Electronic Enterprise Co., Ltd. -OUI:002252* - ID_OUI_FROM_DATABASE=ZOLL Lifecor Corporation +OUI:00237B* + ID_OUI_FROM_DATABASE=WHDI LLC -OUI:002246* - ID_OUI_FROM_DATABASE=Evoc Intelligent Technology Co.,Ltd. +OUI:002372* + ID_OUI_FROM_DATABASE=MORE STAR INDUSTRIAL GROUP LIMITED OUI:002366* ID_OUI_FROM_DATABASE=Beijing Siasun Electronic System Co.,Ltd. @@ -36527,65 +37589,41 @@ OUI:002347* OUI:00234C* ID_OUI_FROM_DATABASE=KTC AB -OUI:002340* - ID_OUI_FROM_DATABASE=MiX Telematics - OUI:00233A* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd OUI:002339* ID_OUI_FROM_DATABASE=Samsung Electronics -OUI:002304* +OUI:002334* ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:0022F3* - ID_OUI_FROM_DATABASE=SHARP Corporation - -OUI:0022EE* - ID_OUI_FROM_DATABASE=Algo Communication Products Ltd - -OUI:0022E7* - ID_OUI_FROM_DATABASE=WPS Parking Systems - -OUI:0022E1* - ID_OUI_FROM_DATABASE=ZORT Labs, LLC. - -OUI:0022E2* - ID_OUI_FROM_DATABASE=WABTEC Transit Division - -OUI:0022DB* - ID_OUI_FROM_DATABASE=Translogic Corporation - -OUI:0022A1* - ID_OUI_FROM_DATABASE=Huawei Symantec Technologies Co.,Ltd. - -OUI:00229B* - ID_OUI_FROM_DATABASE=AverLogic Technologies, Inc. +OUI:00232E* + ID_OUI_FROM_DATABASE=Kedah Electronics Engineering, LLC -OUI:00229C* - ID_OUI_FROM_DATABASE=Verismo Networks Inc +OUI:002329* + ID_OUI_FROM_DATABASE=DDRdrive LLC -OUI:002295* - ID_OUI_FROM_DATABASE=SGM Technology for lighting spa +OUI:002322* + ID_OUI_FROM_DATABASE=KISS Teknical Solutions, Inc. -OUI:00228E* - ID_OUI_FROM_DATABASE=TV-NUMERIC +OUI:002325* + ID_OUI_FROM_DATABASE=IOLAN Holding -OUI:002289* - ID_OUI_FROM_DATABASE=Optosecurity Inc. +OUI:002319* + ID_OUI_FROM_DATABASE=Sielox LLC -OUI:002282* - ID_OUI_FROM_DATABASE=8086 Consultancy +OUI:002270* + ID_OUI_FROM_DATABASE=ABK North America, LLC -OUI:00227C* - ID_OUI_FROM_DATABASE=Woori SMT Co.,ltd +OUI:002317* + ID_OUI_FROM_DATABASE=Lasercraft Inc -OUI:002279* - ID_OUI_FROM_DATABASE=Nippon Conlux Co., Ltd. +OUI:002310* + ID_OUI_FROM_DATABASE=LNC Technology Co., Ltd. -OUI:00223C* - ID_OUI_FROM_DATABASE=RATIO Entwicklungen GmbH +OUI:002304* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc OUI:002236* ID_OUI_FROM_DATABASE=VECTOR SP. Z O.O. @@ -36617,23 +37655,53 @@ OUI:002211* OUI:00220A* ID_OUI_FROM_DATABASE=OnLive, Inc -OUI:002204* - ID_OUI_FROM_DATABASE=KORATEK +OUI:002295* + ID_OUI_FROM_DATABASE=SGM Technology for lighting spa -OUI:0021FF* - ID_OUI_FROM_DATABASE=Cyfrowy Polsat SA +OUI:00228E* + ID_OUI_FROM_DATABASE=TV-NUMERIC -OUI:0021FB* - ID_OUI_FROM_DATABASE=LG Electronics +OUI:002289* + ID_OUI_FROM_DATABASE=Optosecurity Inc. -OUI:0021F5* - ID_OUI_FROM_DATABASE=Western Engravers Supply, Inc. +OUI:002282* + ID_OUI_FROM_DATABASE=8086 Consultancy -OUI:0021EF* - ID_OUI_FROM_DATABASE=Kapsys +OUI:00227C* + ID_OUI_FROM_DATABASE=Woori SMT Co.,ltd -OUI:0021EE* - ID_OUI_FROM_DATABASE=Full Spectrum Inc. +OUI:002279* + ID_OUI_FROM_DATABASE=Nippon Conlux Co., Ltd. + +OUI:002273* + ID_OUI_FROM_DATABASE=Techway + +OUI:002274* + ID_OUI_FROM_DATABASE=FamilyPhone AB + +OUI:00226F* + ID_OUI_FROM_DATABASE=3onedata Technology Co. Ltd. + +OUI:00226A* + ID_OUI_FROM_DATABASE=Honeywell + +OUI:0022F3* + ID_OUI_FROM_DATABASE=SHARP Corporation + +OUI:0022EE* + ID_OUI_FROM_DATABASE=Algo Communication Products Ltd + +OUI:0022E7* + ID_OUI_FROM_DATABASE=WPS Parking Systems + +OUI:0022E1* + ID_OUI_FROM_DATABASE=ZORT Labs, LLC. + +OUI:0022E2* + ID_OUI_FROM_DATABASE=WABTEC Transit Division + +OUI:0022DB* + ID_OUI_FROM_DATABASE=Translogic Corporation OUI:0022CF* ID_OUI_FROM_DATABASE=PLANEX Communications INC @@ -36647,6 +37715,30 @@ OUI:0022CA* OUI:0022C5* ID_OUI_FROM_DATABASE=INFORSON Co,Ltd. +OUI:002260* + ID_OUI_FROM_DATABASE=AFREEY Inc. + +OUI:00225B* + ID_OUI_FROM_DATABASE=Teradici Corporation + +OUI:002256* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:002255* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:00224D* + ID_OUI_FROM_DATABASE=MITAC INTERNATIONAL CORP. + +OUI:002252* + ID_OUI_FROM_DATABASE=ZOLL Lifecor Corporation + +OUI:002246* + ID_OUI_FROM_DATABASE=Evoc Intelligent Technology Co.,Ltd. + +OUI:00223C* + ID_OUI_FROM_DATABASE=RATIO Entwicklungen GmbH + OUI:0022C0* ID_OUI_FROM_DATABASE=Shenzhen Forcelink Electronic Co, Ltd @@ -36662,59 +37754,53 @@ OUI:0022AD* OUI:0022A8* ID_OUI_FROM_DATABASE=Ouman Oy -OUI:002132* - ID_OUI_FROM_DATABASE=Masterclock, Inc. - -OUI:00212C* - ID_OUI_FROM_DATABASE=SemIndia System Private Limited - -OUI:002131* - ID_OUI_FROM_DATABASE=Blynke Inc. +OUI:0022A1* + ID_OUI_FROM_DATABASE=Huawei Symantec Technologies Co.,Ltd. -OUI:00211F* - ID_OUI_FROM_DATABASE=SHINSUNG DELTATECH CO.,LTD. +OUI:00229B* + ID_OUI_FROM_DATABASE=AverLogic Technologies, Inc. -OUI:002120* - ID_OUI_FROM_DATABASE=Sequel Technologies +OUI:00229C* + ID_OUI_FROM_DATABASE=Verismo Networks Inc -OUI:002125* - ID_OUI_FROM_DATABASE=KUK JE TONG SHIN Co.,LTD +OUI:0023A8* + ID_OUI_FROM_DATABASE=Marshall Electronics -OUI:002119* - ID_OUI_FROM_DATABASE=Samsung Electro-Mechanics +OUI:00239B* + ID_OUI_FROM_DATABASE=Elster Solutions, LLC -OUI:002112* - ID_OUI_FROM_DATABASE=WISCOM SYSTEM CO.,LTD +OUI:002396* + ID_OUI_FROM_DATABASE=ANDES TECHNOLOGY CORPORATION -OUI:001FB9* - ID_OUI_FROM_DATABASE=Paltronics +OUI:002391* + ID_OUI_FROM_DATABASE=Maxian -OUI:001FB7* - ID_OUI_FROM_DATABASE=WiMate Technologies Corp. +OUI:00238C* + ID_OUI_FROM_DATABASE=Private -OUI:001FB8* - ID_OUI_FROM_DATABASE=Universal Remote Control, Inc. +OUI:002387* + ID_OUI_FROM_DATABASE=ThinkFlood, Inc. -OUI:001FB2* - ID_OUI_FROM_DATABASE=Sontheim Industrie Elektronik GmbH +OUI:0021D6* + ID_OUI_FROM_DATABASE=LXI Consortium -OUI:001FAB* - ID_OUI_FROM_DATABASE=I.S HIGH TECH.INC +OUI:0021CF* + ID_OUI_FROM_DATABASE=The Crypto Group -OUI:001FA6* - ID_OUI_FROM_DATABASE=Stilo srl +OUI:0021C9* + ID_OUI_FROM_DATABASE=Wavecom Asia Pacific Limited -OUI:001FA1* - ID_OUI_FROM_DATABASE=Gtran Inc +OUI:0021CA* + ID_OUI_FROM_DATABASE=ART System Co., Ltd. -OUI:001F9C* - ID_OUI_FROM_DATABASE=LEDCO +OUI:0021C3* + ID_OUI_FROM_DATABASE=CORNELL Communications, Inc. -OUI:00215E* - ID_OUI_FROM_DATABASE=IBM Corp +OUI:0021BC* + ID_OUI_FROM_DATABASE=ZALA COMPUTER -OUI:002151* - ID_OUI_FROM_DATABASE=Millinet Co., Ltd. +OUI:0021B7* + ID_OUI_FROM_DATABASE=Lexmark International Inc. OUI:002152* ID_OUI_FROM_DATABASE=General Satellite Research & Development Limited @@ -36737,6 +37823,66 @@ OUI:00213C* OUI:00213B* ID_OUI_FROM_DATABASE=Berkshire Products, Inc +OUI:002132* + ID_OUI_FROM_DATABASE=Masterclock, Inc. + +OUI:00212C* + ID_OUI_FROM_DATABASE=SemIndia System Private Limited + +OUI:002131* + ID_OUI_FROM_DATABASE=Blynke Inc. + +OUI:001FD1* + ID_OUI_FROM_DATABASE=OPTEX CO.,LTD. + +OUI:001FCA* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:001FBE* + ID_OUI_FROM_DATABASE=Shenzhen Mopnet Industrial Co.,Ltd + +OUI:001FB9* + ID_OUI_FROM_DATABASE=Paltronics + +OUI:001FB7* + ID_OUI_FROM_DATABASE=WiMate Technologies Corp. + +OUI:001FB8* + ID_OUI_FROM_DATABASE=Universal Remote Control, Inc. + +OUI:001FB2* + ID_OUI_FROM_DATABASE=Sontheim Industrie Elektronik GmbH + +OUI:00211F* + ID_OUI_FROM_DATABASE=SHINSUNG DELTATECH CO.,LTD. + +OUI:002120* + ID_OUI_FROM_DATABASE=Sequel Technologies + +OUI:002125* + ID_OUI_FROM_DATABASE=KUK JE TONG SHIN Co.,LTD + +OUI:002119* + ID_OUI_FROM_DATABASE=Samsung Electro-Mechanics + +OUI:002112* + ID_OUI_FROM_DATABASE=WISCOM SYSTEM CO.,LTD + +OUI:002103* + ID_OUI_FROM_DATABASE=GHI Electronics, LLC + +OUI:0021B0* + ID_OUI_FROM_DATABASE=Tyco Telecommunications + +OUI:0021A4* + ID_OUI_FROM_DATABASE=Dbii Networks + +OUI:00219A* + ID_OUI_FROM_DATABASE=Cambridge Visual Networks Ltd + +OUI:002196* + ID_OUI_FROM_DATABASE=Telsey S.p.A. + OUI:002190* ID_OUI_FROM_DATABASE=Goliath Solutions @@ -36749,6 +37895,24 @@ OUI:002184* OUI:002183* ID_OUI_FROM_DATABASE=VATECH HYDRO +OUI:001FFA* + ID_OUI_FROM_DATABASE=Coretree, Co, Ltd + +OUI:001FF5* + ID_OUI_FROM_DATABASE=Kongsberg Defence & Aerospace + +OUI:001FF4* + ID_OUI_FROM_DATABASE=Power Monitors, Inc. + +OUI:001FEE* + ID_OUI_FROM_DATABASE=ubisys technologies GmbH + +OUI:001FE7* + ID_OUI_FROM_DATABASE=Simet + +OUI:001FDB* + ID_OUI_FROM_DATABASE=Network Supply Corp., + OUI:00217D* ID_OUI_FROM_DATABASE=PYXIS S.R.L. @@ -36764,59 +37928,98 @@ OUI:002171* OUI:002164* ID_OUI_FROM_DATABASE=Special Design Bureau for Seismic Instrumentation -OUI:002103* - ID_OUI_FROM_DATABASE=GHI Electronics, LLC +OUI:00215E* + ID_OUI_FROM_DATABASE=IBM Corp -OUI:001FFA* - ID_OUI_FROM_DATABASE=Coretree, Co, Ltd +OUI:002151* + ID_OUI_FROM_DATABASE=Millinet Co., Ltd. -OUI:001FF5* - ID_OUI_FROM_DATABASE=Kongsberg Defence & Aerospace +OUI:002204* + ID_OUI_FROM_DATABASE=KORATEK -OUI:001FF4* - ID_OUI_FROM_DATABASE=Power Monitors, Inc. +OUI:0021FF* + ID_OUI_FROM_DATABASE=Cyfrowy Polsat SA -OUI:001FEE* - ID_OUI_FROM_DATABASE=ubisys technologies GmbH +OUI:0021FB* + ID_OUI_FROM_DATABASE=LG Electronics -OUI:001FE7* - ID_OUI_FROM_DATABASE=Simet +OUI:0021F5* + ID_OUI_FROM_DATABASE=Western Engravers Supply, Inc. -OUI:001FDB* - ID_OUI_FROM_DATABASE=Network Supply Corp., +OUI:0021EF* + ID_OUI_FROM_DATABASE=Kapsys -OUI:001FD1* - ID_OUI_FROM_DATABASE=OPTEX CO.,LTD. +OUI:0021EE* + ID_OUI_FROM_DATABASE=Full Spectrum Inc. -OUI:001FCA* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc +OUI:0021DC* + ID_OUI_FROM_DATABASE=TECNOALARM S.r.l. -OUI:001FBE* - ID_OUI_FROM_DATABASE=Shenzhen Mopnet Industrial Co.,Ltd +OUI:0021E2* + ID_OUI_FROM_DATABASE=Creative Electronic GmbH -OUI:001F62* - ID_OUI_FROM_DATABASE=JSC Stilsoft +OUI:001FAB* + ID_OUI_FROM_DATABASE=I.S HIGH TECH.INC -OUI:001F67* - ID_OUI_FROM_DATABASE=Hitachi,Ltd. +OUI:001FA6* + ID_OUI_FROM_DATABASE=Stilo srl -OUI:001F55* - ID_OUI_FROM_DATABASE=Honeywell Security (China) Co., Ltd. +OUI:001FA1* + ID_OUI_FROM_DATABASE=Gtran Inc -OUI:001F56* - ID_OUI_FROM_DATABASE=DIGITAL FORECAST +OUI:001F9C* + ID_OUI_FROM_DATABASE=LEDCO -OUI:001F4F* - ID_OUI_FROM_DATABASE=Thinkware Co. Ltd. +OUI:001F8E* + ID_OUI_FROM_DATABASE=Metris USA Inc. -OUI:001F48* - ID_OUI_FROM_DATABASE=Mojix Inc. +OUI:001E41* + ID_OUI_FROM_DATABASE=Microwave Communication & Component, Inc. -OUI:001F43* - ID_OUI_FROM_DATABASE=ENTES ELEKTRONIK +OUI:001E2E* + ID_OUI_FROM_DATABASE=SIRTI S.p.A. -OUI:001F8E* - ID_OUI_FROM_DATABASE=Metris USA Inc. +OUI:001E27* + ID_OUI_FROM_DATABASE=SBN TECH Co.,Ltd. + +OUI:001E28* + ID_OUI_FROM_DATABASE=Lumexis Corporation + +OUI:001E22* + ID_OUI_FROM_DATABASE=ARVOO Imaging Products BV + +OUI:001E1B* + ID_OUI_FROM_DATABASE=Digital Stream Technology, Inc. + +OUI:001E16* + ID_OUI_FROM_DATABASE=Keytronix + +OUI:001E15* + ID_OUI_FROM_DATABASE=Beech Hill Electronics + +OUI:001E11* + ID_OUI_FROM_DATABASE=ELELUX INTERNATIONAL LTD + +OUI:001E05* + ID_OUI_FROM_DATABASE=Xseed Technologies & Computing + +OUI:001E0C* + ID_OUI_FROM_DATABASE=Sherwood Information Partners, Inc. + +OUI:001DFE* + ID_OUI_FROM_DATABASE=Palm, Inc + +OUI:001DF9* + ID_OUI_FROM_DATABASE=Cybiotronics (Far East) Limited + +OUI:001DF2* + ID_OUI_FROM_DATABASE=Netflix, Inc. + +OUI:001DEB* + ID_OUI_FROM_DATABASE=DINEC International + +OUI:001DEC* + ID_OUI_FROM_DATABASE=Marusys OUI:001F88* ID_OUI_FROM_DATABASE=FMS Force Measuring Systems AG @@ -36836,68 +38039,74 @@ OUI:001F6E* OUI:001F68* ID_OUI_FROM_DATABASE=Martinsson Elektronik AB -OUI:0021BC* - ID_OUI_FROM_DATABASE=ZALA COMPUTER +OUI:001F62* + ID_OUI_FROM_DATABASE=JSC Stilsoft -OUI:0021B7* - ID_OUI_FROM_DATABASE=Lexmark International Inc. +OUI:001F67* + ID_OUI_FROM_DATABASE=Hitachi,Ltd. -OUI:0021B0* - ID_OUI_FROM_DATABASE=Tyco Telecommunications +OUI:001F55* + ID_OUI_FROM_DATABASE=Honeywell Security (China) Co., Ltd. -OUI:0021A4* - ID_OUI_FROM_DATABASE=Dbii Networks +OUI:001E9B* + ID_OUI_FROM_DATABASE=San-Eisha, Ltd. -OUI:00219A* - ID_OUI_FROM_DATABASE=Cambridge Visual Networks Ltd +OUI:001E94* + ID_OUI_FROM_DATABASE=SUPERCOM TECHNOLOGY CORPORATION -OUI:002196* - ID_OUI_FROM_DATABASE=Telsey S.p.A. +OUI:001E8F* + ID_OUI_FROM_DATABASE=CANON INC. -OUI:001E4B* - ID_OUI_FROM_DATABASE=City Theatrical +OUI:001E87* + ID_OUI_FROM_DATABASE=Realease Limited -OUI:001E47* - ID_OUI_FROM_DATABASE=PT. Hariff Daya Tunggal Engineering +OUI:001E80* + ID_OUI_FROM_DATABASE=Last Mile Ltd. -OUI:001E41* - ID_OUI_FROM_DATABASE=Microwave Communication & Component, Inc. +OUI:001E7B* + ID_OUI_FROM_DATABASE=R.I.CO. S.r.l. -OUI:001E2E* - ID_OUI_FROM_DATABASE=SIRTI S.p.A. +OUI:001E76* + ID_OUI_FROM_DATABASE=Thermo Fisher Scientific -OUI:001E27* - ID_OUI_FROM_DATABASE=SBN TECH Co.,Ltd. +OUI:001E6A* + ID_OUI_FROM_DATABASE=Beijing Bluexon Technology Co.,Ltd -OUI:001E28* - ID_OUI_FROM_DATABASE=Lumexis Corporation +OUI:001F56* + ID_OUI_FROM_DATABASE=DIGITAL FORECAST -OUI:001DF2* - ID_OUI_FROM_DATABASE=Netflix, Inc. +OUI:001F4F* + ID_OUI_FROM_DATABASE=Thinkware Co. Ltd. -OUI:001DEB* - ID_OUI_FROM_DATABASE=DINEC International +OUI:001F48* + ID_OUI_FROM_DATABASE=Mojix Inc. -OUI:001DEC* - ID_OUI_FROM_DATABASE=Marusys +OUI:001F43* + ID_OUI_FROM_DATABASE=ENTES ELEKTRONIK -OUI:001DE6* +OUI:001F2E* + ID_OUI_FROM_DATABASE=Triangle Research Int'l Pte Ltd + +OUI:001F2D* + ID_OUI_FROM_DATABASE=Electro-Optical Imaging, Inc. + +OUI:001F27* ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:001DDA* - ID_OUI_FROM_DATABASE=Mikroelektronika spol. s r. o. +OUI:001EF5* + ID_OUI_FROM_DATABASE=Hitek Automated Inc. -OUI:001DDF* - ID_OUI_FROM_DATABASE=Sunitec Enterprise Co., Ltd. +OUI:001EFB* + ID_OUI_FROM_DATABASE=Trio Motion Technology Ltd -OUI:001DCC* - ID_OUI_FROM_DATABASE=Hetra Secure Solutions +OUI:001EE9* + ID_OUI_FROM_DATABASE=Stoneridge Electronics AB -OUI:001DC7* - ID_OUI_FROM_DATABASE=L-3 Communications Geneva Aerospace +OUI:001EEE* + ID_OUI_FROM_DATABASE=ETL Systems Ltd -OUI:001DC0* - ID_OUI_FROM_DATABASE=Enphase Energy +OUI:001EE2* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd OUI:001ED8* ID_OUI_FROM_DATABASE=Digital United Inc. @@ -36926,14 +38135,17 @@ OUI:001EB9* OUI:001EB2* ID_OUI_FROM_DATABASE=LG innotek -OUI:001F2E* - ID_OUI_FROM_DATABASE=Triangle Research Int'l Pte Ltd +OUI:001EAD* + ID_OUI_FROM_DATABASE=Wingtech Group Limited -OUI:001F2D* - ID_OUI_FROM_DATABASE=Electro-Optical Imaging, Inc. +OUI:001EA2* + ID_OUI_FROM_DATABASE=Symx Systems, Inc. -OUI:001F27* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc +OUI:001EA7* + ID_OUI_FROM_DATABASE=Actiontec Electronics, Inc + +OUI:001EA1* + ID_OUI_FROM_DATABASE=Brunata a/s OUI:001F20* ID_OUI_FROM_DATABASE=Logitech Europe SA @@ -36950,90 +38162,12 @@ OUI:001F0D* OUI:001F0E* ID_OUI_FROM_DATABASE=Japan Kyastem Co., Ltd -OUI:001E22* - ID_OUI_FROM_DATABASE=ARVOO Imaging Products BV - -OUI:001E1B* - ID_OUI_FROM_DATABASE=Digital Stream Technology, Inc. - -OUI:001E16* - ID_OUI_FROM_DATABASE=Keytronix - -OUI:001E15* - ID_OUI_FROM_DATABASE=Beech Hill Electronics - -OUI:001E11* - ID_OUI_FROM_DATABASE=ELELUX INTERNATIONAL LTD - -OUI:001E05* - ID_OUI_FROM_DATABASE=Xseed Technologies & Computing - -OUI:001E0C* - ID_OUI_FROM_DATABASE=Sherwood Information Partners, Inc. - -OUI:001DFE* - ID_OUI_FROM_DATABASE=Palm, Inc - -OUI:001DF9* - ID_OUI_FROM_DATABASE=Cybiotronics (Far East) Limited - -OUI:001EAD* - ID_OUI_FROM_DATABASE=Wingtech Group Limited - -OUI:001EA2* - ID_OUI_FROM_DATABASE=Symx Systems, Inc. - -OUI:001EA7* - ID_OUI_FROM_DATABASE=Actiontec Electronics, Inc - -OUI:001EA1* - ID_OUI_FROM_DATABASE=Brunata a/s - -OUI:001E9B* - ID_OUI_FROM_DATABASE=San-Eisha, Ltd. - -OUI:001E94* - ID_OUI_FROM_DATABASE=SUPERCOM TECHNOLOGY CORPORATION - -OUI:001E8F* - ID_OUI_FROM_DATABASE=CANON INC. - -OUI:001E87* - ID_OUI_FROM_DATABASE=Realease Limited - -OUI:001E80* - ID_OUI_FROM_DATABASE=Last Mile Ltd. - OUI:001EFC* ID_OUI_FROM_DATABASE=JSC MASSA-K OUI:001F08* ID_OUI_FROM_DATABASE=RISCO LTD -OUI:001EF5* - ID_OUI_FROM_DATABASE=Hitek Automated Inc. - -OUI:001EFB* - ID_OUI_FROM_DATABASE=Trio Motion Technology Ltd - -OUI:001EE9* - ID_OUI_FROM_DATABASE=Stoneridge Electronics AB - -OUI:001EEE* - ID_OUI_FROM_DATABASE=ETL Systems Ltd - -OUI:001EE2* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -OUI:001E7B* - ID_OUI_FROM_DATABASE=R.I.CO. S.r.l. - -OUI:001E76* - ID_OUI_FROM_DATABASE=Thermo Fisher Scientific - -OUI:001E6A* - ID_OUI_FROM_DATABASE=Beijing Bluexon Technology Co.,Ltd - OUI:001E71* ID_OUI_FROM_DATABASE=MIrcom Group of Companies @@ -37049,29 +38183,11 @@ OUI:001E57* OUI:001E51* ID_OUI_FROM_DATABASE=Converter Industry Srl -OUI:001DB9* - ID_OUI_FROM_DATABASE=Wellspring Wireless - -OUI:001DB4* - ID_OUI_FROM_DATABASE=KUMHO ENG CO.,LTD - -OUI:001DAF* - ID_OUI_FROM_DATABASE=Nortel - -OUI:001D9E* - ID_OUI_FROM_DATABASE=AXION TECHNOLOGIES - -OUI:001DA3* - ID_OUI_FROM_DATABASE=SabiOso - -OUI:001D9D* - ID_OUI_FROM_DATABASE=ARTJOY INTERNATIONAL LIMITED - -OUI:001D45* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc +OUI:001E4B* + ID_OUI_FROM_DATABASE=City Theatrical -OUI:001D3E* - ID_OUI_FROM_DATABASE=SAKA TECHNO SCIENCE CO.,LTD +OUI:001E47* + ID_OUI_FROM_DATABASE=PT. Hariff Daya Tunggal Engineering OUI:001D37* ID_OUI_FROM_DATABASE=Thales-Panda Transportation System @@ -37097,32 +38213,8 @@ OUI:001D25* OUI:001D1A* ID_OUI_FROM_DATABASE=OvisLink S.A. -OUI:001D7A* - ID_OUI_FROM_DATABASE=Wideband Semiconductor, Inc. - -OUI:001D74* - ID_OUI_FROM_DATABASE=Tianjin China-Silicon Microelectronics Co., Ltd. - -OUI:001D62* - ID_OUI_FROM_DATABASE=InPhase Technologies - -OUI:001D61* - ID_OUI_FROM_DATABASE=BIJ Corporation - -OUI:001D5B* - ID_OUI_FROM_DATABASE=Tecvan Informática Ltda - -OUI:001D54* - ID_OUI_FROM_DATABASE=Sunnic Technology & Merchandise INC. - -OUI:001D4A* - ID_OUI_FROM_DATABASE=Carestream Health, Inc. - -OUI:001CE8* - ID_OUI_FROM_DATABASE=Cummins Inc - -OUI:001CE4* - ID_OUI_FROM_DATABASE=EleSy JSC +OUI:001D14* + ID_OUI_FROM_DATABASE=SPERADTONE INFORMATION TECHNOLOGY LIMITED OUI:001CDD* ID_OUI_FROM_DATABASE=COWBELL ENGINEERING CO., LTD. @@ -37142,14 +38234,65 @@ OUI:001CCB* OUI:001CC5* ID_OUI_FROM_DATABASE=3Com Ltd -OUI:001D0D* - ID_OUI_FROM_DATABASE=Sony Computer Entertainment inc. +OUI:001CB9* + ID_OUI_FROM_DATABASE=KWANG SUNG ELECTRONICS CO., LTD. -OUI:001D14* - ID_OUI_FROM_DATABASE=SPERADTONE INFORMATION TECHNOLOGY LIMITED +OUI:001CAF* + ID_OUI_FROM_DATABASE=Plato Networks Inc. -OUI:001D08* - ID_OUI_FROM_DATABASE=JIANGSU YINHE ELECTRONICS CO., LTD +OUI:001CB4* + ID_OUI_FROM_DATABASE=Iridium Satellite LLC + +OUI:001C65* + ID_OUI_FROM_DATABASE=JoeScan, Inc. + +OUI:001C67* + ID_OUI_FROM_DATABASE=Pumpkin Networks, Inc. + +OUI:001C66* + ID_OUI_FROM_DATABASE=UCAMP CO.,LTD + +OUI:001C60* + ID_OUI_FROM_DATABASE=CSP Frontier Technologies,Inc. + +OUI:001C54* + ID_OUI_FROM_DATABASE=Hillstone Networks Inc + +OUI:001C59* + ID_OUI_FROM_DATABASE=DEVON IT + +OUI:001C4F* + ID_OUI_FROM_DATABASE=MACAB AB + +OUI:001C43* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:001C37* + ID_OUI_FROM_DATABASE=Callpod, Inc. + +OUI:001C3C* + ID_OUI_FROM_DATABASE=Seon Design Inc. + +OUI:001DE6* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:001DDA* + ID_OUI_FROM_DATABASE=Mikroelektronika spol. s r. o. + +OUI:001DDF* + ID_OUI_FROM_DATABASE=Sunitec Enterprise Co., Ltd. + +OUI:001DCC* + ID_OUI_FROM_DATABASE=Hetra Secure Solutions + +OUI:001DC7* + ID_OUI_FROM_DATABASE=L-3 Communications Geneva Aerospace + +OUI:001DC0* + ID_OUI_FROM_DATABASE=Enphase Energy + +OUI:001DB9* + ID_OUI_FROM_DATABASE=Wellspring Wireless OUI:001D07* ID_OUI_FROM_DATABASE=Shenzhen Sang Fei Consumer Communications Co.,Ltd @@ -37166,14 +38309,11 @@ OUI:001CEE* OUI:001CF5* ID_OUI_FROM_DATABASE=Wiseblue Technology Limited -OUI:001CB9* - ID_OUI_FROM_DATABASE=KWANG SUNG ELECTRONICS CO., LTD. - -OUI:001CAF* - ID_OUI_FROM_DATABASE=Plato Networks Inc. +OUI:001CE8* + ID_OUI_FROM_DATABASE=Cummins Inc -OUI:001CB4* - ID_OUI_FROM_DATABASE=Iridium Satellite LLC +OUI:001CE4* + ID_OUI_FROM_DATABASE=EleSy JSC OUI:001C9F* ID_OUI_FROM_DATABASE=Razorstream, LLC @@ -37193,30 +38333,6 @@ OUI:001C87* OUI:001C82* ID_OUI_FROM_DATABASE=Genew Technologies -OUI:001C1A* - ID_OUI_FROM_DATABASE=Thomas Instrumentation, Inc - -OUI:001C0E* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -OUI:001C13* - ID_OUI_FROM_DATABASE=OPTSYS TECHNOLOGY CO., LTD. - -OUI:001C07* - ID_OUI_FROM_DATABASE=Cwlinux Limited - -OUI:001C00* - ID_OUI_FROM_DATABASE=Entry Point, LLC - -OUI:001BF4* - ID_OUI_FROM_DATABASE=KENWIN INDUSTRIAL(HK) LTD. - -OUI:001BEF* - ID_OUI_FROM_DATABASE=Blossoms Digital Technology Co.,Ltd. - -OUI:001BE2* - ID_OUI_FROM_DATABASE=AhnLab,Inc. - OUI:001C7D* ID_OUI_FROM_DATABASE=Excelpoint Manufacturing Pte Ltd @@ -37226,59 +38342,26 @@ OUI:001C73* OUI:001C78* ID_OUI_FROM_DATABASE=WYPLAY SAS -OUI:001C6C* - ID_OUI_FROM_DATABASE=Jabil Circuit (Guangzhou) Limited - -OUI:001C65* - ID_OUI_FROM_DATABASE=JoeScan, Inc. - -OUI:001C67* - ID_OUI_FROM_DATABASE=Pumpkin Networks, Inc. - -OUI:001C66* - ID_OUI_FROM_DATABASE=UCAMP CO.,LTD - -OUI:001C60* - ID_OUI_FROM_DATABASE=CSP Frontier Technologies,Inc. - -OUI:001C54* - ID_OUI_FROM_DATABASE=Hillstone Networks Inc - -OUI:001C59* - ID_OUI_FROM_DATABASE=DEVON IT - -OUI:001C4F* - ID_OUI_FROM_DATABASE=MACAB AB - -OUI:001C43* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -OUI:001C37* - ID_OUI_FROM_DATABASE=Callpod, Inc. - -OUI:001C3C* - ID_OUI_FROM_DATABASE=Seon Design Inc. - -OUI:001C30* - ID_OUI_FROM_DATABASE=Mode Lighting (UK ) Ltd. +OUI:001D62* + ID_OUI_FROM_DATABASE=InPhase Technologies -OUI:001C2B* - ID_OUI_FROM_DATABASE=Alertme.com Limited +OUI:001D61* + ID_OUI_FROM_DATABASE=BIJ Corporation -OUI:001C2A* - ID_OUI_FROM_DATABASE=Envisacor Technologies Inc. +OUI:001D5B* + ID_OUI_FROM_DATABASE=Tecvan Informática Ltda -OUI:001C29* - ID_OUI_FROM_DATABASE=CORE DIGITAL ELECTRONICS CO., LTD +OUI:001D54* + ID_OUI_FROM_DATABASE=Sunnic Technology & Merchandise INC. -OUI:001C24* - ID_OUI_FROM_DATABASE=Formosa Wireless Systems Corp. +OUI:001D4A* + ID_OUI_FROM_DATABASE=Carestream Health, Inc. -OUI:001C1F* - ID_OUI_FROM_DATABASE=Quest Retail Technology Pty Ltd +OUI:001D45* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:001D97* - ID_OUI_FROM_DATABASE=Alertus Technologies LLC +OUI:001D3E* + ID_OUI_FROM_DATABASE=SAKA TECHNO SCIENCE CO.,LTD OUI:001D90* ID_OUI_FROM_DATABASE=EMCO Flow Systems @@ -37289,65 +38372,29 @@ OUI:001D84* OUI:001D67* ID_OUI_FROM_DATABASE=AMEC -OUI:001A93* - ID_OUI_FROM_DATABASE=ERCO Leuchten GmbH - -OUI:001A98* - ID_OUI_FROM_DATABASE=Asotel Communication Limited Taiwan Branch - -OUI:001A8E* - ID_OUI_FROM_DATABASE=3Way Networks Ltd - -OUI:001A7D* - ID_OUI_FROM_DATABASE=cyber-blue(HK)Ltd - -OUI:001A82* - ID_OUI_FROM_DATABASE=PROBA Building Automation Co.,LTD - -OUI:001A7C* - ID_OUI_FROM_DATABASE=Hirschmann Multimedia B.V. - -OUI:001A78* - ID_OUI_FROM_DATABASE=ubtos - -OUI:001A7B* - ID_OUI_FROM_DATABASE=Teleco, Inc. - -OUI:001A71* - ID_OUI_FROM_DATABASE=Diostech Co., Ltd. - -OUI:001A6C* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -OUI:001A65* - ID_OUI_FROM_DATABASE=Seluxit - -OUI:001B7D* - ID_OUI_FROM_DATABASE=CXR Anderson Jacobson - -OUI:001B71* - ID_OUI_FROM_DATABASE=Telular Corp. +OUI:001D7A* + ID_OUI_FROM_DATABASE=Wideband Semiconductor, Inc. -OUI:001B6A* - ID_OUI_FROM_DATABASE=Powerwave Technologies Sweden AB +OUI:001D74* + ID_OUI_FROM_DATABASE=Tianjin China-Silicon Microelectronics Co., Ltd. -OUI:001B65* - ID_OUI_FROM_DATABASE=China Gridcom Co., Ltd +OUI:001DB4* + ID_OUI_FROM_DATABASE=KUMHO ENG CO.,LTD -OUI:001B5E* - ID_OUI_FROM_DATABASE=BPL Limited +OUI:001DAF* + ID_OUI_FROM_DATABASE=Nortel -OUI:001B57* - ID_OUI_FROM_DATABASE=SEMINDIA SYSTEMS PRIVATE LIMITED +OUI:001D9E* + ID_OUI_FROM_DATABASE=AXION TECHNOLOGIES -OUI:001B46* - ID_OUI_FROM_DATABASE=Blueone Technology Co.,Ltd +OUI:001DA3* + ID_OUI_FROM_DATABASE=SabiOso -OUI:001B4B* - ID_OUI_FROM_DATABASE=SANION Co., Ltd. +OUI:001D9D* + ID_OUI_FROM_DATABASE=ARTJOY INTERNATIONAL LIMITED -OUI:001BAD* - ID_OUI_FROM_DATABASE=iControl Incorporated +OUI:001D97* + ID_OUI_FROM_DATABASE=Alertus Technologies LLC OUI:001BA6* ID_OUI_FROM_DATABASE=intotech inc. @@ -37379,11 +38426,32 @@ OUI:001B8A* OUI:001B84* ID_OUI_FROM_DATABASE=Scan Engineering Telecom -OUI:001BD1* - ID_OUI_FROM_DATABASE=SOGESTMATIC +OUI:001B7D* + ID_OUI_FROM_DATABASE=CXR Anderson Jacobson -OUI:001BD6* - ID_OUI_FROM_DATABASE=Kelvin Hughes Ltd +OUI:001B71* + ID_OUI_FROM_DATABASE=Telular Corp. + +OUI:001B6A* + ID_OUI_FROM_DATABASE=Powerwave Technologies Sweden AB + +OUI:001B65* + ID_OUI_FROM_DATABASE=China Gridcom Co., Ltd + +OUI:001B5E* + ID_OUI_FROM_DATABASE=BPL Limited + +OUI:001B57* + ID_OUI_FROM_DATABASE=SEMINDIA SYSTEMS PRIVATE LIMITED + +OUI:001B46* + ID_OUI_FROM_DATABASE=Blueone Technology Co.,Ltd + +OUI:001B4B* + ID_OUI_FROM_DATABASE=SANION Co., Ltd. + +OUI:001B3F* + ID_OUI_FROM_DATABASE=ProCurve Networking by HP OUI:001BCF* ID_OUI_FROM_DATABASE=Dataupia Corporation @@ -37403,38 +38471,8 @@ OUI:001BBE* OUI:001BB4* ID_OUI_FROM_DATABASE=Airvod Limited -OUI:001BB9* - ID_OUI_FROM_DATABASE=Elitegroup Computer System Co. - -OUI:001B14* - ID_OUI_FROM_DATABASE=Carex Lighting Equipment Factory - -OUI:001B0D* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -OUI:001B06* - ID_OUI_FROM_DATABASE=Ateliers R. LAUMONIER - -OUI:001B08* - ID_OUI_FROM_DATABASE=Danfoss Drives A/S - -OUI:001B01* - ID_OUI_FROM_DATABASE=Applied Radio Technologies - -OUI:001AF5* - ID_OUI_FROM_DATABASE=PENTAONE. CO., LTD. - -OUI:001AFA* - ID_OUI_FROM_DATABASE=Welch Allyn, Inc. - -OUI:001AF0* - ID_OUI_FROM_DATABASE=Alcatel - IPD - -OUI:001AE4* - ID_OUI_FROM_DATABASE=Medicis Technologies Corporation - -OUI:001ADD* - ID_OUI_FROM_DATABASE=PePWave Ltd +OUI:001BAD* + ID_OUI_FROM_DATABASE=iControl Incorporated OUI:001AD1* ID_OUI_FROM_DATABASE=FARGO CO., LTD. @@ -37457,32 +38495,59 @@ OUI:001ABB* OUI:001AC0* ID_OUI_FROM_DATABASE=JOYBIEN TECHNOLOGIES CO., LTD. -OUI:001A60* - ID_OUI_FROM_DATABASE=Wave Electronics Co.,Ltd. +OUI:001AB4* + ID_OUI_FROM_DATABASE=FFEI Ltd. -OUI:001A55* - ID_OUI_FROM_DATABASE=ACA-Digital Corporation +OUI:001AAF* + ID_OUI_FROM_DATABASE=BLUSENS TECHNOLOGY -OUI:001A5A* - ID_OUI_FROM_DATABASE=Korea Electric Power Data Network (KDN) Co., Ltd +OUI:001C07* + ID_OUI_FROM_DATABASE=Cwlinux Limited -OUI:001A4E* - ID_OUI_FROM_DATABASE=NTI AG / LinMot +OUI:001C00* + ID_OUI_FROM_DATABASE=Entry Point, LLC -OUI:001A53* - ID_OUI_FROM_DATABASE=Zylaya +OUI:001BF4* + ID_OUI_FROM_DATABASE=KENWIN INDUSTRIAL(HK) LTD. -OUI:001A42* - ID_OUI_FROM_DATABASE=Techcity Technology co., Ltd. +OUI:001BEF* + ID_OUI_FROM_DATABASE=Blossoms Digital Technology Co.,Ltd. -OUI:001A47* - ID_OUI_FROM_DATABASE=Agami Systems, Inc. +OUI:001BE2* + ID_OUI_FROM_DATABASE=AhnLab,Inc. -OUI:001A3B* - ID_OUI_FROM_DATABASE=Doah Elecom Inc. +OUI:001BD1* + ID_OUI_FROM_DATABASE=SOGESTMATIC -OUI:001B3F* - ID_OUI_FROM_DATABASE=ProCurve Networking by HP +OUI:001BD6* + ID_OUI_FROM_DATABASE=Kelvin Hughes Ltd + +OUI:001C30* + ID_OUI_FROM_DATABASE=Mode Lighting (UK ) Ltd. + +OUI:001C2B* + ID_OUI_FROM_DATABASE=Alertme.com Limited + +OUI:001C2A* + ID_OUI_FROM_DATABASE=Envisacor Technologies Inc. + +OUI:001C29* + ID_OUI_FROM_DATABASE=CORE DIGITAL ELECTRONICS CO., LTD + +OUI:001C24* + ID_OUI_FROM_DATABASE=Formosa Wireless Systems Corp. + +OUI:001C1F* + ID_OUI_FROM_DATABASE=Quest Retail Technology Pty Ltd + +OUI:001C1A* + ID_OUI_FROM_DATABASE=Thomas Instrumentation, Inc + +OUI:001C0E* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:001C13* + ID_OUI_FROM_DATABASE=OPTSYS TECHNOLOGY CO., LTD. OUI:001B3A* ID_OUI_FROM_DATABASE=SIMS Corp. @@ -37502,11 +38567,11 @@ OUI:001B20* OUI:001B19* ID_OUI_FROM_DATABASE=IEEE I&M Society TC9 -OUI:001AB4* - ID_OUI_FROM_DATABASE=FFEI Ltd. +OUI:001B14* + ID_OUI_FROM_DATABASE=Carex Lighting Equipment Factory -OUI:001AAF* - ID_OUI_FROM_DATABASE=BLUSENS TECHNOLOGY +OUI:001B0D* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc OUI:001AA8* ID_OUI_FROM_DATABASE=Mamiya Digital Imaging Co., Ltd. @@ -37517,8 +38582,38 @@ OUI:001A9F* OUI:001AA6* ID_OUI_FROM_DATABASE=Telefunken Radio Communication Systems GmbH &CO.KG -OUI:00193F* - ID_OUI_FROM_DATABASE=RDI technology(Shenzhen) Co.,LTD +OUI:001A93* + ID_OUI_FROM_DATABASE=ERCO Leuchten GmbH + +OUI:001A98* + ID_OUI_FROM_DATABASE=Asotel Communication Limited Taiwan Branch + +OUI:001A8E* + ID_OUI_FROM_DATABASE=3Way Networks Ltd + +OUI:001B06* + ID_OUI_FROM_DATABASE=Ateliers R. LAUMONIER + +OUI:001B08* + ID_OUI_FROM_DATABASE=Danfoss Drives A/S + +OUI:001B01* + ID_OUI_FROM_DATABASE=Applied Radio Technologies + +OUI:001AF5* + ID_OUI_FROM_DATABASE=PENTAONE. CO., LTD. + +OUI:001AFA* + ID_OUI_FROM_DATABASE=Welch Allyn, Inc. + +OUI:001AF0* + ID_OUI_FROM_DATABASE=Alcatel - IPD + +OUI:001AE4* + ID_OUI_FROM_DATABASE=Medicis Technologies Corporation + +OUI:001ADD* + ID_OUI_FROM_DATABASE=PePWave Ltd OUI:001933* ID_OUI_FROM_DATABASE=Strix Systems, Inc. @@ -37529,9 +38624,6 @@ OUI:001938* OUI:00192D* ID_OUI_FROM_DATABASE=Nokia Corporation -OUI:001921* - ID_OUI_FROM_DATABASE=Elitegroup Computer System Co. - OUI:001926* ID_OUI_FROM_DATABASE=BitsGen Co., Ltd. @@ -37550,12 +38642,6 @@ OUI:001915* OUI:00191A* ID_OUI_FROM_DATABASE=IRLINK -OUI:001993* - ID_OUI_FROM_DATABASE=Changshu Switchgear MFG. Co.,Ltd. (Former Changshu Switchgea - -OUI:001998* - ID_OUI_FROM_DATABASE=SATO CORPORATION - OUI:00199D* ID_OUI_FROM_DATABASE=VIZIO, Inc. @@ -37592,11 +38678,59 @@ OUI:001946* OUI:001944* ID_OUI_FROM_DATABASE=Fossil Partners, L.P. -OUI:001A2F* +OUI:00193F* + ID_OUI_FROM_DATABASE=RDI technology(Shenzhen) Co.,LTD + +OUI:001A7D* + ID_OUI_FROM_DATABASE=cyber-blue(HK)Ltd + +OUI:001A82* + ID_OUI_FROM_DATABASE=PROBA Building Automation Co.,LTD + +OUI:001A7C* + ID_OUI_FROM_DATABASE=Hirschmann Multimedia B.V. + +OUI:001A78* + ID_OUI_FROM_DATABASE=ubtos + +OUI:001A7B* + ID_OUI_FROM_DATABASE=Teleco, Inc. + +OUI:001A71* + ID_OUI_FROM_DATABASE=Diostech Co., Ltd. + +OUI:001A6C* ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:001A34* - ID_OUI_FROM_DATABASE=Konka Group Co., Ltd. +OUI:001A65* + ID_OUI_FROM_DATABASE=Seluxit + +OUI:001A60* + ID_OUI_FROM_DATABASE=Wave Electronics Co.,Ltd. + +OUI:001A55* + ID_OUI_FROM_DATABASE=ACA-Digital Corporation + +OUI:001A5A* + ID_OUI_FROM_DATABASE=Korea Electric Power Data Network (KDN) Co., Ltd + +OUI:001A4E* + ID_OUI_FROM_DATABASE=NTI AG / LinMot + +OUI:001A53* + ID_OUI_FROM_DATABASE=Zylaya + +OUI:001A42* + ID_OUI_FROM_DATABASE=Techcity Technology co., Ltd. + +OUI:001A47* + ID_OUI_FROM_DATABASE=Agami Systems, Inc. + +OUI:001A3B* + ID_OUI_FROM_DATABASE=Doah Elecom Inc. + +OUI:001A2F* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc OUI:001A36* ID_OUI_FROM_DATABASE=Aipermon GmbH & Co. KG @@ -37604,6 +38738,33 @@ OUI:001A36* OUI:001A25* ID_OUI_FROM_DATABASE=DELTA DORE +OUI:0019C3* + ID_OUI_FROM_DATABASE=Qualitrol + +OUI:0019BE* + ID_OUI_FROM_DATABASE=Altai Technologies Limited + +OUI:0019BC* + ID_OUI_FROM_DATABASE=ELECTRO CHANCE SRL + +OUI:0019A4* + ID_OUI_FROM_DATABASE=Austar Technology (hang zhou) Co.,Ltd + +OUI:0019A9* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:0019AB* + ID_OUI_FROM_DATABASE=Raycom CO ., LTD + +OUI:0019B0* + ID_OUI_FROM_DATABASE=HanYang System + +OUI:001993* + ID_OUI_FROM_DATABASE=Changshu Switchgear MFG. Co.,Ltd. (Former Changshu Switchgea + +OUI:001998* + ID_OUI_FROM_DATABASE=SATO CORPORATION + OUI:001A17* ID_OUI_FROM_DATABASE=Teak Technologies, Inc. @@ -37619,35 +38780,11 @@ OUI:001A0B* OUI:001A06* ID_OUI_FROM_DATABASE=OpVista, Inc. -OUI:0018CD* - ID_OUI_FROM_DATABASE=Erae Electronics Industry Co., Ltd - -OUI:0018D2* - ID_OUI_FROM_DATABASE=High-Gain Antennas LLC - -OUI:0018D7* - ID_OUI_FROM_DATABASE=Javad Navigation Systems Inc. - -OUI:0018D9* - ID_OUI_FROM_DATABASE=Santosha Internatonal, Inc - -OUI:0018C1* - ID_OUI_FROM_DATABASE=Almitec Informática e Comércio - -OUI:0018C8* - ID_OUI_FROM_DATABASE=ISONAS Inc. - -OUI:0018BC* - ID_OUI_FROM_DATABASE=ZAO NVP Bolid - -OUI:0018B5* - ID_OUI_FROM_DATABASE=Magna Carta - -OUI:0018B0* - ID_OUI_FROM_DATABASE=Nortel +OUI:0019FA* + ID_OUI_FROM_DATABASE=Cable Vision Electronics CO., LTD. -OUI:0018AE* - ID_OUI_FROM_DATABASE=TVT CO.,LTD +OUI:0019FF* + ID_OUI_FROM_DATABASE=Finnzymes OUI:001902* ID_OUI_FROM_DATABASE=Cambridge Consultants Ltd @@ -37670,59 +38807,11 @@ OUI:0018EC* OUI:0018E5* ID_OUI_FROM_DATABASE=Adhoco AG -OUI:0018A2* - ID_OUI_FROM_DATABASE=XIP Technology AB - -OUI:0018A9* - ID_OUI_FROM_DATABASE=Ethernet Direct Corporation - -OUI:00189D* - ID_OUI_FROM_DATABASE=Navcast Inc. - -OUI:001893* - ID_OUI_FROM_DATABASE=SHENZHEN PHOTON BROADBAND TECHNOLOGY CO.,LTD - -OUI:001898* - ID_OUI_FROM_DATABASE=KINGSTATE ELECTRONICS CORPORATION - -OUI:001891* - ID_OUI_FROM_DATABASE=Zhongshan General K-mate Electronics Co., Ltd - -OUI:001885* - ID_OUI_FROM_DATABASE=Avigilon Corporation - -OUI:00188C* - ID_OUI_FROM_DATABASE=Mobile Action Technology Inc. - -OUI:0019C8* - ID_OUI_FROM_DATABASE=AnyDATA Corporation - -OUI:0019C3* - ID_OUI_FROM_DATABASE=Qualitrol - -OUI:0019BE* - ID_OUI_FROM_DATABASE=Altai Technologies Limited - -OUI:0019BC* - ID_OUI_FROM_DATABASE=ELECTRO CHANCE SRL - -OUI:0019A4* - ID_OUI_FROM_DATABASE=Austar Technology (hang zhou) Co.,Ltd - -OUI:0019A9* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -OUI:0019AB* - ID_OUI_FROM_DATABASE=Raycom CO ., LTD - -OUI:0019B0* - ID_OUI_FROM_DATABASE=HanYang System - -OUI:0019FA* - ID_OUI_FROM_DATABASE=Cable Vision Electronics CO., LTD. +OUI:0018CD* + ID_OUI_FROM_DATABASE=Erae Electronics Industry Co., Ltd -OUI:0019FF* - ID_OUI_FROM_DATABASE=Finnzymes +OUI:0018D2* + ID_OUI_FROM_DATABASE=High-Gain Antennas LLC OUI:0019EC* ID_OUI_FROM_DATABASE=Sagamore Systems, Inc. @@ -37748,8 +38837,8 @@ OUI:0019D4* OUI:0019D9* ID_OUI_FROM_DATABASE=Zeutschel GmbH -OUI:001823* - ID_OUI_FROM_DATABASE=Delta Electronics, Inc. +OUI:0019C8* + ID_OUI_FROM_DATABASE=AnyDATA Corporation OUI:001817* ID_OUI_FROM_DATABASE=D. E. Shaw Research, LLC @@ -37769,11 +38858,14 @@ OUI:00180B* OUI:001805* ID_OUI_FROM_DATABASE=Beijing InHand Networking Technology Co.,Ltd. -OUI:0017B8* - ID_OUI_FROM_DATABASE=NOVATRON CO., LTD. +OUI:0017F4* + ID_OUI_FROM_DATABASE=ZERON ALLIANCE -OUI:0017BD* - ID_OUI_FROM_DATABASE=Tibetsystem +OUI:0017F9* + ID_OUI_FROM_DATABASE=Forcom Sp. z o.o. + +OUI:001800* + ID_OUI_FROM_DATABASE=UNIGRAND LTD OUI:0017B1* ID_OUI_FROM_DATABASE=ACIST Medical Systems, Inc. @@ -37793,35 +38885,41 @@ OUI:0017A0* OUI:00179B* ID_OUI_FROM_DATABASE=Chant Sincere CO., LTD. -OUI:00170F* +OUI:00178F* + ID_OUI_FROM_DATABASE=NINGBO YIDONG ELECTRONIC CO.,LTD. + +OUI:001794* ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:001705* - ID_OUI_FROM_DATABASE=Methode Electronics +OUI:00178D* + ID_OUI_FROM_DATABASE=Checkpoint Systems, Inc. -OUI:00170A* - ID_OUI_FROM_DATABASE=INEW DIGITAL COMPANY +OUI:0018D9* + ID_OUI_FROM_DATABASE=Santosha Internatonal, Inc -OUI:0016F9* - ID_OUI_FROM_DATABASE=CETRTA POT, d.o.o., Kranj +OUI:0018C1* + ID_OUI_FROM_DATABASE=Almitec Informática e Comércio -OUI:0016F2* - ID_OUI_FROM_DATABASE=Dmobile System Co., Ltd. +OUI:0018C8* + ID_OUI_FROM_DATABASE=ISONAS Inc. -OUI:0016F7* - ID_OUI_FROM_DATABASE=L-3 Communications, Aviation Recorders +OUI:0018BC* + ID_OUI_FROM_DATABASE=ZAO NVP Bolid -OUI:0016E6* - ID_OUI_FROM_DATABASE=GIGA-BYTE TECHNOLOGY CO.,LTD. +OUI:0018B5* + ID_OUI_FROM_DATABASE=Magna Carta -OUI:00178F* - ID_OUI_FROM_DATABASE=NINGBO YIDONG ELECTRONIC CO.,LTD. +OUI:0018B0* + ID_OUI_FROM_DATABASE=Nortel -OUI:001794* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc +OUI:0018AE* + ID_OUI_FROM_DATABASE=TVT CO.,LTD -OUI:00178D* - ID_OUI_FROM_DATABASE=Checkpoint Systems, Inc. +OUI:0018A2* + ID_OUI_FROM_DATABASE=XIP Technology AB + +OUI:0018A9* + ID_OUI_FROM_DATABASE=Ethernet Direct Corporation OUI:00177C* ID_OUI_FROM_DATABASE=Smartlink Network Systems Limited @@ -37850,6 +38948,24 @@ OUI:001765* OUI:001767* ID_OUI_FROM_DATABASE=Earforce AS +OUI:001759* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:001880* + ID_OUI_FROM_DATABASE=Maxim Integrated Products + +OUI:00186D* + ID_OUI_FROM_DATABASE=Zhenjiang Sapphire Electronic Industry CO. + +OUI:001872* + ID_OUI_FROM_DATABASE=Expertise Engineering + +OUI:001874* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:001879* + ID_OUI_FROM_DATABASE=dSys + OUI:00185A* ID_OUI_FROM_DATABASE=uControl, Inc. @@ -37889,8 +39005,8 @@ OUI:00182A* OUI:001836* ID_OUI_FROM_DATABASE=Reliance Electric Limited -OUI:001759* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc +OUI:001823* + ID_OUI_FROM_DATABASE=Delta Electronics, Inc. OUI:001754* ID_OUI_FROM_DATABASE=Arkino HiTOP Corporation Limited @@ -37916,30 +39032,6 @@ OUI:00173A* OUI:00172E* ID_OUI_FROM_DATABASE=FXC Inc. -OUI:001727* - ID_OUI_FROM_DATABASE=Thermo Ramsey Italia s.r.l. - -OUI:001722* - ID_OUI_FROM_DATABASE=Hanazeder Electronic GmbH - -OUI:00171B* - ID_OUI_FROM_DATABASE=Innovation Lab Corp. - -OUI:001714* - ID_OUI_FROM_DATABASE=BR Controls Nederland bv - -OUI:001716* - ID_OUI_FROM_DATABASE=Qno Technology Inc. - -OUI:0017F4* - ID_OUI_FROM_DATABASE=ZERON ALLIANCE - -OUI:0017F9* - ID_OUI_FROM_DATABASE=Forcom Sp. z o.o. - -OUI:001800* - ID_OUI_FROM_DATABASE=UNIGRAND LTD - OUI:0017ED* ID_OUI_FROM_DATABASE=WooJooIT Ltd. @@ -37961,23 +39053,29 @@ OUI:0017D0* OUI:0017C4* ID_OUI_FROM_DATABASE=Quanta Microsystems, INC. -OUI:001880* - ID_OUI_FROM_DATABASE=Maxim Integrated Products +OUI:0017B8* + ID_OUI_FROM_DATABASE=NOVATRON CO., LTD. -OUI:00186D* - ID_OUI_FROM_DATABASE=Zhenjiang Sapphire Electronic Industry CO. +OUI:0017BD* + ID_OUI_FROM_DATABASE=Tibetsystem -OUI:001872* - ID_OUI_FROM_DATABASE=Expertise Engineering +OUI:00189D* + ID_OUI_FROM_DATABASE=Navcast Inc. -OUI:001874* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc +OUI:001893* + ID_OUI_FROM_DATABASE=SHENZHEN PHOTON BROADBAND TECHNOLOGY CO.,LTD -OUI:001879* - ID_OUI_FROM_DATABASE=dSys +OUI:001898* + ID_OUI_FROM_DATABASE=KINGSTATE ELECTRONICS CORPORATION -OUI:001686* - ID_OUI_FROM_DATABASE=Karl Storz Imaging +OUI:001891* + ID_OUI_FROM_DATABASE=Zhongshan General K-mate Electronics Co., Ltd + +OUI:001885* + ID_OUI_FROM_DATABASE=Avigilon Corporation + +OUI:00188C* + ID_OUI_FROM_DATABASE=Mobile Action Technology Inc. OUI:00167F* ID_OUI_FROM_DATABASE=Bluebird Soft Inc. @@ -38009,35 +39107,86 @@ OUI:001666* OUI:00165F* ID_OUI_FROM_DATABASE=Fairmount Automation +OUI:00165A* + ID_OUI_FROM_DATABASE=Harman Specialty Group + +OUI:001653* + ID_OUI_FROM_DATABASE=LEGO System A/S IE Electronics Division + +OUI:0016DF* + ID_OUI_FROM_DATABASE=Lundinova AB + +OUI:0016DA* + ID_OUI_FROM_DATABASE=Futronic Technology Co. Ltd. + +OUI:0016D5* + ID_OUI_FROM_DATABASE=Synccom Co., Ltd + +OUI:0016C9* + ID_OUI_FROM_DATABASE=NAT Seattle, Inc. + +OUI:0016D0* + ID_OUI_FROM_DATABASE=ATech elektronika d.o.o. + +OUI:0016BD* + ID_OUI_FROM_DATABASE=ATI Industrial Automation + +OUI:0016C2* + ID_OUI_FROM_DATABASE=Avtec Systems Inc + +OUI:0016BB* + ID_OUI_FROM_DATABASE=Law-Chain Computer Technology Co Ltd + OUI:0016AA* ID_OUI_FROM_DATABASE=Kei Communication Technology Inc. OUI:0016AF* ID_OUI_FROM_DATABASE=Shenzhen Union Networks Equipment Co.,Ltd. -OUI:0016A5* - ID_OUI_FROM_DATABASE=Tandberg Storage ASA +OUI:00162A* + ID_OUI_FROM_DATABASE=Antik computers & communications s.r.o. -OUI:001699* - ID_OUI_FROM_DATABASE=Tonic DVB Marketing Ltd +OUI:001623* + ID_OUI_FROM_DATABASE=Interval Media -OUI:0016A0* - ID_OUI_FROM_DATABASE=Auto-Maskin +OUI:001617* + ID_OUI_FROM_DATABASE=MSI -OUI:001692* - ID_OUI_FROM_DATABASE=Scientific-Atlanta, Inc. +OUI:00161E* + ID_OUI_FROM_DATABASE=Woojinnet -OUI:001694* - ID_OUI_FROM_DATABASE=Sennheiser Communications A/S +OUI:00160D* + ID_OUI_FROM_DATABASE=Be Here Corporation -OUI:00168D* - ID_OUI_FROM_DATABASE=KORWIN CO., Ltd. +OUI:001606* + ID_OUI_FROM_DATABASE=Ideal Industries -OUI:00165A* - ID_OUI_FROM_DATABASE=Harman Specialty Group +OUI:0015FA* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:001653* - ID_OUI_FROM_DATABASE=LEGO System A/S IE Electronics Division +OUI:0015F5* + ID_OUI_FROM_DATABASE=Sustainable Energy Systems + +OUI:0015F4* + ID_OUI_FROM_DATABASE=Eventide + +OUI:001705* + ID_OUI_FROM_DATABASE=Methode Electronics + +OUI:00170A* + ID_OUI_FROM_DATABASE=INEW DIGITAL COMPANY + +OUI:0016F9* + ID_OUI_FROM_DATABASE=CETRTA POT, d.o.o., Kranj + +OUI:0016F2* + ID_OUI_FROM_DATABASE=Dmobile System Co., Ltd. + +OUI:0016F7* + ID_OUI_FROM_DATABASE=L-3 Communications, Aviation Recorders + +OUI:0016E6* + ID_OUI_FROM_DATABASE=GIGA-BYTE TECHNOLOGY CO.,LTD. OUI:00164C* ID_OUI_FROM_DATABASE=PLANET INT Co., Ltd @@ -38063,11 +39212,26 @@ OUI:00162F* OUI:001630* ID_OUI_FROM_DATABASE=Vativ Technologies -OUI:0015F5* - ID_OUI_FROM_DATABASE=Sustainable Energy Systems +OUI:0016A5* + ID_OUI_FROM_DATABASE=Tandberg Storage ASA -OUI:0015F4* - ID_OUI_FROM_DATABASE=Eventide +OUI:001699* + ID_OUI_FROM_DATABASE=Tonic DVB Marketing Ltd + +OUI:0016A0* + ID_OUI_FROM_DATABASE=Auto-Maskin + +OUI:001692* + ID_OUI_FROM_DATABASE=Scientific-Atlanta, Inc. + +OUI:001694* + ID_OUI_FROM_DATABASE=Sennheiser Communications A/S + +OUI:00168D* + ID_OUI_FROM_DATABASE=KORWIN CO., Ltd. + +OUI:001686* + ID_OUI_FROM_DATABASE=Karl Storz Imaging OUI:0015EE* ID_OUI_FROM_DATABASE=Omnex Control Systems @@ -38090,122 +39254,68 @@ OUI:0015D8* OUI:0015CA* ID_OUI_FROM_DATABASE=TeraRecon, Inc. -OUI:001598* - ID_OUI_FROM_DATABASE=Kolektor group - -OUI:001593* - ID_OUI_FROM_DATABASE=U4EA Technologies Inc. - -OUI:00158C* - ID_OUI_FROM_DATABASE=Liab ApS - -OUI:001586* - ID_OUI_FROM_DATABASE=Xiamen Overseas Chinese Electronic Co., Ltd. - -OUI:001585* - ID_OUI_FROM_DATABASE=Aonvision Technolopy Corp. - -OUI:001587* - ID_OUI_FROM_DATABASE=Takenaka Seisakusho Co.,Ltd - -OUI:001580* - ID_OUI_FROM_DATABASE=U-WAY CORPORATION - -OUI:00157B* - ID_OUI_FROM_DATABASE=Leuze electronic GmbH + Co. KG - -OUI:001576* - ID_OUI_FROM_DATABASE=LABiTec - Labor Biomedical Technologies GmbH - -OUI:00156A* - ID_OUI_FROM_DATABASE=DG2L Technologies Pvt. Ltd. - -OUI:00156F* - ID_OUI_FROM_DATABASE=Xiranet Communications GmbH - -OUI:0016DF* - ID_OUI_FROM_DATABASE=Lundinova AB - -OUI:0016DA* - ID_OUI_FROM_DATABASE=Futronic Technology Co. Ltd. - -OUI:0016D5* - ID_OUI_FROM_DATABASE=Synccom Co., Ltd - -OUI:0016C9* - ID_OUI_FROM_DATABASE=NAT Seattle, Inc. +OUI:0015BC* + ID_OUI_FROM_DATABASE=Develco -OUI:0016D0* - ID_OUI_FROM_DATABASE=ATech elektronika d.o.o. +OUI:0015B5* + ID_OUI_FROM_DATABASE=CI Network Corp. -OUI:0016BD* - ID_OUI_FROM_DATABASE=ATI Industrial Automation +OUI:0015B0* + ID_OUI_FROM_DATABASE=AUTOTELENET CO.,LTD -OUI:0016C2* - ID_OUI_FROM_DATABASE=Avtec Systems Inc +OUI:0015AB* + ID_OUI_FROM_DATABASE=PRO CO SOUND INC -OUI:0016BB* - ID_OUI_FROM_DATABASE=Law-Chain Computer Technology Co Ltd +OUI:0015A6* + ID_OUI_FROM_DATABASE=Digital Electronics Products Ltd. -OUI:00162A* - ID_OUI_FROM_DATABASE=Antik computers & communications s.r.o. +OUI:00159F* + ID_OUI_FROM_DATABASE=Terascala, Inc. -OUI:001623* - ID_OUI_FROM_DATABASE=Interval Media +OUI:001598* + ID_OUI_FROM_DATABASE=Kolektor group -OUI:001617* - ID_OUI_FROM_DATABASE=MSI +OUI:001727* + ID_OUI_FROM_DATABASE=Thermo Ramsey Italia s.r.l. -OUI:00161E* - ID_OUI_FROM_DATABASE=Woojinnet +OUI:001722* + ID_OUI_FROM_DATABASE=Hanazeder Electronic GmbH -OUI:00160D* - ID_OUI_FROM_DATABASE=Be Here Corporation +OUI:00171B* + ID_OUI_FROM_DATABASE=Innovation Lab Corp. -OUI:001606* - ID_OUI_FROM_DATABASE=Ideal Industries +OUI:001714* + ID_OUI_FROM_DATABASE=BR Controls Nederland bv -OUI:0015FA* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc +OUI:001716* + ID_OUI_FROM_DATABASE=Qno Technology Inc. -OUI:001563* +OUI:00170F* ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:001557* - ID_OUI_FROM_DATABASE=Olivetti - -OUI:00155C* - ID_OUI_FROM_DATABASE=Dresser Wayne - -OUI:00154B* - ID_OUI_FROM_DATABASE=Wonde Proud Technology Co., Ltd - -OUI:001550* - ID_OUI_FROM_DATABASE=Nits Technology Inc - -OUI:001545* - ID_OUI_FROM_DATABASE=SEECODE Co., Ltd. +OUI:0014AA* + ID_OUI_FROM_DATABASE=Ashly Audio, Inc. -OUI:00153E* - ID_OUI_FROM_DATABASE=Q-Matic Sweden AB +OUI:00149D* + ID_OUI_FROM_DATABASE=Sound ID Inc. -OUI:0015BC* - ID_OUI_FROM_DATABASE=Develco +OUI:001498* + ID_OUI_FROM_DATABASE=Viking Design Technology -OUI:0015B5* - ID_OUI_FROM_DATABASE=CI Network Corp. +OUI:00148A* + ID_OUI_FROM_DATABASE=Elin Ebg Traction Gmbh -OUI:0015B0* - ID_OUI_FROM_DATABASE=AUTOTELENET CO.,LTD +OUI:001491* + ID_OUI_FROM_DATABASE=Daniels Electronics Ltd. dbo Codan Rado Communications -OUI:0015AB* - ID_OUI_FROM_DATABASE=PRO CO SOUND INC +OUI:001485* + ID_OUI_FROM_DATABASE=Giga-Byte -OUI:0015A6* - ID_OUI_FROM_DATABASE=Digital Electronics Products Ltd. +OUI:00147E* + ID_OUI_FROM_DATABASE=InnerWireless -OUI:00159F* - ID_OUI_FROM_DATABASE=Terascala, Inc. +OUI:001478* + ID_OUI_FROM_DATABASE=ShenZhen TP-LINK Technologies Co., Ltd. OUI:001532* ID_OUI_FROM_DATABASE=Consumer Technologies Group, LLC @@ -38237,8 +39347,11 @@ OUI:001515* OUI:001510* ID_OUI_FROM_DATABASE=Techsphere Co., Ltd -OUI:001453* - ID_OUI_FROM_DATABASE=ADVANTECH TECHNOLOGIES CO.,LTD +OUI:001502* + ID_OUI_FROM_DATABASE=BETA tech + +OUI:001509* + ID_OUI_FROM_DATABASE=Plus Technology Co., Ltd OUI:00144E* ID_OUI_FROM_DATABASE=SRISA @@ -38261,65 +39374,59 @@ OUI:00143B* OUI:001436* ID_OUI_FROM_DATABASE=Qwerty Elektronik AB -OUI:00142A* - ID_OUI_FROM_DATABASE=Elitegroup Computer System Co., Ltd - -OUI:0014AB* - ID_OUI_FROM_DATABASE=Senhai Electronic Technology Co., Ltd. - -OUI:0014B0* - ID_OUI_FROM_DATABASE=Naeil Community +OUI:001423* + ID_OUI_FROM_DATABASE=J-S Co. NEUROCOM -OUI:0014B4* - ID_OUI_FROM_DATABASE=General Dynamics United Kingdom Ltd +OUI:001593* + ID_OUI_FROM_DATABASE=U4EA Technologies Inc. -OUI:0014A9* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc +OUI:00158C* + ID_OUI_FROM_DATABASE=Liab ApS -OUI:0014AA* - ID_OUI_FROM_DATABASE=Ashly Audio, Inc. +OUI:001586* + ID_OUI_FROM_DATABASE=Xiamen Overseas Chinese Electronic Co., Ltd. -OUI:00149D* - ID_OUI_FROM_DATABASE=Sound ID Inc. +OUI:001585* + ID_OUI_FROM_DATABASE=Aonvision Technolopy Corp. -OUI:001498* - ID_OUI_FROM_DATABASE=Viking Design Technology +OUI:001587* + ID_OUI_FROM_DATABASE=Takenaka Seisakusho Co.,Ltd -OUI:00148A* - ID_OUI_FROM_DATABASE=Elin Ebg Traction Gmbh +OUI:001580* + ID_OUI_FROM_DATABASE=U-WAY CORPORATION -OUI:001491* - ID_OUI_FROM_DATABASE=Daniels Electronics Ltd. dbo Codan Rado Communications +OUI:00157B* + ID_OUI_FROM_DATABASE=Leuze electronic GmbH + Co. KG -OUI:001485* - ID_OUI_FROM_DATABASE=Giga-Byte +OUI:001576* + ID_OUI_FROM_DATABASE=LABiTec - Labor Biomedical Technologies GmbH -OUI:001479* - ID_OUI_FROM_DATABASE=NEC Magnus Communications,Ltd. +OUI:00156A* + ID_OUI_FROM_DATABASE=DG2L Technologies Pvt. Ltd. -OUI:00147E* - ID_OUI_FROM_DATABASE=InnerWireless +OUI:00156F* + ID_OUI_FROM_DATABASE=Xiranet Communications GmbH -OUI:001478* - ID_OUI_FROM_DATABASE=ShenZhen TP-LINK Technologies Co., Ltd. +OUI:001563* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:001477* - ID_OUI_FROM_DATABASE=Nertec Inc. +OUI:0014FD* + ID_OUI_FROM_DATABASE=Thecus Technology Corp. -OUI:001472* - ID_OUI_FROM_DATABASE=China Broadband Wireless IP Standard Group +OUI:0014EF* + ID_OUI_FROM_DATABASE=TZero Technologies, Inc. -OUI:001466* - ID_OUI_FROM_DATABASE=Kleinhenz Elektronik GmbH +OUI:0014F1* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:00146B* - ID_OUI_FROM_DATABASE=Anagran, Inc. +OUI:0014F0* + ID_OUI_FROM_DATABASE=Business Security OL AB -OUI:00145F* - ID_OUI_FROM_DATABASE=ADITEC CO. LTD +OUI:0014EA* + ID_OUI_FROM_DATABASE=S Digm Inc. (Safe Paradigm Inc.) -OUI:001458* - ID_OUI_FROM_DATABASE=HS Automatic ApS +OUI:0014E5* + ID_OUI_FROM_DATABASE=Alticast OUI:0014E6* ID_OUI_FROM_DATABASE=AIM Infrarotmodule GmbH @@ -38348,56 +39455,56 @@ OUI:0014BA* OUI:0014B5* ID_OUI_FROM_DATABASE=PHYSIOMETRIX,INC -OUI:0013C7* - ID_OUI_FROM_DATABASE=IONOS Co.,Ltd. +OUI:0014AB* + ID_OUI_FROM_DATABASE=Senhai Electronic Technology Co., Ltd. -OUI:0013C0* - ID_OUI_FROM_DATABASE=Trix Tecnologia Ltda. +OUI:0014B0* + ID_OUI_FROM_DATABASE=Naeil Community -OUI:0013B6* - ID_OUI_FROM_DATABASE=Sling Media, Inc. +OUI:0014B4* + ID_OUI_FROM_DATABASE=General Dynamics United Kingdom Ltd -OUI:0013AF* - ID_OUI_FROM_DATABASE=NUMA Technology,Inc. +OUI:0014A9* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:0013B0* - ID_OUI_FROM_DATABASE=Jablotron +OUI:001557* + ID_OUI_FROM_DATABASE=Olivetti -OUI:0013AA* - ID_OUI_FROM_DATABASE=ALS & TEC Ltd. +OUI:00155C* + ID_OUI_FROM_DATABASE=Dresser Wayne -OUI:0013A3* - ID_OUI_FROM_DATABASE=Siemens Com CPE Devices +OUI:00154B* + ID_OUI_FROM_DATABASE=Wonde Proud Technology Co., Ltd -OUI:00139E* - ID_OUI_FROM_DATABASE=Ciara Technologies Inc. +OUI:001550* + ID_OUI_FROM_DATABASE=Nits Technology Inc -OUI:001502* - ID_OUI_FROM_DATABASE=BETA tech +OUI:001545* + ID_OUI_FROM_DATABASE=SEECODE Co., Ltd. -OUI:001509* - ID_OUI_FROM_DATABASE=Plus Technology Co., Ltd +OUI:00153E* + ID_OUI_FROM_DATABASE=Q-Matic Sweden AB -OUI:0014FD* - ID_OUI_FROM_DATABASE=Thecus Technology Corp. +OUI:001477* + ID_OUI_FROM_DATABASE=Nertec Inc. -OUI:0014EF* - ID_OUI_FROM_DATABASE=TZero Technologies, Inc. +OUI:001472* + ID_OUI_FROM_DATABASE=China Broadband Wireless IP Standard Group -OUI:0014F1* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc +OUI:001466* + ID_OUI_FROM_DATABASE=Kleinhenz Elektronik GmbH -OUI:0014F0* - ID_OUI_FROM_DATABASE=Business Security OL AB +OUI:00146B* + ID_OUI_FROM_DATABASE=Anagran, Inc. -OUI:0014EA* - ID_OUI_FROM_DATABASE=S Digm Inc. (Safe Paradigm Inc.) +OUI:00145F* + ID_OUI_FROM_DATABASE=ADITEC CO. LTD -OUI:0014E5* - ID_OUI_FROM_DATABASE=Alticast +OUI:001458* + ID_OUI_FROM_DATABASE=HS Automatic ApS -OUI:001423* - ID_OUI_FROM_DATABASE=J-S Co. NEUROCOM +OUI:001453* + ID_OUI_FROM_DATABASE=ADVANTECH TECHNOLOGIES CO.,LTD OUI:001419* ID_OUI_FROM_DATABASE=SIDSA @@ -38423,20 +39530,38 @@ OUI:0013F8* OUI:0013F1* ID_OUI_FROM_DATABASE=AMOD Technology Co., Ltd. -OUI:0013F7* - ID_OUI_FROM_DATABASE=SMC Networks, Inc. +OUI:00135C* + ID_OUI_FROM_DATABASE=OnSite Systems, Inc. -OUI:0013E7* - ID_OUI_FROM_DATABASE=Halcro +OUI:001355* + ID_OUI_FROM_DATABASE=TOMEN Cyber-business Solutions, Inc. -OUI:0013DB* - ID_OUI_FROM_DATABASE=SHOEI Electric Co.,Ltd +OUI:001356* + ID_OUI_FROM_DATABASE=FLIR Radiation Inc -OUI:0013CC* - ID_OUI_FROM_DATABASE=Tall Maple Systems +OUI:001350* + ID_OUI_FROM_DATABASE=Silver Spring Networks, Inc -OUI:001283* - ID_OUI_FROM_DATABASE=Nortel Networks +OUI:001344* + ID_OUI_FROM_DATABASE=Fargo Electronics Inc. + +OUI:001349* + ID_OUI_FROM_DATABASE=ZyXEL Communications Corporation + +OUI:001343* + ID_OUI_FROM_DATABASE=Matsushita Electronic Components (Europe) GmbH + +OUI:00133D* + ID_OUI_FROM_DATABASE=Micro Memory Curtiss Wright Co + +OUI:00132A* + ID_OUI_FROM_DATABASE=Sitronics Telecom Solutions + +OUI:001331* + ID_OUI_FROM_DATABASE=CellPoint Connect + +OUI:001336* + ID_OUI_FROM_DATABASE=Tianjin 712 Communication Broadcasting co., ltd. OUI:001284* ID_OUI_FROM_DATABASE=Lab33 Srl @@ -38462,62 +39587,74 @@ OUI:001264* OUI:00125A* ID_OUI_FROM_DATABASE=Microsoft Corporation -OUI:00125F* - ID_OUI_FROM_DATABASE=AWIND Inc. +OUI:0012FA* + ID_OUI_FROM_DATABASE=THX LTD -OUI:001255* - ID_OUI_FROM_DATABASE=NetEffect Incorporated +OUI:001301* + ID_OUI_FROM_DATABASE=IronGate S.L. -OUI:00124E* - ID_OUI_FROM_DATABASE=XAC AUTOMATION CORP. +OUI:001307* + ID_OUI_FROM_DATABASE=Paravirtual Corporation -OUI:001247* - ID_OUI_FROM_DATABASE=Samsung Electronics Co., Ltd. +OUI:0012F5* + ID_OUI_FROM_DATABASE=Imarda New Zealand Limited -OUI:001248* - ID_OUI_FROM_DATABASE=EMC Corporation (Kashya) +OUI:0012EB* + ID_OUI_FROM_DATABASE=PDH Solutions, LLC -OUI:001242* - ID_OUI_FROM_DATABASE=Millennial Net +OUI:0012DE* + ID_OUI_FROM_DATABASE=Radio Components Sweden AB -OUI:001236* - ID_OUI_FROM_DATABASE=ConSentry Networks +OUI:0012DD* + ID_OUI_FROM_DATABASE=Shengqu Information Technology (Shanghai) Co., Ltd. -OUI:00123B* - ID_OUI_FROM_DATABASE=KeRo Systems ApS +OUI:0012E4* + ID_OUI_FROM_DATABASE=ZIEHL industrie-electronik GmbH + Co KG -OUI:001368* - ID_OUI_FROM_DATABASE=Saab Danmark A/S +OUI:0012D8* + ID_OUI_FROM_DATABASE=International Games System Co., Ltd. -OUI:00135C* - ID_OUI_FROM_DATABASE=OnSite Systems, Inc. +OUI:0013B6* + ID_OUI_FROM_DATABASE=Sling Media, Inc. -OUI:001355* - ID_OUI_FROM_DATABASE=TOMEN Cyber-business Solutions, Inc. +OUI:0013AF* + ID_OUI_FROM_DATABASE=NUMA Technology,Inc. -OUI:001356* - ID_OUI_FROM_DATABASE=FLIR Radiation Inc +OUI:0013B0* + ID_OUI_FROM_DATABASE=Jablotron -OUI:001350* - ID_OUI_FROM_DATABASE=Silver Spring Networks, Inc +OUI:0013AA* + ID_OUI_FROM_DATABASE=ALS & TEC Ltd. -OUI:001344* - ID_OUI_FROM_DATABASE=Fargo Electronics Inc. +OUI:0013A3* + ID_OUI_FROM_DATABASE=Siemens Com CPE Devices -OUI:001349* - ID_OUI_FROM_DATABASE=ZyXEL Communications Corporation +OUI:00139E* + ID_OUI_FROM_DATABASE=Ciara Technologies Inc. -OUI:001343* - ID_OUI_FROM_DATABASE=Matsushita Electronic Components (Europe) GmbH +OUI:00139D* + ID_OUI_FROM_DATABASE=Marvell Hispana S.L. -OUI:00133D* - ID_OUI_FROM_DATABASE=Micro Memory Curtiss Wright Co +OUI:0012A8* + ID_OUI_FROM_DATABASE=intec GmbH -OUI:001397* - ID_OUI_FROM_DATABASE=Oracle Corporation +OUI:0012A2* + ID_OUI_FROM_DATABASE=VITA -OUI:00139D* - ID_OUI_FROM_DATABASE=Marvell Hispana S.L. +OUI:0012A1* + ID_OUI_FROM_DATABASE=BluePacket Communications Co., Ltd. + +OUI:00129C* + ID_OUI_FROM_DATABASE=Yulinet + +OUI:001290* + ID_OUI_FROM_DATABASE=KYOWA Electric & Machinery Corp. + +OUI:001295* + ID_OUI_FROM_DATABASE=Aiware Inc. + +OUI:001283* + ID_OUI_FROM_DATABASE=Nortel Networks OUI:00138B* ID_OUI_FROM_DATABASE=Phantom Technologies LLC @@ -38546,59 +39683,44 @@ OUI:001375* OUI:001363* ID_OUI_FROM_DATABASE=Verascape, Inc. -OUI:0012FA* - ID_OUI_FROM_DATABASE=THX LTD - -OUI:001301* - ID_OUI_FROM_DATABASE=IronGate S.L. - -OUI:001307* - ID_OUI_FROM_DATABASE=Paravirtual Corporation - -OUI:0012F5* - ID_OUI_FROM_DATABASE=Imarda New Zealand Limited - -OUI:0012EB* - ID_OUI_FROM_DATABASE=PDH Solutions, LLC - -OUI:0012DE* - ID_OUI_FROM_DATABASE=Radio Components Sweden AB +OUI:001368* + ID_OUI_FROM_DATABASE=Saab Danmark A/S -OUI:0012DD* - ID_OUI_FROM_DATABASE=Shengqu Information Technology (Shanghai) Co., Ltd. +OUI:0013F7* + ID_OUI_FROM_DATABASE=SMC Networks, Inc. -OUI:0012E4* - ID_OUI_FROM_DATABASE=ZIEHL industrie-electronik GmbH + Co KG +OUI:0013E7* + ID_OUI_FROM_DATABASE=Halcro -OUI:0012AF* - ID_OUI_FROM_DATABASE=ELPRO Technologies +OUI:0013DB* + ID_OUI_FROM_DATABASE=SHOEI Electric Co.,Ltd -OUI:0012A8* - ID_OUI_FROM_DATABASE=intec GmbH +OUI:0013CC* + ID_OUI_FROM_DATABASE=Tall Maple Systems -OUI:0012A2* - ID_OUI_FROM_DATABASE=VITA +OUI:0013C7* + ID_OUI_FROM_DATABASE=IONOS Co.,Ltd. -OUI:0012A1* - ID_OUI_FROM_DATABASE=BluePacket Communications Co., Ltd. +OUI:0013C0* + ID_OUI_FROM_DATABASE=Trix Tecnologia Ltda. -OUI:00129C* - ID_OUI_FROM_DATABASE=Yulinet +OUI:0012CB* + ID_OUI_FROM_DATABASE=CSS Inc. -OUI:001290* - ID_OUI_FROM_DATABASE=KYOWA Electric & Machinery Corp. +OUI:0012C5* + ID_OUI_FROM_DATABASE=V-Show Technology (China) Co.,Ltd -OUI:001295* - ID_OUI_FROM_DATABASE=Aiware Inc. +OUI:0012CC* + ID_OUI_FROM_DATABASE=Bitatek CO., LTD -OUI:00132A* - ID_OUI_FROM_DATABASE=Sitronics Telecom Solutions +OUI:0012B4* + ID_OUI_FROM_DATABASE=Work Microwave GmbH -OUI:001331* - ID_OUI_FROM_DATABASE=CellPoint Connect +OUI:0012BB* + ID_OUI_FROM_DATABASE=Telecommunications Industry Association TR-41 Committee -OUI:001336* - ID_OUI_FROM_DATABASE=Tianjin 712 Communication Broadcasting co., ltd. +OUI:0012AF* + ID_OUI_FROM_DATABASE=ELPRO Technologies OUI:001324* ID_OUI_FROM_DATABASE=Schneider Electric Ultra Terminal @@ -38618,47 +39740,53 @@ OUI:00130D* OUI:001308* ID_OUI_FROM_DATABASE=Nuvera Fuel Cells -OUI:00122F* - ID_OUI_FROM_DATABASE=Sanei Electric Inc. +OUI:001181* + ID_OUI_FROM_DATABASE=InterEnergy Co.Ltd, -OUI:001235* - ID_OUI_FROM_DATABASE=Andrew Corporation +OUI:00117B* + ID_OUI_FROM_DATABASE=Büchi Labortechnik AG -OUI:00122B* - ID_OUI_FROM_DATABASE=Virbiage Pty Ltd +OUI:00116F* + ID_OUI_FROM_DATABASE=Netforyou Co., LTD. -OUI:001212* - ID_OUI_FROM_DATABASE=PLUS Corporation +OUI:001168* + ID_OUI_FROM_DATABASE=HomeLogic LLC -OUI:001219* - ID_OUI_FROM_DATABASE=Ahead Communication Systems Inc +OUI:00115E* + ID_OUI_FROM_DATABASE=ProMinent Dosiertechnik GmbH -OUI:0012D8* - ID_OUI_FROM_DATABASE=International Games System Co., Ltd. +OUI:001157* + ID_OUI_FROM_DATABASE=Oki Electric Industry Co., Ltd. -OUI:0012CB* - ID_OUI_FROM_DATABASE=CSS Inc. +OUI:001158* + ID_OUI_FROM_DATABASE=Nortel Networks -OUI:0012C5* - ID_OUI_FROM_DATABASE=V-Show Technology (China) Co.,Ltd +OUI:001152* + ID_OUI_FROM_DATABASE=Eidsvoll Electronics AS -OUI:0012CC* - ID_OUI_FROM_DATABASE=Bitatek CO., LTD +OUI:0011A4* + ID_OUI_FROM_DATABASE=JStream Technologies Inc. -OUI:0012B4* - ID_OUI_FROM_DATABASE=Work Microwave GmbH +OUI:001198* + ID_OUI_FROM_DATABASE=Prism Media Products Limited -OUI:0012BB* - ID_OUI_FROM_DATABASE=Telecommunications Industry Association TR-41 Committee +OUI:00119D* + ID_OUI_FROM_DATABASE=Diginfo Technology Corporation -OUI:001206* - ID_OUI_FROM_DATABASE=iQuest (NZ) Ltd +OUI:00119E* + ID_OUI_FROM_DATABASE=Solectron Brazil -OUI:00120B* - ID_OUI_FROM_DATABASE=Chinasys Technologies Limited +OUI:00118E* + ID_OUI_FROM_DATABASE=Halytech Mace -OUI:00120C* - ID_OUI_FROM_DATABASE=CE-Infosys Pte Ltd +OUI:001193* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:001187* + ID_OUI_FROM_DATABASE=Category Solutions, Inc + +OUI:001182* + ID_OUI_FROM_DATABASE=IMI Norgren Ltd OUI:0011FF* ID_OUI_FROM_DATABASE=Digitro Tecnologia Ltda @@ -38678,92 +39806,77 @@ OUI:0011EF* OUI:0011E9* ID_OUI_FROM_DATABASE=STARNEX CO., LTD. -OUI:001187* - ID_OUI_FROM_DATABASE=Category Solutions, Inc - -OUI:001182* - ID_OUI_FROM_DATABASE=IMI Norgren Ltd - -OUI:001181* - ID_OUI_FROM_DATABASE=InterEnergy Co.Ltd, - -OUI:00117B* - ID_OUI_FROM_DATABASE=Büchi Labortechnik AG - -OUI:001174* - ID_OUI_FROM_DATABASE=Wibhu Technologies, Inc. - -OUI:00116F* - ID_OUI_FROM_DATABASE=Netforyou Co., LTD. +OUI:0011DD* + ID_OUI_FROM_DATABASE=FROMUS TEC. Co., Ltd. -OUI:001168* - ID_OUI_FROM_DATABASE=HomeLogic LLC +OUI:0011E2* + ID_OUI_FROM_DATABASE=Hua Jung Components Co., Ltd. -OUI:00115E* - ID_OUI_FROM_DATABASE=ProMinent Dosiertechnik GmbH +OUI:000FFA* + ID_OUI_FROM_DATABASE=Optinel Systems, Inc. -OUI:001157* - ID_OUI_FROM_DATABASE=Oki Electric Industry Co., Ltd. +OUI:000FFF* + ID_OUI_FROM_DATABASE=Control4 -OUI:001158* - ID_OUI_FROM_DATABASE=Nortel Networks +OUI:000FF1* + ID_OUI_FROM_DATABASE=nex-G Systems Pte.Ltd -OUI:000FB2* - ID_OUI_FROM_DATABASE=Broadband Pacenet (India) Pvt. Ltd. +OUI:000FE4* + ID_OUI_FROM_DATABASE=Pantech Co.,Ltd -OUI:000FA5* - ID_OUI_FROM_DATABASE=BWA Technology GmbH +OUI:000FEA* + ID_OUI_FROM_DATABASE=Giga-Byte Technology Co.,LTD. -OUI:000FB1* - ID_OUI_FROM_DATABASE=Cognio Inc. +OUI:000FE3* + ID_OUI_FROM_DATABASE=Damm Cellular Systems A/S -OUI:000FAC* - ID_OUI_FROM_DATABASE=IEEE 802.11 +OUI:000FD7* + ID_OUI_FROM_DATABASE=Harman Music Group -OUI:000F9C* - ID_OUI_FROM_DATABASE=Panduit Corp +OUI:001235* + ID_OUI_FROM_DATABASE=Andrew Corporation -OUI:000FA0* - ID_OUI_FROM_DATABASE=CANON KOREA BUSINESS SOLUTIONS INC. +OUI:00122B* + ID_OUI_FROM_DATABASE=Virbiage Pty Ltd -OUI:000F97* - ID_OUI_FROM_DATABASE=Avanex Corporation +OUI:001212* + ID_OUI_FROM_DATABASE=PLUS Corporation -OUI:000F8A* - ID_OUI_FROM_DATABASE=WideView +OUI:001219* + ID_OUI_FROM_DATABASE=Ahead Communication Systems Inc -OUI:000F89* - ID_OUI_FROM_DATABASE=Winnertec System Co., Ltd. +OUI:001206* + ID_OUI_FROM_DATABASE=iQuest (NZ) Ltd -OUI:000F90* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc +OUI:00120B* + ID_OUI_FROM_DATABASE=Chinasys Technologies Limited -OUI:000FD7* - ID_OUI_FROM_DATABASE=Harman Music Group +OUI:00120C* + ID_OUI_FROM_DATABASE=CE-Infosys Pte Ltd -OUI:000FD1* - ID_OUI_FROM_DATABASE=Applied Wireless Identifications Group, Inc. +OUI:001130* + ID_OUI_FROM_DATABASE=Allied Telesis (Hong Kong) Ltd. -OUI:000FD2* - ID_OUI_FROM_DATABASE=EWA Technologies, Inc. +OUI:00111E* + ID_OUI_FROM_DATABASE=EPSG (Ethernet Powerlink Standardization Group) -OUI:000FC4* - ID_OUI_FROM_DATABASE=NST co.,LTD. +OUI:00111F* + ID_OUI_FROM_DATABASE=Doremi Labs, Inc. -OUI:000FCB* - ID_OUI_FROM_DATABASE=3Com Ltd +OUI:001112* + ID_OUI_FROM_DATABASE=Honeywell CMSS -OUI:000FBF* - ID_OUI_FROM_DATABASE=DGT Sp. z o.o. +OUI:001118* + ID_OUI_FROM_DATABASE=BLX IC Design Corp., Ltd. -OUI:000FB8* - ID_OUI_FROM_DATABASE=CallURL Inc. +OUI:001105* + ID_OUI_FROM_DATABASE=Sunplus Technology Co., Ltd. -OUI:0011DD* - ID_OUI_FROM_DATABASE=FROMUS TEC. Co., Ltd. +OUI:00110C* + ID_OUI_FROM_DATABASE=Atmark Techno, Inc. -OUI:0011E2* - ID_OUI_FROM_DATABASE=Hua Jung Components Co., Ltd. +OUI:000FF9* + ID_OUI_FROM_DATABASE=Valcretec, Inc. OUI:0011CF* ID_OUI_FROM_DATABASE=Thrane & Thrane A/S @@ -38789,59 +39902,38 @@ OUI:0011BE* OUI:0011BD* ID_OUI_FROM_DATABASE=Bombardier Transportation -OUI:001105* - ID_OUI_FROM_DATABASE=Sunplus Technology Co., Ltd. - -OUI:00110C* - ID_OUI_FROM_DATABASE=Atmark Techno, Inc. - -OUI:000FF9* - ID_OUI_FROM_DATABASE=Valcretec, Inc. - -OUI:000FFA* - ID_OUI_FROM_DATABASE=Optinel Systems, Inc. - -OUI:000FFF* - ID_OUI_FROM_DATABASE=Control4 - -OUI:000FF1* - ID_OUI_FROM_DATABASE=nex-G Systems Pte.Ltd - -OUI:000FE4* - ID_OUI_FROM_DATABASE=Pantech Co.,Ltd - -OUI:000FEA* - ID_OUI_FROM_DATABASE=Giga-Byte Technology Co.,LTD. - -OUI:000FE3* - ID_OUI_FROM_DATABASE=Damm Cellular Systems A/S - OUI:0011AB* ID_OUI_FROM_DATABASE=TRUSTABLE TECHNOLOGY CO.,LTD. OUI:0011B0* ID_OUI_FROM_DATABASE=Fortelink Inc. -OUI:0011A4* - ID_OUI_FROM_DATABASE=JStream Technologies Inc. +OUI:00125F* + ID_OUI_FROM_DATABASE=AWIND Inc. -OUI:001198* - ID_OUI_FROM_DATABASE=Prism Media Products Limited +OUI:001255* + ID_OUI_FROM_DATABASE=NetEffect Incorporated -OUI:00119D* - ID_OUI_FROM_DATABASE=Diginfo Technology Corporation +OUI:00124E* + ID_OUI_FROM_DATABASE=XAC AUTOMATION CORP. -OUI:00119E* - ID_OUI_FROM_DATABASE=Solectron Brazil +OUI:001247* + ID_OUI_FROM_DATABASE=Samsung Electronics Co., Ltd. -OUI:00118E* - ID_OUI_FROM_DATABASE=Halytech Mace +OUI:001248* + ID_OUI_FROM_DATABASE=EMC Corporation (Kashya) -OUI:001193* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc +OUI:001242* + ID_OUI_FROM_DATABASE=Millennial Net -OUI:001152* - ID_OUI_FROM_DATABASE=Eidsvoll Electronics AS +OUI:001236* + ID_OUI_FROM_DATABASE=ConSentry Networks + +OUI:00123B* + ID_OUI_FROM_DATABASE=KeRo Systems ApS + +OUI:00122F* + ID_OUI_FROM_DATABASE=Sanei Electric Inc. OUI:00114F* ID_OUI_FROM_DATABASE=US Digital Television, Inc @@ -38864,20 +39956,23 @@ OUI:001136* OUI:00112C* ID_OUI_FROM_DATABASE=IZT GmbH -OUI:001130* - ID_OUI_FROM_DATABASE=Allied Telesis (Hong Kong) Ltd. +OUI:000F77* + ID_OUI_FROM_DATABASE=DENTUM CO.,LTD -OUI:00111E* - ID_OUI_FROM_DATABASE=EPSG (Ethernet Powerlink Standardization Group) +OUI:000F71* + ID_OUI_FROM_DATABASE=Sanmei Electronics Co.,Ltd -OUI:00111F* - ID_OUI_FROM_DATABASE=Doremi Labs, Inc. +OUI:000F78* + ID_OUI_FROM_DATABASE=Datacap Systems Inc -OUI:001112* - ID_OUI_FROM_DATABASE=Honeywell CMSS +OUI:000F6A* + ID_OUI_FROM_DATABASE=Nortel Networks -OUI:001118* - ID_OUI_FROM_DATABASE=BLX IC Design Corp., Ltd. +OUI:000F65* + ID_OUI_FROM_DATABASE=icube Corp. + +OUI:000F5E* + ID_OUI_FROM_DATABASE=Veo OUI:000F58* ID_OUI_FROM_DATABASE=Adder Technology Limited @@ -38915,9 +40010,6 @@ OUI:000F32* OUI:000F2B* ID_OUI_FROM_DATABASE=GREENBELL SYSTEMS -OUI:000E98* - ID_OUI_FROM_DATABASE=HME Clear-Com LTD. - OUI:000E93* ID_OUI_FROM_DATABASE=Milénio 3 Sistemas Electrónicos, Lda. @@ -38939,6 +40031,36 @@ OUI:000E74* OUI:000E79* ID_OUI_FROM_DATABASE=Ample Communications Inc. +OUI:000E71* + ID_OUI_FROM_DATABASE=Gemstar Technology Development Ltd. + +OUI:000E6C* + ID_OUI_FROM_DATABASE=Device Drivers Limited + +OUI:000EB8* + ID_OUI_FROM_DATABASE=Iiga co.,Ltd + +OUI:000EB7* + ID_OUI_FROM_DATABASE=Knovative, Inc. + +OUI:000EBE* + ID_OUI_FROM_DATABASE=B&B Electronics Manufacturing Co. + +OUI:000EB2* + ID_OUI_FROM_DATABASE=Micro-Research Finland Oy + +OUI:000EAB* + ID_OUI_FROM_DATABASE=Cray Inc + +OUI:000EA5* + ID_OUI_FROM_DATABASE=BLIP Systems + +OUI:000E9F* + ID_OUI_FROM_DATABASE=TEMIC SDS GmbH + +OUI:000E98* + ID_OUI_FROM_DATABASE=HME Clear-Com LTD. + OUI:000F24* ID_OUI_FROM_DATABASE=Cisco Systems, Inc @@ -38963,35 +40085,62 @@ OUI:000F00* OUI:000F05* ID_OUI_FROM_DATABASE=3B SYSTEM INC. +OUI:000EF9* + ID_OUI_FROM_DATABASE=REA Elektronik GmbH + +OUI:000FAC* + ID_OUI_FROM_DATABASE=IEEE 802.11 + +OUI:000F9C* + ID_OUI_FROM_DATABASE=Panduit Corp + +OUI:000FA0* + ID_OUI_FROM_DATABASE=CANON KOREA BUSINESS SOLUTIONS INC. + +OUI:000F97* + ID_OUI_FROM_DATABASE=Avanex Corporation + +OUI:000F8A* + ID_OUI_FROM_DATABASE=WideView + +OUI:000F89* + ID_OUI_FROM_DATABASE=Winnertec System Co., Ltd. + +OUI:000F90* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + OUI:000F7D* ID_OUI_FROM_DATABASE=Xirrus OUI:000F84* ID_OUI_FROM_DATABASE=Astute Networks, Inc. -OUI:000F77* - ID_OUI_FROM_DATABASE=DENTUM CO.,LTD +OUI:000FD1* + ID_OUI_FROM_DATABASE=Applied Wireless Identifications Group, Inc. -OUI:000F71* - ID_OUI_FROM_DATABASE=Sanmei Electronics Co.,Ltd +OUI:000FD2* + ID_OUI_FROM_DATABASE=EWA Technologies, Inc. -OUI:000F78* - ID_OUI_FROM_DATABASE=Datacap Systems Inc +OUI:000FC4* + ID_OUI_FROM_DATABASE=NST co.,LTD. -OUI:000F6A* - ID_OUI_FROM_DATABASE=Nortel Networks +OUI:000FCB* + ID_OUI_FROM_DATABASE=3Com Ltd -OUI:000F65* - ID_OUI_FROM_DATABASE=icube Corp. +OUI:000FBF* + ID_OUI_FROM_DATABASE=DGT Sp. z o.o. -OUI:000F5E* - ID_OUI_FROM_DATABASE=Veo +OUI:000FB8* + ID_OUI_FROM_DATABASE=CallURL Inc. -OUI:000E71* - ID_OUI_FROM_DATABASE=Gemstar Technology Development Ltd. +OUI:000FB2* + ID_OUI_FROM_DATABASE=Broadband Pacenet (India) Pvt. Ltd. -OUI:000E6C* - ID_OUI_FROM_DATABASE=Device Drivers Limited +OUI:000FA5* + ID_OUI_FROM_DATABASE=BWA Technology GmbH + +OUI:000FB1* + ID_OUI_FROM_DATABASE=Cognio Inc. OUI:000E65* ID_OUI_FROM_DATABASE=TransCore @@ -39017,63 +40166,6 @@ OUI:000E40* OUI:000E3F* ID_OUI_FROM_DATABASE=Soronti, Inc. -OUI:000EC5* - ID_OUI_FROM_DATABASE=Digital Multitools Inc - -OUI:000EB8* - ID_OUI_FROM_DATABASE=Iiga co.,Ltd - -OUI:000EB7* - ID_OUI_FROM_DATABASE=Knovative, Inc. - -OUI:000EBE* - ID_OUI_FROM_DATABASE=B&B Electronics Manufacturing Co. - -OUI:000EB2* - ID_OUI_FROM_DATABASE=Micro-Research Finland Oy - -OUI:000EAB* - ID_OUI_FROM_DATABASE=Cray Inc - -OUI:000EA5* - ID_OUI_FROM_DATABASE=BLIP Systems - -OUI:000E9F* - ID_OUI_FROM_DATABASE=TEMIC SDS GmbH - -OUI:000E0A* - ID_OUI_FROM_DATABASE=SAKUMA DESIGN OFFICE - -OUI:000E12* - ID_OUI_FROM_DATABASE=Adaptive Micro Systems Inc. - -OUI:000E04* - ID_OUI_FROM_DATABASE=CMA/Microdialysis AB - -OUI:000DF7* - ID_OUI_FROM_DATABASE=Space Dynamics Lab - -OUI:000DFE* - ID_OUI_FROM_DATABASE=Hauppauge Computer Works, Inc. - -OUI:000E03* - ID_OUI_FROM_DATABASE=Emulex Corporation - -OUI:000DF1* - ID_OUI_FROM_DATABASE=IONIX INC. - -OUI:000DEB* - ID_OUI_FROM_DATABASE=CompXs Limited - -OUI:000DF2* - ID_OUI_FROM_DATABASE=Private - -OUI:000DE4* - ID_OUI_FROM_DATABASE=DIGINICS, Inc. - -OUI:000EF9* - ID_OUI_FROM_DATABASE=REA Elektronik GmbH - OUI:000EF2* ID_OUI_FROM_DATABASE=Infinico Corporation @@ -39098,65 +40190,35 @@ OUI:000EDA* OUI:000ED6* ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:000E37* - ID_OUI_FROM_DATABASE=Harms & Wende GmbH & Co.KG - -OUI:000E38* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -OUI:000E31* - ID_OUI_FROM_DATABASE=Olympus Soft Imaging Solutions GmbH - -OUI:000E2A* - ID_OUI_FROM_DATABASE=Private - -OUI:000E1E* - ID_OUI_FROM_DATABASE=QLogic Corporation - -OUI:000E25* - ID_OUI_FROM_DATABASE=Hannae Technology Co., Ltd - -OUI:000E18* - ID_OUI_FROM_DATABASE=MyA Technology - -OUI:000E17* - ID_OUI_FROM_DATABASE=Private - -OUI:000E0E* - ID_OUI_FROM_DATABASE=ESA elettronica S.P.A. - -OUI:000C7E* - ID_OUI_FROM_DATABASE=Tellium Incorporated - -OUI:000C86* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc +OUI:000EC5* + ID_OUI_FROM_DATABASE=Digital Multitools Inc -OUI:000C81* - ID_OUI_FROM_DATABASE=Schneider Electric (Australia) +OUI:000DB2* + ID_OUI_FROM_DATABASE=Ammasso, Inc. -OUI:000C72* - ID_OUI_FROM_DATABASE=Tempearl Industrial Co., Ltd. +OUI:000DAD* + ID_OUI_FROM_DATABASE=Dataprobe, Inc. -OUI:000C79* - ID_OUI_FROM_DATABASE=Extel Communications P/L +OUI:000D9E* + ID_OUI_FROM_DATABASE=TOKUDEN OHIZUMI SEISAKUSYO Co.,Ltd. -OUI:000C66* - ID_OUI_FROM_DATABASE=Pronto Networks Inc +OUI:000DA5* + ID_OUI_FROM_DATABASE=Fabric7 Systems, Inc -OUI:000C6B* - ID_OUI_FROM_DATABASE=Kurz Industrie-Elektronik GmbH +OUI:000D99* + ID_OUI_FROM_DATABASE=Orbital Sciences Corp.; Launch Systems Group -OUI:000C6D* - ID_OUI_FROM_DATABASE=Edwards Ltd. +OUI:000D8C* + ID_OUI_FROM_DATABASE=Shanghai Wedone Digital Ltd. CO. -OUI:000DDF* - ID_OUI_FROM_DATABASE=Japan Image & Network Inc. +OUI:000D8B* + ID_OUI_FROM_DATABASE=T&D Corporation -OUI:000DD2* - ID_OUI_FROM_DATABASE=Simrad Optronics ASA +OUI:000D85* + ID_OUI_FROM_DATABASE=Tapwave, Inc. -OUI:000DD1* - ID_OUI_FROM_DATABASE=Stryker Corporation +OUI:000D86* + ID_OUI_FROM_DATABASE=Huber + Suhner AG OUI:000DD8* ID_OUI_FROM_DATABASE=BBN @@ -39176,80 +40238,56 @@ OUI:000DC5* OUI:000DB9* ID_OUI_FROM_DATABASE=PC Engines GmbH -OUI:000D8C* - ID_OUI_FROM_DATABASE=Shanghai Wedone Digital Ltd. CO. - -OUI:000D8B* - ID_OUI_FROM_DATABASE=T&D Corporation - -OUI:000D85* - ID_OUI_FROM_DATABASE=Tapwave, Inc. - -OUI:000D86* - ID_OUI_FROM_DATABASE=Huber + Suhner AG - -OUI:000D7E* - ID_OUI_FROM_DATABASE=Axiowave Networks, Inc. - -OUI:000D78* - ID_OUI_FROM_DATABASE=Engineering & Security - -OUI:000D77* - ID_OUI_FROM_DATABASE=FalconStor Software - -OUI:000D6B* - ID_OUI_FROM_DATABASE=Mita-Teknik A/S - -OUI:000D65* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc +OUI:000D4C* + ID_OUI_FROM_DATABASE=Outline Electronics Ltd. -OUI:000D5F* - ID_OUI_FROM_DATABASE=Minds Inc +OUI:000D53* + ID_OUI_FROM_DATABASE=Beijing 5w Communication Corp. -OUI:000D66* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc +OUI:000D3F* + ID_OUI_FROM_DATABASE=VTI Instruments Corporation -OUI:000CB1* - ID_OUI_FROM_DATABASE=Salland Engineering (Europe) BV +OUI:000D44* + ID_OUI_FROM_DATABASE=Audio BU - Logitech -OUI:000CB7* - ID_OUI_FROM_DATABASE=Nanjing Huazhuo Electronics Co., Ltd. +OUI:000D38* + ID_OUI_FROM_DATABASE=NISSIN INC. -OUI:000CBE* - ID_OUI_FROM_DATABASE=Innominate Security Technologies AG +OUI:000D32* + ID_OUI_FROM_DATABASE=DispenseSource, Inc. -OUI:000CC3* - ID_OUI_FROM_DATABASE=BeWAN systems +OUI:000D31* + ID_OUI_FROM_DATABASE=Compellent Technologies, Inc. -OUI:000CB2* - ID_OUI_FROM_DATABASE=UNION co., ltd. +OUI:000E04* + ID_OUI_FROM_DATABASE=CMA/Microdialysis AB -OUI:000CA5* - ID_OUI_FROM_DATABASE=Naman NZ LTd +OUI:000DF7* + ID_OUI_FROM_DATABASE=Space Dynamics Lab -OUI:000CAC* - ID_OUI_FROM_DATABASE=Citizen Watch Co., Ltd. +OUI:000DFE* + ID_OUI_FROM_DATABASE=Hauppauge Computer Works, Inc. -OUI:000C94* - ID_OUI_FROM_DATABASE=United Electronic Industries, Inc. (EUI) +OUI:000DF1* + ID_OUI_FROM_DATABASE=IONIX INC. -OUI:000C99* - ID_OUI_FROM_DATABASE=HITEL LINK Co.,Ltd +OUI:000DEB* + ID_OUI_FROM_DATABASE=CompXs Limited -OUI:000CA0* - ID_OUI_FROM_DATABASE=StorCase Technology, Inc. +OUI:000DF2* + ID_OUI_FROM_DATABASE=Private -OUI:000C8D* - ID_OUI_FROM_DATABASE=MATRIX VISION GmbH +OUI:000DE4* + ID_OUI_FROM_DATABASE=DIGINICS, Inc. -OUI:000C92* - ID_OUI_FROM_DATABASE=WolfVision Gmbh +OUI:000DDF* + ID_OUI_FROM_DATABASE=Japan Image & Network Inc. -OUI:000D32* - ID_OUI_FROM_DATABASE=DispenseSource, Inc. +OUI:000DD2* + ID_OUI_FROM_DATABASE=Simrad Optronics ASA -OUI:000D31* - ID_OUI_FROM_DATABASE=Compellent Technologies, Inc. +OUI:000DD1* + ID_OUI_FROM_DATABASE=Stryker Corporation OUI:000D2C* ID_OUI_FROM_DATABASE=Patapsco Designs Ltd @@ -39272,38 +40310,11 @@ OUI:000D0D* OUI:000D12* ID_OUI_FROM_DATABASE=AXELL Corporation -OUI:000DB2* - ID_OUI_FROM_DATABASE=Ammasso, Inc. - -OUI:000DAD* - ID_OUI_FROM_DATABASE=Dataprobe, Inc. - -OUI:000D9E* - ID_OUI_FROM_DATABASE=TOKUDEN OHIZUMI SEISAKUSYO Co.,Ltd. - -OUI:000DA5* - ID_OUI_FROM_DATABASE=Fabric7 Systems, Inc - -OUI:000D99* - ID_OUI_FROM_DATABASE=Orbital Sciences Corp.; Launch Systems Group - -OUI:000D58* - ID_OUI_FROM_DATABASE=Private - -OUI:000D4C* - ID_OUI_FROM_DATABASE=Outline Electronics Ltd. - -OUI:000D53* - ID_OUI_FROM_DATABASE=Beijing 5w Communication Corp. - -OUI:000D3F* - ID_OUI_FROM_DATABASE=VTI Instruments Corporation - -OUI:000D44* - ID_OUI_FROM_DATABASE=Audio BU - Logitech +OUI:000D00* + ID_OUI_FROM_DATABASE=Seaway Networks Inc. -OUI:000D38* - ID_OUI_FROM_DATABASE=NISSIN INC. +OUI:000D06* + ID_OUI_FROM_DATABASE=Compulogic Limited OUI:000CD1* ID_OUI_FROM_DATABASE=SFOM Technology Corp. @@ -39320,98 +40331,86 @@ OUI:000CCA* OUI:000CC4* ID_OUI_FROM_DATABASE=Tiptel AG -OUI:000D00* - ID_OUI_FROM_DATABASE=Seaway Networks Inc. - -OUI:000D06* - ID_OUI_FROM_DATABASE=Compulogic Limited - -OUI:000CFA* - ID_OUI_FROM_DATABASE=Digital Systems Corp - -OUI:000CFF* - ID_OUI_FROM_DATABASE=MRO-TEK LIMITED - -OUI:000CED* - ID_OUI_FROM_DATABASE=Real Digital Media +OUI:000CB1* + ID_OUI_FROM_DATABASE=Salland Engineering (Europe) BV -OUI:000CEE* - ID_OUI_FROM_DATABASE=jp-embedded +OUI:000E37* + ID_OUI_FROM_DATABASE=Harms & Wende GmbH & Co.KG -OUI:000CF3* - ID_OUI_FROM_DATABASE=CALL IMAGE SA +OUI:000E38* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:000CE7* - ID_OUI_FROM_DATABASE=MediaTek Inc. +OUI:000E31* + ID_OUI_FROM_DATABASE=Olympus Soft Imaging Solutions GmbH -OUI:000CE3* - ID_OUI_FROM_DATABASE=Option International N.V. +OUI:000E2A* + ID_OUI_FROM_DATABASE=Private -OUI:000B01* - ID_OUI_FROM_DATABASE=DAIICHI ELECTRONICS CO., LTD. +OUI:000E1E* + ID_OUI_FROM_DATABASE=QLogic Corporation -OUI:000AF0* - ID_OUI_FROM_DATABASE=SHIN-OH ELECTRONICS CO., LTD. R&D +OUI:000E25* + ID_OUI_FROM_DATABASE=Hannae Technology Co., Ltd -OUI:000AF5* - ID_OUI_FROM_DATABASE=Airgo Networks, Inc. +OUI:000E18* + ID_OUI_FROM_DATABASE=MyA Technology -OUI:000AEC* - ID_OUI_FROM_DATABASE=Koatsu Gas Kogyo Co., Ltd. +OUI:000E17* + ID_OUI_FROM_DATABASE=Private -OUI:000AE5* - ID_OUI_FROM_DATABASE=ScottCare Corporation +OUI:000E0E* + ID_OUI_FROM_DATABASE=ESA elettronica S.P.A. -OUI:000AE7* - ID_OUI_FROM_DATABASE=ELIOP S.A. +OUI:000E0A* + ID_OUI_FROM_DATABASE=SAKUMA DESIGN OFFICE -OUI:000AE0* - ID_OUI_FROM_DATABASE=Fujitsu Softek +OUI:000E12* + ID_OUI_FROM_DATABASE=Adaptive Micro Systems Inc. -OUI:000AC8* - ID_OUI_FROM_DATABASE=ZPSYS CO.,LTD. (Planning&Management) +OUI:000D7E* + ID_OUI_FROM_DATABASE=Axiowave Networks, Inc. -OUI:000ACD* - ID_OUI_FROM_DATABASE=Sunrich Technology Limited +OUI:000D78* + ID_OUI_FROM_DATABASE=Engineering & Security -OUI:000AD4* - ID_OUI_FROM_DATABASE=CoreBell Systems Inc. +OUI:000D77* + ID_OUI_FROM_DATABASE=FalconStor Software -OUI:000B5E* - ID_OUI_FROM_DATABASE=Audio Engineering Society Inc. +OUI:000D6B* + ID_OUI_FROM_DATABASE=Mita-Teknik A/S -OUI:000B63* - ID_OUI_FROM_DATABASE=Kaleidescape +OUI:000D65* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:000B55* - ID_OUI_FROM_DATABASE=ADInstruments +OUI:000D5F* + ID_OUI_FROM_DATABASE=Minds Inc -OUI:000B5A* - ID_OUI_FROM_DATABASE=HyperEdge +OUI:000D66* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:000B52* - ID_OUI_FROM_DATABASE=JOYMAX ELECTRONICS CO. LTD. +OUI:000D58* + ID_OUI_FROM_DATABASE=Private -OUI:000B4D* - ID_OUI_FROM_DATABASE=Emuzed +OUI:000CFA* + ID_OUI_FROM_DATABASE=Digital Systems Corp -OUI:000B41* - ID_OUI_FROM_DATABASE=Ing. Büro Dr. Beutlhauser +OUI:000CFF* + ID_OUI_FROM_DATABASE=MRO-TEK LIMITED -OUI:000B46* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc +OUI:000CED* + ID_OUI_FROM_DATABASE=Real Digital Media -OUI:000B33* - ID_OUI_FROM_DATABASE=Vivato Technologies +OUI:000CEE* + ID_OUI_FROM_DATABASE=jp-embedded -OUI:000B3A* - ID_OUI_FROM_DATABASE=QuStream Corporation +OUI:000CF3* + ID_OUI_FROM_DATABASE=CALL IMAGE SA -OUI:000B3F* - ID_OUI_FROM_DATABASE=Anthology Solutions Inc. +OUI:000CE7* + ID_OUI_FROM_DATABASE=MediaTek Inc. -OUI:000B95* - ID_OUI_FROM_DATABASE=eBet Gaming Systems Pty Ltd +OUI:000CE3* + ID_OUI_FROM_DATABASE=Option International N.V. OUI:000B8F* ID_OUI_FROM_DATABASE=AKITA ELECTRONICS SYSTEMS CO.,LTD. @@ -39437,35 +40436,35 @@ OUI:000B6F* OUI:000B76* ID_OUI_FROM_DATABASE=ET&T Technology Co. Ltd. -OUI:000AC1* - ID_OUI_FROM_DATABASE=Futuretel +OUI:000B5E* + ID_OUI_FROM_DATABASE=Audio Engineering Society Inc. -OUI:000AC6* - ID_OUI_FROM_DATABASE=Overture Networks. +OUI:000B63* + ID_OUI_FROM_DATABASE=Kaleidescape -OUI:000AAE* - ID_OUI_FROM_DATABASE=Rosemount Process Analytical +OUI:000C7E* + ID_OUI_FROM_DATABASE=Tellium Incorporated -OUI:000AB3* - ID_OUI_FROM_DATABASE=Fa. GIRA +OUI:000C86* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:000AB5* - ID_OUI_FROM_DATABASE=Digital Electronic Network +OUI:000C81* + ID_OUI_FROM_DATABASE=Schneider Electric (Australia) -OUI:000ABA* - ID_OUI_FROM_DATABASE=Arcon Technology Limited +OUI:000C72* + ID_OUI_FROM_DATABASE=Tempearl Industrial Co., Ltd. -OUI:000AA2* - ID_OUI_FROM_DATABASE=SYSTEK INC. +OUI:000C79* + ID_OUI_FROM_DATABASE=Extel Communications P/L -OUI:000AA7* - ID_OUI_FROM_DATABASE=FEI Electron Optics +OUI:000C66* + ID_OUI_FROM_DATABASE=Pronto Networks Inc -OUI:000A8F* - ID_OUI_FROM_DATABASE=Aska International Inc. +OUI:000C6B* + ID_OUI_FROM_DATABASE=Kurz Industrie-Elektronik GmbH -OUI:000A94* - ID_OUI_FROM_DATABASE=ShangHai cellink CO., LTD +OUI:000C6D* + ID_OUI_FROM_DATABASE=Edwards Ltd. OUI:000C4E* ID_OUI_FROM_DATABASE=Winbest Technology CO,LT @@ -39497,6 +40496,66 @@ OUI:000C2D* OUI:000C1A* ID_OUI_FROM_DATABASE=Quest Technical Solutions Inc. +OUI:000B2E* + ID_OUI_FROM_DATABASE=Cal-Comp Electronics (Thailand) Public Company Limited Taipe + +OUI:000B1B* + ID_OUI_FROM_DATABASE=Systronix, Inc. + +OUI:000B20* + ID_OUI_FROM_DATABASE=Hirata corporation + +OUI:000B22* + ID_OUI_FROM_DATABASE=Environmental Systems and Services + +OUI:000B14* + ID_OUI_FROM_DATABASE=ViewSonic Corporation + +OUI:000B0D* + ID_OUI_FROM_DATABASE=Air2U, Inc. + +OUI:000B0F* + ID_OUI_FROM_DATABASE=Bosch Rexroth + +OUI:000B08* + ID_OUI_FROM_DATABASE=Pillar Data Systems + +OUI:000AFC* + ID_OUI_FROM_DATABASE=Core Tec Communications, LLC + +OUI:000B01* + ID_OUI_FROM_DATABASE=DAIICHI ELECTRONICS CO., LTD. + +OUI:000B55* + ID_OUI_FROM_DATABASE=ADInstruments + +OUI:000B5A* + ID_OUI_FROM_DATABASE=HyperEdge + +OUI:000B52* + ID_OUI_FROM_DATABASE=JOYMAX ELECTRONICS CO. LTD. + +OUI:000B4D* + ID_OUI_FROM_DATABASE=Emuzed + +OUI:000B41* + ID_OUI_FROM_DATABASE=Ing. Büro Dr. Beutlhauser + +OUI:000B46* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:000B33* + ID_OUI_FROM_DATABASE=Vivato Technologies + +OUI:000B3A* + ID_OUI_FROM_DATABASE=QuStream Corporation + +OUI:000B3F* + ID_OUI_FROM_DATABASE=Anthology Solutions Inc. + +OUI:000B27* + ID_OUI_FROM_DATABASE=Scion Corporation + OUI:000C1E* ID_OUI_FROM_DATABASE=Global Cache @@ -39512,8 +40571,14 @@ OUI:000C15* OUI:000C09* ID_OUI_FROM_DATABASE=Hitachi IE Systems Co., Ltd -OUI:000BD3* - ID_OUI_FROM_DATABASE=cd3o +OUI:000BF6* + ID_OUI_FROM_DATABASE=Nitgen Co., Ltd + +OUI:000BFB* + ID_OUI_FROM_DATABASE=D-NET International Corporation + +OUI:000C02* + ID_OUI_FROM_DATABASE=ABB Oy OUI:000BC7* ID_OUI_FROM_DATABASE=ICET S.p.A. @@ -39545,44 +40610,41 @@ OUI:000BAA* OUI:000B9E* ID_OUI_FROM_DATABASE=Yasing Technology Corp. -OUI:000B27* - ID_OUI_FROM_DATABASE=Scion Corporation - -OUI:000B2E* - ID_OUI_FROM_DATABASE=Cal-Comp Electronics (Thailand) Public Company Limited Taipe +OUI:000B95* + ID_OUI_FROM_DATABASE=eBet Gaming Systems Pty Ltd -OUI:000B1B* - ID_OUI_FROM_DATABASE=Systronix, Inc. +OUI:000CB7* + ID_OUI_FROM_DATABASE=Nanjing Huazhuo Electronics Co., Ltd. -OUI:000B20* - ID_OUI_FROM_DATABASE=Hirata corporation +OUI:000CBE* + ID_OUI_FROM_DATABASE=Innominate Security Technologies AG -OUI:000B22* - ID_OUI_FROM_DATABASE=Environmental Systems and Services +OUI:000CC3* + ID_OUI_FROM_DATABASE=BeWAN systems -OUI:000B14* - ID_OUI_FROM_DATABASE=ViewSonic Corporation +OUI:000CB2* + ID_OUI_FROM_DATABASE=UNION co., ltd. -OUI:000B0D* - ID_OUI_FROM_DATABASE=Air2U, Inc. +OUI:000CA5* + ID_OUI_FROM_DATABASE=Naman NZ LTd -OUI:000B0F* - ID_OUI_FROM_DATABASE=Bosch Rexroth +OUI:000CAC* + ID_OUI_FROM_DATABASE=Citizen Watch Co., Ltd. -OUI:000B08* - ID_OUI_FROM_DATABASE=Pillar Data Systems +OUI:000C94* + ID_OUI_FROM_DATABASE=United Electronic Industries, Inc. (EUI) -OUI:000AFC* - ID_OUI_FROM_DATABASE=Core Tec Communications, LLC +OUI:000C99* + ID_OUI_FROM_DATABASE=HITEL LINK Co.,Ltd -OUI:000BF6* - ID_OUI_FROM_DATABASE=Nitgen Co., Ltd +OUI:000CA0* + ID_OUI_FROM_DATABASE=StorCase Technology, Inc. -OUI:000BFB* - ID_OUI_FROM_DATABASE=D-NET International Corporation +OUI:000C8D* + ID_OUI_FROM_DATABASE=MATRIX VISION GmbH -OUI:000C02* - ID_OUI_FROM_DATABASE=ABB Oy +OUI:000C92* + ID_OUI_FROM_DATABASE=WolfVision Gmbh OUI:000BEA* ID_OUI_FROM_DATABASE=Zultys Technologies @@ -39605,6 +40667,42 @@ OUI:000BD7* OUI:000BDC* ID_OUI_FROM_DATABASE=AKCP +OUI:000BD3* + ID_OUI_FROM_DATABASE=cd3o + +OUI:000AF0* + ID_OUI_FROM_DATABASE=SHIN-OH ELECTRONICS CO., LTD. R&D + +OUI:000AF5* + ID_OUI_FROM_DATABASE=Airgo Networks, Inc. + +OUI:000AEC* + ID_OUI_FROM_DATABASE=Koatsu Gas Kogyo Co., Ltd. + +OUI:000AE5* + ID_OUI_FROM_DATABASE=ScottCare Corporation + +OUI:000AE7* + ID_OUI_FROM_DATABASE=ELIOP S.A. + +OUI:000AE0* + ID_OUI_FROM_DATABASE=Fujitsu Softek + +OUI:000AC8* + ID_OUI_FROM_DATABASE=ZPSYS CO.,LTD. (Planning&Management) + +OUI:000ACD* + ID_OUI_FROM_DATABASE=Sunrich Technology Limited + +OUI:000AD4* + ID_OUI_FROM_DATABASE=CoreBell Systems Inc. + +OUI:000AC1* + ID_OUI_FROM_DATABASE=Futuretel + +OUI:000AC6* + ID_OUI_FROM_DATABASE=Overture Networks. + OUI:000994* ID_OUI_FROM_DATABASE=Cronyx Engineering @@ -39635,11 +40733,35 @@ OUI:000968* OUI:000962* ID_OUI_FROM_DATABASE=Sonitor Technologies AS -OUI:000A9B* - ID_OUI_FROM_DATABASE=TB Group Inc +OUI:000967* + ID_OUI_FROM_DATABASE=Tachyon, Inc -OUI:000A9A* - ID_OUI_FROM_DATABASE=Aiptek International Inc +OUI:00096E* + ID_OUI_FROM_DATABASE=GIANT ELECTRONICS LTD. + +OUI:0009C3* + ID_OUI_FROM_DATABASE=NETAS + +OUI:0009B9* + ID_OUI_FROM_DATABASE=Action Imaging Solutions + +OUI:0009BA* + ID_OUI_FROM_DATABASE=MAKU Informationstechik GmbH + +OUI:0009AC* + ID_OUI_FROM_DATABASE=LANVOICE + +OUI:0009B3* + ID_OUI_FROM_DATABASE=MCM Systems Ltd + +OUI:0009A7* + ID_OUI_FROM_DATABASE=Bang & Olufsen A/S + +OUI:00099A* + ID_OUI_FROM_DATABASE=ELMO COMPANY, LIMITED + +OUI:0009A0* + ID_OUI_FROM_DATABASE=Microtechno Corporation OUI:000A80* ID_OUI_FROM_DATABASE=Telkonet Inc. @@ -39668,35 +40790,8 @@ OUI:000A61* OUI:000A68* ID_OUI_FROM_DATABASE=SolarFlare Communications, Inc. -OUI:0009C3* - ID_OUI_FROM_DATABASE=NETAS - -OUI:0009B9* - ID_OUI_FROM_DATABASE=Action Imaging Solutions - -OUI:0009BA* - ID_OUI_FROM_DATABASE=MAKU Informationstechik GmbH - -OUI:0009AC* - ID_OUI_FROM_DATABASE=LANVOICE - -OUI:0009B3* - ID_OUI_FROM_DATABASE=MCM Systems Ltd - -OUI:0009A7* - ID_OUI_FROM_DATABASE=Bang & Olufsen A/S - -OUI:00099A* - ID_OUI_FROM_DATABASE=ELMO COMPANY, LIMITED - -OUI:0009A0* - ID_OUI_FROM_DATABASE=Microtechno Corporation - -OUI:0009ED* - ID_OUI_FROM_DATABASE=CipherOptics - -OUI:0009F2* - ID_OUI_FROM_DATABASE=Cohu, Inc., Electronics Division +OUI:000A5C* + ID_OUI_FROM_DATABASE=Carel s.p.a. OUI:0009E6* ID_OUI_FROM_DATABASE=Cyber Switching Inc. @@ -39722,74 +40817,35 @@ OUI:0009CE* OUI:0009D3* ID_OUI_FROM_DATABASE=Western DataCom Co., Inc. -OUI:000901* - ID_OUI_FROM_DATABASE=Shenzhen Shixuntong Information & Technoligy Co - -OUI:0008FC* - ID_OUI_FROM_DATABASE=Gigaphoton Inc. - -OUI:0008F9* - ID_OUI_FROM_DATABASE=Artesyn Embedded Technologies - -OUI:0008F4* - ID_OUI_FROM_DATABASE=Bluetake Technology Co., Ltd. - -OUI:0008EB* - ID_OUI_FROM_DATABASE=ROMWin Co.,Ltd. - -OUI:0008E4* - ID_OUI_FROM_DATABASE=Envenergy Inc - -OUI:0008DF* - ID_OUI_FROM_DATABASE=Alistel Inc. - -OUI:0008D8* - ID_OUI_FROM_DATABASE=Dowkey Microwave - -OUI:0008D2* - ID_OUI_FROM_DATABASE=ZOOM Networks Inc. - -OUI:0008CC* - ID_OUI_FROM_DATABASE=Remotec, Inc. - -OUI:0008D1* - ID_OUI_FROM_DATABASE=KAREL INC. - -OUI:000967* - ID_OUI_FROM_DATABASE=Tachyon, Inc - -OUI:00096E* - ID_OUI_FROM_DATABASE=GIANT ELECTRONICS LTD. - -OUI:00095E* - ID_OUI_FROM_DATABASE=Masstech Group Inc. +OUI:000AAE* + ID_OUI_FROM_DATABASE=Rosemount Process Analytical -OUI:000959* - ID_OUI_FROM_DATABASE=Sitecsoft +OUI:000AB3* + ID_OUI_FROM_DATABASE=Fa. GIRA -OUI:00094D* - ID_OUI_FROM_DATABASE=Braintree Communications Pty Ltd +OUI:000AB5* + ID_OUI_FROM_DATABASE=Digital Electronic Network -OUI:000952* - ID_OUI_FROM_DATABASE=Auerswald GmbH & Co. KG +OUI:000ABA* + ID_OUI_FROM_DATABASE=Arcon Technology Limited -OUI:000946* - ID_OUI_FROM_DATABASE=Cluster Labs GmbH +OUI:000AA2* + ID_OUI_FROM_DATABASE=SYSTEK INC. -OUI:000940* - ID_OUI_FROM_DATABASE=AGFEO GmbH & Co. KG +OUI:000AA7* + ID_OUI_FROM_DATABASE=FEI Electron Optics -OUI:00093F* - ID_OUI_FROM_DATABASE=Double-Win Enterpirse CO., LTD +OUI:000A8F* + ID_OUI_FROM_DATABASE=Aska International Inc. -OUI:00093A* - ID_OUI_FROM_DATABASE=Molex Fiber Optics +OUI:000A94* + ID_OUI_FROM_DATABASE=ShangHai cellink CO., LTD -OUI:000933* - ID_OUI_FROM_DATABASE=Ophit Co.Ltd. +OUI:000A9B* + ID_OUI_FROM_DATABASE=TB Group Inc -OUI:000A5C* - ID_OUI_FROM_DATABASE=Carel s.p.a. +OUI:000A9A* + ID_OUI_FROM_DATABASE=Aiptek International Inc OUI:000A50* ID_OUI_FROM_DATABASE=REMOTEK CORPORATION @@ -39818,30 +40874,6 @@ OUI:000A3D* OUI:000A2F* ID_OUI_FROM_DATABASE=Artnix Inc. -OUI:000927* - ID_OUI_FROM_DATABASE=TOYOKEIKI CO.,LTD. - -OUI:00092E* - ID_OUI_FROM_DATABASE=B&Tech System Inc. - -OUI:000920* - ID_OUI_FROM_DATABASE=EpoX COMPUTER CO.,LTD. - -OUI:00091B* - ID_OUI_FROM_DATABASE=Digital Generation Inc. - -OUI:000914* - ID_OUI_FROM_DATABASE=COMPUTROLS INC. - -OUI:00090E* - ID_OUI_FROM_DATABASE=Helix Technology Inc. - -OUI:000908* - ID_OUI_FROM_DATABASE=VTech Technology Corp. - -OUI:00090D* - ID_OUI_FROM_DATABASE=LEADER ELECTRONICS CORP. - OUI:000A20* ID_OUI_FROM_DATABASE=SVA Networks, Inc. @@ -39869,6 +40901,75 @@ OUI:0009FC* OUI:000A03* ID_OUI_FROM_DATABASE=ENDESA SERVICIOS, S.L. +OUI:0009ED* + ID_OUI_FROM_DATABASE=CipherOptics + +OUI:0009F2* + ID_OUI_FROM_DATABASE=Cohu, Inc., Electronics Division + +OUI:00095E* + ID_OUI_FROM_DATABASE=Masstech Group Inc. + +OUI:000959* + ID_OUI_FROM_DATABASE=Sitecsoft + +OUI:00094D* + ID_OUI_FROM_DATABASE=Braintree Communications Pty Ltd + +OUI:000952* + ID_OUI_FROM_DATABASE=Auerswald GmbH & Co. KG + +OUI:000946* + ID_OUI_FROM_DATABASE=Cluster Labs GmbH + +OUI:000940* + ID_OUI_FROM_DATABASE=AGFEO GmbH & Co. KG + +OUI:00093F* + ID_OUI_FROM_DATABASE=Double-Win Enterpirse CO., LTD + +OUI:00093A* + ID_OUI_FROM_DATABASE=Molex Fiber Optics + +OUI:000933* + ID_OUI_FROM_DATABASE=Ophit Co.Ltd. + +OUI:00072C* + ID_OUI_FROM_DATABASE=Fabricom + +OUI:000733* + ID_OUI_FROM_DATABASE=DANCONTROL Engineering + +OUI:000732* + ID_OUI_FROM_DATABASE=AAEON Technology Inc. + +OUI:000716* + ID_OUI_FROM_DATABASE=J & S Marine Ltd. + +OUI:00071B* + ID_OUI_FROM_DATABASE=CDVI Americas Ltd + +OUI:000722* + ID_OUI_FROM_DATABASE=The Nielsen Company + +OUI:00071C* + ID_OUI_FROM_DATABASE=AT&T Fixed Wireless Services + +OUI:00070A* + ID_OUI_FROM_DATABASE=Unicom Automation Co., Ltd. + +OUI:00070F* + ID_OUI_FROM_DATABASE=Fujant, Inc. + +OUI:000709* + ID_OUI_FROM_DATABASE=Westerstrand Urfabrik AB + +OUI:000702* + ID_OUI_FROM_DATABASE=Varian Medical Systems + +OUI:0006F3* + ID_OUI_FROM_DATABASE=AcceLight Networks + OUI:0006F4* ID_OUI_FROM_DATABASE=Prime Electronics & Satellitics Inc. @@ -39884,38 +40985,41 @@ OUI:0006FF* OUI:0006FD* ID_OUI_FROM_DATABASE=Comjet Information Systems Corp. -OUI:0006E7* - ID_OUI_FROM_DATABASE=Bit Blitz Communications Inc. +OUI:00082D* + ID_OUI_FROM_DATABASE=Indus Teqsite Private Limited -OUI:0006ED* - ID_OUI_FROM_DATABASE=Inara Networks +OUI:000821* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:0006DC* - ID_OUI_FROM_DATABASE=Syabas Technology (Amquest) +OUI:000814* + ID_OUI_FROM_DATABASE=TIL Technologies -OUI:0006E1* - ID_OUI_FROM_DATABASE=Techno Trade s.a +OUI:00081A* + ID_OUI_FROM_DATABASE=Sanrad Intelligence Storage Communications (2000) Ltd. -OUI:0006E6* - ID_OUI_FROM_DATABASE=DongYang Telecom Co., Ltd. +OUI:00080F* + ID_OUI_FROM_DATABASE=Proximion Fiber Optics AB -OUI:0006CF* - ID_OUI_FROM_DATABASE=Thales Avionics In-Flight Systems, LLC +OUI:000809* + ID_OUI_FROM_DATABASE=Systemonic AG -OUI:0006D6* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc +OUI:000803* + ID_OUI_FROM_DATABASE=Cos Tron -OUI:0006D5* - ID_OUI_FROM_DATABASE=Diamond Systems Corp. +OUI:0007FF* + ID_OUI_FROM_DATABASE=Gluon Networks -OUI:0006C9* - ID_OUI_FROM_DATABASE=Technical Marketing Research, Inc. +OUI:0007F9* + ID_OUI_FROM_DATABASE=Sensaphone -OUI:0007B1* - ID_OUI_FROM_DATABASE=Equator Technologies +OUI:0007F3* + ID_OUI_FROM_DATABASE=Thinkengine Networks -OUI:0007B8* - ID_OUI_FROM_DATABASE=Corvalent Corporation +OUI:0007EC* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:0007F2* + ID_OUI_FROM_DATABASE=IOA Corporation OUI:0007B2* ID_OUI_FROM_DATABASE=Transaccess S.A. @@ -39953,41 +41057,11 @@ OUI:000785* OUI:00077B* ID_OUI_FROM_DATABASE=Millimetrix Broadband Networks -OUI:000856* - ID_OUI_FROM_DATABASE=Gamatronic Electronic Industries Ltd. - -OUI:00082D* - ID_OUI_FROM_DATABASE=Indus Teqsite Private Limited - -OUI:000821* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -OUI:000814* - ID_OUI_FROM_DATABASE=TIL Technologies - -OUI:00081A* - ID_OUI_FROM_DATABASE=Sanrad Intelligence Storage Communications (2000) Ltd. - -OUI:00080F* - ID_OUI_FROM_DATABASE=Proximion Fiber Optics AB - -OUI:000809* - ID_OUI_FROM_DATABASE=Systemonic AG - -OUI:000803* - ID_OUI_FROM_DATABASE=Cos Tron - -OUI:0007FF* - ID_OUI_FROM_DATABASE=Gluon Networks - -OUI:0007F9* - ID_OUI_FROM_DATABASE=Sensaphone - -OUI:000894* - ID_OUI_FROM_DATABASE=InnoVISION Multimedia Ltd. +OUI:00077E* + ID_OUI_FROM_DATABASE=Elrest GmbH -OUI:00088F* - ID_OUI_FROM_DATABASE=ADVANCED DIGITAL TECHNOLOGY +OUI:00076F* + ID_OUI_FROM_DATABASE=Synoptics Limited OUI:000888* ID_OUI_FROM_DATABASE=OULLIM Information Technology Inc,. @@ -40022,89 +41096,35 @@ OUI:000862* OUI:000850* ID_OUI_FROM_DATABASE=Arizona Instrument Corp. -OUI:000738* - ID_OUI_FROM_DATABASE=Young Technology Co., Ltd. - -OUI:00073F* - ID_OUI_FROM_DATABASE=Woojyun Systec Co., Ltd. - -OUI:00072C* - ID_OUI_FROM_DATABASE=Fabricom - -OUI:000733* - ID_OUI_FROM_DATABASE=DANCONTROL Engineering - -OUI:000732* - ID_OUI_FROM_DATABASE=AAEON Technology Inc. - -OUI:000716* - ID_OUI_FROM_DATABASE=J & S Marine Ltd. - -OUI:00071B* - ID_OUI_FROM_DATABASE=CDVI Americas Ltd - -OUI:000722* - ID_OUI_FROM_DATABASE=The Nielsen Company - -OUI:00071C* - ID_OUI_FROM_DATABASE=AT&T Fixed Wireless Services - -OUI:00070A* - ID_OUI_FROM_DATABASE=Unicom Automation Co., Ltd. - -OUI:00070F* - ID_OUI_FROM_DATABASE=Fujant, Inc. - -OUI:000709* - ID_OUI_FROM_DATABASE=Westerstrand Urfabrik AB - -OUI:000702* - ID_OUI_FROM_DATABASE=Varian Medical Systems - -OUI:0006F3* - ID_OUI_FROM_DATABASE=AcceLight Networks - -OUI:0006C3* - ID_OUI_FROM_DATABASE=Schindler Elevator Ltd. - -OUI:0006C8* - ID_OUI_FROM_DATABASE=Sumitomo Metal Micro Devices, Inc. - -OUI:0006BF* - ID_OUI_FROM_DATABASE=Accella Technologies Co., Ltd. - -OUI:0006B9* - ID_OUI_FROM_DATABASE=A5TEK Corp. - -OUI:0006B2* - ID_OUI_FROM_DATABASE=Linxtek Co. +OUI:000856* + ID_OUI_FROM_DATABASE=Gamatronic Electronic Industries Ltd. -OUI:0006AC* - ID_OUI_FROM_DATABASE=Intersoft Co. +OUI:000927* + ID_OUI_FROM_DATABASE=TOYOKEIKI CO.,LTD. -OUI:0006A6* - ID_OUI_FROM_DATABASE=Artistic Licence Engineering Ltd +OUI:00092E* + ID_OUI_FROM_DATABASE=B&Tech System Inc. -OUI:0006A2* - ID_OUI_FROM_DATABASE=Microtune, Inc. +OUI:000920* + ID_OUI_FROM_DATABASE=EpoX COMPUTER CO.,LTD. -OUI:000695* - ID_OUI_FROM_DATABASE=Ensure Technologies, Inc. +OUI:00091B* + ID_OUI_FROM_DATABASE=Digital Generation Inc. -OUI:00069C* - ID_OUI_FROM_DATABASE=Transmode Systems AB +OUI:000914* + ID_OUI_FROM_DATABASE=COMPUTROLS INC. -OUI:000696* - ID_OUI_FROM_DATABASE=Advent Networks +OUI:00090E* + ID_OUI_FROM_DATABASE=Helix Technology Inc. -OUI:0007F3* - ID_OUI_FROM_DATABASE=Thinkengine Networks +OUI:000908* + ID_OUI_FROM_DATABASE=VTech Technology Corp. -OUI:0007EC* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc +OUI:00090D* + ID_OUI_FROM_DATABASE=LEADER ELECTRONICS CORP. -OUI:0007F2* - ID_OUI_FROM_DATABASE=IOA Corporation +OUI:000901* + ID_OUI_FROM_DATABASE=Shenzhen Shixuntong Information & Technoligy Co OUI:0007E6* ID_OUI_FROM_DATABASE=edgeflow Canada Inc. @@ -40130,11 +41150,11 @@ OUI:0007C4* OUI:0007BE* ID_OUI_FROM_DATABASE=DataLogic SpA -OUI:00077E* - ID_OUI_FROM_DATABASE=Elrest GmbH +OUI:0007B1* + ID_OUI_FROM_DATABASE=Equator Technologies -OUI:00076F* - ID_OUI_FROM_DATABASE=Synoptics Limited +OUI:0007B8* + ID_OUI_FROM_DATABASE=Corvalent Corporation OUI:00076E* ID_OUI_FROM_DATABASE=Sinetica Corporation Limited @@ -40166,8 +41186,11 @@ OUI:00074B* OUI:000745* ID_OUI_FROM_DATABASE=Radlan Computer Communications Ltd. -OUI:0008C2* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc +OUI:000738* + ID_OUI_FROM_DATABASE=Young Technology Co., Ltd. + +OUI:00073F* + ID_OUI_FROM_DATABASE=Woojyun Systec Co., Ltd. OUI:0008BB* ID_OUI_FROM_DATABASE=NetExcell @@ -40193,8 +41216,44 @@ OUI:0008A3* OUI:00089C* ID_OUI_FROM_DATABASE=Elecs Industry Co., Ltd. -OUI:000690* - ID_OUI_FROM_DATABASE=Euracom Communication GmbH +OUI:000894* + ID_OUI_FROM_DATABASE=InnoVISION Multimedia Ltd. + +OUI:00088F* + ID_OUI_FROM_DATABASE=ADVANCED DIGITAL TECHNOLOGY + +OUI:0008FC* + ID_OUI_FROM_DATABASE=Gigaphoton Inc. + +OUI:0008F9* + ID_OUI_FROM_DATABASE=Artesyn Embedded Technologies + +OUI:0008F4* + ID_OUI_FROM_DATABASE=Bluetake Technology Co., Ltd. + +OUI:0008EB* + ID_OUI_FROM_DATABASE=ROMWin Co.,Ltd. + +OUI:0008E4* + ID_OUI_FROM_DATABASE=Envenergy Inc + +OUI:0008DF* + ID_OUI_FROM_DATABASE=Alistel Inc. + +OUI:0008D8* + ID_OUI_FROM_DATABASE=Dowkey Microwave + +OUI:0008D2* + ID_OUI_FROM_DATABASE=ZOOM Networks Inc. + +OUI:0008CC* + ID_OUI_FROM_DATABASE=Remotec, Inc. + +OUI:0008D1* + ID_OUI_FROM_DATABASE=KAREL INC. + +OUI:0008C2* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc OUI:00068F* ID_OUI_FROM_DATABASE=Telemonitor, Inc. @@ -40235,11 +41294,11 @@ OUI:00055A* OUI:00065C* ID_OUI_FROM_DATABASE=Malachite Technologies, Inc. -OUI:000610* - ID_OUI_FROM_DATABASE=Abeona Networks Inc +OUI:000650* + ID_OUI_FROM_DATABASE=Tiburon Networks, Inc. -OUI:000616* - ID_OUI_FROM_DATABASE=Tel Net Co., Ltd. +OUI:000656* + ID_OUI_FROM_DATABASE=Tactel AB OUI:00060A* ID_OUI_FROM_DATABASE=Blue2space @@ -40286,6 +41345,39 @@ OUI:0005CF* OUI:0005C9* ID_OUI_FROM_DATABASE=LG Innotek Co., Ltd. +OUI:0006E7* + ID_OUI_FROM_DATABASE=Bit Blitz Communications Inc. + +OUI:0006ED* + ID_OUI_FROM_DATABASE=Inara Networks + +OUI:0006DC* + ID_OUI_FROM_DATABASE=Syabas Technology (Amquest) + +OUI:0006E1* + ID_OUI_FROM_DATABASE=Techno Trade s.a + +OUI:0006E6* + ID_OUI_FROM_DATABASE=DongYang Telecom Co., Ltd. + +OUI:0006CF* + ID_OUI_FROM_DATABASE=Thales Avionics In-Flight Systems, LLC + +OUI:0006D6* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:0006D5* + ID_OUI_FROM_DATABASE=Diamond Systems Corp. + +OUI:0006C9* + ID_OUI_FROM_DATABASE=Technical Marketing Research, Inc. + +OUI:0006C3* + ID_OUI_FROM_DATABASE=Schindler Elevator Ltd. + +OUI:0006C8* + ID_OUI_FROM_DATABASE=Sumitomo Metal Micro Devices, Inc. + OUI:0005D5* ID_OUI_FROM_DATABASE=Speedcom Wireless @@ -40310,50 +41402,17 @@ OUI:0005A2* OUI:0005AC* ID_OUI_FROM_DATABASE=Northern Digital, Inc. -OUI:0004E5* - ID_OUI_FROM_DATABASE=Glonet Systems, Inc. - -OUI:0004D9* - ID_OUI_FROM_DATABASE=Titan Electronics, Inc. - -OUI:0004D3* - ID_OUI_FROM_DATABASE=Toyokeiki Co., Ltd. - -OUI:0004CC* - ID_OUI_FROM_DATABASE=Peek Traffic B.V. - -OUI:0004C0* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -OUI:0004C6* - ID_OUI_FROM_DATABASE=Yamaha Motor Co., Ltd. - -OUI:0004B9* - ID_OUI_FROM_DATABASE=S.I. Soubou, Inc. - -OUI:0004BA* - ID_OUI_FROM_DATABASE=KDD Media Will Corporation - -OUI:0004AF* - ID_OUI_FROM_DATABASE=Digital Fountain, Inc. - -OUI:0004B4* - ID_OUI_FROM_DATABASE=CIAC - -OUI:0004B3* - ID_OUI_FROM_DATABASE=Videotek, Inc. - -OUI:0004A6* - ID_OUI_FROM_DATABASE=SAF Tehnika Ltd. +OUI:000589* + ID_OUI_FROM_DATABASE=National Datacomputer -OUI:0004A0* - ID_OUI_FROM_DATABASE=Verity Instruments, Inc. +OUI:000595* + ID_OUI_FROM_DATABASE=Alesis Corporation -OUI:00050C* - ID_OUI_FROM_DATABASE=Network Photonics, Inc. +OUI:00058F* + ID_OUI_FROM_DATABASE=CLCsoft co. -OUI:000512* - ID_OUI_FROM_DATABASE=Zebra Technologies Inc +OUI:000596* + ID_OUI_FROM_DATABASE=Genotech Co., Ltd. OUI:000506* ID_OUI_FROM_DATABASE=Reddo Networks AB @@ -40379,11 +41438,47 @@ OUI:0004EF* OUI:0004DF* ID_OUI_FROM_DATABASE=Teracom Telematica Ltda. -OUI:000553* - ID_OUI_FROM_DATABASE=DVC Company, Inc. +OUI:0004E5* + ID_OUI_FROM_DATABASE=Glonet Systems, Inc. -OUI:000548* - ID_OUI_FROM_DATABASE=Disco Corporation +OUI:0004D9* + ID_OUI_FROM_DATABASE=Titan Electronics, Inc. + +OUI:00062D* + ID_OUI_FROM_DATABASE=TouchStar Technologies, L.L.C. + +OUI:000649* + ID_OUI_FROM_DATABASE=3M Deutschland GmbH + +OUI:000643* + ID_OUI_FROM_DATABASE=SONO Computer Co., Ltd. + +OUI:00064A* + ID_OUI_FROM_DATABASE=Honeywell Co., Ltd. (KOREA) + +OUI:00063F* + ID_OUI_FROM_DATABASE=Everex Communications Inc. + +OUI:000639* + ID_OUI_FROM_DATABASE=Newtec + +OUI:000633* + ID_OUI_FROM_DATABASE=Cross Match Technologies GmbH + +OUI:000626* + ID_OUI_FROM_DATABASE=MWE GmbH + +OUI:00061D* + ID_OUI_FROM_DATABASE=MIP Telecom, Inc. + +OUI:000623* + ID_OUI_FROM_DATABASE=MGE UPS Systems France + +OUI:000610* + ID_OUI_FROM_DATABASE=Abeona Networks Inc + +OUI:000616* + ID_OUI_FROM_DATABASE=Tel Net Co., Ltd. OUI:00054D* ID_OUI_FROM_DATABASE=Brans Technologies, Inc. @@ -40418,53 +41513,41 @@ OUI:00051C* OUI:000516* ID_OUI_FROM_DATABASE=SMART Modular Technologies -OUI:000650* - ID_OUI_FROM_DATABASE=Tiburon Networks, Inc. - -OUI:000656* - ID_OUI_FROM_DATABASE=Tactel AB - -OUI:00062D* - ID_OUI_FROM_DATABASE=TouchStar Technologies, L.L.C. - -OUI:000649* - ID_OUI_FROM_DATABASE=3M Deutschland GmbH - -OUI:000643* - ID_OUI_FROM_DATABASE=SONO Computer Co., Ltd. +OUI:00050C* + ID_OUI_FROM_DATABASE=Network Photonics, Inc. -OUI:00064A* - ID_OUI_FROM_DATABASE=Honeywell Co., Ltd. (KOREA) +OUI:000512* + ID_OUI_FROM_DATABASE=Zebra Technologies Inc -OUI:00063F* - ID_OUI_FROM_DATABASE=Everex Communications Inc. +OUI:0006BF* + ID_OUI_FROM_DATABASE=Accella Technologies Co., Ltd. -OUI:000639* - ID_OUI_FROM_DATABASE=Newtec +OUI:0006B9* + ID_OUI_FROM_DATABASE=A5TEK Corp. -OUI:000633* - ID_OUI_FROM_DATABASE=Cross Match Technologies GmbH +OUI:0006B2* + ID_OUI_FROM_DATABASE=Linxtek Co. -OUI:000626* - ID_OUI_FROM_DATABASE=MWE GmbH +OUI:0006AC* + ID_OUI_FROM_DATABASE=Intersoft Co. -OUI:00061D* - ID_OUI_FROM_DATABASE=MIP Telecom, Inc. +OUI:0006A6* + ID_OUI_FROM_DATABASE=Artistic Licence Engineering Ltd -OUI:000623* - ID_OUI_FROM_DATABASE=MGE UPS Systems France +OUI:0006A2* + ID_OUI_FROM_DATABASE=Microtune, Inc. -OUI:000589* - ID_OUI_FROM_DATABASE=National Datacomputer +OUI:000695* + ID_OUI_FROM_DATABASE=Ensure Technologies, Inc. -OUI:000595* - ID_OUI_FROM_DATABASE=Alesis Corporation +OUI:00069C* + ID_OUI_FROM_DATABASE=Transmode Systems AB -OUI:00058F* - ID_OUI_FROM_DATABASE=CLCsoft co. +OUI:000696* + ID_OUI_FROM_DATABASE=Advent Networks -OUI:000596* - ID_OUI_FROM_DATABASE=Genotech Co., Ltd. +OUI:000690* + ID_OUI_FROM_DATABASE=Euracom Communication GmbH OUI:00057D* ID_OUI_FROM_DATABASE=Sun Communications, Inc. @@ -40493,44 +41576,11 @@ OUI:000560* OUI:000559* ID_OUI_FROM_DATABASE=Intracom S.A. -OUI:0004A5* - ID_OUI_FROM_DATABASE=Barco Projection Systems NV - -OUI:000499* - ID_OUI_FROM_DATABASE=Chino Corporation - -OUI:00048D* - ID_OUI_FROM_DATABASE=Teo Technologies, Inc - -OUI:000493* - ID_OUI_FROM_DATABASE=Tsinghua Unisplendour Co., Ltd. - -OUI:000484* - ID_OUI_FROM_DATABASE=Amann GmbH - -OUI:00048A* - ID_OUI_FROM_DATABASE=Temia Vertriebs GmbH - -OUI:00047A* - ID_OUI_FROM_DATABASE=AXXESSIT ASA - -OUI:000474* - ID_OUI_FROM_DATABASE=LEGRAND - -OUI:00046E* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -OUI:000473* - ID_OUI_FROM_DATABASE=Photonex Corporation - -OUI:000467* - ID_OUI_FROM_DATABASE=Wuhan Research Institute of MII - -OUI:000461* - ID_OUI_FROM_DATABASE=EPOX Computer Co., Ltd. +OUI:000553* + ID_OUI_FROM_DATABASE=DVC Company, Inc. -OUI:0003D9* - ID_OUI_FROM_DATABASE=Secheron SA +OUI:000548* + ID_OUI_FROM_DATABASE=Disco Corporation OUI:0003D2* ID_OUI_FROM_DATABASE=Crossbeam Systems, Inc. @@ -40565,6 +41615,48 @@ OUI:0003A8* OUI:0003A1* ID_OUI_FROM_DATABASE=HIPER Information & Communication, Inc. +OUI:00044E* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:00044F* + ID_OUI_FROM_DATABASE=Schubert System Elektronik Gmbh + +OUI:000454* + ID_OUI_FROM_DATABASE=Quadriga UK + +OUI:000445* + ID_OUI_FROM_DATABASE=LMS Skalar Instruments GmbH + +OUI:00044A* + ID_OUI_FROM_DATABASE=iPolicy Networks, Inc. + +OUI:000444* + ID_OUI_FROM_DATABASE=Western Multiplex Corporation + +OUI:00043E* + ID_OUI_FROM_DATABASE=Telencomm + +OUI:000438* + ID_OUI_FROM_DATABASE=Nortel Networks + +OUI:000432* + ID_OUI_FROM_DATABASE=Voyetra Turtle Beach, Inc. + +OUI:000437* + ID_OUI_FROM_DATABASE=Powin Information Technology, Inc. + +OUI:00042B* + ID_OUI_FROM_DATABASE=IT Access Co., Ltd. + +OUI:000425* + ID_OUI_FROM_DATABASE=Atmel Corporation + +OUI:000419* + ID_OUI_FROM_DATABASE=Fibercycle Networks, Inc. + +OUI:00041A* + ID_OUI_FROM_DATABASE=Ines Test and Measurement GmbH & CoKG + OUI:000399* ID_OUI_FROM_DATABASE=Dongju Informations & Communications Co., Ltd. @@ -40595,8 +41687,8 @@ OUI:000371* OUI:00036D* ID_OUI_FROM_DATABASE=Runtop, Inc. -OUI:0002E3* - ID_OUI_FROM_DATABASE=LITE-ON Communications, Inc. +OUI:000361* + ID_OUI_FROM_DATABASE=Widcomm, Inc. OUI:0002DE* ID_OUI_FROM_DATABASE=Astrodesign, Inc. @@ -40637,44 +41729,8 @@ OUI:0002AF* OUI:0002AA* ID_OUI_FROM_DATABASE=PLcom Co., Ltd. -OUI:00045B* - ID_OUI_FROM_DATABASE=Techsan Electronics Co., Ltd. - -OUI:00044E* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - -OUI:00044F* - ID_OUI_FROM_DATABASE=Schubert System Elektronik Gmbh - -OUI:000454* - ID_OUI_FROM_DATABASE=Quadriga UK - -OUI:000445* - ID_OUI_FROM_DATABASE=LMS Skalar Instruments GmbH - -OUI:00044A* - ID_OUI_FROM_DATABASE=iPolicy Networks, Inc. - -OUI:000444* - ID_OUI_FROM_DATABASE=Western Multiplex Corporation - -OUI:00043E* - ID_OUI_FROM_DATABASE=Telencomm - -OUI:000438* - ID_OUI_FROM_DATABASE=Nortel Networks - -OUI:000432* - ID_OUI_FROM_DATABASE=Voyetra Turtle Beach, Inc. - -OUI:000437* - ID_OUI_FROM_DATABASE=Powin Information Technology, Inc. - -OUI:00042B* - ID_OUI_FROM_DATABASE=IT Access Co., Ltd. - -OUI:000361* - ID_OUI_FROM_DATABASE=Widcomm, Inc. +OUI:0002A3* + ID_OUI_FROM_DATABASE=ABB Switzerland Ltd, Power Systems OUI:00035A* ID_OUI_FROM_DATABASE=Photron Limited @@ -40754,50 +41810,77 @@ OUI:0002F5* OUI:0002EA* ID_OUI_FROM_DATABASE=Focus Enhancements -OUI:000269* - ID_OUI_FROM_DATABASE=Nadatel Co., Ltd +OUI:0002E3* + ID_OUI_FROM_DATABASE=LITE-ON Communications, Inc. -OUI:000265* - ID_OUI_FROM_DATABASE=Virditech Co. Ltd. +OUI:0004D3* + ID_OUI_FROM_DATABASE=Toyokeiki Co., Ltd. -OUI:00025E* - ID_OUI_FROM_DATABASE=High Technology Ltd +OUI:0004CC* + ID_OUI_FROM_DATABASE=Peek Traffic B.V. -OUI:000261* - ID_OUI_FROM_DATABASE=Tilgin AB +OUI:0004C0* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:000259* - ID_OUI_FROM_DATABASE=Tsann Kuen China (Shanghai)Enterprise Co., Ltd. IT Group +OUI:0004B9* + ID_OUI_FROM_DATABASE=S.I. Soubou, Inc. -OUI:000255* - ID_OUI_FROM_DATABASE=IBM Corp +OUI:0004BA* + ID_OUI_FROM_DATABASE=KDD Media Will Corporation -OUI:000249* - ID_OUI_FROM_DATABASE=Aviv Infocom Co, Ltd. +OUI:0004AF* + ID_OUI_FROM_DATABASE=Digital Fountain, Inc. -OUI:000250* - ID_OUI_FROM_DATABASE=Geyser Networks, Inc. +OUI:0004B4* + ID_OUI_FROM_DATABASE=CIAC -OUI:000242* - ID_OUI_FROM_DATABASE=Videoframe Systems +OUI:0004B3* + ID_OUI_FROM_DATABASE=Videotek, Inc. -OUI:000244* - ID_OUI_FROM_DATABASE=SURECOM Technology Co. +OUI:0004A6* + ID_OUI_FROM_DATABASE=SAF Tehnika Ltd. -OUI:00022C* - ID_OUI_FROM_DATABASE=ABB Bomem, Inc. +OUI:0004A0* + ID_OUI_FROM_DATABASE=Verity Instruments, Inc. -OUI:00023A* - ID_OUI_FROM_DATABASE=ZSK Stickmaschinen GmbH +OUI:0004A5* + ID_OUI_FROM_DATABASE=Barco Projection Systems NV -OUI:000425* - ID_OUI_FROM_DATABASE=Atmel Corporation +OUI:000499* + ID_OUI_FROM_DATABASE=Chino Corporation -OUI:000419* - ID_OUI_FROM_DATABASE=Fibercycle Networks, Inc. +OUI:00048D* + ID_OUI_FROM_DATABASE=Teo Technologies, Inc -OUI:00041A* - ID_OUI_FROM_DATABASE=Ines Test and Measurement GmbH & CoKG +OUI:000493* + ID_OUI_FROM_DATABASE=Tsinghua Unisplendour Co., Ltd. + +OUI:000484* + ID_OUI_FROM_DATABASE=Amann GmbH + +OUI:00048A* + ID_OUI_FROM_DATABASE=Temia Vertriebs GmbH + +OUI:00047A* + ID_OUI_FROM_DATABASE=AXXESSIT ASA + +OUI:000474* + ID_OUI_FROM_DATABASE=LEGRAND + +OUI:00046E* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:000473* + ID_OUI_FROM_DATABASE=Photonex Corporation + +OUI:000467* + ID_OUI_FROM_DATABASE=Wuhan Research Institute of MII + +OUI:000461* + ID_OUI_FROM_DATABASE=EPOX Computer Co., Ltd. + +OUI:00045B* + ID_OUI_FROM_DATABASE=Techsan Electronics Co., Ltd. OUI:000414* ID_OUI_FROM_DATABASE=Umezawa Musen Denki Co., Ltd. @@ -40826,38 +41909,77 @@ OUI:0003EB* OUI:0003E5* ID_OUI_FROM_DATABASE=Hermstedt SG -OUI:0002A3* - ID_OUI_FROM_DATABASE=ABB Switzerland Ltd, Power Systems +OUI:0003D9* + ID_OUI_FROM_DATABASE=Secheron SA -OUI:000298* - ID_OUI_FROM_DATABASE=Broadframe Corporation +OUI:00022F* + ID_OUI_FROM_DATABASE=P-Cube, Ltd. -OUI:000292* - ID_OUI_FROM_DATABASE=Logic Innovations, Inc. +OUI:000227* + ID_OUI_FROM_DATABASE=ESD Electronic System Design GmbH -OUI:00028D* - ID_OUI_FROM_DATABASE=Movita Technologies, Inc. +OUI:00021F* + ID_OUI_FROM_DATABASE=Aculab PLC -OUI:000283* - ID_OUI_FROM_DATABASE=Spectrum Controls, Inc. +OUI:00021B* + ID_OUI_FROM_DATABASE=Kollmorgen-Servotronix -OUI:000277* - ID_OUI_FROM_DATABASE=Cash Systemes Industrie +OUI:00020C* + ID_OUI_FROM_DATABASE=Metro-Optix -OUI:00027C* - ID_OUI_FROM_DATABASE=Trilithic, Inc. +OUI:000218* + ID_OUI_FROM_DATABASE=Advanced Scientific Corp -OUI:000275* - ID_OUI_FROM_DATABASE=SMART Technologies, Inc. +OUI:000213* + ID_OUI_FROM_DATABASE=S.D.E.L. -OUI:000270* - ID_OUI_FROM_DATABASE=Crewave Co., Ltd. +OUI:00020F* + ID_OUI_FROM_DATABASE=AATR -OUI:000104* - ID_OUI_FROM_DATABASE=DVICO Co., Ltd. +OUI:0001F9* + ID_OUI_FROM_DATABASE=TeraGlobal Communications Corp. -OUI:000110* - ID_OUI_FROM_DATABASE=Gotham Networks +OUI:000200* + ID_OUI_FROM_DATABASE=Net & Sys Co., Ltd. + +OUI:00015E* + ID_OUI_FROM_DATABASE=BEST TECHNOLOGY CO., LTD. + +OUI:000162* + ID_OUI_FROM_DATABASE=Cygnet Technologies, Inc. + +OUI:000169* + ID_OUI_FROM_DATABASE=Celestix Networks Pte Ltd. + +OUI:000175* + ID_OUI_FROM_DATABASE=Radiant Communications Corp. + +OUI:000159* + ID_OUI_FROM_DATABASE=S1 Corporation + +OUI:000165* + ID_OUI_FROM_DATABASE=AirSwitch Corporation + +OUI:000171* + ID_OUI_FROM_DATABASE=Allied Data Technologies + +OUI:000157* + ID_OUI_FROM_DATABASE=SYSWAVE CO., LTD + +OUI:000153* + ID_OUI_FROM_DATABASE=ARCHTEK TELECOM CORPORATION + +OUI:000144* + ID_OUI_FROM_DATABASE=EMC Corporation + +OUI:00014B* + ID_OUI_FROM_DATABASE=Ennovate Networks, Inc. + +OUI:00012C* + ID_OUI_FROM_DATABASE=Aravox Technologies, Inc. + +OUI:000138* + ID_OUI_FROM_DATABASE=XAVi Technologies Corp. OUI:00010C* ID_OUI_FROM_DATABASE=System Talks Inc. @@ -40892,41 +42014,32 @@ OUI:00B091* OUI:0030BE* ID_OUI_FROM_DATABASE=City-Net Technology, Inc. -OUI:000233* - ID_OUI_FROM_DATABASE=Mantra Communications, Inc. - -OUI:00022F* - ID_OUI_FROM_DATABASE=P-Cube, Ltd. - -OUI:000227* - ID_OUI_FROM_DATABASE=ESD Electronic System Design GmbH - -OUI:00021F* - ID_OUI_FROM_DATABASE=Aculab PLC +OUI:00303E* + ID_OUI_FROM_DATABASE=Radcom Ltd. -OUI:00021B* - ID_OUI_FROM_DATABASE=Kollmorgen-Servotronix +OUI:0030D7* + ID_OUI_FROM_DATABASE=Innovative Systems, L.L.C. -OUI:00020C* - ID_OUI_FROM_DATABASE=Metro-Optix +OUI:0030FC* + ID_OUI_FROM_DATABASE=Terawave Communications, Inc. -OUI:000218* - ID_OUI_FROM_DATABASE=Advanced Scientific Corp +OUI:00300F* + ID_OUI_FROM_DATABASE=IMT - Information Management T -OUI:000213* - ID_OUI_FROM_DATABASE=S.D.E.L. +OUI:003004* + ID_OUI_FROM_DATABASE=LEADTEK RESEARCH INC. -OUI:00020F* - ID_OUI_FROM_DATABASE=AATR +OUI:003018* + ID_OUI_FROM_DATABASE=Jetway Information Co., Ltd. -OUI:0001F4* - ID_OUI_FROM_DATABASE=Enterasys Networks +OUI:003088* + ID_OUI_FROM_DATABASE=Ericsson -OUI:0001F9* - ID_OUI_FROM_DATABASE=TeraGlobal Communications Corp. +OUI:0030CA* + ID_OUI_FROM_DATABASE=Discovery Com -OUI:000200* - ID_OUI_FROM_DATABASE=Net & Sys Co., Ltd. +OUI:00304F* + ID_OUI_FROM_DATABASE=PLANET Technology Corporation OUI:0001FC* ID_OUI_FROM_DATABASE=Keyence Corporation @@ -40961,80 +42074,44 @@ OUI:0001D1* OUI:0001B3* ID_OUI_FROM_DATABASE=Precision Electronic Manufacturing -OUI:000160* - ID_OUI_FROM_DATABASE=ELMEX Co., LTD. - -OUI:00015E* - ID_OUI_FROM_DATABASE=BEST TECHNOLOGY CO., LTD. - -OUI:000162* - ID_OUI_FROM_DATABASE=Cygnet Technologies, Inc. - -OUI:000169* - ID_OUI_FROM_DATABASE=Celestix Networks Pte Ltd. - -OUI:000175* - ID_OUI_FROM_DATABASE=Radiant Communications Corp. - -OUI:000159* - ID_OUI_FROM_DATABASE=S1 Corporation - -OUI:000165* - ID_OUI_FROM_DATABASE=AirSwitch Corporation - -OUI:000171* - ID_OUI_FROM_DATABASE=Allied Data Technologies - -OUI:000157* - ID_OUI_FROM_DATABASE=SYSWAVE CO., LTD - -OUI:000153* - ID_OUI_FROM_DATABASE=ARCHTEK TELECOM CORPORATION - -OUI:000144* - ID_OUI_FROM_DATABASE=EMC Corporation - -OUI:003038* - ID_OUI_FROM_DATABASE=XCP, INC. - -OUI:0030DB* - ID_OUI_FROM_DATABASE=Mindready Solutions, Inc. +OUI:0001B1* + ID_OUI_FROM_DATABASE=General Bandwidth -OUI:00306A* - ID_OUI_FROM_DATABASE=PENTA MEDIA CO., LTD. +OUI:0001BB* + ID_OUI_FROM_DATABASE=Frequentis -OUI:003021* - ID_OUI_FROM_DATABASE=HSING TECH. ENTERPRISE CO.,LTD +OUI:00025E* + ID_OUI_FROM_DATABASE=High Technology Ltd -OUI:0030EA* - ID_OUI_FROM_DATABASE=TeraForce Technology Corporation +OUI:000261* + ID_OUI_FROM_DATABASE=Tilgin AB -OUI:0030F4* - ID_OUI_FROM_DATABASE=STARDOT TECHNOLOGIES +OUI:000259* + ID_OUI_FROM_DATABASE=Tsann Kuen China (Shanghai)Enterprise Co., Ltd. IT Group -OUI:003087* - ID_OUI_FROM_DATABASE=VEGA GRIESHABER KG +OUI:000255* + ID_OUI_FROM_DATABASE=IBM Corp -OUI:003000* - ID_OUI_FROM_DATABASE=ALLWELL TECHNOLOGY CORP. +OUI:000249* + ID_OUI_FROM_DATABASE=Aviv Infocom Co, Ltd. -OUI:003034* - ID_OUI_FROM_DATABASE=SET ENGINEERING +OUI:000250* + ID_OUI_FROM_DATABASE=Geyser Networks, Inc. -OUI:00308D* - ID_OUI_FROM_DATABASE=Pinnacle Systems, Inc. +OUI:000242* + ID_OUI_FROM_DATABASE=Videoframe Systems -OUI:00304B* - ID_OUI_FROM_DATABASE=ORBACOM SYSTEMS, INC. +OUI:000244* + ID_OUI_FROM_DATABASE=SURECOM Technology Co. -OUI:0030FA* - ID_OUI_FROM_DATABASE=TELICA, INC. +OUI:00022C* + ID_OUI_FROM_DATABASE=ABB Bomem, Inc. -OUI:0001B1* - ID_OUI_FROM_DATABASE=General Bandwidth +OUI:00023A* + ID_OUI_FROM_DATABASE=ZSK Stickmaschinen GmbH -OUI:0001BB* - ID_OUI_FROM_DATABASE=Frequentis +OUI:000233* + ID_OUI_FROM_DATABASE=Mantra Communications, Inc. OUI:0001B7* ID_OUI_FROM_DATABASE=Centos, Inc. @@ -41078,41 +42155,38 @@ OUI:0030F5* OUI:000184* ID_OUI_FROM_DATABASE=SIEB & MEYER AG -OUI:00303E* - ID_OUI_FROM_DATABASE=Radcom Ltd. - -OUI:0030D7* - ID_OUI_FROM_DATABASE=Innovative Systems, L.L.C. +OUI:000160* + ID_OUI_FROM_DATABASE=ELMEX Co., LTD. -OUI:0030FC* - ID_OUI_FROM_DATABASE=Terawave Communications, Inc. +OUI:000298* + ID_OUI_FROM_DATABASE=Broadframe Corporation -OUI:00300F* - ID_OUI_FROM_DATABASE=IMT - Information Management T +OUI:000292* + ID_OUI_FROM_DATABASE=Logic Innovations, Inc. -OUI:003004* - ID_OUI_FROM_DATABASE=LEADTEK RESEARCH INC. +OUI:00028D* + ID_OUI_FROM_DATABASE=Movita Technologies, Inc. -OUI:003018* - ID_OUI_FROM_DATABASE=Jetway Information Co., Ltd. +OUI:000283* + ID_OUI_FROM_DATABASE=Spectrum Controls, Inc. -OUI:003088* - ID_OUI_FROM_DATABASE=Ericsson +OUI:000277* + ID_OUI_FROM_DATABASE=Cash Systemes Industrie -OUI:0030CA* - ID_OUI_FROM_DATABASE=Discovery Com +OUI:00027C* + ID_OUI_FROM_DATABASE=Trilithic, Inc. -OUI:00304F* - ID_OUI_FROM_DATABASE=PLANET Technology Corporation +OUI:000275* + ID_OUI_FROM_DATABASE=SMART Technologies, Inc. -OUI:00014B* - ID_OUI_FROM_DATABASE=Ennovate Networks, Inc. +OUI:000270* + ID_OUI_FROM_DATABASE=Crewave Co., Ltd. -OUI:00012C* - ID_OUI_FROM_DATABASE=Aravox Technologies, Inc. +OUI:000269* + ID_OUI_FROM_DATABASE=Nadatel Co., Ltd -OUI:000138* - ID_OUI_FROM_DATABASE=XAVi Technologies Corp. +OUI:000265* + ID_OUI_FROM_DATABASE=Virditech Co. Ltd. OUI:000134* ID_OUI_FROM_DATABASE=Selectron Systems AG @@ -41135,26 +42209,11 @@ OUI:000123* OUI:00011F* ID_OUI_FROM_DATABASE=RC Networks, Inc. -OUI:003045* - ID_OUI_FROM_DATABASE=Village Networks, Inc. (VNI) - -OUI:0030BB* - ID_OUI_FROM_DATABASE=CacheFlow, Inc. - -OUI:003053* - ID_OUI_FROM_DATABASE=Basler AG - -OUI:003072* - ID_OUI_FROM_DATABASE=Intellibyte Inc. - -OUI:0030B1* - ID_OUI_FROM_DATABASE=TrunkNet - -OUI:0030A7* - ID_OUI_FROM_DATABASE=SCHWEITZER ENGINEERING +OUI:000104* + ID_OUI_FROM_DATABASE=DVICO Co., Ltd. -OUI:00D086* - ID_OUI_FROM_DATABASE=FOVEON, INC. +OUI:000110* + ID_OUI_FROM_DATABASE=Gotham Networks OUI:00D05A* ID_OUI_FROM_DATABASE=SYMBIONICS, LTD. @@ -41201,50 +42260,47 @@ OUI:00D01E* OUI:00D0A9* ID_OUI_FROM_DATABASE=SHINANO KENSHI CO., LTD. -OUI:0030E9* - ID_OUI_FROM_DATABASE=GMA COMMUNICATION MANUFACT'G - -OUI:003027* - ID_OUI_FROM_DATABASE=KERBANGO, INC. +OUI:00D0F2* + ID_OUI_FROM_DATABASE=MONTEREY NETWORKS -OUI:0030F6* - ID_OUI_FROM_DATABASE=SECURELOGIX CORPORATION +OUI:0030DB* + ID_OUI_FROM_DATABASE=Mindready Solutions, Inc. -OUI:0030B6* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc +OUI:00306A* + ID_OUI_FROM_DATABASE=PENTA MEDIA CO., LTD. -OUI:0030B2* - ID_OUI_FROM_DATABASE=L-3 Sonoma EO +OUI:003021* + ID_OUI_FROM_DATABASE=HSING TECH. ENTERPRISE CO.,LTD -OUI:0030D6* - ID_OUI_FROM_DATABASE=MSC VERTRIEBS GMBH +OUI:0030EA* + ID_OUI_FROM_DATABASE=TeraForce Technology Corporation -OUI:003008* - ID_OUI_FROM_DATABASE=AVIO DIGITAL, INC. +OUI:0030F4* + ID_OUI_FROM_DATABASE=STARDOT TECHNOLOGIES -OUI:00306D* - ID_OUI_FROM_DATABASE=LUCENT TECHNOLOGIES +OUI:003087* + ID_OUI_FROM_DATABASE=VEGA GRIESHABER KG -OUI:0030E4* - ID_OUI_FROM_DATABASE=CHIYODA SYSTEM RIKEN +OUI:003000* + ID_OUI_FROM_DATABASE=ALLWELL TECHNOLOGY CORP. -OUI:00301A* - ID_OUI_FROM_DATABASE=SMARTBRIDGES PTE. LTD. +OUI:003034* + ID_OUI_FROM_DATABASE=SET ENGINEERING -OUI:0030CD* - ID_OUI_FROM_DATABASE=CONEXANT SYSTEMS, INC. +OUI:00308D* + ID_OUI_FROM_DATABASE=Pinnacle Systems, Inc. -OUI:003001* - ID_OUI_FROM_DATABASE=SMP +OUI:00304B* + ID_OUI_FROM_DATABASE=ORBACOM SYSTEMS, INC. -OUI:0030E1* - ID_OUI_FROM_DATABASE=Network Equipment Technologies, Inc. +OUI:0030FA* + ID_OUI_FROM_DATABASE=TELICA, INC. -OUI:0050A7* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc +OUI:0030E9* + ID_OUI_FROM_DATABASE=GMA COMMUNICATION MANUFACT'G -OUI:00D0EE* - ID_OUI_FROM_DATABASE=DICTAPHONE CORPORATION +OUI:003027* + ID_OUI_FROM_DATABASE=KERBANGO, INC. OUI:00D0B8* ID_OUI_FROM_DATABASE=Iomega Corporation @@ -41288,104 +42344,56 @@ OUI:0050A9* OUI:00503C* ID_OUI_FROM_DATABASE=TSINGHUA NOVEL ELECTRONICS -OUI:005030* - ID_OUI_FROM_DATABASE=FUTURE PLUS SYSTEMS - -OUI:005037* - ID_OUI_FROM_DATABASE=KOGA ELECTRONICS CO. - -OUI:00501F* - ID_OUI_FROM_DATABASE=MRG SYSTEMS, LTD. - -OUI:005092* - ID_OUI_FROM_DATABASE=Rigaku Corporation Osaka Plant - -OUI:00501C* - ID_OUI_FROM_DATABASE=JATOM SYSTEMS, INC. - -OUI:00505C* - ID_OUI_FROM_DATABASE=TUNDO CORPORATION - -OUI:005068* - ID_OUI_FROM_DATABASE=ELECTRONIC INDUSTRIES ASSOCIATION - -OUI:00501A* - ID_OUI_FROM_DATABASE=IQinVision - -OUI:005063* - ID_OUI_FROM_DATABASE=OY COMSEL SYSTEM AB - -OUI:0050DE* - ID_OUI_FROM_DATABASE=SIGNUM SYSTEMS CORP. - -OUI:00507B* - ID_OUI_FROM_DATABASE=MERLOT COMMUNICATIONS - -OUI:005078* - ID_OUI_FROM_DATABASE=MEGATON HOUSE, LTD. - -OUI:00508F* - ID_OUI_FROM_DATABASE=ASITA TECHNOLOGIES INT'L LTD. - -OUI:005057* - ID_OUI_FROM_DATABASE=BROADBAND ACCESS SYSTEMS - -OUI:005087* - ID_OUI_FROM_DATABASE=TERASAKI ELECTRIC CO., LTD. - -OUI:00D03E* - ID_OUI_FROM_DATABASE=ROCKETCHIPS, INC. +OUI:0050B6* + ID_OUI_FROM_DATABASE=GOOD WAY IND. CO., LTD. -OUI:00D03F* - ID_OUI_FROM_DATABASE=AMERICAN COMMUNICATION +OUI:0050FF* + ID_OUI_FROM_DATABASE=HAKKO ELECTRONICS CO., LTD. -OUI:00D033* - ID_OUI_FROM_DATABASE=DALIAN DAXIAN NETWORK +OUI:005032* + ID_OUI_FROM_DATABASE=PICAZO COMMUNICATIONS, INC. -OUI:00D0CE* - ID_OUI_FROM_DATABASE=ASYST ELECTRONIC +OUI:0030F6* + ID_OUI_FROM_DATABASE=SECURELOGIX CORPORATION -OUI:00D090* +OUI:0030B6* ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:00D0B6* - ID_OUI_FROM_DATABASE=CRESCENT NETWORKS, INC. - -OUI:00D0D2* - ID_OUI_FROM_DATABASE=EPILOG CORPORATION +OUI:0030B2* + ID_OUI_FROM_DATABASE=L-3 Sonoma EO -OUI:0050B6* - ID_OUI_FROM_DATABASE=GOOD WAY IND. CO., LTD. +OUI:0030D6* + ID_OUI_FROM_DATABASE=MSC VERTRIEBS GMBH -OUI:0050FF* - ID_OUI_FROM_DATABASE=HAKKO ELECTRONICS CO., LTD. +OUI:003008* + ID_OUI_FROM_DATABASE=AVIO DIGITAL, INC. -OUI:005032* - ID_OUI_FROM_DATABASE=PICAZO COMMUNICATIONS, INC. +OUI:00306D* + ID_OUI_FROM_DATABASE=LUCENT TECHNOLOGIES -OUI:0050DA* - ID_OUI_FROM_DATABASE=3COM CORPORATION +OUI:0030E4* + ID_OUI_FROM_DATABASE=CHIYODA SYSTEM RIKEN -OUI:0050F9* - ID_OUI_FROM_DATABASE=Sensormatic Electronics LLC +OUI:00301A* + ID_OUI_FROM_DATABASE=SMARTBRIDGES PTE. LTD. -OUI:0050F6* - ID_OUI_FROM_DATABASE=PAN-INTERNATIONAL INDUSTRIAL CORP. +OUI:0030CD* + ID_OUI_FROM_DATABASE=CONEXANT SYSTEMS, INC. -OUI:00506C* - ID_OUI_FROM_DATABASE=Beijer Electronics Products AB +OUI:003001* + ID_OUI_FROM_DATABASE=SMP -OUI:0050A5* - ID_OUI_FROM_DATABASE=CAPITOL BUSINESS SYSTEMS, LTD. +OUI:0030E1* + ID_OUI_FROM_DATABASE=Network Equipment Technologies, Inc. -OUI:0050FC* - ID_OUI_FROM_DATABASE=EDIMAX TECHNOLOGY CO., LTD. +OUI:0030D8* + ID_OUI_FROM_DATABASE=SITEK -OUI:005000* - ID_OUI_FROM_DATABASE=NEXO COMMUNICATIONS, INC. +OUI:003062* + ID_OUI_FROM_DATABASE=IP Video Networks Inc -OUI:00D071* - ID_OUI_FROM_DATABASE=ECHELON CORP. +OUI:003081* + ID_OUI_FROM_DATABASE=ALTOS C&C OUI:00D066* ID_OUI_FROM_DATABASE=WINTRISS ENGINEERING CORP. @@ -41417,8 +42425,29 @@ OUI:00D038* OUI:00D00C* ID_OUI_FROM_DATABASE=SNIJDER MICRO SYSTEMS -OUI:00D0F2* - ID_OUI_FROM_DATABASE=MONTEREY NETWORKS +OUI:00D086* + ID_OUI_FROM_DATABASE=FOVEON, INC. + +OUI:00D03F* + ID_OUI_FROM_DATABASE=AMERICAN COMMUNICATION + +OUI:00D033* + ID_OUI_FROM_DATABASE=DALIAN DAXIAN NETWORK + +OUI:00D0CE* + ID_OUI_FROM_DATABASE=ASYST ELECTRONIC + +OUI:00D090* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:00D0B6* + ID_OUI_FROM_DATABASE=CRESCENT NETWORKS, INC. + +OUI:00D0D2* + ID_OUI_FROM_DATABASE=EPILOG CORPORATION + +OUI:00D071* + ID_OUI_FROM_DATABASE=ECHELON CORP. OUI:00D07B* ID_OUI_FROM_DATABASE=COMCAM INTERNATIONAL INC @@ -41435,14 +42464,11 @@ OUI:00D04C* OUI:00D0FD* ID_OUI_FROM_DATABASE=OPTIMA TELE.COM, INC. -OUI:0030D8* - ID_OUI_FROM_DATABASE=SITEK - -OUI:003062* - ID_OUI_FROM_DATABASE=IP Video Networks Inc +OUI:0050A7* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc -OUI:003081* - ID_OUI_FROM_DATABASE=ALTOS C&C +OUI:00D0EE* + ID_OUI_FROM_DATABASE=DICTAPHONE CORPORATION OUI:00D0B0* ID_OUI_FROM_DATABASE=BITSWITCH LTD. @@ -41459,6 +42485,30 @@ OUI:00D045* OUI:00D0D0* ID_OUI_FROM_DATABASE=ZHONGXING TELECOM LTD. +OUI:00D03E* + ID_OUI_FROM_DATABASE=ROCKETCHIPS, INC. + +OUI:003045* + ID_OUI_FROM_DATABASE=Village Networks, Inc. (VNI) + +OUI:0030BB* + ID_OUI_FROM_DATABASE=CacheFlow, Inc. + +OUI:003053* + ID_OUI_FROM_DATABASE=Basler AG + +OUI:003072* + ID_OUI_FROM_DATABASE=Intellibyte Inc. + +OUI:0030B1* + ID_OUI_FROM_DATABASE=TrunkNet + +OUI:0030A7* + ID_OUI_FROM_DATABASE=SCHWEITZER ENGINEERING + +OUI:003038* + ID_OUI_FROM_DATABASE=XCP, INC. + OUI:00902C* ID_OUI_FROM_DATABASE=DATA & CONTROL EQUIPMENT LTD. @@ -41477,89 +42527,50 @@ OUI:009017* OUI:00907B* ID_OUI_FROM_DATABASE=E-TECH, INC. -OUI:00102A* - ID_OUI_FROM_DATABASE=ZF MICROSYSTEMS, INC. - -OUI:00107D* - ID_OUI_FROM_DATABASE=AURORA COMMUNICATIONS, LTD. - -OUI:00101C* - ID_OUI_FROM_DATABASE=OHM TECHNOLOGIES INTL, LLC - -OUI:00106C* - ID_OUI_FROM_DATABASE=EDNT GmbH - -OUI:0010D4* - ID_OUI_FROM_DATABASE=STORAGE COMPUTER CORPORATION - -OUI:0010BF* - ID_OUI_FROM_DATABASE=InterAir Wireless - -OUI:001036* - ID_OUI_FROM_DATABASE=INTER-TEL INTEGRATED SYSTEMS - -OUI:001026* - ID_OUI_FROM_DATABASE=ACCELERATED NETWORKS, INC. - -OUI:00104B* - ID_OUI_FROM_DATABASE=3COM CORPORATION - -OUI:000629* - ID_OUI_FROM_DATABASE=IBM Corp - -OUI:001004* - ID_OUI_FROM_DATABASE=THE BRANTLEY COILE COMPANY,INC - -OUI:00103A* - ID_OUI_FROM_DATABASE=DIAMOND NETWORK TECH - -OUI:0010D8* - ID_OUI_FROM_DATABASE=CALISTA - -OUI:001031* - ID_OUI_FROM_DATABASE=OBJECTIVE COMMUNICATIONS, INC. +OUI:00909D* + ID_OUI_FROM_DATABASE=NovaTech Process Solutions, LLC -OUI:00107E* - ID_OUI_FROM_DATABASE=BACHMANN ELECTRONIC GmbH +OUI:009038* + ID_OUI_FROM_DATABASE=FOUNTAIN TECHNOLOGIES, INC. -OUI:0010C0* - ID_OUI_FROM_DATABASE=ARMA, Inc. +OUI:00501F* + ID_OUI_FROM_DATABASE=MRG SYSTEMS, LTD. -OUI:001016* - ID_OUI_FROM_DATABASE=T.SQWARE +OUI:005092* + ID_OUI_FROM_DATABASE=Rigaku Corporation Osaka Plant -OUI:00103D* - ID_OUI_FROM_DATABASE=PHASECOM, LTD. +OUI:00501C* + ID_OUI_FROM_DATABASE=JATOM SYSTEMS, INC. -OUI:0010C2* - ID_OUI_FROM_DATABASE=WILLNET, INC. +OUI:00505C* + ID_OUI_FROM_DATABASE=TUNDO CORPORATION -OUI:00107A* - ID_OUI_FROM_DATABASE=AmbiCom, Inc. +OUI:005068* + ID_OUI_FROM_DATABASE=ELECTRONIC INDUSTRIES ASSOCIATION -OUI:0010C4* - ID_OUI_FROM_DATABASE=MEDIA GLOBAL LINKS CO., LTD. +OUI:00501A* + ID_OUI_FROM_DATABASE=IQinVision -OUI:0010EB* - ID_OUI_FROM_DATABASE=SELSIUS SYSTEMS, INC. +OUI:005063* + ID_OUI_FROM_DATABASE=OY COMSEL SYSTEM AB -OUI:0010FE* - ID_OUI_FROM_DATABASE=DIGITAL EQUIPMENT CORPORATION +OUI:0050DE* + ID_OUI_FROM_DATABASE=SIGNUM SYSTEMS CORP. -OUI:00102E* - ID_OUI_FROM_DATABASE=NETWORK SYSTEMS & TECHNOLOGIES PVT. LTD. +OUI:00507B* + ID_OUI_FROM_DATABASE=MERLOT COMMUNICATIONS -OUI:0010C1* - ID_OUI_FROM_DATABASE=OI ELECTRIC CO., LTD. +OUI:005078* + ID_OUI_FROM_DATABASE=MEGATON HOUSE, LTD. -OUI:00103E* - ID_OUI_FROM_DATABASE=NETSCHOOLS CORPORATION +OUI:00508F* + ID_OUI_FROM_DATABASE=ASITA TECHNOLOGIES INT'L LTD. -OUI:001049* - ID_OUI_FROM_DATABASE=ShoreTel, Inc +OUI:005057* + ID_OUI_FROM_DATABASE=BROADBAND ACCESS SYSTEMS -OUI:00105E* - ID_OUI_FROM_DATABASE=Spirent plc, Service Assurance Broadband +OUI:005087* + ID_OUI_FROM_DATABASE=TERASAKI ELECTRIC CO., LTD. OUI:005088* ID_OUI_FROM_DATABASE=AMANO CORPORATION @@ -41591,6 +42602,30 @@ OUI:0050EB* OUI:0050BC* ID_OUI_FROM_DATABASE=HAMMER STORAGE SOLUTIONS +OUI:00900F* + ID_OUI_FROM_DATABASE=KAWASAKI HEAVY INDUSTRIES, LTD + +OUI:009036* + ID_OUI_FROM_DATABASE=ens, inc. + +OUI:0090E9* + ID_OUI_FROM_DATABASE=JANZ COMPUTER AG + +OUI:009032* + ID_OUI_FROM_DATABASE=PELCOMBE GROUP LTD. + +OUI:0090B8* + ID_OUI_FROM_DATABASE=ROHDE & SCHWARZ GMBH & CO. KG + +OUI:009058* + ID_OUI_FROM_DATABASE=Ultra Electronics Ltd., Command and Control Systems + +OUI:0090BE* + ID_OUI_FROM_DATABASE=IBC/INTEGRATED BUSINESS COMPUTERS + +OUI:009062* + ID_OUI_FROM_DATABASE=ICP VORTEX COMPUTERSYSTEME GmbH + OUI:0090C3* ID_OUI_FROM_DATABASE=TOPIC SEMICONDUCTOR CORP. @@ -41633,11 +42668,14 @@ OUI:0010D5* OUI:0010E5* ID_OUI_FROM_DATABASE=SOLECTRON TEXAS -OUI:00909D* - ID_OUI_FROM_DATABASE=NovaTech Process Solutions, LLC +OUI:00102A* + ID_OUI_FROM_DATABASE=ZF MICROSYSTEMS, INC. -OUI:009038* - ID_OUI_FROM_DATABASE=FOUNTAIN TECHNOLOGIES, INC. +OUI:00107D* + ID_OUI_FROM_DATABASE=AURORA COMMUNICATIONS, LTD. + +OUI:00101C* + ID_OUI_FROM_DATABASE=OHM TECHNOLOGIES INTL, LLC OUI:0090C5* ID_OUI_FROM_DATABASE=INTERNET MAGIC, INC. @@ -41696,68 +42734,131 @@ OUI:009098* OUI:0090CF* ID_OUI_FROM_DATABASE=NORTEL -OUI:00900F* - ID_OUI_FROM_DATABASE=KAWASAKI HEAVY INDUSTRIES, LTD +OUI:0050DA* + ID_OUI_FROM_DATABASE=3COM CORPORATION -OUI:009036* - ID_OUI_FROM_DATABASE=ens, inc. +OUI:0050F9* + ID_OUI_FROM_DATABASE=Sensormatic Electronics LLC -OUI:0090E9* - ID_OUI_FROM_DATABASE=JANZ COMPUTER AG +OUI:0050F6* + ID_OUI_FROM_DATABASE=PAN-INTERNATIONAL INDUSTRIAL CORP. -OUI:009032* - ID_OUI_FROM_DATABASE=PELCOMBE GROUP LTD. +OUI:00506C* + ID_OUI_FROM_DATABASE=Beijer Electronics Products AB -OUI:0090B8* - ID_OUI_FROM_DATABASE=ROHDE & SCHWARZ GMBH & CO. KG +OUI:0050A5* + ID_OUI_FROM_DATABASE=CAPITOL BUSINESS SYSTEMS, LTD. -OUI:009058* - ID_OUI_FROM_DATABASE=Ultra Electronics Ltd., Command and Control Systems +OUI:005000* + ID_OUI_FROM_DATABASE=NEXO COMMUNICATIONS, INC. -OUI:0090BE* - ID_OUI_FROM_DATABASE=IBC/INTEGRATED BUSINESS COMPUTERS +OUI:005030* + ID_OUI_FROM_DATABASE=FUTURE PLUS SYSTEMS -OUI:009062* - ID_OUI_FROM_DATABASE=ICP VORTEX COMPUTERSYSTEME GmbH +OUI:005037* + ID_OUI_FROM_DATABASE=KOGA ELECTRONICS CO. -OUI:00108F* - ID_OUI_FROM_DATABASE=RAPTOR SYSTEMS +OUI:00106C* + ID_OUI_FROM_DATABASE=EDNT GmbH -OUI:001089* - ID_OUI_FROM_DATABASE=WebSonic +OUI:0010D4* + ID_OUI_FROM_DATABASE=STORAGE COMPUTER CORPORATION -OUI:001086* - ID_OUI_FROM_DATABASE=ATTO Technology, Inc. +OUI:0010BF* + ID_OUI_FROM_DATABASE=InterAir Wireless -OUI:001027* - ID_OUI_FROM_DATABASE=L-3 COMMUNICATIONS EAST +OUI:001036* + ID_OUI_FROM_DATABASE=INTER-TEL INTEGRATED SYSTEMS -OUI:0010B8* - ID_OUI_FROM_DATABASE=ISHIGAKI COMPUTER SYSTEM CO. +OUI:001026* + ID_OUI_FROM_DATABASE=ACCELERATED NETWORKS, INC. -OUI:00104C* - ID_OUI_FROM_DATABASE=Teledyne LeCroy, Inc +OUI:00104B* + ID_OUI_FROM_DATABASE=3COM CORPORATION -OUI:001001* - ID_OUI_FROM_DATABASE=Citel +OUI:000629* + ID_OUI_FROM_DATABASE=IBM Corp -OUI:0010CF* - ID_OUI_FROM_DATABASE=FIBERLANE COMMUNICATIONS +OUI:001004* + ID_OUI_FROM_DATABASE=THE BRANTLEY COILE COMPANY,INC -OUI:001068* - ID_OUI_FROM_DATABASE=COMOS TELECOM +OUI:00103A* + ID_OUI_FROM_DATABASE=DIAMOND NETWORK TECH -OUI:001067* - ID_OUI_FROM_DATABASE=Ericsson +OUI:0010D8* + ID_OUI_FROM_DATABASE=CALISTA -OUI:0010F1* - ID_OUI_FROM_DATABASE=I-O CORPORATION +OUI:001031* + ID_OUI_FROM_DATABASE=OBJECTIVE COMMUNICATIONS, INC. -OUI:001073* - ID_OUI_FROM_DATABASE=TECHNOBOX, INC. +OUI:00103D* + ID_OUI_FROM_DATABASE=PHASECOM, LTD. -OUI:00E0C0* - ID_OUI_FROM_DATABASE=SEIWA ELECTRIC MFG. CO., LTD. +OUI:0010C2* + ID_OUI_FROM_DATABASE=WILLNET, INC. + +OUI:00107A* + ID_OUI_FROM_DATABASE=AmbiCom, Inc. + +OUI:0010C4* + ID_OUI_FROM_DATABASE=MEDIA GLOBAL LINKS CO., LTD. + +OUI:0010EB* + ID_OUI_FROM_DATABASE=SELSIUS SYSTEMS, INC. + +OUI:0010FE* + ID_OUI_FROM_DATABASE=DIGITAL EQUIPMENT CORPORATION + +OUI:00102E* + ID_OUI_FROM_DATABASE=NETWORK SYSTEMS & TECHNOLOGIES PVT. LTD. + +OUI:0010C1* + ID_OUI_FROM_DATABASE=OI ELECTRIC CO., LTD. + +OUI:00103E* + ID_OUI_FROM_DATABASE=NETSCHOOLS CORPORATION + +OUI:001049* + ID_OUI_FROM_DATABASE=ShoreTel, Inc + +OUI:00105E* + ID_OUI_FROM_DATABASE=Spirent plc, Service Assurance Broadband + +OUI:0010B1* + ID_OUI_FROM_DATABASE=FOR-A CO., LTD. + +OUI:001041* + ID_OUI_FROM_DATABASE=BRISTOL BABCOCK, INC. + +OUI:0010F7* + ID_OUI_FROM_DATABASE=IRIICHI TECHNOLOGIES Inc. + +OUI:00E0FD* + ID_OUI_FROM_DATABASE=A-TREND TECHNOLOGY CO., LTD. + +OUI:00E0FB* + ID_OUI_FROM_DATABASE=LEIGHTRONIX, INC. + +OUI:00E0D3* + ID_OUI_FROM_DATABASE=DATENTECHNIK GmbH + +OUI:00E05E* + ID_OUI_FROM_DATABASE=JAPAN AVIATION ELECTRONICS INDUSTRY, LTD. + +OUI:00E0E5* + ID_OUI_FROM_DATABASE=CINCO NETWORKS, INC. + +OUI:00E0A1* + ID_OUI_FROM_DATABASE=HIMA PAUL HILDEBRANDT GmbH Co. KG + +OUI:00E028* + ID_OUI_FROM_DATABASE=APTIX CORPORATION + +OUI:00E0F2* + ID_OUI_FROM_DATABASE=ARLOTTO COMNET, INC. + +OUI:00E020* + ID_OUI_FROM_DATABASE=TECNOMEN OY OUI:00E046* ID_OUI_FROM_DATABASE=BENTLY NEVADA CORP. @@ -41792,6 +42893,51 @@ OUI:00E012* OUI:00E0D8* ID_OUI_FROM_DATABASE=LANBit Computer, Inc. +OUI:00108F* + ID_OUI_FROM_DATABASE=RAPTOR SYSTEMS + +OUI:001089* + ID_OUI_FROM_DATABASE=WebSonic + +OUI:001086* + ID_OUI_FROM_DATABASE=ATTO Technology, Inc. + +OUI:001027* + ID_OUI_FROM_DATABASE=L-3 COMMUNICATIONS EAST + +OUI:0010B8* + ID_OUI_FROM_DATABASE=ISHIGAKI COMPUTER SYSTEM CO. + +OUI:00104C* + ID_OUI_FROM_DATABASE=Teledyne LeCroy, Inc + +OUI:001001* + ID_OUI_FROM_DATABASE=Citel + +OUI:0010CF* + ID_OUI_FROM_DATABASE=FIBERLANE COMMUNICATIONS + +OUI:001068* + ID_OUI_FROM_DATABASE=COMOS TELECOM + +OUI:001067* + ID_OUI_FROM_DATABASE=Ericsson + +OUI:0010F1* + ID_OUI_FROM_DATABASE=I-O CORPORATION + +OUI:001073* + ID_OUI_FROM_DATABASE=TECHNOBOX, INC. + +OUI:00107E* + ID_OUI_FROM_DATABASE=BACHMANN ELECTRONIC GmbH + +OUI:0010C0* + ID_OUI_FROM_DATABASE=ARMA, Inc. + +OUI:001016* + ID_OUI_FROM_DATABASE=T.SQWARE + OUI:00E02D* ID_OUI_FROM_DATABASE=InnoMediaLogic, Inc. @@ -41828,38 +42974,17 @@ OUI:00E0C7* OUI:00E0C4* ID_OUI_FROM_DATABASE=HORNER ELECTRIC, INC. -OUI:00E04D* - ID_OUI_FROM_DATABASE=INTERNET INITIATIVE JAPAN, INC - -OUI:00607F* - ID_OUI_FROM_DATABASE=AURORA TECHNOLOGIES, INC. - -OUI:00E039* - ID_OUI_FROM_DATABASE=PARADYNE CORP. - -OUI:006091* - ID_OUI_FROM_DATABASE=FIRST PACIFIC NETWORKS, INC. - -OUI:006002* - ID_OUI_FROM_DATABASE=SCREEN SUBTITLING SYSTEMS, LTD - -OUI:006061* - ID_OUI_FROM_DATABASE=WHISTLE COMMUNICATIONS CORP. - -OUI:0060BD* - ID_OUI_FROM_DATABASE=HUBBELL-PULSECOM - -OUI:00E0A1* - ID_OUI_FROM_DATABASE=HIMA PAUL HILDEBRANDT GmbH Co. KG +OUI:0010E6* + ID_OUI_FROM_DATABASE=APPLIED INTELLIGENT SYSTEMS, INC. -OUI:00E028* - ID_OUI_FROM_DATABASE=APTIX CORPORATION +OUI:00101E* + ID_OUI_FROM_DATABASE=MATSUSHITA ELECTRONIC INSTRUMENTS CORP. -OUI:00E0F2* - ID_OUI_FROM_DATABASE=ARLOTTO COMNET, INC. +OUI:0010F2* + ID_OUI_FROM_DATABASE=ANTEC -OUI:00E020* - ID_OUI_FROM_DATABASE=TECNOMEN OY +OUI:0010BE* + ID_OUI_FROM_DATABASE=MARCH NETWORKS CORPORATION OUI:00E0C5* ID_OUI_FROM_DATABASE=BCOM ELECTRONICS INC. @@ -41882,77 +43007,50 @@ OUI:00E0F0* OUI:00E0B7* ID_OUI_FROM_DATABASE=PI GROUP, LTD. -OUI:0010B1* - ID_OUI_FROM_DATABASE=FOR-A CO., LTD. - -OUI:001041* - ID_OUI_FROM_DATABASE=BRISTOL BABCOCK, INC. - -OUI:0010F7* - ID_OUI_FROM_DATABASE=IRIICHI TECHNOLOGIES Inc. - -OUI:0010E6* - ID_OUI_FROM_DATABASE=APPLIED INTELLIGENT SYSTEMS, INC. - -OUI:00101E* - ID_OUI_FROM_DATABASE=MATSUSHITA ELECTRONIC INSTRUMENTS CORP. - -OUI:0010F2* - ID_OUI_FROM_DATABASE=ANTEC - -OUI:0010BE* - ID_OUI_FROM_DATABASE=MARCH NETWORKS CORPORATION - -OUI:006074* - ID_OUI_FROM_DATABASE=QSC AUDIO PRODUCTS - -OUI:006058* - ID_OUI_FROM_DATABASE=COPPER MOUNTAIN COMMUNICATIONS, INC. - -OUI:00601B* - ID_OUI_FROM_DATABASE=MESA ELECTRONICS +OUI:00E0C0* + ID_OUI_FROM_DATABASE=SEIWA ELECTRIC MFG. CO., LTD. -OUI:0060FF* - ID_OUI_FROM_DATABASE=QuVis, Inc. +OUI:006098* + ID_OUI_FROM_DATABASE=HT COMMUNICATIONS -OUI:006056* - ID_OUI_FROM_DATABASE=NETWORK TOOLS, INC. +OUI:0060F7* + ID_OUI_FROM_DATABASE=DATAFUSION SYSTEMS -OUI:0060D8* - ID_OUI_FROM_DATABASE=ELMIC SYSTEMS, INC. +OUI:0060DE* + ID_OUI_FROM_DATABASE=Kayser-Threde GmbH -OUI:00607A* - ID_OUI_FROM_DATABASE=DVS GMBH +OUI:0060D0* + ID_OUI_FROM_DATABASE=SNMP RESEARCH INCORPORATED -OUI:006097* - ID_OUI_FROM_DATABASE=3COM CORPORATION +OUI:006079* + ID_OUI_FROM_DATABASE=Mainstream Data, Inc. -OUI:0060E3* - ID_OUI_FROM_DATABASE=ARBIN INSTRUMENTS +OUI:006020* + ID_OUI_FROM_DATABASE=PIVOTAL NETWORKING, INC. -OUI:00E0FD* - ID_OUI_FROM_DATABASE=A-TREND TECHNOLOGY CO., LTD. +OUI:0005A8* + ID_OUI_FROM_DATABASE=WYLE ELECTRONICS -OUI:00E0FB* - ID_OUI_FROM_DATABASE=LEIGHTRONIX, INC. +OUI:0060B7* + ID_OUI_FROM_DATABASE=CHANNELMATIC, INC. -OUI:00E0D3* - ID_OUI_FROM_DATABASE=DATENTECHNIK GmbH +OUI:0060A3* + ID_OUI_FROM_DATABASE=CONTINUUM TECHNOLOGY CORP. -OUI:00E05E* - ID_OUI_FROM_DATABASE=JAPAN AVIATION ELECTRONICS INDUSTRY, LTD. +OUI:006050* + ID_OUI_FROM_DATABASE=INTERNIX INC. -OUI:00E0E5* - ID_OUI_FROM_DATABASE=CINCO NETWORKS, INC. +OUI:0060E0* + ID_OUI_FROM_DATABASE=AXIOM TECHNOLOGY CO., LTD. -OUI:00E0CF* - ID_OUI_FROM_DATABASE=INTEGRATED DEVICE TECHNOLOGY, INC. +OUI:0060A8* + ID_OUI_FROM_DATABASE=TIDOMAT AB -OUI:00A0FD* - ID_OUI_FROM_DATABASE=SCITEX DIGITAL PRINTING, INC. +OUI:00608E* + ID_OUI_FROM_DATABASE=HE ELECTRONICS, TECHNOLOGIE & SYSTEMTECHNIK GmbH -OUI:00A0F5* - ID_OUI_FROM_DATABASE=RADGUARD LTD. +OUI:0060F0* + ID_OUI_FROM_DATABASE=JOHNSON & JOHNSON MEDICAL, INC OUI:00A022* ID_OUI_FROM_DATABASE=CENTRE FOR DEVELOPMENT OF ADVANCED COMPUTING @@ -41993,60 +43091,6 @@ OUI:00A065* OUI:00A044* ID_OUI_FROM_DATABASE=NTT IT CO., LTD. -OUI:006008* - ID_OUI_FROM_DATABASE=3COM CORPORATION - -OUI:0060EF* - ID_OUI_FROM_DATABASE=FLYTECH TECHNOLOGY CO., LTD. - -OUI:006098* - ID_OUI_FROM_DATABASE=HT COMMUNICATIONS - -OUI:0060F7* - ID_OUI_FROM_DATABASE=DATAFUSION SYSTEMS - -OUI:0060DE* - ID_OUI_FROM_DATABASE=Kayser-Threde GmbH - -OUI:0060D0* - ID_OUI_FROM_DATABASE=SNMP RESEARCH INCORPORATED - -OUI:006079* - ID_OUI_FROM_DATABASE=Mainstream Data, Inc. - -OUI:006020* - ID_OUI_FROM_DATABASE=PIVOTAL NETWORKING, INC. - -OUI:0005A8* - ID_OUI_FROM_DATABASE=WYLE ELECTRONICS - -OUI:0060B7* - ID_OUI_FROM_DATABASE=CHANNELMATIC, INC. - -OUI:0060A3* - ID_OUI_FROM_DATABASE=CONTINUUM TECHNOLOGY CORP. - -OUI:006050* - ID_OUI_FROM_DATABASE=INTERNIX INC. - -OUI:0060E0* - ID_OUI_FROM_DATABASE=AXIOM TECHNOLOGY CO., LTD. - -OUI:0060A8* - ID_OUI_FROM_DATABASE=TIDOMAT AB - -OUI:00A056* - ID_OUI_FROM_DATABASE=MICROPROSS - -OUI:00A051* - ID_OUI_FROM_DATABASE=ANGIA COMMUNICATIONS. INC. - -OUI:00A0A6* - ID_OUI_FROM_DATABASE=M.I. SYSTEMS, K.K. - -OUI:00A0B0* - ID_OUI_FROM_DATABASE=I-O DATA DEVICE, INC. - OUI:00A05F* ID_OUI_FROM_DATABASE=BTG Electronics Design BV @@ -42077,32 +43121,8 @@ OUI:00A0F7* OUI:00A09C* ID_OUI_FROM_DATABASE=Xyplex, Inc. -OUI:00A092* - ID_OUI_FROM_DATABASE=H. BOLLMANN MANUFACTURERS, LTD - -OUI:00A04D* - ID_OUI_FROM_DATABASE=EDA INSTRUMENTS, INC. - -OUI:00A0DB* - ID_OUI_FROM_DATABASE=FISHER & PAYKEL PRODUCTION - -OUI:00A0A5* - ID_OUI_FROM_DATABASE=TEKNOR MICROSYSTEME, INC. - -OUI:00A018* - ID_OUI_FROM_DATABASE=CREATIVE CONTROLLERS, INC. - -OUI:00A09F* - ID_OUI_FROM_DATABASE=COMMVISION CORP. - -OUI:00A06B* - ID_OUI_FROM_DATABASE=DMS DORSCH MIKROSYSTEM GMBH - -OUI:006051* - ID_OUI_FROM_DATABASE=QUALITY SEMICONDUCTOR - -OUI:00605E* - ID_OUI_FROM_DATABASE=LIBERTY TECHNOLOGY NETWORKING +OUI:00A0A0* + ID_OUI_FROM_DATABASE=COMPACT DATA, LTD. OUI:0060C6* ID_OUI_FROM_DATABASE=DCS AG @@ -42128,11 +43148,14 @@ OUI:00A039* OUI:00A06D* ID_OUI_FROM_DATABASE=MANNESMANN TALLY CORPORATION -OUI:00608E* - ID_OUI_FROM_DATABASE=HE ELECTRONICS, TECHNOLOGIE & SYSTEMTECHNIK GmbH +OUI:00A056* + ID_OUI_FROM_DATABASE=MICROPROSS -OUI:0060F0* - ID_OUI_FROM_DATABASE=JOHNSON & JOHNSON MEDICAL, INC +OUI:00A051* + ID_OUI_FROM_DATABASE=ANGIA COMMUNICATIONS. INC. + +OUI:00A0A6* + ID_OUI_FROM_DATABASE=M.I. SYSTEMS, K.K. OUI:0060D2* ID_OUI_FROM_DATABASE=LUCENT TECHNOLOGIES TAIWAN TELECOMMUNICATIONS CO., LTD. @@ -42152,104 +43175,74 @@ OUI:00608B* OUI:0060C3* ID_OUI_FROM_DATABASE=NETVISION CORPORATION -OUI:00A0A0* - ID_OUI_FROM_DATABASE=COMPACT DATA, LTD. - -OUI:00A0A4* - ID_OUI_FROM_DATABASE=MICROS SYSTEMS, INC. - -OUI:00A024* - ID_OUI_FROM_DATABASE=3COM CORPORATION - -OUI:00A08B* - ID_OUI_FROM_DATABASE=ASTON ELECTRONIC DESIGNS LTD. - -OUI:00A0AA* - ID_OUI_FROM_DATABASE=SPACELABS MEDICAL - -OUI:00A04F* - ID_OUI_FROM_DATABASE=AMERITEC CORP. - -OUI:00A073* - ID_OUI_FROM_DATABASE=COM21, INC. - -OUI:00A084* - ID_OUI_FROM_DATABASE=Dataplex Pty Ltd - -OUI:00A034* - ID_OUI_FROM_DATABASE=AXEL - -OUI:00C0BC* - ID_OUI_FROM_DATABASE=TELECOM AUSTRALIA/CSSC - -OUI:00C0EF* - ID_OUI_FROM_DATABASE=ABIT CORPORATION +OUI:006051* + ID_OUI_FROM_DATABASE=QUALITY SEMICONDUCTOR -OUI:00C03C* - ID_OUI_FROM_DATABASE=TOWER TECH S.R.L. +OUI:00605E* + ID_OUI_FROM_DATABASE=LIBERTY TECHNOLOGY NETWORKING -OUI:00C061* - ID_OUI_FROM_DATABASE=SOLECTEK CORPORATION +OUI:006058* + ID_OUI_FROM_DATABASE=COPPER MOUNTAIN COMMUNICATIONS, INC. -OUI:00C074* - ID_OUI_FROM_DATABASE=TOYODA AUTOMATIC LOOM +OUI:00601B* + ID_OUI_FROM_DATABASE=MESA ELECTRONICS -OUI:00C07F* - ID_OUI_FROM_DATABASE=NUPON COMPUTING CORP. +OUI:0060FF* + ID_OUI_FROM_DATABASE=QuVis, Inc. -OUI:00C027* - ID_OUI_FROM_DATABASE=CIPHER SYSTEMS, INC. +OUI:006056* + ID_OUI_FROM_DATABASE=NETWORK TOOLS, INC. -OUI:00C025* - ID_OUI_FROM_DATABASE=DATAPRODUCTS CORPORATION +OUI:0060D8* + ID_OUI_FROM_DATABASE=ELMIC SYSTEMS, INC. -OUI:00C022* - ID_OUI_FROM_DATABASE=LASERMASTER TECHNOLOGIES, INC. +OUI:00607A* + ID_OUI_FROM_DATABASE=DVS GMBH -OUI:00C0E6* - ID_OUI_FROM_DATABASE=Verilink Corporation +OUI:006097* + ID_OUI_FROM_DATABASE=3COM CORPORATION -OUI:00C05C* - ID_OUI_FROM_DATABASE=ELONEX PLC +OUI:0060E3* + ID_OUI_FROM_DATABASE=ARBIN INSTRUMENTS -OUI:00C0C1* - ID_OUI_FROM_DATABASE=QUAD/GRAPHICS, INC. +OUI:006008* + ID_OUI_FROM_DATABASE=3COM CORPORATION -OUI:00C091* - ID_OUI_FROM_DATABASE=JABIL CIRCUIT, INC. +OUI:0060EF* + ID_OUI_FROM_DATABASE=FLYTECH TECHNOLOGY CO., LTD. -OUI:00C002* - ID_OUI_FROM_DATABASE=SERCOMM CORPORATION +OUI:00E04D* + ID_OUI_FROM_DATABASE=INTERNET INITIATIVE JAPAN, INC -OUI:00C0F5* - ID_OUI_FROM_DATABASE=METACOMP, INC. +OUI:00607F* + ID_OUI_FROM_DATABASE=AURORA TECHNOLOGIES, INC. -OUI:00C042* - ID_OUI_FROM_DATABASE=DATALUX CORP. +OUI:00E039* + ID_OUI_FROM_DATABASE=PARADYNE CORP. -OUI:00C089* - ID_OUI_FROM_DATABASE=TELINDUS DISTRIBUTION +OUI:006091* + ID_OUI_FROM_DATABASE=FIRST PACIFIC NETWORKS, INC. -OUI:00C09D* - ID_OUI_FROM_DATABASE=DISTRIBUTED SYSTEMS INT'L, INC +OUI:006002* + ID_OUI_FROM_DATABASE=SCREEN SUBTITLING SYSTEMS, LTD -OUI:00C0A5* - ID_OUI_FROM_DATABASE=DICKENS DATA SYSTEMS +OUI:006061* + ID_OUI_FROM_DATABASE=WHISTLE COMMUNICATIONS CORP. -OUI:00C0E3* - ID_OUI_FROM_DATABASE=OSITECH COMMUNICATIONS, INC. +OUI:0060BD* + ID_OUI_FROM_DATABASE=HUBBELL-PULSECOM -OUI:00C071* - ID_OUI_FROM_DATABASE=AREANEX COMMUNICATIONS, INC. +OUI:006074* + ID_OUI_FROM_DATABASE=QSC AUDIO PRODUCTS -OUI:00C0AF* - ID_OUI_FROM_DATABASE=TEKLOGIX INC. +OUI:00A024* + ID_OUI_FROM_DATABASE=3COM CORPORATION -OUI:00209F* - ID_OUI_FROM_DATABASE=MERCURY COMPUTER SYSTEMS, INC. +OUI:00A0FD* + ID_OUI_FROM_DATABASE=SCITEX DIGITAL PRINTING, INC. -OUI:0020B7* - ID_OUI_FROM_DATABASE=NAMAQUA COMPUTERWARE +OUI:00A0F5* + ID_OUI_FROM_DATABASE=RADGUARD LTD. OUI:00201B* ID_OUI_FROM_DATABASE=NORTHERN TELECOM/NETWORK @@ -42293,6 +43286,39 @@ OUI:00206B* OUI:0020FC* ID_OUI_FROM_DATABASE=MATROX +OUI:002035* + ID_OUI_FROM_DATABASE=IBM Corp + +OUI:0020E2* + ID_OUI_FROM_DATABASE=INFORMATION RESOURCE ENGINEERING + +OUI:002058* + ID_OUI_FROM_DATABASE=ALLIED SIGNAL INC. + +OUI:00208C* + ID_OUI_FROM_DATABASE=GALAXY NETWORKS, INC. + +OUI:002063* + ID_OUI_FROM_DATABASE=WIPRO INFOTECH LTD. + +OUI:0020DC* + ID_OUI_FROM_DATABASE=DENSITRON TAIWAN LTD. + +OUI:002078* + ID_OUI_FROM_DATABASE=RUNTOP, INC. + +OUI:002042* + ID_OUI_FROM_DATABASE=DATAMETRICS CORP. + +OUI:0020F8* + ID_OUI_FROM_DATABASE=CARRERA COMPUTERS, INC. + +OUI:00200C* + ID_OUI_FROM_DATABASE=ADASTRA SYSTEMS CORP. + +OUI:0020C4* + ID_OUI_FROM_DATABASE=INET,INC. + OUI:00C003* ID_OUI_FROM_DATABASE=GLOBALNET COMMUNICATIONS @@ -42305,29 +43331,26 @@ OUI:00C04D* OUI:00C055* ID_OUI_FROM_DATABASE=MODULAR COMPUTING TECHNOLOGIES -OUI:00C067* - ID_OUI_FROM_DATABASE=UNITED BARCODE INDUSTRIES - -OUI:00C0B4* - ID_OUI_FROM_DATABASE=MYSON TECHNOLOGY, INC. +OUI:00A0DB* + ID_OUI_FROM_DATABASE=FISHER & PAYKEL PRODUCTION -OUI:00C080* - ID_OUI_FROM_DATABASE=NETSTAR, INC. +OUI:00A0A5* + ID_OUI_FROM_DATABASE=TEKNOR MICROSYSTEME, INC. -OUI:00C015* - ID_OUI_FROM_DATABASE=NEW MEDIA CORPORATION +OUI:00A018* + ID_OUI_FROM_DATABASE=CREATIVE CONTROLLERS, INC. -OUI:00C09F* - ID_OUI_FROM_DATABASE=QUANTA COMPUTER, INC. +OUI:00A09F* + ID_OUI_FROM_DATABASE=COMMVISION CORP. -OUI:0070B3* - ID_OUI_FROM_DATABASE=DATA RECALL LTD. +OUI:00A06B* + ID_OUI_FROM_DATABASE=DMS DORSCH MIKROSYSTEM GMBH -OUI:00E6D3* - ID_OUI_FROM_DATABASE=NIXDORF COMPUTER CORP. +OUI:00209F* + ID_OUI_FROM_DATABASE=MERCURY COMPUTER SYSTEMS, INC. -OUI:00C083* - ID_OUI_FROM_DATABASE=TRACE MOUNTAIN PRODUCTS, INC. +OUI:0020B7* + ID_OUI_FROM_DATABASE=NAMAQUA COMPUTERWARE OUI:00C005* ID_OUI_FROM_DATABASE=LIVINGSTON ENTERPRISES, INC. @@ -42362,44 +43385,35 @@ OUI:00C0C6* OUI:00C03B* ID_OUI_FROM_DATABASE=MULTIACCESS COMPUTING CORP. -OUI:0020F4* - ID_OUI_FROM_DATABASE=SPECTRIX CORPORATION - -OUI:00204E* - ID_OUI_FROM_DATABASE=NETWORK SECURITY SYSTEMS, INC. - -OUI:002027* - ID_OUI_FROM_DATABASE=MING FORTUNE INDUSTRY CO., LTD - -OUI:0020ED* - ID_OUI_FROM_DATABASE=GIGA-BYTE TECHNOLOGY CO., LTD. +OUI:00C099* + ID_OUI_FROM_DATABASE=YOSHIKI INDUSTRIAL CO.,LTD. -OUI:00200E* - ID_OUI_FROM_DATABASE=SATELLITE TECHNOLOGY MGMT, INC +OUI:00C0FC* + ID_OUI_FROM_DATABASE=ELASTIC REALITY, INC. -OUI:002096* - ID_OUI_FROM_DATABASE=Invensys +OUI:00C067* + ID_OUI_FROM_DATABASE=UNITED BARCODE INDUSTRIES -OUI:0020BB* - ID_OUI_FROM_DATABASE=ZAX CORPORATION +OUI:00C0B4* + ID_OUI_FROM_DATABASE=MYSON TECHNOLOGY, INC. -OUI:00204D* - ID_OUI_FROM_DATABASE=INOVIS GMBH +OUI:00C080* + ID_OUI_FROM_DATABASE=NETSTAR, INC. -OUI:002089* - ID_OUI_FROM_DATABASE=T3PLUS NETWORKING, INC. +OUI:00C015* + ID_OUI_FROM_DATABASE=NEW MEDIA CORPORATION -OUI:00205F* - ID_OUI_FROM_DATABASE=GAMMADATA COMPUTER GMBH +OUI:00C09F* + ID_OUI_FROM_DATABASE=QUANTA COMPUTER, INC. -OUI:002035* - ID_OUI_FROM_DATABASE=IBM Corp +OUI:0070B3* + ID_OUI_FROM_DATABASE=DATA RECALL LTD. -OUI:0020E2* - ID_OUI_FROM_DATABASE=INFORMATION RESOURCE ENGINEERING +OUI:00E6D3* + ID_OUI_FROM_DATABASE=NIXDORF COMPUTER CORP. -OUI:002058* - ID_OUI_FROM_DATABASE=ALLIED SIGNAL INC. +OUI:00C083* + ID_OUI_FROM_DATABASE=TRACE MOUNTAIN PRODUCTS, INC. OUI:002081* ID_OUI_FROM_DATABASE=TITAN ELECTRONICS @@ -42425,65 +43439,65 @@ OUI:0020DE* OUI:0020F7* ID_OUI_FROM_DATABASE=CYBERDATA CORPORATION -OUI:0020EE* - ID_OUI_FROM_DATABASE=GTECH CORPORATION +OUI:000267* + ID_OUI_FROM_DATABASE=NODE RUNNER, INC. -OUI:00208C* - ID_OUI_FROM_DATABASE=GALAXY NETWORKS, INC. +OUI:002064* + ID_OUI_FROM_DATABASE=PROTEC MICROSYSTEMS, INC. -OUI:002063* - ID_OUI_FROM_DATABASE=WIPRO INFOTECH LTD. +OUI:002032* + ID_OUI_FROM_DATABASE=ALCATEL TAISEL -OUI:0020DC* - ID_OUI_FROM_DATABASE=DENSITRON TAIWAN LTD. +OUI:002027* + ID_OUI_FROM_DATABASE=MING FORTUNE INDUSTRY CO., LTD -OUI:002078* - ID_OUI_FROM_DATABASE=RUNTOP, INC. +OUI:0020ED* + ID_OUI_FROM_DATABASE=GIGA-BYTE TECHNOLOGY CO., LTD. -OUI:002042* - ID_OUI_FROM_DATABASE=DATAMETRICS CORP. +OUI:00200E* + ID_OUI_FROM_DATABASE=SATELLITE TECHNOLOGY MGMT, INC -OUI:0020F8* - ID_OUI_FROM_DATABASE=CARRERA COMPUTERS, INC. +OUI:002096* + ID_OUI_FROM_DATABASE=Invensys -OUI:00200C* - ID_OUI_FROM_DATABASE=ADASTRA SYSTEMS CORP. +OUI:0020BB* + ID_OUI_FROM_DATABASE=ZAX CORPORATION -OUI:0020C4* - ID_OUI_FROM_DATABASE=INET,INC. +OUI:00204D* + ID_OUI_FROM_DATABASE=INOVIS GMBH -OUI:00C099* - ID_OUI_FROM_DATABASE=YOSHIKI INDUSTRIAL CO.,LTD. +OUI:002089* + ID_OUI_FROM_DATABASE=T3PLUS NETWORKING, INC. -OUI:00C0FC* - ID_OUI_FROM_DATABASE=ELASTIC REALITY, INC. +OUI:00205F* + ID_OUI_FROM_DATABASE=GAMMADATA COMPUTER GMBH -OUI:00C0D0* - ID_OUI_FROM_DATABASE=RATOC SYSTEM INC. +OUI:0020EE* + ID_OUI_FROM_DATABASE=GTECH CORPORATION -OUI:00C07A* - ID_OUI_FROM_DATABASE=PRIVA B.V. +OUI:00A08B* + ID_OUI_FROM_DATABASE=ASTON ELECTRONIC DESIGNS LTD. -OUI:000701* - ID_OUI_FROM_DATABASE=RACAL-DATACOM +OUI:00A0AA* + ID_OUI_FROM_DATABASE=SPACELABS MEDICAL -OUI:00C09C* - ID_OUI_FROM_DATABASE=HIOKI E.E. CORPORATION +OUI:00A04F* + ID_OUI_FROM_DATABASE=AMERITEC CORP. -OUI:00C004* - ID_OUI_FROM_DATABASE=JAPAN BUSINESS COMPUTER CO.LTD +OUI:00A073* + ID_OUI_FROM_DATABASE=COM21, INC. -OUI:00C062* - ID_OUI_FROM_DATABASE=IMPULSE TECHNOLOGY +OUI:00A084* + ID_OUI_FROM_DATABASE=Dataplex Pty Ltd -OUI:000267* - ID_OUI_FROM_DATABASE=NODE RUNNER, INC. +OUI:00A034* + ID_OUI_FROM_DATABASE=AXEL -OUI:002064* - ID_OUI_FROM_DATABASE=PROTEC MICROSYSTEMS, INC. +OUI:00A092* + ID_OUI_FROM_DATABASE=H. BOLLMANN MANUFACTURERS, LTD -OUI:002032* - ID_OUI_FROM_DATABASE=ALCATEL TAISEL +OUI:00A04D* + ID_OUI_FROM_DATABASE=EDA INSTRUMENTS, INC. OUI:00207F* ID_OUI_FROM_DATABASE=KYOEI SANGYO CO., LTD. @@ -42497,86 +43511,71 @@ OUI:002068* OUI:00202A* ID_OUI_FROM_DATABASE=N.V. DZINE -OUI:008006* - ID_OUI_FROM_DATABASE=COMPUADD CORPORATION - -OUI:0080EF* - ID_OUI_FROM_DATABASE=RATIONAL - -OUI:0080C4* - ID_OUI_FROM_DATABASE=DOCUMENT TECHNOLOGIES, INC. - -OUI:008095* - ID_OUI_FROM_DATABASE=BASIC MERTON HANDELSGES.M.B.H. - -OUI:008053* - ID_OUI_FROM_DATABASE=INTELLICOM, INC. - -OUI:008026* - ID_OUI_FROM_DATABASE=NETWORK PRODUCTS CORPORATION +OUI:0020F4* + ID_OUI_FROM_DATABASE=SPECTRIX CORPORATION -OUI:0080FE* - ID_OUI_FROM_DATABASE=AZURE TECHNOLOGIES, INC. +OUI:00204E* + ID_OUI_FROM_DATABASE=NETWORK SECURITY SYSTEMS, INC. -OUI:008028* - ID_OUI_FROM_DATABASE=TRADPOST (HK) LTD +OUI:00C074* + ID_OUI_FROM_DATABASE=TOYODA AUTOMATIC LOOM -OUI:0080B6* - ID_OUI_FROM_DATABASE=THEMIS COMPUTER +OUI:00C07F* + ID_OUI_FROM_DATABASE=NUPON COMPUTING CORP. -OUI:008058* - ID_OUI_FROM_DATABASE=PRINTER SYSTEMS CORPORATION +OUI:00C027* + ID_OUI_FROM_DATABASE=CIPHER SYSTEMS, INC. -OUI:0080C0* - ID_OUI_FROM_DATABASE=PENRIL DATACOMM +OUI:00C025* + ID_OUI_FROM_DATABASE=DATAPRODUCTS CORPORATION -OUI:0080F5* - ID_OUI_FROM_DATABASE=Quantel Ltd +OUI:00C022* + ID_OUI_FROM_DATABASE=LASERMASTER TECHNOLOGIES, INC. -OUI:00401D* - ID_OUI_FROM_DATABASE=INVISIBLE SOFTWARE, INC. +OUI:00C0E6* + ID_OUI_FROM_DATABASE=Verilink Corporation -OUI:0040BD* - ID_OUI_FROM_DATABASE=STARLIGHT NETWORKS, INC. +OUI:00C05C* + ID_OUI_FROM_DATABASE=ELONEX PLC -OUI:00406D* - ID_OUI_FROM_DATABASE=LANCO, INC. +OUI:00C0C1* + ID_OUI_FROM_DATABASE=QUAD/GRAPHICS, INC. -OUI:00404D* - ID_OUI_FROM_DATABASE=TELECOMMUNICATIONS TECHNIQUES +OUI:00C091* + ID_OUI_FROM_DATABASE=JABIL CIRCUIT, INC. -OUI:0040A5* - ID_OUI_FROM_DATABASE=CLINICOMP INTL. +OUI:00C002* + ID_OUI_FROM_DATABASE=SERCOMM CORPORATION -OUI:004059* - ID_OUI_FROM_DATABASE=YOSHIDA KOGYO K. K. +OUI:00C0F5* + ID_OUI_FROM_DATABASE=METACOMP, INC. -OUI:004021* - ID_OUI_FROM_DATABASE=RASTER GRAPHICS +OUI:00C042* + ID_OUI_FROM_DATABASE=DATALUX CORP. -OUI:004081* - ID_OUI_FROM_DATABASE=MANNESMANN SCANGRAPHIC GMBH +OUI:00C089* + ID_OUI_FROM_DATABASE=TELINDUS DISTRIBUTION -OUI:00806C* - ID_OUI_FROM_DATABASE=CEGELEC PROJECTS LTD +OUI:00C09D* + ID_OUI_FROM_DATABASE=DISTRIBUTED SYSTEMS INT'L, INC -OUI:00404A* - ID_OUI_FROM_DATABASE=WEST AUSTRALIAN DEPARTMENT +OUI:00C0A5* + ID_OUI_FROM_DATABASE=DICKENS DATA SYSTEMS -OUI:00400A* - ID_OUI_FROM_DATABASE=PIVOTAL TECHNOLOGIES, INC. +OUI:00C0E3* + ID_OUI_FROM_DATABASE=OSITECH COMMUNICATIONS, INC. -OUI:004032* - ID_OUI_FROM_DATABASE=DIGITAL COMMUNICATIONS +OUI:00C071* + ID_OUI_FROM_DATABASE=AREANEX COMMUNICATIONS, INC. -OUI:004042* - ID_OUI_FROM_DATABASE=N.A.T. GMBH +OUI:00C0AF* + ID_OUI_FROM_DATABASE=TEKLOGIX INC. -OUI:0040C2* - ID_OUI_FROM_DATABASE=APPLIED COMPUTING DEVICES +OUI:00C05D* + ID_OUI_FROM_DATABASE=L&N TECHNOLOGIES -OUI:00403C* - ID_OUI_FROM_DATABASE=FORKS, INC. +OUI:00C0E4* + ID_OUI_FROM_DATABASE=SIEMENS BUILDING OUI:0040C4* ID_OUI_FROM_DATABASE=KINKEI SYSTEM CORPORATION @@ -42602,38 +43601,8 @@ OUI:004090* OUI:00409A* ID_OUI_FROM_DATABASE=NETWORK EXPRESS, INC. -OUI:0040DE* - ID_OUI_FROM_DATABASE=Elsag Datamat spa - -OUI:004063* - ID_OUI_FROM_DATABASE=VIA TECHNOLOGIES, INC. - -OUI:00406C* - ID_OUI_FROM_DATABASE=COPERNIQUE - -OUI:0040DF* - ID_OUI_FROM_DATABASE=DIGALOG SYSTEMS, INC. - -OUI:004015* - ID_OUI_FROM_DATABASE=ASCOM INFRASYS AG - -OUI:008056* - ID_OUI_FROM_DATABASE=SPHINX Electronics GmbH & Co KG - -OUI:008060* - ID_OUI_FROM_DATABASE=NETWORK INTERFACE CORPORATION - -OUI:00805E* - ID_OUI_FROM_DATABASE=LSI LOGIC CORPORATION - -OUI:008093* - ID_OUI_FROM_DATABASE=XYRON CORPORATION - -OUI:00C05D* - ID_OUI_FROM_DATABASE=L&N TECHNOLOGIES - -OUI:00C0E4* - ID_OUI_FROM_DATABASE=SIEMENS BUILDING +OUI:004055* + ID_OUI_FROM_DATABASE=METRONIX GMBH OUI:00C01B* ID_OUI_FROM_DATABASE=SOCKET COMMUNICATIONS, INC. @@ -42659,24 +43628,48 @@ OUI:004037* OUI:0040CC* ID_OUI_FROM_DATABASE=SILCOM MANUF'G TECHNOLOGY INC. -OUI:004052* - ID_OUI_FROM_DATABASE=STAR TECHNOLOGIES, INC. - -OUI:00407A* - ID_OUI_FROM_DATABASE=SOCIETE D'EXPLOITATION DU CNIT - -OUI:004089* - ID_OUI_FROM_DATABASE=MEIDENSHA CORPORATION - -OUI:00405A* - ID_OUI_FROM_DATABASE=GOLDSTAR INFORMATION & COMM. - OUI:00404C* ID_OUI_FROM_DATABASE=HYPERTEC PTY LTD. OUI:00C0EE* ID_OUI_FROM_DATABASE=KYOCERA CORPORATION +OUI:0040A5* + ID_OUI_FROM_DATABASE=CLINICOMP INTL. + +OUI:004059* + ID_OUI_FROM_DATABASE=YOSHIDA KOGYO K. K. + +OUI:004021* + ID_OUI_FROM_DATABASE=RASTER GRAPHICS + +OUI:004081* + ID_OUI_FROM_DATABASE=MANNESMANN SCANGRAPHIC GMBH + +OUI:00806C* + ID_OUI_FROM_DATABASE=CEGELEC PROJECTS LTD + +OUI:00404A* + ID_OUI_FROM_DATABASE=WEST AUSTRALIAN DEPARTMENT + +OUI:00400A* + ID_OUI_FROM_DATABASE=PIVOTAL TECHNOLOGIES, INC. + +OUI:004032* + ID_OUI_FROM_DATABASE=DIGITAL COMMUNICATIONS + +OUI:004042* + ID_OUI_FROM_DATABASE=N.A.T. GMBH + +OUI:0040C2* + ID_OUI_FROM_DATABASE=APPLIED COMPUTING DEVICES + +OUI:00403C* + ID_OUI_FROM_DATABASE=FORKS, INC. + +OUI:004004* + ID_OUI_FROM_DATABASE=ICM CO. LTD. + OUI:00C0CB* ID_OUI_FROM_DATABASE=CONTROL TECHNOLOGY CORPORATION @@ -42689,8 +43682,47 @@ OUI:00C01A* OUI:00404B* ID_OUI_FROM_DATABASE=MAPLE COMPUTER SYSTEMS -OUI:004055* - ID_OUI_FROM_DATABASE=METRONIX GMBH +OUI:00401D* + ID_OUI_FROM_DATABASE=INVISIBLE SOFTWARE, INC. + +OUI:0040BD* + ID_OUI_FROM_DATABASE=STARLIGHT NETWORKS, INC. + +OUI:00406D* + ID_OUI_FROM_DATABASE=LANCO, INC. + +OUI:00404D* + ID_OUI_FROM_DATABASE=TELECOMMUNICATIONS TECHNIQUES + +OUI:00C0D0* + ID_OUI_FROM_DATABASE=RATOC SYSTEM INC. + +OUI:00C07A* + ID_OUI_FROM_DATABASE=PRIVA B.V. + +OUI:000701* + ID_OUI_FROM_DATABASE=RACAL-DATACOM + +OUI:00C09C* + ID_OUI_FROM_DATABASE=HIOKI E.E. CORPORATION + +OUI:00C004* + ID_OUI_FROM_DATABASE=JAPAN BUSINESS COMPUTER CO.LTD + +OUI:00C062* + ID_OUI_FROM_DATABASE=IMPULSE TECHNOLOGY + +OUI:00C0BC* + ID_OUI_FROM_DATABASE=TELECOM AUSTRALIA/CSSC + +OUI:00C0EF* + ID_OUI_FROM_DATABASE=ABIT CORPORATION + +OUI:00C03C* + ID_OUI_FROM_DATABASE=TOWER TECH S.R.L. + +OUI:00C061* + ID_OUI_FROM_DATABASE=SOLECTEK CORPORATION OUI:004045* ID_OUI_FROM_DATABASE=TWINHEAD CORPORATION @@ -42707,8 +43739,17 @@ OUI:0040B9* OUI:0040C7* ID_OUI_FROM_DATABASE=RUBY TECH CORPORATION -OUI:004004* - ID_OUI_FROM_DATABASE=ICM CO. LTD. +OUI:004052* + ID_OUI_FROM_DATABASE=STAR TECHNOLOGIES, INC. + +OUI:00407A* + ID_OUI_FROM_DATABASE=SOCIETE D'EXPLOITATION DU CNIT + +OUI:004089* + ID_OUI_FROM_DATABASE=MEIDENSHA CORPORATION + +OUI:00405A* + ID_OUI_FROM_DATABASE=GOLDSTAR INFORMATION & COMM. OUI:004070* ID_OUI_FROM_DATABASE=INTERWARE CO., LTD. @@ -42725,21 +43766,45 @@ OUI:0080AA* OUI:00C0E7* ID_OUI_FROM_DATABASE=FIBERDATA AB -OUI:00800A* - ID_OUI_FROM_DATABASE=JAPAN COMPUTER CORP. +OUI:008095* + ID_OUI_FROM_DATABASE=BASIC MERTON HANDELSGES.M.B.H. -OUI:00806E* - ID_OUI_FROM_DATABASE=NIPPON STEEL CORPORATION +OUI:008053* + ID_OUI_FROM_DATABASE=INTELLICOM, INC. -OUI:008010* - ID_OUI_FROM_DATABASE=COMMODORE INTERNATIONAL +OUI:008026* + ID_OUI_FROM_DATABASE=NETWORK PRODUCTS CORPORATION + +OUI:0080FE* + ID_OUI_FROM_DATABASE=AZURE TECHNOLOGIES, INC. + +OUI:008028* + ID_OUI_FROM_DATABASE=TRADPOST (HK) LTD + +OUI:0080B6* + ID_OUI_FROM_DATABASE=THEMIS COMPUTER + +OUI:008058* + ID_OUI_FROM_DATABASE=PRINTER SYSTEMS CORPORATION + +OUI:0080C0* + ID_OUI_FROM_DATABASE=PENRIL DATACOMM + +OUI:0080F5* + ID_OUI_FROM_DATABASE=Quantel Ltd + +OUI:00608C* + ID_OUI_FROM_DATABASE=3COM CORPORATION + +OUI:00804E* + ID_OUI_FROM_DATABASE=APEX COMPUTER COMPANY + +OUI:00800E* + ID_OUI_FROM_DATABASE=ATLANTIX CORPORATION OUI:0080DA* ID_OUI_FROM_DATABASE=Bruel & Kjaer Sound & Vibration Measurement A/S -OUI:0080E5* - ID_OUI_FROM_DATABASE=NetApp, Inc - OUI:0080BC* ID_OUI_FROM_DATABASE=HITACHI ENGINEERING CO., LTD @@ -42758,50 +43823,74 @@ OUI:00807D* OUI:008063* ID_OUI_FROM_DATABASE=Hirschmann Automation and Control GmbH -OUI:00608C* - ID_OUI_FROM_DATABASE=3COM CORPORATION +OUI:008030* + ID_OUI_FROM_DATABASE=NEXUS ELECTRONICS -OUI:00804E* - ID_OUI_FROM_DATABASE=APEX COMPUTER COMPANY +OUI:008022* + ID_OUI_FROM_DATABASE=SCAN-OPTICS -OUI:00800E* - ID_OUI_FROM_DATABASE=ATLANTIX CORPORATION +OUI:000041* + ID_OUI_FROM_DATABASE=ICE CORPORATION -OUI:00806F* - ID_OUI_FROM_DATABASE=ONELAN LTD. +OUI:0040DE* + ID_OUI_FROM_DATABASE=Elsag Datamat spa -OUI:008098* - ID_OUI_FROM_DATABASE=TDK CORPORATION +OUI:004063* + ID_OUI_FROM_DATABASE=VIA TECHNOLOGIES, INC. -OUI:00809C* - ID_OUI_FROM_DATABASE=LUXCOM, INC. +OUI:00406C* + ID_OUI_FROM_DATABASE=COPERNIQUE -OUI:008065* - ID_OUI_FROM_DATABASE=CYBERGRAPHIC SYSTEMS PTY LTD. +OUI:0040DF* + ID_OUI_FROM_DATABASE=DIGALOG SYSTEMS, INC. -OUI:008016* - ID_OUI_FROM_DATABASE=WANDEL AND GOLTERMANN +OUI:004015* + ID_OUI_FROM_DATABASE=ASCOM INFRASYS AG -OUI:0080E6* - ID_OUI_FROM_DATABASE=PEER NETWORKS, INC. +OUI:008056* + ID_OUI_FROM_DATABASE=SPHINX Electronics GmbH & Co KG -OUI:0080A2* - ID_OUI_FROM_DATABASE=CREATIVE ELECTRONIC SYSTEMS +OUI:008060* + ID_OUI_FROM_DATABASE=NETWORK INTERFACE CORPORATION -OUI:0080E0* - ID_OUI_FROM_DATABASE=XTP SYSTEMS, INC. +OUI:00805E* + ID_OUI_FROM_DATABASE=LSI LOGIC CORPORATION -OUI:008050* - ID_OUI_FROM_DATABASE=ZIATECH CORPORATION +OUI:008093* + ID_OUI_FROM_DATABASE=XYRON CORPORATION -OUI:0000E0* - ID_OUI_FROM_DATABASE=QUADRAM CORP. +OUI:008006* + ID_OUI_FROM_DATABASE=COMPUADD CORPORATION -OUI:000057* - ID_OUI_FROM_DATABASE=SCITEX CORPORATION LTD. +OUI:0080EF* + ID_OUI_FROM_DATABASE=RATIONAL -OUI:0000D6* - ID_OUI_FROM_DATABASE=PUNCH LINE HOLDING +OUI:0080C4* + ID_OUI_FROM_DATABASE=DOCUMENT TECHNOLOGIES, INC. + +OUI:00801D* + ID_OUI_FROM_DATABASE=INTEGRATED INFERENCE MACHINES + +OUI:008015* + ID_OUI_FROM_DATABASE=SEIKO SYSTEMS, INC. + +OUI:008034* + ID_OUI_FROM_DATABASE=SMT GOUPIL + +OUI:0080C9* + ID_OUI_FROM_DATABASE=ALBERTA MICROELECTRONIC CENTRE + +OUI:00800B* + ID_OUI_FROM_DATABASE=CSK CORPORATION + +OUI:00800A* + ID_OUI_FROM_DATABASE=JAPAN COMPUTER CORP. + +OUI:00806E* + ID_OUI_FROM_DATABASE=NIPPON STEEL CORPORATION + +OUI:008010* + ID_OUI_FROM_DATABASE=COMMODORE INTERNATIONAL OUI:0000C8* ID_OUI_FROM_DATABASE=ALTOS COMPUTER SYSTEMS @@ -42830,56 +43919,56 @@ OUI:0000E7* OUI:0000F3* ID_OUI_FROM_DATABASE=GANDALF DATA LIMITED -OUI:000064* - ID_OUI_FROM_DATABASE=Yokogawa Electric Corporation +OUI:00005C* + ID_OUI_FROM_DATABASE=TELEMATICS INTERNATIONAL INC. -OUI:00002C* - ID_OUI_FROM_DATABASE=AUTOTOTE LIMITED +OUI:0000AC* + ID_OUI_FROM_DATABASE=CONWARE COMPUTER CONSULTING -OUI:00002A* - ID_OUI_FROM_DATABASE=TRW - SEDD/INP +OUI:0000F2* + ID_OUI_FROM_DATABASE=SPIDER COMMUNICATIONS -OUI:0000F1* - ID_OUI_FROM_DATABASE=MAGNA COMPUTER CORPORATION +OUI:000030* + ID_OUI_FROM_DATABASE=VG LABORATORY SYSTEMS LTD -OUI:000083* - ID_OUI_FROM_DATABASE=TADPOLE TECHNOLOGY PLC +OUI:000035* + ID_OUI_FROM_DATABASE=SPECTRAGRAPHICS CORPORATION -OUI:000020* - ID_OUI_FROM_DATABASE=DATAINDUSTRIER DIAB AB +OUI:0000E0* + ID_OUI_FROM_DATABASE=QUADRAM CORP. -OUI:00007A* - ID_OUI_FROM_DATABASE=DANA COMPUTER INC. +OUI:000057* + ID_OUI_FROM_DATABASE=SCITEX CORPORATION LTD. -OUI:00007C* - ID_OUI_FROM_DATABASE=AMPERE INCORPORATED +OUI:0000D6* + ID_OUI_FROM_DATABASE=PUNCH LINE HOLDING -OUI:00008A* - ID_OUI_FROM_DATABASE=DATAHOUSE INFORMATION SYSTEMS +OUI:00806F* + ID_OUI_FROM_DATABASE=ONELAN LTD. -OUI:000068* - ID_OUI_FROM_DATABASE=ROSEMOUNT CONTROLS +OUI:008098* + ID_OUI_FROM_DATABASE=TDK CORPORATION -OUI:0000A8* - ID_OUI_FROM_DATABASE=STRATUS COMPUTER INC. +OUI:00809C* + ID_OUI_FROM_DATABASE=LUXCOM, INC. -OUI:0000DF* - ID_OUI_FROM_DATABASE=BELL & HOWELL PUB SYS DIV +OUI:008065* + ID_OUI_FROM_DATABASE=CYBERGRAPHIC SYSTEMS PTY LTD. -OUI:000062* - ID_OUI_FROM_DATABASE=BULL HN INFORMATION SYSTEMS +OUI:008016* + ID_OUI_FROM_DATABASE=WANDEL AND GOLTERMANN -OUI:0000AD* - ID_OUI_FROM_DATABASE=BRUKER INSTRUMENTS INC. +OUI:0080E6* + ID_OUI_FROM_DATABASE=PEER NETWORKS, INC. -OUI:0000D0* - ID_OUI_FROM_DATABASE=DEVELCON ELECTRONICS LTD. +OUI:0080A2* + ID_OUI_FROM_DATABASE=CREATIVE ELECTRONIC SYSTEMS -OUI:000093* - ID_OUI_FROM_DATABASE=PROTEON INC. +OUI:0080E0* + ID_OUI_FROM_DATABASE=XTP SYSTEMS, INC. -OUI:008008* - ID_OUI_FROM_DATABASE=DYNATECH COMPUTER SYSTEMS +OUI:008050* + ID_OUI_FROM_DATABASE=ZIATECH CORPORATION OUI:0080FF* ID_OUI_FROM_DATABASE=SOC. DE TELEINFORMATIQUE RTC @@ -42899,14 +43988,8 @@ OUI:000024* OUI:000048* ID_OUI_FROM_DATABASE=SEIKO EPSON CORPORATION -OUI:008030* - ID_OUI_FROM_DATABASE=NEXUS ELECTRONICS - -OUI:008022* - ID_OUI_FROM_DATABASE=SCAN-OPTICS - -OUI:000041* - ID_OUI_FROM_DATABASE=ICE CORPORATION +OUI:000016* + ID_OUI_FROM_DATABASE=DU PONT PIXEL SYSTEMS . OUI:00001E* ID_OUI_FROM_DATABASE=TELSIST INDUSTRIA ELECTRONICA @@ -42923,44 +44006,23 @@ OUI:0080F9* OUI:008005* ID_OUI_FROM_DATABASE=CACTUS COMPUTER INC. -OUI:00801D* - ID_OUI_FROM_DATABASE=INTEGRATED INFERENCE MACHINES - -OUI:008015* - ID_OUI_FROM_DATABASE=SEIKO SYSTEMS, INC. - -OUI:008034* - ID_OUI_FROM_DATABASE=SMT GOUPIL - -OUI:0080C9* - ID_OUI_FROM_DATABASE=ALBERTA MICROELECTRONIC CENTRE - -OUI:00800B* - ID_OUI_FROM_DATABASE=CSK CORPORATION - -OUI:000016* - ID_OUI_FROM_DATABASE=DU PONT PIXEL SYSTEMS . - -OUI:00005C* - ID_OUI_FROM_DATABASE=TELEMATICS INTERNATIONAL INC. - -OUI:0000AC* - ID_OUI_FROM_DATABASE=CONWARE COMPUTER CONSULTING +OUI:008008* + ID_OUI_FROM_DATABASE=DYNATECH COMPUTER SYSTEMS -OUI:0000F2* - ID_OUI_FROM_DATABASE=SPIDER COMMUNICATIONS +OUI:08005E* + ID_OUI_FROM_DATABASE=COUNTERPOINT COMPUTER INC. -OUI:000030* - ID_OUI_FROM_DATABASE=VG LABORATORY SYSTEMS LTD +OUI:08005A* + ID_OUI_FROM_DATABASE=IBM Corp -OUI:000035* - ID_OUI_FROM_DATABASE=SPECTRAGRAPHICS CORPORATION +OUI:080056* + ID_OUI_FROM_DATABASE=STANFORD LINEAR ACCEL. CENTER -OUI:020701* - ID_OUI_FROM_DATABASE=RACAL-DATACOM +OUI:080053* + ID_OUI_FROM_DATABASE=MIDDLE EAST TECH. UNIVERSITY -OUI:080011* - ID_OUI_FROM_DATABASE=TEKTRONIX INC. +OUI:08004F* + ID_OUI_FROM_DATABASE=CYGNET SYSTEMS OUI:080040* ID_OUI_FROM_DATABASE=FERRANTI COMPUTER SYS. LIMITED @@ -42974,38 +44036,53 @@ OUI:08003D* OUI:080039* ID_OUI_FROM_DATABASE=SPIDER SYSTEMS LIMITED -OUI:080030* - ID_OUI_FROM_DATABASE=NETWORK RESEARCH CORPORATION +OUI:00DD0C* + ID_OUI_FROM_DATABASE=UNGERMANN-BASS INC. -OUI:080027* - ID_OUI_FROM_DATABASE=Cadmus Computer Systems +OUI:000005* + ID_OUI_FROM_DATABASE=XEROX CORPORATION -OUI:00009B* - ID_OUI_FROM_DATABASE=INFORMATION INTERNATIONAL, INC +OUI:0000AA* + ID_OUI_FROM_DATABASE=XEROX CORPORATION -OUI:00DD0F* - ID_OUI_FROM_DATABASE=UNGERMANN-BASS INC. +OUI:000064* + ID_OUI_FROM_DATABASE=Yokogawa Electric Corporation -OUI:000001* - ID_OUI_FROM_DATABASE=XEROX CORPORATION +OUI:00002C* + ID_OUI_FROM_DATABASE=AUTOTOTE LIMITED -OUI:080021* - ID_OUI_FROM_DATABASE=3M COMPANY +OUI:00002A* + ID_OUI_FROM_DATABASE=TRW - SEDD/INP -OUI:AA0004* - ID_OUI_FROM_DATABASE=DIGITAL EQUIPMENT CORPORATION +OUI:0000F1* + ID_OUI_FROM_DATABASE=MAGNA COMPUTER CORPORATION -OUI:08000C* - ID_OUI_FROM_DATABASE=MIKLYN DEVELOPMENT CO. +OUI:000083* + ID_OUI_FROM_DATABASE=TADPOLE TECHNOLOGY PLC -OUI:00DD08* - ID_OUI_FROM_DATABASE=UNGERMANN-BASS INC. +OUI:000020* + ID_OUI_FROM_DATABASE=DATAINDUSTRIER DIAB AB -OUI:0000D8* - ID_OUI_FROM_DATABASE=NOVELL, INC. +OUI:00007A* + ID_OUI_FROM_DATABASE=DANA COMPUTER INC. -OUI:0000A0* - ID_OUI_FROM_DATABASE=SANYO Electric Co., Ltd. +OUI:00007C* + ID_OUI_FROM_DATABASE=AMPERE INCORPORATED + +OUI:00008A* + ID_OUI_FROM_DATABASE=DATAHOUSE INFORMATION SYSTEMS + +OUI:080030* + ID_OUI_FROM_DATABASE=NETWORK RESEARCH CORPORATION + +OUI:080027* + ID_OUI_FROM_DATABASE=Cadmus Computer Systems + +OUI:020701* + ID_OUI_FROM_DATABASE=RACAL-DATACOM + +OUI:080011* + ID_OUI_FROM_DATABASE=TEKTRONIX INC. OUI:08007F* ID_OUI_FROM_DATABASE=CARNEGIE-MELLON UNIVERSITY @@ -43016,14 +44093,8 @@ OUI:080082* OUI:08007B* ID_OUI_FROM_DATABASE=SANYO ELECTRIC CO. LTD. -OUI:00DD0C* - ID_OUI_FROM_DATABASE=UNGERMANN-BASS INC. - -OUI:000005* - ID_OUI_FROM_DATABASE=XEROX CORPORATION - -OUI:0000AA* - ID_OUI_FROM_DATABASE=XEROX CORPORATION +OUI:080074* + ID_OUI_FROM_DATABASE=CASIO COMPUTER CO. LTD. OUI:00406B* ID_OUI_FROM_DATABASE=SYSGEN @@ -43043,35 +44114,56 @@ OUI:08004B* OUI:080003* ID_OUI_FROM_DATABASE=ADVANCED COMPUTER COMM. -OUI:080074* - ID_OUI_FROM_DATABASE=CASIO COMPUTER CO. LTD. +OUI:00009B* + ID_OUI_FROM_DATABASE=INFORMATION INTERNATIONAL, INC -OUI:08005E* - ID_OUI_FROM_DATABASE=COUNTERPOINT COMPUTER INC. +OUI:000068* + ID_OUI_FROM_DATABASE=ROSEMOUNT CONTROLS -OUI:08005A* - ID_OUI_FROM_DATABASE=IBM Corp +OUI:0000A8* + ID_OUI_FROM_DATABASE=STRATUS COMPUTER INC. -OUI:080056* - ID_OUI_FROM_DATABASE=STANFORD LINEAR ACCEL. CENTER +OUI:0000DF* + ID_OUI_FROM_DATABASE=BELL & HOWELL PUB SYS DIV -OUI:080053* - ID_OUI_FROM_DATABASE=MIDDLE EAST TECH. UNIVERSITY +OUI:000062* + ID_OUI_FROM_DATABASE=BULL HN INFORMATION SYSTEMS -OUI:08004F* - ID_OUI_FROM_DATABASE=CYGNET SYSTEMS +OUI:0000AD* + ID_OUI_FROM_DATABASE=BRUKER INSTRUMENTS INC. -OUI:F8E71E* - ID_OUI_FROM_DATABASE=Ruckus Wireless +OUI:0000D0* + ID_OUI_FROM_DATABASE=DEVELCON ELECTRONICS LTD. -OUI:00194B* - ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS +OUI:000093* + ID_OUI_FROM_DATABASE=PROTEON INC. -OUI:001F95* - ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS +OUI:0000A0* + ID_OUI_FROM_DATABASE=SANYO Electric Co., Ltd. -OUI:000E59* - ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS +OUI:00DD0F* + ID_OUI_FROM_DATABASE=UNGERMANN-BASS INC. + +OUI:000001* + ID_OUI_FROM_DATABASE=XEROX CORPORATION + +OUI:080021* + ID_OUI_FROM_DATABASE=3M COMPANY + +OUI:AA0004* + ID_OUI_FROM_DATABASE=DIGITAL EQUIPMENT CORPORATION + +OUI:08000C* + ID_OUI_FROM_DATABASE=MIKLYN DEVELOPMENT CO. + +OUI:00DD08* + ID_OUI_FROM_DATABASE=UNGERMANN-BASS INC. + +OUI:0000D8* + ID_OUI_FROM_DATABASE=NOVELL, INC. + +OUI:F8E71E* + ID_OUI_FROM_DATABASE=Ruckus Wireless OUI:A01B29* ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS @@ -43085,6 +44177,15 @@ OUI:ECDF3A* OUI:E45AA2* ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd. +OUI:00194B* + ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS + +OUI:001F95* + ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS + +OUI:000E59* + ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS + OUI:00235A* ID_OUI_FROM_DATABASE=COMPAL INFORMATION (KUNSHAN) CO., LTD. @@ -43103,6 +44204,9 @@ OUI:94C150* OUI:60FE20* ID_OUI_FROM_DATABASE=2Wire Inc +OUI:D4AE52* + ID_OUI_FROM_DATABASE=Dell Inc. + OUI:989096* ID_OUI_FROM_DATABASE=Dell Inc. @@ -43115,6 +44219,12 @@ OUI:00D09E* OUI:000D72* ID_OUI_FROM_DATABASE=2Wire Inc +OUI:B0E754* + ID_OUI_FROM_DATABASE=2Wire Inc + +OUI:B8E625* + ID_OUI_FROM_DATABASE=2Wire Inc + OUI:000F1F* ID_OUI_FROM_DATABASE=Dell Inc. @@ -43124,15 +44234,6 @@ OUI:14FEB5* OUI:0015C5* ID_OUI_FROM_DATABASE=Dell Inc. -OUI:D4AE52* - ID_OUI_FROM_DATABASE=Dell Inc. - -OUI:B0E754* - ID_OUI_FROM_DATABASE=2Wire Inc - -OUI:B8E625* - ID_OUI_FROM_DATABASE=2Wire Inc - OUI:549F35* ID_OUI_FROM_DATABASE=Dell Inc. @@ -43160,12 +44261,12 @@ OUI:A4A1C2* OUI:348446* ID_OUI_FROM_DATABASE=Ericsson AB -OUI:AC2B6E* - ID_OUI_FROM_DATABASE=Intel Corporate - OUI:F8F1B6* ID_OUI_FROM_DATABASE=Motorola Mobility LLC, a Lenovo Company +OUI:AC2B6E* + ID_OUI_FROM_DATABASE=Intel Corporate + OUI:00216A* ID_OUI_FROM_DATABASE=Intel Corporate @@ -43178,19 +44279,22 @@ OUI:0016EB* OUI:0018DE* ID_OUI_FROM_DATABASE=Intel Corporate -OUI:681729* +OUI:28B2BD* ID_OUI_FROM_DATABASE=Intel Corporate -OUI:5C514F* +OUI:08D40C* ID_OUI_FROM_DATABASE=Intel Corporate -OUI:B808CF* +OUI:843A4B* ID_OUI_FROM_DATABASE=Intel Corporate -OUI:C8F733* +OUI:681729* ID_OUI_FROM_DATABASE=Intel Corporate -OUI:4851B7* +OUI:5C514F* + ID_OUI_FROM_DATABASE=Intel Corporate + +OUI:B808CF* ID_OUI_FROM_DATABASE=Intel Corporate OUI:5CC5D4* @@ -43202,25 +44306,22 @@ OUI:7CCCB8* OUI:F40669* ID_OUI_FROM_DATABASE=Intel Corporate -OUI:3CA9F4* - ID_OUI_FROM_DATABASE=Intel Corporate - -OUI:28B2BD* +OUI:C8F733* ID_OUI_FROM_DATABASE=Intel Corporate -OUI:08D40C* +OUI:0CD292* ID_OUI_FROM_DATABASE=Intel Corporate -OUI:843A4B* +OUI:78929C* ID_OUI_FROM_DATABASE=Intel Corporate -OUI:0CD292* +OUI:6805CA* ID_OUI_FROM_DATABASE=Intel Corporate -OUI:78929C* +OUI:4851B7* ID_OUI_FROM_DATABASE=Intel Corporate -OUI:6805CA* +OUI:3CA9F4* ID_OUI_FROM_DATABASE=Intel Corporate OUI:ACA31E* @@ -43241,6 +44342,9 @@ OUI:84D47E* OUI:A85840* ID_OUI_FROM_DATABASE=Cambridge Industries(Group) Co.,Ltd. +OUI:002423* + ID_OUI_FROM_DATABASE=AzureWave Technologies (Shanghai) Inc. + OUI:002243* ID_OUI_FROM_DATABASE=AzureWave Technology Inc. @@ -43262,23 +44366,14 @@ OUI:240A64* OUI:D0E782* ID_OUI_FROM_DATABASE=AzureWave Technology Inc. -OUI:0C4C39* - ID_OUI_FROM_DATABASE=MitraStar Technology Corp. - -OUI:002423* - ID_OUI_FROM_DATABASE=AzureWave Technologies (Shanghai) Inc. - OUI:A81D16* ID_OUI_FROM_DATABASE=AzureWave Technology Inc. OUI:38A53C* ID_OUI_FROM_DATABASE=COMECER Netherlands -OUI:001D8B* - ID_OUI_FROM_DATABASE=ADB Broadband Italia - -OUI:A4526F* - ID_OUI_FROM_DATABASE=ADB Broadband Italia +OUI:0C4C39* + ID_OUI_FROM_DATABASE=MitraStar Technology Corp. OUI:581243* ID_OUI_FROM_DATABASE=AcSiP Technology Corp. @@ -43292,15 +44387,18 @@ OUI:0030F1* OUI:001974* ID_OUI_FROM_DATABASE=16063 -OUI:ECF00E* - ID_OUI_FROM_DATABASE=AboCom - OUI:3039F2* ID_OUI_FROM_DATABASE=ADB Broadband Italia OUI:000827* ID_OUI_FROM_DATABASE=ADB Broadband Italia +OUI:001D8B* + ID_OUI_FROM_DATABASE=ADB Broadband Italia + +OUI:A4526F* + ID_OUI_FROM_DATABASE=ADB Broadband Italia + OUI:001CA8* ID_OUI_FROM_DATABASE=AirTies Wireless Netowrks @@ -43313,6 +44411,12 @@ OUI:18FE34* OUI:54F6C5* ID_OUI_FROM_DATABASE=FUJIAN STAR-NET COMMUNICATION CO.,LTD +OUI:A43111* + ID_OUI_FROM_DATABASE=ZIV + +OUI:ECF00E* + ID_OUI_FROM_DATABASE=AboCom + OUI:28EF01* ID_OUI_FROM_DATABASE=Private @@ -43322,12 +44426,6 @@ OUI:5C338E* OUI:001AEB* ID_OUI_FROM_DATABASE=Allied Telesis R&D Center K.K. -OUI:747548* - ID_OUI_FROM_DATABASE=Amazon Technologies Inc. - -OUI:A43111* - ID_OUI_FROM_DATABASE=ZIV - OUI:5C93A2* ID_OUI_FROM_DATABASE=Liteon Technology Corporation @@ -43337,39 +44435,12 @@ OUI:E8C74F* OUI:E8F724* ID_OUI_FROM_DATABASE=Hewlett Packard Enterprise -OUI:1C1448* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:707E43* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:001AAD* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:A47AA4* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc. - -OUI:701A04* - ID_OUI_FROM_DATABASE=Liteon Technology Corporation +OUI:747548* + ID_OUI_FROM_DATABASE=Amazon Technologies Inc. -OUI:00D9D1* +OUI:080046* ID_OUI_FROM_DATABASE=Sony Corporation -OUI:48D224* - ID_OUI_FROM_DATABASE=Liteon Technology Corporation - -OUI:2CD05A* - ID_OUI_FROM_DATABASE=Liteon Technology Corporation - -OUI:74E543* - ID_OUI_FROM_DATABASE=Liteon Technology Corporation - -OUI:A4DB30* - ID_OUI_FROM_DATABASE=Liteon Technology Corporation - -OUI:B8EE65* - ID_OUI_FROM_DATABASE=Liteon Technology Corporation - OUI:001DBA* ID_OUI_FROM_DATABASE=Sony Corporation @@ -43391,6 +44462,24 @@ OUI:001B59* OUI:78843C* ID_OUI_FROM_DATABASE=Sony Corporation +OUI:701A04* + ID_OUI_FROM_DATABASE=Liteon Technology Corporation + +OUI:48D224* + ID_OUI_FROM_DATABASE=Liteon Technology Corporation + +OUI:2CD05A* + ID_OUI_FROM_DATABASE=Liteon Technology Corporation + +OUI:74E543* + ID_OUI_FROM_DATABASE=Liteon Technology Corporation + +OUI:A4DB30* + ID_OUI_FROM_DATABASE=Liteon Technology Corporation + +OUI:B8EE65* + ID_OUI_FROM_DATABASE=Liteon Technology Corporation + OUI:0023F1* ID_OUI_FROM_DATABASE=Sony Mobile Communications AB @@ -43400,29 +44489,17 @@ OUI:3017C8* OUI:18002D* ID_OUI_FROM_DATABASE=Sony Mobile Communications AB -OUI:3C0771* - ID_OUI_FROM_DATABASE=Sony Corporation - -OUI:D8D43C* - ID_OUI_FROM_DATABASE=Sony Corporation - -OUI:0CFE45* - ID_OUI_FROM_DATABASE=Sony Corporation - -OUI:F8D0AC* - ID_OUI_FROM_DATABASE=Sony Corporation - OUI:04E676* ID_OUI_FROM_DATABASE=AMPAK Technology, Inc. OUI:0022F4* ID_OUI_FROM_DATABASE=AMPAK Technology, Inc. -OUI:00041F* - ID_OUI_FROM_DATABASE=Sony Computer Entertainment Inc. +OUI:1C1448* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. -OUI:080046* - ID_OUI_FROM_DATABASE=Sony Corporation +OUI:707E43* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. OUI:0003E0* ID_OUI_FROM_DATABASE=ARRIS Group, Inc. @@ -43433,6 +44510,12 @@ OUI:00128A* OUI:001225* ID_OUI_FROM_DATABASE=ARRIS Group, Inc. +OUI:001AAD* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:A47AA4* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + OUI:3C754A* ID_OUI_FROM_DATABASE=ARRIS Group, Inc. @@ -43451,45 +44534,39 @@ OUI:002395* OUI:0023ED* ID_OUI_FROM_DATABASE=ARRIS Group, Inc. -OUI:001B52* +OUI:745612* ID_OUI_FROM_DATABASE=ARRIS Group, Inc. -OUI:00230B* +OUI:E46449* ID_OUI_FROM_DATABASE=ARRIS Group, Inc. -OUI:001E8D* +OUI:002493* ID_OUI_FROM_DATABASE=ARRIS Group, Inc. -OUI:0023A2* +OUI:40FC89* ID_OUI_FROM_DATABASE=ARRIS Group, Inc. -OUI:001BDD* +OUI:001B52* ID_OUI_FROM_DATABASE=ARRIS Group, Inc. -OUI:001404* +OUI:00230B* ID_OUI_FROM_DATABASE=ARRIS Group, Inc. -OUI:745612* +OUI:001E8D* ID_OUI_FROM_DATABASE=ARRIS Group, Inc. -OUI:E46449* +OUI:0023A2* ID_OUI_FROM_DATABASE=ARRIS Group, Inc. -OUI:002493* +OUI:001BDD* ID_OUI_FROM_DATABASE=ARRIS Group, Inc. -OUI:40FC89* +OUI:001404* ID_OUI_FROM_DATABASE=ARRIS Group, Inc. OUI:00195E* ID_OUI_FROM_DATABASE=ARRIS Group, Inc. -OUI:000D92* - ID_OUI_FROM_DATABASE=ARIMA Communications Corp. - -OUI:009096* - ID_OUI_FROM_DATABASE=ASKEY COMPUTER CORP - OUI:0011F5* ID_OUI_FROM_DATABASE=ASKEY COMPUTER CORP @@ -43505,8 +44582,11 @@ OUI:000B6A* OUI:40BA61* ID_OUI_FROM_DATABASE=ARIMA Communications Corp. -OUI:841B5E* - ID_OUI_FROM_DATABASE=NETGEAR +OUI:000D92* + ID_OUI_FROM_DATABASE=ARIMA Communications Corp. + +OUI:009096* + ID_OUI_FROM_DATABASE=ASKEY COMPUTER CORP OUI:204E7F* ID_OUI_FROM_DATABASE=NETGEAR @@ -43523,11 +44603,8 @@ OUI:C03F0E* OUI:001F33* ID_OUI_FROM_DATABASE=NETGEAR -OUI:1883BF* - ID_OUI_FROM_DATABASE=Arcadyan Technology Corporation - -OUI:9C80DF* - ID_OUI_FROM_DATABASE=Arcadyan Technology Corporation +OUI:841B5E* + ID_OUI_FROM_DATABASE=NETGEAR OUI:001CCC* ID_OUI_FROM_DATABASE=BlackBerry RTS @@ -43535,18 +44612,6 @@ OUI:001CCC* OUI:94EBCD* ID_OUI_FROM_DATABASE=BlackBerry RTS -OUI:644FB0* - ID_OUI_FROM_DATABASE=Hyunjin.com - -OUI:001A2A* - ID_OUI_FROM_DATABASE=Arcadyan Technology Corporation - -OUI:001D19* - ID_OUI_FROM_DATABASE=Arcadyan Technology Corporation - -OUI:88252C* - ID_OUI_FROM_DATABASE=Arcadyan Technology Corporation - OUI:A4E4B8* ID_OUI_FROM_DATABASE=BlackBerry RTS @@ -43559,6 +44624,24 @@ OUI:BC0543* OUI:002675* ID_OUI_FROM_DATABASE=Aztech Electronics Pte Ltd +OUI:001D19* + ID_OUI_FROM_DATABASE=Arcadyan Technology Corporation + +OUI:88252C* + ID_OUI_FROM_DATABASE=Arcadyan Technology Corporation + +OUI:1883BF* + ID_OUI_FROM_DATABASE=Arcadyan Technology Corporation + +OUI:9C80DF* + ID_OUI_FROM_DATABASE=Arcadyan Technology Corporation + +OUI:644FB0* + ID_OUI_FROM_DATABASE=Hyunjin.com + +OUI:001A2A* + ID_OUI_FROM_DATABASE=Arcadyan Technology Corporation + OUI:001F3F* ID_OUI_FROM_DATABASE=AVM GmbH @@ -43571,85 +44654,40 @@ OUI:6CB0CE* OUI:100D7F* ID_OUI_FROM_DATABASE=NETGEAR -OUI:0020D6* - ID_OUI_FROM_DATABASE=Breezecom, Ltd. - OUI:001018* ID_OUI_FROM_DATABASE=Broadcom OUI:001BE9* ID_OUI_FROM_DATABASE=Broadcom -OUI:307C5E* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:0010DB* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:00121E* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:0014F6* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:EC3EF7* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:0C8610* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:40A677* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:841888* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:002688* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:0017CB* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:DC38E1* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:40B4F0* - ID_OUI_FROM_DATABASE=Juniper Networks +OUI:0020D6* + ID_OUI_FROM_DATABASE=Breezecom, Ltd. OUI:008077* ID_OUI_FROM_DATABASE=Brother industries, LTD. -OUI:029D8E* - ID_OUI_FROM_DATABASE=CARDIAC RECORDERS, INC. - OUI:FC2F40* ID_OUI_FROM_DATABASE=Calxeda, Inc. +OUI:029D8E* + ID_OUI_FROM_DATABASE=CARDIAC RECORDERS, INC. + OUI:0026E4* ID_OUI_FROM_DATABASE=Canal + -OUI:389496* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -OUI:0CB319* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -OUI:08EE8B* - ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd - -OUI:84A466* +OUI:E458E7* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -OUI:981DFA* +OUI:8CBFA6* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -OUI:FCF136* +OUI:7840E4* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -OUI:0C8910* +OUI:9000DB* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -OUI:54FA3E* +OUI:183A2D* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd OUI:A89FBA* @@ -43667,13 +44705,16 @@ OUI:5C2E59* OUI:646CB2* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -OUI:F884F2* +OUI:A48431* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -OUI:14B484* +OUI:E4F8EF* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -OUI:608F5C* +OUI:1867B0* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:F40E22* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd OUI:4CBCA5* @@ -43688,51 +44729,66 @@ OUI:B0D09C* OUI:4CA56D* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -OUI:A48431* +OUI:08373D* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -OUI:E4F8EF* +OUI:50F520* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -OUI:1432D1* +OUI:A4EBD3* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -OUI:E458E7* +OUI:28987B* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -OUI:8CBFA6* +OUI:9C3AAF* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -OUI:7840E4* +OUI:1432D1* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -OUI:9000DB* +OUI:F884F2* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -OUI:183A2D* +OUI:14B484* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -OUI:08373D* +OUI:608F5C* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -OUI:50F520* +OUI:389496* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -OUI:A4EBD3* +OUI:0CB319* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -OUI:28987B* +OUI:08EE8B* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -OUI:1867B0* +OUI:84A466* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -OUI:F40E22* +OUI:981DFA* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd -OUI:9C3AAF* +OUI:FCF136* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:0C8910* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:54FA3E* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd +OUI:702559* + ID_OUI_FROM_DATABASE=CyberTAN Technology Inc. + +OUI:0090D6* + ID_OUI_FROM_DATABASE=Crystal Group, Inc. + +OUI:02CF1C* + ID_OUI_FROM_DATABASE=Communication Machinery Corporation + OUI:BCF2AF* ID_OUI_FROM_DATABASE=devolo AG @@ -43742,36 +44798,30 @@ OUI:0270B3* OUI:000FF6* ID_OUI_FROM_DATABASE=DARFON LIGHTING CORP -OUI:702559* - ID_OUI_FROM_DATABASE=CyberTAN Technology Inc. - -OUI:0090D6* - ID_OUI_FROM_DATABASE=Crystal Group, Inc. - OUI:001DAA* ID_OUI_FROM_DATABASE=DrayTek Corp. -OUI:02CF1C* - ID_OUI_FROM_DATABASE=Communication Machinery Corporation - OUI:0C75BD* ID_OUI_FROM_DATABASE=Cisco Systems, Inc OUI:38F0C8* ID_OUI_FROM_DATABASE=Livestream +OUI:0C1167* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + OUI:74EAE8* ID_OUI_FROM_DATABASE=ARRIS Group, Inc. OUI:A811FC* ID_OUI_FROM_DATABASE=ARRIS Group, Inc. -OUI:0C1167* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc - OUI:001982* ID_OUI_FROM_DATABASE=SmarDTV +OUI:00904B* + ID_OUI_FROM_DATABASE=Gemtek Technology Co., Ltd. + OUI:10C6FC* ID_OUI_FROM_DATABASE=Garmin International @@ -43796,15 +44846,6 @@ OUI:002682* OUI:001A73* ID_OUI_FROM_DATABASE=Gemtek Technology Co., Ltd. -OUI:00904B* - ID_OUI_FROM_DATABASE=Gemtek Technology Co., Ltd. - -OUI:D86BF7* - ID_OUI_FROM_DATABASE=Nintendo Co., Ltd. - -OUI:A4C0E1* - ID_OUI_FROM_DATABASE=Nintendo Co., Ltd. - OUI:34AF2C* ID_OUI_FROM_DATABASE=Nintendo Co., Ltd. @@ -43820,12 +44861,6 @@ OUI:600194* OUI:F44D17* ID_OUI_FROM_DATABASE=GOLDCARD HIGH-TECH CO.,LTD. -OUI:001E35* - ID_OUI_FROM_DATABASE=Nintendo Co., Ltd. - -OUI:001FC5* - ID_OUI_FROM_DATABASE=Nintendo Co., Ltd. - OUI:0021BD* ID_OUI_FROM_DATABASE=Nintendo Co., Ltd. @@ -43835,7 +44870,10 @@ OUI:002709* OUI:E84ECE* ID_OUI_FROM_DATABASE=Nintendo Co., Ltd. -OUI:0009BF* +OUI:D86BF7* + ID_OUI_FROM_DATABASE=Nintendo Co., Ltd. + +OUI:A4C0E1* ID_OUI_FROM_DATABASE=Nintendo Co., Ltd. OUI:001AE9* @@ -43844,6 +44882,15 @@ OUI:001AE9* OUI:001CBE* ID_OUI_FROM_DATABASE=Nintendo Co., Ltd. +OUI:001E35* + ID_OUI_FROM_DATABASE=Nintendo Co., Ltd. + +OUI:001FC5* + ID_OUI_FROM_DATABASE=Nintendo Co., Ltd. + +OUI:0009BF* + ID_OUI_FROM_DATABASE=Nintendo Co., Ltd. + OUI:002403* ID_OUI_FROM_DATABASE=Nokia Danmark A/S @@ -43853,56 +44900,440 @@ OUI:002265* OUI:0019B7* ID_OUI_FROM_DATABASE=Nokia Danmark A/S -OUI:002404* +OUI:001D6E* ID_OUI_FROM_DATABASE=Nokia Danmark A/S -OUI:0002EE* +OUI:001B33* ID_OUI_FROM_DATABASE=Nokia Danmark A/S -OUI:001C9A* +OUI:ECF35B* + ID_OUI_FROM_DATABASE=Nokia Corporation + +OUI:EC9B5B* + ID_OUI_FROM_DATABASE=Nokia Corporation + +OUI:BCC6DB* + ID_OUI_FROM_DATABASE=Nokia Corporation + +OUI:0021AA* ID_OUI_FROM_DATABASE=Nokia Danmark A/S -OUI:001F01* +OUI:002669* ID_OUI_FROM_DATABASE=Nokia Danmark A/S -OUI:000EED* +OUI:0022FD* ID_OUI_FROM_DATABASE=Nokia Danmark A/S -OUI:001E3A* +OUI:002109* ID_OUI_FROM_DATABASE=Nokia Danmark A/S -OUI:001A89* +OUI:002108* ID_OUI_FROM_DATABASE=Nokia Danmark A/S -OUI:0021AA* +OUI:001F01* ID_OUI_FROM_DATABASE=Nokia Danmark A/S -OUI:002669* +OUI:000EED* ID_OUI_FROM_DATABASE=Nokia Danmark A/S -OUI:0022FD* +OUI:001E3A* ID_OUI_FROM_DATABASE=Nokia Danmark A/S -OUI:002109* +OUI:001A89* ID_OUI_FROM_DATABASE=Nokia Danmark A/S -OUI:002108* +OUI:002404* ID_OUI_FROM_DATABASE=Nokia Danmark A/S -OUI:001D6E* +OUI:0002EE* ID_OUI_FROM_DATABASE=Nokia Danmark A/S -OUI:001B33* +OUI:001C9A* ID_OUI_FROM_DATABASE=Nokia Danmark A/S -OUI:ECF35B* - ID_OUI_FROM_DATABASE=Nokia Corporation +OUI:B83241* + ID_OUI_FROM_DATABASE=Wuhan Tianyu Information Industry Co., Ltd. -OUI:EC9B5B* - ID_OUI_FROM_DATABASE=Nokia Corporation +OUI:9897D1* + ID_OUI_FROM_DATABASE=MitraStar Technology Corp. -OUI:BCC6DB* - ID_OUI_FROM_DATABASE=Nokia Corporation +OUI:94C960* + ID_OUI_FROM_DATABASE=Zhongshan B&T technology.co.,ltd + +OUI:E04FBD* + ID_OUI_FROM_DATABASE=SICHUAN TIANYI COMHEART TELECOMCO.,LTD + +OUI:001479* + ID_OUI_FROM_DATABASE=NEC Magnus Communications,Ltd. + +OUI:9C4FDA* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:1C5CF2* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:0821EF* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:B462AD* + ID_OUI_FROM_DATABASE=Elysia Germany GmbH + +OUI:747818* + ID_OUI_FROM_DATABASE=Jurumani Solutions + +OUI:A0CBFD* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:34145F* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:803896* + ID_OUI_FROM_DATABASE=SHARP Corporation + +OUI:00D9D1* + ID_OUI_FROM_DATABASE=Sony Computer Entertainment Inc. + +OUI:F8D0AC* + ID_OUI_FROM_DATABASE=Sony Computer Entertainment Inc. + +OUI:0CFE45* + ID_OUI_FROM_DATABASE=Sony Computer Entertainment Inc. + +OUI:D8D43C* + ID_OUI_FROM_DATABASE=Sony Computer Entertainment Inc. + +OUI:3C0771* + ID_OUI_FROM_DATABASE=Sony Computer Entertainment Inc. + +OUI:686E23* + ID_OUI_FROM_DATABASE=Wi3 Inc. + +OUI:B8A175* + ID_OUI_FROM_DATABASE=Roku, Inc. + +OUI:80D160* + ID_OUI_FROM_DATABASE=Integrated Device Technology (Malaysia) Sdn. Bhd. + +OUI:0080E5* + ID_OUI_FROM_DATABASE=NetApp + +OUI:E49A79* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:28A02B* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:B44BD2* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:002340* + ID_OUI_FROM_DATABASE=MiXTelematics + +OUI:B48B19* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:4CCC6A* + ID_OUI_FROM_DATABASE=Micro-Star INTL CO., LTD. + +OUI:00AF1F* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:245EBE* + ID_OUI_FROM_DATABASE=QNAP Systems, Inc. + +OUI:A89352* + ID_OUI_FROM_DATABASE=SHANGHAI ZHONGMI COMMUNICATION TECHNOLOGY CO.,LTD + +OUI:AC5F3E* + ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO-MECHANICS(THAILAND) + +OUI:985BB0* + ID_OUI_FROM_DATABASE=KMDATA INC. + +OUI:6C8FB5* + ID_OUI_FROM_DATABASE=Microsoft Mobile Oy + +OUI:D4E33F* + ID_OUI_FROM_DATABASE=Alcatel-Lucent + +OUI:143E60* + ID_OUI_FROM_DATABASE=Alcatel-Lucent + +OUI:248A07* + ID_OUI_FROM_DATABASE=Mellanox Technologies, Inc. + +OUI:9C9D5D* + ID_OUI_FROM_DATABASE=Raden Inc + +OUI:B07FB9* + ID_OUI_FROM_DATABASE=NETGEAR + +OUI:70661B* + ID_OUI_FROM_DATABASE=Sonova AG + +OUI:1C98EC* + ID_OUI_FROM_DATABASE=Hewlett Packard Enterprise + +OUI:EC438B* + ID_OUI_FROM_DATABASE=YAPTV + +OUI:E8FD72* + ID_OUI_FROM_DATABASE=SHANGHAI LINGUO TECHNOLOGY CO., LTD. + +OUI:98BB1E* + ID_OUI_FROM_DATABASE=BYD Precision Manufacture Company Ltd. + +OUI:001D0D* + ID_OUI_FROM_DATABASE=Sony Computer Entertainment Inc. + +OUI:00041F* + ID_OUI_FROM_DATABASE=Sony Computer Entertainment Inc. + +OUI:20A90E* + ID_OUI_FROM_DATABASE=TCT mobile ltd + +OUI:CCB11A* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:1866DA* + ID_OUI_FROM_DATABASE=Dell Inc. + +OUI:981FB1* + ID_OUI_FROM_DATABASE=Shenzhen Lemon Network Technology Co.,Ltd + +OUI:40476A* + ID_OUI_FROM_DATABASE=AG Acquisition Corp. d.b.a. ASTRO Gaming + +OUI:A4BF01* + ID_OUI_FROM_DATABASE=Intel Corporate + +OUI:0004C6* + ID_OUI_FROM_DATABASE=YAMAHA MOTOR CO.,LTD + +OUI:509EA7* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:DCCF96* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:64CC2E* + ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd + +OUI:14D11F* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:54511B* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:68536C* + ID_OUI_FROM_DATABASE=SPnS Co.,Ltd + +OUI:005BA1* + ID_OUI_FROM_DATABASE=shanghai huayuan chuangxin software CO., LTD. + +OUI:B07E70* + ID_OUI_FROM_DATABASE=Zadara Storage Ltd. + +OUI:405EE1* + ID_OUI_FROM_DATABASE=Shenzhen H&T Intelligent Control Co.,Ltd. + +OUI:88795B* + ID_OUI_FROM_DATABASE=Konka Group Co., Ltd. + +OUI:10F005* + ID_OUI_FROM_DATABASE=Intel Corporate + +OUI:BC9889* + ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD + +OUI:E42F26* + ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD + +OUI:344B3D* + ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD + +OUI:FCF647* + ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD + +OUI:1088CE* + ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD + +OUI:D463FE* + ID_OUI_FROM_DATABASE=Arcadyan Corporation + +OUI:9466E7* + ID_OUI_FROM_DATABASE=WOM Engineering + +OUI:F8A188* + ID_OUI_FROM_DATABASE=LED Roadway Lighting + +OUI:001174* + ID_OUI_FROM_DATABASE=Mojo Networks, Inc. + +OUI:BC15AC* + ID_OUI_FROM_DATABASE=Vodafone Italia S.p.A. + +OUI:1C740D* + ID_OUI_FROM_DATABASE=ZyXEL Communications Corporation + +OUI:140C5B* + ID_OUI_FROM_DATABASE=PLNetworks + +OUI:D0B0CD* + ID_OUI_FROM_DATABASE=Moen + +OUI:DCFE07* + ID_OUI_FROM_DATABASE=PEGATRON CORPORATION + +OUI:E47E66* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:9C741A* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:EC93ED* + ID_OUI_FROM_DATABASE=DDoS-Guard LTD + +OUI:4C72B9* + ID_OUI_FROM_DATABASE=PEGATRON CORPORATION + +OUI:0071C2* + ID_OUI_FROM_DATABASE=PEGATRON CORPORATION + +OUI:F462D0* + ID_OUI_FROM_DATABASE=Not for Radio, LLC + +OUI:94513D* + ID_OUI_FROM_DATABASE=iSmart Alarm, Inc. + +OUI:C89CDC* + ID_OUI_FROM_DATABASE=Elitegroup Computer Systems Co.,Ltd. + +OUI:002511* + ID_OUI_FROM_DATABASE=Elitegroup Computer Systems Co.,Ltd. + +OUI:000E03* + ID_OUI_FROM_DATABASE=Emulex Corporation + +OUI:001BB9* + ID_OUI_FROM_DATABASE=Elitegroup Computer Systems Co.,Ltd. + +OUI:001921* + ID_OUI_FROM_DATABASE=Elitegroup Computer Systems Co.,Ltd. + +OUI:00142A* + ID_OUI_FROM_DATABASE=Elitegroup Computer Systems Co.,Ltd. + +OUI:0050FC* + ID_OUI_FROM_DATABASE=Edimax Technology Co. Ltd. + +OUI:200A5E* + ID_OUI_FROM_DATABASE=Xiangshan Giant Eagle Technology Developing Co., Ltd. + +OUI:0001F4* + ID_OUI_FROM_DATABASE=Enterasys + +OUI:487ADA* + ID_OUI_FROM_DATABASE=Hangzhou H3C Technologies Co., Limited + +OUI:1C7370* + ID_OUI_FROM_DATABASE=Neotech + +OUI:30E37A* + ID_OUI_FROM_DATABASE=Intel Corporate + +OUI:A08CFD* + ID_OUI_FROM_DATABASE=Hewlett Packard + +OUI:4CA003* + ID_OUI_FROM_DATABASE=T-21 Technologies LLC + +OUI:F0EE58* + ID_OUI_FROM_DATABASE=PACE Telematics GmbH + +OUI:001397* + ID_OUI_FROM_DATABASE=Oracle Corporation + +OUI:00A0A4* + ID_OUI_FROM_DATABASE=Oracle Corporation + +OUI:4000E0* + ID_OUI_FROM_DATABASE=Derek(Shaoguan)Limited + +OUI:A4E597* + ID_OUI_FROM_DATABASE=Gessler GmbH + +OUI:001A34* + ID_OUI_FROM_DATABASE=Konka Group Co., Ltd. + +OUI:0024F4* + ID_OUI_FROM_DATABASE=Kaminario, Ltd. + +OUI:001D08* + ID_OUI_FROM_DATABASE=Jiangsu Yinhe Electronics Co.,Ltd. + +OUI:0018D7* + ID_OUI_FROM_DATABASE=JAVAD GNSS, Inc. + +OUI:001C6C* + ID_OUI_FROM_DATABASE=30805 + +OUI:00A0B0* + ID_OUI_FROM_DATABASE=I-O DATA DEVICE, INC. + +OUI:00E0CF* + ID_OUI_FROM_DATABASE=INTEGRATED DEVICE + +OUI:547F54* + ID_OUI_FROM_DATABASE=INGENICO + +OUI:48C049* + ID_OUI_FROM_DATABASE=Broad Telecom SA + +OUI:DC38E1* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:40A677* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:0C8610* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:EC3EF7* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:0014F6* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:00121E* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:0010DB* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:307C5E* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:002688* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:841888* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:40B4F0* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:0017CB* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:E0A3AC* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:044E5A* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:E00EDA* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc OUI:D86CE9* ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS @@ -45236,12 +46667,6 @@ OUI:346C0F* OUI:3C912B* ID_OUI_FROM_DATABASE=Vexata Inc -OUI:F8C96C* - ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Tech.Co.,Ltd. - -OUI:48555F* - ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Tech.Co.,Ltd. - OUI:54369B* ID_OUI_FROM_DATABASE=1Verge Internet Technology (Beijing) Co., Ltd. @@ -45440,9 +46865,6 @@ OUI:14EDE4* OUI:3438AF* ID_OUI_FROM_DATABASE=Inlab Software GmbH -OUI:D897BA* - ID_OUI_FROM_DATABASE=PEGATRON CORPORATION - OUI:049B9C* ID_OUI_FROM_DATABASE=Eadingcore Intelligent Technology Co., Ltd. @@ -45473,9 +46895,6 @@ OUI:EC59E7* OUI:08EFAB* ID_OUI_FROM_DATABASE=SAYME WIRELESS SENSOR NETWORK -OUI:BC52B4* - ID_OUI_FROM_DATABASE=Alcatel-Lucent - OUI:C81B6B* ID_OUI_FROM_DATABASE=Innova Security @@ -45512,9 +46931,6 @@ OUI:2C600C* OUI:902CC7* ID_OUI_FROM_DATABASE=C-MAX Asia Limited -OUI:B8AEED* - ID_OUI_FROM_DATABASE=Elitegroup Computer Systems Co., Ltd. - OUI:1C965A* ID_OUI_FROM_DATABASE=Weifang goertek Electronics CO.,LTD @@ -45959,9 +47375,6 @@ OUI:7C9763* OUI:0444A1* ID_OUI_FROM_DATABASE=TELECON GALICIA,S.A. -OUI:C03FD5* - ID_OUI_FROM_DATABASE=Elitegroup Computer Systems Co., LTD - OUI:84569C* ID_OUI_FROM_DATABASE=Coho Data, Inc., @@ -46130,9 +47543,6 @@ OUI:C0C687* OUI:142BD2* ID_OUI_FROM_DATABASE=Armtel Ltd. -OUI:D4AD2D* - ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Tech.Co.,Ltd. - OUI:F845AD* ID_OUI_FROM_DATABASE=Konka Group Co., Ltd. @@ -46196,9 +47606,6 @@ OUI:341B22* OUI:B4346C* ID_OUI_FROM_DATABASE=MATSUNICHI DIGITAL TECHNOLOGY (HONG KONG) LIMITED -OUI:4C55CC* - ID_OUI_FROM_DATABASE=ACKme Networks Pty Ltd - OUI:9C1465* ID_OUI_FROM_DATABASE=Edata Elektronik San. ve Tic. A.Ş. @@ -46343,12 +47750,6 @@ OUI:784B08* OUI:0C2D89* ID_OUI_FROM_DATABASE=QiiQ Communications Inc. -OUI:34BF90* - ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Tech.Co.,Ltd. - -OUI:D467E7* - ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Tech.Co.,Ltd. - OUI:604A1C* ID_OUI_FROM_DATABASE=SUYIN Corporation @@ -46406,9 +47807,6 @@ OUI:381766* OUI:204C6D* ID_OUI_FROM_DATABASE=Hugo Brennenstuhl Gmbh & Co. KG. -OUI:D49524* - ID_OUI_FROM_DATABASE=Clover Network, Inc. - OUI:DC825B* ID_OUI_FROM_DATABASE=JANUS, spol. s r.o. @@ -46580,9 +47978,6 @@ OUI:78995C* OUI:8CC5E1* ID_OUI_FROM_DATABASE=ShenZhen Konka Telecommunication Technology Co.,Ltd -OUI:7427EA* - ID_OUI_FROM_DATABASE=Elitegroup Computer Systems Co., Ltd. - OUI:6CB311* ID_OUI_FROM_DATABASE=Shenzhen Lianrui Electronics Co.,Ltd @@ -46730,9 +48125,6 @@ OUI:CC3A61* OUI:A00363* ID_OUI_FROM_DATABASE=Robert Bosch Healthcare GmbH -OUI:4C8FA5* - ID_OUI_FROM_DATABASE=Jastec - OUI:F0F644* ID_OUI_FROM_DATABASE=Whitesky Science & Technology Co.,Ltd. @@ -46808,9 +48200,6 @@ OUI:A854B2* OUI:98291D* ID_OUI_FROM_DATABASE=Jaguar de Mexico, SA de CV -OUI:8C3C4A* - ID_OUI_FROM_DATABASE=NAKAYO TELECOMMUNICATIONS,INC. - OUI:18863A* ID_OUI_FROM_DATABASE=DIGITAL ART SYSTEM @@ -46988,9 +48377,6 @@ OUI:E44F5F* OUI:08B738* ID_OUI_FROM_DATABASE=Lite-On Technogy Corp. -OUI:702526* - ID_OUI_FROM_DATABASE=Alcatel-Lucent - OUI:9C6650* ID_OUI_FROM_DATABASE=Glodio Technolies Co.,Ltd Tianjin Branch @@ -47084,9 +48470,6 @@ OUI:346E8A* OUI:ACEE3B* ID_OUI_FROM_DATABASE=6harmonics Inc -OUI:04C1B9* - ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Tech.Co.,Ltd. - OUI:681605* ID_OUI_FROM_DATABASE=Systems And Electronic Development FZCO @@ -47438,9 +48821,6 @@ OUI:DC3C2E* OUI:40BC8B* ID_OUI_FROM_DATABASE=itelio GmbH -OUI:903AA0* - ID_OUI_FROM_DATABASE=Alcatel-Lucent - OUI:88C36E* ID_OUI_FROM_DATABASE=Beijing Ereneben lnformation Technology Limited @@ -47966,9 +49346,6 @@ OUI:20D5AB* OUI:F05849* ID_OUI_FROM_DATABASE=CareView Communications -OUI:E06995* - ID_OUI_FROM_DATABASE=PEGATRON CORPORATION - OUI:BC15A6* ID_OUI_FROM_DATABASE=Taiwan Jantek Electronics,Ltd. @@ -47984,9 +49361,6 @@ OUI:F05D89* OUI:AC02CF* ID_OUI_FROM_DATABASE=RW Tecnologia Industria e Comercio Ltda -OUI:A0B662* - ID_OUI_FROM_DATABASE=Acutvista Innovation Co., Ltd. - OUI:9067B5* ID_OUI_FROM_DATABASE=Alcatel-Lucent @@ -48515,9 +49889,6 @@ OUI:E43593* OUI:E0BC43* ID_OUI_FROM_DATABASE=C2 Microsystems, Inc. -OUI:7071BC* - ID_OUI_FROM_DATABASE=PEGATRON CORPORATION - OUI:7884EE* ID_OUI_FROM_DATABASE=INDRA ESPACIO S.A. @@ -48890,9 +50261,6 @@ OUI:0026A4* OUI:00269E* ID_OUI_FROM_DATABASE=Quanta Computer Inc -OUI:002697* - ID_OUI_FROM_DATABASE=Cheetah Technologies, L.P. - OUI:002698* ID_OUI_FROM_DATABASE=Cisco Systems, Inc @@ -48914,9 +50282,6 @@ OUI:002678* OUI:002672* ID_OUI_FROM_DATABASE=AAMP of America -OUI:00266C* - ID_OUI_FROM_DATABASE=Inventec - OUI:00266B* ID_OUI_FROM_DATABASE=SHINE UNION ENTERPRISE LIMITED @@ -49661,9 +51026,6 @@ OUI:002207* OUI:002202* ID_OUI_FROM_DATABASE=Excito Elektronik i Skåne AB -OUI:0021FD* - ID_OUI_FROM_DATABASE=DSTA S.L. - OUI:0021F9* ID_OUI_FROM_DATABASE=WIRECOM Technologies @@ -49739,9 +51101,6 @@ OUI:001E2C* OUI:001E20* ID_OUI_FROM_DATABASE=Intertain Inc. -OUI:001E25* - ID_OUI_FROM_DATABASE=Intek Digital Inc - OUI:001E19* ID_OUI_FROM_DATABASE=GTRI @@ -50489,9 +51848,6 @@ OUI:001990* OUI:001989* ID_OUI_FROM_DATABASE=Sonitrol Corporation -OUI:001A45* - ID_OUI_FROM_DATABASE=GN Netcom as - OUI:001A3E* ID_OUI_FROM_DATABASE=Faster Technology LLC @@ -50735,9 +52091,6 @@ OUI:00186B* OUI:001870* ID_OUI_FROM_DATABASE=E28 Shanghai Limited -OUI:00185C* - ID_OUI_FROM_DATABASE=EDS Lab Pte Ltd - OUI:001863* ID_OUI_FROM_DATABASE=Veritech Electronics Limited @@ -50924,9 +52277,6 @@ OUI:00169B* OUI:0016A2* ID_OUI_FROM_DATABASE=CentraLite Systems, Inc. -OUI:00168F* - ID_OUI_FROM_DATABASE=GN Netcom as - OUI:001696* ID_OUI_FROM_DATABASE=QDI Technology (H.K.) Limited @@ -51611,9 +52961,6 @@ OUI:001160* OUI:001154* ID_OUI_FROM_DATABASE=Webpro Technologies Inc. -OUI:00115B* - ID_OUI_FROM_DATABASE=Elitegroup Computer System Co. (ECS) - OUI:00114B* ID_OUI_FROM_DATABASE=Francotyp-Postalia GmbH @@ -52172,9 +53519,6 @@ OUI:000E3A* OUI:000E2D* ID_OUI_FROM_DATABASE=Hyundai Digital Technology Co.,Ltd. -OUI:000E2E* - ID_OUI_FROM_DATABASE=EDIMAX TECHNOLOGY CO., LTD. - OUI:000CEA* ID_OUI_FROM_DATABASE=aphona Kommunikationssysteme @@ -52238,9 +53582,6 @@ OUI:000C5C* OUI:000C61* ID_OUI_FROM_DATABASE=AC Tech corporation DBA Advanced Digital -OUI:000C49* - ID_OUI_FROM_DATABASE=Dangaard Telecom RTC Division A/S - OUI:000CBA* ID_OUI_FROM_DATABASE=Jamex, Inc. @@ -52880,9 +54221,6 @@ OUI:0008AC* OUI:0008A5* ID_OUI_FROM_DATABASE=Peninsula Systems Inc. -OUI:00089F* - ID_OUI_FROM_DATABASE=EFM Networks - OUI:000899* ID_OUI_FROM_DATABASE=Netbind, Inc. @@ -52937,18 +54275,12 @@ OUI:0008B8* OUI:00079B* ID_OUI_FROM_DATABASE=Aurora Networks -OUI:000795* - ID_OUI_FROM_DATABASE=Elitegroup Computer System Co. (ECS) - OUI:00078F* ID_OUI_FROM_DATABASE=Emkay Innovative Products OUI:000788* ID_OUI_FROM_DATABASE=Clipcomm, Inc. -OUI:000782* - ID_OUI_FROM_DATABASE=Oracle Corporation - OUI:000779* ID_OUI_FROM_DATABASE=Sungil Telecom Co., Ltd. @@ -53843,9 +55175,6 @@ OUI:00016B* OUI:000167* ID_OUI_FROM_DATABASE=HIOKI E.E. CORPORATION -OUI:00020E* - ID_OUI_FROM_DATABASE=ECI Telecom, Ltd - OUI:000215* ID_OUI_FROM_DATABASE=Cotas Computer Technology A/B @@ -54551,9 +55880,6 @@ OUI:00106F* OUI:0010C6* ID_OUI_FROM_DATABASE=Universal Global Scientific Industrial Co., Ltd. -OUI:00104F* - ID_OUI_FROM_DATABASE=Oracle Corporation - OUI:0010DA* ID_OUI_FROM_DATABASE=Kollmorgen Corp @@ -54722,9 +56048,6 @@ OUI:0060B5* OUI:006027* ID_OUI_FROM_DATABASE=Superior Modular Products -OUI:0060DC* - ID_OUI_FROM_DATABASE=Toyo Network Systems & System Integration Co. LTD - OUI:0060C1* ID_OUI_FROM_DATABASE=WaveSpan Corporation @@ -55058,9 +56381,6 @@ OUI:00A0FA* OUI:00A014* ID_OUI_FROM_DATABASE=CSIR -OUI:00A045* - ID_OUI_FROM_DATABASE=PHOENIX CONTACT GMBH & CO. - OUI:00A064* ID_OUI_FROM_DATABASE=KVB/ANALECT @@ -55427,9 +56747,6 @@ OUI:00C02C* OUI:00C0ED* ID_OUI_FROM_DATABASE=US ARMY ELECTRONIC -OUI:00C0F0* - ID_OUI_FROM_DATABASE=KINGSTON TECHNOLOGY CORP. - OUI:00C0D1* ID_OUI_FROM_DATABASE=COMTREE TECHNOLOGY CORPORATION @@ -55886,9 +57203,6 @@ OUI:00006F* OUI:00005A* ID_OUI_FROM_DATABASE=SysKonnect GmbH -OUI:0000C9* - ID_OUI_FROM_DATABASE=Emulex Corporation - OUI:000023* ID_OUI_FROM_DATABASE=ABB INDUSTRIAL SYSTEMS AB @@ -56231,12 +57545,6 @@ OUI:70F1A1* OUI:6CFAA7* ID_OUI_FROM_DATABASE=AMPAK Technology, Inc. -OUI:0015C1* - ID_OUI_FROM_DATABASE=Sony Computer Entertainment Inc. - -OUI:0019C5* - ID_OUI_FROM_DATABASE=Sony Computer Entertainment Inc. - OUI:0024EF* ID_OUI_FROM_DATABASE=Sony Mobile Communications AB @@ -56246,9 +57554,6 @@ OUI:6C0E0D* OUI:B4527D* ID_OUI_FROM_DATABASE=Sony Mobile Communications AB -OUI:280DFC* - ID_OUI_FROM_DATABASE=Sony Corporation - OUI:E063E5* ID_OUI_FROM_DATABASE=Sony Mobile Communications AB @@ -56459,54 +57764,9 @@ OUI:000DB6* OUI:18C086* ID_OUI_FROM_DATABASE=Broadcom -OUI:80ACAC* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:003146* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:000585* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:F01C2D* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:5C4527* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:44F477* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:CCE17F* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:3C6104* - ID_OUI_FROM_DATABASE=Juniper Networks - OUI:C03E0F* ID_OUI_FROM_DATABASE=BSkyB Ltd -OUI:54E032* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:78FE3D* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:F8C001* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:50C58D* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:0024DC* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:001F12* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:0019E2* - ID_OUI_FROM_DATABASE=Juniper Networks - OUI:0020D4* ID_OUI_FROM_DATABASE=Cabletron Systems, Inc. @@ -56684,9 +57944,6 @@ OUI:14C126* OUI:4C2578* ID_OUI_FROM_DATABASE=Nokia Corporation -OUI:001EA4* - ID_OUI_FROM_DATABASE=Nokia Danmark A/S - OUI:001262* ID_OUI_FROM_DATABASE=Nokia Danmark A/S @@ -56696,21 +57953,375 @@ OUI:00174B* OUI:002547* ID_OUI_FROM_DATABASE=Nokia Danmark A/S -OUI:001DE9* - ID_OUI_FROM_DATABASE=Nokia Danmark A/S - OUI:001D3B* ID_OUI_FROM_DATABASE=Nokia Danmark A/S OUI:0014A7* ID_OUI_FROM_DATABASE=Nokia Danmark A/S +OUI:001EA4* + ID_OUI_FROM_DATABASE=Nokia Danmark A/S + OUI:001CD6* ID_OUI_FROM_DATABASE=Nokia Danmark A/S +OUI:001DE9* + ID_OUI_FROM_DATABASE=Nokia Danmark A/S + OUI:D099D5* ID_OUI_FROM_DATABASE=Alcatel-Lucent +OUI:DC0077* + ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. + +OUI:0060DC* + ID_OUI_FROM_DATABASE=NEC Magnus Communications,Ltd. + +OUI:9CAED3* + ID_OUI_FROM_DATABASE=Seiko Epson Corporation + +OUI:F45C89* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:A41588* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:8C3C4A* + ID_OUI_FROM_DATABASE=NAKAYO TELECOMMUNICATIONS,INC + +OUI:0021FD* + ID_OUI_FROM_DATABASE=LACROIX TRAFFIC S.A.U + +OUI:4CB44A* + ID_OUI_FROM_DATABASE=NANOWAVE Technologies Inc. + +OUI:78C3E9* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:9C5C8E* + ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC. + +OUI:102AB3* + ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd + +OUI:70884D* + ID_OUI_FROM_DATABASE=JAPAN RADIO CO., LTD. + +OUI:4C55CC* + ID_OUI_FROM_DATABASE=Zentri Pty Ltd + +OUI:BCEC5D* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:DC415F* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:30636B* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:280DFC* + ID_OUI_FROM_DATABASE=Sony Computer Entertainment Inc. + +OUI:84683E* + ID_OUI_FROM_DATABASE=Intel Corporate + +OUI:C88722* + ID_OUI_FROM_DATABASE=Lumenpulse + +OUI:FC1A11* + ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd. + +OUI:30A9DE* + ID_OUI_FROM_DATABASE=LG Innotek + +OUI:702526* + ID_OUI_FROM_DATABASE=Alcatel-Lucent + +OUI:903AA0* + ID_OUI_FROM_DATABASE=Alcatel-Lucent + +OUI:E0CDFD* + ID_OUI_FROM_DATABASE=Beijing E3Control Technology Co, LTD + +OUI:BC52B4* + ID_OUI_FROM_DATABASE=Alcatel-Lucent + +OUI:08BE77* + ID_OUI_FROM_DATABASE=Green Electronics + +OUI:208B37* + ID_OUI_FROM_DATABASE=Skyworth Digital Technology(Shenzhen) Co.,Ltd + +OUI:280C28* + ID_OUI_FROM_DATABASE=Unigen DataStorage Corporation + +OUI:980CA5* + ID_OUI_FROM_DATABASE=Motorola (Wuhan) Mobility Technologies Communication Co., Ltd. + +OUI:1CC035* + ID_OUI_FROM_DATABASE=PLANEX COMMUNICATIONS INC. + +OUI:34543C* + ID_OUI_FROM_DATABASE=TAKAOKA TOKO CO.,LTD. + +OUI:D49524* + ID_OUI_FROM_DATABASE=Clover Network, Inc. + +OUI:0034DA* + ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications) + +OUI:9046A2* + ID_OUI_FROM_DATABASE=Tedipay UK Ltd + +OUI:6479A7* + ID_OUI_FROM_DATABASE=Phison Electronics Corp. + +OUI:0019C5* + ID_OUI_FROM_DATABASE=Sony Computer Entertainment Inc. + +OUI:0015C1* + ID_OUI_FROM_DATABASE=Sony Computer Entertainment Inc. + +OUI:C83870* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:288335* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:44783E* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:202D07* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:FC2FAA* + ID_OUI_FROM_DATABASE=Alcatel-Lucent + +OUI:D4612E* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:1C6758* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:0452C7* + ID_OUI_FROM_DATABASE=Bose Corporation + +OUI:E85659* + ID_OUI_FROM_DATABASE=Advanced-Connectek Inc. + +OUI:34E70B* + ID_OUI_FROM_DATABASE=Beijing HAN Networks Co., Ltd + +OUI:8801F2* + ID_OUI_FROM_DATABASE=Vitec System Engineering Inc. + +OUI:FC084A* + ID_OUI_FROM_DATABASE=FUJITSU LIMITED + +OUI:847BEB* + ID_OUI_FROM_DATABASE=Dell Inc. + +OUI:F8C96C* + ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD + +OUI:34BF90* + ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD + +OUI:D467E7* + ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD + +OUI:04C1B9* + ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD + +OUI:689361* + ID_OUI_FROM_DATABASE=Integrated Device Technology (Malaysia) Sdn. Bhd. + +OUI:D4AD2D* + ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD + +OUI:48555F* + ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD + +OUI:04A316* + ID_OUI_FROM_DATABASE=Texas Instruments + +OUI:98072D* + ID_OUI_FROM_DATABASE=Texas Instruments + +OUI:A082AC* + ID_OUI_FROM_DATABASE=Linear DMS Solutions Sdn. Bhd. + +OUI:705A9E* + ID_OUI_FROM_DATABASE=Technicolor CH USA Inc. + +OUI:002697* + ID_OUI_FROM_DATABASE=Alpha Technologies Inc. + +OUI:4CB8B5* + ID_OUI_FROM_DATABASE=Shenzhen YOUHUA Technology Co., Ltd + +OUI:1CABC0* + ID_OUI_FROM_DATABASE=Hitron Technologies. Inc + +OUI:84E323* + ID_OUI_FROM_DATABASE=Green Wave Telecommunication SDN BHD + +OUI:7071BC* + ID_OUI_FROM_DATABASE=PEGATRON CORPORATION + +OUI:44650D* + ID_OUI_FROM_DATABASE=Amazon Technologies Inc. + +OUI:E06995* + ID_OUI_FROM_DATABASE=PEGATRON CORPORATION + +OUI:D897BA* + ID_OUI_FROM_DATABASE=PEGATRON CORPORATION + +OUI:54D9E4* + ID_OUI_FROM_DATABASE=BRILLIANTTS CO., LTD + +OUI:E4F3F5* + ID_OUI_FROM_DATABASE=SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD. + +OUI:00185C* + ID_OUI_FROM_DATABASE=EDSLAB Technologies + +OUI:000E2E* + ID_OUI_FROM_DATABASE=Edimax Technology Co. Ltd. + +OUI:00020E* + ID_OUI_FROM_DATABASE=ECI Telecom Ltd. + +OUI:0000C9* + ID_OUI_FROM_DATABASE=Emulex Corporation + +OUI:00115B* + ID_OUI_FROM_DATABASE=Elitegroup Computer Systems Co.,Ltd. + +OUI:000795* + ID_OUI_FROM_DATABASE=Elitegroup Computer Systems Co.,Ltd. + +OUI:B8AEED* + ID_OUI_FROM_DATABASE=Elitegroup Computer Systems Co.,Ltd. + +OUI:C03FD5* + ID_OUI_FROM_DATABASE=Elitegroup Computer Systems Co.,Ltd. + +OUI:7427EA* + ID_OUI_FROM_DATABASE=Elitegroup Computer Systems Co.,Ltd. + +OUI:00089F* + ID_OUI_FROM_DATABASE=EFM Networks + +OUI:042AE2* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:001A45* + ID_OUI_FROM_DATABASE=GN Netcom A/S + +OUI:00168F* + ID_OUI_FROM_DATABASE=GN Netcom A/S + +OUI:00104F* + ID_OUI_FROM_DATABASE=Oracle Corporation + +OUI:000782* + ID_OUI_FROM_DATABASE=Oracle Corporation + +OUI:083FBC* + ID_OUI_FROM_DATABASE=zte corporation + +OUI:903809* + ID_OUI_FROM_DATABASE=Ericsson AB + +OUI:1C1B0D* + ID_OUI_FROM_DATABASE=GIGA-BYTE TECHNOLOGY CO.,LTD. + +OUI:E42F56* + ID_OUI_FROM_DATABASE=OptoMET GmbH + +OUI:00A045* + ID_OUI_FROM_DATABASE=PHOENIX CONTACT Electronics GmbH + +OUI:00266C* + ID_OUI_FROM_DATABASE=INVENTEC Corporation + +OUI:001E25* + ID_OUI_FROM_DATABASE=INTEK DIGITAL + +OUI:A0B662* + ID_OUI_FROM_DATABASE=Acutvista Innovation Co., Ltd. + +OUI:00C0F0* + ID_OUI_FROM_DATABASE=Kingston Technology Company, Inc. + +OUI:4C8FA5* + ID_OUI_FROM_DATABASE=Jastec + +OUI:000C49* + ID_OUI_FROM_DATABASE=Dangaard Telecom Denmark A/S + +OUI:CCE17F* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:44F477* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:5C4527* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:F01C2D* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:F8C001* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:78FE3D* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:54E032* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:3C6104* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:0019E2* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:001F12* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:0024DC* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:50C58D* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:000585* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:003146* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:80ACAC* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:BC7574* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:20A680* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:50DD4F* + ID_OUI_FROM_DATABASE=Automation Components, Inc + +OUI:904D4A* + ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS + +OUI:7C79E8* + ID_OUI_FROM_DATABASE=PayRange Inc. + OUI:2C3996* ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS @@ -57812,9 +59423,6 @@ OUI:98E848* OUI:A0F9E0* ID_OUI_FROM_DATABASE=VIVATEL COMPANY LIMITED -OUI:0C54B9* - ID_OUI_FROM_DATABASE=Alcatel-Lucent - OUI:F8C372* ID_OUI_FROM_DATABASE=TSUZUKI DENKI @@ -58118,9 +59726,6 @@ OUI:3C8375* OUI:C8458F* ID_OUI_FROM_DATABASE=Wyler AG -OUI:74852A* - ID_OUI_FROM_DATABASE=PEGATRON CORPORATION - OUI:149A10* ID_OUI_FROM_DATABASE=Microsoft Corporation @@ -58592,9 +60197,6 @@ OUI:E4F4C6* OUI:DC663A* ID_OUI_FROM_DATABASE=Apacer Technology Inc. -OUI:FCF152* - ID_OUI_FROM_DATABASE=Sony Corporation - OUI:B009D3* ID_OUI_FROM_DATABASE=Avizia @@ -58640,9 +60242,6 @@ OUI:D896E0* OUI:300D2A* ID_OUI_FROM_DATABASE=Zhejiang Wellcom Technology Co.,Ltd. -OUI:C4084A* - ID_OUI_FROM_DATABASE=Alcatel-Lucent - OUI:8496D8* ID_OUI_FROM_DATABASE=Pace plc @@ -58688,9 +60287,6 @@ OUI:345D10* OUI:58E326* ID_OUI_FROM_DATABASE=Compass Technologies Inc. -OUI:F08CFB* - ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Tech.Co.,Ltd. - OUI:848DC7* ID_OUI_FROM_DATABASE=Cisco SPVTG @@ -58820,9 +60416,6 @@ OUI:E0DB88* OUI:D86194* ID_OUI_FROM_DATABASE=Objetivos y Sevicios de Valor Añadido -OUI:FCF8B7* - ID_OUI_FROM_DATABASE=TRONTEQ Electronic - OUI:589CFC* ID_OUI_FROM_DATABASE=FreeBSD Foundation @@ -58832,9 +60425,6 @@ OUI:602103* OUI:085DDD* ID_OUI_FROM_DATABASE=Mercury Corporation -OUI:88B1E1* - ID_OUI_FROM_DATABASE=AirTight Networks, Inc. - OUI:98349D* ID_OUI_FROM_DATABASE=Krauss Maffei Technologies GmbH @@ -58922,9 +60512,6 @@ OUI:9486D4* OUI:F89550* ID_OUI_FROM_DATABASE=Proton Products Chengdu Ltd -OUI:943BB1* - ID_OUI_FROM_DATABASE=KAONMEDIA - OUI:447BC4* ID_OUI_FROM_DATABASE=DualShine Technology(SZ)Co.,Ltd @@ -59618,9 +61205,6 @@ OUI:5809E5* OUI:74ECF1* ID_OUI_FROM_DATABASE=Acumen -OUI:649968* - ID_OUI_FROM_DATABASE=Elentec - OUI:6815D3* ID_OUI_FROM_DATABASE=Zaklady Elektroniki i Mechaniki Precyzyjnej R&G S.A. @@ -60161,9 +61745,6 @@ OUI:F4044C* OUI:1CBBA8* ID_OUI_FROM_DATABASE=OJSC Ufimskiy Zavod Promsvyaz -OUI:34AA99* - ID_OUI_FROM_DATABASE=Alcatel-Lucent - OUI:506028* ID_OUI_FROM_DATABASE=Xirrus Inc. @@ -60212,9 +61793,6 @@ OUI:10F96F* OUI:B01C91* ID_OUI_FROM_DATABASE=Elim Co -OUI:ECA86B* - ID_OUI_FROM_DATABASE=ELITEGROUP COMPUTER SYSTEMS CO., LTD. - OUI:0CA2F4* ID_OUI_FROM_DATABASE=Chameleon Technology (UK) Limited @@ -60458,15 +62036,9 @@ OUI:4C0289* OUI:C0E54E* ID_OUI_FROM_DATABASE=DENX Computer Systems GmbH -OUI:386077* - ID_OUI_FROM_DATABASE=PEGATRON CORPORATION - OUI:E435FB* ID_OUI_FROM_DATABASE=Sabre Technology (Hull) Ltd -OUI:146308* - ID_OUI_FROM_DATABASE=JABIL CIRCUIT (SHANGHAI) LTD. - OUI:28BE9B* ID_OUI_FROM_DATABASE=Technicolor USA Inc. @@ -60497,9 +62069,6 @@ OUI:68F125* OUI:706F81* ID_OUI_FROM_DATABASE=Private -OUI:9CDF03* - ID_OUI_FROM_DATABASE=Harman/Becker Automotive Systems GmbH - OUI:30E4DB* ID_OUI_FROM_DATABASE=Cisco Systems, Inc @@ -61394,9 +62963,6 @@ OUI:94592D* OUI:9CC077* ID_OUI_FROM_DATABASE=PrintCounts, LLC -OUI:4487FC* - ID_OUI_FROM_DATABASE=ELITEGROUP COMPUTER SYSTEM CO., LTD. - OUI:A85BB0* ID_OUI_FROM_DATABASE=Shenzhen Dehoo Technology Co.,Ltd @@ -61814,9 +63380,6 @@ OUI:0026FE* OUI:0026F8* ID_OUI_FROM_DATABASE=Golden Highway Industry Development Co., Ltd. -OUI:0026F7* - ID_OUI_FROM_DATABASE=Infosys Technologies Ltd. - OUI:0026F1* ID_OUI_FROM_DATABASE=ProCurve Networking by HP @@ -62306,9 +63869,6 @@ OUI:00237A* OUI:002377* ID_OUI_FROM_DATABASE=Isotek Electronics Ltd -OUI:002378* - ID_OUI_FROM_DATABASE=GN Netcom A/S - OUI:002371* ID_OUI_FROM_DATABASE=SOAM Systel @@ -62396,9 +63956,6 @@ OUI:0021A5* OUI:00219F* ID_OUI_FROM_DATABASE=SATEL OY -OUI:002197* - ID_OUI_FROM_DATABASE=ELITEGROUP COMPUTER SYSTEM - OUI:00218A* ID_OUI_FROM_DATABASE=Electronic Design and Manufacturing Company @@ -62978,9 +64535,6 @@ OUI:001BFF* OUI:001BFA* ID_OUI_FROM_DATABASE=G.i.N. mbH -OUI:001BF3* - ID_OUI_FROM_DATABASE=TRANSRADIO SenderSysteme Berlin AG - OUI:001BE3* ID_OUI_FROM_DATABASE=Health Hero Network, Inc. @@ -63758,9 +65312,6 @@ OUI:0015FB* OUI:0015F6* ID_OUI_FROM_DATABASE=SCIENCE AND ENGINEERING SERVICES, INC. -OUI:00177D* - ID_OUI_FROM_DATABASE=IDT International Limited - OUI:001782* ID_OUI_FROM_DATABASE=LoBenn Inc. @@ -65366,9 +66917,6 @@ OUI:000B2D* OUI:000ABB* ID_OUI_FROM_DATABASE=Taiwan Secom Co,. Ltd -OUI:000AC2* - ID_OUI_FROM_DATABASE=FiberHome Telecommunication Technologies CO.,LTD - OUI:000AC7* ID_OUI_FROM_DATABASE=Unication Group @@ -65996,9 +67544,6 @@ OUI:0005AB* OUI:000588* ID_OUI_FROM_DATABASE=Sensoria Corp. -OUI:000594* - ID_OUI_FROM_DATABASE=HMS Technology Center Ravensburg GmbH - OUI:00058E* ID_OUI_FROM_DATABASE=Flextronics International GmbH & Co. Nfg. KG @@ -66602,9 +68147,6 @@ OUI:000168* OUI:000174* ID_OUI_FROM_DATABASE=CyberOptics Corporation -OUI:00015D* - ID_OUI_FROM_DATABASE=Oracle Corporation - OUI:000164* ID_OUI_FROM_DATABASE=Cisco Systems, Inc @@ -66968,9 +68510,6 @@ OUI:00D012* OUI:00D092* ID_OUI_FROM_DATABASE=GLENAYRE WESTERN MULTIPLEX -OUI:00D0EC* - ID_OUI_FROM_DATABASE=NAKAYO TELECOMMUNICATIONS, INC - OUI:00D0C5* ID_OUI_FROM_DATABASE=COMPUTATIONAL SYSTEMS, INC. @@ -67100,9 +68639,6 @@ OUI:009019* OUI:0090DC* ID_OUI_FROM_DATABASE=TECO INFORMATION SYSTEMS -OUI:00D0A2* - ID_OUI_FROM_DATABASE=INTEGRATED DEVICE - OUI:00D0AE* ID_OUI_FROM_DATABASE=ORESIS COMMUNICATIONS, INC. @@ -67196,9 +68732,6 @@ OUI:00900A* OUI:00904E* ID_OUI_FROM_DATABASE=DELEM BV -OUI:009050* - ID_OUI_FROM_DATABASE=TELESTE OY - OUI:00904A* ID_OUI_FROM_DATABASE=CONCUR SYSTEM TECHNOLOGIES @@ -67406,9 +68939,6 @@ OUI:009020* OUI:009065* ID_OUI_FROM_DATABASE=FINISAR CORPORATION -OUI:001035* - ID_OUI_FROM_DATABASE=ELITEGROUP COMPUTER SYSTEMS CO., LTD - OUI:001053* ID_OUI_FROM_DATABASE=COMPUTER TECHNOLOGY CORP. @@ -67508,9 +69038,6 @@ OUI:001008* OUI:0010CC* ID_OUI_FROM_DATABASE=CLP COMPUTER LOGISTIK PLANUNG GmbH -OUI:00109B* - ID_OUI_FROM_DATABASE=Emulex Corporation - OUI:001094* ID_OUI_FROM_DATABASE=Performance Analysis Broadband, Spirent plc @@ -67715,9 +69242,6 @@ OUI:0060AF* OUI:00601F* ID_OUI_FROM_DATABASE=STALLION TECHNOLOGIES -OUI:0060B1* - ID_OUI_FROM_DATABASE=INPUT/OUTPUT, INC. - OUI:00608F* ID_OUI_FROM_DATABASE=TEKRAM TECHNOLOGY CO., LTD. @@ -67811,9 +69335,6 @@ OUI:00E011* OUI:00E021* ID_OUI_FROM_DATABASE=FREEGATE CORP. -OUI:00E0D5* - ID_OUI_FROM_DATABASE=Emulex Corporation - OUI:00E0AB* ID_OUI_FROM_DATABASE=DIMAT S.A. @@ -67937,9 +69458,6 @@ OUI:0020A7* OUI:0020DA* ID_OUI_FROM_DATABASE=Alcatel North America ESD -OUI:0020F2* - ID_OUI_FROM_DATABASE=Oracle Corporation - OUI:002005* ID_OUI_FROM_DATABASE=SIMPLE TECHNOLOGY @@ -68057,9 +69575,6 @@ OUI:0020A2* OUI:002098* ID_OUI_FROM_DATABASE=HECTRONIC AB -OUI:00208F* - ID_OUI_FROM_DATABASE=ECI TELECOM LTD. - OUI:002065* ID_OUI_FROM_DATABASE=SUPERNET NETWORKING INC. @@ -68087,9 +69602,6 @@ OUI:0020E8* OUI:00204F* ID_OUI_FROM_DATABASE=DEUTSCHE AEROSPACE AG -OUI:002088* - ID_OUI_FROM_DATABASE=GLOBAL VILLAGE COMMUNICATION - OUI:00202E* ID_OUI_FROM_DATABASE=DAYSTAR DIGITAL @@ -68567,9 +70079,6 @@ OUI:008059* OUI:00806B* ID_OUI_FROM_DATABASE=SCHMID TELECOMMUNICATION -OUI:0080B8* - ID_OUI_FROM_DATABASE=B.U.G. MORISEIKI, INCORPORATED - OUI:00802C* ID_OUI_FROM_DATABASE=THE SAGE GROUP PLC @@ -68795,9 +70304,6 @@ OUI:080042* OUI:026086* ID_OUI_FROM_DATABASE=LOGIC REPLACEMENT TECH. LTD. -OUI:08000D* - ID_OUI_FROM_DATABASE=INTERNATIONAL COMPUTERS LTD. - OUI:00DD05* ID_OUI_FROM_DATABASE=UNGERMANN-BASS INC. @@ -69149,9 +70655,6 @@ OUI:ACD074* OUI:D05349* ID_OUI_FROM_DATABASE=Liteon Technology Corporation -OUI:0025DC* - ID_OUI_FROM_DATABASE=Sumitomo Electric Industries,Ltd - OUI:00BB3A* ID_OUI_FROM_DATABASE=Private @@ -69167,9 +70670,6 @@ OUI:00014A* OUI:001CA4* ID_OUI_FROM_DATABASE=Sony Mobile Communications AB -OUI:00248D* - ID_OUI_FROM_DATABASE=Sony Computer Entertainment Inc. - OUI:002345* ID_OUI_FROM_DATABASE=Sony Mobile Communications AB @@ -69350,54 +70850,18 @@ OUI:001BA9* OUI:0011B6* ID_OUI_FROM_DATABASE=Open Systems International -OUI:002283* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:2C6BF5* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:64649B* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:541E56* - ID_OUI_FROM_DATABASE=Juniper Networks - OUI:E03E44* ID_OUI_FROM_DATABASE=Broadcom OUI:D40129* ID_OUI_FROM_DATABASE=Broadcom -OUI:544B8C* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:84B59C* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:100E7E* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:288A1C* - ID_OUI_FROM_DATABASE=Juniper Networks - OUI:FCB698* ID_OUI_FROM_DATABASE=Cambridge Industries(Group) Co.,Ltd. -OUI:3C94D5* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:B0A86E* - ID_OUI_FROM_DATABASE=Juniper Networks - -OUI:AC4BC8* - ID_OUI_FROM_DATABASE=Juniper Networks - OUI:00E03A* ID_OUI_FROM_DATABASE=Cabletron Systems, Inc. -OUI:002159* - ID_OUI_FROM_DATABASE=Juniper Networks - OUI:000117* ID_OUI_FROM_DATABASE=Canal + @@ -69605,9 +71069,6 @@ OUI:00BD3A* OUI:A04E04* ID_OUI_FROM_DATABASE=Nokia Corporation -OUI:001CFC* - ID_OUI_FROM_DATABASE=Sumitomo Electric Industries,Ltd - OUI:001370* ID_OUI_FROM_DATABASE=Nokia Danmark A/S @@ -69646,3 +71107,339 @@ OUI:0026CC* OUI:240B0A* ID_OUI_FROM_DATABASE=Palo Alto Networks + +OUI:C4E510* + ID_OUI_FROM_DATABASE=Mechatro, Inc. + +OUI:74C330* + ID_OUI_FROM_DATABASE=SHENZHEN FAST TECHNOLOGIES CO.,LTD + +OUI:403F8C* + ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. + +OUI:14C3C2* + ID_OUI_FROM_DATABASE=K.A. Schmersal GmbH & Co. KG + +OUI:10785B* + ID_OUI_FROM_DATABASE=Actiontec Electronics, Inc + +OUI:20768F* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:C0C522* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +OUI:9C5CF9* + ID_OUI_FROM_DATABASE=Sony Mobile Communications AB + +OUI:88A084* + ID_OUI_FROM_DATABASE=Formation Data Systems + +OUI:0025DC* + ID_OUI_FROM_DATABASE=Sumitomo Electric Industries,Ltd + +OUI:001CFC* + ID_OUI_FROM_DATABASE=Sumitomo Electric Industries,Ltd + +OUI:00D0EC* + ID_OUI_FROM_DATABASE=NAKAYO TELECOMMUNICATIONS,INC + +OUI:8CC661* + ID_OUI_FROM_DATABASE=Current, powered by GE + +OUI:009050* + ID_OUI_FROM_DATABASE=Teleste Corporation + +OUI:BC44B0* + ID_OUI_FROM_DATABASE=Elastifile + +OUI:7864E6* + ID_OUI_FROM_DATABASE=Green Motive Technology Limited + +OUI:743E2B* + ID_OUI_FROM_DATABASE=Ruckus Wireless + +OUI:C0CCF8* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:80ED2C* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:E8B2AC* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:FCF152* + ID_OUI_FROM_DATABASE=Sony Computer Entertainment Inc. + +OUI:0080B8* + ID_OUI_FROM_DATABASE=DMG MORI B.U.G. CO., LTD. + +OUI:8489AD* + ID_OUI_FROM_DATABASE=Apple, Inc. + +OUI:40B688* + ID_OUI_FROM_DATABASE=LEGIC Identsystems AG + +OUI:A09D91* + ID_OUI_FROM_DATABASE=SoundBridge + +OUI:30785C* + ID_OUI_FROM_DATABASE=Partow Tamas Novin (Parman) + +OUI:0C54B9* + ID_OUI_FROM_DATABASE=Alcatel-Lucent + +OUI:C4084A* + ID_OUI_FROM_DATABASE=Alcatel-Lucent + +OUI:34AA99* + ID_OUI_FROM_DATABASE=Alcatel-Lucent + +OUI:441102* + ID_OUI_FROM_DATABASE=EDMI Europe Ltd + +OUI:2C21D7* + ID_OUI_FROM_DATABASE=IMAX Corporation + +OUI:0026F7* + ID_OUI_FROM_DATABASE=Nivetti Systems Pvt. Ltd. + +OUI:24C3F9* + ID_OUI_FROM_DATABASE=Securitas Direct AB + +OUI:DC4D23* + ID_OUI_FROM_DATABASE=MRV Comunications + +OUI:085BDA* + ID_OUI_FROM_DATABASE=CliniCare LTD + +OUI:00248D* + ID_OUI_FROM_DATABASE=Sony Computer Entertainment Inc. + +OUI:0C5A9E* + ID_OUI_FROM_DATABASE=Wi-SUN Alliance + +OUI:00C164* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:10D0AB* + ID_OUI_FROM_DATABASE=zte corporation + +OUI:C4BED4* + ID_OUI_FROM_DATABASE=Avaya Inc + +OUI:98E7F5* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:24BCF8* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:042DB4* + ID_OUI_FROM_DATABASE=First Property (Beijing) Co., Ltd Modern MOMA Branch + +OUI:202DF8* + ID_OUI_FROM_DATABASE=Digital Media Cartridge Ltd. + +OUI:008A96* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:007888* + ID_OUI_FROM_DATABASE=Cisco Systems, Inc + +OUI:98DED0* + ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. + +OUI:30FC68* + ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. + +OUI:5CCA1A* + ID_OUI_FROM_DATABASE=Microsoft Mobile Oy + +OUI:000594* + ID_OUI_FROM_DATABASE=HMS Industrial Networks + +OUI:000AC2* + ID_OUI_FROM_DATABASE=Wuhan FiberHome Digital Technology Co.,Ltd. + +OUI:F08CFB* + ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD + +OUI:FCF8B7* + ID_OUI_FROM_DATABASE=TRONTEQ Electronic + +OUI:D4F207* + ID_OUI_FROM_DATABASE=DIAODIAO(Beijing)Technology CO.,Ltd + +OUI:D4883F* + ID_OUI_FROM_DATABASE=HDPRO CO., LTD. + +OUI:FC0F4B* + ID_OUI_FROM_DATABASE=Texas Instruments + +OUI:A86AC1* + ID_OUI_FROM_DATABASE=HanbitEDS Co., Ltd. + +OUI:40163B* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +OUI:001BF3* + ID_OUI_FROM_DATABASE=TRANSRADIO SenderSysteme Berlin AG + +OUI:E0071B* + ID_OUI_FROM_DATABASE=Hewlett Packard Enterprise + +OUI:88B1E1* + ID_OUI_FROM_DATABASE=Mojo Networks, Inc. + +OUI:74DFBF* + ID_OUI_FROM_DATABASE=Liteon Technology Corporation + +OUI:FC3F7C* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:608334* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:84AD58* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +OUI:746FF7* + ID_OUI_FROM_DATABASE=Wistron Neweb Corporation + +OUI:B01BD2* + ID_OUI_FROM_DATABASE=Le Shi Zhi Xin Electronic Technology (Tianjin) Limited + +OUI:386077* + ID_OUI_FROM_DATABASE=PEGATRON CORPORATION + +OUI:74852A* + ID_OUI_FROM_DATABASE=PEGATRON CORPORATION + +OUI:60B4F7* + ID_OUI_FROM_DATABASE=Plume Design Inc + +OUI:A4D8CA* + ID_OUI_FROM_DATABASE=HONG KONG WATER WORLD TECHNOLOGY CO. LIMITED + +OUI:ECA86B* + ID_OUI_FROM_DATABASE=Elitegroup Computer Systems Co.,Ltd. + +OUI:4487FC* + ID_OUI_FROM_DATABASE=Elitegroup Computer Systems Co.,Ltd. + +OUI:002197* + ID_OUI_FROM_DATABASE=Elitegroup Computer Systems Co.,Ltd. + +OUI:649968* + ID_OUI_FROM_DATABASE=Elentec + +OUI:00109B* + ID_OUI_FROM_DATABASE=Emulex Corporation + +OUI:00E0D5* + ID_OUI_FROM_DATABASE=Emulex Corporation + +OUI:001035* + ID_OUI_FROM_DATABASE=Elitegroup Computer Systems Co.,Ltd. + +OUI:9CDF03* + ID_OUI_FROM_DATABASE=Harman/Becker Automotive Systems GmbH + +OUI:00208F* + ID_OUI_FROM_DATABASE=ECI Telecom Ltd. + +OUI:F0407B* + ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD + +OUI:94885E* + ID_OUI_FROM_DATABASE=Surfilter Network Technology Co., Ltd. + +OUI:002378* + ID_OUI_FROM_DATABASE=GN Netcom A/S + +OUI:002088* + ID_OUI_FROM_DATABASE=GLOBAL VILLAGE COMMUNICATION + +OUI:BC6A44* + ID_OUI_FROM_DATABASE=Commend International GmbH + +OUI:90C7D8* + ID_OUI_FROM_DATABASE=zte corporation + +OUI:F8DA0C* + ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. + +OUI:0020F2* + ID_OUI_FROM_DATABASE=Oracle Corporation + +OUI:00015D* + ID_OUI_FROM_DATABASE=Oracle Corporation + +OUI:943BB1* + ID_OUI_FROM_DATABASE=Kaonmedia CO., LTD. + +OUI:146308* + ID_OUI_FROM_DATABASE=JABIL CIRCUIT (SHANGHAI) LTD. + +OUI:08000D* + ID_OUI_FROM_DATABASE=International Computers, Ltd + +OUI:00D0A2* + ID_OUI_FROM_DATABASE=INTEGRATED DEVICE + +OUI:0060B1* + ID_OUI_FROM_DATABASE=Input/Output, Inc. + +OUI:00177D* + ID_OUI_FROM_DATABASE=IDT Technology Limited + +OUI:AC4BC8* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:B0A86E* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:3C94D5* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:288A1C* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:100E7E* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:84B59C* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:544B8C* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:541E56* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:64649B* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:2C6BF5* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:002283* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:F4CC55* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:EC13DB* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:002159* + ID_OUI_FROM_DATABASE=Juniper Networks + +OUI:5C70A3* + ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications) + +OUI:3497F6* + ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC. + +OUI:50680A* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD diff --git a/hwdb/20-pci-vendor-model.hwdb b/hwdb/20-pci-vendor-model.hwdb index 695409086a..91c784b891 100644 --- a/hwdb/20-pci-vendor-model.hwdb +++ b/hwdb/20-pci-vendor-model.hwdb @@ -1016,6 +1016,9 @@ pci:v00001000d0000005Fsv00001028sd00001F4D* pci:v00001000d0000005Fsv00001054sd0000306A* ID_MODEL_FROM_DATABASE=MegaRAID SAS-3 3008 [Fury] (SAS 3004 iMR ROMB) +pci:v00001000d0000005Fsv00001D49sd000004DB* + ID_MODEL_FROM_DATABASE=MegaRAID SAS-3 3008 [Fury] (ServeRAID M1210 SAS/SATA Controller) + pci:v00001000d00000060* ID_MODEL_FROM_DATABASE=MegaRAID SAS 1078 @@ -4496,6 +4499,24 @@ pci:v00001002d0000665Fsv00001682sd00007360* pci:v00001002d00006660* ID_MODEL_FROM_DATABASE=Sun XT [Radeon HD 8670A/8670M/8690M / R5 M330] +pci:v00001002d00006660sv00001028sd000005EA* + ID_MODEL_FROM_DATABASE=Sun XT [Radeon HD 8670A/8670M/8690M / R5 M330] (Radeon HD 8670M) + +pci:v00001002d00006660sv00001028sd000006BF* + ID_MODEL_FROM_DATABASE=Sun XT [Radeon HD 8670A/8670M/8690M / R5 M330] (Radeon R5 M335) + +pci:v00001002d00006660sv0000103Csd00001970* + ID_MODEL_FROM_DATABASE=Sun XT [Radeon HD 8670A/8670M/8690M / R5 M330] (Radeon HD 8670M) + +pci:v00001002d00006660sv0000103Csd000080BE* + ID_MODEL_FROM_DATABASE=Sun XT [Radeon HD 8670A/8670M/8690M / R5 M330] (Radeon R5 M330) + +pci:v00001002d00006660sv0000103Csd00008136* + ID_MODEL_FROM_DATABASE=Sun XT [Radeon HD 8670A/8670M/8690M / R5 M330] (Radeon R5 M330) + +pci:v00001002d00006660sv000017AAsd00003804* + ID_MODEL_FROM_DATABASE=Sun XT [Radeon HD 8670A/8670M/8690M / R5 M330] (Radeon R5 M330) + pci:v00001002d00006660sv000017AAsd00003809* ID_MODEL_FROM_DATABASE=Sun XT [Radeon HD 8670A/8670M/8690M / R5 M330] (Radeon R5 M330) @@ -8199,7 +8220,10 @@ pci:v00001002d0000692F* ID_MODEL_FROM_DATABASE=Tonga XTV GL [FirePro S7150V] pci:v00001002d00006938* - ID_MODEL_FROM_DATABASE=Amethyst XT [Radeon R9 M295X Mac Edition] + ID_MODEL_FROM_DATABASE=Tonga XT / Amethyst XT [Radeon R9 380X / R9 M295X Mac Edition] + +pci:v00001002d00006938sv0000174Bsd0000E308* + ID_MODEL_FROM_DATABASE=Tonga XT / Amethyst XT [Radeon R9 380X / R9 M295X Mac Edition] (Radeon R9 380X Nitro 4G D5) pci:v00001002d00006939* ID_MODEL_FROM_DATABASE=Tonga PRO [Radeon R9 285/380] @@ -8207,6 +8231,9 @@ pci:v00001002d00006939* pci:v00001002d00006939sv0000148Csd00009380* ID_MODEL_FROM_DATABASE=Tonga PRO [Radeon R9 285/380] (Radeon R9 380) +pci:v00001002d00006939sv0000174Bsd0000E308* + ID_MODEL_FROM_DATABASE=Tonga PRO [Radeon R9 285/380] (Radeon R9 380 Nitro 4G D5) + pci:v00001002d0000700F* ID_MODEL_FROM_DATABASE=RS100 AGP Bridge @@ -9437,6 +9464,12 @@ pci:v00001002d00009918* pci:v00001002d00009919* ID_MODEL_FROM_DATABASE=Trinity [Radeon HD 7500G] +pci:v00001002d00009920* + ID_MODEL_FROM_DATABASE=Liverpool Graphics + +pci:v00001002d00009921* + ID_MODEL_FROM_DATABASE=Liverpool HDMI/DP Audio Controller + pci:v00001002d00009990* ID_MODEL_FROM_DATABASE=Trinity [Radeon HD 7520G] @@ -9575,6 +9608,12 @@ pci:v00001002d0000AAC0* pci:v00001002d0000AAC8* ID_MODEL_FROM_DATABASE=Hawaii HDMI Audio +pci:v00001002d0000AAD8* + ID_MODEL_FROM_DATABASE=Tonga HDMI Audio [Radeon R9 285/380] + +pci:v00001002d0000AAD8sv0000174Bsd0000AAD8* + ID_MODEL_FROM_DATABASE=Tonga HDMI Audio [Radeon R9 285/380] (Radeon R9 285/380 HDMI Audio) + pci:v00001002d0000AC00* ID_MODEL_FROM_DATABASE=Theater 600 Pro @@ -10820,7 +10859,7 @@ pci:v00001014d0000034Asv00001014sd000004C7* pci:v00001014d0000034Asv00001014sd000004C8* ID_MODEL_FROM_DATABASE=PCI-E IPR SAS Adapter (ASIC) (PCIe3 x 8 Cache SAS RAID Internal Adapter 6GB(2CD2)) -pci:v00001014d0000034Asv00001014sd00000C49* +pci:v00001014d0000034Asv00001014sd000004C9* ID_MODEL_FROM_DATABASE=PCI-E IPR SAS Adapter (ASIC) (PCIe3 x 8 Cache SAS RAID Internal Adapter 6GB(2CCD)) pci:v00001014d0000044B* @@ -10829,6 +10868,15 @@ pci:v00001014d0000044B* pci:v00001014d000004AA* ID_MODEL_FROM_DATABASE=Flash Adapter 90 (PCIe2 0.9TB) +pci:v00001014d000004DA* + ID_MODEL_FROM_DATABASE=PCI-E IPR SAS+ Adapter (ASIC) + +pci:v00001014d000004DAsv00001014sd000004FB* + ID_MODEL_FROM_DATABASE=PCI-E IPR SAS+ Adapter (ASIC) (PCIe3 x16 20GB Cache 12Gb Quad SAS RAID+ Adapter(580B)) + +pci:v00001014d000004DAsv00001014sd000004FC* + ID_MODEL_FROM_DATABASE=PCI-E IPR SAS+ Adapter (ASIC) (PCIe3 x8 12Gb Quad SAS RAID+ Adapter(580A)) + pci:v00001014d00003022* ID_MODEL_FROM_DATABASE=QLA3022 Network Adapter @@ -11165,6 +11213,15 @@ pci:v00001022d00001423* pci:v00001022d00001426* ID_MODEL_FROM_DATABASE=Family 15h (Models 30h-3fh) Processor Root Port +pci:v00001022d00001436* + ID_MODEL_FROM_DATABASE=Liverpool Processor Root Complex + +pci:v00001022d00001437* + ID_MODEL_FROM_DATABASE=Liverpool I/O Memory Management Unit + +pci:v00001022d00001438* + ID_MODEL_FROM_DATABASE=Liverpool Processor Root Port + pci:v00001022d00001439* ID_MODEL_FROM_DATABASE=Family 16h Processor Functions 5:1 @@ -15353,6 +15410,9 @@ pci:v0000104Cd0000803Bsv0000103Csd0000309F* pci:v0000104Cd0000803Bsv0000103Csd000030A3* ID_MODEL_FROM_DATABASE=5-in-1 Multimedia Card Reader (SD/MMC/MS/MS PRO/xD) (Compaq nw8440) +pci:v0000104Cd0000803Bsv0000104Dsd00008212* + ID_MODEL_FROM_DATABASE=5-in-1 Multimedia Card Reader (SD/MMC/MS/MS PRO/xD) (VAIO VGN-N21E) + pci:v0000104Cd0000803Bsv0000104Dsd0000902D* ID_MODEL_FROM_DATABASE=5-in-1 Multimedia Card Reader (SD/MMC/MS/MS PRO/xD) (VAIO VGN-NR120E) @@ -15446,6 +15506,9 @@ pci:v0000104Cd00008400sv000016ABsd00008501* pci:v0000104Cd00008401* ID_MODEL_FROM_DATABASE=ACX 100 22Mbps Wireless Interface +pci:v0000104Cd00008888* + ID_MODEL_FROM_DATABASE=Multicore DSP+ARM KeyStone II SOC + pci:v0000104Cd00009000* ID_MODEL_FROM_DATABASE=Wireless Interface (of unknown type) @@ -15812,6 +15875,30 @@ pci:v0000104Dd0000808A* pci:v0000104Dd000081CE* ID_MODEL_FROM_DATABASE=SxS Pro memory card +pci:v0000104Dd0000908F* + ID_MODEL_FROM_DATABASE=Aeolia ACPI + +pci:v0000104Dd0000909E* + ID_MODEL_FROM_DATABASE=Aeolia Ethernet Controller (Marvell Yukon 2 Family) + +pci:v0000104Dd0000909F* + ID_MODEL_FROM_DATABASE=Aeolia SATA AHCI Controller + +pci:v0000104Dd000090A0* + ID_MODEL_FROM_DATABASE=Aeolia SD/MMC Host Controller + +pci:v0000104Dd000090A1* + ID_MODEL_FROM_DATABASE=Aeolia PCI Express Glue and Miscellaneous Devices + +pci:v0000104Dd000090A2* + ID_MODEL_FROM_DATABASE=Aeolia DMA Controller + +pci:v0000104Dd000090A3* + ID_MODEL_FROM_DATABASE=Aeolia Memory (DDR3/SPM) + +pci:v0000104Dd000090A4* + ID_MODEL_FROM_DATABASE=Aeolia USB 3.0 xHCI Host Controller + pci:v0000104E* ID_VENDOR_FROM_DATABASE=Oak Technology, Inc @@ -17247,10 +17334,10 @@ pci:v00001077d00001664* ID_MODEL_FROM_DATABASE=FastLinQ QL45000 Series Gigabit Ethernet Controller (SR-IOV VF) pci:v00001077d00001664sv00001077sd0000E4F1* - ID_MODEL_FROM_DATABASE=FastLinQ QL45000 Series Gigabit Ethernet Controller (SR-IOV VF) (FastLinQ QL45412H 40GbE Adapter (SR-IOV VF)) + ID_MODEL_FROM_DATABASE=FastLinQ QL45000 Series Gigabit Ethernet Controller (SR-IOV VF) (FastLinQ QL45462H 40GbE Adapter (SR-IOV VF)) pci:v00001077d00001664sv00001077sd0000E4F2* - ID_MODEL_FROM_DATABASE=FastLinQ QL45000 Series Gigabit Ethernet Controller (SR-IOV VF) (FastLinQ QL45412H 40GbE Adapter (SR-IOV VF)) + ID_MODEL_FROM_DATABASE=FastLinQ QL45000 Series Gigabit Ethernet Controller (SR-IOV VF) (FastLinQ QL45461H 40GbE Adapter (SR-IOV VF)) pci:v00001077d00001664sv00001077sd0000E4F3* ID_MODEL_FROM_DATABASE=FastLinQ QL45000 Series Gigabit Ethernet Controller (SR-IOV VF) (FastLinQ QL45412H 40GbE Adapter (SR-IOV VF)) @@ -17259,10 +17346,10 @@ pci:v00001077d00001664sv00001077sd0000E4F4* ID_MODEL_FROM_DATABASE=FastLinQ QL45000 Series Gigabit Ethernet Controller (SR-IOV VF) (FastLinQ QL45411H 40GbE Adapter (SR-IOV VF)) pci:v00001077d00001664sv00001077sd0000E4F6* - ID_MODEL_FROM_DATABASE=FastLinQ QL45000 Series Gigabit Ethernet Controller (SR-IOV VF) (FastLinQ QL45411H 25GbE Adapter (SR-IOV VF)) + ID_MODEL_FROM_DATABASE=FastLinQ QL45000 Series Gigabit Ethernet Controller (SR-IOV VF) (FastLinQ QL45211H 25GbE Adapter (SR-IOV VF)) pci:v00001077d00001664sv00001077sd0000E4F7* - ID_MODEL_FROM_DATABASE=FastLinQ QL45000 Series Gigabit Ethernet Controller (SR-IOV VF) (FastLinQ QL45412H 25GbE Adapter (SR-IOV VF)) + ID_MODEL_FROM_DATABASE=FastLinQ QL45000 Series Gigabit Ethernet Controller (SR-IOV VF) (FastLinQ QL45212H 25GbE Adapter (SR-IOV VF)) pci:v00001077d00001664sv00001077sd0000E4F8* ID_MODEL_FROM_DATABASE=FastLinQ QL45000 Series Gigabit Ethernet Controller (SR-IOV VF) (FastLinQ QL45611H 100GbE Adapter (SR-IOV VF)) @@ -17273,9 +17360,21 @@ pci:v00001077d00002020* pci:v00001077d00002031* ID_MODEL_FROM_DATABASE=ISP8324-based 16Gb Fibre Channel to PCI Express Adapter +pci:v00001077d00002031sv0000103Csd000017E7* + ID_MODEL_FROM_DATABASE=ISP8324-based 16Gb Fibre Channel to PCI Express Adapter (HP SN1000Q 16Gb Single Port Fibre Channel Adapter) + +pci:v00001077d00002031sv0000103Csd000017E8* + ID_MODEL_FROM_DATABASE=ISP8324-based 16Gb Fibre Channel to PCI Express Adapter (HP SN1000Q 16Gb Dual Port Fibre Channel Adapter) + +pci:v00001077d00002031sv0000103Csd00001939* + ID_MODEL_FROM_DATABASE=ISP8324-based 16Gb Fibre Channel to PCI Express Adapter (HP QMH2672 16Gb Dual Port Fibre Channel Adapter) + pci:v00001077d00002031sv0000103Csd00008002* ID_MODEL_FROM_DATABASE=ISP8324-based 16Gb Fibre Channel to PCI Express Adapter (3830C 16G Fibre Channel Host Bus Adapter) +pci:v00001077d00002071* + ID_MODEL_FROM_DATABASE=ISP2714-based 16/32Gb Fibre Channel to PCIe Adapter + pci:v00001077d00002100* ID_MODEL_FROM_DATABASE=QLA2100 64-bit Fibre Channel Adapter @@ -17288,6 +17387,15 @@ pci:v00001077d00002200* pci:v00001077d00002200sv00001077sd00000002* ID_MODEL_FROM_DATABASE=QLA2200 64-bit Fibre Channel Adapter (QLA2200) +pci:v00001077d00002261* + ID_MODEL_FROM_DATABASE=ISP2722-based 16/32Gb Fibre Channel to PCIe Adapter + +pci:v00001077d00002261sv00001590sd000000F9* + ID_MODEL_FROM_DATABASE=ISP2722-based 16/32Gb Fibre Channel to PCIe Adapter (HPE StoreFabric SN1100Q 16Gb Single Port Fibre Channel Host Bus Adapter) + +pci:v00001077d00002261sv00001590sd000000FA* + ID_MODEL_FROM_DATABASE=ISP2722-based 16/32Gb Fibre Channel to PCIe Adapter (HPE StoreFabric SN1100Q 16Gb Dual Port Fibre Channel Host Bus Adapter) + pci:v00001077d00002300* ID_MODEL_FROM_DATABASE=QLA2300 64-bit Fibre Channel Adapter @@ -17327,6 +17435,9 @@ pci:v00001077d00002532sv0000103Csd00003262* pci:v00001077d00002532sv00001077sd00000167* ID_MODEL_FROM_DATABASE=ISP2532-based 8Gb Fibre Channel to PCI Express HBA (QME2572 Dual Port FC8 HBA Mezzanine) +pci:v00001077d00002532sv00001590sd000000FC* + ID_MODEL_FROM_DATABASE=ISP2532-based 8Gb Fibre Channel to PCI Express HBA (HPE StoreFabric 84Q 8Gb Quad Port Fibre Channel Host Bus Adapter) + pci:v00001077d00003022* ID_MODEL_FROM_DATABASE=ISP4022-based Ethernet NIC @@ -17972,6 +18083,9 @@ pci:v00001093d00000160* pci:v00001093d00000162* ID_MODEL_FROM_DATABASE=PCI-MIO-16XE-50 +pci:v00001093d00000FE1* + ID_MODEL_FROM_DATABASE=PXI-8320 + pci:v00001093d00001150* ID_MODEL_FROM_DATABASE=PCI-6533 (PCI-DIO-32HS) @@ -18245,9 +18359,18 @@ pci:v00001093d0000700B* pci:v00001093d0000700C* ID_MODEL_FROM_DATABASE=PCI-5421 +pci:v00001093d0000701A* + ID_MODEL_FROM_DATABASE=VXIpc-87xB + +pci:v00001093d0000701B* + ID_MODEL_FROM_DATABASE=VXIpc-770 + pci:v00001093d00007023* ID_MODEL_FROM_DATABASE=PXI-2593 +pci:v00001093d00007027* + ID_MODEL_FROM_DATABASE=PCI-MXI-2 Universal + pci:v00001093d0000702C* ID_MODEL_FROM_DATABASE=PXI-7831R @@ -19052,6 +19175,9 @@ pci:v00001093d00007322* pci:v00001093d00007327* ID_MODEL_FROM_DATABASE=PXI-6529 +pci:v00001093d0000732C* + ID_MODEL_FROM_DATABASE=VXI-8360T + pci:v00001093d00007331* ID_MODEL_FROM_DATABASE=PXIe-5602 @@ -19469,6 +19595,9 @@ pci:v00001093d000075E6* pci:v00001093d000075EF* ID_MODEL_FROM_DATABASE=PXIe-5632 +pci:v00001093d0000761C* + ID_MODEL_FROM_DATABASE=VXI-8360LT + pci:v00001093d0000761F* ID_MODEL_FROM_DATABASE=PXI-2540 @@ -19559,6 +19688,9 @@ pci:v00001093d000076A4* pci:v00001093d000076A5* ID_MODEL_FROM_DATABASE=PXIe-6537B +pci:v00001093d0000783E* + ID_MODEL_FROM_DATABASE=PXI-8368 + pci:v00001093d00009020* ID_MODEL_FROM_DATABASE=PXI-2501 @@ -19586,6 +19718,9 @@ pci:v00001093d00009090* pci:v00001093d000090A0* ID_MODEL_FROM_DATABASE=PXI-4021 +pci:v00001093d0000A001* + ID_MODEL_FROM_DATABASE=PCI-MXI-2 + pci:v00001093d0000B001* ID_MODEL_FROM_DATABASE=PCI-1408 @@ -19853,9 +19988,15 @@ pci:v00001093d0000C4C4sv00001093sd0000762C* pci:v00001093d0000C4C4sv00001093sd0000762D* ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-4145) +pci:v00001093d0000C4C4sv00001093sd0000762E* + ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5606) + pci:v00001093d0000C4C4sv00001093sd00007644* ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-4841) +pci:v00001093d0000C4C4sv00001093sd0000764A* + ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PCIe-8237R-S) + pci:v00001093d0000C4C4sv00001093sd00007658* ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5162 (4CH)) @@ -19877,6 +20018,12 @@ pci:v00001093d0000C4C4sv00001093sd000076B6* pci:v00001093d0000C4C4sv00001093sd000076B7* ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-7975R) +pci:v00001093d0000C4C4sv00001093sd000076B8* + ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5696) + +pci:v00001093d0000C4C4sv00001093sd000076B9* + ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5654) + pci:v00001093d0000C4C4sv00001093sd000076C8* ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-6614) @@ -19889,6 +20036,9 @@ pci:v00001093d0000C4C4sv00001093sd000076CB* pci:v00001093d0000C4C4sv00001093sd000076CC* ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5162 (2CH)) +pci:v00001093d0000C4C4sv00001093sd000076CE* + ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (CVS-1459) + pci:v00001093d0000C4C4sv00001093sd000076D0* ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5160 (2CH)) @@ -19898,9 +20048,33 @@ pci:v00001093d0000C4C4sv00001093sd000076D1* pci:v00001093d0000C4C4sv00001093sd000076DC* ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-4610) +pci:v00001093d0000C4C4sv00001093sd000076EC* + ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-2524) + +pci:v00001093d0000C4C4sv00001093sd000076ED* + ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-2525) + +pci:v00001093d0000C4C4sv00001093sd000076EE* + ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-2526) + +pci:v00001093d0000C4C4sv00001093sd000076EF* + ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-2737) + +pci:v00001093d0000C4C4sv00001093sd000076F0* + ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-2738) + +pci:v00001093d0000C4C4sv00001093sd000076F1* + ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-2739) + pci:v00001093d0000C4C4sv00001093sd000076FB* ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PCIe-1473R-LX110) +pci:v00001093d0000C4C4sv00001093sd000076FC* + ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5105) + +pci:v00001093d0000C4C4sv00001093sd000076FD* + ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5114) + pci:v00001093d0000C4C4sv00001093sd000076FE* ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5644R) @@ -19925,15 +20099,24 @@ pci:v00001093d0000C4C4sv00001093sd0000770C* pci:v00001093d0000C4C4sv00001093sd00007711* ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-4464) +pci:v00001093d0000C4C4sv00001093sd00007712* + ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-4463) + pci:v00001093d0000C4C4sv00001093sd00007716* ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PCIe-6612) +pci:v00001093d0000C4C4sv00001093sd0000771D* + ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (Unconfigured CA4 Switch) + pci:v00001093d0000C4C4sv00001093sd0000771E* ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-4339) pci:v00001093d0000C4C4sv00001093sd00007735* ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (cRIO-9033) +pci:v00001093d0000C4C4sv00001093sd0000773E* + ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5624R) + pci:v00001093d0000C4C4sv00001093sd0000774B* ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (cRIO-9031) @@ -19943,6 +20126,15 @@ pci:v00001093d0000C4C4sv00001093sd0000774D* pci:v00001093d0000C4C4sv00001093sd00007755* ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (cRIO-9030) +pci:v00001093d0000C4C4sv00001093sd00007768* + ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-2747) + +pci:v00001093d0000C4C4sv00001093sd00007769* + ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-2748) + +pci:v00001093d0000C4C4sv00001093sd0000776A* + ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-2746) + pci:v00001093d0000C4C4sv00001093sd00007777* ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-7976R) @@ -19955,6 +20147,15 @@ pci:v00001093d0000C4C4sv00001093sd00007783* pci:v00001093d0000C4C4sv00001093sd00007784* ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5646R) +pci:v00001093d0000C4C4sv00001093sd00007790* + ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5170R (4CH)) + +pci:v00001093d0000C4C4sv00001093sd00007791* + ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5170R (8CH)) + +pci:v00001093d0000C4C4sv00001093sd00007793* + ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5171R (8CH)) + pci:v00001093d0000C4C4sv00001093sd000077A5* ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-6345) @@ -19967,6 +20168,12 @@ pci:v00001093d0000C4C4sv00001093sd000077A7* pci:v00001093d0000C4C4sv00001093sd000077A8* ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-6375) +pci:v00001093d0000C4C4sv00001093sd000077AA* + ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (CVS-1458) + +pci:v00001093d0000C4C4sv00001093sd000077AD* + ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (IC-3173) + pci:v00001093d0000C4C4sv00001093sd000077B4* ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-7820R) @@ -19979,6 +20186,48 @@ pci:v00001093d0000C4C4sv00001093sd000077B6* pci:v00001093d0000C4C4sv00001093sd000077B9* ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (cRIO-9038) +pci:v00001093d0000C4C4sv00001093sd000077BA* + ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-4136) + +pci:v00001093d0000C4C4sv00001093sd000077BB* + ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-4137) + +pci:v00001093d0000C4C4sv00001093sd000077C0* + ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5624R) + +pci:v00001093d0000C4C4sv00001093sd000077C1* + ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5624R) + +pci:v00001093d0000C4C4sv00001093sd000077C2* + ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5624R) + +pci:v00001093d0000C4C4sv00001093sd000077CA* + ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-6738) + +pci:v00001093d0000C4C4sv00001093sd000077CB* + ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-6739) + +pci:v00001093d0000C4C4sv00001093sd000077DB* + ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (cRIO-9035) + +pci:v00001093d0000C4C4sv00001093sd000077DC* + ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (cRIO-9036) + +pci:v00001093d0000C4C4sv00001093sd000077DD* + ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (cRIO-9039) + +pci:v00001093d0000C4C4sv00001093sd00007802* + ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-4302) + +pci:v00001093d0000C4C4sv00001093sd00007803* + ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-4303) + +pci:v00001093d0000C4C4sv00001093sd00007805* + ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-4305) + +pci:v00001093d0000C4C4sv00001093sd0000788E* + ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-4304) + pci:v00001093d0000C801* ID_MODEL_FROM_DATABASE=PCI-GPIB @@ -20090,6 +20339,27 @@ pci:v00001093d0000E261* pci:v00001093d0000E271* ID_MODEL_FROM_DATABASE=PXI-8462 +pci:v00001093d0000F110* + ID_MODEL_FROM_DATABASE=VMEpc-650 + +pci:v00001093d0000F120* + ID_MODEL_FROM_DATABASE=VXIpc-650 + +pci:v00001093d0000FE00* + ID_MODEL_FROM_DATABASE=VXIpc-87x + +pci:v00001093d0000FE41* + ID_MODEL_FROM_DATABASE=VXIpc-860 + +pci:v00001093d0000FE51* + ID_MODEL_FROM_DATABASE=VXIpc-74x + +pci:v00001093d0000FE61* + ID_MODEL_FROM_DATABASE=VXIpc-850 + +pci:v00001093d0000FE70* + ID_MODEL_FROM_DATABASE=VXIpc-880 + pci:v00001094* ID_VENDOR_FROM_DATABASE=First International Computers [FIC] @@ -21152,6 +21422,9 @@ pci:v000010B5d00008747* pci:v000010B5d000087B0* ID_MODEL_FROM_DATABASE=PEX 8732 32-lane, 8-Port PCI Express Gen 3 (8.0 GT/s) Switch +pci:v000010B5d000087B0sv00001093sd00007761* + ID_MODEL_FROM_DATABASE=PEX 8732 32-lane, 8-Port PCI Express Gen 3 (8.0 GT/s) Switch (PXIe-8830mc) + pci:v000010B5d00009016* ID_MODEL_FROM_DATABASE=PLX 9016 8-port serial controller @@ -21185,6 +21458,9 @@ pci:v000010B5d00009030sv000010B5sd00003068* pci:v000010B5d00009030sv000010B5sd00003463* ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge (Alpermann+Velte PCL PCI D (v2) (3V/5V): Timecode Reader Board) +pci:v000010B5d00009030sv000010B5sd00003591* + ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge (PLURA PCL PCI L (v2) (3.3V/5V): Time Code Reader Board) + pci:v000010B5d00009030sv000012FEsd00000111* ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge (CPCI-ASIO4 (ESD 4-port Serial Interface Board)) @@ -28619,6 +28895,9 @@ pci:v000010DEd00000F01* pci:v000010DEd00000F02* ID_MODEL_FROM_DATABASE=GF108 [GeForce GT 730] +pci:v000010DEd00000F06* + ID_MODEL_FROM_DATABASE=GF108 [GeForce GT 730] + pci:v000010DEd00000FBB* ID_MODEL_FROM_DATABASE=GM204 High Definition Audio Controller @@ -28748,6 +29027,9 @@ pci:v000010DEd00000FEC* pci:v000010DEd00000FED* ID_MODEL_FROM_DATABASE=GK107M [GeForce 820M] +pci:v000010DEd00000FEE* + ID_MODEL_FROM_DATABASE=GK107M [GeForce 810M] + pci:v000010DEd00000FEF* ID_MODEL_FROM_DATABASE=GK107GL [GRID K340] @@ -29108,6 +29390,9 @@ pci:v000010DEd000010D8* pci:v000010DEd00001140* ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] +pci:v000010DEd00001140sv00001019sd00000799* + ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + pci:v000010DEd00001140sv00001019sd0000999F* ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) @@ -29405,6 +29690,9 @@ pci:v000010DEd00001140sv00001028sd00000662* pci:v000010DEd00001140sv00001028sd0000068D* ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) +pci:v000010DEd00001140sv00001028sd000006C1* + ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + pci:v000010DEd00001140sv0000103Csd000018EF* ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M) @@ -30023,6 +30311,12 @@ pci:v000010DEd00001140sv00001854sd00000190* pci:v000010DEd00001140sv00001854sd00000192* ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) +pci:v000010DEd00001140sv00001854sd00000224* + ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + +pci:v000010DEd00001140sv00001B0Asd000001C0* + ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + pci:v000010DEd00001140sv00001B0Asd000020DD* ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) @@ -30041,6 +30335,18 @@ pci:v000010DEd00001140sv00001B0Asd000090D7* pci:v000010DEd00001140sv00001B0Asd000090DD* ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) +pci:v000010DEd00001140sv00001B50sd00005530* + ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + +pci:v000010DEd00001140sv00001B6Csd00005531* + ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + +pci:v000010DEd00001140sv00001BABsd00000106* + ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + +pci:v000010DEd00001140sv00001D05sd00001013* + ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 810M) + pci:v000010DEd00001180* ID_MODEL_FROM_DATABASE=GK104 [GeForce GTX 680] @@ -30527,6 +30833,9 @@ pci:v000010DEd00001346* pci:v000010DEd00001347* ID_MODEL_FROM_DATABASE=GM108M [GeForce 940M] +pci:v000010DEd0000134D* + ID_MODEL_FROM_DATABASE=GM108M [GeForce 940MX] + pci:v000010DEd0000137A* ID_MODEL_FROM_DATABASE=GM108GLM [Quadro K620M] @@ -30569,9 +30878,27 @@ pci:v000010DEd00001398* pci:v000010DEd0000139A* ID_MODEL_FROM_DATABASE=GM107M [GeForce GTX 950M] +pci:v000010DEd0000139Asv000017AAsd0000362C* + ID_MODEL_FROM_DATABASE=GM107M [GeForce GTX 950M] (GeForce GTX 950A) + +pci:v000010DEd0000139Asv000017AAsd0000362F* + ID_MODEL_FROM_DATABASE=GM107M [GeForce GTX 950M] (GeForce GTX 950A) + +pci:v000010DEd0000139Asv000017AAsd0000363F* + ID_MODEL_FROM_DATABASE=GM107M [GeForce GTX 950M] (GeForce GTX 950A) + +pci:v000010DEd0000139Asv000017AAsd00003640* + ID_MODEL_FROM_DATABASE=GM107M [GeForce GTX 950M] (GeForce GTX 950A) + +pci:v000010DEd0000139Asv000017AAsd000036B9* + ID_MODEL_FROM_DATABASE=GM107M [GeForce GTX 950M] (GeForce GTX 950A) + pci:v000010DEd0000139B* ID_MODEL_FROM_DATABASE=GM107M [GeForce GTX 960M] +pci:v000010DEd0000139Bsv0000103Csd00002B4C* + ID_MODEL_FROM_DATABASE=GM107M [GeForce GTX 960M] (GeForce GTX 960A) + pci:v000010DEd0000139C* ID_MODEL_FROM_DATABASE=GM107M [GeForce 940M] @@ -30587,6 +30914,9 @@ pci:v000010DEd000013B2* pci:v000010DEd000013B3* ID_MODEL_FROM_DATABASE=GM107GLM [Quadro K2200M] +pci:v000010DEd000013B9* + ID_MODEL_FROM_DATABASE=GM107GL [NVS 810] + pci:v000010DEd000013BA* ID_MODEL_FROM_DATABASE=GM107GL [Quadro K2200] @@ -30623,6 +30953,9 @@ pci:v000010DEd000013D8* pci:v000010DEd000013D9* ID_MODEL_FROM_DATABASE=GM204M [GeForce GTX 965M] +pci:v000010DEd000013DA* + ID_MODEL_FROM_DATABASE=GM204M [GeForce GTX 980] + pci:v000010DEd000013F0* ID_MODEL_FROM_DATABASE=GM204GL [Quadro M5000] @@ -30647,6 +30980,12 @@ pci:v000010DEd00001401* pci:v000010DEd00001402* ID_MODEL_FROM_DATABASE=GM206 [GeForce GTX 950] +pci:v000010DEd00001407* + ID_MODEL_FROM_DATABASE=GM206 [GeForce GTX 750 v2] + +pci:v000010DEd00001427* + ID_MODEL_FROM_DATABASE=GM206M [GeForce GTX 965M] + pci:v000010DEd00001617* ID_MODEL_FROM_DATABASE=GM204M [GeForce GTX 980M] @@ -30656,6 +30995,9 @@ pci:v000010DEd00001618* pci:v000010DEd00001619* ID_MODEL_FROM_DATABASE=GM204M [GeForce GTX 965M] +pci:v000010DEd0000161A* + ID_MODEL_FROM_DATABASE=GM204M [GeForce GTX 980] + pci:v000010DEd000017C2* ID_MODEL_FROM_DATABASE=GM200 [GeForce GTX TITAN X] @@ -30665,6 +31007,9 @@ pci:v000010DEd000017C8* pci:v000010DEd000017F0* ID_MODEL_FROM_DATABASE=GM200GL [Quadro M6000] +pci:v000010DEd000017FD* + ID_MODEL_FROM_DATABASE=GM200GL [Tesla M40] + pci:v000010DF* ID_VENDOR_FROM_DATABASE=Emulex Corporation @@ -31142,15 +31487,24 @@ pci:v000010ECd00005229sv0000103Csd0000194E* pci:v000010ECd00005229sv0000103Csd00001985* ID_MODEL_FROM_DATABASE=RTS5229 PCI Express Card Reader (Pavilion 17-e163sg Notebook PC) +pci:v000010ECd0000522A* + ID_MODEL_FROM_DATABASE=RTS522A PCI Express Card Reader + pci:v000010ECd00005249* ID_MODEL_FROM_DATABASE=RTS5249 PCI Express Card Reader pci:v000010ECd00005249sv0000103Csd00001909* ID_MODEL_FROM_DATABASE=RTS5249 PCI Express Card Reader (ZBook 15) +pci:v000010ECd0000524A* + ID_MODEL_FROM_DATABASE=RTS524A PCI Express Card Reader + pci:v000010ECd00005250* ID_MODEL_FROM_DATABASE=RTS5250 PCI Express Card Reader +pci:v000010ECd0000525A* + ID_MODEL_FROM_DATABASE=RTS525A PCI Express Card Reader + pci:v000010ECd00005286* ID_MODEL_FROM_DATABASE=RTS5286 PCI Express Card Reader @@ -35789,6 +36143,9 @@ pci:v00001137d00000040sv00001137sd0000012E* pci:v00001137d00000040sv00001137sd00000137* ID_MODEL_FROM_DATABASE=VIC PCIe Upstream Port (VIC 1380 Dual 40Gb Mezzanine) +pci:v00001137d00000040sv00001137sd0000014D* + ID_MODEL_FROM_DATABASE=VIC PCIe Upstream Port (VIC 1385 Dual 40Gb PCIe) + pci:v00001137d00000041* ID_MODEL_FROM_DATABASE=VIC PCIe Downstream Port @@ -35810,6 +36167,9 @@ pci:v00001137d00000042sv00001137sd000000CE* pci:v00001137d00000042sv00001137sd0000012E* ID_MODEL_FROM_DATABASE=VIC Management Controller (VIC 1227 PCIe Management Controller) +pci:v00001137d00000042sv00001137sd0000014D* + ID_MODEL_FROM_DATABASE=VIC Management Controller (VIC 1385 PCIe Management Controller) + pci:v00001137d00000043* ID_MODEL_FROM_DATABASE=VIC Ethernet NIC @@ -35885,6 +36245,9 @@ pci:v00001137d00000044sv00001137sd0000012E* pci:v00001137d00000044sv00001137sd00000137* ID_MODEL_FROM_DATABASE=VIC Ethernet NIC Dynamic (VIC 1380 Mezzanine Ethernet NIC Dynamic) +pci:v00001137d00000044sv00001137sd0000014D* + ID_MODEL_FROM_DATABASE=VIC Ethernet NIC Dynamic (VIC 1385 PCIe Ethernet NIC Dynamic) + pci:v00001137d00000045* ID_MODEL_FROM_DATABASE=VIC FCoE HBA @@ -35921,6 +36284,9 @@ pci:v00001137d00000045sv00001137sd0000012E* pci:v00001137d00000045sv00001137sd00000137* ID_MODEL_FROM_DATABASE=VIC FCoE HBA (VIC 1380 Mezzanine FCoE HBA) +pci:v00001137d00000045sv00001137sd0000014D* + ID_MODEL_FROM_DATABASE=VIC FCoE HBA (VIC 1385 PCIe FCoE HBA) + pci:v00001137d00000046* ID_MODEL_FROM_DATABASE=VIC SCSI Controller @@ -35945,6 +36311,9 @@ pci:v00001137d0000007Asv00001137sd0000012C* pci:v00001137d0000007Asv00001137sd00000137* ID_MODEL_FROM_DATABASE=VIC 1300 PCIe Upstream Port (VIC 1380 Dual 40Gb Mezzanine) +pci:v00001137d0000007Asv00001137sd0000014D* + ID_MODEL_FROM_DATABASE=VIC 1300 PCIe Upstream Port (VIC 1385 Dual 40Gb PCIe) + pci:v00001137d000000CF* ID_MODEL_FROM_DATABASE=VIC Userspace NIC @@ -45239,9 +45608,6 @@ pci:v00001412d00001712* pci:v00001412d00001712sv00001412sd00001712* ID_MODEL_FROM_DATABASE=ICE1712 [Envy24] PCI Multi-Channel I/O Controller (Hoontech ST Audio DSP 24) -pci:v00001412d00001712sv00001412sd00003632* - ID_MODEL_FROM_DATABASE=ICE1712 [Envy24] PCI Multi-Channel I/O Controller (M-Audio Delta Audiophile 192) - pci:v00001412d00001712sv00001412sd0000D630* ID_MODEL_FROM_DATABASE=ICE1712 [Envy24] PCI Multi-Channel I/O Controller (M-Audio Delta 1010) @@ -45314,6 +45680,9 @@ pci:v00001412d00001724sv00001412sd00003630* pci:v00001412d00001724sv00001412sd00003631* ID_MODEL_FROM_DATABASE=VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (M-Audio Revolution 5.1) +pci:v00001412d00001724sv00001412sd00003632* + ID_MODEL_FROM_DATABASE=VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (M-Audio Audiophile 192) + pci:v00001412d00001724sv0000153Bsd00001145* ID_MODEL_FROM_DATABASE=VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (Aureon 7.1 Space) @@ -46118,6 +46487,18 @@ pci:v00001425d00005096* pci:v00001425d00005097* ID_MODEL_FROM_DATABASE=T520-5097 Unified Wire Ethernet Controller +pci:v00001425d00005098* + ID_MODEL_FROM_DATABASE=T580-5098 Unified Wire Ethernet Controller + +pci:v00001425d00005099* + ID_MODEL_FROM_DATABASE=T580-5099 Unified Wire Ethernet Controller + +pci:v00001425d0000509A* + ID_MODEL_FROM_DATABASE=T520-509A Unified Wire Ethernet Controller + +pci:v00001425d0000509B* + ID_MODEL_FROM_DATABASE=T540-509B Unified Wire Ethernet Controller + pci:v00001425d00005401* ID_MODEL_FROM_DATABASE=T520-CR Unified Wire Ethernet Controller @@ -46241,6 +46622,18 @@ pci:v00001425d00005496* pci:v00001425d00005497* ID_MODEL_FROM_DATABASE=T520-5097 Unified Wire Ethernet Controller +pci:v00001425d00005498* + ID_MODEL_FROM_DATABASE=T580-5098 Unified Wire Ethernet Controller + +pci:v00001425d00005499* + ID_MODEL_FROM_DATABASE=T580-5099 Unified Wire Ethernet Controller + +pci:v00001425d0000549A* + ID_MODEL_FROM_DATABASE=T520-509A Unified Wire Ethernet Controller + +pci:v00001425d0000549B* + ID_MODEL_FROM_DATABASE=T540-509B Unified Wire Ethernet Controller + pci:v00001425d00005501* ID_MODEL_FROM_DATABASE=T520-CR Unified Wire Storage Controller @@ -46364,6 +46757,18 @@ pci:v00001425d00005596* pci:v00001425d00005597* ID_MODEL_FROM_DATABASE=T520-5097 Unified Wire Storage Controller +pci:v00001425d00005598* + ID_MODEL_FROM_DATABASE=T580-5098 Unified Wire Storage Controller + +pci:v00001425d00005599* + ID_MODEL_FROM_DATABASE=T580-5099 Unified Wire Storage Controller + +pci:v00001425d0000559A* + ID_MODEL_FROM_DATABASE=T520-509A Unified Wire Storage Controller + +pci:v00001425d0000559B* + ID_MODEL_FROM_DATABASE=T540-509B Unified Wire Storage Controller + pci:v00001425d00005601* ID_MODEL_FROM_DATABASE=T520-CR Unified Wire Storage Controller @@ -46487,6 +46892,18 @@ pci:v00001425d00005696* pci:v00001425d00005697* ID_MODEL_FROM_DATABASE=T520-5097 Unified Wire Storage Controller +pci:v00001425d00005698* + ID_MODEL_FROM_DATABASE=T580-5098 Unified Wire Storage Controller + +pci:v00001425d00005699* + ID_MODEL_FROM_DATABASE=T580-5099 Unified Wire Storage Controller + +pci:v00001425d0000569A* + ID_MODEL_FROM_DATABASE=T520-509A Unified Wire Storage Controller + +pci:v00001425d0000569B* + ID_MODEL_FROM_DATABASE=T540-509B Unified Wire Storage Controller + pci:v00001425d00005701* ID_MODEL_FROM_DATABASE=T520-CR Unified Wire Ethernet Controller @@ -46727,6 +47144,18 @@ pci:v00001425d00005896* pci:v00001425d00005897* ID_MODEL_FROM_DATABASE=T520-5097 Unified Wire Ethernet Controller [VF] +pci:v00001425d00005898* + ID_MODEL_FROM_DATABASE=T580-5098 Unified Wire Ethernet Controller [VF] + +pci:v00001425d00005899* + ID_MODEL_FROM_DATABASE=T580-5099 Unified Wire Ethernet Controller [VF] + +pci:v00001425d0000589A* + ID_MODEL_FROM_DATABASE=T520-509A Unified Wire Ethernet Controller [VF] + +pci:v00001425d0000589B* + ID_MODEL_FROM_DATABASE=T540-509B Unified Wire Ethernet Controller [VF] + pci:v00001425d0000A000* ID_MODEL_FROM_DATABASE=PE10K Unified Wire Ethernet Controller @@ -46928,6 +47357,9 @@ pci:v0000144Dd00001600* pci:v0000144Dd0000A800* ID_MODEL_FROM_DATABASE=XP941 PCIe SSD +pci:v0000144Dd0000A802* + ID_MODEL_FROM_DATABASE=NVMe SSD Controller + pci:v0000144Dd0000A820* ID_MODEL_FROM_DATABASE=NVMe SSD Controller 171X @@ -48155,6 +48587,9 @@ pci:v000014E4d00001657* pci:v000014E4d00001657sv0000103Csd0000169D* ID_MODEL_FROM_DATABASE=NetXtreme BCM5719 Gigabit Ethernet PCIe (Ethernet 1Gb 4-port 331FLR Adapter) +pci:v000014E4d00001657sv0000103Csd000022BE* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5719 Gigabit Ethernet PCIe (Ethernet 1Gb 4-port 331i Adapter) + pci:v000014E4d00001659* ID_MODEL_FROM_DATABASE=NetXtreme BCM5721 Gigabit Ethernet PCI Express @@ -48833,6 +49268,30 @@ pci:v000014E4d000016C7sv000014E4sd00000009* pci:v000014E4d000016C7sv000014E4sd0000000A* ID_MODEL_FROM_DATABASE=NetXtreme BCM5703 Gigabit Ethernet (NetXtreme BCM5703 1000Base-SX) +pci:v000014E4d000016C8* + ID_MODEL_FROM_DATABASE=BCM57301 NetXtreme-C Single-port 10Gb Ethernet + +pci:v000014E4d000016C9* + ID_MODEL_FROM_DATABASE=BCM57302 NetXtreme-C Dual-port 10Gb/25Gb Ethernet + +pci:v000014E4d000016CA* + ID_MODEL_FROM_DATABASE=BCM57304 NetXtreme-C Dual-port 10Gb/25Gb/40Gb/50Gb Ethernet + +pci:v000014E4d000016CB* + ID_MODEL_FROM_DATABASE=BCM57304 NetXtreme-C Ethernet Virtual Function + +pci:v000014E4d000016D0* + ID_MODEL_FROM_DATABASE=BCM57402 NetXtreme-E Dual-port 10Gb Ethernet + +pci:v000014E4d000016D1* + ID_MODEL_FROM_DATABASE=BCM57404 NetXtreme-E Dual-port 10Gb/25Gb Ethernet + +pci:v000014E4d000016D2* + ID_MODEL_FROM_DATABASE=BCM57406 NetXtreme-E Dual-port 10GBase-T Ethernet + +pci:v000014E4d000016D3* + ID_MODEL_FROM_DATABASE=BCM57404 NetXtreme-E Ethernet Virtual Function + pci:v000014E4d000016DD* ID_MODEL_FROM_DATABASE=NetLink BCM5781 Gigabit Ethernet PCI Express @@ -49433,6 +49892,9 @@ pci:v000014E4d000043A1* pci:v000014E4d000043A2* ID_MODEL_FROM_DATABASE=BCM4360 802.11ac Wireless Network Adapter +pci:v000014E4d000043A3* + ID_MODEL_FROM_DATABASE=BCM4350 802.11ac Wireless Network Adapter + pci:v000014E4d000043A9* ID_MODEL_FROM_DATABASE=BCM43217 802.11b/g/n @@ -49475,6 +49937,9 @@ pci:v000014E4d00004401sv00001025sd00000035* pci:v000014E4d00004401sv00001025sd00000064* ID_MODEL_FROM_DATABASE=BCM4401 100Base-T (Extensa 3000 series laptop) +pci:v000014E4d00004401sv00001028sd00008127* + ID_MODEL_FROM_DATABASE=BCM4401 100Base-T (Dimension 2400) + pci:v000014E4d00004401sv0000103Csd000008B0* ID_MODEL_FROM_DATABASE=BCM4401 100Base-T (tc1100 tablet) @@ -51569,6 +52034,12 @@ pci:v000015B3d0000020B* pci:v000015B3d0000020D* ID_MODEL_FROM_DATABASE=MT28800 Family [ConnectX-5 Flash Recovery] +pci:v000015B3d00000262* + ID_MODEL_FROM_DATABASE=MT27710 [ConnectX-4 Lx Programmable] EN + +pci:v000015B3d00000263* + ID_MODEL_FROM_DATABASE=MT27710 [ConnectX-4 Lx Programmable Virtual Function] EN + pci:v000015B3d00001002* ID_MODEL_FROM_DATABASE=MT25400 Family [ConnectX-2 Virtual Function] @@ -51608,6 +52079,9 @@ pci:v000015B3d00001007sv0000103Csd000022F3* pci:v000015B3d00001007sv0000103Csd000022F4* ID_MODEL_FROM_DATABASE=MT27520 Family [ConnectX-3 Pro] (InfiniBand FDR/Ethernet 10Gb/40Gb 2-port 544+FLR-QSFP Adapter) +pci:v000015B3d00001007sv0000103Csd0000801F* + ID_MODEL_FROM_DATABASE=MT27520 Family [ConnectX-3 Pro] (Ethernet 10G 2-port 546SFP+ Adapter) + pci:v000015B3d00001007sv0000117Csd00000090* ID_MODEL_FROM_DATABASE=MT27520 Family [ConnectX-3 Pro] (FastFrame NQ41) @@ -51663,7 +52137,7 @@ pci:v000015B3d00001016* ID_MODEL_FROM_DATABASE=MT27710 Family [ConnectX-4 Lx Virtual Function] pci:v000015B3d00001017* - ID_MODEL_FROM_DATABASE=MT28800 Family [ConnectX-4] + ID_MODEL_FROM_DATABASE=MT28800 Family [ConnectX-5] pci:v000015B3d00001018* ID_MODEL_FROM_DATABASE=MT28800 Family [ConnectX-5 Virtual Function] @@ -53276,12 +53750,18 @@ pci:v0000168Cd00000030sv00001A56sd00002001* pci:v0000168Cd00000032* ID_MODEL_FROM_DATABASE=AR9485 Wireless Network Adapter +pci:v0000168Cd00000032sv00001028sd00000208* + ID_MODEL_FROM_DATABASE=AR9485 Wireless Network Adapter (Wireless 1506 WLAN Half Mini-Card) + pci:v0000168Cd00000032sv0000103Csd00001838* ID_MODEL_FROM_DATABASE=AR9485 Wireless Network Adapter (AR9485/HB125 802.11bgn 1×1 Wi-Fi Adapter) pci:v0000168Cd00000032sv0000105Bsd0000E044* ID_MODEL_FROM_DATABASE=AR9485 Wireless Network Adapter (Unex DHXA-225) +pci:v0000168Cd00000032sv00001A3Bsd00001186* + ID_MODEL_FROM_DATABASE=AR9485 Wireless Network Adapter (AW-NE186H) + pci:v0000168Cd00000033* ID_MODEL_FROM_DATABASE=AR9580 Wireless Network Adapter @@ -54155,6 +54635,9 @@ pci:v00001797d00006816* pci:v00001797d00006817* ID_MODEL_FROM_DATABASE=TW6816 multimedia video controller +pci:v00001797d00006864* + ID_MODEL_FROM_DATABASE=TW6864 multimedia video controller + pci:v00001799* ID_VENDOR_FROM_DATABASE=Belkin @@ -55550,6 +56033,15 @@ pci:v00001912d00000014* pci:v00001912d00000015* ID_MODEL_FROM_DATABASE=uPD720202 USB 3.0 Host Controller +pci:v00001912d0000001A* + ID_MODEL_FROM_DATABASE=SH7758 PCIe-PCI Bridge [PPB] + +pci:v00001912d0000001B* + ID_MODEL_FROM_DATABASE=SH7758 PCIe End-Point [PBI] + +pci:v00001912d0000001D* + ID_MODEL_FROM_DATABASE=SH7758 PCIe Switch [PS] + pci:v00001919* ID_VENDOR_FROM_DATABASE=Soltek Computer Inc. @@ -55805,6 +56297,9 @@ pci:v00001924d00000903sv00001924sd0000800C* pci:v00001924d00000903sv00001924sd0000800D* ID_MODEL_FROM_DATABASE=SFC9120 (SFN7x02F-R3 Flareon 7000 Series 10G Adapter) +pci:v00001924d00000903sv00001924sd00008010* + ID_MODEL_FROM_DATABASE=SFC9120 (SFA7942Q-R1 QSFP+ AOE Adapter) + pci:v00001924d00000923* ID_MODEL_FROM_DATABASE=SFC9140 @@ -55817,6 +56312,15 @@ pci:v00001924d00000923sv00001924sd0000800E* pci:v00001924d00000923sv00001924sd0000800F* ID_MODEL_FROM_DATABASE=SFC9140 (SFN7xx4F-R1 Flareon Ultra 7000 Series 10G Adapter) +pci:v00001924d00000A03* + ID_MODEL_FROM_DATABASE=SFC9220 + +pci:v00001924d00000A03sv00001924sd00008012* + ID_MODEL_FROM_DATABASE=SFC9220 (SFN8522-R1 Flareon Ultra 8000 Series 10G Adapter) + +pci:v00001924d00000A03sv00001924sd00008014* + ID_MODEL_FROM_DATABASE=SFC9220 (SFN8542-R1 Flareon Ultra 8000 Series 10/40G Adapter) + pci:v00001924d00001803* ID_MODEL_FROM_DATABASE=SFC9020 Virtual Function [Solarstorm] @@ -56309,6 +56813,9 @@ pci:v00001969d00001083* pci:v00001969d00001090* ID_MODEL_FROM_DATABASE=AR8162 Fast Ethernet +pci:v00001969d00001090sv00001043sd0000108D* + ID_MODEL_FROM_DATABASE=AR8162 Fast Ethernet (VivoBook X202E, X202EV) + pci:v00001969d00001091* ID_MODEL_FROM_DATABASE=AR8161 Gigabit Ethernet @@ -56516,6 +57023,9 @@ pci:v0000199Fd00008521* pci:v000019A2* ID_VENDOR_FROM_DATABASE=Emulex Corporation +pci:v000019A2d00000120* + ID_MODEL_FROM_DATABASE=x1 PCIe Gen2 Bridge[Pilot4] + pci:v000019A2d00000200* ID_MODEL_FROM_DATABASE=BladeEngine 10Gb PCI-E iSCSI adapter @@ -57482,6 +57992,12 @@ pci:v00001B85d00001041* pci:v00001B85d00008788* ID_MODEL_FROM_DATABASE=RevoDrive Hybrid +pci:v00001B94* + ID_VENDOR_FROM_DATABASE=Signatec / Dynamic Signals Corp + +pci:v00001B94d0000E400* + ID_MODEL_FROM_DATABASE=PX14400 Dual Xilinx Virtex5 based Digitizer + pci:v00001B96* ID_VENDOR_FROM_DATABASE=Western Digital @@ -57668,6 +58184,12 @@ pci:v00001C2Cd000000A5* pci:v00001C2Cd000000A6* ID_MODEL_FROM_DATABASE=FBC1CG Capture 1x100Gb +pci:v00001C2Cd000000A9* + ID_MODEL_FROM_DATABASE=FBC2XGHH Capture 2x10Gb + +pci:v00001C2Cd000000AF* + ID_MODEL_FROM_DATABASE=Capture slave device + pci:v00001C32* ID_VENDOR_FROM_DATABASE=Highland Technology, Inc. @@ -57695,6 +58217,12 @@ pci:v00001C58* pci:v00001C58d00000003* ID_MODEL_FROM_DATABASE=Ultrastar SN100 Series NVMe SSD +pci:v00001C58d00000003sv00001014sd000004F5* + ID_MODEL_FROM_DATABASE=Ultrastar SN100 Series NVMe SSD (PCIe3 1.6TB NVMe Adapter) + +pci:v00001C58d00000003sv00001014sd000004F6* + ID_MODEL_FROM_DATABASE=Ultrastar SN100 Series NVMe SSD (PCIe3 3.2TB NVMe Adapter) + pci:v00001C7E* ID_VENDOR_FROM_DATABASE=TTTech Computertechnik AG @@ -57752,6 +58280,12 @@ pci:v00001CE4d00000002* pci:v00001CE4d00000003* ID_MODEL_FROM_DATABASE=ExaNIC X10 +pci:v00001CE4d00000004* + ID_MODEL_FROM_DATABASE=ExaNIC X10-GM + +pci:v00001CE4d00000005* + ID_MODEL_FROM_DATABASE=ExaNIC X40 + pci:v00001CF7* ID_VENDOR_FROM_DATABASE=Subspace Dynamics @@ -57761,6 +58295,9 @@ pci:v00001D00* pci:v00001D1D* ID_VENDOR_FROM_DATABASE=CNEX Labs +pci:v00001D1Dd00001F1F* + ID_MODEL_FROM_DATABASE=QEMU NVM Express LightNVM Controller + pci:v00001D1Dd00002807* ID_MODEL_FROM_DATABASE=8800 series NVMe SSD @@ -57785,6 +58322,9 @@ pci:v00001D44* pci:v00001D44d0000A400* ID_MODEL_FROM_DATABASE=PM2x24/PM3224 +pci:v00001D49* + ID_VENDOR_FROM_DATABASE=Lenovo + pci:v00001D5C* ID_VENDOR_FROM_DATABASE=Fantasia Trading LLC @@ -57959,6 +58499,9 @@ pci:v00001FC9d00004025sv00001FC9sd00003015* pci:v00001FC9d00004026* ID_MODEL_FROM_DATABASE=TN9610 10GbE SFP+ Ethernet Adapter +pci:v00001FC9d00004027* + ID_MODEL_FROM_DATABASE=TN9710 10GBase-T/NBASE-T Ethernet Adapter + pci:v00001FCC* ID_VENDOR_FROM_DATABASE=StreamLabs @@ -58046,6 +58589,9 @@ pci:v00002BD8* pci:v00003000* ID_VENDOR_FROM_DATABASE=Hansol Electronics Inc. +pci:v00003112* + ID_VENDOR_FROM_DATABASE=Satelco Ingenieria S.A. + pci:v00003142* ID_VENDOR_FROM_DATABASE=Post Impression Systems. @@ -58166,6 +58712,9 @@ pci:v000037D9d00001140* pci:v000037D9d00001141* ID_MODEL_FROM_DATABASE=PCI-485(422) +pci:v000037D9d00001142* + ID_MODEL_FROM_DATABASE=PCI-CAN2 + pci:v00003842* ID_VENDOR_FROM_DATABASE=eVga.com. Corp. @@ -59495,6 +60044,18 @@ pci:v0000544C* pci:v0000544Cd00000350* ID_MODEL_FROM_DATABASE=TL880-based HDTV/ATSC tuner +pci:v0000544D* + ID_VENDOR_FROM_DATABASE=TBS Technologies + +pci:v0000544Dd00006178* + ID_MODEL_FROM_DATABASE=DVB-S2 4 Tuner PCIe Card + +pci:v0000544Dd00006178sv0000544Dsd00006904* + ID_MODEL_FROM_DATABASE=DVB-S2 4 Tuner PCIe Card (TBS6904 DVB-S2 Quad Tuner PCIe Card) + +pci:v0000544Dd00006178sv0000544Dsd00006905* + ID_MODEL_FROM_DATABASE=DVB-S2 4 Tuner PCIe Card (TBS6905 DVB-S2 Quad Tuner PCIe Card) + pci:v00005452* ID_VENDOR_FROM_DATABASE=SCANLAB AG @@ -60080,6 +60641,9 @@ pci:v00008086d00000154sv00001025sd00000813* pci:v00008086d00000154sv0000103Csd000017F6* ID_MODEL_FROM_DATABASE=3rd Gen Core processor DRAM Controller (ProBook 4540s) +pci:v00008086d00000154sv00001043sd0000108D* + ID_MODEL_FROM_DATABASE=3rd Gen Core processor DRAM Controller (VivoBook X202EV) + pci:v00008086d00000154sv00001043sd00001477* ID_MODEL_FROM_DATABASE=3rd Gen Core processor DRAM Controller (N56VZ) @@ -60095,6 +60659,9 @@ pci:v00008086d00000155sv00008086sd00002010* pci:v00008086d00000156* ID_MODEL_FROM_DATABASE=3rd Gen Core processor Graphics Controller +pci:v00008086d00000156sv00001043sd0000108D* + ID_MODEL_FROM_DATABASE=3rd Gen Core processor Graphics Controller (VivoBook X202EV) + pci:v00008086d00000158* ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/Ivy Bridge DRAM Controller @@ -60920,6 +61487,12 @@ pci:v00008086d00000953sv00008086sd00003709* pci:v00008086d00000953sv00008086sd0000370A* ID_MODEL_FROM_DATABASE=PCIe Data Center SSD (DC P3600 SSD [2.5" SFF]) +pci:v00008086d00000953sv00008086sd0000370D* + ID_MODEL_FROM_DATABASE=PCIe Data Center SSD (SSD 750 Series [Add-in Card]) + +pci:v00008086d00000953sv00008086sd0000370E* + ID_MODEL_FROM_DATABASE=PCIe Data Center SSD (SSD 750 Series [2.5" SFF]) + pci:v00008086d0000095A* ID_MODEL_FROM_DATABASE=Wireless 7265 @@ -61806,7 +62379,10 @@ pci:v00008086d00000F34* ID_MODEL_FROM_DATABASE=Atom Processor Z36xxx/Z37xxx Series USB EHCI pci:v00008086d00000F35* - ID_MODEL_FROM_DATABASE=Atom Processor Z36xxx/Z37xxx Series USB xHCI + ID_MODEL_FROM_DATABASE=Atom Processor Z36xxx/Z37xxx, Celeron N2000 Series USB xHCI + +pci:v00008086d00000F35sv00001025sd00000936* + ID_MODEL_FROM_DATABASE=Atom Processor Z36xxx/Z37xxx, Celeron N2000 Series USB xHCI (Aspire ES1) pci:v00008086d00000F37* ID_MODEL_FROM_DATABASE=Atom Processor Z36xxx/Z37xxx Series OTG USB Device @@ -63303,7 +63879,7 @@ pci:v00008086d00001130sv0000104Dsd000080DF* ID_MODEL_FROM_DATABASE=82815 815 Chipset Host Bridge and Memory Controller Hub (Vaio PCG-FX403) pci:v00008086d00001130sv00008086sd00004532* - ID_MODEL_FROM_DATABASE=82815 815 Chipset Host Bridge and Memory Controller Hub (D815EEA2 mainboard) + ID_MODEL_FROM_DATABASE=82815 815 Chipset Host Bridge and Memory Controller Hub (Desktop Board D815EEA2/D815EFV) pci:v00008086d00001130sv00008086sd00004557* ID_MODEL_FROM_DATABASE=82815 815 Chipset Host Bridge and Memory Controller Hub (D815EGEW Mainboard) @@ -63324,7 +63900,7 @@ pci:v00008086d00001132sv0000104Dsd000080DF* ID_MODEL_FROM_DATABASE=82815 Chipset Graphics Controller (CGC) (Vaio PCG-FX403) pci:v00008086d00001132sv00008086sd00004532* - ID_MODEL_FROM_DATABASE=82815 Chipset Graphics Controller (CGC) (D815EEA2 Mainboard) + ID_MODEL_FROM_DATABASE=82815 Chipset Graphics Controller (CGC) (Desktop Board D815EEA2/D815EFV) pci:v00008086d00001132sv00008086sd00004541* ID_MODEL_FROM_DATABASE=82815 Chipset Graphics Controller (CGC) (D815EEA Motherboard) @@ -64502,6 +65078,9 @@ pci:v00008086d00001572sv00008086sd00004005* pci:v00008086d00001572sv00008086sd00004006* ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+ +pci:v00008086d00001578* + ID_MODEL_FROM_DATABASE=DSL6540 Thunderbolt [Alpine Ridge] + pci:v00008086d0000157B* ID_MODEL_FROM_DATABASE=I210 Gigabit Network Connection @@ -64664,6 +65243,9 @@ pci:v00008086d000015AD* pci:v00008086d000015AE* ID_MODEL_FROM_DATABASE=Ethernet Connection X552 1000BASE-T +pci:v00008086d000015B6* + ID_MODEL_FROM_DATABASE=DSL6540 USB 3.1 Controller [Alpine Ridge] + pci:v00008086d000015B7* ID_MODEL_FROM_DATABASE=Ethernet Connection (2) I219-LM @@ -64682,6 +65264,18 @@ pci:v00008086d000015D1sv00008086sd00000002* pci:v00008086d000015D1sv00008086sd000000A2* ID_MODEL_FROM_DATABASE=Ethernet Controller 10G X550T (Ethernet Converged Network Adapter X550-T1) +pci:v00008086d000015D6* + ID_MODEL_FROM_DATABASE=Ethernet Connection (5) I219-V + +pci:v00008086d000015D7* + ID_MODEL_FROM_DATABASE=Ethernet Connection (4) I219-LM + +pci:v00008086d000015D8* + ID_MODEL_FROM_DATABASE=Ethernet Connection (4) I219-V + +pci:v00008086d000015E3* + ID_MODEL_FROM_DATABASE=Ethernet Connection (5) I219-LM + pci:v00008086d00001600* ID_MODEL_FROM_DATABASE=Broadwell-U Host Bridge -OPI @@ -64692,7 +65286,7 @@ pci:v00008086d00001602* ID_MODEL_FROM_DATABASE=Broadwell-U Integrated Graphics pci:v00008086d00001603* - ID_MODEL_FROM_DATABASE=Broadwell-U Camarillo Device + ID_MODEL_FROM_DATABASE=Broadwell-U Processor Thermal Subsystem pci:v00008086d00001604* ID_MODEL_FROM_DATABASE=Broadwell-U Host Bridge -OPI @@ -64797,61 +65391,67 @@ pci:v00008086d0000163E* ID_MODEL_FROM_DATABASE=Broadwell-U Integrated Graphics pci:v00008086d00001900* - ID_MODEL_FROM_DATABASE=Sky Lake Host Bridge/DRAM Registers + ID_MODEL_FROM_DATABASE=Skylake Host Bridge/DRAM Registers pci:v00008086d00001901* - ID_MODEL_FROM_DATABASE=Sky Lake PCIe Controller (x16) + ID_MODEL_FROM_DATABASE=Skylake PCIe Controller (x16) + +pci:v00008086d00001903* + ID_MODEL_FROM_DATABASE=Skylake Processor Thermal Subsystem pci:v00008086d00001904* - ID_MODEL_FROM_DATABASE=Sky Lake Host Bridge/DRAM Registers + ID_MODEL_FROM_DATABASE=Skylake Host Bridge/DRAM Registers pci:v00008086d00001905* - ID_MODEL_FROM_DATABASE=Sky Lake PCIe Controller (x8) + ID_MODEL_FROM_DATABASE=Skylake PCIe Controller (x8) pci:v00008086d00001908* - ID_MODEL_FROM_DATABASE=Sky Lake Host Bridge/DRAM Registers + ID_MODEL_FROM_DATABASE=Skylake Host Bridge/DRAM Registers pci:v00008086d00001909* - ID_MODEL_FROM_DATABASE=Sky Lake PCIe Controller (x4) + ID_MODEL_FROM_DATABASE=Skylake PCIe Controller (x4) pci:v00008086d0000190C* - ID_MODEL_FROM_DATABASE=Sky Lake Host Bridge/DRAM Registers + ID_MODEL_FROM_DATABASE=Skylake Host Bridge/DRAM Registers pci:v00008086d0000190F* - ID_MODEL_FROM_DATABASE=Sky Lake Host Bridge/DRAM Registers + ID_MODEL_FROM_DATABASE=Skylake Host Bridge/DRAM Registers pci:v00008086d00001910* - ID_MODEL_FROM_DATABASE=Sky Lake Host Bridge/DRAM Registers + ID_MODEL_FROM_DATABASE=Skylake Host Bridge/DRAM Registers pci:v00008086d00001911* - ID_MODEL_FROM_DATABASE=Sky Lake Gaussian Mixture Model + ID_MODEL_FROM_DATABASE=Skylake Gaussian Mixture Model pci:v00008086d00001912* - ID_MODEL_FROM_DATABASE=Sky Lake Integrated Graphics + ID_MODEL_FROM_DATABASE=Skylake Integrated Graphics pci:v00008086d00001916* - ID_MODEL_FROM_DATABASE=Sky Lake Integrated Graphics + ID_MODEL_FROM_DATABASE=Skylake Integrated Graphics pci:v00008086d00001918* - ID_MODEL_FROM_DATABASE=Sky Lake Host Bridge/DRAM Registers + ID_MODEL_FROM_DATABASE=Skylake Host Bridge/DRAM Registers pci:v00008086d00001919* - ID_MODEL_FROM_DATABASE=Sky Lake Imaging Unit + ID_MODEL_FROM_DATABASE=Skylake Imaging Unit + +pci:v00008086d0000191B* + ID_MODEL_FROM_DATABASE=Skylake Integrated Graphics pci:v00008086d0000191E* - ID_MODEL_FROM_DATABASE=Sky Lake Integrated Graphics + ID_MODEL_FROM_DATABASE=Skylake Integrated Graphics pci:v00008086d0000191F* - ID_MODEL_FROM_DATABASE=Sky Lake Host Bridge/DRAM Registers + ID_MODEL_FROM_DATABASE=Skylake Host Bridge/DRAM Registers pci:v00008086d00001926* - ID_MODEL_FROM_DATABASE=Sky Lake Integrated Graphics + ID_MODEL_FROM_DATABASE=Skylake Integrated Graphics pci:v00008086d00001932* - ID_MODEL_FROM_DATABASE=Sky Lake Integrated Graphics + ID_MODEL_FROM_DATABASE=Skylake Integrated Graphics pci:v00008086d0000193B* - ID_MODEL_FROM_DATABASE=Sky Lake Integrated Graphics + ID_MODEL_FROM_DATABASE=Skylake Integrated Graphics pci:v00008086d00001960* ID_MODEL_FROM_DATABASE=80960RP (i960RP) Microprocessor @@ -65582,6 +66182,9 @@ pci:v00008086d00001E02sv00001849sd00001E02* pci:v00008086d00001E03* ID_MODEL_FROM_DATABASE=7 Series Chipset Family 6-port SATA Controller [AHCI mode] +pci:v00008086d00001E03sv00001043sd0000108D* + ID_MODEL_FROM_DATABASE=7 Series Chipset Family 6-port SATA Controller [AHCI mode] (VivoBook X202EV) + pci:v00008086d00001E03sv00001043sd00001477* ID_MODEL_FROM_DATABASE=7 Series Chipset Family 6-port SATA Controller [AHCI mode] (N56VZ) @@ -65612,6 +66215,9 @@ pci:v00008086d00001E0E* pci:v00008086d00001E10* ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 1 +pci:v00008086d00001E10sv00001043sd0000108D* + ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 1 (VivoBook X202EV) + pci:v00008086d00001E10sv00001043sd00001477* ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 1 (N56VZ) @@ -65627,6 +66233,9 @@ pci:v00008086d00001E10sv00001849sd00001E10* pci:v00008086d00001E12* ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 2 +pci:v00008086d00001E12sv00001043sd0000108D* + ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 2 (VivoBook X202EV) + pci:v00008086d00001E12sv00001043sd00001477* ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 2 (N56VZ) @@ -65639,6 +66248,9 @@ pci:v00008086d00001E14* pci:v00008086d00001E16* ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 4 +pci:v00008086d00001E16sv00001043sd0000108D* + ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 4 (VivoBook X202EV) + pci:v00008086d00001E16sv00001043sd00001477* ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 4 (N56VZ) @@ -65672,6 +66284,9 @@ pci:v00008086d00001E1Esv00001849sd00001E1E* pci:v00008086d00001E20* ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family High Definition Audio Controller +pci:v00008086d00001E20sv00001043sd0000108D* + ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family High Definition Audio Controller (VivoBook X202EV) + pci:v00008086d00001E20sv00001043sd00001477* ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family High Definition Audio Controller (N56VZ) @@ -65690,6 +66305,9 @@ pci:v00008086d00001E20sv00001849sd00001898* pci:v00008086d00001E22* ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family SMBus Controller +pci:v00008086d00001E22sv00001043sd0000108D* + ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family SMBus Controller (VivoBook X202EV) + pci:v00008086d00001E22sv00001043sd00001477* ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family SMBus Controller (N56VZ) @@ -65714,6 +66332,9 @@ pci:v00008086d00001E25* pci:v00008086d00001E26* ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB Enhanced Host Controller #1 +pci:v00008086d00001E26sv00001043sd0000108D* + ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB Enhanced Host Controller #1 (VivoBook X202EV) + pci:v00008086d00001E26sv00001043sd00001477* ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB Enhanced Host Controller #1 (N56VZ) @@ -65729,6 +66350,9 @@ pci:v00008086d00001E26sv00001849sd00001E26* pci:v00008086d00001E2D* ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2 +pci:v00008086d00001E2Dsv00001043sd0000108D* + ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2 (VivoBook X202EV) + pci:v00008086d00001E2Dsv00001043sd00001477* ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2 (N56VZ) @@ -65747,6 +66371,9 @@ pci:v00008086d00001E31* pci:v00008086d00001E31sv0000103Csd000017AB* ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB xHCI Host Controller (ProBook 6570b) +pci:v00008086d00001E31sv00001043sd0000108D* + ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB xHCI Host Controller (VivoBook X202EV) + pci:v00008086d00001E31sv00001043sd00001477* ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB xHCI Host Controller (N56VZ) @@ -65765,6 +66392,9 @@ pci:v00008086d00001E33* pci:v00008086d00001E3A* ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family MEI Controller #1 +pci:v00008086d00001E3Asv00001043sd0000108D* + ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family MEI Controller #1 (VivoBook X202EV) + pci:v00008086d00001E3Asv00001043sd00001477* ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family MEI Controller #1 (N56VZ) @@ -65891,6 +66521,9 @@ pci:v00008086d00001E5D* pci:v00008086d00001E5E* ID_MODEL_FROM_DATABASE=7 Series Chipset Family LPC Controller +pci:v00008086d00001E5Esv00001043sd0000108D* + ID_MODEL_FROM_DATABASE=7 Series Chipset Family LPC Controller (VivoBook X202EV) + pci:v00008086d00001E5F* ID_MODEL_FROM_DATABASE=7 Series Chipset Family LPC Controller @@ -66411,7 +67044,7 @@ pci:v00008086d00002442sv0000147Bsd00000507* ID_MODEL_FROM_DATABASE=82801BA/BAM UHCI USB 1.1 Controller #1 (TH7II-RAID) pci:v00008086d00002442sv00008086sd00004532* - ID_MODEL_FROM_DATABASE=82801BA/BAM UHCI USB 1.1 Controller #1 (D815EEA2 mainboard) + ID_MODEL_FROM_DATABASE=82801BA/BAM UHCI USB 1.1 Controller #1 (Desktop Board D815EEA2/D815EFV) pci:v00008086d00002442sv00008086sd00004557* ID_MODEL_FROM_DATABASE=82801BA/BAM UHCI USB 1.1 Controller #1 (D815EGEW Mainboard) @@ -66456,7 +67089,7 @@ pci:v00008086d00002443sv000015D9sd00003280* ID_MODEL_FROM_DATABASE=82801BA/BAM SMBus Controller (Supermicro P4SBE Mainboard) pci:v00008086d00002443sv00008086sd00004532* - ID_MODEL_FROM_DATABASE=82801BA/BAM SMBus Controller (D815EEA2 mainboard) + ID_MODEL_FROM_DATABASE=82801BA/BAM SMBus Controller (Desktop Board D815EEA2/D815EFV) pci:v00008086d00002443sv00008086sd00004557* ID_MODEL_FROM_DATABASE=82801BA/BAM SMBus Controller (D815EGEW Mainboard) @@ -66495,7 +67128,7 @@ pci:v00008086d00002444sv0000147Bsd00000507* ID_MODEL_FROM_DATABASE=82801BA/BAM UHCI USB 1.1 Controller #2 (TH7II-RAID) pci:v00008086d00002444sv00008086sd00004532* - ID_MODEL_FROM_DATABASE=82801BA/BAM UHCI USB 1.1 Controller #2 (D815EEA2 mainboard) + ID_MODEL_FROM_DATABASE=82801BA/BAM UHCI USB 1.1 Controller #2 (Desktop Board D815EEA2/D815EFV) pci:v00008086d00002444sv00008086sd00005744* ID_MODEL_FROM_DATABASE=82801BA/BAM UHCI USB 1.1 Controller #2 (S845WD1-E mainboard) @@ -66536,6 +67169,9 @@ pci:v00008086d00002445sv0000147Bsd00000507* pci:v00008086d00002445sv00008086sd00004557* ID_MODEL_FROM_DATABASE=82801BA/BAM AC'97 Audio Controller (D815EGEW Mainboard) +pci:v00008086d00002445sv00008086sd00004656* + ID_MODEL_FROM_DATABASE=82801BA/BAM AC'97 Audio Controller (Desktop Board D815EFV) + pci:v00008086d00002446* ID_MODEL_FROM_DATABASE=82801BA/BAM AC'97 Modem Controller @@ -66744,7 +67380,7 @@ pci:v00008086d0000244Bsv000015D9sd00003280* ID_MODEL_FROM_DATABASE=82801BA IDE U100 Controller (Supermicro P4SBE Mainboard) pci:v00008086d0000244Bsv00008086sd00004532* - ID_MODEL_FROM_DATABASE=82801BA IDE U100 Controller (D815EEA2 mainboard) + ID_MODEL_FROM_DATABASE=82801BA IDE U100 Controller (Desktop Board D815EEA2/D815EFV) pci:v00008086d0000244Bsv00008086sd00004557* ID_MODEL_FROM_DATABASE=82801BA IDE U100 Controller (D815EGEW Mainboard) @@ -67022,6 +67658,9 @@ pci:v00008086d000024C2sv00001025sd00000064* pci:v00008086d000024C2sv00001028sd00000126* ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (Optiplex GX260) +pci:v00008086d000024C2sv00001028sd00000160* + ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (Dimension 2400) + pci:v00008086d000024C2sv00001028sd00000163* ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (Latitude D505) @@ -67103,6 +67742,9 @@ pci:v00008086d000024C3sv00001028sd00000126* pci:v00008086d000024C3sv00001028sd0000014F* ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (Latitude X300) +pci:v00008086d000024C3sv00001028sd00000160* + ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (Dimension 2400) + pci:v00008086d000024C3sv00001028sd0000018D* ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (Inspiron 700m/710m) @@ -67166,6 +67808,9 @@ pci:v00008086d000024C4sv00001025sd00000064* pci:v00008086d000024C4sv00001028sd00000126* ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (Optiplex GX260) +pci:v00008086d000024C4sv00001028sd00000160* + ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (Dimension 2400) + pci:v00008086d000024C4sv00001028sd00000163* ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (Latitude D505) @@ -67247,6 +67892,9 @@ pci:v00008086d000024C5sv00001028sd0000014F* pci:v00008086d000024C5sv00001028sd00000152* ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (Latitude D500) +pci:v00008086d000024C5sv00001028sd00000160* + ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (Dimension 2400) + pci:v00008086d000024C5sv00001028sd00000163* ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (Latitude D505) @@ -67295,9 +67943,6 @@ pci:v00008086d000024C5sv00001734sd00001005* pci:v00008086d000024C5sv00001734sd00001055* ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (Amilo M1420) -pci:v00008086d000024C5sv00008086sd000024C5* - ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (Dell Dimension 2400) - pci:v00008086d000024C6* ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller @@ -67370,6 +68015,9 @@ pci:v00008086d000024C7sv00001025sd00000064* pci:v00008086d000024C7sv00001028sd00000126* ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (Optiplex GX260) +pci:v00008086d000024C7sv00001028sd00000160* + ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (Dimension 2400) + pci:v00008086d000024C7sv00001028sd00000163* ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (Latitude D505) @@ -67478,6 +68126,9 @@ pci:v00008086d000024CBsv00001014sd00000267* pci:v00008086d000024CBsv00001028sd00000126* ID_MODEL_FROM_DATABASE=82801DB (ICH4) IDE Controller (Optiplex GX260) +pci:v00008086d000024CBsv00001028sd00000160* + ID_MODEL_FROM_DATABASE=82801DB (ICH4) IDE Controller (Dimension 2400) + pci:v00008086d000024CBsv00001043sd00008089* ID_MODEL_FROM_DATABASE=82801DB (ICH4) IDE Controller (P4B533) @@ -67538,6 +68189,9 @@ pci:v00008086d000024CDsv00001028sd00000139* pci:v00008086d000024CDsv00001028sd00000152* ID_MODEL_FROM_DATABASE=82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (Latitude D500) +pci:v00008086d000024CDsv00001028sd00000160* + ID_MODEL_FROM_DATABASE=82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (Dimension 2400) + pci:v00008086d000024CDsv00001028sd00000163* ID_MODEL_FROM_DATABASE=82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (Latitude D505) @@ -68165,6 +68819,18 @@ pci:v00008086d000024F0sv000010A9sd0000802E* pci:v00008086d000024F0sv000010A9sd0000802F* ID_MODEL_FROM_DATABASE=Omni-Path HFI Silicon 100 Series [discrete] (Omni-path HFI 100 Series, 2-port) +pci:v00008086d000024F0sv00008086sd00002628* + ID_MODEL_FROM_DATABASE=Omni-Path HFI Silicon 100 Series [discrete] (Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x16) + +pci:v00008086d000024F0sv00008086sd00002629* + ID_MODEL_FROM_DATABASE=Omni-Path HFI Silicon 100 Series [discrete] (Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x8) + +pci:v00008086d000024F0sv00008086sd0000262A* + ID_MODEL_FROM_DATABASE=Omni-Path HFI Silicon 100 Series [discrete] (Omni-Path HFI Adapter 100 Series, 2 Ports, Split PCIe x16) + +pci:v00008086d000024F0sv00008086sd0000262D* + ID_MODEL_FROM_DATABASE=Omni-Path HFI Silicon 100 Series [discrete] (Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x16, IO Module AHWKPTP100HF) + pci:v00008086d000024F1* ID_MODEL_FROM_DATABASE=Omni-Path HFI Silicon 100 Series [integrated] @@ -68321,6 +68987,9 @@ pci:v00008086d00002562sv00000E11sd000000B9* pci:v00008086d00002562sv00001014sd00000267* ID_MODEL_FROM_DATABASE=82845G/GL[Brookdale-G]/GE Chipset Integrated Graphics Device (NetVista A30p) +pci:v00008086d00002562sv00001028sd00000160* + ID_MODEL_FROM_DATABASE=82845G/GL[Brookdale-G]/GE Chipset Integrated Graphics Device (Dimension 2400) + pci:v00008086d00002562sv00001734sd00001003* ID_MODEL_FROM_DATABASE=82845G/GL[Brookdale-G]/GE Chipset Integrated Graphics Device (D1521 Mainboard (Fujitsu-Siemens)) @@ -73613,6 +74282,9 @@ pci:v00008086d00003165sv00008086sd00004010* pci:v00008086d00003165sv00008086sd00004210* ID_MODEL_FROM_DATABASE=Wireless 3165 (Dual Band Wireless AC 3165) +pci:v00008086d00003166* + ID_MODEL_FROM_DATABASE=Intel Dual Band Wireless-AC 3165 Plus Bluetooth + pci:v00008086d00003200* ID_MODEL_FROM_DATABASE=GD31244 PCI-X SATA HBA @@ -77747,6 +78419,9 @@ pci:v00008086d00009C31* pci:v00008086d00009C31sv000017AAsd00002214* ID_MODEL_FROM_DATABASE=8 Series USB xHCI HC (ThinkPad X240) +pci:v00008086d00009C31sv00008086sd00007270* + ID_MODEL_FROM_DATABASE=8 Series USB xHCI HC (Apple MacBookAir6,2 / MacBookPro11,1) + pci:v00008086d00009C35* ID_MODEL_FROM_DATABASE=8 Series SDIO Controller @@ -77921,6 +78596,75 @@ pci:v00008086d00009CE5* pci:v00008086d00009CE6* ID_MODEL_FROM_DATABASE=Wildcat Point-LP Serial IO GSPI Controller #1 +pci:v00008086d00009D03* + ID_MODEL_FROM_DATABASE=Sunrise Point-LP SATA Controller [AHCI mode] + +pci:v00008086d00009D14* + ID_MODEL_FROM_DATABASE=Sunrise Point-LP PCI Express Root Port #5 + +pci:v00008086d00009D15* + ID_MODEL_FROM_DATABASE=Sunrise Point-LP PCI Express Root Port #6 + +pci:v00008086d00009D21* + ID_MODEL_FROM_DATABASE=Sunrise Point-LP PMC + +pci:v00008086d00009D23* + ID_MODEL_FROM_DATABASE=Sunrise Point-LP SMBus + +pci:v00008086d00009D27* + ID_MODEL_FROM_DATABASE=Sunrise Point-LP Serial IO UART Controller #0 + +pci:v00008086d00009D28* + ID_MODEL_FROM_DATABASE=Sunrise Point-LP Serial IO UART Controller #1 + +pci:v00008086d00009D29* + ID_MODEL_FROM_DATABASE=Sunrise Point-LP Serial IO SPI Controller #0 + +pci:v00008086d00009D2A* + ID_MODEL_FROM_DATABASE=Sunrise Point-LP Serial IO SPI Controller #1 + +pci:v00008086d00009D2D* + ID_MODEL_FROM_DATABASE=Sunrise Point-LP Secure Digital IO Controller + +pci:v00008086d00009D2F* + ID_MODEL_FROM_DATABASE=Sunrise Point-LP USB 3.0 xHCI Controller + +pci:v00008086d00009D31* + ID_MODEL_FROM_DATABASE=Sunrise Point-LP Thermal subsystem + +pci:v00008086d00009D3A* + ID_MODEL_FROM_DATABASE=Sunrise Point-LP CSME HECI #1 + +pci:v00008086d00009D48* + ID_MODEL_FROM_DATABASE=Sunrise Point-LP LPC Controller + +pci:v00008086d00009D60* + ID_MODEL_FROM_DATABASE=Sunrise Point-LP Serial IO I2C Controller #0 + +pci:v00008086d00009D60sv00008086sd00009D60* + ID_MODEL_FROM_DATABASE=Sunrise Point-LP Serial IO I2C Controller #0 (100 Series PCH/Sunrise Point PCH I2C0 [Skylake/Kaby Lake LPSS I2C]) + +pci:v00008086d00009D61* + ID_MODEL_FROM_DATABASE=Sunrise Point-LP Serial IO I2C Controller #1 + +pci:v00008086d00009D62* + ID_MODEL_FROM_DATABASE=Sunrise Point-LP Serial IO I2C Controller #2 + +pci:v00008086d00009D63* + ID_MODEL_FROM_DATABASE=Sunrise Point-LP Serial IO I2C Controller #3 + +pci:v00008086d00009D64* + ID_MODEL_FROM_DATABASE=Sunrise Point-LP Serial IO I2C Controller #4 + +pci:v00008086d00009D65* + ID_MODEL_FROM_DATABASE=Sunrise Point-LP Serial IO I2C Controller #5 + +pci:v00008086d00009D66* + ID_MODEL_FROM_DATABASE=Sunrise Point-LP Serial IO UART Controller #2 + +pci:v00008086d00009D70* + ID_MODEL_FROM_DATABASE=Sunrise Point-LP HD Audio + pci:v00008086d0000A000* ID_MODEL_FROM_DATABASE=Atom Processor D4xx/D5xx/N4xx/N5xx DMI Bridge @@ -78057,16 +78801,16 @@ pci:v00008086d0000A126* ID_MODEL_FROM_DATABASE=Sunrise Point-H Northpeak pci:v00008086d0000A127* - ID_MODEL_FROM_DATABASE=Sunrise Point-H LPSS UART #0 + ID_MODEL_FROM_DATABASE=Sunrise Point-H Serial IO UART #0 pci:v00008086d0000A128* - ID_MODEL_FROM_DATABASE=Sunrise Point-H LPSS UART #1 + ID_MODEL_FROM_DATABASE=Sunrise Point-H Serial IO UART #1 pci:v00008086d0000A129* - ID_MODEL_FROM_DATABASE=Sunrise Point-H LPSS SPI #0 + ID_MODEL_FROM_DATABASE=Sunrise Point-H Serial IO SPI #0 pci:v00008086d0000A12A* - ID_MODEL_FROM_DATABASE=Sunrise Point-H LPSS SPI #1 + ID_MODEL_FROM_DATABASE=Sunrise Point-H Serial IO SPI #1 pci:v00008086d0000A12F* ID_MODEL_FROM_DATABASE=Sunrise Point-H USB 3.0 xHCI Controller @@ -78195,13 +78939,13 @@ pci:v00008086d0000A15F* ID_MODEL_FROM_DATABASE=Sunrise Point-H LPC Controller pci:v00008086d0000A160* - ID_MODEL_FROM_DATABASE=Sunrise Point-H LPSS I2C Controller #0 + ID_MODEL_FROM_DATABASE=Sunrise Point-H Serial IO I2C Controller #0 pci:v00008086d0000A161* - ID_MODEL_FROM_DATABASE=Sunrise Point-H LPSS I2C Controller #1 + ID_MODEL_FROM_DATABASE=Sunrise Point-H Serial IO I2C Controller #1 pci:v00008086d0000A166* - ID_MODEL_FROM_DATABASE=Sunrise Point-H LPSS UART Controller #2 + ID_MODEL_FROM_DATABASE=Sunrise Point-H Serial IO UART Controller #2 pci:v00008086d0000A167* ID_MODEL_FROM_DATABASE=Sunrise Point-H PCI Root Port #17 diff --git a/hwdb/20-usb-vendor-model.hwdb b/hwdb/20-usb-vendor-model.hwdb index 803c2c21fd..46b7ed9ab4 100644 --- a/hwdb/20-usb-vendor-model.hwdb +++ b/hwdb/20-usb-vendor-model.hwdb @@ -465,7 +465,7 @@ usb:v03F0p011D* ID_MODEL_FROM_DATABASE=Bluetooth 1.2 Interface [Broadcom BCM2035] usb:v03F0p0121* - ID_MODEL_FROM_DATABASE=HP49g+ Calculator + ID_MODEL_FROM_DATABASE=HP 39g+ [F2224A], 39gs [F2223A], 40gs [F2225A], 48gII [F2226A], 49g+ [F2228A], 50g [F2229A, NW240AA] usb:v03F0p0122* ID_MODEL_FROM_DATABASE=HID Internet Keyboard @@ -567,7 +567,7 @@ usb:v03F0p042A* ID_MODEL_FROM_DATABASE=LaserJet M1132 MFP usb:v03F0p0441* - ID_MODEL_FROM_DATABASE=HP Prime Calculator + ID_MODEL_FROM_DATABASE=Prime [NW280AA, G8X92AA] usb:v03F0p0504* ID_MODEL_FROM_DATABASE=DeskJet 885c @@ -632,6 +632,9 @@ usb:v03F0p0712* usb:v03F0p0714* ID_MODEL_FROM_DATABASE=Printing Support +usb:v03F0p0741* + ID_MODEL_FROM_DATABASE=Prime Wireless Kit [FOK65AA] + usb:v03F0p0801* ID_MODEL_FROM_DATABASE=ScanJet 7400c @@ -833,6 +836,9 @@ usb:v03F0p1524* usb:v03F0p1539* ID_MODEL_FROM_DATABASE=Mini Magnetic Stripe Reader +usb:v03F0p1541* + ID_MODEL_FROM_DATABASE=Prime [G8X92AA] + usb:v03F0p1602* ID_MODEL_FROM_DATABASE=PhotoSmart 330 series @@ -1130,6 +1136,9 @@ usb:v03F0p2A11* usb:v03F0p2A17* ID_MODEL_FROM_DATABASE=LaserJet 2430 +usb:v03F0p2A1D* + ID_MODEL_FROM_DATABASE=Integrated Module with Bluetooth 2.1 Wireless technology + usb:v03F0p2B11* ID_MODEL_FROM_DATABASE=PSC 2170 series @@ -1898,6 +1907,9 @@ usb:v03F0pC802* usb:v03F0pD104* ID_MODEL_FROM_DATABASE=Bluetooth Dongle +usb:v03F0pD507* + ID_MODEL_FROM_DATABASE=39gII [NW249AA] + usb:v03F0pEFBE* ID_MODEL_FROM_DATABASE=NEC Picty900 @@ -3719,6 +3731,9 @@ usb:v041Ep3090* usb:v041Ep30D3* ID_MODEL_FROM_DATABASE=Sound Blaster Play! +usb:v041Ep3100* + ID_MODEL_FROM_DATABASE=IR Receiver (SB0540) + usb:v041Ep3121* ID_MODEL_FROM_DATABASE=WoW tap chat @@ -5627,6 +5642,9 @@ usb:v0458p0083* usb:v0458p0087* ID_MODEL_FROM_DATABASE=Ergo 525V Laser Mouse +usb:v0458p0089* + ID_MODEL_FROM_DATABASE=Genius Traveler 350 + usb:v0458p00CA* ID_MODEL_FROM_DATABASE=Pen Mouse @@ -7031,6 +7049,9 @@ usb:v046Ap0081* usb:v046Ap0106* ID_MODEL_FROM_DATABASE=R-300 Wireless Mouse Receiver +usb:v046Ap010D* + ID_MODEL_FROM_DATABASE=MX-Board 3.0 Keyboard + usb:v046B* ID_VENDOR_FROM_DATABASE=American Megatrends, Inc. @@ -11898,7 +11919,7 @@ usb:v04B3p4484* ID_MODEL_FROM_DATABASE=SMSC USB20H04 3-Port Hub [ThinkPad X4 UltraBase, Wistron S Note-3 Media Slice] usb:v04B3p4485* - ID_MODEL_FROM_DATABASE=Serial Converter + ID_MODEL_FROM_DATABASE=ThinkPad Dock Hub usb:v04B3p4524* ID_MODEL_FROM_DATABASE=40 Character Vacuum Fluorescent Display @@ -12570,7 +12591,7 @@ usb:v04B8p087C* ID_MODEL_FROM_DATABASE=PX-1700F usb:v04B8p087D* - ID_MODEL_FROM_DATABASE=PX-B750F + ID_MODEL_FROM_DATABASE=PX-B750F/WP-4525 Series usb:v04B8p087F* ID_MODEL_FROM_DATABASE=PX-403A @@ -15071,6 +15092,9 @@ usb:v04F3p0103* usb:v04F3p01A4* ID_MODEL_FROM_DATABASE=Wireless Keyboard +usb:v04F3p0201* + ID_MODEL_FROM_DATABASE=Touchscreen + usb:v04F3p0210* ID_MODEL_FROM_DATABASE=Optical Mouse @@ -16406,6 +16430,9 @@ usb:v04F9p035D* usb:v04F9p035E* ID_MODEL_FROM_DATABASE=MFC-1910NW +usb:v04F9p0360* + ID_MODEL_FROM_DATABASE=DCP-1618W + usb:v04F9p0361* ID_MODEL_FROM_DATABASE=MFC-1919NW @@ -18795,61 +18822,61 @@ usb:v056Ap0010* ID_MODEL_FROM_DATABASE=ET-0405 [Graphire] usb:v056Ap0011* - ID_MODEL_FROM_DATABASE=Graphire 2 4x5 + ID_MODEL_FROM_DATABASE=ET-0405A [Graphire2 (4x5)] usb:v056Ap0012* - ID_MODEL_FROM_DATABASE=Graphire 2 5x7 + ID_MODEL_FROM_DATABASE=ET-0507A [Graphire2 (5x7)] usb:v056Ap0013* - ID_MODEL_FROM_DATABASE=Graphire 3 4x5 + ID_MODEL_FROM_DATABASE=CTE-430 [Graphire3 (4x5)] usb:v056Ap0014* - ID_MODEL_FROM_DATABASE=Graphire 3 6x8 + ID_MODEL_FROM_DATABASE=CTE-630 [Graphire3 (6x8)] usb:v056Ap0015* - ID_MODEL_FROM_DATABASE=Graphire 4 4x5 + ID_MODEL_FROM_DATABASE=CTE-440 [Graphire4 (4x5)] usb:v056Ap0016* - ID_MODEL_FROM_DATABASE=Graphire 4 6x8 + ID_MODEL_FROM_DATABASE=CTE-640 [Graphire4 (6x8)] usb:v056Ap0017* - ID_MODEL_FROM_DATABASE=CTE-450 [Bamboo Fun] + ID_MODEL_FROM_DATABASE=CTE-450 [Bamboo Fun (small)] usb:v056Ap0018* - ID_MODEL_FROM_DATABASE=Bamboo Fun 6x8 + ID_MODEL_FROM_DATABASE=CTE-650 [Bamboo Fun (medium)] usb:v056Ap0019* - ID_MODEL_FROM_DATABASE=Bamboo One Medium + ID_MODEL_FROM_DATABASE=CTE-631 [Bamboo One] usb:v056Ap0020* - ID_MODEL_FROM_DATABASE=Intuos 4x5 + ID_MODEL_FROM_DATABASE=GD-0405 [Intuos (4x5)] usb:v056Ap0021* - ID_MODEL_FROM_DATABASE=Intuos 6x8 + ID_MODEL_FROM_DATABASE=GD-0608 [Intuos (6x8)] usb:v056Ap0022* - ID_MODEL_FROM_DATABASE=Intuos 9x12 + ID_MODEL_FROM_DATABASE=GD-0912 [Intuos (9x12)] usb:v056Ap0023* - ID_MODEL_FROM_DATABASE=Intuos 12x12 + ID_MODEL_FROM_DATABASE=GD-1212 [Intuos (12x12)] usb:v056Ap0024* - ID_MODEL_FROM_DATABASE=Intuos 12x18 + ID_MODEL_FROM_DATABASE=GD-1218 [Intuos (12x18)] usb:v056Ap0026* - ID_MODEL_FROM_DATABASE=Intuos5 touch S + ID_MODEL_FROM_DATABASE=PTH-450 [Intuos5 touch (S)] usb:v056Ap0027* - ID_MODEL_FROM_DATABASE=Intuos5 touch M + ID_MODEL_FROM_DATABASE=PTH-650 [Intuos5 touch (M)] usb:v056Ap0028* - ID_MODEL_FROM_DATABASE=Intuos5 touch L + ID_MODEL_FROM_DATABASE=PTH-850 [Intuos5 touch (L)] usb:v056Ap0029* - ID_MODEL_FROM_DATABASE=Intuos5 S + ID_MODEL_FROM_DATABASE=PTK-450 [Intuos5 (S)] usb:v056Ap002A* - ID_MODEL_FROM_DATABASE=Intuos5 M + ID_MODEL_FROM_DATABASE=PTK-650 [Intuos5 (M)] usb:v056Ap0030* ID_MODEL_FROM_DATABASE=PL400 @@ -18879,49 +18906,70 @@ usb:v056Ap0039* ID_MODEL_FROM_DATABASE=DTU-710 usb:v056Ap003F* - ID_MODEL_FROM_DATABASE=Cintiq 21UX (DTZ-2100) + ID_MODEL_FROM_DATABASE=DTZ-2100 [Cintiq 21UX] usb:v056Ap0041* - ID_MODEL_FROM_DATABASE=Intuos2 4x5 + ID_MODEL_FROM_DATABASE=XD-0405-U [Intuos2 (4x5)] usb:v056Ap0042* - ID_MODEL_FROM_DATABASE=Intuos2 6x8 + ID_MODEL_FROM_DATABASE=XD-0608-U [Intuos2 (6x8)] usb:v056Ap0043* - ID_MODEL_FROM_DATABASE=Intuos2 9x12 + ID_MODEL_FROM_DATABASE=XD-0912-U [Intuos2 (9x12)] usb:v056Ap0044* - ID_MODEL_FROM_DATABASE=Intuos2 12x12 + ID_MODEL_FROM_DATABASE=XD-1212-U [Intuos2 (12x12)] usb:v056Ap0045* - ID_MODEL_FROM_DATABASE=Intuos2 12x18 + ID_MODEL_FROM_DATABASE=XD-1218-U [Intuos2 (12x18)] usb:v056Ap0047* ID_MODEL_FROM_DATABASE=Intuos2 6x8 +usb:v056Ap0057* + ID_MODEL_FROM_DATABASE=DTK-2241 + +usb:v056Ap0059* + ID_MODEL_FROM_DATABASE=DTH-2242 tablet + +usb:v056Ap005B* + ID_MODEL_FROM_DATABASE=DTH-2200 [Cintiq 22HD Touch] tablet + +usb:v056Ap005D* + ID_MODEL_FROM_DATABASE=DTH-2242 touchscreen + +usb:v056Ap005E* + ID_MODEL_FROM_DATABASE=DTH-2200 [Cintiq 22HD Touch] touchscreen + usb:v056Ap0060* - ID_MODEL_FROM_DATABASE=Volito + ID_MODEL_FROM_DATABASE=FT-0405 [Volito, PenPartner, PenStation (4x5)] usb:v056Ap0061* - ID_MODEL_FROM_DATABASE=PenStation2 + ID_MODEL_FROM_DATABASE=FT-0203 [Volito, PenPartner, PenStation (2x3)] usb:v056Ap0062* - ID_MODEL_FROM_DATABASE=Volito2 4x5 + ID_MODEL_FROM_DATABASE=CTF-420 [Volito2] usb:v056Ap0063* - ID_MODEL_FROM_DATABASE=Volito2 2x3 + ID_MODEL_FROM_DATABASE=CTF-220 [BizTablet] usb:v056Ap0064* - ID_MODEL_FROM_DATABASE=PenPartner2 + ID_MODEL_FROM_DATABASE=CTF-221 [PenPartner2] usb:v056Ap0065* - ID_MODEL_FROM_DATABASE=Bamboo + ID_MODEL_FROM_DATABASE=MTE-450 [Bamboo] usb:v056Ap0069* - ID_MODEL_FROM_DATABASE=Bamboo One + ID_MODEL_FROM_DATABASE=CTF-430 [Bamboo One] + +usb:v056Ap006A* + ID_MODEL_FROM_DATABASE=CTE-460 [Bamboo One Pen (S)] + +usb:v056Ap006B* + ID_MODEL_FROM_DATABASE=CTE-660 [Bamboo One Pen (M)] usb:v056Ap0081* - ID_MODEL_FROM_DATABASE=Graphire Wireless 6x8 + ID_MODEL_FROM_DATABASE=CTE-630BT [Graphire Wireless (6x8)] usb:v056Ap0084* ID_MODEL_FROM_DATABASE=Wireless adapter for Bamboo tablets @@ -18932,41 +18980,44 @@ usb:v056Ap0090* usb:v056Ap0093* ID_MODEL_FROM_DATABASE=TPC93 +usb:v056Ap0097* + ID_MODEL_FROM_DATABASE=TPC97 + usb:v056Ap009A* ID_MODEL_FROM_DATABASE=TPC9A usb:v056Ap00B0* - ID_MODEL_FROM_DATABASE=Intuos3 4x5 + ID_MODEL_FROM_DATABASE=PTZ-430 [Intuos3 (4x5)] usb:v056Ap00B1* - ID_MODEL_FROM_DATABASE=Intuos3 6x18 + ID_MODEL_FROM_DATABASE=PTZ-630 [Intuos3 (6x8)] usb:v056Ap00B2* - ID_MODEL_FROM_DATABASE=Intuos3 9x12 + ID_MODEL_FROM_DATABASE=PTZ-930 [Intuos3 (9x12)] usb:v056Ap00B3* - ID_MODEL_FROM_DATABASE=Intuos3 12x12 + ID_MODEL_FROM_DATABASE=PTZ-1230 [Intuos3 (12x12)] usb:v056Ap00B4* - ID_MODEL_FROM_DATABASE=Intuos3 12x19 + ID_MODEL_FROM_DATABASE=PTZ-1231W [Intuos3 (12x19)] usb:v056Ap00B5* - ID_MODEL_FROM_DATABASE=Intuos3 6x11 (PTZ-631W) + ID_MODEL_FROM_DATABASE=PTZ-631W [Intuos3 (6x11)] usb:v056Ap00B7* - ID_MODEL_FROM_DATABASE=Intuos3 4x6 + ID_MODEL_FROM_DATABASE=PTZ-431W [Intuos3 (4x6)] usb:v056Ap00B8* - ID_MODEL_FROM_DATABASE=Intuos4 4x6 + ID_MODEL_FROM_DATABASE=PTK-440 [Intuos4 (4x6)] usb:v056Ap00B9* - ID_MODEL_FROM_DATABASE=Intuos4 6x9 + ID_MODEL_FROM_DATABASE=PTK-640 [Intuos4 (6x9)] usb:v056Ap00BA* - ID_MODEL_FROM_DATABASE=Intuos4 8x13 + ID_MODEL_FROM_DATABASE=PTK-840 [Intuos4 (8x13)] usb:v056Ap00BB* - ID_MODEL_FROM_DATABASE=Intuos4 12x19 + ID_MODEL_FROM_DATABASE=PTK-1240 [Intuos4 (12x19)] usb:v056Ap00C0* ID_MODEL_FROM_DATABASE=DTF-521 @@ -18975,64 +19026,181 @@ usb:v056Ap00C4* ID_MODEL_FROM_DATABASE=DTF-720 usb:v056Ap00C5* - ID_MODEL_FROM_DATABASE=Cintiq 20WSX + ID_MODEL_FROM_DATABASE=DTZ-20WSX [Cintiq 20WSX] usb:v056Ap00C6* - ID_MODEL_FROM_DATABASE=Cintiq 12WX + ID_MODEL_FROM_DATABASE=DTZ-12WX [Cintiq 12WX] usb:v056Ap00C7* ID_MODEL_FROM_DATABASE=DTU-1931 usb:v056Ap00CC* - ID_MODEL_FROM_DATABASE=Cintiq 21UX (DTK-2100) + ID_MODEL_FROM_DATABASE=DTK-2100 [Cintiq 21UX] + +usb:v056Ap00CE* + ID_MODEL_FROM_DATABASE=DTU-2231 + +usb:v056Ap00D0* + ID_MODEL_FROM_DATABASE=CTT-460 [Bamboo Touch] usb:v056Ap00D1* - ID_MODEL_FROM_DATABASE=Bamboo Pen & Touch (CTH-460-DE) + ID_MODEL_FROM_DATABASE=CTH-460 [Bamboo Pen & Touch] + +usb:v056Ap00D2* + ID_MODEL_FROM_DATABASE=CTH-461 [Bamboo Fun/Craft/Comic Pen & Touch (S)] usb:v056Ap00D3* - ID_MODEL_FROM_DATABASE=Bamboo Fun (CTH-661) + ID_MODEL_FROM_DATABASE=CTH-661 [Bamboo Fun/Comic Pen & Touch (M)] usb:v056Ap00D4* - ID_MODEL_FROM_DATABASE=Bamboo Pen (CTL-460) + ID_MODEL_FROM_DATABASE=CTL-460 [Bamboo Pen (S)] + +usb:v056Ap00D5* + ID_MODEL_FROM_DATABASE=CTL-660 [Bamboo Pen (M)] usb:v056Ap00D6* - ID_MODEL_FROM_DATABASE=Bamboo Pen & Touch (CTH-460) + ID_MODEL_FROM_DATABASE=CTH-460 [Bamboo Pen & Touch] + +usb:v056Ap00D7* + ID_MODEL_FROM_DATABASE=CTH-461 [Bamboo Fun/Craft/Comic Pen & Touch (S)] + +usb:v056Ap00D8* + ID_MODEL_FROM_DATABASE=CTH-661 [Bamboo Fun/Comic Pen & Touch (M)] + +usb:v056Ap00D9* + ID_MODEL_FROM_DATABASE=CTT-460 [Bamboo Touch] + +usb:v056Ap00DA* + ID_MODEL_FROM_DATABASE=CTH-461SE [Bamboo Pen & Touch Special Edition (S)] usb:v056Ap00DB* - ID_MODEL_FROM_DATABASE=Bamboo Fun (CTH-661SE-NL) + ID_MODEL_FROM_DATABASE=CTH-661SE [Bamboo Pen & Touch Special Edition (M)] + +usb:v056Ap00DC* + ID_MODEL_FROM_DATABASE=CTT-470 [Bamboo Touch] usb:v056Ap00DD* - ID_MODEL_FROM_DATABASE=Bamboo Pen (CTL-470) + ID_MODEL_FROM_DATABASE=CTL-470 [Bamboo Connect] usb:v056Ap00DE* ID_MODEL_FROM_DATABASE=CTH-470 [Bamboo Fun Pen & Touch] +usb:v056Ap00DF* + ID_MODEL_FROM_DATABASE=CTH-670 [Bamboo Create/Fun] + +usb:v056Ap00E2* + ID_MODEL_FROM_DATABASE=TPCE2 + +usb:v056Ap00E3* + ID_MODEL_FROM_DATABASE=TPCE3 + +usb:v056Ap00E5* + ID_MODEL_FROM_DATABASE=TPCE5 + +usb:v056Ap00E6* + ID_MODEL_FROM_DATABASE=TPCE6 + +usb:v056Ap00EC* + ID_MODEL_FROM_DATABASE=TPCEC + +usb:v056Ap00ED* + ID_MODEL_FROM_DATABASE=TPCED + +usb:v056Ap00EF* + ID_MODEL_FROM_DATABASE=TPCEF + +usb:v056Ap00F4* + ID_MODEL_FROM_DATABASE=DTK-2400 [Cintiq 24HD] tablet + usb:v056Ap00F6* - ID_MODEL_FROM_DATABASE=Cintiq 24HD touch (DTH-2400) touchscreen + ID_MODEL_FROM_DATABASE=DTH-2400 [Cintiq 24HD touch] touchscreen usb:v056Ap00F8* - ID_MODEL_FROM_DATABASE=Cintiq 24HD touch (DTH-2400) tablet + ID_MODEL_FROM_DATABASE=DTH-2400 [Cintiq 24HD touch] tablet + +usb:v056Ap00FA* + ID_MODEL_FROM_DATABASE=DTK-2200 [Cintiq 22HD] tablet + +usb:v056Ap00FB* + ID_MODEL_FROM_DATABASE=DTU-1031 + +usb:v056Ap0100* + ID_MODEL_FROM_DATABASE=TPC100 + +usb:v056Ap0101* + ID_MODEL_FROM_DATABASE=TPC101 + +usb:v056Ap010D* + ID_MODEL_FROM_DATABASE=TPC10D + +usb:v056Ap010E* + ID_MODEL_FROM_DATABASE=TPC10E + +usb:v056Ap010F* + ID_MODEL_FROM_DATABASE=TPC10F + +usb:v056Ap0116* + ID_MODEL_FROM_DATABASE=TPC116 + +usb:v056Ap012C* + ID_MODEL_FROM_DATABASE=TPC12C + +usb:v056Ap0300* + ID_MODEL_FROM_DATABASE=CTL-471 [Bamboo Splash, One by Wacom (S)] + +usb:v056Ap0301* + ID_MODEL_FROM_DATABASE=CTL-671 [One by Wacom (M)] usb:v056Ap0302* - ID_MODEL_FROM_DATABASE=Intuos CTH480S2 [Manga] + ID_MODEL_FROM_DATABASE=CTH-480 [Intuos Pen & Touch (S)] + +usb:v056Ap0303* + ID_MODEL_FROM_DATABASE=CTH-680 [Intuos Pen & Touch (M)] + +usb:v056Ap0304* + ID_MODEL_FROM_DATABASE=DTK-1300 [Cintiq 13HD] usb:v056Ap0307* - ID_MODEL_FROM_DATABASE=Cintiq Companion Hybrid 13HD (DTH-A1300) tablet + ID_MODEL_FROM_DATABASE=DTH-A1300 [Cintiq Companion Hybrid] tablet usb:v056Ap0309* - ID_MODEL_FROM_DATABASE=Cintiq Companion Hybrid 13HD (DTH-A1300) touchscreen + ID_MODEL_FROM_DATABASE=DTH-A1300 [Cintiq Companion Hybrid] touchscreen usb:v056Ap030E* - ID_MODEL_FROM_DATABASE=Intuos Pen Small (CTL480) + ID_MODEL_FROM_DATABASE=CTL-480 [Intuos Pen (S)] + +usb:v056Ap0314* + ID_MODEL_FROM_DATABASE=PTH-451 [Intuos pro (S)] + +usb:v056Ap0315* + ID_MODEL_FROM_DATABASE=PTH-651 [Intuos pro (M)] + +usb:v056Ap0317* + ID_MODEL_FROM_DATABASE=PTH-851 [Intuos pro (L)] + +usb:v056Ap032F* + ID_MODEL_FROM_DATABASE=DTU-1031X usb:v056Ap0400* ID_MODEL_FROM_DATABASE=PenPartner 4x5 +usb:v056Ap4001* + ID_MODEL_FROM_DATABASE=TPC4001 + +usb:v056Ap4004* + ID_MODEL_FROM_DATABASE=TPC4004 + usb:v056Ap4850* ID_MODEL_FROM_DATABASE=PenPartner 6x8 +usb:v056Ap5000* + ID_MODEL_FROM_DATABASE=TPC5000 + +usb:v056Ap5002* + ID_MODEL_FROM_DATABASE=TPC5002 + usb:v056Ap5010* - ID_MODEL_FROM_DATABASE=Thinkpad T550 touchscreen + ID_MODEL_FROM_DATABASE=TPC5010 usb:v056B* ID_VENDOR_FROM_DATABASE=Decicon, Inc. @@ -20546,6 +20714,9 @@ usb:v058Fp6387* usb:v058Fp6390* ID_MODEL_FROM_DATABASE=USB 2.0-IDE bridge +usb:v058Fp6391* + ID_MODEL_FROM_DATABASE=IDE Bridge + usb:v058Fp9213* ID_MODEL_FROM_DATABASE=MacAlly Kbd Hub @@ -20588,6 +20759,9 @@ usb:v058Fp9368* usb:v058Fp9380* ID_MODEL_FROM_DATABASE=Flash Drive +usb:v058Fp9381* + ID_MODEL_FROM_DATABASE=Flash Drive + usb:v058Fp9382* ID_MODEL_FROM_DATABASE=Acer/Sweex Flash drive @@ -21563,6 +21737,9 @@ usb:v05ACp8281* usb:v05ACp8286* ID_MODEL_FROM_DATABASE=Bluetooth Host Controller +usb:v05ACp828C* + ID_MODEL_FROM_DATABASE=Bluetooth Host Controller + usb:v05ACp8300* ID_MODEL_FROM_DATABASE=Built-in iSight (no firmware loaded) @@ -21950,6 +22127,9 @@ usb:v05CAp1812* usb:v05CAp1814* ID_MODEL_FROM_DATABASE=HD Webcam +usb:v05CAp1815* + ID_MODEL_FROM_DATABASE=Dell Laptop Integrated Webcam + usb:v05CAp1820* ID_MODEL_FROM_DATABASE=Integrated Webcam @@ -22367,6 +22547,9 @@ usb:v05DAp20ED* usb:v05DAp20EE* ID_MODEL_FROM_DATABASE=Micortek ScanMaker X12USL +usb:v05DAp2838* + ID_MODEL_FROM_DATABASE=RT2832U + usb:v05DAp3008* ID_MODEL_FROM_DATABASE=Scanner @@ -33638,6 +33821,90 @@ usb:v0A85* usb:v0A86* ID_VENDOR_FROM_DATABASE=NITGen Co., Ltd +usb:v0A89* + ID_VENDOR_FROM_DATABASE=Aktiv + +usb:v0A89p0001* + ID_MODEL_FROM_DATABASE=Guardant Stealth/Net + +usb:v0A89p0002* + ID_MODEL_FROM_DATABASE=Guardant ID + +usb:v0A89p0003* + ID_MODEL_FROM_DATABASE=Guardant Stealth 2 + +usb:v0A89p0004* + ID_MODEL_FROM_DATABASE=Rutoken + +usb:v0A89p0005* + ID_MODEL_FROM_DATABASE=Guardant Fidus + +usb:v0A89p0006* + ID_MODEL_FROM_DATABASE=Guardant Stealth 3 + +usb:v0A89p0007* + ID_MODEL_FROM_DATABASE=Guardant Stealth 2 + +usb:v0A89p0008* + ID_MODEL_FROM_DATABASE=Guardant Stealth 3 Sign/Time + +usb:v0A89p0009* + ID_MODEL_FROM_DATABASE=Guardant Code + +usb:v0A89p000A* + ID_MODEL_FROM_DATABASE=Guardant Sign Pro + +usb:v0A89p000B* + ID_MODEL_FROM_DATABASE=Guardant Sign Pro HID + +usb:v0A89p000C* + ID_MODEL_FROM_DATABASE=Guardant Stealth 3 Sign/Time + +usb:v0A89p000D* + ID_MODEL_FROM_DATABASE=Guardant Code HID + +usb:v0A89p000F* + ID_MODEL_FROM_DATABASE=Guardant System Firmware Update + +usb:v0A89p0020* + ID_MODEL_FROM_DATABASE=Rutoken S + +usb:v0A89p0025* + ID_MODEL_FROM_DATABASE=Rutoken lite + +usb:v0A89p0026* + ID_MODEL_FROM_DATABASE=Rutoken lite HID + +usb:v0A89p002A* + ID_MODEL_FROM_DATABASE=Rutoken Mass Storage + +usb:v0A89p002B* + ID_MODEL_FROM_DATABASE=Guardant Mass Storage + +usb:v0A89p0030* + ID_MODEL_FROM_DATABASE=Rutoken ECP + +usb:v0A89p0040* + ID_MODEL_FROM_DATABASE=Rutoken ECP HID + +usb:v0A89p0060* + ID_MODEL_FROM_DATABASE=Rutoken Magistra + +usb:v0A89p0061* + ID_MODEL_FROM_DATABASE=Rutoken Magistra + +usb:v0A89p0069* + ID_MODEL_FROM_DATABASE=Reader + +usb:v0A89p0080* + ID_MODEL_FROM_DATABASE=Rutoken PinPad Ex + +usb:v0A89p0081* + ID_MODEL_FROM_DATABASE=Rutoken PinPad In + +usb:v0A89p0082* + ID_MODEL_FROM_DATABASE=Rutoken PinPad 2 + usb:v0A8D* ID_VENDOR_FROM_DATABASE=Picturetel @@ -48467,6 +48734,9 @@ usb:v1871* usb:v1871p0101* ID_MODEL_FROM_DATABASE=UVC camera (Bresser microscope) +usb:v1871p0141* + ID_MODEL_FROM_DATABASE=Camera + usb:v1871p0D01* ID_MODEL_FROM_DATABASE=USB2.0 Camera @@ -48548,6 +48818,9 @@ usb:v18A5p0216* usb:v18A5p0218* ID_MODEL_FROM_DATABASE=External Hard Drive +usb:v18A5p0224* + ID_MODEL_FROM_DATABASE=Store 'n' Go Micro Plus + usb:v18A5p0227* ID_MODEL_FROM_DATABASE=Pocket Hard Drive @@ -48555,11 +48828,20 @@ usb:v18A5p022B* ID_MODEL_FROM_DATABASE=Portable Hard Drive (Store'n'Go) usb:v18A5p0237* - ID_MODEL_FROM_DATABASE=Portable Harddrive (500 GB) + ID_MODEL_FROM_DATABASE=Portable Harddrive + +usb:v18A5p0243* + ID_MODEL_FROM_DATABASE=Flash Drive (Store'n'Go) usb:v18A5p0302* ID_MODEL_FROM_DATABASE=Flash Drive +usb:v18A5p0304* + ID_MODEL_FROM_DATABASE=Store 'n' Go + +usb:v18A5p4123* + ID_MODEL_FROM_DATABASE=Store N Go + usb:v18B1* ID_VENDOR_FROM_DATABASE=Petalynx @@ -48611,6 +48893,18 @@ usb:v18CDpCAFE* usb:v18D1* ID_VENDOR_FROM_DATABASE=Google Inc. +usb:v18D1p0001* + ID_MODEL_FROM_DATABASE=Onda V972 (storage access) + +usb:v18D1p0003* + ID_MODEL_FROM_DATABASE=Android-powered device using AllWinner Technology SoC + +usb:v18D1p0006* + ID_MODEL_FROM_DATABASE=Onda V972 MTP + +usb:v18D1p0008* + ID_MODEL_FROM_DATABASE=Onda V972 PTP (camera) + usb:v18D1p0D02* ID_MODEL_FROM_DATABASE=Celkon A88 @@ -48641,6 +48935,9 @@ usb:v18D1p4E22* usb:v18D1p4E24* ID_MODEL_FROM_DATABASE=Nexus S (tether) +usb:v18D1p4E30* + ID_MODEL_FROM_DATABASE=Galaxy Nexus (fastboot) + usb:v18D1p4E40* ID_MODEL_FROM_DATABASE=Nexus 7 (fastboot) @@ -48653,17 +48950,29 @@ usb:v18D1p4E42* usb:v18D1p4E43* ID_MODEL_FROM_DATABASE=Nexus 7 (PTP) +usb:v18D1p4E44* + ID_MODEL_FROM_DATABASE=Nexus 7 2012 (PTP) + +usb:v18D1p4EE0* + ID_MODEL_FROM_DATABASE=Nexus 4 (bootloader) + usb:v18D1p4EE1* - ID_MODEL_FROM_DATABASE=Nexus 4 / 10 + ID_MODEL_FROM_DATABASE=Nexus Device (MTP) usb:v18D1p4EE2* - ID_MODEL_FROM_DATABASE=Nexus 4 (debug) + ID_MODEL_FROM_DATABASE=Nexus Device (debug) usb:v18D1p4EE3* - ID_MODEL_FROM_DATABASE=Nexus 4 (tether) + ID_MODEL_FROM_DATABASE=Nexus 4/5/7/10 (tether) usb:v18D1p4EE4* - ID_MODEL_FROM_DATABASE=Nexus 4 (debug + tether) + ID_MODEL_FROM_DATABASE=Nexus 4/5/7/10 (debug + tether) + +usb:v18D1p4EE5* + ID_MODEL_FROM_DATABASE=Nexus 4 (PTP) + +usb:v18D1p4EE6* + ID_MODEL_FROM_DATABASE=Nexus 4/5 (PTP + debug) usb:v18D1p7102* ID_MODEL_FROM_DATABASE=Toshiba Thrive tablet @@ -48671,6 +48980,12 @@ usb:v18D1p7102* usb:v18D1pB004* ID_MODEL_FROM_DATABASE=Pandigital / B&N Novel 9" tablet +usb:v18D1pD001* + ID_MODEL_FROM_DATABASE=Nexus 4 (fastboot) + +usb:v18D1pD002* + ID_MODEL_FROM_DATABASE=Nexus 4 (debug) + usb:v18D1pD109* ID_MODEL_FROM_DATABASE=LG G2x MTP @@ -52358,6 +52673,12 @@ usb:v2478* usb:v2478p2008* ID_MODEL_FROM_DATABASE=U209-000-R Serial Port +usb:v248A* + ID_VENDOR_FROM_DATABASE=Maxxter + +usb:v248Ap8366* + ID_MODEL_FROM_DATABASE=Wireless Optical Mouse ACT-MUSW-002 + usb:v249C* ID_VENDOR_FROM_DATABASE=M2Tech s.r.l. diff --git a/hwdb/60-evdev.hwdb b/hwdb/60-evdev.hwdb index 218d1c963d..d060d81f61 100644 --- a/hwdb/60-evdev.hwdb +++ b/hwdb/60-evdev.hwdb @@ -133,6 +133,17 @@ evdev:name:Atmel maXTouch Touch*:dmi:bvn*:bvr*:bd*:svnGOOGLE:pnSamus* EVDEV_ABS_36=::10 ######################################### +# HP +######################################### + +# HP Pavilion dm4 +evdev:name:SynPS/2 Synaptics TouchPad*:dmi:*svnHewlett-Packard:pnHPPaviliondm4* + EVDEV_ABS_00=1360:5563:47 + EVDEV_ABS_01=1269:4618:61 + EVDEV_ABS_35=1360:5563:47 + EVDEV_ABS_36=1269:4618:61 + +######################################### # Lenovo ######################################### diff --git a/hwdb/70-pointingstick.hwdb b/hwdb/70-pointingstick.hwdb index 6820331784..b2af467d5f 100644 --- a/hwdb/70-pointingstick.hwdb +++ b/hwdb/70-pointingstick.hwdb @@ -79,6 +79,10 @@ evdev:name:*DualPoint Stick:dmi:bvn*:bvr*:bd*:svnDellInc.:pnLatitudeD620*:pvr* POINTINGSTICK_CONST_ACCEL=0.5 +# Latitude E6320 +evdev:name:*DualPoint Stick:dmi:bvn*:bvr*:bd*:svnDellInc.:pnLatitudeE6320*:pvr* + POINTINGSTICK_CONST_ACCEL=2.0 + # Latitude E6400 evdev:name:*DualPoint Stick:dmi:bvn*:bvr*:bd*:svnDellInc.:pnLatitudeE6400*:pvr* POINTINGSTICK_CONST_ACCEL=1.5 diff --git a/m4/attributes.m4 b/m4/attributes.m4 index db5df250f4..51ac88be61 100644 --- a/m4/attributes.m4 +++ b/m4/attributes.m4 @@ -43,7 +43,7 @@ AC_DEFUN([CC_CHECK_FLAG_APPEND], [ AC_CACHE_CHECK([if $CC supports flag $3 in envvar $2], AS_TR_SH([cc_cv_$2_$3]), [eval "AS_TR_SH([cc_save_$2])='${$2}'" - eval "AS_TR_SH([$2])='-Werror `echo "$3" | sed 's/^-Wno-/-W/'`'" + eval "AS_TR_SH([$2])='${cc_save_$2} -Werror `echo "$3" | sed 's/^-Wno-/-W/'`'" AC_LINK_IFELSE([AC_LANG_SOURCE(ifelse([$4], [], [int main(void) { return 0; } ], [$4]))], diff --git a/man/journalctl.xml b/man/journalctl.xml index b57afb6ebf..b281f26b45 100644 --- a/man/journalctl.xml +++ b/man/journalctl.xml @@ -91,8 +91,14 @@ paths may be specified. If a file path refers to an executable file, this is equivalent to an <literal>_EXE=</literal> match for the canonicalized binary path. Similarly, if a path refers - to a device node, this is equivalent to a - <literal>_KERNEL_DEVICE=</literal> match for the device.</para> + to a device node then match is added for the kernel name of the + device (<literal>_KERNEL_DEVICE=</literal>). Also, matches for the + kernel names of all the parent devices are added automatically. + Device node paths are not stable across reboots, therefore match + for the current boot id (<literal>_BOOT_ID=</literal>) is + always added as well. Note that only the log entries for + the existing device nodes maybe queried by providing path to + the device node.</para> <para>Additional constraints may be added using options <option>--boot</option>, <option>--unit=</option>, etc., to @@ -572,6 +578,13 @@ </varlistentry> <varlistentry> + <term><option>-N</option></term> + <term><option>--fields</option></term> + + <listitem><para>Print all field names currently used in all entries of the journal.</para></listitem> + </varlistentry> + + <varlistentry> <term><option>--system</option></term> <term><option>--user</option></term> diff --git a/man/nss-myhostname.xml b/man/nss-myhostname.xml index 859bec29e3..251bdecbad 100644 --- a/man/nss-myhostname.xml +++ b/man/nss-myhostname.xml @@ -71,9 +71,9 @@ is on the local loopback) and the IPv6 address ::1 (which is the local host).</para></listitem> - <listitem><para>The hostname <literal>localhost</literal> is - resolved to the IP addresses 127.0.0.1 and - ::1.</para></listitem> + <listitem><para>The hostname <literal>localhost</literal> (as well as any hostname ending in + <literal>.localhost</literal>, <literal>.localdomain</literal> or equal to <literal>localdomain</literal>) is + resolved to the IP addresses 127.0.0.1 and ::1.</para></listitem> <listitem><para>The hostname <literal>gateway</literal> is resolved to all current default routing gateway addresses, diff --git a/man/sd-journal.xml b/man/sd-journal.xml index a1185d372b..09747a480c 100644 --- a/man/sd-journal.xml +++ b/man/sd-journal.xml @@ -77,6 +77,8 @@ <citerefentry><refentrytitle>sd_journal_get_realtime_usec</refentrytitle><manvolnum>3</manvolnum></citerefentry>, <citerefentry><refentrytitle>sd_journal_add_match</refentrytitle><manvolnum>3</manvolnum></citerefentry>, <citerefentry><refentrytitle>sd_journal_seek_head</refentrytitle><manvolnum>3</manvolnum></citerefentry>, + <citerefentry><refentrytitle>sd_journal_query_enumerate</refentrytitle><manvolnum>3</manvolnum></citerefentry>, + <citerefentry><refentrytitle>sd_journal_enumerate_fields</refentrytitle><manvolnum>3</manvolnum></citerefentry>, <citerefentry><refentrytitle>sd_journal_get_cursor</refentrytitle><manvolnum>3</manvolnum></citerefentry>, <citerefentry><refentrytitle>sd_journal_get_cutoff_realtime_usec</refentrytitle><manvolnum>3</manvolnum></citerefentry>, <citerefentry><refentrytitle>sd_journal_get_cutoff_monotonic_usec</refentrytitle><manvolnum>3</manvolnum></citerefentry>, @@ -111,6 +113,8 @@ <citerefentry><refentrytitle>sd_journal_get_realtime_usec</refentrytitle><manvolnum>3</manvolnum></citerefentry>, <citerefentry><refentrytitle>sd_journal_add_match</refentrytitle><manvolnum>3</manvolnum></citerefentry>, <citerefentry><refentrytitle>sd_journal_seek_head</refentrytitle><manvolnum>3</manvolnum></citerefentry>, + <citerefentry><refentrytitle>sd_journal_query_enumerate</refentrytitle><manvolnum>3</manvolnum></citerefentry>, + <citerefentry><refentrytitle>sd_journal_enumerate_fields</refentrytitle><manvolnum>3</manvolnum></citerefentry>, <citerefentry><refentrytitle>sd_journal_get_cursor</refentrytitle><manvolnum>3</manvolnum></citerefentry>, <citerefentry><refentrytitle>sd_journal_get_cutoff_realtime_usec</refentrytitle><manvolnum>3</manvolnum></citerefentry>, <citerefentry><refentrytitle>sd_journal_get_cutoff_monotonic_usec</refentrytitle><manvolnum>3</manvolnum></citerefentry>, diff --git a/man/sd_event_add_time.xml b/man/sd_event_add_time.xml index 142fa80f8f..a2c0d54b56 100644 --- a/man/sd_event_add_time.xml +++ b/man/sd_event_add_time.xml @@ -114,41 +114,28 @@ <refsect1> <title>Description</title> - <para><function>sd_event_add_time()</function> adds a new timer - event source to an event loop. The event loop object is specified - in the <parameter>event</parameter> parameter, the event source - object is returned in the <parameter>source</parameter> - parameter. The <parameter>clock</parameter> parameter takes a - clock identifier, one of <constant>CLOCK_REALTIME</constant>, - <constant>CLOCK_MONOTONIC</constant>, - <constant>CLOCK_BOOTTIME</constant>, - <constant>CLOCK_REALTIME_ALARM</constant>, or - <constant>CLOCK_BOOTTIME_ALARM</constant>. See - <citerefentry><refentrytitle>timerfd_create</refentrytitle><manvolnum>2</manvolnum></citerefentry> - for details regarding the various types of clocks. The - <parameter>usec</parameter> parameter specifies the earliest time, - in microseconds (µs), relative to the clock's epoch, when - the timer shall be triggered. If a time already in the past is - specified (including <constant>0</constant>), this timer source - "fires" immediately and is ready to be dispatched. The - <parameter>accuracy</parameter> parameter specifies an additional - accuracy value in µs specifying how much the timer event may be - delayed. Use <constant>0</constant> to select the default accuracy - (250ms). Use 1µs for maximum accuracy. Consider specifying - 60000000µs (1min) or larger for long-running events that may be - delayed substantially. Picking higher accuracy values allows the - system to coalesce timer events more aggressively, improving - power efficiency. The <parameter>handler</parameter> parameter - shall reference a function to call when the timer elapses. The - handler function will be passed the - <parameter>userdata</parameter> pointer, which may be chosen - freely by the caller. The handler is also passed the configured - trigger time, even if it is actually called - slightly later, subject to the specified accuracy value, - the kernel timer slack (see - <citerefentry><refentrytitle>prctl</refentrytitle><manvolnum>2</manvolnum></citerefentry>), - and additional scheduling latencies. To query the actual time the - handler was called use + <para><function>sd_event_add_time()</function> adds a new timer event source to an event loop. The event loop + object is specified in the <parameter>event</parameter> parameter, the event source object is returned in the + <parameter>source</parameter> parameter. The <parameter>clock</parameter> parameter takes a clock identifier, one + of <constant>CLOCK_REALTIME</constant>, <constant>CLOCK_MONOTONIC</constant>, <constant>CLOCK_BOOTTIME</constant>, + <constant>CLOCK_REALTIME_ALARM</constant>, or <constant>CLOCK_BOOTTIME_ALARM</constant>. See + <citerefentry><refentrytitle>timerfd_create</refentrytitle><manvolnum>2</manvolnum></citerefentry> for details + regarding the various types of clocks. The <parameter>usec</parameter> parameter specifies the earliest time, in + microseconds (µs), relative to the clock's epoch, when the timer shall be triggered. If a time already in the past + is specified (including <constant>0</constant>), this timer source "fires" immediately and is ready to be + dispatched. If the paramater is specified as <constant>UINT64_MAX</constant> the timer event will never elapse, + which may be used as an alternative to explicitly disabling a timer event source with + <citerefentry><refentrytitle>sd_event_source_set_enabled</refentrytitle><manvolnum>3</manvolnum></citerefentry>. The + <parameter>accuracy</parameter> parameter specifies an additional accuracy value in µs specifying how much the + timer event may be delayed. Use <constant>0</constant> to select the default accuracy (250ms). Use 1µs for maximum + accuracy. Consider specifying 60000000µs (1min) or larger for long-running events that may be delayed + substantially. Picking higher accuracy values allows the system to coalesce timer events more aggressively, + improving power efficiency. The <parameter>handler</parameter> parameter shall reference a function to call when + the timer elapses. The handler function will be passed the <parameter>userdata</parameter> pointer, which may be + chosen freely by the caller. The handler is also passed the configured trigger time, even if it is actually called + slightly later, subject to the specified accuracy value, the kernel timer slack (see + <citerefentry><refentrytitle>prctl</refentrytitle><manvolnum>2</manvolnum></citerefentry>), and additional + scheduling latencies. To query the actual time the handler was called use <citerefentry><refentrytitle>sd_event_now</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para> <para>By default, the timer will elapse once diff --git a/man/sd_journal_enumerate_fields.xml b/man/sd_journal_enumerate_fields.xml new file mode 100644 index 0000000000..fa5884106b --- /dev/null +++ b/man/sd_journal_enumerate_fields.xml @@ -0,0 +1,161 @@ +<?xml version='1.0'?> <!--*-nxml-*--> +<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" + "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"> + +<!-- + This file is part of systemd. + + Copyright 2016 Lennart Poettering + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see <http://www.gnu.org/licenses/>. +--> + +<refentry id="sd_journal_enumerate_fields"> + + <refentryinfo> + <title>sd_journal_enumerate_fields</title> + <productname>systemd</productname> + + <authorgroup> + <author> + <contrib>Developer</contrib> + <firstname>Lennart</firstname> + <surname>Poettering</surname> + <email>lennart@poettering.net</email> + </author> + </authorgroup> + </refentryinfo> + + <refmeta> + <refentrytitle>sd_journal_enumerate_fields</refentrytitle> + <manvolnum>3</manvolnum> + </refmeta> + + <refnamediv> + <refname>sd_journal_enumerate_fields</refname> + <refname>sd_journal_restart_fields</refname> + <refname>SD_JOURNAL_FOREACH_FIELD</refname> + <refpurpose>Read used field names from the journal</refpurpose> + </refnamediv> + + <refsynopsisdiv> + <funcsynopsis> + <funcsynopsisinfo>#include <systemd/sd-journal.h></funcsynopsisinfo> + + <funcprototype> + <funcdef>int <function>sd_journal_enumerate_fields</function></funcdef> + <paramdef>sd_journal *<parameter>j</parameter></paramdef> + <paramdef>const char **<parameter>field</parameter></paramdef> + </funcprototype> + + <funcprototype> + <funcdef>void <function>sd_journal_restart_fields</function></funcdef> + <paramdef>sd_journal *<parameter>j</parameter></paramdef> + </funcprototype> + + <funcprototype> + <funcdef><function>SD_JOURNAL_FOREACH_FIELD</function></funcdef> + <paramdef>sd_journal *<parameter>j</parameter></paramdef> + <paramdef>const char *<parameter>field</parameter></paramdef> + </funcprototype> + + </funcsynopsis> + </refsynopsisdiv> + + <refsect1> + <title>Description</title> + + <para><function>sd_journal_enumerate_fields()</function> may be used to iterate through all field names used in the + opened journal files. On each invocation the next field name is returned. The order of the returned field names is + not defined. It takes two arguments: the journal context object, plus a pointer to a constant string pointer where + the field name is stored in. The returned data is in a read-only memory map and is only valid until the next + invocation of <function>sd_journal_enumerate_fields()</function>. Note that this call is subject to the data field + size threshold as controlled by <function>sd_journal_set_data_threshold()</function>.</para> + + <para><function>sd_journal_restart_fields()</function> resets the field name enumeration index to the beginning of + the list. The next invocation of <function>sd_journal_enumerate_fields()</function> will return the first field + name again.</para> + + <para>The <function>SD_JOURNAL_FOREACH_FIELD()</function> macro may be used as a handy wrapper around + <function>sd_journal_restart_fields()</function> and <function>sd_journal_enumerate_fields()</function>.</para> + + <para>These functions currently are not influenced by matches set with <function>sd_journal_add_match()</function> + but this might change in a later version of this software.</para> + + <para>To retrieve the possible values a specific field can take use + <citerefentry><refentrytitle>sd_journal_query_unique</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para> + </refsect1> + + <refsect1> + <title>Return Value</title> + + <para><function>sd_journal_enumerate_fields()</function> returns a + positive integer if the next field name has been read, 0 when no + more field names are known, or a negative errno-style error code. + <function>sd_journal_restart_fields()</function> returns + nothing.</para> + </refsect1> + + <refsect1> + <title>Notes</title> + + <para>The <function>sd_journal_enumerate_fields()</function> and <function>sd_journal_restart_fields()</function> + interfaces are available as a shared library, which can be compiled and linked to with the + <constant>libsystemd</constant> <citerefentry + project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry> file.</para> + </refsect1> + + <refsect1> + <title>Examples</title> + + <para>Use the <function>SD_JOURNAL_FOREACH_FIELD</function> macro to iterate through all field names in use in the + current journal.</para> + + <programlisting>#include <stdio.h> +#include <string.h> +#include <systemd/sd-journal.h> + +int main(int argc, char *argv[]) { + sd_journal *j; + const char *field; + int r; + + r = sd_journal_open(&j, SD_JOURNAL_LOCAL_ONLY); + if (r < 0) { + fprintf(stderr, "Failed to open journal: %s\n", strerror(-r)); + return 1; + } + SD_JOURNAL_FOREACH_FIELD(j, field) + printf("%s\n", field); + sd_journal_close(j); + return 0; +}</programlisting> + + </refsect1> + + <refsect1> + <title>See Also</title> + + <para> + <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>, + <citerefentry><refentrytitle>systemd.journal-fields</refentrytitle><manvolnum>7</manvolnum></citerefentry>, + <citerefentry><refentrytitle>sd-journal</refentrytitle><manvolnum>3</manvolnum></citerefentry>, + <citerefentry><refentrytitle>sd_journal_open</refentrytitle><manvolnum>3</manvolnum></citerefentry>, + <citerefentry><refentrytitle>sd_journal_query_unique</refentrytitle><manvolnum>3</manvolnum></citerefentry>, + <citerefentry><refentrytitle>sd_journal_get_data</refentrytitle><manvolnum>3</manvolnum></citerefentry>, + <citerefentry><refentrytitle>sd_journal_add_match</refentrytitle><manvolnum>3</manvolnum></citerefentry> + </para> + </refsect1> + +</refentry> diff --git a/man/sd_journal_query_unique.xml b/man/sd_journal_query_unique.xml index ac0e5f633f..dbff55c105 100644 --- a/man/sd_journal_query_unique.xml +++ b/man/sd_journal_query_unique.xml @@ -128,6 +128,11 @@ <para>Note that these functions currently are not influenced by matches set with <function>sd_journal_add_match()</function> but this might change in a later version of this software.</para> + + <para>To enumerate all field names currently in use (and thus all suitable field parameters for + <function>sd_journal_query_unique()</function>), use the + <citerefentry><refentrytitle>sd_journal_enumerate_fields</refentrytitle><manvolnum>3</manvolnum></citerefentry> + call.</para> </refsect1> <refsect1> @@ -167,25 +172,25 @@ #include <systemd/sd-journal.h> int main(int argc, char *argv[]) { - sd_journal *j; - const void *d; - size_t l; - int r; - - r = sd_journal_open(&j, SD_JOURNAL_LOCAL_ONLY); - if (r < 0) { - fprintf(stderr, "Failed to open journal: %s\n", strerror(-r)); - return 1; - } - r = sd_journal_query_unique(j, "_SYSTEMD_UNIT"); - if (r < 0) { - fprintf(stderr, "Failed to query journal: %s\n", strerror(-r)); - return 1; - } - SD_JOURNAL_FOREACH_UNIQUE(j, d, l) - printf("%.*s\n", (int) l, (const char*) d); - sd_journal_close(j); - return 0; + sd_journal *j; + const void *d; + size_t l; + int r; + + r = sd_journal_open(&j, SD_JOURNAL_LOCAL_ONLY); + if (r < 0) { + fprintf(stderr, "Failed to open journal: %s\n", strerror(-r)); + return 1; + } + r = sd_journal_query_unique(j, "_SYSTEMD_UNIT"); + if (r < 0) { + fprintf(stderr, "Failed to query journal: %s\n", strerror(-r)); + return 1; + } + SD_JOURNAL_FOREACH_UNIQUE(j, d, l) + printf("%.*s\n", (int) l, (const char*) d); + sd_journal_close(j); + return 0; }</programlisting> </refsect1> @@ -198,6 +203,7 @@ int main(int argc, char *argv[]) { <citerefentry><refentrytitle>systemd.journal-fields</refentrytitle><manvolnum>7</manvolnum></citerefentry>, <citerefentry><refentrytitle>sd-journal</refentrytitle><manvolnum>3</manvolnum></citerefentry>, <citerefentry><refentrytitle>sd_journal_open</refentrytitle><manvolnum>3</manvolnum></citerefentry>, + <citerefentry><refentrytitle>sd_journal_enumerate_fields</refentrytitle><manvolnum>3</manvolnum></citerefentry>, <citerefentry><refentrytitle>sd_journal_get_data</refentrytitle><manvolnum>3</manvolnum></citerefentry>, <citerefentry><refentrytitle>sd_journal_add_match</refentrytitle><manvolnum>3</manvolnum></citerefentry> </para> diff --git a/man/systemctl.xml b/man/systemctl.xml index cce7861139..1480bf8380 100644 --- a/man/systemctl.xml +++ b/man/systemctl.xml @@ -1134,7 +1134,7 @@ kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service <tbody> <row> <entry><literal>enabled</literal></entry> - <entry morerows='1'>Enabled through creating symlinks encoded in the <literal>[Install]</literal> section (permanently or just in <filename>/run</filename>).</entry> + <entry morerows='1'>Enabled via <filename>.wants/</filename>, <filename>.requires/</filename> or alias symlinks (permanently in <filename>/etc/systemd/system/</filename>, or transiently in <filename>/run/systemd/system/</filename>).</entry> <entry morerows='1'>0</entry> </row> <row> @@ -1698,24 +1698,19 @@ kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service <refsect2> <title>Parameter Syntax</title> - <para>Unit commands listed above take either a single unit name - (designated as <replaceable>NAME</replaceable>), or multiple - unit specifications (designated as - <replaceable>PATTERN</replaceable>...). In the first case, the - unit name with or without a suffix must be given. If the suffix - is not specified, systemctl will append a suitable suffix, - <literal>.service</literal> by default, and a type-specific - suffix in case of commands which operate only on specific unit - types. For example, + <para>Unit commands listed above take either a single unit name (designated as <replaceable>NAME</replaceable>), + or multiple unit specifications (designated as <replaceable>PATTERN</replaceable>...). In the first case, the + unit name with or without a suffix must be given. If the suffix is not specified (unit name is "abbreviated"), + systemctl will append a suitable suffix, <literal>.service</literal> by default, and a type-specific suffix in + case of commands which operate only on specific unit types. For example, <programlisting># systemctl start sshd</programlisting> and <programlisting># systemctl start sshd.service</programlisting> are equivalent, as are <programlisting># systemctl isolate default</programlisting> and <programlisting># systemctl isolate default.target</programlisting> - Note that (absolute) paths to device nodes are automatically - converted to device unit names, and other (absolute) paths to - mount unit names. + Note that (absolute) paths to device nodes are automatically converted to device unit names, and other (absolute) + paths to mount unit names. <programlisting># systemctl status /dev/sda # systemctl status /home</programlisting> are equivalent to: @@ -1740,9 +1735,8 @@ kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service loaded are not considered for glob expansion. </para> - <para>For unit file commands, the specified - <replaceable>NAME</replaceable> should be the full name of the - unit file, or the absolute path to the unit file: + <para>For unit file commands, the specified <replaceable>NAME</replaceable> should be the name of the unit file + (possibly abbreviated, see above), or the absolute path to the unit file: <programlisting># systemctl enable foo.service</programlisting> or <programlisting># systemctl link /path/to/foo.service</programlisting> diff --git a/man/systemd-activate.xml b/man/systemd-activate.xml index c950a0836d..995e6eecce 100644 --- a/man/systemd-activate.xml +++ b/man/systemd-activate.xml @@ -60,27 +60,21 @@ <refsect1> <title>Description</title> - <para><command>systemd-activate</command> can be used to - launch a socket-activated daemon from the command line for - testing purposes. It can also be used to launch single instances - of the daemon per connection (inetd-style). + <para><command>systemd-activate</command> may be used to launch a socket-activated service binary from the command + line for testing purposes. It may also be used to launch individual instances of the service binary per connection. </para> <para>The daemon to launch and its options should be specified after options intended for <command>systemd-activate</command>. </para> - <para>If the <option>-a</option> option is given, file descriptor - of the connection will be used as the standard input and output of - the launched process. Otherwise, standard input and output will be - inherited, and sockets will be passed through file descriptors 3 - and higher. Sockets passed through <varname>$LISTEN_FDS</varname> - to <command>systemd-activate</command> will be passed through to - the daemon, in the original positions. Other sockets specified - with <option>--listen</option> will use consecutive descriptors. - By default, <command>systemd-activate</command> listens on a - stream socket, use <option>--datagram</option> to listen on - a datagram socket instead (see below). + <para>If the <option>--inetd</option> option is given, the socket file descriptor will be used as the standard + input and output of the launched process. Otherwise, standard input and output will be inherited, and sockets will + be passed through file descriptors 3 and higher. Sockets passed through <varname>$LISTEN_FDS</varname> to + <command>systemd-activate</command> will be passed through to the daemon, in the original positions. Other sockets + specified with <option>--listen=</option> will use consecutive descriptors. By default, + <command>systemd-activate</command> listens on a stream socket, use <option>--datagram</option> and + <option>--seqpacket</option> to listen on datagram or sequential packet sockets instead (see below). </para> </refsect1> @@ -101,16 +95,32 @@ <term><option>-a</option></term> <term><option>--accept</option></term> - <listitem><para>Launch a separate instance of daemon per - connection and pass the connection socket as standard input - and standard output.</para></listitem> + <listitem><para>Launch an instance of the service binary for each connection and pass the connection + socket.</para></listitem> </varlistentry> <varlistentry> <term><option>-d</option></term> <term><option>--datagram</option></term> - <listitem><para>Listen on a datagram socket, instead of a stream socket.</para></listitem> + <listitem><para>Listen on a datagram socket (<constant>SOCK_DGRAM</constant>), instead of a stream socket + (<constant>SOCK_STREAM</constant>). May not be combined with <option>--seqpacket</option>.</para></listitem> + </varlistentry> + + <varlistentry> + <term><option>--seqpacket</option></term> + + <listitem><para>Listen on a sequential packet socket (<constant>SOCK_SEQPACKET</constant>), instead of a stream + socket (<constant>SOCK_STREAM</constant>). May not be combined with + <option>--datagram</option>.</para></listitem> + </varlistentry> + + <varlistentry> + <term><option>--inetd</option></term> + + <listitem><para>Use the inetd protocol for passing file descriptors, i.e. as standard input and standard + output, instead of the new-style protocol for passing file descriptors using <varname>$LISTEN_FDS</varname> + (see above).</para></listitem> </varlistentry> <varlistentry> @@ -170,7 +180,7 @@ <example> <title>Run an echo server on port 2000</title> - <programlisting>$ /usr/lib/systemd/systemd-activate -l 2000 -a cat</programlisting> + <programlisting>$ /usr/lib/systemd/systemd-activate -l 2000 --inetd -a cat</programlisting> </example> <example> diff --git a/man/systemd-nspawn.xml b/man/systemd-nspawn.xml index 28b91dee24..86cdb4e124 100644 --- a/man/systemd-nspawn.xml +++ b/man/systemd-nspawn.xml @@ -249,15 +249,75 @@ </varlistentry> <varlistentry> + <term><option>-a</option></term> + <term><option>--as-pid2</option></term> + + <listitem><para>Invoke the shell or specified program as process ID (PID) 2 instead of PID 1 (init). By + default, if neither this option nor <option>--boot</option> is used, the selected binary is run as process with + PID 1, a mode only suitable for programs that are aware of the special semantics that the process with PID 1 + has on UNIX. For example, it needs to reap all processes reparented to it, and should implement + <command>sysvinit</command> compatible signal handling (specifically: it needs to reboot on SIGINT, reexecute + on SIGTERM, reload configuration on SIGHUP, and so on). With <option>--as-pid2</option> a minimal stub init + process is run as PID 1 and the selected binary is executed as PID 2 (and hence does not need to implement any + special semantics). The stub init process will reap processes as necessary and react appropriately to + signals. It is recommended to use this mode to invoke arbitrary commands in containers, unless they have been + modified to run correctly as PID 1. Or in other words: this switch should be used for pretty much all commands, + except when the command refers to an init or shell implementation, as these are generally capable of running + correctly as PID 1). This option may not be combined with <option>--boot</option> or + <option>--share-system</option>.</para> + </listitem> + </varlistentry> + + <varlistentry> <term><option>-b</option></term> <term><option>--boot</option></term> - <listitem><para>Automatically search for an init binary and - invoke it instead of a shell or a user supplied program. If - this option is used, arguments specified on the command line - are used as arguments for the init binary. This option may not - be combined with <option>--share-system</option>. - </para></listitem> + <listitem><para>Automatically search for an init binary and invoke it as PID 1, instead of a shell or a user + supplied program. If this option is used, arguments specified on the command line are used as arguments for the + init binary. This option may not be combined with <option>--as-pid2</option> or + <option>--share-system</option>.</para> + + <para>The following table explains the different modes of invocation and relationship to + <option>--as-pid2</option> (see above):</para> + + <table> + <title>Invocation Mode</title> + <tgroup cols='2' align='left' colsep='1' rowsep='1'> + <colspec colname="switch" /> + <colspec colname="explanation" /> + <thead> + <row> + <entry>Switch</entry> + <entry>Explanation</entry> + </row> + </thead> + <tbody> + <row> + <entry>Neither <option>--as-pid2</option> nor <option>--boot</option> specified</entry> + <entry>The passed parameters are interpreted as command line, which is executed as PID 1 in the container.</entry> + </row> + + <row> + <entry><option>--as-pid2</option> specified</entry> + <entry>The passed parameters are interpreted as command line, which are executed as PID 2 in the container. A stub init process is run as PID 1.</entry> + </row> + + <row> + <entry><option>--boot</option> specified</entry> + <entry>An init binary as automatically searched and run as PID 1 in the container. The passed parameters are used as invocation parameters for this process.</entry> + </row> + + </tbody> + </tgroup> + </table> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>--chdir=</option></term> + + <listitem><para>Change to the specified working directory before invoking the process in the container. Expects + an absolute path in the container's file system namespace.</para></listitem> </varlistentry> <varlistentry> diff --git a/man/systemd-resolve.xml b/man/systemd-resolve.xml index 0defa2d7fb..802d9cbbe6 100644 --- a/man/systemd-resolve.xml +++ b/man/systemd-resolve.xml @@ -126,7 +126,7 @@ When this option is specified one or more e-mail address must be specified.</para> <para>The <option>--statistics</option> switch may be used to show resolver statistics, including information about - the number of succesful and failed DNSSEC validations.</para> + the number of successful and failed DNSSEC validations.</para> <para>The <option>--reset-statistics</option> may be used to reset various statistics counters maintained the resolver, including those shown in the <option>--statistics</option> output. This operation requires root diff --git a/man/systemd-resolved.service.xml b/man/systemd-resolved.service.xml index 4e144b5c98..7a9e23a2c6 100644 --- a/man/systemd-resolved.service.xml +++ b/man/systemd-resolved.service.xml @@ -87,15 +87,18 @@ is on the local loopback) and the IPv6 address ::1 (which is the local host).</para></listitem> - <listitem><para>The hostname <literal>localhost</literal> is - resolved to the IP addresses 127.0.0.1 and - ::1.</para></listitem> + <listitem><para>The hostname <literal>localhost</literal> (as well as any hostname ending in + <literal>.localhost</literal>, <literal>.localdomain</literal> or equal to <literal>localdomain</literal>) is + resolved to the IP addresses 127.0.0.1 and ::1.</para></listitem> <listitem><para>The hostname <literal>gateway</literal> is resolved to all current default routing gateway addresses, ordered by their metric. This assigns a stable hostname to the current gateway, useful for referencing it independently of the current network configuration state.</para></listitem> + + <listitem><para>The mappings defined in <filename>/etc/hosts</filename> are resolved to their configured + addresses and back.</para></listitem> </itemizedlist> <para>Lookup requests are routed to the available DNS servers @@ -135,6 +138,10 @@ <para>Note that <filename>/run/systemd/resolve/resolv.conf</filename> should not be used directly by applications, but only through a symlink from <filename>/etc/resolv.conf</filename>.</para> + + <para>See the <ulink url="http://www.freedesktop.org/wiki/Software/systemd/resolved"> resolved D-Bus API + Documentation</ulink> for information about the APIs <filename>systemd-resolved</filename> provides.</para> + </refsect1> <refsect1> @@ -146,6 +153,7 @@ <citerefentry><refentrytitle>nss-resolve</refentrytitle><manvolnum>8</manvolnum></citerefentry>, <citerefentry><refentrytitle>systemd-resolve</refentrytitle><manvolnum>1</manvolnum></citerefentry>, <citerefentry project='man-pages'><refentrytitle>resolv.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>, + <citerefentry project='man-pages'><refentrytitle>hosts</refentrytitle><manvolnum>5</manvolnum></citerefentry>, <citerefentry><refentrytitle>systemd.network</refentrytitle><manvolnum>5</manvolnum></citerefentry>, <citerefentry><refentrytitle>systemd-networkd.service</refentrytitle><manvolnum>8</manvolnum></citerefentry> </para> diff --git a/man/systemd.network.xml b/man/systemd.network.xml index f88751b672..adfe1ac9b3 100644 --- a/man/systemd.network.xml +++ b/man/systemd.network.xml @@ -412,7 +412,7 @@ domains specified here are preferably routed to the DNS servers configured for this interface. If a domain name is prefixed with <literal>~</literal>, the domain name becomes a pure "routing" domain, is used for DNS query routing purposes only and is not used in the described domain search logic. By specifying a - routing domain of <literal>~.</literal> (the tilda indicating definition of a routing domain, the dot + routing domain of <literal>~.</literal> (the tilde indicating definition of a routing domain, the dot referring to the DNS root domain which is the implied suffix of all valid DNS names) it is possible to route all DNS traffic preferably to the DNS server specified for this interface. The route domain logic is particularly useful on multi-homed hosts with DNS servers serving particular private DNS zones on each @@ -717,7 +717,7 @@ <varlistentry> <term><varname>UseDomains=</varname></term> <listitem> - <para>Takes a boolean argument, or a the special value <literal>route</literal>. When true, the domain name + <para>Takes a boolean argument, or the special value <literal>route</literal>. When true, the domain name received from the DHCP server will be used as DNS search domain over this link, similar to the effect of the <option>Domains=</option> setting. If set to <literal>route</literal>, the domain name received from the DHCP server will be used for routing DNS queries only, but not for searching, similar to the effect of diff --git a/man/systemd.nspawn.xml b/man/systemd.nspawn.xml index f39e1ad42c..c07a4b0243 100644 --- a/man/systemd.nspawn.xml +++ b/man/systemd.nspawn.xml @@ -141,15 +141,21 @@ <varlistentry> <term><varname>Boot=</varname></term> - <listitem><para>Takes a boolean argument, which defaults to off. If - enabled, <command>systemd-nspawn</command> will automatically - search for an <filename>init</filename> executable and invoke - it. In this case, the specified parameters using - <varname>Parameters=</varname> are passed as additional - arguments to the <filename>init</filename> process. This - setting corresponds to the <option>--boot</option> switch on - the <command>systemd-nspawn</command> command - line. </para></listitem> + <listitem><para>Takes a boolean argument, which defaults to off. If enabled, <command>systemd-nspawn</command> + will automatically search for an <filename>init</filename> executable and invoke it. In this case, the + specified parameters using <varname>Parameters=</varname> are passed as additional arguments to the + <filename>init</filename> process. This setting corresponds to the <option>--boot</option> switch on the + <command>systemd-nspawn</command> command line. This option may not be combined with + <varname>ProcessTwo=yes</varname>.</para></listitem> + </varlistentry> + + <varlistentry> + <term><varname>ProcessTwo=</varname></term> + + <listitem><para>Takes a boolean argument, which defaults to off. If enabled, the specified program is run as + PID 2. A stub init process is run as PID 1. This setting corresponds to the <option>--as-pid2</option> switch + on the <command>systemd-nspawn</command> command line. This option may not be combined with + <varname>Boot=yes</varname>.</para></listitem> </varlistentry> <varlistentry> @@ -187,6 +193,14 @@ </varlistentry> <varlistentry> + <term><varname>WorkingDirectory=</varname></term> + + <listitem><para>Selects the working directory for the process invoked in the container. Expects an absolute + path in the container's file system namespace. This corresponds to the <option>--chdir=</option> command line + switch.</para></listitem> + </varlistentry> + + <varlistentry> <term><varname>Capability=</varname></term> <term><varname>DropCapability=</varname></term> diff --git a/man/systemd.resource-control.xml b/man/systemd.resource-control.xml index b6b38fde58..08cdf06e23 100644 --- a/man/systemd.resource-control.xml +++ b/man/systemd.resource-control.xml @@ -424,23 +424,6 @@ </varlistentry> <varlistentry> - <term><varname>NetClass=</varname></term> - <listitem><para>Configures a network class number to assign to the - unit. This value will be set to the - <literal>net_cls.class_id</literal> property of the - <literal>net_cls</literal> cgroup of the unit. The directive - accepts a numerical value (for fixed number assignment) and the keyword - <literal>auto</literal> (for dynamic allocation). Network traffic of - all processes inside the unit will have the network class ID assigned - by the kernel. Also see - the kernel docs for - <ulink url="https://www.kernel.org/doc/Documentation/cgroups/net_cls.txt">net_cls controller</ulink> - and - <citerefentry><refentrytitle>systemd.resource-control</refentrytitle><manvolnum>5</manvolnum></citerefentry>. - </para></listitem> - </varlistentry> - - <varlistentry> <term><varname>Slice=</varname></term> <listitem> diff --git a/man/systemd.service.xml b/man/systemd.service.xml index d7b19ee27f..e55534700a 100644 --- a/man/systemd.service.xml +++ b/man/systemd.service.xml @@ -273,42 +273,6 @@ </varlistentry> <varlistentry> - <term><varname>BusPolicy=</varname></term> - - <listitem><para>If specified, a custom kdbus - endpoint will be created and installed as the default bus node - for the service. Such a custom endpoint can hold an own set of - policy rules that are enforced on top of the bus-wide ones. - The custom endpoint is named after the service it was created - for, and its node will be bind-mounted over the default bus - node location, so the service can only access the bus through - its own endpoint. Note that custom bus endpoints default to a - "deny all" policy. Hence, if at least one - <varname>BusPolicy=</varname> directive is given, you have to - make sure to add explicit rules for everything the service - should be able to do.</para> - <para>The value of this directive is comprised - of two parts; the bus name, and a verb to - specify to granted access, which is one of - <option>see</option>, - <option>talk</option>, or - <option>own</option>. - <option>talk</option> implies - <option>see</option>, and <option>own</option> - implies both <option>talk</option> and - <option>see</option>. - If multiple access levels are specified for the - same bus name, the most powerful one takes - effect. - </para> - <para>Examples:</para> - <programlisting>BusPolicy=org.freedesktop.systemd1 talk</programlisting> - <programlisting>BusPolicy=org.foo.bar see</programlisting> - <para>This option is only available on kdbus enabled systems.</para> - </listitem> - </varlistentry> - - <varlistentry> <term><varname>ExecStart=</varname></term> <listitem><para>Commands with their arguments that are executed when this service is started. The value is split into @@ -371,7 +335,7 @@ with a <literal>-</literal> exit successfully.</para> <para><varname>ExecStartPost=</varname> commands are only run after - the service has started, as determined by <varname>Type=</varname> + the service has started successfully, as determined by <varname>Type=</varname> (i.e. the process has been started for <varname>Type=simple</varname> or <varname>Type=idle</varname>, the process exits successfully for <varname>Type=oneshot</varname>, the initial process exits successfully @@ -383,6 +347,11 @@ used to start long-running processes. All processes forked off by processes invoked via <varname>ExecStartPre=</varname> will be killed before the next service process is run.</para> + + <para>Note that if any of the commands specified in <varname>ExecStartPre=</varname>, + <varname>ExecStart=</varname>, or <varname>ExecStartPost=</varname> fail (and are not prefixed with + <literal>-</literal>, see above) or time out before the service is fully up, execution continues with commands + specified in <varname>ExecStopPost=</varname>, the commands in <varname>ExecStop=</varname> are skipped.</para> </listitem> </varlistentry> @@ -438,21 +407,36 @@ <constant>SIGKILL</constant> immediately after the command exited, this would not result in a clean stop. The specified command should hence be a synchronous operation, not an - asynchronous one.</para></listitem> + asynchronous one.</para> + + <para>Note that the commands specified in <varname>ExecStop=</varname> are only executed when the service + started successfully first. They are not invoked if the service was never started at all, or in case its + start-up failed, for example because any of the commands specified in <varname>ExecStart=</varname>, + <varname>ExecStartPre=</varname> or <varname>ExecStartPost=</varname> failed (and weren't prefixed with + <literal>-</literal>, see above) or timed out. Use <varname>ExecStopPost=</varname> to invoke commands when a + service failed to start up correctly and is shut down again.</para> + + <para>It is recommended to use this setting for commands that communicate with the service requesting clean + termination. When the commands specified with this option are executed it should be assumed that the service is + still fully up and is able to react correctly to all commands. For post-mortem clean-up steps use + <varname>ExecStopPost=</varname> instead.</para></listitem> </varlistentry> <varlistentry> <term><varname>ExecStopPost=</varname></term> - <listitem><para>Additional commands that are executed after - the service was stopped. This includes cases where the - commands configured in <varname>ExecStop=</varname> were used, - where the service does not have any - <varname>ExecStop=</varname> defined, or where the service - exited unexpectedly. This argument takes multiple command - lines, following the same scheme as described for - <varname>ExecStart=</varname>. Use of these settings is - optional. Specifier and environment variable substitution is - supported.</para></listitem> + <listitem><para>Additional commands that are executed after the service is stopped. This includes cases where + the commands configured in <varname>ExecStop=</varname> were used, where the service does not have any + <varname>ExecStop=</varname> defined, or where the service exited unexpectedly. This argument takes multiple + command lines, following the same scheme as described for <varname>ExecStart=</varname>. Use of these settings + is optional. Specifier and environment variable substitution is supported. Note that – unlike + <varname>ExecStop=</varname> – commands specified with this setting are invoked when a service failed to start + up correctly and is shut down again.</para> + + <para>It is recommended to use this setting for clean-up operations that shall be executed even when the + service failed to start up correctly. Commands configured with this setting need to be able to operate even if + the service failed starting up half-way and left incompletely initialized data around. As the service's + processes have been terminated already when the commands specified with this setting are executed they should + not attempt to communicate with them.</para></listitem> </varlistentry> <varlistentry> @@ -470,7 +454,7 @@ configured time, the service will be considered failed and will be shut down again. Takes a unit-less value in seconds, or a time span value such as "5min 20s". Pass - <literal>0</literal> to disable the timeout logic. Defaults to + <literal>infinity</literal> to disable the timeout logic. Defaults to <varname>DefaultTimeoutStartSec=</varname> from the manager configuration file, except when <varname>Type=oneshot</varname> is used, in which case the @@ -489,7 +473,7 @@ <varname>KillMode=</varname> 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 <literal>0</literal> to disable the + as "5min 20s". Pass <literal>infinity</literal> to disable the timeout logic. Defaults to <varname>DefaultTimeoutStopSec=</varname> from the manager configuration file (see @@ -506,6 +490,16 @@ </varlistentry> <varlistentry> + <term><varname>RuntimeMaxSec=</varname></term> + + <listitem><para>Configures a maximum time for the service to run. If this is used and the service has been + active for longer than the specified time it is terminated and put into a failure state. Note that this setting + does not have any effect on <varname>Type=oneshot</varname> services, as they terminate immediately after + activation completed. Pass <literal>infinity</literal> (the default) to configure no runtime + limit.</para></listitem> + </varlistentry> + + <varlistentry> <term><varname>WatchdogSec=</varname></term> <listitem><para>Configures the watchdog timeout for a service. The watchdog is activated when the start-up is completed. The @@ -844,85 +838,11 @@ </varlistentry> <varlistentry> - <term><varname>StartLimitInterval=</varname></term> - <term><varname>StartLimitBurst=</varname></term> - - <listitem><para>Configure service start rate limiting. By - default, services which are started more than 5 times within - 10 seconds are not permitted to start any more times until the - 10 second interval ends. With these two options, this rate - limiting may be modified. Use - <varname>StartLimitInterval=</varname> to configure the - checking interval (defaults to - <varname>DefaultStartLimitInterval=</varname> in manager - configuration file, set to 0 to disable any kind of rate - limiting). Use <varname>StartLimitBurst=</varname> to - configure how many starts per interval are allowed (defaults - to <varname>DefaultStartLimitBurst=</varname> in manager - configuration file). These configuration options are - particularly useful in conjunction with - <varname>Restart=</varname>; however, they apply to all kinds - of starts (including manual), not just those triggered by the - <varname>Restart=</varname> logic. Note that units which are - configured for <varname>Restart=</varname> and which reach the - start limit are not attempted to be restarted anymore; - however, they may still be restarted manually at a later - point, from which point on, the restart logic is again - activated. Note that <command>systemctl reset-failed</command> - will cause the restart rate counter for a service to be - flushed, which is useful if the administrator wants to - manually start a service and the start limit interferes with - that.</para></listitem> - </varlistentry> - - <varlistentry> - <term><varname>StartLimitAction=</varname></term> - - <listitem><para>Configure the action to take if the rate limit - configured with <varname>StartLimitInterval=</varname> and - <varname>StartLimitBurst=</varname> is hit. Takes one of - <option>none</option>, - <option>reboot</option>, - <option>reboot-force</option>, - <option>reboot-immediate</option>, - <option>poweroff</option>, - <option>poweroff-force</option> or - <option>poweroff-immediate</option>. If - <option>none</option> is set, hitting the rate limit will - trigger no action besides that the start will not be - permitted. <option>reboot</option> causes a reboot following - the normal shutdown procedure (i.e. equivalent to - <command>systemctl reboot</command>). - <option>reboot-force</option> causes a forced reboot which - will terminate all processes forcibly but should cause no - dirty file systems on reboot (i.e. equivalent to - <command>systemctl reboot -f</command>) and - <option>reboot-immediate</option> causes immediate execution - of the - <citerefentry><refentrytitle>reboot</refentrytitle><manvolnum>2</manvolnum></citerefentry> - system call, which might result in data loss. Similarly, - <option>poweroff</option>, <option>poweroff-force</option>, - <option>poweroff-immediate</option> have the effect of - powering down the system with similar semantics. Defaults to - <option>none</option>.</para></listitem> - </varlistentry> - - <varlistentry> <term><varname>FailureAction=</varname></term> - <listitem><para>Configure the action to take when the service - enters a failed state. Takes the same values as - <varname>StartLimitAction=</varname> and executes the same - actions. Defaults to <option>none</option>. </para></listitem> - </varlistentry> - - <varlistentry> - <term><varname>RebootArgument=</varname></term> - <listitem><para>Configure the optional argument for the - <citerefentry><refentrytitle>reboot</refentrytitle><manvolnum>2</manvolnum></citerefentry> - system call if <varname>StartLimitAction=</varname> or - <varname>FailureAction=</varname> is a reboot action. This - works just like the optional argument to <command>systemctl - reboot</command> command.</para></listitem> + <listitem><para>Configure the action to take when the service enters a failed state. Takes the same values as + the unit setting <varname>StartLimitAction=</varname> and executes the same actions (see + <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>). Defaults to + <option>none</option>. </para></listitem> </varlistentry> <varlistentry> diff --git a/man/systemd.special.xml b/man/systemd.special.xml index 0a37f65956..80c15b700d 100644 --- a/man/systemd.special.xml +++ b/man/systemd.special.xml @@ -204,12 +204,22 @@ <varlistentry> <term><filename>emergency.target</filename></term> <listitem> - <para>A special target unit that starts an emergency shell - on the main console. This unit is supposed to be used with - the kernel command line option - <varname>systemd.unit=</varname> and has otherwise little - use. - </para> + <para>A special target unit that starts an emergency shell on the main console. This target does not pull in + any services or mounts. It is the most minimal version of starting the system in order to acquire an + interactive shell; the only processes running are usually just the system manager (PID 1) and the shell + process. This unit is supposed to be used with the kernel command line option + <varname>systemd.unit=</varname>; it is also used when a file system check on a required file system fails, + and boot-up cannot continue. Compare with <filename>rescue.target</filename>, which serves a similar purpose, + but also starts the most basic services and mounts all file systems.</para> + + <para>Use the <literal>systemd.unit=emergency.target</literal> kernel command line option to boot into this + mode. A short alias for this kernel command line option is <literal>emergency</literal>, for compatibility + with SysV.</para> + + <para>In many ways booting into <filename>emergency.target</filename> is similar to the effect of booting + with <literal>init=/bin/sh</literal> on the kernel command line, except that emergency mode provides you with + the full system and service manager, and allows starting individual units in order to continue the boot + process in steps.</para> </listitem> </varlistentry> <varlistentry> @@ -440,11 +450,18 @@ <varlistentry> <term><filename>rescue.target</filename></term> <listitem> - <para>A special target unit for setting up the base system - and a rescue shell.</para> + <para>A special target unit that pulls in the base system (including system mounts) and spawns a rescue + shell. Isolate to this target in order to administer the system in single-user mode with all file systems + mounted but with no services running, except for the most basic. Compare with + <filename>emergency.target</filename>, which is much more reduced and does not provide the file systems or + most basic services.</para> - <para><filename>runlevel1.target</filename> is an alias for - this target unit, for compatibility with SysV.</para> + <para><filename>runlevel1.target</filename> is an alias for this target unit, for compatibility with + SysV.</para> + + <para>Use the <literal>systemd.unit=rescue.target</literal> kernel command line option to boot into this + mode. A short alias for this kernel command line option is <literal>1</literal>, for compatibility with + SysV.</para> </listitem> </varlistentry> <varlistentry> @@ -509,7 +526,7 @@ <para>A special target unit that sets up all slice units (see <citerefentry><refentrytitle>systemd.slice</refentrytitle><manvolnum>5</manvolnum></citerefentry> for details) that shall be active after boot. By default the generic <filename>user.slice</filename>, - <filename>system.slice</filename>, <filename>machines.slice</filename> slice units, as well as the the root + <filename>system.slice</filename>, <filename>machines.slice</filename> slice units, as well as the root slice unit <filename>-.slice</filename> are pulled in and ordered before this unit (see below).</para> <para>It's a good idea to add <varname>WantedBy=slices.target</varname> lines to the <literal>[Install]</literal> diff --git a/man/systemd.swap.xml b/man/systemd.swap.xml index c600405c87..69d4be4769 100644 --- a/man/systemd.swap.xml +++ b/man/systemd.swap.xml @@ -72,7 +72,7 @@ project='man-pages'><refentrytitle>swapon</refentrytitle><manvolnum>8</manvolnum></citerefentry> binary is executed in, in <citerefentry><refentrytitle>systemd.kill</refentrytitle><manvolnum>5</manvolnum></citerefentry>, - which define the way the these processes are + which define the way these processes are terminated, and in <citerefentry><refentrytitle>systemd.resource-control</refentrytitle><manvolnum>5</manvolnum></citerefentry>, which configure resource control settings for these processes of the diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml index a95c160954..5794681963 100644 --- a/man/systemd.unit.xml +++ b/man/systemd.unit.xml @@ -178,18 +178,14 @@ directory suffix is <filename>.requires/</filename> in this case.</para> - <para>Along with a unit file <filename>foo.service</filename>, a - directory <filename>foo.service.d/</filename> may exist. All files - with the suffix <literal>.conf</literal> from this directory will - be parsed after the file itself is parsed. This is useful to alter - or add configuration 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. 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>Along with a unit file <filename>foo.service</filename>, a "drop-in" directory + <filename>foo.service.d/</filename> may exist. All files with the suffix <literal>.conf</literal> from this + directory will be parsed after the file itself is parsed. This is useful to alter or add configuration settings for + a unit, without having to modify unit files. Each drop-in file must have appropriate section headers. Note that for + instantiated 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 the + <literal>.conf</literal> files there. Also note that settings from the <literal>[Install]</literal> section are not + honoured in drop-in unit files, and have no effect.</para> <para>In addition to <filename>/etc/systemd/system</filename>, the drop-in <literal>.conf</literal> files for system services @@ -728,20 +724,14 @@ <term><varname>JobTimeoutAction=</varname></term> <term><varname>JobTimeoutRebootArgument=</varname></term> - <listitem><para>When a job for this unit is queued, a time-out - may be configured. If this time limit is reached, the job will - be cancelled, the unit however will not change state or even - enter the <literal>failed</literal> mode. This value defaults - to 0 (job timeouts disabled), except for device units. NB: - this timeout is independent from any unit-specific timeout - (for example, the timeout set with - <varname>TimeoutStartSec=</varname> in service units) as the - job timeout has no effect on the unit itself, only on the job - that might be pending for it. Or in other words: unit-specific - timeouts are useful to abort unit state changes, and revert - them. The job timeout set with this option however is useful - to abort only the job waiting for the unit state to - change.</para> + <listitem><para>When a job for this unit is queued, a time-out may be configured. If this time limit is + reached, the job will be cancelled, the unit however will not change state or even enter the + <literal>failed</literal> mode. This value defaults to <literal>infinity</literal> (job timeouts disabled), + except for device units. NB: this timeout is independent from any unit-specific timeout (for example, the + timeout set with <varname>TimeoutStartSec=</varname> in service units) as the job timeout has no effect on the + unit itself, only on the job that might be pending for it. Or in other words: unit-specific timeouts are useful + to abort unit state changes, and revert them. The job timeout set with this option however is useful to abort + only the job waiting for the unit state to change.</para> <para><varname>JobTimeoutAction=</varname> optionally configures an additional @@ -760,6 +750,55 @@ </varlistentry> <varlistentry> + <term><varname>StartLimitInterval=</varname></term> + <term><varname>StartLimitBurst=</varname></term> + + <listitem><para>Configure unit start rate limiting. By default, units which are started more than 5 times + within 10 seconds are not permitted to start any more times until the 10 second interval ends. With these two + options, this rate limiting may be modified. Use <varname>StartLimitInterval=</varname> to configure the + checking interval (defaults to <varname>DefaultStartLimitInterval=</varname> in manager configuration file, set + to 0 to disable any kind of rate limiting). Use <varname>StartLimitBurst=</varname> to configure how many + starts per interval are allowed (defaults to <varname>DefaultStartLimitBurst=</varname> in manager + configuration file). These configuration options are particularly useful in conjunction with the service + setting <varname>Restart=</varname> (see + <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>); however, + they apply to all kinds of starts (including manual), not just those triggered by the + <varname>Restart=</varname> logic. Note that units which are configured for <varname>Restart=</varname> and + which reach the start limit are not attempted to be restarted anymore; however, they may still be restarted + manually at a later point, from which point on, the restart logic is again activated. Note that + <command>systemctl reset-failed</command> will cause the restart rate counter for a service to be flushed, + which is useful if the administrator wants to manually start a unit and the start limit interferes with + that.</para></listitem> + </varlistentry> + + <varlistentry> + <term><varname>StartLimitAction=</varname></term> + + <listitem><para>Configure the action to take if the rate limit configured with + <varname>StartLimitInterval=</varname> and <varname>StartLimitBurst=</varname> is hit. Takes one of + <option>none</option>, <option>reboot</option>, <option>reboot-force</option>, + <option>reboot-immediate</option>, <option>poweroff</option>, <option>poweroff-force</option> or + <option>poweroff-immediate</option>. If <option>none</option> is set, hitting the rate limit will trigger no + action besides that the start will not be permitted. <option>reboot</option> causes a reboot following the + normal shutdown procedure (i.e. equivalent to <command>systemctl reboot</command>). + <option>reboot-force</option> causes a forced reboot which will terminate all processes forcibly but should + cause no dirty file systems on reboot (i.e. equivalent to <command>systemctl reboot -f</command>) and + <option>reboot-immediate</option> causes immediate execution of the + <citerefentry><refentrytitle>reboot</refentrytitle><manvolnum>2</manvolnum></citerefentry> system call, which + might result in data loss. Similarly, <option>poweroff</option>, <option>poweroff-force</option>, + <option>poweroff-immediate</option> have the effect of powering down the system with similar + semantics. Defaults to <option>none</option>.</para></listitem> + </varlistentry> + + <varlistentry> + <term><varname>RebootArgument=</varname></term> + <listitem><para>Configure the optional argument for the + <citerefentry><refentrytitle>reboot</refentrytitle><manvolnum>2</manvolnum></citerefentry> system call if + <varname>StartLimitAction=</varname> or a service's <varname>FailureAction=</varname> is a reboot action. This + works just like the optional argument to <command>systemctl reboot</command> command.</para></listitem> + </varlistentry> + + <varlistentry> <term><varname>ConditionArchitecture=</varname></term> <term><varname>ConditionVirtualization=</varname></term> <term><varname>ConditionHost=</varname></term> @@ -784,13 +823,14 @@ useful and probably just confusing. --> - <listitem><para>Before starting a unit verify that the - specified condition is true. If it is not true, the starting - of the unit will be skipped, however all ordering dependencies - of it are still respected. A failing condition will not result - in the unit being moved into a failure state. The condition is - checked at the time the queued start job is to be - executed.</para> + <listitem><para>Before starting a unit, verify that the specified condition is true. If it is not true, the + starting of the unit will be (mostly silently) skipped, however all ordering dependencies of it are still + respected. A failing condition will not result in the unit being moved into a failure state. The condition is + checked at the time the queued start job is to be executed. Use condition expressions in order to silently skip + units that do not apply to the local running system, for example because the kernel or runtime environment + doesn't require its functionality. Use the various <varname>AssertArchitecture=</varname>, + <varname>AssertVirtualization=</varname>, … options for a similar mechanism that puts the unit in a failure + state and logs about the failed check (see below).</para> <para><varname>ConditionArchitecture=</varname> may be used to check whether the system is running on a specific @@ -1024,14 +1064,12 @@ <term><varname>AssertFileNotEmpty=</varname></term> <term><varname>AssertFileIsExecutable=</varname></term> - <listitem><para>Similar to the - <varname>ConditionArchitecture=</varname>, - <varname>ConditionVirtualization=</varname>, etc., condition - settings described above, these settings add assertion checks - to the start-up of the unit. However, unlike the conditions - settings, any assertion setting that is not met results in - failure of the start job it was triggered - by.</para></listitem> + <listitem><para>Similar to the <varname>ConditionArchitecture=</varname>, + <varname>ConditionVirtualization=</varname>, …, condition settings described above, these settings add + assertion checks to the start-up of the unit. However, unlike the conditions settings, any assertion setting + that is not met results in failure of the start job (which means this is logged loudly). Use assertion + expressions for units that cannot operate when specific requirements are not met, and when this is something + the administrator or user should look into.</para></listitem> </varlistentry> <varlistentry> @@ -1051,15 +1089,13 @@ <refsect1> <title>[Install] Section Options</title> - <para>Unit file may include an <literal>[Install]</literal> - section, which carries installation information for the unit. This - section is not interpreted by - <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry> - during runtime. It is used exclusively by the - <command>enable</command> and <command>disable</command> commands - of the - <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry> - tool during installation of a unit:</para> + <para>Unit files may include an <literal>[Install]</literal> section, which carries installation information for + the unit. This section is not interpreted by + <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry> during runtime; it is + used by the <command>enable</command> and <command>disable</command> commands of the + <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry> tool during + installation of a unit. Note that settings in the <literal>[Install]</literal> section may not appear in + <filename>.d/*.conf</filename> unit file drop-ins (see above).</para> <variablelist class='unit-directives'> <varlistentry> diff --git a/man/udev_device_new_from_syspath.xml b/man/udev_device_new_from_syspath.xml index c71356a75a..0bb71c8e91 100644 --- a/man/udev_device_new_from_syspath.xml +++ b/man/udev_device_new_from_syspath.xml @@ -189,7 +189,8 @@ <function>udev_device_new_from_device_id()</function> and <function>udev_device_new_from_environment()</function> return a pointer to the allocated udev device. On failure, - <constant>NULL</constant> is returned. + <constant>NULL</constant> is returned, + and <varname>errno</varname> is set appropriately. <function>udev_device_ref()</function> returns the argument that it was passed, unmodified. <function>udev_device_unref()</function> always returns @@ -1,13 +1,13 @@ # translation of ru.po to Rissian # Julia Dronova <juliette.tux@gmail.com>, 2013. -# Sergey Ptashnick <0comffdiz@inbox.ru>, 2013-2015. +# Sergey Ptashnick <0comffdiz@inbox.ru>, 2013-2016. # msgid "" msgstr "" "Project-Id-Version: systemd\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-11-22 16:37+0100\n" -"PO-Revision-Date: 2015-03-22 21:53+0300\n" +"PO-Revision-Date: 2016-02-02 20:22+0300\n" "Last-Translator: Sergey Ptashnick <0comffdiz@inbox.ru>\n" "Language: ru\n" "MIME-Version: 1.0\n" @@ -26,12 +26,10 @@ msgid "" msgstr "Чтобы отправить пароль системе, необходимо пройти аутентификацию." #: ../src/core/org.freedesktop.systemd1.policy.in.in.h:3 -#, fuzzy msgid "Manage system services or other units" msgstr "Управление системными службами и юнитами" #: ../src/core/org.freedesktop.systemd1.policy.in.in.h:4 -#, fuzzy msgid "Authentication is required to manage system services or other units." msgstr "" "Для управления системными службами и юнитами, необходимо пройти " @@ -456,23 +454,24 @@ msgstr "" #: ../src/login/org.freedesktop.login1.policy.in.h:53 msgid "Allow indication to the firmware to boot to setup interface" -msgstr "" +msgstr "Разрешить загрузку в режиме настройки прошивки материнской платы" #: ../src/login/org.freedesktop.login1.policy.in.h:54 -#, fuzzy msgid "" "Authentication is required to indicate to the firmware to boot to setup " "interface." -msgstr "Чтобы настроить имя компьютера, необходимо пройти аутентификацию." +msgstr "" +"Чтобы разрешить загрузку в режиме настройки прошивки материнской платы, " +"необходимо пройти аутентификацию." #: ../src/login/org.freedesktop.login1.policy.in.h:55 msgid "Set a wall message" -msgstr "" +msgstr "Отправить сообщение на все терминалы" #: ../src/login/org.freedesktop.login1.policy.in.h:56 -#, fuzzy msgid "Authentication is required to set a wall message" -msgstr "Чтобы настроить имя компьютера, необходимо пройти аутентификацию." +msgstr "" +"Чтобы отправить сообщение на все терминалы, необходимо пройти аутентификацию." #: ../src/machine/org.freedesktop.machine1.policy.in.h:1 msgid "Log into a local container" @@ -483,53 +482,53 @@ msgid "Authentication is required to log into a local container." msgstr "Чтобы зайти в локальный контейнер, необходимо пройти аутентификацию." #: ../src/machine/org.freedesktop.machine1.policy.in.h:3 -#, fuzzy msgid "Log into the local host" -msgstr "Зайти в локальный контейнер" +msgstr "Зайти на этот компьютер" #: ../src/machine/org.freedesktop.machine1.policy.in.h:4 -#, fuzzy msgid "Authentication is required to log into the local host." -msgstr "Чтобы зайти в локальный контейнер, необходимо пройти аутентификацию." +msgstr "Чтобы зайти на этот компьютер, необходимо пройти аутентификацию." #: ../src/machine/org.freedesktop.machine1.policy.in.h:5 -#, fuzzy msgid "Acquire a shell in a local container" -msgstr "Зайти в локальный контейнер" +msgstr "Получить командную оболочку в локальном контейнере" #: ../src/machine/org.freedesktop.machine1.policy.in.h:6 -#, fuzzy msgid "Authentication is required to acquire a shell in a local container." -msgstr "Чтобы зайти в локальный контейнер, необходимо пройти аутентификацию." +msgstr "" +"Чтобы получить командную оболочку в локальном контейнере, необходимо пройти " +"аутентификацию." #: ../src/machine/org.freedesktop.machine1.policy.in.h:7 msgid "Acquire a shell on the local host" -msgstr "" +msgstr "Запустить командную оболочку на этом компьютере" #: ../src/machine/org.freedesktop.machine1.policy.in.h:8 -#, fuzzy msgid "Authentication is required to acquire a shell on the local host." -msgstr "Чтобы настроить имя компьютера, необходимо пройти аутентификацию." +msgstr "" +"Чтобы запустить командную оболочку на этом компьютере, необходимо пройти " +"аутентификацию." #: ../src/machine/org.freedesktop.machine1.policy.in.h:9 -#, fuzzy msgid "Acquire a pseudo TTY in a local container" -msgstr "Зайти в локальный контейнер" +msgstr "Получить псевдо-терминал в локальном контейнере" #: ../src/machine/org.freedesktop.machine1.policy.in.h:10 -#, fuzzy msgid "" "Authentication is required to acquire a pseudo TTY in a local container." -msgstr "Чтобы зайти в локальный контейнер, необходимо пройти аутентификацию." +msgstr "" +"Чтобы получить псевдо-терминал в локальном контейнере, необходимо пройти " +"аутентификацию." #: ../src/machine/org.freedesktop.machine1.policy.in.h:11 msgid "Acquire a pseudo TTY on the local host" -msgstr "" +msgstr "Получить псевдо-терминал на этом компьютере" #: ../src/machine/org.freedesktop.machine1.policy.in.h:12 -#, fuzzy msgid "Authentication is required to acquire a pseudo TTY on the local host." -msgstr "Чтобы настроить имя компьютера, необходимо пройти аутентификацию." +msgstr "" +"Чтобы получить псевдо-терминал на этом компьютере, необходимо пройти " +"аутентификацию." #: ../src/machine/org.freedesktop.machine1.policy.in.h:13 msgid "Manage local virtual machines and containers" @@ -595,41 +594,37 @@ msgstr "" "пройти аутентификацию." #: ../src/core/dbus-unit.c:428 -#, fuzzy msgid "Authentication is required to start '$(unit)'." -msgstr "Чтобы настроить системное время, необходимо пройти аутентификацию." +msgstr "Чтобы запустить «$(unit)», необходимо пройти аутентификацию." #: ../src/core/dbus-unit.c:429 -#, fuzzy msgid "Authentication is required to stop '$(unit)'." -msgstr "Чтобы настроить системное время, необходимо пройти аутентификацию." +msgstr "Чтобы остановить «$(unit)», необходимо пройти аутентификацию." #: ../src/core/dbus-unit.c:430 -#, fuzzy msgid "Authentication is required to reload '$(unit)'." msgstr "" -"Чтобы заставить systemd перечитать конфигурацию, необходимо пройти " +"Чтобы заставить «$(unit)» перечитать конфигурацию, необходимо пройти " "аутентификацию." #: ../src/core/dbus-unit.c:431 ../src/core/dbus-unit.c:432 -#, fuzzy msgid "Authentication is required to restart '$(unit)'." -msgstr "Чтобы настроить системное время, необходимо пройти аутентификацию." +msgstr "Чтобы перезапустить «$(unit)», необходимо пройти аутентификацию." #: ../src/core/dbus-unit.c:535 -#, fuzzy msgid "Authentication is required to kill '$(unit)'." -msgstr "Чтобы зайти в локальный контейнер, необходимо пройти аутентификацию." +msgstr "Чтобы убить юнит «$(unit)», необходимо пройти аутентификацию." #: ../src/core/dbus-unit.c:565 -#, fuzzy msgid "Authentication is required to reset the \"failed\" state of '$(unit)'." -msgstr "Чтобы настроить имя компьютера, необходимо пройти аутентификацию." +msgstr "" +"Чтобы сбросить состояние «failed» у юнита «$(unit)», необходимо пройти " +"аутентификацию." #: ../src/core/dbus-unit.c:597 -#, fuzzy msgid "Authentication is required to set properties on '$(unit)'." -msgstr "Чтобы настроить системное время, необходимо пройти аутентификацию." +msgstr "Чтобы изменить параметры юнита «$(unit)», необходимо пройти " +"аутентификацию." #~ msgid "Press Ctrl+C to cancel all filesystem checks in progress" #~ msgstr "" diff --git a/po/zh_TW.po b/po/zh_TW.po index 5a214a3c48..affea9126e 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -1,21 +1,21 @@ # Traditional Chinese translation for systemd. # Copyright (C) 2015 systemd's COPYRIGHT HOLDER # This file is distributed under the same license as the systemd package. -# Jeff Huang <s8321414@gmail.com>, 2015. +# Jeff Huang <s8321414@gmail.com>, 2015, 2016. msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-11-22 16:37+0100\n" -"PO-Revision-Date: 2015-06-11 12:44+0800\n" -"Last-Translator: Jeff Huang <s8321414@gmail.com>\n" +"PO-Revision-Date: 2016-02-12 11:46+0800\n" +"Last-Translator: Jeff Huang <s8321414@chakraos.org>\n" "Language-Team: chinese-l10n <chinese-l10n@googlegroups.com>\n" "Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Lokalize 1.5\n" +"X-Generator: Lokalize 2.0\n" #: ../src/core/org.freedesktop.systemd1.policy.in.in.h:1 msgid "Send passphrase back to system" @@ -375,12 +375,11 @@ msgstr "對韌體的指示以開始設定介面需要驗證。" #: ../src/login/org.freedesktop.login1.policy.in.h:55 msgid "Set a wall message" -msgstr "" +msgstr "設定 wall 訊息" #: ../src/login/org.freedesktop.login1.policy.in.h:56 -#, fuzzy msgid "Authentication is required to set a wall message" -msgstr "設定主機名稱需要驗證。" +msgstr "設定 wall 訊息需要驗證。" #: ../src/machine/org.freedesktop.machine1.policy.in.h:1 msgid "Log into a local container" @@ -391,53 +390,45 @@ msgid "Authentication is required to log into a local container." msgstr "登入到本機容器需要驗證。" #: ../src/machine/org.freedesktop.machine1.policy.in.h:3 -#, fuzzy msgid "Log into the local host" -msgstr "登入到本機容器" +msgstr "登入到本機主機" #: ../src/machine/org.freedesktop.machine1.policy.in.h:4 -#, fuzzy msgid "Authentication is required to log into the local host." -msgstr "登入到本機容器需要驗證。" +msgstr "登入到本機主機需要驗證。" #: ../src/machine/org.freedesktop.machine1.policy.in.h:5 -#, fuzzy msgid "Acquire a shell in a local container" -msgstr "登入到本機容器" +msgstr "在本機容器中取得一個 shell" #: ../src/machine/org.freedesktop.machine1.policy.in.h:6 -#, fuzzy msgid "Authentication is required to acquire a shell in a local container." -msgstr "登入到本機容器需要驗證。" +msgstr "在本機容器中取得一個 shell 需要驗證。" #: ../src/machine/org.freedesktop.machine1.policy.in.h:7 msgid "Acquire a shell on the local host" -msgstr "" +msgstr "在本機主機中取得一個 shell" #: ../src/machine/org.freedesktop.machine1.policy.in.h:8 -#, fuzzy msgid "Authentication is required to acquire a shell on the local host." -msgstr "設定主機名稱需要驗證。" +msgstr "在本機主機中取得一個 shell 需要驗證。" #: ../src/machine/org.freedesktop.machine1.policy.in.h:9 -#, fuzzy msgid "Acquire a pseudo TTY in a local container" -msgstr "登入到本機容器" +msgstr "取得在本機容器中的偽 TTY" #: ../src/machine/org.freedesktop.machine1.policy.in.h:10 -#, fuzzy msgid "" "Authentication is required to acquire a pseudo TTY in a local container." -msgstr "登入到本機容器需要驗證。" +msgstr "取得在本機容器中的偽 TTY 需要驗證。" #: ../src/machine/org.freedesktop.machine1.policy.in.h:11 msgid "Acquire a pseudo TTY on the local host" -msgstr "" +msgstr "取得在本機主機中的偽 TTY" #: ../src/machine/org.freedesktop.machine1.policy.in.h:12 -#, fuzzy msgid "Authentication is required to acquire a pseudo TTY on the local host." -msgstr "設定主機名稱需要驗證。" +msgstr "取得在本機主機中的偽 TTY 需要驗證。" #: ../src/machine/org.freedesktop.machine1.policy.in.h:13 msgid "Manage local virtual machines and containers" @@ -495,36 +486,30 @@ msgid "" msgstr "控制網路時間同步是否啟用需要驗證。" #: ../src/core/dbus-unit.c:428 -#, fuzzy msgid "Authentication is required to start '$(unit)'." -msgstr "設定系統時間需要驗證。" +msgstr "啟動 '$(unit)' 需要驗證。" #: ../src/core/dbus-unit.c:429 -#, fuzzy msgid "Authentication is required to stop '$(unit)'." -msgstr "設定系統時間需要驗證。" +msgstr "停止 '$(unit)' 需要驗證。" #: ../src/core/dbus-unit.c:430 -#, fuzzy msgid "Authentication is required to reload '$(unit)'." -msgstr "重新載入 systemd 狀態需要驗證。" +msgstr "重新載入 '$(unit)' 需要驗證。" #: ../src/core/dbus-unit.c:431 ../src/core/dbus-unit.c:432 -#, fuzzy msgid "Authentication is required to restart '$(unit)'." -msgstr "設定系統時間需要驗證。" +msgstr "重新啟動 '$(unit)' 需要驗證。" #: ../src/core/dbus-unit.c:535 -#, fuzzy msgid "Authentication is required to kill '$(unit)'." -msgstr "登入到本機容器需要驗證。" +msgstr "砍除 '$(unit)' 需要驗證。" #: ../src/core/dbus-unit.c:565 -#, fuzzy msgid "Authentication is required to reset the \"failed\" state of '$(unit)'." -msgstr "設定主機名稱需要驗證。" +msgstr "重置 '$(unit)' 的「失敗」狀態需要驗證。" #: ../src/core/dbus-unit.c:597 -#, fuzzy msgid "Authentication is required to set properties on '$(unit)'." -msgstr "設定系統時間需要驗證。" +msgstr "在 '$(unit)' 上設定屬性需要驗證。" + diff --git a/shell-completion/bash/journalctl b/shell-completion/bash/journalctl index 321d439f0c..7c8a9ce361 100644 --- a/shell-completion/bash/journalctl +++ b/shell-completion/bash/journalctl @@ -24,6 +24,12 @@ __contains_word () { done } +__get_machines() { + local a b + (machinectl list-images --no-legend --no-pager; machinectl list --no-legend --no-pager; echo ".host") | \ + { while read a b; do echo " $a"; done; } | sort -u; +} + __journal_fields=(MESSAGE{,_ID} PRIORITY CODE_{FILE,LINE,FUNC} ERRNO SYSLOG_{FACILITY,IDENTIFIER,PID} COREDUMP_EXE _{P,U,G}ID _COMM _EXE _CMDLINE @@ -49,11 +55,11 @@ _journalctl() { --utc -x --catalog --no-full --force --dump-catalog --flush --rotate --sync' [ARG]='-b --boot --this-boot -D --directory --file -F --field - -o --output -u --unit --user-unit -p --priority + -M --machine -o --output -u --unit --user-unit -p --priority --vacuum-size --vacuum-time' [ARGUNKNOWN]='-c --cursor --interval -n --lines -S --since -U --until --after-cursor --verify-key -t --identifier - --root -M --machine' + --root' ) if __contains_word "$prev" ${OPTS[ARG]} ${OPTS[ARGUNKNOWN]}; then @@ -74,6 +80,9 @@ _journalctl() { ;; --field|-F) comps=${__journal_fields[*]} + ;; + --machine|-M) + comps=$( __get_machines ) ;; --priority|-p) comps=${__syslog_priorities[*]} diff --git a/shell-completion/zsh/_systemd b/shell-completion/zsh/_systemd index 05459dc5f6..62114ff095 100644 --- a/shell-completion/zsh/_systemd +++ b/shell-completion/zsh/_systemd @@ -27,7 +27,7 @@ case "$service" in '--no-pager[Do not pipe output into a pager]' \ {-a,--all}'[Show all groups, including empty]' \ '-k[Include kernel threads in output]' \ - ':cgroups:(cpuset cpu cpuacct memory devices freezer net_cls blkio)' + ':cgroups:(cpuset cpu cpuacct memory devices freezer blkio)' ;; systemd-cgtop) _arguments \ diff --git a/src/ac-power/ac-power.c b/src/ac-power/ac-power.c index 2f25734612..c5277884a8 100644 --- a/src/ac-power/ac-power.c +++ b/src/ac-power/ac-power.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/activate/activate.c b/src/activate/activate.c index 95083441ab..0db4967edb 100644 --- a/src/activate/activate.c +++ b/src/activate/activate.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -39,10 +37,11 @@ static char** arg_listen = NULL; static bool arg_accept = false; -static bool arg_datagram = false; +static int arg_socket_type = SOCK_STREAM; static char** arg_args = NULL; static char** arg_setenv = NULL; static const char *arg_fdname = NULL; +static bool arg_inetd = false; static int add_epoll(int epoll_fd, int fd) { struct epoll_event ev = { @@ -98,12 +97,7 @@ static int open_sockets(int *epoll_fd, bool accept) { */ STRV_FOREACH(address, arg_listen) { - - if (arg_datagram) - fd = make_socket_fd(LOG_DEBUG, *address, SOCK_DGRAM, SOCK_CLOEXEC); - else - fd = make_socket_fd(LOG_DEBUG, *address, SOCK_STREAM, (arg_accept*SOCK_CLOEXEC)); - + fd = make_socket_fd(LOG_DEBUG, *address, arg_socket_type, (arg_accept*SOCK_CLOEXEC)); if (fd < 0) { log_open(); return log_error_errno(fd, "Failed to open '%s': %m", *address); @@ -134,14 +128,20 @@ static int open_sockets(int *epoll_fd, bool accept) { return count; } -static int launch(char* name, char **argv, char **env, int fds) { +static int exec_process(const char* name, char **argv, char **env, int start_fd, int n_fds) { - static const char* tocopy[] = {"TERM=", "PATH=", "USER=", "HOME="}; _cleanup_strv_free_ char **envp = NULL; - _cleanup_free_ char *tmp = NULL; + _cleanup_free_ char *joined = NULL; unsigned n_env = 0, length; - char **s; + const char *tocopy; unsigned i; + char **s; + int r; + + if (arg_inetd && n_fds != 1) { + log_error("--inetd only supported for single file descriptors."); + return -EINVAL; + } length = strv_length(arg_setenv); @@ -151,70 +151,119 @@ static int launch(char* name, char **argv, char **env, int fds) { return log_oom(); STRV_FOREACH(s, arg_setenv) { - if (strchr(*s, '=')) - envp[n_env++] = *s; - else { + + if (strchr(*s, '=')) { + char *k; + + k = strdup(*s); + if (!k) + return log_oom(); + + envp[n_env++] = k; + } else { _cleanup_free_ char *p; + const char *n; p = strappend(*s, "="); if (!p) return log_oom(); - envp[n_env] = strv_find_prefix(env, p); - if (envp[n_env]) - n_env ++; + + n = strv_find_prefix(env, p); + if (!n) + continue; + + envp[n_env] = strdup(n); + if (!envp[n_env]) + return log_oom(); + + n_env ++; } } - for (i = 0; i < ELEMENTSOF(tocopy); i++) { - envp[n_env] = strv_find_prefix(env, tocopy[i]); - if (envp[n_env]) - n_env ++; + FOREACH_STRING(tocopy, "TERM=", "PATH=", "USER=", "HOME=") { + const char *n; + + n = strv_find_prefix(env, tocopy); + if (!n) + continue; + + envp[n_env] = strdup(n); + if (!envp[n_env]) + return log_oom(); + + n_env ++; } - if ((asprintf((char**)(envp + n_env++), "LISTEN_FDS=%d", fds) < 0) || - (asprintf((char**)(envp + n_env++), "LISTEN_PID=%d", getpid()) < 0)) - return log_oom(); + if (arg_inetd) { + assert(n_fds == 1); + + r = dup2(start_fd, STDIN_FILENO); + if (r < 0) + return log_error_errno(errno, "Failed to dup connection to stdin: %m"); + + r = dup2(start_fd, STDOUT_FILENO); + if (r < 0) + return log_error_errno(errno, "Failed to dup connection to stdout: %m"); + + start_fd = safe_close(start_fd); + } else { + if (start_fd != SD_LISTEN_FDS_START) { + assert(n_fds == 1); - if (arg_fdname) { - char *e; + r = dup2(start_fd, SD_LISTEN_FDS_START); + if (r < 0) + return log_error_errno(errno, "Failed to dup connection: %m"); + + safe_close(start_fd); + start_fd = SD_LISTEN_FDS_START; + } - e = strappend("LISTEN_FDNAMES=", arg_fdname); - if (!e) + if (asprintf((char**)(envp + n_env++), "LISTEN_FDS=%i", n_fds) < 0) return log_oom(); - for (i = 1; i < (unsigned) fds; i++) { - char *c; + if (asprintf((char**)(envp + n_env++), "LISTEN_PID=" PID_FMT, getpid()) < 0) + return log_oom(); - c = strjoin(e, ":", arg_fdname, NULL); - if (!c) { - free(e); + if (arg_fdname) { + char *e; + + e = strappend("LISTEN_FDNAMES=", arg_fdname); + if (!e) return log_oom(); + + for (i = 1; i < (unsigned) n_fds; i++) { + char *c; + + c = strjoin(e, ":", arg_fdname, NULL); + if (!c) { + free(e); + return log_oom(); + } + + free(e); + e = c; } - free(e); - e = c; + envp[n_env++] = e; } - - envp[n_env++] = e; } - tmp = strv_join(argv, " "); - if (!tmp) + joined = strv_join(argv, " "); + if (!joined) return log_oom(); - log_info("Execing %s (%s)", name, tmp); + log_info("Execing %s (%s)", name, joined); execvpe(name, argv, envp); - return log_error_errno(errno, "Failed to execp %s (%s): %m", name, tmp); + return log_error_errno(errno, "Failed to execp %s (%s): %m", name, joined); } -static int launch1(const char* child, char** argv, char **env, int fd) { - _cleanup_free_ char *tmp = NULL; +static int fork_and_exec_process(const char* child, char** argv, char **env, int fd) { + _cleanup_free_ char *joined = NULL; pid_t parent_pid, child_pid; - int r; - tmp = strv_join(argv, " "); - if (!tmp) + joined = strv_join(argv, " "); + if (!joined) return log_oom(); parent_pid = getpid(); @@ -229,24 +278,6 @@ static int launch1(const char* child, char** argv, char **env, int fd) { (void) reset_all_signal_handlers(); (void) reset_signal_mask(); - r = dup2(fd, STDIN_FILENO); - if (r < 0) { - log_error_errno(errno, "Failed to dup connection to stdin: %m"); - _exit(EXIT_FAILURE); - } - - r = dup2(fd, STDOUT_FILENO); - if (r < 0) { - log_error_errno(errno, "Failed to dup connection to stdout: %m"); - _exit(EXIT_FAILURE); - } - - r = close(fd); - if (r < 0) { - log_error_errno(errno, "Failed to close dupped connection: %m"); - _exit(EXIT_FAILURE); - } - /* Make sure the child goes away when the parent dies */ if (prctl(PR_SET_PDEATHSIG, SIGTERM) < 0) _exit(EXIT_FAILURE); @@ -256,31 +287,27 @@ static int launch1(const char* child, char** argv, char **env, int fd) { if (getppid() != parent_pid) _exit(EXIT_SUCCESS); - execvp(child, argv); - log_error_errno(errno, "Failed to exec child %s: %m", child); + exec_process(child, argv, env, fd, 1); _exit(EXIT_FAILURE); } - log_info("Spawned %s (%s) as PID %d", child, tmp, child_pid); - + log_info("Spawned %s (%s) as PID %d", child, joined, child_pid); return 0; } static int do_accept(const char* name, char **argv, char **envp, int fd) { _cleanup_free_ char *local = NULL, *peer = NULL; - _cleanup_close_ int fd2 = -1; + _cleanup_close_ int fd_accepted = -1; - fd2 = accept(fd, NULL, NULL); - if (fd2 < 0) { - log_error_errno(errno, "Failed to accept connection on fd:%d: %m", fd); - return fd2; - } + fd_accepted = accept4(fd, NULL, NULL, 0); + if (fd_accepted < 0) + return log_error_errno(errno, "Failed to accept connection on fd:%d: %m", fd); - getsockname_pretty(fd2, &local); - getpeername_pretty(fd2, true, &peer); + getsockname_pretty(fd_accepted, &local); + getpeername_pretty(fd_accepted, true, &peer); log_info("Connection from %s to %s", strna(peer), strna(local)); - return launch1(name, argv, envp, fd2); + return fork_and_exec_process(name, argv, envp, fd_accepted); } /* SIGCHLD handler. */ @@ -288,33 +315,38 @@ static void sigchld_hdl(int sig, siginfo_t *t, void *data) { PROTECT_ERRNO; log_info("Child %d died with code %d", t->si_pid, t->si_status); + /* Wait for a dead child. */ - waitpid(t->si_pid, NULL, 0); + (void) waitpid(t->si_pid, NULL, 0); } static int install_chld_handler(void) { - int r; - struct sigaction act = { + static const struct sigaction act = { .sa_flags = SA_SIGINFO, .sa_sigaction = sigchld_hdl, }; + int r; + r = sigaction(SIGCHLD, &act, 0); if (r < 0) - log_error_errno(errno, "Failed to install SIGCHLD handler: %m"); - return r; + return log_error_errno(errno, "Failed to install SIGCHLD handler: %m"); + + return 0; } static void help(void) { printf("%s [OPTIONS...]\n\n" "Listen on sockets and launch child on connection.\n\n" "Options:\n" - " -d --datagram Datagram sockets\n" + " -h --help Show this help and exit\n" + " --version Print version string and exit\n" " -l --listen=ADDR Listen for raw connections at ADDR\n" + " -d --datagram Listen on datagram instead of stream socket\n" + " --seqpacket Listen on SOCK_SEQPACKET instead of stream socket\n" " -a --accept Spawn separate child for each connection\n" - " -h --help Show this help and exit\n" " -E --setenv=NAME[=VALUE] Pass an environment variable to children\n" - " --version Print version string and exit\n" + " --inetd Enable inetd file descriptor passing protocol\n" "\n" "Note: file descriptors from sd_listen_fds() will be passed through.\n" , program_invocation_short_name); @@ -324,17 +356,21 @@ static int parse_argv(int argc, char *argv[]) { enum { ARG_VERSION = 0x100, ARG_FDNAME, + ARG_SEQPACKET, + ARG_INETD, }; static const struct option options[] = { { "help", no_argument, NULL, 'h' }, { "version", no_argument, NULL, ARG_VERSION }, { "datagram", no_argument, NULL, 'd' }, + { "seqpacket", no_argument, NULL, ARG_SEQPACKET }, { "listen", required_argument, NULL, 'l' }, { "accept", no_argument, NULL, 'a' }, { "setenv", required_argument, NULL, 'E' }, { "environment", required_argument, NULL, 'E' }, /* legacy alias */ { "fdname", required_argument, NULL, ARG_FDNAME }, + { "inetd", no_argument, NULL, ARG_INETD }, {} }; @@ -360,7 +396,21 @@ static int parse_argv(int argc, char *argv[]) { break; case 'd': - arg_datagram = true; + if (arg_socket_type == SOCK_SEQPACKET) { + log_error("--datagram may not be combined with --seqpacket."); + return -EINVAL; + } + + arg_socket_type = SOCK_DGRAM; + break; + + case ARG_SEQPACKET: + if (arg_socket_type == SOCK_DGRAM) { + log_error("--seqpacket may not be combined with --datagram."); + return -EINVAL; + } + + arg_socket_type = SOCK_SEQPACKET; break; case 'a': @@ -383,6 +433,10 @@ static int parse_argv(int argc, char *argv[]) { arg_fdname = optarg; break; + case ARG_INETD: + arg_inetd = true; + break; + case '?': return -EINVAL; @@ -396,7 +450,7 @@ static int parse_argv(int argc, char *argv[]) { return -EINVAL; } - if (arg_datagram && arg_accept) { + if (arg_socket_type == SOCK_DGRAM && arg_accept) { log_error("Datagram sockets do not accept connections. " "The --datagram and --accept options may not be combined."); return -EINVAL; @@ -444,15 +498,14 @@ int main(int argc, char **argv, char **envp) { log_info("Communication attempt on fd %i.", event.data.fd); if (arg_accept) { - r = do_accept(argv[optind], argv + optind, envp, - event.data.fd); + r = do_accept(argv[optind], argv + optind, envp, event.data.fd); if (r < 0) return EXIT_FAILURE; } else break; } - launch(argv[optind], argv + optind, envp, n); + exec_process(argv[optind], argv + optind, envp, SD_LISTEN_FDS_START, n); return EXIT_SUCCESS; } diff --git a/src/analyze/analyze-verify.c b/src/analyze/analyze-verify.c index 3c9766da04..d36c8db3d4 100644 --- a/src/analyze/analyze-verify.c +++ b/src/analyze/analyze-verify.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/analyze/analyze-verify.h b/src/analyze/analyze-verify.h index d2d4a7f190..54adad93e1 100644 --- a/src/analyze/analyze-verify.h +++ b/src/analyze/analyze-verify.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/analyze/analyze.c b/src/analyze/analyze.c index c4e22786b1..a847084781 100644 --- a/src/analyze/analyze.c +++ b/src/analyze/analyze.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/ask-password/ask-password.c b/src/ask-password/ask-password.c index a544866000..adc9286612 100644 --- a/src/ask-password/ask-password.c +++ b/src/ask-password/ask-password.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/backlight/backlight.c b/src/backlight/backlight.c index a59459bc26..45be135a23 100644 --- a/src/backlight/backlight.c +++ b/src/backlight/backlight.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/af-list.c b/src/basic/af-list.c index 606bb49a59..3fac9c508b 100644 --- a/src/basic/af-list.c +++ b/src/basic/af-list.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/af-list.h b/src/basic/af-list.h index e346ab87f5..135248dc64 100644 --- a/src/basic/af-list.h +++ b/src/basic/af-list.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/alloc-util.c b/src/basic/alloc-util.c index 0c6a15c958..b540dcddf5 100644 --- a/src/basic/alloc-util.c +++ b/src/basic/alloc-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/alloc-util.h b/src/basic/alloc-util.h index f5097ea117..679ba7f398 100644 --- a/src/basic/alloc-util.h +++ b/src/basic/alloc-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/arphrd-list.c b/src/basic/arphrd-list.c index c1fdbbd905..6792d1ee3f 100644 --- a/src/basic/arphrd-list.c +++ b/src/basic/arphrd-list.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/arphrd-list.h b/src/basic/arphrd-list.h index 5ca182c9e8..c0f8758dbe 100644 --- a/src/basic/arphrd-list.h +++ b/src/basic/arphrd-list.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/async.c b/src/basic/async.c index 42c66a762e..a1f163f27b 100644 --- a/src/basic/async.c +++ b/src/basic/async.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/async.h b/src/basic/async.h index 7f1ef79532..9bd13ff6e0 100644 --- a/src/basic/async.h +++ b/src/basic/async.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/audit-util.c b/src/basic/audit-util.c index e52ee24c05..5741fecdd6 100644 --- a/src/basic/audit-util.c +++ b/src/basic/audit-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/audit-util.h b/src/basic/audit-util.h index 026d3cd9b1..e048503991 100644 --- a/src/basic/audit-util.h +++ b/src/basic/audit-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/barrier.c b/src/basic/barrier.c index 26ae123341..2da633b311 100644 --- a/src/basic/barrier.c +++ b/src/basic/barrier.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/barrier.h b/src/basic/barrier.h index 722effe834..6347fddc4d 100644 --- a/src/basic/barrier.h +++ b/src/basic/barrier.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/bitmap.c b/src/basic/bitmap.c index 50078822a7..ad1fda0198 100644 --- a/src/basic/bitmap.c +++ b/src/basic/bitmap.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/bitmap.h b/src/basic/bitmap.h index d2726630f1..f5f8f2f018 100644 --- a/src/basic/bitmap.h +++ b/src/basic/bitmap.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/blkid-util.h b/src/basic/blkid-util.h index c689310324..7aa75eb091 100644 --- a/src/basic/blkid-util.h +++ b/src/basic/blkid-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/btrfs-ctree.h b/src/basic/btrfs-ctree.h index d3ae57331c..66bdf9736e 100644 --- a/src/basic/btrfs-ctree.h +++ b/src/basic/btrfs-ctree.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once #include "macro.h" diff --git a/src/basic/btrfs-util.c b/src/basic/btrfs-util.c index 03c7609c92..359d85f2e8 100644 --- a/src/basic/btrfs-util.c +++ b/src/basic/btrfs-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/btrfs-util.h b/src/basic/btrfs-util.h index 31b9c02785..37802c2565 100644 --- a/src/basic/btrfs-util.h +++ b/src/basic/btrfs-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/build.h b/src/basic/build.h index 24873ab9d7..633c2aaccb 100644 --- a/src/basic/build.h +++ b/src/basic/build.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/bus-label.c b/src/basic/bus-label.c index d8d5863b03..d4531c7947 100644 --- a/src/basic/bus-label.c +++ b/src/basic/bus-label.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/bus-label.h b/src/basic/bus-label.h index f51153ce6d..62fb2c450c 100644 --- a/src/basic/bus-label.h +++ b/src/basic/bus-label.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/calendarspec.c b/src/basic/calendarspec.c index 8f83d9c142..775879076d 100644 --- a/src/basic/calendarspec.c +++ b/src/basic/calendarspec.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/calendarspec.h b/src/basic/calendarspec.h index 4e3aa9e1d8..f6472c1244 100644 --- a/src/basic/calendarspec.h +++ b/src/basic/calendarspec.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/cap-list.c b/src/basic/cap-list.c index 0e5cc452b9..3e773a06f5 100644 --- a/src/basic/cap-list.c +++ b/src/basic/cap-list.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/cap-list.h b/src/basic/cap-list.h index 9824fad70f..c1f6b94ad3 100644 --- a/src/basic/cap-list.h +++ b/src/basic/cap-list.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/capability-util.c b/src/basic/capability-util.c index 49c2d61afe..d4c5bd6937 100644 --- a/src/basic/capability-util.c +++ b/src/basic/capability-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/capability-util.h b/src/basic/capability-util.h index be41475441..35a896e229 100644 --- a/src/basic/capability-util.h +++ b/src/basic/capability-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/cgroup-util.c b/src/basic/cgroup-util.c index f873fb89d3..6ef00d51df 100644 --- a/src/basic/cgroup-util.c +++ b/src/basic/cgroup-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -2271,7 +2269,6 @@ static const char *cgroup_controller_table[_CGROUP_CONTROLLER_MAX] = { [CGROUP_CONTROLLER_MEMORY] = "memory", [CGROUP_CONTROLLER_DEVICES] = "devices", [CGROUP_CONTROLLER_PIDS] = "pids", - [CGROUP_CONTROLLER_NET_CLS] = "net_cls", }; DEFINE_STRING_TABLE_LOOKUP(cgroup_controller, CGroupController); diff --git a/src/basic/cgroup-util.h b/src/basic/cgroup-util.h index 661785784a..ad1edd9cdb 100644 --- a/src/basic/cgroup-util.h +++ b/src/basic/cgroup-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** @@ -40,7 +38,6 @@ typedef enum CGroupController { CGROUP_CONTROLLER_MEMORY, CGROUP_CONTROLLER_DEVICES, CGROUP_CONTROLLER_PIDS, - CGROUP_CONTROLLER_NET_CLS, _CGROUP_CONTROLLER_MAX, _CGROUP_CONTROLLER_INVALID = -1, } CGroupController; @@ -55,7 +52,6 @@ typedef enum CGroupMask { CGROUP_MASK_MEMORY = CGROUP_CONTROLLER_TO_MASK(CGROUP_CONTROLLER_MEMORY), CGROUP_MASK_DEVICES = CGROUP_CONTROLLER_TO_MASK(CGROUP_CONTROLLER_DEVICES), CGROUP_MASK_PIDS = CGROUP_CONTROLLER_TO_MASK(CGROUP_CONTROLLER_PIDS), - CGROUP_MASK_NET_CLS = CGROUP_CONTROLLER_TO_MASK(CGROUP_CONTROLLER_NET_CLS), _CGROUP_MASK_ALL = CGROUP_CONTROLLER_TO_MASK(_CGROUP_CONTROLLER_MAX) - 1 } CGroupMask; diff --git a/src/basic/chattr-util.c b/src/basic/chattr-util.c index 438fc63c5c..2896a729af 100644 --- a/src/basic/chattr-util.c +++ b/src/basic/chattr-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/chattr-util.h b/src/basic/chattr-util.h index ba6b8eb5c1..960cf6d5b3 100644 --- a/src/basic/chattr-util.h +++ b/src/basic/chattr-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/clock-util.c b/src/basic/clock-util.c index 05788a360e..507e757ff0 100644 --- a/src/basic/clock-util.c +++ b/src/basic/clock-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -146,3 +144,17 @@ int clock_reset_timewarp(void) { return 0; } + +#define TIME_EPOCH_USEC ((usec_t) TIME_EPOCH * USEC_PER_SEC) + +int clock_apply_epoch(void) { + struct timespec ts; + + if (now(CLOCK_REALTIME) >= TIME_EPOCH_USEC) + return 0; + + if (clock_settime(CLOCK_REALTIME, timespec_store(&ts, TIME_EPOCH_USEC)) < 0) + return -errno; + + return 1; +} diff --git a/src/basic/clock-util.h b/src/basic/clock-util.h index fef2d471a6..f471f2abcf 100644 --- a/src/basic/clock-util.h +++ b/src/basic/clock-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** @@ -28,3 +26,4 @@ int clock_set_timezone(int *min); int clock_reset_timewarp(void); int clock_get_hwclock(struct tm *tm); int clock_set_hwclock(const struct tm *tm); +int clock_apply_epoch(void); diff --git a/src/basic/conf-files.c b/src/basic/conf-files.c index 5854caeb51..c781610e14 100644 --- a/src/basic/conf-files.c +++ b/src/basic/conf-files.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/conf-files.h b/src/basic/conf-files.h index d8aebc5e5b..e00e0e81fb 100644 --- a/src/basic/conf-files.h +++ b/src/basic/conf-files.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/copy.c b/src/basic/copy.c index 024712d290..519b412941 100644 --- a/src/basic/copy.c +++ b/src/basic/copy.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/copy.h b/src/basic/copy.h index b3fc2bb709..3e5eb52506 100644 --- a/src/basic/copy.h +++ b/src/basic/copy.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/cpu-set-util.c b/src/basic/cpu-set-util.c index 85b7519953..95ed6928ff 100644 --- a/src/basic/cpu-set-util.c +++ b/src/basic/cpu-set-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/cpu-set-util.h b/src/basic/cpu-set-util.h index 19b457a684..6f49d9afb0 100644 --- a/src/basic/cpu-set-util.h +++ b/src/basic/cpu-set-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/def.h b/src/basic/def.h index 0657ac7367..963343eb7d 100644 --- a/src/basic/def.h +++ b/src/basic/def.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/device-nodes.c b/src/basic/device-nodes.c index ec58cfdd4c..38c0628a90 100644 --- a/src/basic/device-nodes.c +++ b/src/basic/device-nodes.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/device-nodes.h b/src/basic/device-nodes.h index 9669c86970..94f385abcb 100644 --- a/src/basic/device-nodes.h +++ b/src/basic/device-nodes.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/dirent-util.c b/src/basic/dirent-util.c index 4ef5aba5a8..5fb535cb13 100644 --- a/src/basic/dirent-util.c +++ b/src/basic/dirent-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/dirent-util.h b/src/basic/dirent-util.h index 1ad5e4715a..6bf099b46c 100644 --- a/src/basic/dirent-util.h +++ b/src/basic/dirent-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/env-util.c b/src/basic/env-util.c index dd56545f12..7f5fddb700 100644 --- a/src/basic/env-util.c +++ b/src/basic/env-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/env-util.h b/src/basic/env-util.h index 3b83a63a78..b1fef704c2 100644 --- a/src/basic/env-util.h +++ b/src/basic/env-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/errno-list.c b/src/basic/errno-list.c index b4d080103b..31b66bad5e 100644 --- a/src/basic/errno-list.c +++ b/src/basic/errno-list.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/errno-list.h b/src/basic/errno-list.h index ba533294e6..4eec0cc786 100644 --- a/src/basic/errno-list.h +++ b/src/basic/errno-list.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/escape.c b/src/basic/escape.c index d59aa9f42f..01daf11ce7 100644 --- a/src/basic/escape.c +++ b/src/basic/escape.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/escape.h b/src/basic/escape.h index bc25646a3d..deaa4def28 100644 --- a/src/basic/escape.h +++ b/src/basic/escape.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/ether-addr-util.c b/src/basic/ether-addr-util.c index bc54f8f5f4..ded6d31f4b 100644 --- a/src/basic/ether-addr-util.c +++ b/src/basic/ether-addr-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/ether-addr-util.h b/src/basic/ether-addr-util.h index 008f3b893e..4487149efd 100644 --- a/src/basic/ether-addr-util.h +++ b/src/basic/ether-addr-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/exit-status.c b/src/basic/exit-status.c index 4c83731540..92fa5ace61 100644 --- a/src/basic/exit-status.c +++ b/src/basic/exit-status.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -149,9 +147,6 @@ const char* exit_status_to_string(ExitStatus status, ExitStatusLevel level) { case EXIT_MAKE_STARTER: return "MAKE_STARTER"; - case EXIT_BUS_ENDPOINT: - return "BUS_ENDPOINT"; - case EXIT_SMACK_PROCESS_LABEL: return "SMACK_PROCESS_LABEL"; } diff --git a/src/basic/exit-status.h b/src/basic/exit-status.h index 664222c1d6..1208c8feed 100644 --- a/src/basic/exit-status.h +++ b/src/basic/exit-status.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** @@ -79,7 +77,6 @@ typedef enum ExitStatus { EXIT_RUNTIME_DIRECTORY, EXIT_MAKE_STARTER, EXIT_CHOWN, - EXIT_BUS_ENDPOINT, EXIT_SMACK_PROCESS_LABEL, } ExitStatus; diff --git a/src/basic/extract-word.c b/src/basic/extract-word.c index 6dcd4f9f5b..ee35d2a0ec 100644 --- a/src/basic/extract-word.c +++ b/src/basic/extract-word.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/extract-word.h b/src/basic/extract-word.h index 9606ab64b3..21db5ef33f 100644 --- a/src/basic/extract-word.h +++ b/src/basic/extract-word.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/fd-util.c b/src/basic/fd-util.c index 9759cac23c..ec9560cd07 100644 --- a/src/basic/fd-util.c +++ b/src/basic/fd-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/fd-util.h b/src/basic/fd-util.h index 20890e3279..44528c6e35 100644 --- a/src/basic/fd-util.h +++ b/src/basic/fd-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/fdset.c b/src/basic/fdset.c index de9b723ab8..3674d3ed9d 100644 --- a/src/basic/fdset.c +++ b/src/basic/fdset.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/fdset.h b/src/basic/fdset.h index 615ba05661..12d0cef761 100644 --- a/src/basic/fdset.h +++ b/src/basic/fdset.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/fileio-label.c b/src/basic/fileio-label.c index 1cee87c9cd..66dbc0fe1e 100644 --- a/src/basic/fileio-label.c +++ b/src/basic/fileio-label.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/fileio-label.h b/src/basic/fileio-label.h index 9feb3cccb5..fe7543013d 100644 --- a/src/basic/fileio-label.h +++ b/src/basic/fileio-label.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/fileio.c b/src/basic/fileio.c index 3ff70310e1..e43ca6d29e 100644 --- a/src/basic/fileio.c +++ b/src/basic/fileio.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/fileio.h b/src/basic/fileio.h index 9e09574133..8084895ff3 100644 --- a/src/basic/fileio.h +++ b/src/basic/fileio.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/fs-util.c b/src/basic/fs-util.c index 61b651b573..3ef1b90edd 100644 --- a/src/basic/fs-util.c +++ b/src/basic/fs-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/fs-util.h b/src/basic/fs-util.h index 67ed214b51..0e2fcb21b9 100644 --- a/src/basic/fs-util.h +++ b/src/basic/fs-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/glob-util.c b/src/basic/glob-util.c index 811ab6ec36..007198c269 100644 --- a/src/basic/glob-util.c +++ b/src/basic/glob-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/glob-util.h b/src/basic/glob-util.h index a0a5efe5b6..5d8fb47a26 100644 --- a/src/basic/glob-util.h +++ b/src/basic/glob-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/hash-funcs.c b/src/basic/hash-funcs.c index d4affaffee..c3a4a011b5 100644 --- a/src/basic/hash-funcs.c +++ b/src/basic/hash-funcs.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/hash-funcs.h b/src/basic/hash-funcs.h index c640eaf4d1..299189d143 100644 --- a/src/basic/hash-funcs.h +++ b/src/basic/hash-funcs.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/hashmap.c b/src/basic/hashmap.c index dcd8ae412d..6f1a049d47 100644 --- a/src/basic/hashmap.c +++ b/src/basic/hashmap.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/hashmap.h b/src/basic/hashmap.h index fdba9c61ff..6d1ae48b21 100644 --- a/src/basic/hashmap.h +++ b/src/basic/hashmap.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/hexdecoct.c b/src/basic/hexdecoct.c index cbd97a1b69..d7ad8d41f2 100644 --- a/src/basic/hexdecoct.c +++ b/src/basic/hexdecoct.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/hexdecoct.h b/src/basic/hexdecoct.h index 243c5e921e..1ba2f69ebd 100644 --- a/src/basic/hexdecoct.h +++ b/src/basic/hexdecoct.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/hostname-util.c b/src/basic/hostname-util.c index 795afb6d00..7bb23448ed 100644 --- a/src/basic/hostname-util.c +++ b/src/basic/hostname-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/hostname-util.h b/src/basic/hostname-util.h index d4f5bfe45e..d062eddea1 100644 --- a/src/basic/hostname-util.h +++ b/src/basic/hostname-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/in-addr-util.c b/src/basic/in-addr-util.c index 8609ffb3c9..245107ebb8 100644 --- a/src/basic/in-addr-util.c +++ b/src/basic/in-addr-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/in-addr-util.h b/src/basic/in-addr-util.h index f2b8865df5..17798ce816 100644 --- a/src/basic/in-addr-util.h +++ b/src/basic/in-addr-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/io-util.c b/src/basic/io-util.c index e83e7cec72..3ec8d61236 100644 --- a/src/basic/io-util.c +++ b/src/basic/io-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/io-util.h b/src/basic/io-util.h index 7d0d2bd810..142c940d92 100644 --- a/src/basic/io-util.h +++ b/src/basic/io-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/json.c b/src/basic/json.c index 3a3d1ad1e1..daa98fc815 100644 --- a/src/basic/json.c +++ b/src/basic/json.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/json.h b/src/basic/json.h index df3f62f206..a4509f680f 100644 --- a/src/basic/json.h +++ b/src/basic/json.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/label.c b/src/basic/label.c index f72a985967..f5ab855d32 100644 --- a/src/basic/label.c +++ b/src/basic/label.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/label.h b/src/basic/label.h index 8070bcb021..3e9251aa71 100644 --- a/src/basic/label.h +++ b/src/basic/label.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/list.h b/src/basic/list.h index 760abcdab3..c68185f587 100644 --- a/src/basic/list.h +++ b/src/basic/list.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/locale-util.c b/src/basic/locale-util.c index 7784d02168..cda6b2895d 100644 --- a/src/basic/locale-util.c +++ b/src/basic/locale-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/locale-util.h b/src/basic/locale-util.h index c71d145139..b0f9679286 100644 --- a/src/basic/locale-util.h +++ b/src/basic/locale-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/lockfile-util.c b/src/basic/lockfile-util.c index 6ecfc2ec46..3ee4191e4d 100644 --- a/src/basic/lockfile-util.c +++ b/src/basic/lockfile-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/lockfile-util.h b/src/basic/lockfile-util.h index 3c514c9e62..22491ee8e1 100644 --- a/src/basic/lockfile-util.h +++ b/src/basic/lockfile-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/log.c b/src/basic/log.c index 18d4b82be2..d89e6f7274 100644 --- a/src/basic/log.c +++ b/src/basic/log.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/log.h b/src/basic/log.h index 8c7c5e4598..60ddead74c 100644 --- a/src/basic/log.h +++ b/src/basic/log.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/login-util.c b/src/basic/login-util.c index 4e08fe3895..339e94f12d 100644 --- a/src/basic/login-util.c +++ b/src/basic/login-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/login-util.h b/src/basic/login-util.h index be5bb64870..89a337d7c1 100644 --- a/src/basic/login-util.h +++ b/src/basic/login-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/macro.h b/src/basic/macro.h index c529c6ecad..2695d0edb7 100644 --- a/src/basic/macro.h +++ b/src/basic/macro.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/memfd-util.c b/src/basic/memfd-util.c index 789638f013..8c8cc78ebf 100644 --- a/src/basic/memfd-util.c +++ b/src/basic/memfd-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/memfd-util.h b/src/basic/memfd-util.h index 2a89361c4c..46d4989e4c 100644 --- a/src/basic/memfd-util.h +++ b/src/basic/memfd-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/mempool.c b/src/basic/mempool.c index 1822d3956f..f95e2beb0f 100644 --- a/src/basic/mempool.c +++ b/src/basic/mempool.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/mempool.h b/src/basic/mempool.h index 42f473bee1..fea7841bcf 100644 --- a/src/basic/mempool.h +++ b/src/basic/mempool.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/missing.h b/src/basic/missing.h index 48ca04a8a1..36b060496a 100644 --- a/src/basic/missing.h +++ b/src/basic/missing.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/mkdir-label.c b/src/basic/mkdir-label.c index c9e17f7680..aa6878cdf0 100644 --- a/src/basic/mkdir-label.c +++ b/src/basic/mkdir-label.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/mkdir.c b/src/basic/mkdir.c index 9f9d52b5df..6b1a98402c 100644 --- a/src/basic/mkdir.c +++ b/src/basic/mkdir.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/mkdir.h b/src/basic/mkdir.h index 2392d1fd1b..d564a3547f 100644 --- a/src/basic/mkdir.h +++ b/src/basic/mkdir.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/mount-util.c b/src/basic/mount-util.c index 10a6536cfc..33f2ee96d8 100644 --- a/src/basic/mount-util.c +++ b/src/basic/mount-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/mount-util.h b/src/basic/mount-util.h index b37250f08e..bdb525d6b0 100644 --- a/src/basic/mount-util.h +++ b/src/basic/mount-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/nss-util.h b/src/basic/nss-util.h index 4be0136da6..df565a3593 100644 --- a/src/basic/nss-util.h +++ b/src/basic/nss-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/ordered-set.h b/src/basic/ordered-set.h index ab185c11aa..e1dfc86380 100644 --- a/src/basic/ordered-set.h +++ b/src/basic/ordered-set.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/parse-util.c b/src/basic/parse-util.c index d8de6f90ea..a3cb81b040 100644 --- a/src/basic/parse-util.c +++ b/src/basic/parse-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/parse-util.h b/src/basic/parse-util.h index af439cfaa7..d8dc26a36e 100644 --- a/src/basic/parse-util.h +++ b/src/basic/parse-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/path-util.c b/src/basic/path-util.c index 4837bb2d7d..822c09bfba 100644 --- a/src/basic/path-util.c +++ b/src/basic/path-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/path-util.h b/src/basic/path-util.h index 84472d38c7..2c2f87a9f2 100644 --- a/src/basic/path-util.h +++ b/src/basic/path-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/prioq.c b/src/basic/prioq.c index 86c5c0e9b4..d2ec516d29 100644 --- a/src/basic/prioq.c +++ b/src/basic/prioq.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/prioq.h b/src/basic/prioq.h index 6a2451387c..113c73d040 100644 --- a/src/basic/prioq.h +++ b/src/basic/prioq.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/proc-cmdline.c b/src/basic/proc-cmdline.c index 4e8eba10ab..3505fa9c9a 100644 --- a/src/basic/proc-cmdline.c +++ b/src/basic/proc-cmdline.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/proc-cmdline.h b/src/basic/proc-cmdline.h index ce6e84995a..452642a2f5 100644 --- a/src/basic/proc-cmdline.h +++ b/src/basic/proc-cmdline.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/ratelimit.c b/src/basic/ratelimit.c index b62f3da76b..3ca5625e4d 100644 --- a/src/basic/ratelimit.c +++ b/src/basic/ratelimit.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/ratelimit.h b/src/basic/ratelimit.h index 98c81f6b9e..9c8dddf5ad 100644 --- a/src/basic/ratelimit.h +++ b/src/basic/ratelimit.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/refcnt.h b/src/basic/refcnt.h index 8a39d69fe4..1d77a6445a 100644 --- a/src/basic/refcnt.h +++ b/src/basic/refcnt.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/replace-var.c b/src/basic/replace-var.c index 8c3279b376..6a204b9ec3 100644 --- a/src/basic/replace-var.c +++ b/src/basic/replace-var.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/replace-var.h b/src/basic/replace-var.h index 7eaee93a3e..78412910b2 100644 --- a/src/basic/replace-var.h +++ b/src/basic/replace-var.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/rlimit-util.c b/src/basic/rlimit-util.c index 44f885db16..7540b43215 100644 --- a/src/basic/rlimit-util.c +++ b/src/basic/rlimit-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -22,10 +20,14 @@ #include <errno.h> #include <sys/resource.h> +#include "alloc-util.h" +#include "extract-word.h" +#include "formats-util.h" #include "macro.h" #include "missing.h" #include "rlimit-util.h" #include "string-table.h" +#include "time-util.h" int setrlimit_closest(int resource, const struct rlimit *rlim) { struct rlimit highest, fixed; @@ -51,6 +53,202 @@ int setrlimit_closest(int resource, const struct rlimit *rlim) { return 0; } +static int rlimit_parse_u64(const char *val, rlim_t *ret) { + uint64_t u; + int r; + + assert(val); + assert(ret); + + if (streq(val, "infinity")) { + *ret = RLIM_INFINITY; + return 0; + } + + /* setrlimit(2) suggests rlim_t is always 64bit on Linux. */ + assert_cc(sizeof(rlim_t) == sizeof(uint64_t)); + + r = safe_atou64(val, &u); + if (r < 0) + return r; + if (u >= (uint64_t) RLIM_INFINITY) + return -ERANGE; + + *ret = (rlim_t) u; + return 0; +} + +static int rlimit_parse_size(const char *val, rlim_t *ret) { + uint64_t u; + int r; + + assert(val); + assert(ret); + + if (streq(val, "infinity")) { + *ret = RLIM_INFINITY; + return 0; + } + + r = parse_size(val, 1024, &u); + if (r < 0) + return r; + if (u >= (uint64_t) RLIM_INFINITY) + return -ERANGE; + + *ret = (rlim_t) u; + return 0; +} + +static int rlimit_parse_sec(const char *val, rlim_t *ret) { + uint64_t u; + usec_t t; + int r; + + assert(val); + assert(ret); + + if (streq(val, "infinity")) { + *ret = RLIM_INFINITY; + return 0; + } + + r = parse_sec(val, &t); + if (r < 0) + return r; + if (t == USEC_INFINITY) { + *ret = RLIM_INFINITY; + return 0; + } + + u = (uint64_t) DIV_ROUND_UP(t, USEC_PER_SEC); + if (u >= (uint64_t) RLIM_INFINITY) + return -ERANGE; + + *ret = (rlim_t) u; + return 0; +} + +static int rlimit_parse_usec(const char *val, rlim_t *ret) { + usec_t t; + int r; + + assert(val); + assert(ret); + + if (streq(val, "infinity")) { + *ret = RLIM_INFINITY; + return 0; + } + + r = parse_time(val, &t, 1); + if (r < 0) + return r; + if (t == USEC_INFINITY) { + *ret = RLIM_INFINITY; + return 0; + } + + *ret = (rlim_t) t; + return 0; +} + +static int (*const rlimit_parse_table[_RLIMIT_MAX])(const char *val, rlim_t *ret) = { + [RLIMIT_CPU] = rlimit_parse_sec, + [RLIMIT_FSIZE] = rlimit_parse_size, + [RLIMIT_DATA] = rlimit_parse_size, + [RLIMIT_STACK] = rlimit_parse_size, + [RLIMIT_CORE] = rlimit_parse_size, + [RLIMIT_RSS] = rlimit_parse_size, + [RLIMIT_NOFILE] = rlimit_parse_u64, + [RLIMIT_AS] = rlimit_parse_size, + [RLIMIT_NPROC] = rlimit_parse_u64, + [RLIMIT_MEMLOCK] = rlimit_parse_size, + [RLIMIT_LOCKS] = rlimit_parse_u64, + [RLIMIT_SIGPENDING] = rlimit_parse_u64, + [RLIMIT_MSGQUEUE] = rlimit_parse_size, + [RLIMIT_NICE] = rlimit_parse_u64, + [RLIMIT_RTPRIO] = rlimit_parse_u64, + [RLIMIT_RTTIME] = rlimit_parse_usec, +}; + +int rlimit_parse_one(int resource, const char *val, rlim_t *ret) { + assert(val); + assert(ret); + + if (resource < 0) + return -EINVAL; + if (resource >= _RLIMIT_MAX) + return -EINVAL; + + return rlimit_parse_table[resource](val, ret); +} + +int rlimit_parse(int resource, const char *val, struct rlimit *ret) { + _cleanup_free_ char *hard = NULL, *soft = NULL; + rlim_t hl, sl; + int r; + + assert(val); + assert(ret); + + r = extract_first_word(&val, &soft, ":", EXTRACT_DONT_COALESCE_SEPARATORS); + if (r < 0) + return r; + if (r == 0) + return -EINVAL; + + r = rlimit_parse_one(resource, soft, &sl); + if (r < 0) + return r; + + r = extract_first_word(&val, &hard, ":", EXTRACT_DONT_COALESCE_SEPARATORS); + if (r < 0) + return r; + if (!isempty(val)) + return -EINVAL; + if (r == 0) + hl = sl; + else { + r = rlimit_parse_one(resource, hard, &hl); + if (r < 0) + return r; + if (sl > hl) + return -EILSEQ; + } + + *ret = (struct rlimit) { + .rlim_cur = sl, + .rlim_max = hl, + }; + + return 0; +} + +int rlimit_format(const struct rlimit *rl, char **ret) { + char *s = NULL; + + assert(rl); + assert(ret); + + if (rl->rlim_cur >= RLIM_INFINITY && rl->rlim_max >= RLIM_INFINITY) + s = strdup("infinity"); + else if (rl->rlim_cur >= RLIM_INFINITY) + (void) asprintf(&s, "infinity:" RLIM_FMT, rl->rlim_max); + else if (rl->rlim_max >= RLIM_INFINITY) + (void) asprintf(&s, RLIM_FMT ":infinity", rl->rlim_cur); + else if (rl->rlim_cur == rl->rlim_max) + (void) asprintf(&s, RLIM_FMT, rl->rlim_cur); + else + (void) asprintf(&s, RLIM_FMT ":" RLIM_FMT, rl->rlim_cur, rl->rlim_max); + + if (!s) + return -ENOMEM; + + *ret = s; + return 0; +} + static const char* const rlimit_table[_RLIMIT_MAX] = { [RLIMIT_CPU] = "LimitCPU", [RLIMIT_FSIZE] = "LimitFSIZE", diff --git a/src/basic/rlimit-util.h b/src/basic/rlimit-util.h index 262f86dd04..d4594eccd6 100644 --- a/src/basic/rlimit-util.h +++ b/src/basic/rlimit-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** @@ -30,4 +28,9 @@ int rlimit_from_string(const char *s) _pure_; int setrlimit_closest(int resource, const struct rlimit *rlim); +int rlimit_parse_one(int resource, const char *val, rlim_t *ret); +int rlimit_parse(int resource, const char *val, struct rlimit *ret); + +int rlimit_format(const struct rlimit *rl, char **ret); + #define RLIMIT_MAKE_CONST(lim) ((struct rlimit) { lim, lim }) diff --git a/src/basic/rm-rf.c b/src/basic/rm-rf.c index 4807561723..43816fd1bb 100644 --- a/src/basic/rm-rf.c +++ b/src/basic/rm-rf.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/rm-rf.h b/src/basic/rm-rf.h index 96579eb182..6d03268919 100644 --- a/src/basic/rm-rf.h +++ b/src/basic/rm-rf.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/selinux-util.c b/src/basic/selinux-util.c index 5956c4fe43..6c63b9d652 100644 --- a/src/basic/selinux-util.c +++ b/src/basic/selinux-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/selinux-util.h b/src/basic/selinux-util.h index 0111f4c858..27e8edb41b 100644 --- a/src/basic/selinux-util.h +++ b/src/basic/selinux-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/set.h b/src/basic/set.h index 5fd7de08f9..2bff5062da 100644 --- a/src/basic/set.h +++ b/src/basic/set.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/sigbus.c b/src/basic/sigbus.c index fe2e2d1a28..0ce4f75684 100644 --- a/src/basic/sigbus.c +++ b/src/basic/sigbus.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/sigbus.h b/src/basic/sigbus.h index 23edc6d9cb..cce9eb201b 100644 --- a/src/basic/sigbus.h +++ b/src/basic/sigbus.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/signal-util.c b/src/basic/signal-util.c index 315efadd93..e3047b209b 100644 --- a/src/basic/signal-util.c +++ b/src/basic/signal-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/signal-util.h b/src/basic/signal-util.h index 5d94d1c363..72b10e8712 100644 --- a/src/basic/signal-util.h +++ b/src/basic/signal-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/smack-util.c b/src/basic/smack-util.c index b9e4ff87d8..3a3df987df 100644 --- a/src/basic/smack-util.c +++ b/src/basic/smack-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/smack-util.h b/src/basic/smack-util.h index 1d85b52a33..f90ba0a027 100644 --- a/src/basic/smack-util.h +++ b/src/basic/smack-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/socket-label.c b/src/basic/socket-label.c index bd206586ce..35e9573aa4 100644 --- a/src/basic/socket-label.c +++ b/src/basic/socket-label.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/socket-util.c b/src/basic/socket-util.c index f2bb3bab86..49e5f5b125 100644 --- a/src/basic/socket-util.c +++ b/src/basic/socket-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -873,14 +871,13 @@ int send_one_fd_sa( struct cmsghdr cmsghdr; uint8_t buf[CMSG_SPACE(sizeof(int))]; } control = {}; - struct cmsghdr *cmsg; - struct msghdr mh = { .msg_name = (struct sockaddr*) sa, .msg_namelen = len, .msg_control = &control, .msg_controllen = sizeof(control), }; + struct cmsghdr *cmsg; assert(transport_fd >= 0); assert(fd >= 0); diff --git a/src/basic/socket-util.h b/src/basic/socket-util.h index 2323ccf3ab..92edc1dc22 100644 --- a/src/basic/socket-util.h +++ b/src/basic/socket-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/special.h b/src/basic/special.h index f30458f25a..2fd03d9f75 100644 --- a/src/basic/special.h +++ b/src/basic/special.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/stat-util.c b/src/basic/stat-util.c index 21a8fb77a1..309e84b93d 100644 --- a/src/basic/stat-util.c +++ b/src/basic/stat-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/stat-util.h b/src/basic/stat-util.h index 8e031e6155..56d28f791e 100644 --- a/src/basic/stat-util.h +++ b/src/basic/stat-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/stdio-util.h b/src/basic/stdio-util.h index b36e8a947e..0a675571ff 100644 --- a/src/basic/stdio-util.h +++ b/src/basic/stdio-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/strbuf.c b/src/basic/strbuf.c index c9984bef08..77220c0251 100644 --- a/src/basic/strbuf.c +++ b/src/basic/strbuf.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/strbuf.h b/src/basic/strbuf.h index 69565f7e2c..a1632da0e8 100644 --- a/src/basic/strbuf.h +++ b/src/basic/strbuf.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/string-table.c b/src/basic/string-table.c index 4633a57f44..a1499ab126 100644 --- a/src/basic/string-table.c +++ b/src/basic/string-table.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/string-table.h b/src/basic/string-table.h index 588404ab5a..b180488fe8 100644 --- a/src/basic/string-table.h +++ b/src/basic/string-table.h @@ -1,6 +1,4 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/string-util.c b/src/basic/string-util.c index cb75b09c74..0bde55f9d5 100644 --- a/src/basic/string-util.c +++ b/src/basic/string-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/string-util.h b/src/basic/string-util.h index 8ea18f45aa..ad0c813761 100644 --- a/src/basic/string-util.h +++ b/src/basic/string-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/strv.c b/src/basic/strv.c index 5532c53ad1..b5d4d8191b 100644 --- a/src/basic/strv.c +++ b/src/basic/strv.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/strv.h b/src/basic/strv.h index 560f90115c..7bfa54408d 100644 --- a/src/basic/strv.h +++ b/src/basic/strv.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/strxcpyx.c b/src/basic/strxcpyx.c index c454171de1..aaf11d21f6 100644 --- a/src/basic/strxcpyx.c +++ b/src/basic/strxcpyx.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/strxcpyx.h b/src/basic/strxcpyx.h index 02e22e6294..80ff58726b 100644 --- a/src/basic/strxcpyx.h +++ b/src/basic/strxcpyx.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/syslog-util.c b/src/basic/syslog-util.c index 7dc2761b6f..db3405154e 100644 --- a/src/basic/syslog-util.c +++ b/src/basic/syslog-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/syslog-util.h b/src/basic/syslog-util.h index eb79c6dbd8..5cb606a1bf 100644 --- a/src/basic/syslog-util.h +++ b/src/basic/syslog-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/time-util.c b/src/basic/time-util.c index bfc7cf870c..510f018d9b 100644 --- a/src/basic/time-util.c +++ b/src/basic/time-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -42,10 +40,32 @@ #include "strv.h" #include "time-util.h" +static nsec_t timespec_load_nsec(const struct timespec *ts); + +static clockid_t map_clock_id(clockid_t c) { + + /* Some more exotic archs (s390, ppc, …) lack the "ALARM" flavour of the clocks. Thus, clock_gettime() will + * fail for them. Since they are essentially the same as their non-ALARM pendants (their only difference is + * when timers are set on them), let's just map them accordingly. This way, we can get the correct time even on + * those archs. */ + + switch (c) { + + case CLOCK_BOOTTIME_ALARM: + return CLOCK_BOOTTIME; + + case CLOCK_REALTIME_ALARM: + return CLOCK_REALTIME; + + default: + return c; + } +} + usec_t now(clockid_t clock_id) { struct timespec ts; - assert_se(clock_gettime(clock_id, &ts) == 0); + assert_se(clock_gettime(map_clock_id(clock_id), &ts) == 0); return timespec_load(&ts); } @@ -53,7 +73,7 @@ usec_t now(clockid_t clock_id) { nsec_t now_nsec(clockid_t clock_id) { struct timespec ts; - assert_se(clock_gettime(clock_id, &ts) == 0); + assert_se(clock_gettime(map_clock_id(clock_id), &ts) == 0); return timespec_load_nsec(&ts); } @@ -79,12 +99,7 @@ dual_timestamp* dual_timestamp_from_realtime(dual_timestamp *ts, usec_t u) { ts->realtime = u; delta = (int64_t) now(CLOCK_REALTIME) - (int64_t) u; - ts->monotonic = now(CLOCK_MONOTONIC); - - if ((int64_t) ts->monotonic > delta) - ts->monotonic -= delta; - else - ts->monotonic = 0; + ts->monotonic = usec_sub(now(CLOCK_MONOTONIC), delta); return ts; } @@ -100,12 +115,7 @@ dual_timestamp* dual_timestamp_from_monotonic(dual_timestamp *ts, usec_t u) { ts->monotonic = u; delta = (int64_t) now(CLOCK_MONOTONIC) - (int64_t) u; - - ts->realtime = now(CLOCK_REALTIME); - if ((int64_t) ts->realtime > delta) - ts->realtime -= delta; - else - ts->realtime = 0; + ts->realtime = usec_sub(now(CLOCK_REALTIME), delta); return ts; } @@ -117,25 +127,15 @@ dual_timestamp* dual_timestamp_from_boottime_or_monotonic(dual_timestamp *ts, us ts->realtime = ts->monotonic = USEC_INFINITY; return ts; } - ts->realtime = now(CLOCK_REALTIME); - ts->monotonic = now(CLOCK_MONOTONIC); + dual_timestamp_get(ts); delta = (int64_t) now(clock_boottime_or_monotonic()) - (int64_t) u; - - if ((int64_t) ts->realtime > delta) - ts->realtime -= delta; - else - ts->realtime = 0; - - if ((int64_t) ts->monotonic > delta) - ts->monotonic -= delta; - else - ts->monotonic = 0; + ts->realtime = usec_sub(ts->realtime, delta); + ts->monotonic = usec_sub(ts->monotonic, delta); return ts; } - usec_t timespec_load(const struct timespec *ts) { assert(ts); @@ -151,7 +151,7 @@ usec_t timespec_load(const struct timespec *ts) { (usec_t) ts->tv_nsec / NSEC_PER_USEC; } -nsec_t timespec_load_nsec(const struct timespec *ts) { +static nsec_t timespec_load_nsec(const struct timespec *ts) { assert(ts); if (ts->tv_sec == (time_t) -1 && @@ -207,9 +207,11 @@ struct timeval *timeval_store(struct timeval *tv, usec_t u) { return tv; } -static char *format_timestamp_internal(char *buf, size_t l, usec_t t, bool utc) { +static char *format_timestamp_internal(char *buf, size_t l, usec_t t, + bool utc, bool us) { struct tm tm; time_t sec; + int k; assert(buf); assert(l > 0); @@ -220,48 +222,36 @@ static char *format_timestamp_internal(char *buf, size_t l, usec_t t, bool utc) sec = (time_t) (t / USEC_PER_SEC); localtime_or_gmtime_r(&sec, &tm, utc); - if (strftime(buf, l, "%a %Y-%m-%d %H:%M:%S %Z", &tm) <= 0) + if (us) + k = strftime(buf, l, "%a %Y-%m-%d %H:%M:%S", &tm); + else + k = strftime(buf, l, "%a %Y-%m-%d %H:%M:%S %Z", &tm); + + if (k <= 0) return NULL; + if (us) { + snprintf(buf + strlen(buf), l - strlen(buf), ".%06llu", (unsigned long long) (t % USEC_PER_SEC)); + if (strftime(buf + strlen(buf), l - strlen(buf), " %Z", &tm) <= 0) + return NULL; + } return buf; } char *format_timestamp(char *buf, size_t l, usec_t t) { - return format_timestamp_internal(buf, l, t, false); + return format_timestamp_internal(buf, l, t, false, false); } char *format_timestamp_utc(char *buf, size_t l, usec_t t) { - return format_timestamp_internal(buf, l, t, true); -} - -static char *format_timestamp_internal_us(char *buf, size_t l, usec_t t, bool utc) { - struct tm tm; - time_t sec; - - assert(buf); - assert(l > 0); - - if (t <= 0 || t == USEC_INFINITY) - return NULL; - - sec = (time_t) (t / USEC_PER_SEC); - localtime_or_gmtime_r(&sec, &tm, utc); - - if (strftime(buf, l, "%a %Y-%m-%d %H:%M:%S", &tm) <= 0) - return NULL; - snprintf(buf + strlen(buf), l - strlen(buf), ".%06llu", (unsigned long long) (t % USEC_PER_SEC)); - if (strftime(buf + strlen(buf), l - strlen(buf), " %Z", &tm) <= 0) - return NULL; - - return buf; + return format_timestamp_internal(buf, l, t, true, false); } char *format_timestamp_us(char *buf, size_t l, usec_t t) { - return format_timestamp_internal_us(buf, l, t, false); + return format_timestamp_internal(buf, l, t, false, true); } char *format_timestamp_us_utc(char *buf, size_t l, usec_t t) { - return format_timestamp_internal_us(buf, l, t, true); + return format_timestamp_internal(buf, l, t, true, true); } char *format_timestamp_relative(char *buf, size_t l, usec_t t) { diff --git a/src/basic/time-util.h b/src/basic/time-util.h index 7321e3c670..9894e626c5 100644 --- a/src/basic/time-util.h +++ b/src/basic/time-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** @@ -69,7 +67,7 @@ typedef struct dual_timestamp { #define FORMAT_TIMESTAMP_RELATIVE_MAX 256 #define FORMAT_TIMESPAN_MAX 64 -#define TIME_T_MAX (time_t)((1UL << ((sizeof(time_t) << 3) - 1)) - 1) +#define TIME_T_MAX (time_t)((UINTMAX_C(1) << ((sizeof(time_t) << 3) - 1)) - 1) #define DUAL_TIMESTAMP_NULL ((struct dual_timestamp) { 0ULL, 0ULL }) @@ -92,8 +90,6 @@ struct timespec *timespec_store(struct timespec *ts, usec_t u); usec_t timeval_load(const struct timeval *tv) _pure_; struct timeval *timeval_store(struct timeval *tv, usec_t u); -nsec_t timespec_load_nsec(const struct timespec *ts) _pure_; - char *format_timestamp(char *buf, size_t l, usec_t t); char *format_timestamp_utc(char *buf, size_t l, usec_t t); char *format_timestamp_us(char *buf, size_t l, usec_t t); @@ -127,3 +123,29 @@ time_t mktime_or_timegm(struct tm *tm, bool utc); struct tm *localtime_or_gmtime_r(const time_t *t, struct tm *tm, bool utc); unsigned long usec_to_jiffies(usec_t usec); + +static inline usec_t usec_add(usec_t a, usec_t b) { + usec_t c; + + /* Adds two time values, and makes sure USEC_INFINITY as input results as USEC_INFINITY in output, and doesn't + * overflow. */ + + c = a + b; + if (c < a || c < b) /* overflow check */ + return USEC_INFINITY; + + return c; +} + +static inline usec_t usec_sub(usec_t timestamp, int64_t delta) { + if (delta < 0) + return usec_add(timestamp, (usec_t) (-delta)); + + if (timestamp == USEC_INFINITY) /* Make sure infinity doesn't degrade */ + return USEC_INFINITY; + + if (timestamp < (usec_t) delta) + return 0; + + return timestamp - delta; +} diff --git a/src/basic/umask-util.h b/src/basic/umask-util.h index 8ed34658b4..359d87d27c 100644 --- a/src/basic/umask-util.h +++ b/src/basic/umask-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/unaligned.h b/src/basic/unaligned.h index a8115eaa1f..79be645bed 100644 --- a/src/basic/unaligned.h +++ b/src/basic/unaligned.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/unit-name.c b/src/basic/unit-name.c index d4a3062658..fe883b95c7 100644 --- a/src/basic/unit-name.c +++ b/src/basic/unit-name.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/unit-name.h b/src/basic/unit-name.h index 03c1a6e4ac..f209a84634 100644 --- a/src/basic/unit-name.h +++ b/src/basic/unit-name.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/user-util.c b/src/basic/user-util.c index 70a6e1f5e4..19155bce53 100644 --- a/src/basic/user-util.c +++ b/src/basic/user-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/user-util.h b/src/basic/user-util.h index 6106e138be..c23f1d485d 100644 --- a/src/basic/user-util.h +++ b/src/basic/user-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/utf8.c b/src/basic/utf8.c index 3f024f7e58..629db123cd 100644 --- a/src/basic/utf8.c +++ b/src/basic/utf8.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/utf8.h b/src/basic/utf8.h index 3e2e35b967..12c272d66e 100644 --- a/src/basic/utf8.h +++ b/src/basic/utf8.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/util.c b/src/basic/util.c index 4434ecfdf6..ea1bed7ceb 100644 --- a/src/basic/util.c +++ b/src/basic/util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/util.h b/src/basic/util.h index b7bad76212..e095254b57 100644 --- a/src/basic/util.h +++ b/src/basic/util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/verbs.c b/src/basic/verbs.c index 6dded9fb77..d9cdb38d65 100644 --- a/src/basic/verbs.c +++ b/src/basic/verbs.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/verbs.h b/src/basic/verbs.h index 4132cad773..7b5e18510f 100644 --- a/src/basic/verbs.h +++ b/src/basic/verbs.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/virt.c b/src/basic/virt.c index 0ffc2769d2..19b6318e3d 100644 --- a/src/basic/virt.c +++ b/src/basic/virt.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/virt.h b/src/basic/virt.h index aca961867c..a538f07f6b 100644 --- a/src/basic/virt.h +++ b/src/basic/virt.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/web-util.c b/src/basic/web-util.c index 68ec04021b..595688ed93 100644 --- a/src/basic/web-util.c +++ b/src/basic/web-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/web-util.h b/src/basic/web-util.h index 40c1509eb8..e6bb6b53f5 100644 --- a/src/basic/web-util.h +++ b/src/basic/web-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/xattr-util.c b/src/basic/xattr-util.c index 960209282f..8d7f14f382 100644 --- a/src/basic/xattr-util.c +++ b/src/basic/xattr-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/xattr-util.h b/src/basic/xattr-util.h index a5134cba89..6fa097bf7e 100644 --- a/src/basic/xattr-util.h +++ b/src/basic/xattr-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/basic/xml.c b/src/basic/xml.c index b9976cf5f1..1dbeac7324 100644 --- a/src/basic/xml.c +++ b/src/basic/xml.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/basic/xml.h b/src/basic/xml.h index b256b0ba10..41cb69f0dc 100644 --- a/src/basic/xml.h +++ b/src/basic/xml.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/binfmt/binfmt.c b/src/binfmt/binfmt.c index 03fb413fe5..eeef04fb1c 100644 --- a/src/binfmt/binfmt.c +++ b/src/binfmt/binfmt.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/boot/bootctl.c b/src/boot/bootctl.c index 13cf323bb7..e9baf69f6a 100644 --- a/src/boot/bootctl.c +++ b/src/boot/bootctl.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/boot/efi/boot.c b/src/boot/efi/boot.c index 6d35adc0e2..30c1ead1aa 100644 --- a/src/boot/efi/boot.c +++ b/src/boot/efi/boot.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /* * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published by @@ -24,6 +22,7 @@ #include "linux.h" #include "pefile.h" #include "util.h" +#include "measure.h" #ifndef EFI_OS_INDICATIONS_BOOT_TO_FW_UI #define EFI_OS_INDICATIONS_BOOT_TO_FW_UI 0x0000000000000001ULL @@ -1646,6 +1645,18 @@ static EFI_STATUS image_start(EFI_HANDLE parent_image, const Config *config, con } loaded_image->LoadOptions = options; loaded_image->LoadOptionsSize = (StrLen(loaded_image->LoadOptions)+1) * sizeof(CHAR16); + +#ifdef SD_BOOT_LOG_TPM + /* Try to log any options to the TPM, escpecially to catch manually edited options */ + err = tpm_log_event(SD_TPM_PCR, + (EFI_PHYSICAL_ADDRESS) loaded_image->LoadOptions, + loaded_image->LoadOptionsSize, loaded_image->LoadOptions); + if (EFI_ERROR(err)) { + Print(L"Unable to add image options measurement: %r", err); + uefi_call_wrapper(BS->Stall, 1, 3 * 1000 * 1000); + return err; + } +#endif } efivar_set_time_usec(L"LoaderTimeExecUSec", 0); diff --git a/src/boot/efi/console.c b/src/boot/efi/console.c index 2151d34432..c436f8b476 100644 --- a/src/boot/efi/console.c +++ b/src/boot/efi/console.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /* * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published by diff --git a/src/boot/efi/console.h b/src/boot/efi/console.h index 5c7808a067..3fe0ce5ec4 100644 --- a/src/boot/efi/console.h +++ b/src/boot/efi/console.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /* * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published by diff --git a/src/boot/efi/disk.c b/src/boot/efi/disk.c index 96063fbc28..3e3b5b224a 100644 --- a/src/boot/efi/disk.c +++ b/src/boot/efi/disk.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /* * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published by diff --git a/src/boot/efi/disk.h b/src/boot/efi/disk.h index 1b25343a00..af91a9c674 100644 --- a/src/boot/efi/disk.h +++ b/src/boot/efi/disk.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /* * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published by diff --git a/src/boot/efi/graphics.c b/src/boot/efi/graphics.c index efa91fa7ac..4854baf874 100644 --- a/src/boot/efi/graphics.c +++ b/src/boot/efi/graphics.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /* * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published by diff --git a/src/boot/efi/graphics.h b/src/boot/efi/graphics.h index 3ee4972798..cf48e647e7 100644 --- a/src/boot/efi/graphics.h +++ b/src/boot/efi/graphics.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /* * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published by diff --git a/src/boot/efi/linux.c b/src/boot/efi/linux.c index e9d097c132..0dc99a6c53 100644 --- a/src/boot/efi/linux.c +++ b/src/boot/efi/linux.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /* * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published by diff --git a/src/boot/efi/linux.h b/src/boot/efi/linux.h index aff69a9778..d9e6ed7955 100644 --- a/src/boot/efi/linux.h +++ b/src/boot/efi/linux.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /* * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published by diff --git a/src/boot/efi/measure.c b/src/boot/efi/measure.c new file mode 100644 index 0000000000..7c016387c1 --- /dev/null +++ b/src/boot/efi/measure.c @@ -0,0 +1,312 @@ +/* + * This program 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. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + */ + +#ifdef SD_BOOT_LOG_TPM + +#include <efi.h> +#include <efilib.h> +#include "measure.h" + +#define EFI_TCG_PROTOCOL_GUID { 0xf541796d, 0xa62e, 0x4954, {0xa7, 0x75, 0x95, 0x84, 0xf6, 0x1b, 0x9c, 0xdd} } + +typedef struct _TCG_VERSION { + UINT8 Major; + UINT8 Minor; + UINT8 RevMajor; + UINT8 RevMinor; +} TCG_VERSION; + +typedef struct _TCG_BOOT_SERVICE_CAPABILITY { + UINT8 Size; + struct _TCG_VERSION StructureVersion; + struct _TCG_VERSION ProtocolSpecVersion; + UINT8 HashAlgorithmBitmap; + BOOLEAN TPMPresentFlag; + BOOLEAN TPMDeactivatedFlag; +} TCG_BOOT_SERVICE_CAPABILITY; + +typedef UINT32 TCG_ALGORITHM_ID; +#define TCG_ALG_SHA 0x00000004 // The SHA1 algorithm + +#define SHA1_DIGEST_SIZE 20 + +typedef struct _TCG_DIGEST { + UINT8 Digest[SHA1_DIGEST_SIZE]; +} TCG_DIGEST; + +#define EV_IPL 13 + +typedef struct _TCG_PCR_EVENT { + UINT32 PCRIndex; + UINT32 EventType; + struct _TCG_DIGEST digest; + UINT32 EventSize; + UINT8 Event[1]; +} TCG_PCR_EVENT; + +INTERFACE_DECL(_EFI_TCG); + +typedef EFI_STATUS(EFIAPI * EFI_TCG_STATUS_CHECK) (IN struct _EFI_TCG * This, + OUT struct _TCG_BOOT_SERVICE_CAPABILITY * ProtocolCapability, + OUT UINT32 * TCGFeatureFlags, + OUT EFI_PHYSICAL_ADDRESS * EventLogLocation, + OUT EFI_PHYSICAL_ADDRESS * EventLogLastEntry); + +typedef EFI_STATUS(EFIAPI * EFI_TCG_HASH_ALL) (IN struct _EFI_TCG * This, + IN UINT8 * HashData, + IN UINT64 HashDataLen, + IN TCG_ALGORITHM_ID AlgorithmId, + IN OUT UINT64 * HashedDataLen, IN OUT UINT8 ** HashedDataResult); + +typedef EFI_STATUS(EFIAPI * EFI_TCG_LOG_EVENT) (IN struct _EFI_TCG * This, + IN struct _TCG_PCR_EVENT * TCGLogData, + IN OUT UINT32 * EventNumber, IN UINT32 Flags); + +typedef EFI_STATUS(EFIAPI * EFI_TCG_PASS_THROUGH_TO_TPM) (IN struct _EFI_TCG * This, + IN UINT32 TpmInputParameterBlockSize, + IN UINT8 * TpmInputParameterBlock, + IN UINT32 TpmOutputParameterBlockSize, + IN UINT8 * TpmOutputParameterBlock); + +typedef EFI_STATUS(EFIAPI * EFI_TCG_HASH_LOG_EXTEND_EVENT) (IN struct _EFI_TCG * This, + IN EFI_PHYSICAL_ADDRESS HashData, + IN UINT64 HashDataLen, + IN TCG_ALGORITHM_ID AlgorithmId, + IN struct _TCG_PCR_EVENT * TCGLogData, + IN OUT UINT32 * EventNumber, + OUT EFI_PHYSICAL_ADDRESS * EventLogLastEntry); + +typedef struct _EFI_TCG { + EFI_TCG_STATUS_CHECK StatusCheck; + EFI_TCG_HASH_ALL HashAll; + EFI_TCG_LOG_EVENT LogEvent; + EFI_TCG_PASS_THROUGH_TO_TPM PassThroughToTPM; + EFI_TCG_HASH_LOG_EXTEND_EVENT HashLogExtendEvent; +} EFI_TCG; + +#define EFI_TCG2_PROTOCOL_GUID {0x607f766c, 0x7455, 0x42be, { 0x93, 0x0b, 0xe4, 0xd7, 0x6d, 0xb2, 0x72, 0x0f }} + +typedef struct tdEFI_TCG2_PROTOCOL EFI_TCG2_PROTOCOL; + +typedef struct tdEFI_TCG2_VERSION { + UINT8 Major; + UINT8 Minor; +} EFI_TCG2_VERSION; + +typedef UINT32 EFI_TCG2_EVENT_LOG_BITMAP; +typedef UINT32 EFI_TCG2_EVENT_LOG_FORMAT; +typedef UINT32 EFI_TCG2_EVENT_ALGORITHM_BITMAP; + +#define EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2 0x00000001 +#define EFI_TCG2_EVENT_LOG_FORMAT_TCG_2 0x00000002 + +typedef struct tdEFI_TCG2_BOOT_SERVICE_CAPABILITY { + UINT8 Size; + EFI_TCG2_VERSION StructureVersion; + EFI_TCG2_VERSION ProtocolVersion; + EFI_TCG2_EVENT_ALGORITHM_BITMAP HashAlgorithmBitmap; + EFI_TCG2_EVENT_LOG_BITMAP SupportedEventLogs; + BOOLEAN TPMPresentFlag; + UINT16 MaxCommandSize; + UINT16 MaxResponseSize; + UINT32 ManufacturerID; + UINT32 NumberOfPCRBanks; + EFI_TCG2_EVENT_ALGORITHM_BITMAP ActivePcrBanks; +} EFI_TCG2_BOOT_SERVICE_CAPABILITY; + +#define EFI_TCG2_EVENT_HEADER_VERSION 1 + +typedef struct { + UINT32 HeaderSize; + UINT16 HeaderVersion; + UINT32 PCRIndex; + UINT32 EventType; +} EFI_TCG2_EVENT_HEADER; + +typedef struct tdEFI_TCG2_EVENT { + UINT32 Size; + EFI_TCG2_EVENT_HEADER Header; + UINT8 Event[1]; +} EFI_TCG2_EVENT; + +typedef EFI_STATUS(EFIAPI * EFI_TCG2_GET_CAPABILITY) (IN EFI_TCG2_PROTOCOL * This, + IN OUT EFI_TCG2_BOOT_SERVICE_CAPABILITY * ProtocolCapability); + +typedef EFI_STATUS(EFIAPI * EFI_TCG2_GET_EVENT_LOG) (IN EFI_TCG2_PROTOCOL * This, + IN EFI_TCG2_EVENT_LOG_FORMAT EventLogFormat, + OUT EFI_PHYSICAL_ADDRESS * EventLogLocation, + OUT EFI_PHYSICAL_ADDRESS * EventLogLastEntry, + OUT BOOLEAN * EventLogTruncated); + +typedef EFI_STATUS(EFIAPI * EFI_TCG2_HASH_LOG_EXTEND_EVENT) (IN EFI_TCG2_PROTOCOL * This, + IN UINT64 Flags, + IN EFI_PHYSICAL_ADDRESS DataToHash, + IN UINT64 DataToHashLen, IN EFI_TCG2_EVENT * EfiTcgEvent); + +typedef EFI_STATUS(EFIAPI * EFI_TCG2_SUBMIT_COMMAND) (IN EFI_TCG2_PROTOCOL * This, + IN UINT32 InputParameterBlockSize, + IN UINT8 * InputParameterBlock, + IN UINT32 OutputParameterBlockSize, IN UINT8 * OutputParameterBlock); + +typedef EFI_STATUS(EFIAPI * EFI_TCG2_GET_ACTIVE_PCR_BANKS) (IN EFI_TCG2_PROTOCOL * This, OUT UINT32 * ActivePcrBanks); + +typedef EFI_STATUS(EFIAPI * EFI_TCG2_SET_ACTIVE_PCR_BANKS) (IN EFI_TCG2_PROTOCOL * This, IN UINT32 ActivePcrBanks); + +typedef EFI_STATUS(EFIAPI * EFI_TCG2_GET_RESULT_OF_SET_ACTIVE_PCR_BANKS) (IN EFI_TCG2_PROTOCOL * This, + OUT UINT32 * OperationPresent, OUT UINT32 * Response); + +typedef struct tdEFI_TCG2_PROTOCOL { + EFI_TCG2_GET_CAPABILITY GetCapability; + EFI_TCG2_GET_EVENT_LOG GetEventLog; + EFI_TCG2_HASH_LOG_EXTEND_EVENT HashLogExtendEvent; + EFI_TCG2_SUBMIT_COMMAND SubmitCommand; + EFI_TCG2_GET_ACTIVE_PCR_BANKS GetActivePcrBanks; + EFI_TCG2_SET_ACTIVE_PCR_BANKS SetActivePcrBanks; + EFI_TCG2_GET_RESULT_OF_SET_ACTIVE_PCR_BANKS GetResultOfSetActivePcrBanks; +} EFI_TCG2; + + +static EFI_STATUS tpm1_measure_to_pcr_and_event_log(const EFI_TCG *tcg, UINT32 pcrindex, const EFI_PHYSICAL_ADDRESS buffer, + UINTN buffer_size, const CHAR16 *description) { + EFI_STATUS status; + TCG_PCR_EVENT *tcg_event; + UINT32 event_number; + EFI_PHYSICAL_ADDRESS event_log_last; + UINTN desc_len; + + desc_len = (StrLen(description) + 1) * sizeof(CHAR16); + + tcg_event = AllocateZeroPool(desc_len + sizeof(TCG_PCR_EVENT)); + + if (tcg_event == NULL) + return EFI_OUT_OF_RESOURCES; + + tcg_event->EventSize = desc_len; + CopyMem((VOID *) & tcg_event->Event[0], (VOID *) description, desc_len); + + tcg_event->PCRIndex = pcrindex; + tcg_event->EventType = EV_IPL; + + event_number = 1; + status = uefi_call_wrapper(tcg->HashLogExtendEvent, 7, + tcg, buffer, buffer_size, TCG_ALG_SHA, tcg_event, &event_number, &event_log_last); + + if (EFI_ERROR(status)) + return status; + + uefi_call_wrapper(BS->FreePool, 1, tcg_event); + + return EFI_SUCCESS; +} + + +static EFI_STATUS tpm2_measure_to_pcr_and_event_log(const EFI_TCG2 *tcg, UINT32 pcrindex, const EFI_PHYSICAL_ADDRESS buffer, + UINT64 buffer_size, const CHAR16 *description) { + EFI_STATUS status; + EFI_TCG2_EVENT *tcg_event; + UINTN desc_len; + + desc_len = StrLen(description) * sizeof(CHAR16); + + tcg_event = AllocateZeroPool(sizeof(*tcg_event) - sizeof(tcg_event->Event) + desc_len + 1); + + if (tcg_event == NULL) + return EFI_OUT_OF_RESOURCES; + + tcg_event->Size = sizeof(EFI_TCG2_EVENT) - sizeof(tcg_event->Event) + desc_len + 1; + tcg_event->Header.HeaderSize = sizeof(EFI_TCG2_EVENT_HEADER); + tcg_event->Header.HeaderVersion = EFI_TCG2_EVENT_HEADER_VERSION; + tcg_event->Header.PCRIndex = pcrindex; + tcg_event->Header.EventType = EV_IPL; + + CopyMem((VOID *) tcg_event->Event, (VOID *) description, desc_len); + + status = uefi_call_wrapper(tcg->HashLogExtendEvent, 5, tcg, 0, buffer, buffer_size, tcg_event); + + uefi_call_wrapper(BS->FreePool, 1, tcg_event); + + if (EFI_ERROR(status)) + return status; + + return EFI_SUCCESS; +} + +static EFI_TCG * tcg1_interface_check(void) { + EFI_GUID tpm_guid = EFI_TCG_PROTOCOL_GUID; + EFI_STATUS status; + EFI_TCG *tcg; + TCG_BOOT_SERVICE_CAPABILITY capability; + UINT32 features; + EFI_PHYSICAL_ADDRESS event_log_location; + EFI_PHYSICAL_ADDRESS event_log_last_entry; + + status = LibLocateProtocol(&tpm_guid, (void **) &tcg); + + if (EFI_ERROR(status)) + return NULL; + + capability.Size = (UINT8) sizeof(capability); + status = uefi_call_wrapper(tcg->StatusCheck, 5, tcg, &capability, &features, &event_log_location, &event_log_last_entry); + + if (EFI_ERROR(status)) + return NULL; + + if (capability.TPMDeactivatedFlag) + return NULL; + + if (!capability.TPMPresentFlag) + return NULL; + + return tcg; +} + +static EFI_TCG2 * tcg2_interface_check(void) { + EFI_GUID tpm2_guid = EFI_TCG2_PROTOCOL_GUID; + EFI_STATUS status; + EFI_TCG2 *tcg; + EFI_TCG2_BOOT_SERVICE_CAPABILITY capability; + + status = LibLocateProtocol(&tpm2_guid, (void **) &tcg); + + if (EFI_ERROR(status)) + return NULL; + + capability.Size = (UINT8) sizeof(capability); + status = uefi_call_wrapper(tcg->GetCapability, 2, tcg, &capability); + + if (EFI_ERROR(status)) + return NULL; + + if (!capability.TPMPresentFlag) + return NULL; + + return tcg; +} + +EFI_STATUS tpm_log_event(UINT32 pcrindex, const EFI_PHYSICAL_ADDRESS buffer, UINTN buffer_size, const CHAR16 *description) { + EFI_TCG *tpm1; + EFI_TCG2 *tpm2; + + tpm2 = tcg2_interface_check(); + if (tpm2) + return tpm2_measure_to_pcr_and_event_log(tpm2, pcrindex, buffer, buffer_size, description); + + tpm1 = tcg1_interface_check(); + if (tpm1) + return tpm1_measure_to_pcr_and_event_log(tpm1, pcrindex, buffer, buffer_size, description); + + /* No active TPM found, so don't return an error */ + return EFI_SUCCESS; +} + +#endif diff --git a/src/boot/efi/measure.h b/src/boot/efi/measure.h new file mode 100644 index 0000000000..a2cfe817d0 --- /dev/null +++ b/src/boot/efi/measure.h @@ -0,0 +1,21 @@ +/* + * This program 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. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + */ +#ifndef __SDBOOT_MEASURE_H +#define __SDBOOT_MEASURE_H + +#ifndef SD_TPM_PCR +#define SD_TPM_PCR 8 +#endif + +EFI_STATUS tpm_log_event(UINT32 pcrindex, const EFI_PHYSICAL_ADDRESS buffer, UINTN buffer_size, const CHAR16 *description); +#endif diff --git a/src/boot/efi/pefile.c b/src/boot/efi/pefile.c index efb3271ee3..77fff77b69 100644 --- a/src/boot/efi/pefile.c +++ b/src/boot/efi/pefile.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /* * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published by diff --git a/src/boot/efi/pefile.h b/src/boot/efi/pefile.h index ca2f9a2508..2e445ede17 100644 --- a/src/boot/efi/pefile.h +++ b/src/boot/efi/pefile.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /* * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published by diff --git a/src/boot/efi/splash.c b/src/boot/efi/splash.c index b584b5e6a9..b1cc2c0b72 100644 --- a/src/boot/efi/splash.c +++ b/src/boot/efi/splash.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /* * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published by diff --git a/src/boot/efi/splash.h b/src/boot/efi/splash.h index 0183e79b16..09b543fb47 100644 --- a/src/boot/efi/splash.h +++ b/src/boot/efi/splash.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /* * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published by diff --git a/src/boot/efi/stub.c b/src/boot/efi/stub.c index 2cd5c33cb6..1e250f34f4 100644 --- a/src/boot/efi/stub.c +++ b/src/boot/efi/stub.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /* This program 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 @@ -22,6 +20,7 @@ #include "pefile.h" #include "splash.h" #include "util.h" +#include "measure.h" /* magic string to find in the binary image */ static const char __attribute__((used)) magic[] = "#### LoaderInfo: systemd-stub " VERSION " ####"; @@ -99,6 +98,18 @@ EFI_STATUS efi_main(EFI_HANDLE image, EFI_SYSTEM_TABLE *sys_table) { for (i = 0; i < cmdline_len; i++) line[i] = options[i]; cmdline = line; + +#ifdef SD_BOOT_LOG_TPM + /* Try to log any options to the TPM, escpecially manually edited options */ + err = tpm_log_event(SD_TPM_PCR, + (EFI_PHYSICAL_ADDRESS) loaded_image->LoadOptions, + loaded_image->LoadOptionsSize, loaded_image->LoadOptions); + if (EFI_ERROR(err)) { + Print(L"Unable to add image options measurement: %r", err); + uefi_call_wrapper(BS->Stall, 1, 3 * 1000 * 1000); + return err; + } +#endif } /* export the device path this image is started from */ diff --git a/src/boot/efi/util.c b/src/boot/efi/util.c index 5e374edacf..98c5be74ce 100644 --- a/src/boot/efi/util.c +++ b/src/boot/efi/util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /* * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published by diff --git a/src/boot/efi/util.h b/src/boot/efi/util.h index 4727a34d1f..e673cdf9a0 100644 --- a/src/boot/efi/util.h +++ b/src/boot/efi/util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /* * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published by diff --git a/src/bootchart/bootchart.c b/src/bootchart/bootchart.c index 6a0e1d6b14..77d158f5f9 100644 --- a/src/bootchart/bootchart.c +++ b/src/bootchart/bootchart.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/bootchart/bootchart.h b/src/bootchart/bootchart.h index 8432a2a119..1b445b954b 100644 --- a/src/bootchart/bootchart.h +++ b/src/bootchart/bootchart.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/bootchart/store.c b/src/bootchart/store.c index c1b1e77e44..42cb8043ce 100644 --- a/src/bootchart/store.c +++ b/src/bootchart/store.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/bootchart/store.h b/src/bootchart/store.h index 4d2e0d439f..6e9acf2a6f 100644 --- a/src/bootchart/store.h +++ b/src/bootchart/store.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/bootchart/svg.c b/src/bootchart/svg.c index 79e261abe5..f2af535061 100644 --- a/src/bootchart/svg.c +++ b/src/bootchart/svg.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/bootchart/svg.h b/src/bootchart/svg.h index 75efa22614..6e06b5ad97 100644 --- a/src/bootchart/svg.h +++ b/src/bootchart/svg.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/bus-proxyd/bus-proxyd.c b/src/bus-proxyd/bus-proxyd.c index 6a7134644f..b6bd6eb390 100644 --- a/src/bus-proxyd/bus-proxyd.c +++ b/src/bus-proxyd/bus-proxyd.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/bus-proxyd/bus-xml-policy.c b/src/bus-proxyd/bus-xml-policy.c index debd58ce8b..8943e0dc12 100644 --- a/src/bus-proxyd/bus-xml-policy.c +++ b/src/bus-proxyd/bus-xml-policy.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/bus-proxyd/bus-xml-policy.h b/src/bus-proxyd/bus-xml-policy.h index 8dde0cb868..3dcddaa048 100644 --- a/src/bus-proxyd/bus-xml-policy.h +++ b/src/bus-proxyd/bus-xml-policy.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/bus-proxyd/driver.c b/src/bus-proxyd/driver.c index 2849b04252..1af5c310ea 100644 --- a/src/bus-proxyd/driver.c +++ b/src/bus-proxyd/driver.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/bus-proxyd/driver.h b/src/bus-proxyd/driver.h index 9f68902441..1630cdc7b9 100644 --- a/src/bus-proxyd/driver.h +++ b/src/bus-proxyd/driver.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/bus-proxyd/proxy.c b/src/bus-proxyd/proxy.c index 98222c50cc..907d93d4c7 100644 --- a/src/bus-proxyd/proxy.c +++ b/src/bus-proxyd/proxy.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/bus-proxyd/proxy.h b/src/bus-proxyd/proxy.h index 7b2e5d422f..d9e75cf73b 100644 --- a/src/bus-proxyd/proxy.h +++ b/src/bus-proxyd/proxy.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/bus-proxyd/stdio-bridge.c b/src/bus-proxyd/stdio-bridge.c index 636e3f120a..291c1b09e3 100644 --- a/src/bus-proxyd/stdio-bridge.c +++ b/src/bus-proxyd/stdio-bridge.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/bus-proxyd/synthesize.c b/src/bus-proxyd/synthesize.c index e10f2d69c0..8eea7dc5b9 100644 --- a/src/bus-proxyd/synthesize.c +++ b/src/bus-proxyd/synthesize.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/bus-proxyd/synthesize.h b/src/bus-proxyd/synthesize.h index ddfe2fd266..1b7197f8ec 100644 --- a/src/bus-proxyd/synthesize.h +++ b/src/bus-proxyd/synthesize.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/bus-proxyd/test-bus-xml-policy.c b/src/bus-proxyd/test-bus-xml-policy.c index 1f465edd91..af7c9128a2 100644 --- a/src/bus-proxyd/test-bus-xml-policy.c +++ b/src/bus-proxyd/test-bus-xml-policy.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/cgls/cgls.c b/src/cgls/cgls.c index 12537ae85b..b839fadd04 100644 --- a/src/cgls/cgls.c +++ b/src/cgls/cgls.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/cgroups-agent/cgroups-agent.c b/src/cgroups-agent/cgroups-agent.c index afc95a4a9f..aadfba0707 100644 --- a/src/cgroups-agent/cgroups-agent.c +++ b/src/cgroups-agent/cgroups-agent.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/cgtop/cgtop.c b/src/cgtop/cgtop.c index 4894296554..60d6da3246 100644 --- a/src/cgtop/cgtop.c +++ b/src/cgtop/cgtop.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/core/audit-fd.c b/src/core/audit-fd.c index 0a484d89fc..76afe3fe15 100644 --- a/src/core/audit-fd.c +++ b/src/core/audit-fd.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/core/audit-fd.h b/src/core/audit-fd.h index 8b58289dc5..0eccb59210 100644 --- a/src/core/audit-fd.h +++ b/src/core/audit-fd.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/automount.c b/src/core/automount.c index 418dbc57c2..5dc6fd98e7 100644 --- a/src/core/automount.c +++ b/src/core/automount.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -728,7 +726,15 @@ static void automount_enter_runnning(Automount *a) { if (!S_ISDIR(st.st_mode) || st.st_dev != a->dev_id) log_unit_info(UNIT(a), "Automount point already active?"); else { - r = manager_add_job(UNIT(a)->manager, JOB_START, UNIT_TRIGGER(UNIT(a)), JOB_REPLACE, &error, NULL); + Unit *trigger; + + trigger = UNIT_TRIGGER(UNIT(a)); + if (!trigger) { + log_unit_error(UNIT(a), "Unit to trigger vanished."); + goto fail; + } + + r = manager_add_job(UNIT(a)->manager, JOB_START, trigger, JOB_REPLACE, &error, NULL); if (r < 0) { log_unit_warning(UNIT(a), "Failed to queue mount startup job: %s", bus_error_message(&error, r)); goto fail; @@ -744,6 +750,7 @@ fail: static int automount_start(Unit *u) { Automount *a = AUTOMOUNT(u); + Unit *trigger; assert(a); assert(a->state == AUTOMOUNT_DEAD || a->state == AUTOMOUNT_FAILED); @@ -753,8 +760,11 @@ static int automount_start(Unit *u) { return -EEXIST; } - if (UNIT_TRIGGER(u)->load_state != UNIT_LOADED) + trigger = UNIT_TRIGGER(u); + if (!trigger || trigger->load_state != UNIT_LOADED) { + log_unit_error(u, "Refusing to start, unit to trigger not loaded."); return -ENOENT; + } a->result = AUTOMOUNT_SUCCESS; automount_enter_waiting(a); @@ -901,6 +911,7 @@ static int automount_dispatch_io(sd_event_source *s, int fd, uint32_t events, vo union autofs_v5_packet_union packet; Automount *a = AUTOMOUNT(userdata); struct stat st; + Unit *trigger; int r; assert(a); @@ -973,7 +984,13 @@ static int automount_dispatch_io(sd_event_source *s, int fd, uint32_t events, vo break; } - r = manager_add_job(UNIT(a)->manager, JOB_STOP, UNIT_TRIGGER(UNIT(a)), JOB_REPLACE, &error, NULL); + trigger = UNIT_TRIGGER(UNIT(a)); + if (!trigger) { + log_unit_error(UNIT(a), "Unit to trigger vanished."); + goto fail; + } + + r = manager_add_job(UNIT(a)->manager, JOB_STOP, trigger, JOB_REPLACE, &error, NULL); if (r < 0) { log_unit_warning(UNIT(a), "Failed to queue umount startup job: %s", bus_error_message(&error, r)); goto fail; diff --git a/src/core/automount.h b/src/core/automount.h index 43ea9f772d..cf5b1cf994 100644 --- a/src/core/automount.h +++ b/src/core/automount.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/bus-endpoint.c b/src/core/bus-endpoint.c deleted file mode 100644 index d22a80c91f..0000000000 --- a/src/core/bus-endpoint.c +++ /dev/null @@ -1,135 +0,0 @@ -/*** - This file is part of systemd. - - Copyright 2014 Daniel Mack - - systemd is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation; either version 2.1 of the License, or - (at your option) any later version. - - systemd is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with systemd; If not, see <http://www.gnu.org/licenses/>. -***/ - -#include <stdlib.h> - -#include "alloc-util.h" -#include "bus-endpoint.h" -#include "bus-kernel.h" -#include "bus-policy.h" -#include "kdbus.h" - -int bus_kernel_set_endpoint_policy(int fd, uid_t uid, BusEndpoint *ep) { - - struct kdbus_cmd *update; - struct kdbus_item *n; - BusEndpointPolicy *po; - Iterator i; - size_t size; - int r; - - size = ALIGN8(offsetof(struct kdbus_cmd, items)); - - HASHMAP_FOREACH(po, ep->policy_hash, i) { - size += ALIGN8(offsetof(struct kdbus_item, str) + strlen(po->name) + 1); - size += ALIGN8(offsetof(struct kdbus_item, policy_access) + sizeof(struct kdbus_policy_access)); - } - - update = alloca0_align(size, 8); - update->size = size; - - n = update->items; - - HASHMAP_FOREACH(po, ep->policy_hash, i) { - n->type = KDBUS_ITEM_NAME; - n->size = offsetof(struct kdbus_item, str) + strlen(po->name) + 1; - strcpy(n->str, po->name); - n = KDBUS_ITEM_NEXT(n); - - n->type = KDBUS_ITEM_POLICY_ACCESS; - n->size = offsetof(struct kdbus_item, policy_access) + sizeof(struct kdbus_policy_access); - - n->policy_access.type = KDBUS_POLICY_ACCESS_USER; - n->policy_access.access = bus_kernel_translate_access(po->access); - n->policy_access.id = uid; - - n = KDBUS_ITEM_NEXT(n); - } - - r = ioctl(fd, KDBUS_CMD_ENDPOINT_UPDATE, update); - if (r < 0) - return -errno; - - return 0; -} - -int bus_endpoint_new(BusEndpoint **ep) { - assert(ep); - - *ep = new0(BusEndpoint, 1); - if (!*ep) - return -ENOMEM; - - return 0; -} - -int bus_endpoint_add_policy(BusEndpoint *ep, const char *name, BusPolicyAccess access) { - _cleanup_free_ BusEndpointPolicy *po = NULL; - _cleanup_free_ char *key = NULL; - int r; - - assert(ep); - assert(name); - assert(access > _BUS_POLICY_ACCESS_INVALID && access < _BUS_POLICY_ACCESS_MAX); - - /* check if we already have this name in the policy list. If we do, see if the new access level - * is higher than the exising one, and upgrade the entry in that case. Otherwise, do nothing. - */ - - if (ep->policy_hash) { - po = hashmap_get(ep->policy_hash, name); - if (po) { - if (po->access < access) - po->access = access; - - return 0; - } - } else { - ep->policy_hash = hashmap_new(&string_hash_ops); - if (!ep->policy_hash) - return -ENOMEM; - } - - po = new0(BusEndpointPolicy, 1); - if (!po) - return -ENOMEM; - - key = strdup(name); - if (!key) - return -ENOMEM; - - po->name = key; - po->access = access; - - r = hashmap_put(ep->policy_hash, key, po); - if (r < 0) - return r; - - po = NULL; - key = NULL; - return 0; -} - -void bus_endpoint_free(BusEndpoint *endpoint) { - if (!endpoint) - return; - - hashmap_free_free_free(endpoint->policy_hash); - free(endpoint); -} diff --git a/src/core/bus-policy.h b/src/core/bus-policy.h index 2f61289185..5b2c4d5953 100644 --- a/src/core/bus-policy.h +++ b/src/core/bus-policy.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/busname.c b/src/core/busname.c index a949cd6d3f..de2a21ccde 100644 --- a/src/core/busname.c +++ b/src/core/busname.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -112,29 +110,27 @@ static void busname_done(Unit *u) { n->timer_event_source = sd_event_source_unref(n->timer_event_source); } -static int busname_arm_timer(BusName *n) { +static int busname_arm_timer(BusName *n, usec_t usec) { int r; assert(n); - if (n->timeout_usec <= 0) { - n->timer_event_source = sd_event_source_unref(n->timer_event_source); - return 0; - } - if (n->timer_event_source) { - r = sd_event_source_set_time(n->timer_event_source, now(CLOCK_MONOTONIC) + n->timeout_usec); + r = sd_event_source_set_time(n->timer_event_source, usec); if (r < 0) return r; return sd_event_source_set_enabled(n->timer_event_source, SD_EVENT_ONESHOT); } + if (usec == USEC_INFINITY) + return 0; + r = sd_event_add_time( UNIT(n)->manager->event, &n->timer_event_source, CLOCK_MONOTONIC, - now(CLOCK_MONOTONIC) + n->timeout_usec, 0, + usec, 0, busname_dispatch_timer, n); if (r < 0) return r; @@ -372,7 +368,7 @@ static int busname_coldplug(Unit *u) { if (r < 0) return r; - r = busname_arm_timer(n); + r = busname_arm_timer(n, usec_add(u->state_change_timestamp.monotonic, n->timeout_usec)); if (r < 0) return r; } @@ -397,7 +393,7 @@ static int busname_make_starter(BusName *n, pid_t *_pid) { pid_t pid; int r; - r = busname_arm_timer(n); + r = busname_arm_timer(n, usec_add(now(CLOCK_MONOTONIC), n->timeout_usec)); if (r < 0) goto fail; @@ -475,7 +471,7 @@ static void busname_enter_signal(BusName *n, BusNameState state, BusNameResult f } if (r > 0) { - r = busname_arm_timer(n); + r = busname_arm_timer(n, usec_add(now(CLOCK_MONOTONIC), n->timeout_usec)); if (r < 0) { log_unit_warning_errno(UNIT(n), r, "Failed to arm timer: %m"); goto fail; @@ -947,7 +943,6 @@ static void busname_reset_failed(Unit *u) { static void busname_trigger_notify(Unit *u, Unit *other) { BusName *n = BUSNAME(u); - Service *s; assert(n); assert(other); @@ -955,36 +950,43 @@ static void busname_trigger_notify(Unit *u, Unit *other) { if (!IN_SET(n->state, BUSNAME_RUNNING, BUSNAME_LISTENING)) return; - if (other->load_state != UNIT_LOADED || other->type != UNIT_SERVICE) + if (other->start_limit_hit) { + busname_enter_dead(n, BUSNAME_FAILURE_SERVICE_START_LIMIT_HIT); return; + } - s = SERVICE(other); + if (other->load_state != UNIT_LOADED || other->type != UNIT_SERVICE) + return; - if (s->state == SERVICE_FAILED && s->result == SERVICE_FAILURE_START_LIMIT) - busname_enter_dead(n, BUSNAME_FAILURE_SERVICE_FAILED_PERMANENT); - else if (IN_SET(s->state, - SERVICE_DEAD, SERVICE_FAILED, - SERVICE_STOP, SERVICE_STOP_SIGTERM, SERVICE_STOP_SIGKILL, - SERVICE_STOP_POST, SERVICE_FINAL_SIGTERM, SERVICE_FINAL_SIGKILL, - SERVICE_AUTO_RESTART)) + if (IN_SET(SERVICE(other)->state, + SERVICE_DEAD, SERVICE_FAILED, + SERVICE_FINAL_SIGTERM, SERVICE_FINAL_SIGKILL, + SERVICE_AUTO_RESTART)) busname_enter_listening(n); + + if (SERVICE(other)->state == SERVICE_RUNNING) + busname_set_state(n, BUSNAME_RUNNING); } static int busname_kill(Unit *u, KillWho who, int signo, sd_bus_error *error) { return unit_kill_common(u, who, signo, -1, BUSNAME(u)->control_pid, error); } -static int busname_get_timeout(Unit *u, uint64_t *timeout) { +static int busname_get_timeout(Unit *u, usec_t *timeout) { BusName *n = BUSNAME(u); + usec_t t; int r; if (!n->timer_event_source) return 0; - r = sd_event_source_get_time(n->timer_event_source, timeout); + r = sd_event_source_get_time(n->timer_event_source, &t); if (r < 0) return r; + if (t == USEC_INFINITY) + return 0; + *timeout = t; return 1; } @@ -1004,7 +1006,7 @@ static const char* const busname_result_table[_BUSNAME_RESULT_MAX] = { [BUSNAME_FAILURE_EXIT_CODE] = "exit-code", [BUSNAME_FAILURE_SIGNAL] = "signal", [BUSNAME_FAILURE_CORE_DUMP] = "core-dump", - [BUSNAME_FAILURE_SERVICE_FAILED_PERMANENT] = "service-failed-permanent", + [BUSNAME_FAILURE_SERVICE_START_LIMIT_HIT] = "service-start-limit-hit", }; DEFINE_STRING_TABLE_LOOKUP(busname_result, BusNameResult); diff --git a/src/core/busname.h b/src/core/busname.h index 46f7b6f097..52c4055dbb 100644 --- a/src/core/busname.h +++ b/src/core/busname.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** @@ -25,6 +23,7 @@ typedef struct BusName BusName; typedef struct BusNamePolicy BusNamePolicy; #include "unit.h" +#include "bus-policy.h" typedef enum BusNameResult { BUSNAME_SUCCESS, @@ -33,7 +32,7 @@ typedef enum BusNameResult { BUSNAME_FAILURE_EXIT_CODE, BUSNAME_FAILURE_SIGNAL, BUSNAME_FAILURE_CORE_DUMP, - BUSNAME_FAILURE_SERVICE_FAILED_PERMANENT, + BUSNAME_FAILURE_SERVICE_START_LIMIT_HIT, _BUSNAME_RESULT_MAX, _BUSNAME_RESULT_INVALID = -1 } BusNameResult; diff --git a/src/core/cgroup.c b/src/core/cgroup.c index d122175417..39235a95f6 100644 --- a/src/core/cgroup.c +++ b/src/core/cgroup.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -53,8 +51,6 @@ void cgroup_context_init(CGroupContext *c) { c->startup_blockio_weight = CGROUP_BLKIO_WEIGHT_INVALID; c->tasks_max = (uint64_t) -1; - - c->netclass_type = CGROUP_NETCLASS_TYPE_NONE; } void cgroup_context_free_device_allow(CGroupContext *c, CGroupDeviceAllow *a) { @@ -299,7 +295,7 @@ fail: return -errno; } -void cgroup_context_apply(CGroupContext *c, CGroupMask mask, const char *path, uint32_t netclass, ManagerState state) { +void cgroup_context_apply(CGroupContext *c, CGroupMask mask, const char *path, ManagerState state) { bool is_root; int r; @@ -497,17 +493,6 @@ void cgroup_context_apply(CGroupContext *c, CGroupMask mask, const char *path, u log_full_errno(IN_SET(r, -ENOENT, -EROFS, -EACCES) ? LOG_DEBUG : LOG_WARNING, r, "Failed to set pids.max on %s: %m", path); } - - if (mask & CGROUP_MASK_NET_CLS) { - char buf[DECIMAL_STR_MAX(uint32_t)]; - - sprintf(buf, "%" PRIu32, netclass); - - r = cg_set_attribute("net_cls", path, "net_cls.classid", buf); - if (r < 0) - log_full_errno(IN_SET(r, -ENOENT, -EROFS, -EACCES) ? LOG_DEBUG : LOG_WARNING, r, - "Failed to set net_cls.classid on %s: %m", path); - } } CGroupMask cgroup_context_get_mask(CGroupContext *c) { @@ -540,9 +525,6 @@ CGroupMask cgroup_context_get_mask(CGroupContext *c) { c->tasks_max != (uint64_t) -1) mask |= CGROUP_MASK_PIDS; - if (c->netclass_type != CGROUP_NETCLASS_TYPE_NONE) - mask |= CGROUP_MASK_NET_CLS; - return mask; } @@ -910,103 +892,6 @@ static bool unit_has_mask_realized(Unit *u, CGroupMask target_mask) { return u->cgroup_realized && u->cgroup_realized_mask == target_mask; } -static int unit_find_free_netclass_cgroup(Unit *u, uint32_t *ret) { - - uint32_t start, i; - Manager *m; - - assert(u); - - m = u->manager; - - i = start = m->cgroup_netclass_registry_last; - - do { - i++; - - if (!hashmap_get(m->cgroup_netclass_registry, UINT_TO_PTR(i))) { - m->cgroup_netclass_registry_last = i; - *ret = i; - return 0; - } - - if (i == UINT32_MAX) - i = CGROUP_NETCLASS_FIXED_MAX; - - } while (i != start); - - return -ENOBUFS; -} - -int unit_add_to_netclass_cgroup(Unit *u) { - - CGroupContext *cc; - Unit *first; - void *key; - int r; - - assert(u); - - cc = unit_get_cgroup_context(u); - if (!cc) - return 0; - - switch (cc->netclass_type) { - case CGROUP_NETCLASS_TYPE_NONE: - return 0; - - case CGROUP_NETCLASS_TYPE_FIXED: - u->cgroup_netclass_id = cc->netclass_id; - break; - - case CGROUP_NETCLASS_TYPE_AUTO: - /* Allocate a new ID in case it was requested and not done yet */ - if (u->cgroup_netclass_id == 0) { - r = unit_find_free_netclass_cgroup(u, &u->cgroup_netclass_id); - if (r < 0) - return r; - - log_debug("Dynamically assigned netclass cgroup id %" PRIu32 " to %s", u->cgroup_netclass_id, u->id); - } - - break; - } - - r = hashmap_ensure_allocated(&u->manager->cgroup_netclass_registry, &trivial_hash_ops); - if (r < 0) - return r; - - key = UINT32_TO_PTR(u->cgroup_netclass_id); - first = hashmap_get(u->manager->cgroup_netclass_registry, key); - - if (first) { - LIST_PREPEND(cgroup_netclass, first, u); - return hashmap_replace(u->manager->cgroup_netclass_registry, key, u); - } - - return hashmap_put(u->manager->cgroup_netclass_registry, key, u); -} - -int unit_remove_from_netclass_cgroup(Unit *u) { - - Unit *head; - void *key; - - assert(u); - - key = UINT32_TO_PTR(u->cgroup_netclass_id); - - LIST_FIND_HEAD(cgroup_netclass, u, head); - LIST_REMOVE(cgroup_netclass, head, u); - - if (head) - return hashmap_replace(u->manager->cgroup_netclass_registry, key, head); - - hashmap_remove(u->manager->cgroup_netclass_registry, key); - - return 0; -} - /* Check if necessary controllers and attributes for a unit are in place. * * If so, do nothing. @@ -1042,7 +927,7 @@ static int unit_realize_cgroup_now(Unit *u, ManagerState state) { return r; /* Finally, apply the necessary attributes. */ - cgroup_context_apply(unit_get_cgroup_context(u), target_mask, u->cgroup_path, u->cgroup_netclass_id, state); + cgroup_context_apply(unit_get_cgroup_context(u), target_mask, u->cgroup_path, state); return 0; } diff --git a/src/core/cgroup.h b/src/core/cgroup.h index 1b18d06652..360bbca30f 100644 --- a/src/core/cgroup.h +++ b/src/core/cgroup.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** @@ -26,11 +24,6 @@ #include "list.h" #include "time-util.h" -/* Maximum value for fixed (manual) net class ID assignment, - * and also the value at which the range of automatic assignments starts - */ -#define CGROUP_NETCLASS_FIXED_MAX UINT32_C(65535) - typedef struct CGroupContext CGroupContext; typedef struct CGroupDeviceAllow CGroupDeviceAllow; typedef struct CGroupBlockIODeviceWeight CGroupBlockIODeviceWeight; @@ -52,17 +45,6 @@ typedef enum CGroupDevicePolicy { _CGROUP_DEVICE_POLICY_INVALID = -1 } CGroupDevicePolicy; -typedef enum CGroupNetClassType { - /* Default - do not assign a net class */ - CGROUP_NETCLASS_TYPE_NONE, - - /* Automatically assign a net class */ - CGROUP_NETCLASS_TYPE_AUTO, - - /* Assign the net class that was provided by the user */ - CGROUP_NETCLASS_TYPE_FIXED, -} CGroupNetClassType; - struct CGroupDeviceAllow { LIST_FIELDS(CGroupDeviceAllow, device_allow); char *path; @@ -104,9 +86,6 @@ struct CGroupContext { CGroupDevicePolicy device_policy; LIST_HEAD(CGroupDeviceAllow, device_allow); - CGroupNetClassType netclass_type; - uint32_t netclass_id; - uint64_t tasks_max; bool delegate; @@ -118,7 +97,7 @@ struct CGroupContext { void cgroup_context_init(CGroupContext *c); void cgroup_context_done(CGroupContext *c); void cgroup_context_dump(CGroupContext *c, FILE* f, const char *prefix); -void cgroup_context_apply(CGroupContext *c, CGroupMask mask, const char *path, uint32_t netclass_id, ManagerState state); +void cgroup_context_apply(CGroupContext *c, CGroupMask mask, const char *path, ManagerState state); CGroupMask cgroup_context_get_mask(CGroupContext *c); @@ -146,9 +125,6 @@ int unit_watch_cgroup(Unit *u); int unit_attach_pids_to_cgroup(Unit *u); -int unit_add_to_netclass_cgroup(Unit *u); -int unit_remove_from_netclass_cgroup(Unit *u); - int manager_setup_cgroup(Manager *m); void manager_shutdown_cgroup(Manager *m, bool delete); diff --git a/src/core/dbus-automount.c b/src/core/dbus-automount.c index 54830a515b..b2806ad86f 100644 --- a/src/core/dbus-automount.c +++ b/src/core/dbus-automount.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/core/dbus-automount.h b/src/core/dbus-automount.h index a2b124d756..7b51eb973a 100644 --- a/src/core/dbus-automount.h +++ b/src/core/dbus-automount.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/dbus-busname.c b/src/core/dbus-busname.c index 445b237643..cf816ba15b 100644 --- a/src/core/dbus-busname.c +++ b/src/core/dbus-busname.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/core/dbus-busname.h b/src/core/dbus-busname.h index ea55b6c8c9..8643d1a404 100644 --- a/src/core/dbus-busname.h +++ b/src/core/dbus-busname.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/dbus-cgroup.c b/src/core/dbus-cgroup.c index 3fd295baa9..859d155ec1 100644 --- a/src/core/dbus-cgroup.c +++ b/src/core/dbus-cgroup.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/core/dbus-cgroup.h b/src/core/dbus-cgroup.h index 9dc187c066..b2212fe44e 100644 --- a/src/core/dbus-cgroup.h +++ b/src/core/dbus-cgroup.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/dbus-device.c b/src/core/dbus-device.c index 97e4a47556..e1a12224d3 100644 --- a/src/core/dbus-device.c +++ b/src/core/dbus-device.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/core/dbus-device.h b/src/core/dbus-device.h index 10e945e402..eb1d8c3278 100644 --- a/src/core/dbus-device.h +++ b/src/core/dbus-device.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/dbus-execute.c b/src/core/dbus-execute.c index eae0808f9e..f2fc301f8e 100644 --- a/src/core/dbus-execute.c +++ b/src/core/dbus-execute.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -835,7 +833,8 @@ int bus_exec_context_set_transient_property( UnitSetPropertiesMode mode, sd_bus_error *error) { - int r; + const char *soft = NULL; + int r, ri; assert(u); assert(c); @@ -1492,7 +1491,23 @@ int bus_exec_context_set_transient_property( return 1; - } else if (rlimit_from_string(name) >= 0) { + } + + ri = rlimit_from_string(name); + if (ri < 0) { + soft = endswith(name, "Soft"); + if (soft) { + const char *n; + + n = strndupa(name, soft - name); + ri = rlimit_from_string(n); + if (ri >= 0) + name = n; + + } + } + + if (ri >= 0) { uint64_t rl; rlim_t x; @@ -1510,22 +1525,36 @@ int bus_exec_context_set_transient_property( } if (mode != UNIT_CHECK) { - int z; - - z = rlimit_from_string(name); + _cleanup_free_ char *f = NULL; + struct rlimit nl; + + if (c->rlimit[ri]) { + nl = *c->rlimit[ri]; + + if (soft) + nl.rlim_cur = x; + else + nl.rlim_max = x; + } else + /* When the resource limit is not initialized yet, then assign the value to both fields */ + nl = (struct rlimit) { + .rlim_cur = x, + .rlim_max = x, + }; + + r = rlimit_format(&nl, &f); + if (r < 0) + return r; - if (!c->rlimit[z]) { - c->rlimit[z] = new(struct rlimit, 1); - if (!c->rlimit[z]) + if (c->rlimit[ri]) + *c->rlimit[ri] = nl; + else { + c->rlimit[ri] = newdup(struct rlimit, &nl, 1); + if (!c->rlimit[ri]) return -ENOMEM; } - c->rlimit[z]->rlim_cur = c->rlimit[z]->rlim_max = x; - - if (x == RLIM_INFINITY) - unit_write_drop_in_private_format(u, mode, name, "%s=infinity\n", name); - else - unit_write_drop_in_private_format(u, mode, name, "%s=%" PRIu64 "\n", name, rl); + unit_write_drop_in_private_format(u, mode, name, "%s=%s\n", name, f); } return 1; diff --git a/src/core/dbus-execute.h b/src/core/dbus-execute.h index c44517ea22..d0aa8e1dd5 100644 --- a/src/core/dbus-execute.h +++ b/src/core/dbus-execute.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/dbus-job.c b/src/core/dbus-job.c index 90c775b638..97a93fb2f1 100644 --- a/src/core/dbus-job.c +++ b/src/core/dbus-job.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/core/dbus-job.h b/src/core/dbus-job.h index 0f2fbe2ee2..024d06719e 100644 --- a/src/core/dbus-job.h +++ b/src/core/dbus-job.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/dbus-kill.c b/src/core/dbus-kill.c index c633eb1b76..fc50fafaad 100644 --- a/src/core/dbus-kill.c +++ b/src/core/dbus-kill.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/core/dbus-kill.h b/src/core/dbus-kill.h index 1d32fca547..b9b18811e3 100644 --- a/src/core/dbus-kill.h +++ b/src/core/dbus-kill.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c index c5c672a0a2..f939196397 100644 --- a/src/core/dbus-manager.c +++ b/src/core/dbus-manager.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/core/dbus-manager.h b/src/core/dbus-manager.h index 5bdf6e17ab..36a2e9481b 100644 --- a/src/core/dbus-manager.h +++ b/src/core/dbus-manager.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/dbus-mount.c b/src/core/dbus-mount.c index bc5751a10d..935db7c48b 100644 --- a/src/core/dbus-mount.c +++ b/src/core/dbus-mount.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/core/dbus-mount.h b/src/core/dbus-mount.h index dd0bf51bb0..ec16166d36 100644 --- a/src/core/dbus-mount.h +++ b/src/core/dbus-mount.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/dbus-path.c b/src/core/dbus-path.c index e0544e9161..1e153e503f 100644 --- a/src/core/dbus-path.c +++ b/src/core/dbus-path.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/core/dbus-path.h b/src/core/dbus-path.h index 389b0d7f9b..d3c19e0c2b 100644 --- a/src/core/dbus-path.h +++ b/src/core/dbus-path.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/dbus-scope.c b/src/core/dbus-scope.c index 920362c61f..34ee9a8fa9 100644 --- a/src/core/dbus-scope.c +++ b/src/core/dbus-scope.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/core/dbus-scope.h b/src/core/dbus-scope.h index 4fb0b25e09..270306f508 100644 --- a/src/core/dbus-scope.h +++ b/src/core/dbus-scope.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/dbus-service.c b/src/core/dbus-service.c index 2529689f5a..03eecca911 100644 --- a/src/core/dbus-service.c +++ b/src/core/dbus-service.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -49,12 +47,14 @@ const sd_bus_vtable bus_service_vtable[] = { SD_BUS_PROPERTY("RestartUSec", "t", bus_property_get_usec, offsetof(Service, restart_usec), SD_BUS_VTABLE_PROPERTY_CONST), SD_BUS_PROPERTY("TimeoutStartUSec", "t", bus_property_get_usec, offsetof(Service, timeout_start_usec), SD_BUS_VTABLE_PROPERTY_CONST), SD_BUS_PROPERTY("TimeoutStopUSec", "t", bus_property_get_usec, offsetof(Service, timeout_stop_usec), SD_BUS_VTABLE_PROPERTY_CONST), + SD_BUS_PROPERTY("RuntimeMaxUSec", "t", bus_property_get_usec, offsetof(Service, runtime_max_usec), SD_BUS_VTABLE_PROPERTY_CONST), SD_BUS_PROPERTY("WatchdogUSec", "t", bus_property_get_usec, offsetof(Service, watchdog_usec), SD_BUS_VTABLE_PROPERTY_CONST), BUS_PROPERTY_DUAL_TIMESTAMP("WatchdogTimestamp", offsetof(Service, watchdog_timestamp), 0), - SD_BUS_PROPERTY("StartLimitInterval", "t", bus_property_get_usec, offsetof(Service, start_limit.interval), SD_BUS_VTABLE_PROPERTY_CONST), - SD_BUS_PROPERTY("StartLimitBurst", "u", bus_property_get_unsigned, offsetof(Service, start_limit.burst), SD_BUS_VTABLE_PROPERTY_CONST), - SD_BUS_PROPERTY("StartLimitAction", "s", property_get_failure_action, offsetof(Service, start_limit_action), SD_BUS_VTABLE_PROPERTY_CONST), - SD_BUS_PROPERTY("RebootArgument", "s", NULL, offsetof(Service, reboot_arg), SD_BUS_VTABLE_PROPERTY_CONST), + /* The following four are obsolete, and thus marked hidden here. They moved into the Unit interface */ + SD_BUS_PROPERTY("StartLimitInterval", "t", bus_property_get_usec, offsetof(Unit, start_limit.interval), SD_BUS_VTABLE_PROPERTY_CONST|SD_BUS_VTABLE_HIDDEN), + SD_BUS_PROPERTY("StartLimitBurst", "u", bus_property_get_unsigned, offsetof(Unit, start_limit.burst), SD_BUS_VTABLE_PROPERTY_CONST|SD_BUS_VTABLE_HIDDEN), + SD_BUS_PROPERTY("StartLimitAction", "s", property_get_failure_action, offsetof(Unit, start_limit_action), SD_BUS_VTABLE_PROPERTY_CONST|SD_BUS_VTABLE_HIDDEN), + SD_BUS_PROPERTY("RebootArgument", "s", NULL, offsetof(Unit, reboot_arg), SD_BUS_VTABLE_PROPERTY_CONST|SD_BUS_VTABLE_HIDDEN), SD_BUS_PROPERTY("FailureAction", "s", property_get_failure_action, offsetof(Service, failure_action), SD_BUS_VTABLE_PROPERTY_CONST), SD_BUS_PROPERTY("PermissionsStartOnly", "b", bus_property_get_bool, offsetof(Service, permissions_start_only), SD_BUS_VTABLE_PROPERTY_CONST), SD_BUS_PROPERTY("RootDirectoryStartOnly", "b", bus_property_get_bool, offsetof(Service, root_directory_start_only), SD_BUS_VTABLE_PROPERTY_CONST), @@ -125,6 +125,19 @@ static int bus_service_set_transient_property( } return 1; + } else if (streq(name, "RuntimeMaxUSec")) { + usec_t u; + + r = sd_bus_message_read(message, "t", &u); + if (r < 0) + return r; + + if (mode != UNIT_CHECK) { + s->runtime_max_usec = u; + unit_write_drop_in_private_format(UNIT(s), mode, name, "RuntimeMaxSec=" USEC_FMT "us\n", u); + } + + return 1; } else if (STR_IN_SET(name, "StandardInputFileDescriptor", diff --git a/src/core/dbus-service.h b/src/core/dbus-service.h index a67b64ab5b..769a53769e 100644 --- a/src/core/dbus-service.h +++ b/src/core/dbus-service.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/dbus-slice.c b/src/core/dbus-slice.c index 469e3e1c93..e37f50b283 100644 --- a/src/core/dbus-slice.c +++ b/src/core/dbus-slice.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/core/dbus-slice.h b/src/core/dbus-slice.h index 117d11471b..52ceebb135 100644 --- a/src/core/dbus-slice.h +++ b/src/core/dbus-slice.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/dbus-socket.c b/src/core/dbus-socket.c index 895dd07753..d33e494f6b 100644 --- a/src/core/dbus-socket.c +++ b/src/core/dbus-socket.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/core/dbus-socket.h b/src/core/dbus-socket.h index 8dad6ea2e9..7a792c7a89 100644 --- a/src/core/dbus-socket.h +++ b/src/core/dbus-socket.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/dbus-swap.c b/src/core/dbus-swap.c index f2a0f1d172..292f8738c6 100644 --- a/src/core/dbus-swap.c +++ b/src/core/dbus-swap.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/core/dbus-swap.h b/src/core/dbus-swap.h index a414ca7f75..5238471f98 100644 --- a/src/core/dbus-swap.h +++ b/src/core/dbus-swap.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/dbus-target.c b/src/core/dbus-target.c index 654bcf1a29..6858b1ce72 100644 --- a/src/core/dbus-target.c +++ b/src/core/dbus-target.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/core/dbus-target.h b/src/core/dbus-target.h index 6be9c9f708..9be5ce06b7 100644 --- a/src/core/dbus-target.h +++ b/src/core/dbus-target.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/dbus-timer.c b/src/core/dbus-timer.c index ec301df6d7..bc121b83a2 100644 --- a/src/core/dbus-timer.c +++ b/src/core/dbus-timer.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -267,19 +265,19 @@ static int bus_timer_set_transient_property( return 1; - } else if (streq(name, "AccuracySec")) { - + } else if (STR_IN_SET(name, "AccuracyUSec", "AccuracySec")) { usec_t u = 0; + if (streq(name, "AccuracySec")) + log_notice("Client is using obsolete AccuracySec= transient property, please use AccuracyUSec= instead."); + r = sd_bus_message_read(message, "t", &u); if (r < 0) return r; if (mode != UNIT_CHECK) { - char time[FORMAT_TIMESPAN_MAX]; - t->accuracy_usec = u; - unit_write_drop_in_private_format(UNIT(t), mode, name, "%s=%s\n", name, format_timespan(time, sizeof(time), u, USEC_PER_MSEC)); + unit_write_drop_in_private_format(UNIT(t), mode, name, "AccuracySec=" USEC_FMT "us\n", u); } return 1; @@ -292,10 +290,8 @@ static int bus_timer_set_transient_property( return r; if (mode != UNIT_CHECK) { - char time[FORMAT_TIMESPAN_MAX]; - t->random_usec = u; - unit_write_drop_in_private_format(UNIT(t), mode, name, "RandomizedDelaySec=%s\n", format_timespan(time, sizeof(time), u, USEC_PER_MSEC)); + unit_write_drop_in_private_format(UNIT(t), mode, name, "RandomizedDelaySec=" USEC_FMT "us\n", u); } return 1; diff --git a/src/core/dbus-timer.h b/src/core/dbus-timer.h index ca35c4b8c1..39053dc4a2 100644 --- a/src/core/dbus-timer.h +++ b/src/core/dbus-timer.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/dbus-unit.c b/src/core/dbus-unit.c index dca9f77528..b351f6a2c2 100644 --- a/src/core/dbus-unit.c +++ b/src/core/dbus-unit.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -674,6 +672,7 @@ const sd_bus_vtable bus_unit_vtable[] = { SD_BUS_PROPERTY("DropInPaths", "as", NULL, offsetof(Unit, dropin_paths), SD_BUS_VTABLE_PROPERTY_CONST), SD_BUS_PROPERTY("UnitFileState", "s", property_get_unit_file_state, 0, 0), SD_BUS_PROPERTY("UnitFilePreset", "s", property_get_unit_file_preset, 0, 0), + BUS_PROPERTY_DUAL_TIMESTAMP("StateChangeTimestamp", offsetof(Unit, state_change_timestamp), SD_BUS_VTABLE_PROPERTY_EMITS_CHANGE), BUS_PROPERTY_DUAL_TIMESTAMP("InactiveExitTimestamp", offsetof(Unit, inactive_exit_timestamp), SD_BUS_VTABLE_PROPERTY_EMITS_CHANGE), BUS_PROPERTY_DUAL_TIMESTAMP("ActiveEnterTimestamp", offsetof(Unit, active_enter_timestamp), SD_BUS_VTABLE_PROPERTY_EMITS_CHANGE), BUS_PROPERTY_DUAL_TIMESTAMP("ActiveExitTimestamp", offsetof(Unit, active_exit_timestamp), SD_BUS_VTABLE_PROPERTY_EMITS_CHANGE), @@ -702,7 +701,10 @@ const sd_bus_vtable bus_unit_vtable[] = { SD_BUS_PROPERTY("Asserts", "a(sbbsi)", property_get_conditions, offsetof(Unit, asserts), 0), SD_BUS_PROPERTY("LoadError", "(ss)", property_get_load_error, 0, SD_BUS_VTABLE_PROPERTY_CONST), SD_BUS_PROPERTY("Transient", "b", bus_property_get_bool, offsetof(Unit, transient), SD_BUS_VTABLE_PROPERTY_CONST), - SD_BUS_PROPERTY("NetClass", "u", NULL, offsetof(Unit, cgroup_netclass_id), 0), + SD_BUS_PROPERTY("StartLimitInterval", "t", bus_property_get_usec, offsetof(Unit, start_limit.interval), SD_BUS_VTABLE_PROPERTY_CONST), + SD_BUS_PROPERTY("StartLimitBurst", "u", bus_property_get_unsigned, offsetof(Unit, start_limit.burst), SD_BUS_VTABLE_PROPERTY_CONST), + SD_BUS_PROPERTY("StartLimitAction", "s", property_get_failure_action, offsetof(Unit, start_limit_action), SD_BUS_VTABLE_PROPERTY_CONST), + SD_BUS_PROPERTY("RebootArgument", "s", NULL, offsetof(Unit, reboot_arg), SD_BUS_VTABLE_PROPERTY_CONST), SD_BUS_METHOD("Start", "s", "o", method_start, SD_BUS_VTABLE_UNPRIVILEGED), SD_BUS_METHOD("Stop", "s", "o", method_stop, SD_BUS_VTABLE_UNPRIVILEGED), @@ -1265,10 +1267,10 @@ int bus_unit_check_load_state(Unit *u, sd_bus_error *error) { * possible. Note that in the case of UNIT_MASKED, load_error * is not set. */ if (u->load_state == UNIT_MASKED) - return sd_bus_error_setf(error, BUS_ERROR_UNIT_MASKED, "Unit is masked."); + return sd_bus_error_setf(error, BUS_ERROR_UNIT_MASKED, "Unit %s is masked.", u->id); if (u->load_state == UNIT_NOT_FOUND) - return sd_bus_error_setf(error, BUS_ERROR_NO_SUCH_UNIT, "Unit not found."); + return sd_bus_error_setf(error, BUS_ERROR_NO_SUCH_UNIT, "Unit %s not found.", u->id); - return sd_bus_error_set_errnof(error, u->load_error, "Unit is not loaded properly: %m."); + return sd_bus_error_set_errnof(error, u->load_error, "Unit %s is not loaded properly: %m.", u->id); } diff --git a/src/core/dbus-unit.h b/src/core/dbus-unit.h index ac9ee2d6b8..07948b9cd0 100644 --- a/src/core/dbus-unit.h +++ b/src/core/dbus-unit.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/dbus.c b/src/core/dbus.c index 1d89b9e250..413489373f 100644 --- a/src/core/dbus.c +++ b/src/core/dbus.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/core/dbus.h b/src/core/dbus.h index ff761668f3..e16a84fbb8 100644 --- a/src/core/dbus.h +++ b/src/core/dbus.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/device.c b/src/core/device.c index 807547c87f..d201dc5e4b 100644 --- a/src/core/device.c +++ b/src/core/device.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/core/device.h b/src/core/device.h index da8737870b..184a1a349b 100644 --- a/src/core/device.h +++ b/src/core/device.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/execute.c b/src/core/execute.c index 80db62131c..30f7e05b90 100644 --- a/src/core/execute.c +++ b/src/core/execute.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -59,7 +57,6 @@ #endif #include "async.h" #include "barrier.h" -#include "bus-endpoint.h" #include "cap-list.h" #include "capability-util.h" #include "def.h" @@ -1389,9 +1386,6 @@ static bool exec_needs_mount_namespace( if (context->private_tmp && runtime && (runtime->tmp_dir || runtime->var_tmp_dir)) return true; - if (params->bus_endpoint_path) - return true; - if (context->private_devices || context->protect_system != PROTECT_SYSTEM_NO || context->protect_home != PROTECT_HOME_NO) @@ -1425,9 +1419,6 @@ static int close_remaining_fds( n_dont_close += n_fds; } - if (params->bus_endpoint_fd >= 0) - dont_close[n_dont_close++] = params->bus_endpoint_fd; - if (runtime) { if (runtime->netns_storage_socket[0] >= 0) dont_close[n_dont_close++] = runtime->netns_storage_socket[0]; @@ -1657,16 +1648,6 @@ static int exec_child( } } - if (params->bus_endpoint_fd >= 0 && context->bus_endpoint) { - uid_t ep_uid = (uid == UID_INVALID) ? 0 : uid; - - r = bus_kernel_set_endpoint_policy(params->bus_endpoint_fd, ep_uid, context->bus_endpoint); - if (r < 0) { - *exit_status = EXIT_BUS_ENDPOINT; - return r; - } - } - /* If delegation is enabled we'll pass ownership of the cgroup * (but only in systemd's own controller hierarchy!) to the * user of the new process. */ @@ -1789,7 +1770,6 @@ static int exec_child( context->inaccessible_dirs, tmp, var, - params->bus_endpoint_path, context->private_devices, context->protect_home, context->protect_system, @@ -2216,9 +2196,6 @@ void exec_context_done(ExecContext *c) { c->address_families = set_free(c->address_families); c->runtime_directory = strv_free(c->runtime_directory); - - bus_endpoint_free(c->bus_endpoint); - c->bus_endpoint = NULL; } int exec_context_destroy_runtime_directory(ExecContext *c, const char *runtime_prefix) { diff --git a/src/core/execute.h b/src/core/execute.h index e4b93b603d..f7205701f4 100644 --- a/src/core/execute.h +++ b/src/core/execute.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** @@ -32,7 +30,6 @@ typedef struct ExecParameters ExecParameters; #include <stdio.h> #include <sys/capability.h> -#include "bus-endpoint.h" #include "fdset.h" #include "list.h" #include "missing.h" @@ -203,9 +200,6 @@ struct ExecContext { bool ioprio_set:1; bool cpu_sched_set:1; bool no_new_privileges_set:1; - - /* custom dbus enpoint */ - BusEndpoint *bus_endpoint; }; #include "cgroup-util.h" @@ -236,9 +230,6 @@ struct ExecParameters { int *idle_pipe; - char *bus_endpoint_path; - int bus_endpoint_fd; - int stdin_fd; int stdout_fd; int stderr_fd; diff --git a/src/core/failure-action.c b/src/core/failure-action.c index f67fb05af0..39f5519ca1 100644 --- a/src/core/failure-action.c +++ b/src/core/failure-action.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/core/failure-action.h b/src/core/failure-action.h index 1af4dd987b..1adac4ad5c 100644 --- a/src/core/failure-action.h +++ b/src/core/failure-action.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/hostname-setup.c b/src/core/hostname-setup.c index d92a9a764f..68be52856b 100644 --- a/src/core/hostname-setup.c +++ b/src/core/hostname-setup.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/core/hostname-setup.h b/src/core/hostname-setup.h index 8dc3a9e1d8..73e8c75c71 100644 --- a/src/core/hostname-setup.h +++ b/src/core/hostname-setup.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/ima-setup.c b/src/core/ima-setup.c index 4f42ae6f31..ff7558d500 100644 --- a/src/core/ima-setup.c +++ b/src/core/ima-setup.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/core/ima-setup.h b/src/core/ima-setup.h index 14b56d1fc2..3bad74b246 100644 --- a/src/core/ima-setup.h +++ b/src/core/ima-setup.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/job.c b/src/core/job.c index d8fdf1b53f..97304c4d05 100644 --- a/src/core/job.c +++ b/src/core/job.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -932,14 +930,14 @@ int job_start_timer(Job *j) { j->begin_usec = now(CLOCK_MONOTONIC); - if (j->unit->job_timeout <= 0) + if (j->unit->job_timeout == USEC_INFINITY) return 0; r = sd_event_add_time( j->manager->event, &j->timer_event_source, CLOCK_MONOTONIC, - j->begin_usec + j->unit->job_timeout, 0, + usec_add(j->begin_usec, j->unit->job_timeout), 0, job_dispatch_timer, j); if (r < 0) return r; @@ -1117,17 +1115,16 @@ int job_coldplug(Job *j) { if (j->state == JOB_WAITING) job_add_to_run_queue(j); - if (j->begin_usec == 0 || j->unit->job_timeout == 0) + if (j->begin_usec == 0 || j->unit->job_timeout == USEC_INFINITY) return 0; - if (j->timer_event_source) - j->timer_event_source = sd_event_source_unref(j->timer_event_source); + j->timer_event_source = sd_event_source_unref(j->timer_event_source); r = sd_event_add_time( j->manager->event, &j->timer_event_source, CLOCK_MONOTONIC, - j->begin_usec + j->unit->job_timeout, 0, + usec_add(j->begin_usec, j->unit->job_timeout), 0, job_dispatch_timer, j); if (r < 0) log_debug_errno(r, "Failed to restart timeout for job: %m"); @@ -1166,10 +1163,10 @@ void job_shutdown_magic(Job *j) { asynchronous_sync(); } -int job_get_timeout(Job *j, uint64_t *timeout) { +int job_get_timeout(Job *j, usec_t *timeout) { + usec_t x = USEC_INFINITY, y = USEC_INFINITY; Unit *u = j->unit; - uint64_t x = -1, y = -1; - int r = 0, q = 0; + int r; assert(u); @@ -1177,20 +1174,18 @@ int job_get_timeout(Job *j, uint64_t *timeout) { r = sd_event_source_get_time(j->timer_event_source, &x); if (r < 0) return r; - r = 1; } if (UNIT_VTABLE(u)->get_timeout) { - q = UNIT_VTABLE(u)->get_timeout(u, &y); - if (q < 0) - return q; + r = UNIT_VTABLE(u)->get_timeout(u, &y); + if (r < 0) + return r; } - if (r == 0 && q == 0) + if (x == USEC_INFINITY && y == USEC_INFINITY) return 0; *timeout = MIN(x, y); - return 1; } diff --git a/src/core/job.h b/src/core/job.h index bbf5471e8b..856b0ce829 100644 --- a/src/core/job.h +++ b/src/core/job.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** @@ -227,6 +225,8 @@ char *job_dbus_path(Job *j); void job_shutdown_magic(Job *j); +int job_get_timeout(Job *j, usec_t *timeout) _pure_; + const char* job_type_to_string(JobType t) _const_; JobType job_type_from_string(const char *s) _pure_; @@ -239,6 +239,4 @@ JobMode job_mode_from_string(const char *s) _pure_; const char* job_result_to_string(JobResult t) _const_; JobResult job_result_from_string(const char *s) _pure_; -int job_get_timeout(Job *j, uint64_t *timeout) _pure_; - const char* job_type_to_access_method(JobType t); diff --git a/src/core/kill.c b/src/core/kill.c index 1466d5ce64..6854587d54 100644 --- a/src/core/kill.c +++ b/src/core/kill.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/core/kill.h b/src/core/kill.h index 5d97abb104..b3d2056cb0 100644 --- a/src/core/kill.h +++ b/src/core/kill.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/killall.c b/src/core/killall.c index d0c7c89670..09378f7085 100644 --- a/src/core/killall.c +++ b/src/core/killall.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/core/killall.h b/src/core/killall.h index 986cf432cb..acc2439f00 100644 --- a/src/core/killall.h +++ b/src/core/killall.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/kmod-setup.c b/src/core/kmod-setup.c index a6ab8cf4b3..3503db52ed 100644 --- a/src/core/kmod-setup.c +++ b/src/core/kmod-setup.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/core/kmod-setup.h b/src/core/kmod-setup.h index 24dcdddfa4..685f4df301 100644 --- a/src/core/kmod-setup.h +++ b/src/core/kmod-setup.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/load-dropin.c b/src/core/load-dropin.c index 569632e13b..22b71b6f5e 100644 --- a/src/core/load-dropin.c +++ b/src/core/load-dropin.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/core/load-dropin.h b/src/core/load-dropin.h index 93ffcc4a72..d8a4aefbb3 100644 --- a/src/core/load-dropin.h +++ b/src/core/load-dropin.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/load-fragment-gperf.gperf.m4 b/src/core/load-fragment-gperf.gperf.m4 index 29ab1b6b9e..fde64c9747 100644 --- a/src/core/load-fragment-gperf.gperf.m4 +++ b/src/core/load-fragment-gperf.gperf.m4 @@ -60,22 +60,22 @@ $1.RestrictAddressFamilies, config_parse_address_families, 0, $1.SystemCallArchitectures, config_parse_warn_compat, DISABLED_CONFIGURATION, 0 $1.SystemCallErrorNumber, config_parse_warn_compat, DISABLED_CONFIGURATION, 0 $1.RestrictAddressFamilies, config_parse_warn_compat, DISABLED_CONFIGURATION, 0') -$1.LimitCPU, config_parse_sec_limit, RLIMIT_CPU, offsetof($1, exec_context.rlimit) -$1.LimitFSIZE, config_parse_bytes_limit, RLIMIT_FSIZE, offsetof($1, exec_context.rlimit) -$1.LimitDATA, config_parse_bytes_limit, RLIMIT_DATA, offsetof($1, exec_context.rlimit) -$1.LimitSTACK, config_parse_bytes_limit, RLIMIT_STACK, offsetof($1, exec_context.rlimit) -$1.LimitCORE, config_parse_bytes_limit, RLIMIT_CORE, offsetof($1, exec_context.rlimit) -$1.LimitRSS, config_parse_bytes_limit, RLIMIT_RSS, offsetof($1, exec_context.rlimit) +$1.LimitCPU, config_parse_limit, RLIMIT_CPU, offsetof($1, exec_context.rlimit) +$1.LimitFSIZE, config_parse_limit, RLIMIT_FSIZE, offsetof($1, exec_context.rlimit) +$1.LimitDATA, config_parse_limit, RLIMIT_DATA, offsetof($1, exec_context.rlimit) +$1.LimitSTACK, config_parse_limit, RLIMIT_STACK, offsetof($1, exec_context.rlimit) +$1.LimitCORE, config_parse_limit, RLIMIT_CORE, offsetof($1, exec_context.rlimit) +$1.LimitRSS, config_parse_limit, RLIMIT_RSS, offsetof($1, exec_context.rlimit) $1.LimitNOFILE, config_parse_limit, RLIMIT_NOFILE, offsetof($1, exec_context.rlimit) -$1.LimitAS, config_parse_bytes_limit, RLIMIT_AS, offsetof($1, exec_context.rlimit) +$1.LimitAS, config_parse_limit, RLIMIT_AS, offsetof($1, exec_context.rlimit) $1.LimitNPROC, config_parse_limit, RLIMIT_NPROC, offsetof($1, exec_context.rlimit) -$1.LimitMEMLOCK, config_parse_bytes_limit, RLIMIT_MEMLOCK, offsetof($1, exec_context.rlimit) +$1.LimitMEMLOCK, config_parse_limit, RLIMIT_MEMLOCK, offsetof($1, exec_context.rlimit) $1.LimitLOCKS, config_parse_limit, RLIMIT_LOCKS, offsetof($1, exec_context.rlimit) $1.LimitSIGPENDING, config_parse_limit, RLIMIT_SIGPENDING, offsetof($1, exec_context.rlimit) -$1.LimitMSGQUEUE, config_parse_bytes_limit, RLIMIT_MSGQUEUE, offsetof($1, exec_context.rlimit) +$1.LimitMSGQUEUE, config_parse_limit, RLIMIT_MSGQUEUE, offsetof($1, exec_context.rlimit) $1.LimitNICE, config_parse_limit, RLIMIT_NICE, offsetof($1, exec_context.rlimit) $1.LimitRTPRIO, config_parse_limit, RLIMIT_RTPRIO, offsetof($1, exec_context.rlimit) -$1.LimitRTTIME, config_parse_usec_limit, RLIMIT_RTTIME, offsetof($1, exec_context.rlimit) +$1.LimitRTTIME, config_parse_limit, RLIMIT_RTTIME, offsetof($1, exec_context.rlimit) $1.ReadWriteDirectories, config_parse_namespace_path_strv, 0, offsetof($1, exec_context.read_write_dirs) $1.ReadOnlyDirectories, config_parse_namespace_path_strv, 0, offsetof($1, exec_context.read_only_dirs) $1.InaccessibleDirectories, config_parse_namespace_path_strv, 0, offsetof($1, exec_context.inaccessible_dirs) @@ -129,7 +129,7 @@ $1.BlockIOWriteBandwidth, config_parse_blockio_bandwidth, 0, $1.TasksAccounting, config_parse_bool, 0, offsetof($1, cgroup_context.tasks_accounting) $1.TasksMax, config_parse_tasks_max, 0, offsetof($1, cgroup_context.tasks_max) $1.Delegate, config_parse_bool, 0, offsetof($1, cgroup_context.delegate) -$1.NetClass, config_parse_netclass, 0, offsetof($1, cgroup_context)' +$1.NetClass, config_parse_warn_compat, DISABLED_LEGACY, 0' )m4_dnl Unit.Description, config_parse_unit_string_printf, 0, offsetof(Unit, description) Unit.Documentation, config_parse_documentation, 0, offsetof(Unit, documentation) @@ -161,9 +161,13 @@ Unit.OnFailureJobMode, config_parse_job_mode, 0, Unit.OnFailureIsolate, config_parse_job_mode_isolate, 0, offsetof(Unit, on_failure_job_mode) Unit.IgnoreOnIsolate, config_parse_bool, 0, offsetof(Unit, ignore_on_isolate) Unit.IgnoreOnSnapshot, config_parse_warn_compat, DISABLED_LEGACY, 0 -Unit.JobTimeoutSec, config_parse_sec, 0, offsetof(Unit, job_timeout) +Unit.JobTimeoutSec, config_parse_sec_fix_0, 0, offsetof(Unit, job_timeout) Unit.JobTimeoutAction, config_parse_failure_action, 0, offsetof(Unit, job_timeout_action) Unit.JobTimeoutRebootArgument, config_parse_string, 0, offsetof(Unit, job_timeout_reboot_arg) +Unit.StartLimitInterval, config_parse_sec, 0, offsetof(Unit, start_limit.interval) +Unit.StartLimitBurst, config_parse_unsigned, 0, offsetof(Unit, start_limit.burst) +Unit.StartLimitAction, config_parse_failure_action, 0, offsetof(Unit, start_limit_action) +Unit.RebootArgument, config_parse_string, 0, offsetof(Unit, reboot_arg) Unit.ConditionPathExists, config_parse_unit_condition_path, CONDITION_PATH_EXISTS, offsetof(Unit, conditions) Unit.ConditionPathExistsGlob, config_parse_unit_condition_path, CONDITION_PATH_EXISTS_GLOB, offsetof(Unit, conditions) Unit.ConditionPathIsDirectory, config_parse_unit_condition_path, CONDITION_PATH_IS_DIRECTORY, offsetof(Unit, conditions) @@ -211,14 +215,15 @@ Service.ExecReload, config_parse_exec, SERVICE_EXE Service.ExecStop, config_parse_exec, SERVICE_EXEC_STOP, offsetof(Service, exec_command) Service.ExecStopPost, config_parse_exec, SERVICE_EXEC_STOP_POST, offsetof(Service, exec_command) Service.RestartSec, config_parse_sec, 0, offsetof(Service, restart_usec) -Service.TimeoutSec, config_parse_service_timeout, 0, offsetof(Service, timeout_start_usec) -Service.TimeoutStartSec, config_parse_service_timeout, 0, offsetof(Service, timeout_start_usec) -Service.TimeoutStopSec, config_parse_service_timeout, 0, offsetof(Service, timeout_stop_usec) +Service.TimeoutSec, config_parse_service_timeout, 0, 0 +Service.TimeoutStartSec, config_parse_service_timeout, 0, 0 +Service.TimeoutStopSec, config_parse_service_timeout, 0, 0 +Service.RuntimeMaxSec, config_parse_sec, 0, offsetof(Service, runtime_max_usec) Service.WatchdogSec, config_parse_sec, 0, offsetof(Service, watchdog_usec) -Service.StartLimitInterval, config_parse_sec, 0, offsetof(Service, start_limit.interval) -Service.StartLimitBurst, config_parse_unsigned, 0, offsetof(Service, start_limit.burst) -Service.StartLimitAction, config_parse_failure_action, 0, offsetof(Service, start_limit_action) -Service.RebootArgument, config_parse_string, 0, offsetof(Service, reboot_arg) +Service.StartLimitInterval, config_parse_sec, 0, offsetof(Unit, start_limit.interval) +Service.StartLimitBurst, config_parse_unsigned, 0, offsetof(Unit, start_limit.burst) +Service.StartLimitAction, config_parse_failure_action, 0, offsetof(Unit, start_limit_action) +Service.RebootArgument, config_parse_string, 0, offsetof(Unit, reboot_arg) Service.FailureAction, config_parse_failure_action, 0, offsetof(Service, failure_action) Service.Type, config_parse_service_type, 0, offsetof(Service, type) Service.Restart, config_parse_service_restart, 0, offsetof(Service, restart) @@ -235,7 +240,7 @@ Service.BusName, config_parse_bus_name, 0, Service.FileDescriptorStoreMax, config_parse_unsigned, 0, offsetof(Service, n_fd_store_max) Service.NotifyAccess, config_parse_notify_access, 0, offsetof(Service, notify_access) Service.Sockets, config_parse_service_sockets, 0, 0 -Service.BusPolicy, config_parse_bus_endpoint_policy, 0, offsetof(Service, exec_context) +Service.BusPolicy, config_parse_warn_compat, DISABLED_LEGACY, 0 Service.USBFunctionDescriptors, config_parse_path, 0, offsetof(Service, usb_function_descriptors) Service.USBFunctionStrings, config_parse_path, 0, offsetof(Service, usb_function_strings) EXEC_CONTEXT_CONFIG_ITEMS(Service)m4_dnl diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c index 903e6f0cf6..ba551fb41d 100644 --- a/src/core/load-fragment.c +++ b/src/core/load-fragment.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -54,6 +52,7 @@ #include "parse-util.h" #include "path-util.h" #include "process-util.h" +#include "rlimit-util.h" #ifdef HAVE_SECCOMP #include "seccomp-util.h" #endif @@ -1101,122 +1100,6 @@ int config_parse_capability_set( return 0; } -static int rlim_parse_u64(const char *val, rlim_t *res) { - int r = 0; - - if (streq(val, "infinity")) - *res = RLIM_INFINITY; - else { - uint64_t u; - - /* setrlimit(2) suggests rlim_t is always 64bit on Linux. */ - assert_cc(sizeof(rlim_t) == sizeof(uint64_t)); - - r = safe_atou64(val, &u); - if (r >= 0 && u >= (uint64_t) RLIM_INFINITY) - r = -ERANGE; - if (r == 0) - *res = (rlim_t) u; - } - return r; -} - -static int rlim_parse_size(const char *val, rlim_t *res) { - int r = 0; - - if (streq(val, "infinity")) - *res = RLIM_INFINITY; - else { - uint64_t u; - - r = parse_size(val, 1024, &u); - if (r >= 0 && u >= (uint64_t) RLIM_INFINITY) - r = -ERANGE; - if (r == 0) - *res = (rlim_t) u; - } - return r; -} - -static int rlim_parse_sec(const char *val, rlim_t *res) { - int r = 0; - - if (streq(val, "infinity")) - *res = RLIM_INFINITY; - else { - usec_t t; - - r = parse_sec(val, &t); - if (r < 0) - return r; - if (t == USEC_INFINITY) - *res = RLIM_INFINITY; - else - *res = (rlim_t) (DIV_ROUND_UP(t, USEC_PER_SEC)); - - } - return r; -} - -static int rlim_parse_usec(const char *val, rlim_t *res) { - int r = 0; - - if (streq(val, "infinity")) - *res = RLIM_INFINITY; - else { - usec_t t; - - r = parse_time(val, &t, 1); - if (r < 0) - return r; - if (t == USEC_INFINITY) - *res = RLIM_INFINITY; - else - *res = (rlim_t) t; - } - return r; -} - -static int parse_rlimit_range( - const char *unit, - const char *filename, - unsigned line, - const char *value, - struct rlimit **rl, - int (*rlim_parser)(const char *, rlim_t *)) { - - const char *whole_value = value; - rlim_t soft, hard; - _cleanup_free_ char *sword = NULL, *hword = NULL; - int nwords, r; - - assert(value); - - /* <value> or <soft:hard> */ - nwords = extract_many_words(&value, ":", EXTRACT_DONT_COALESCE_SEPARATORS, &sword, &hword, NULL); - r = nwords < 0 ? nwords : nwords == 0 ? -EINVAL : 0; - - if (r == 0) - r = rlim_parser(sword, &soft); - if (r == 0 && nwords == 2) - r = rlim_parser(hword, &hard); - if (r < 0) { - log_syntax(unit, LOG_ERR, filename, line, r, "Failed to parse resource value, ignoring: %s", whole_value); - return 0; - } - if (nwords == 2 && soft > hard) - return log_syntax(unit, LOG_WARNING, filename, line, 0, "Invalid resource value ("RLIM_FMT" > "RLIM_FMT"), ignoring: %s", soft, hard, whole_value); - - if (!*rl) { - *rl = new(struct rlimit, 1); - if (!*rl) - return log_oom(); - } - (*rl)->rlim_cur = soft; - (*rl)->rlim_max = nwords == 2 ? hard : soft; - return 0; -} - int config_parse_limit( const char *unit, const char *filename, @@ -1229,88 +1112,35 @@ int config_parse_limit( void *data, void *userdata) { - struct rlimit **rl = data; - - assert(filename); - assert(lvalue); - assert(rvalue); - assert(data); - - rl += ltype; - return parse_rlimit_range(unit, filename, line, rvalue, rl, rlim_parse_u64); -} - -int config_parse_bytes_limit( - const char *unit, - const char *filename, - unsigned line, - const char *section, - unsigned section_line, - const char *lvalue, - int ltype, - const char *rvalue, - void *data, - void *userdata) { - - struct rlimit **rl = data; - - assert(filename); - assert(lvalue); - assert(rvalue); - assert(data); - - rl += ltype; - return parse_rlimit_range(unit, filename, line, rvalue, rl, rlim_parse_size); -} - -int config_parse_sec_limit( - const char *unit, - const char *filename, - unsigned line, - const char *section, - unsigned section_line, - const char *lvalue, - int ltype, - const char *rvalue, - void *data, - void *userdata) { - - struct rlimit **rl = data; + struct rlimit **rl = data, d = {}; + int r; assert(filename); assert(lvalue); assert(rvalue); assert(data); - rl += ltype; - return parse_rlimit_range(unit, filename, line, rvalue, rl, rlim_parse_sec); -} - -int config_parse_usec_limit( - const char *unit, - const char *filename, - unsigned line, - const char *section, - unsigned section_line, - const char *lvalue, - int ltype, - const char *rvalue, - void *data, - void *userdata) { - - struct rlimit **rl = data; + r = rlimit_parse(ltype, rvalue, &d); + if (r == -EILSEQ) { + log_syntax(unit, LOG_WARNING, filename, line, r, "Soft resource limit chosen higher than hard limit, ignoring: %s", rvalue); + return 0; + } + if (r < 0) { + log_syntax(unit, LOG_ERR, filename, line, r, "Failed to parse resource value, ignoring: %s", rvalue); + return 0; + } - assert(filename); - assert(lvalue); - assert(rvalue); - assert(data); + if (rl[ltype]) + *rl[ltype] = d; + else { + rl[ltype] = newdup(struct rlimit, &d, 1); + if (!rl[ltype]) + return log_oom(); + } - rl += ltype; - return parse_rlimit_range(unit, filename, line, rvalue, rl, rlim_parse_usec); + return 0; } - - #ifdef HAVE_SYSV_COMPAT int config_parse_sysv_priority(const char *unit, const char *filename, @@ -1881,18 +1711,20 @@ int config_parse_bus_name( return config_parse_string(unit, filename, line, section, section_line, lvalue, ltype, k, data, userdata); } -int config_parse_service_timeout(const char *unit, - const char *filename, - unsigned line, - const char *section, - unsigned section_line, - const char *lvalue, - int ltype, - const char *rvalue, - void *data, - void *userdata) { +int config_parse_service_timeout( + const char *unit, + const char *filename, + unsigned line, + const char *section, + unsigned section_line, + const char *lvalue, + int ltype, + const char *rvalue, + void *data, + void *userdata) { Service *s = userdata; + usec_t usec; int r; assert(filename); @@ -1900,16 +1732,63 @@ int config_parse_service_timeout(const char *unit, assert(rvalue); assert(s); - r = config_parse_sec(unit, filename, line, section, section_line, lvalue, ltype, - rvalue, data, userdata); - if (r < 0) - return r; + /* This is called for three cases: TimeoutSec=, TimeoutStopSec= and TimeoutStartSec=. */ - if (streq(lvalue, "TimeoutSec")) { - s->start_timeout_defined = true; - s->timeout_stop_usec = s->timeout_start_usec; - } else if (streq(lvalue, "TimeoutStartSec")) + r = parse_sec(rvalue, &usec); + if (r < 0) { + log_syntax(unit, LOG_ERR, filename, line, r, "Failed to parse %s= parameter, ignoring: %s", lvalue, rvalue); + return 0; + } + + /* Traditionally, these options accepted 0 to disable the timeouts. However, a timeout of 0 suggests it happens + * immediately, hence fix this to become USEC_INFINITY instead. This is in-line with how we internally handle + * all other timeouts. */ + if (usec <= 0) + usec = USEC_INFINITY; + + if (!streq(lvalue, "TimeoutStopSec")) { s->start_timeout_defined = true; + s->timeout_start_usec = usec; + } + + if (!streq(lvalue, "TimeoutStartSec")) + s->timeout_stop_usec = usec; + + return 0; +} + +int config_parse_sec_fix_0( + const char *unit, + const char *filename, + unsigned line, + const char *section, + unsigned section_line, + const char *lvalue, + int ltype, + const char *rvalue, + void *data, + void *userdata) { + + usec_t *usec = data; + int r; + + assert(filename); + assert(lvalue); + assert(rvalue); + assert(usec); + + /* This is pretty much like config_parse_sec(), except that this treats a time of 0 as infinity, for + * compatibility with older versions of systemd where 0 instead of infinity was used as indicator to turn off a + * timeout. */ + + r = parse_sec(rvalue, usec); + if (r < 0) { + log_syntax(unit, LOG_ERR, filename, line, r, "Failed to parse %s= parameter, ignoring: %s", lvalue, rvalue); + return 0; + } + + if (*usec <= 0) + *usec = USEC_INFINITY; return 0; } @@ -2023,59 +1902,6 @@ int config_parse_bus_policy( return 0; } -int config_parse_bus_endpoint_policy( - const char *unit, - const char *filename, - unsigned line, - const char *section, - unsigned section_line, - const char *lvalue, - int ltype, - const char *rvalue, - void *data, - void *userdata) { - - _cleanup_free_ char *name = NULL; - BusPolicyAccess access; - ExecContext *c = data; - char *access_str; - int r; - - assert(filename); - assert(lvalue); - assert(rvalue); - assert(data); - - name = strdup(rvalue); - if (!name) - return log_oom(); - - access_str = strpbrk(name, WHITESPACE); - if (!access_str) { - log_syntax(unit, LOG_ERR, filename, line, 0, "Invalid endpoint policy value '%s'", rvalue); - return 0; - } - - *access_str = '\0'; - access_str++; - access_str += strspn(access_str, WHITESPACE); - - access = bus_policy_access_from_string(access_str); - if (access <= _BUS_POLICY_ACCESS_INVALID || - access >= _BUS_POLICY_ACCESS_MAX) { - log_syntax(unit, LOG_ERR, filename, line, 0, "Invalid endpoint policy access type '%s'", access_str); - return 0; - } - - if (!c->bus_endpoint) { - r = bus_endpoint_new(&c->bus_endpoint); - if (r < 0) - return log_error_errno(r, "Failed to create bus endpoint object: %m"); - } - - return bus_endpoint_add_policy(c->bus_endpoint, name, access); -} - int config_parse_working_directory( const char *unit, const char *filename, @@ -3283,47 +3109,6 @@ int config_parse_blockio_bandwidth( return 0; } -int config_parse_netclass( - const char *unit, - const char *filename, - unsigned line, - const char *section, - unsigned section_line, - const char *lvalue, - int ltype, - const char *rvalue, - void *data, - void *userdata) { - - CGroupContext *c = data; - unsigned v; - int r; - - assert(filename); - assert(lvalue); - assert(rvalue); - - if (streq(rvalue, "auto")) { - c->netclass_type = CGROUP_NETCLASS_TYPE_AUTO; - return 0; - } - - r = safe_atou32(rvalue, &v); - if (r < 0) { - log_syntax(unit, LOG_ERR, filename, line, r, "Netclass '%s' invalid. Ignoring.", rvalue); - return 0; - } - - if (v > CGROUP_NETCLASS_FIXED_MAX) - log_syntax(unit, LOG_ERR, filename, line, 0, - "Fixed netclass %" PRIu32 " out of allowed range (0-%d). Applying anyway.", v, (uint32_t) CGROUP_NETCLASS_FIXED_MAX); - - c->netclass_id = v; - c->netclass_type = CGROUP_NETCLASS_TYPE_FIXED; - - return 0; -} - DEFINE_CONFIG_PARSE_ENUM(config_parse_job_mode, job_mode, JobMode, "Failed to parse job mode"); int config_parse_job_mode_isolate( diff --git a/src/core/load-fragment.h b/src/core/load-fragment.h index f0027a6b43..372d05a61d 100644 --- a/src/core/load-fragment.h +++ b/src/core/load-fragment.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** @@ -58,9 +56,6 @@ int config_parse_exec_capabilities(const char *unit, const char *filename, unsig int config_parse_exec_secure_bits(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); int config_parse_capability_set(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); int config_parse_limit(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); -int config_parse_bytes_limit(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); -int config_parse_sec_limit(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); -int config_parse_usec_limit(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); int config_parse_sysv_priority(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); int config_parse_kill_signal(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); int config_parse_exec_mount_flags(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); @@ -72,7 +67,6 @@ int config_parse_service_sockets(const char *unit, const char *filename, unsigne int config_parse_busname_service(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); int config_parse_bus_policy(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); int config_parse_bus_policy_world(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); -int config_parse_bus_endpoint_policy(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); int config_parse_unit_env_file(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); int config_parse_ip_tos(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); int config_parse_unit_condition_path(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); @@ -114,6 +108,7 @@ int config_parse_bus_name(const char* unit, const char *filename, unsigned line, int config_parse_exec_utmp_mode(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); int config_parse_working_directory(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); int config_parse_fdname(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); +int config_parse_sec_fix_0(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); /* gperf prototypes */ const struct ConfigPerfItem* load_fragment_gperf_lookup(const char *key, unsigned length); diff --git a/src/core/locale-setup.c b/src/core/locale-setup.c index 4c8d920389..ccf61d29fb 100644 --- a/src/core/locale-setup.c +++ b/src/core/locale-setup.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/core/locale-setup.h b/src/core/locale-setup.h index 62c654c37c..3b97497afe 100644 --- a/src/core/locale-setup.h +++ b/src/core/locale-setup.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/loopback-setup.c b/src/core/loopback-setup.c index 4b2a97fd12..04062a7910 100644 --- a/src/core/loopback-setup.c +++ b/src/core/loopback-setup.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/core/loopback-setup.h b/src/core/loopback-setup.h index dd83cf13a7..e7547b8a26 100644 --- a/src/core/loopback-setup.h +++ b/src/core/loopback-setup.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/machine-id-setup.c b/src/core/machine-id-setup.c index 09b0449c80..9e6b3d3292 100644 --- a/src/core/machine-id-setup.c +++ b/src/core/machine-id-setup.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/core/machine-id-setup.h b/src/core/machine-id-setup.h index a2168a8d4a..a7e7678ed9 100644 --- a/src/core/machine-id-setup.h +++ b/src/core/machine-id-setup.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/main.c b/src/core/main.c index 27ba6af031..e2088574c0 100644 --- a/src/core/main.c +++ b/src/core/main.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -174,19 +172,15 @@ noreturn static void crash(int sig) { if (pid < 0) log_emergency_errno(errno, "Caught <%s>, cannot fork for core dump: %m", signal_to_string(sig)); else if (pid == 0) { - struct rlimit rl = { - .rlim_cur = RLIM_INFINITY, - .rlim_max = RLIM_INFINITY, - }; - /* Enable default signal handler for core dump */ + sa = (struct sigaction) { .sa_handler = SIG_DFL, }; (void) sigaction(sig, &sa, NULL); - /* Don't limit the core dump size */ - (void) setrlimit(RLIMIT_CORE, &rl); + /* Don't limit the coredump size */ + (void) setrlimit(RLIMIT_CORE, &RLIMIT_MAKE_CONST(RLIM_INFINITY)); /* Just to be sure... */ (void) chdir("/"); @@ -676,22 +670,22 @@ static int parse_config_file(void) { { "Manager", "DefaultStartLimitInterval", config_parse_sec, 0, &arg_default_start_limit_interval }, { "Manager", "DefaultStartLimitBurst", config_parse_unsigned, 0, &arg_default_start_limit_burst }, { "Manager", "DefaultEnvironment", config_parse_environ, 0, &arg_default_environment }, - { "Manager", "DefaultLimitCPU", config_parse_sec_limit, 0, &arg_default_rlimit[RLIMIT_CPU] }, - { "Manager", "DefaultLimitFSIZE", config_parse_bytes_limit, 0, &arg_default_rlimit[RLIMIT_FSIZE] }, - { "Manager", "DefaultLimitDATA", config_parse_bytes_limit, 0, &arg_default_rlimit[RLIMIT_DATA] }, - { "Manager", "DefaultLimitSTACK", config_parse_bytes_limit, 0, &arg_default_rlimit[RLIMIT_STACK] }, - { "Manager", "DefaultLimitCORE", config_parse_bytes_limit, 0, &arg_default_rlimit[RLIMIT_CORE] }, - { "Manager", "DefaultLimitRSS", config_parse_bytes_limit, 0, &arg_default_rlimit[RLIMIT_RSS] }, - { "Manager", "DefaultLimitNOFILE", config_parse_limit, 0, &arg_default_rlimit[RLIMIT_NOFILE] }, - { "Manager", "DefaultLimitAS", config_parse_bytes_limit, 0, &arg_default_rlimit[RLIMIT_AS] }, - { "Manager", "DefaultLimitNPROC", config_parse_limit, 0, &arg_default_rlimit[RLIMIT_NPROC] }, - { "Manager", "DefaultLimitMEMLOCK", config_parse_bytes_limit, 0, &arg_default_rlimit[RLIMIT_MEMLOCK] }, - { "Manager", "DefaultLimitLOCKS", config_parse_limit, 0, &arg_default_rlimit[RLIMIT_LOCKS] }, - { "Manager", "DefaultLimitSIGPENDING", config_parse_limit, 0, &arg_default_rlimit[RLIMIT_SIGPENDING] }, - { "Manager", "DefaultLimitMSGQUEUE", config_parse_bytes_limit, 0, &arg_default_rlimit[RLIMIT_MSGQUEUE] }, - { "Manager", "DefaultLimitNICE", config_parse_limit, 0, &arg_default_rlimit[RLIMIT_NICE] }, - { "Manager", "DefaultLimitRTPRIO", config_parse_limit, 0, &arg_default_rlimit[RLIMIT_RTPRIO] }, - { "Manager", "DefaultLimitRTTIME", config_parse_usec_limit, 0, &arg_default_rlimit[RLIMIT_RTTIME] }, + { "Manager", "DefaultLimitCPU", config_parse_limit, RLIMIT_CPU, arg_default_rlimit }, + { "Manager", "DefaultLimitFSIZE", config_parse_limit, RLIMIT_FSIZE, arg_default_rlimit }, + { "Manager", "DefaultLimitDATA", config_parse_limit, RLIMIT_DATA, arg_default_rlimit }, + { "Manager", "DefaultLimitSTACK", config_parse_limit, RLIMIT_STACK, arg_default_rlimit }, + { "Manager", "DefaultLimitCORE", config_parse_limit, RLIMIT_CORE, arg_default_rlimit }, + { "Manager", "DefaultLimitRSS", config_parse_limit, RLIMIT_RSS, arg_default_rlimit }, + { "Manager", "DefaultLimitNOFILE", config_parse_limit, RLIMIT_NOFILE, arg_default_rlimit }, + { "Manager", "DefaultLimitAS", config_parse_limit, RLIMIT_AS, arg_default_rlimit }, + { "Manager", "DefaultLimitNPROC", config_parse_limit, RLIMIT_NPROC, arg_default_rlimit }, + { "Manager", "DefaultLimitMEMLOCK", config_parse_limit, RLIMIT_MEMLOCK, arg_default_rlimit }, + { "Manager", "DefaultLimitLOCKS", config_parse_limit, RLIMIT_LOCKS, arg_default_rlimit }, + { "Manager", "DefaultLimitSIGPENDING", config_parse_limit, RLIMIT_SIGPENDING, arg_default_rlimit }, + { "Manager", "DefaultLimitMSGQUEUE", config_parse_limit, RLIMIT_MSGQUEUE, arg_default_rlimit }, + { "Manager", "DefaultLimitNICE", config_parse_limit, RLIMIT_NICE, arg_default_rlimit }, + { "Manager", "DefaultLimitRTPRIO", config_parse_limit, RLIMIT_RTPRIO, arg_default_rlimit }, + { "Manager", "DefaultLimitRTTIME", config_parse_limit, RLIMIT_RTTIME, arg_default_rlimit }, { "Manager", "DefaultCPUAccounting", config_parse_bool, 0, &arg_default_cpu_accounting }, { "Manager", "DefaultBlockIOAccounting", config_parse_bool, 0, &arg_default_blockio_accounting }, { "Manager", "DefaultMemoryAccounting", config_parse_bool, 0, &arg_default_memory_accounting }, @@ -710,8 +704,14 @@ static int parse_config_file(void) { CONF_PATHS_NULSTR("systemd/system.conf.d") : CONF_PATHS_NULSTR("systemd/user.conf.d"); - config_parse_many(fn, conf_dirs_nulstr, "Manager\0", - config_item_table_lookup, items, false, NULL); + config_parse_many(fn, conf_dirs_nulstr, "Manager\0", config_item_table_lookup, items, false, NULL); + + /* Traditionally "0" was used to turn off the default unit timeouts. Fix this up so that we used USEC_INFINITY + * like everywhere else. */ + if (arg_default_timeout_start_usec <= 0) + arg_default_timeout_start_usec = USEC_INFINITY; + if (arg_default_timeout_stop_usec <= 0) + arg_default_timeout_stop_usec = USEC_INFINITY; return 0; } @@ -1363,7 +1363,11 @@ int main(int argc, char *argv[]) { initrd_timestamp = userspace_timestamp; if (!skip_setup) { - mount_setup_early(); + r = mount_setup_early(); + if (r < 0) { + error_message = "Failed to early mount API filesystems"; + goto finish; + } dual_timestamp_get(&security_start_timestamp); if (mac_selinux_setup(&loaded_policy) < 0) { error_message = "Failed to load SELinux policy"; @@ -1414,8 +1418,14 @@ int main(int argc, char *argv[]) { * saving time change. All kernel local time concepts will be treated * as UTC that way. */ - clock_reset_timewarp(); + (void) clock_reset_timewarp(); } + + r = clock_apply_epoch(); + if (r < 0) + log_error_errno(r, "Current system time is before build time, but cannot correct: %m"); + else if (r > 0) + log_info("System time before build time, advancing clock."); } /* Set the default for later on, but don't actually @@ -1452,6 +1462,17 @@ int main(int argc, char *argv[]) { kernel_timestamp = DUAL_TIMESTAMP_NULL; } + if (getpid() == 1) { + /* Don't limit the core dump size, so that coredump handlers such as systemd-coredump (which honour the limit) + * will process core dumps for system services by default. */ + (void) setrlimit(RLIMIT_CORE, &RLIMIT_MAKE_CONST(RLIM_INFINITY)); + + /* But at the same time, turn off the core_pattern logic by default, so that no coredumps are stored + * until the systemd-coredump tool is enabled via sysctl. */ + if (!skip_setup) + (void) write_string_file("/proc/sys/kernel/core_pattern", "|/bin/false", 0); + } + /* Initialize default unit */ r = free_and_strdup(&arg_default_unit, SPECIAL_DEFAULT_TARGET); if (r < 0) { diff --git a/src/core/manager.c b/src/core/manager.c index e8fea376ff..f36cf5e320 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -598,8 +596,6 @@ int manager_new(ManagerRunningAs running_as, bool test_run, Manager **_m) { m->have_ask_password = -EINVAL; /* we don't know */ m->first_boot = -1; - m->cgroup_netclass_registry_last = CGROUP_NETCLASS_FIXED_MAX; - m->test_run = test_run; /* Reboot immediately if the user hits C-A-D more often than 7x per 2s */ @@ -983,8 +979,6 @@ Manager* manager_free(Manager *m) { hashmap_free(m->cgroup_unit); set_free_free(m->unit_path_cache); - hashmap_free(m->cgroup_netclass_registry); - free(m->switch_root); free(m->switch_root_init); diff --git a/src/core/manager.h b/src/core/manager.h index f6903a5c34..9803f73129 100644 --- a/src/core/manager.h +++ b/src/core/manager.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** @@ -307,10 +305,6 @@ struct Manager { const char *unit_log_format_string; int first_boot; - - /* Used for NetClass=auto units */ - Hashmap *cgroup_netclass_registry; - uint32_t cgroup_netclass_registry_last; }; int manager_new(ManagerRunningAs running_as, bool test_run, Manager **m); diff --git a/src/core/mount-setup.c b/src/core/mount-setup.c index d73b319c5d..de1a361cc4 100644 --- a/src/core/mount-setup.c +++ b/src/core/mount-setup.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -158,11 +156,13 @@ static int mount_one(const MountPoint *p, bool relabel) { /* Relabel first, just in case */ if (relabel) - label_fix(p->where, true, true); + (void) label_fix(p->where, true, true); r = path_is_mount_point(p->where, AT_SYMLINK_FOLLOW); - if (r < 0 && r != -ENOENT) - return r; + if (r < 0 && r != -ENOENT) { + log_full_errno((p->mode & MNT_FATAL) ? LOG_ERR : LOG_DEBUG, r, "Failed to determine whether %s is a mount point: %m", p->where); + return (p->mode & MNT_FATAL) ? r : 0; + } if (r > 0) return 0; @@ -173,9 +173,9 @@ static int mount_one(const MountPoint *p, bool relabel) { /* The access mode here doesn't really matter too much, since * the mounted file system will take precedence anyway. */ if (relabel) - mkdir_p_label(p->where, 0755); + (void) mkdir_p_label(p->where, 0755); else - mkdir_p(p->where, 0755); + (void) mkdir_p(p->where, 0755); log_debug("Mounting %s to %s of type %s with options %s.", p->what, @@ -188,29 +188,25 @@ static int mount_one(const MountPoint *p, bool relabel) { p->type, p->flags, p->options) < 0) { - log_full((p->mode & MNT_FATAL) ? LOG_ERR : LOG_DEBUG, "Failed to mount %s at %s: %m", p->type, p->where); + log_full_errno((p->mode & MNT_FATAL) ? LOG_ERR : LOG_DEBUG, errno, "Failed to mount %s at %s: %m", p->type, p->where); return (p->mode & MNT_FATAL) ? -errno : 0; } /* Relabel again, since we now mounted something fresh here */ if (relabel) - label_fix(p->where, false, false); + (void) label_fix(p->where, false, false); return 1; } -int mount_setup_early(void) { +static int mount_points_setup(unsigned n, bool loaded_policy) { unsigned i; int r = 0; - assert_cc(N_EARLY_MOUNT <= ELEMENTSOF(mount_table)); - - /* Do a minimal mount of /proc and friends to enable the most - * basic stuff, such as SELinux */ - for (i = 0; i < N_EARLY_MOUNT; i ++) { + for (i = 0; i < n; i ++) { int j; - j = mount_one(mount_table + i, false); + j = mount_one(mount_table + i, loaded_policy); if (j != 0 && r >= 0) r = j; } @@ -218,6 +214,14 @@ int mount_setup_early(void) { return r; } +int mount_setup_early(void) { + assert_cc(N_EARLY_MOUNT <= ELEMENTSOF(mount_table)); + + /* Do a minimal mount of /proc and friends to enable the most + * basic stuff, such as SELinux */ + return mount_points_setup(N_EARLY_MOUNT, false); +} + int mount_cgroup_controllers(char ***join_controllers) { _cleanup_set_free_free_ Set *controllers = NULL; int r; @@ -352,16 +356,9 @@ static int nftw_cb( #endif int mount_setup(bool loaded_policy) { - unsigned i; int r = 0; - for (i = 0; i < ELEMENTSOF(mount_table); i ++) { - int j; - - j = mount_one(mount_table + i, loaded_policy); - if (j != 0 && r >= 0) - r = j; - } + r = mount_points_setup(ELEMENTSOF(mount_table), loaded_policy); if (r < 0) return r; diff --git a/src/core/mount-setup.h b/src/core/mount-setup.h index b32fbc5a52..647bd770ae 100644 --- a/src/core/mount-setup.h +++ b/src/core/mount-setup.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/mount.c b/src/core/mount.c index 2ad4ad4f42..93d2bd595c 100644 --- a/src/core/mount.c +++ b/src/core/mount.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -152,29 +150,27 @@ static void mount_init(Unit *u) { u->ignore_on_isolate = true; } -static int mount_arm_timer(Mount *m) { +static int mount_arm_timer(Mount *m, usec_t usec) { int r; assert(m); - if (m->timeout_usec <= 0) { - m->timer_event_source = sd_event_source_unref(m->timer_event_source); - return 0; - } - if (m->timer_event_source) { - r = sd_event_source_set_time(m->timer_event_source, now(CLOCK_MONOTONIC) + m->timeout_usec); + r = sd_event_source_set_time(m->timer_event_source, usec); if (r < 0) return r; return sd_event_source_set_enabled(m->timer_event_source, SD_EVENT_ONESHOT); } + if (usec == USEC_INFINITY) + return 0; + r = sd_event_add_time( UNIT(m)->manager->event, &m->timer_event_source, CLOCK_MONOTONIC, - now(CLOCK_MONOTONIC) + m->timeout_usec, 0, + usec, 0, mount_dispatch_timer, m); if (r < 0) return r; @@ -653,7 +649,7 @@ static int mount_coldplug(Unit *u) { if (r < 0) return r; - r = mount_arm_timer(m); + r = mount_arm_timer(m, usec_add(u->state_change_timestamp.monotonic, m->timeout_usec)); if (r < 0) return r; } @@ -707,7 +703,6 @@ static int mount_spawn(Mount *m, ExecCommand *c, pid_t *_pid) { .apply_permissions = true, .apply_chroot = true, .apply_tty_stdin = true, - .bus_endpoint_fd = -1, .stdin_fd = -1, .stdout_fd = -1, .stderr_fd = -1, @@ -725,11 +720,11 @@ static int mount_spawn(Mount *m, ExecCommand *c, pid_t *_pid) { r = unit_setup_exec_runtime(UNIT(m)); if (r < 0) - goto fail; + return r; - r = mount_arm_timer(m); + r = mount_arm_timer(m, usec_add(now(CLOCK_MONOTONIC), m->timeout_usec)); if (r < 0) - goto fail; + return r; exec_params.environment = UNIT(m)->manager->environment; exec_params.confirm_spawn = UNIT(m)->manager->confirm_spawn; @@ -745,21 +740,16 @@ static int mount_spawn(Mount *m, ExecCommand *c, pid_t *_pid) { m->exec_runtime, &pid); if (r < 0) - goto fail; + return r; r = unit_watch_pid(UNIT(m), pid); if (r < 0) /* FIXME: we need to do something here */ - goto fail; + return r; *_pid = pid; return 0; - -fail: - m->timer_event_source = sd_event_source_unref(m->timer_event_source); - - return r; } static void mount_enter_dead(Mount *m, MountResult f) { @@ -805,7 +795,7 @@ static void mount_enter_signal(Mount *m, MountState state, MountResult f) { goto fail; if (r > 0) { - r = mount_arm_timer(m); + r = mount_arm_timer(m, usec_add(now(CLOCK_MONOTONIC), m->timeout_usec)); if (r < 0) goto fail; @@ -1563,17 +1553,21 @@ static void mount_shutdown(Manager *m) { m->mount_monitor = NULL; } -static int mount_get_timeout(Unit *u, uint64_t *timeout) { +static int mount_get_timeout(Unit *u, usec_t *timeout) { Mount *m = MOUNT(u); + usec_t t; int r; if (!m->timer_event_source) return 0; - r = sd_event_source_get_time(m->timer_event_source, timeout); + r = sd_event_source_get_time(m->timer_event_source, &t); if (r < 0) return r; + if (t == USEC_INFINITY) + return 0; + *timeout = t; return 1; } diff --git a/src/core/mount.h b/src/core/mount.h index 9f78aa9075..3b343c6b1f 100644 --- a/src/core/mount.h +++ b/src/core/mount.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/namespace.c b/src/core/namespace.c index 81ba09ea5d..b573f008b9 100644 --- a/src/core/namespace.c +++ b/src/core/namespace.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -53,7 +51,6 @@ typedef enum MountMode { PRIVATE_TMP, PRIVATE_VAR_TMP, PRIVATE_DEV, - PRIVATE_BUS_ENDPOINT, READWRITE } MountMode; @@ -270,78 +267,6 @@ fail: return r; } -static int mount_kdbus(BindMount *m) { - - char temporary_mount[] = "/tmp/kdbus-dev-XXXXXX"; - _cleanup_free_ char *basepath = NULL; - _cleanup_umask_ mode_t u; - char *busnode = NULL, *root; - struct stat st; - int r; - - assert(m); - - u = umask(0000); - - if (!mkdtemp(temporary_mount)) - return log_error_errno(errno, "Failed create temp dir: %m"); - - root = strjoina(temporary_mount, "/kdbus"); - (void) mkdir(root, 0755); - if (mount("tmpfs", root, "tmpfs", MS_NOSUID|MS_STRICTATIME, "mode=777") < 0) { - r = -errno; - goto fail; - } - - /* create a new /dev/null dev node copy so we have some fodder to - * bind-mount the custom endpoint over. */ - if (stat("/dev/null", &st) < 0) { - r = log_error_errno(errno, "Failed to stat /dev/null: %m"); - goto fail; - } - - busnode = strjoina(root, "/bus"); - if (mknod(busnode, (st.st_mode & ~07777) | 0600, st.st_rdev) < 0) { - r = log_error_errno(errno, "mknod() for %s failed: %m", - busnode); - goto fail; - } - - r = mount(m->path, busnode, NULL, MS_BIND, NULL); - if (r < 0) { - r = log_error_errno(errno, "bind mount of %s failed: %m", - m->path); - goto fail; - } - - basepath = dirname_malloc(m->path); - if (!basepath) { - r = -ENOMEM; - goto fail; - } - - if (mount(root, basepath, NULL, MS_MOVE, NULL) < 0) { - r = log_error_errno(errno, "bind mount of %s failed: %m", - basepath); - goto fail; - } - - rmdir(temporary_mount); - return 0; - -fail: - if (busnode) { - umount(busnode); - unlink(busnode); - } - - umount(root); - rmdir(root); - rmdir(temporary_mount); - - return r; -} - static int apply_mount( BindMount *m, const char *tmp_dir, @@ -381,9 +306,6 @@ static int apply_mount( case PRIVATE_DEV: return mount_dev(m); - case PRIVATE_BUS_ENDPOINT: - return mount_kdbus(m); - default: assert_not_reached("Unknown mode"); } @@ -424,7 +346,6 @@ int setup_namespace( char** inaccessible_dirs, const char* tmp_dir, const char* var_tmp_dir, - const char* bus_endpoint_path, bool private_dev, ProtectHome protect_home, ProtectSystem protect_system, @@ -440,7 +361,7 @@ int setup_namespace( if (unshare(CLONE_NEWNS) < 0) return -errno; - n = !!tmp_dir + !!var_tmp_dir + !!bus_endpoint_path + + n = !!tmp_dir + !!var_tmp_dir + strv_length(read_write_dirs) + strv_length(read_only_dirs) + strv_length(inaccessible_dirs) + @@ -481,12 +402,6 @@ int setup_namespace( m++; } - if (bus_endpoint_path) { - m->path = prefix_roota(root_directory, bus_endpoint_path); - m->mode = PRIVATE_BUS_ENDPOINT; - m++; - } - if (protect_home != PROTECT_HOME_NO) { const char *home_dir, *run_user_dir, *root_dir; diff --git a/src/core/namespace.h b/src/core/namespace.h index 00ab22bf2e..b54b7b47d6 100644 --- a/src/core/namespace.h +++ b/src/core/namespace.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** @@ -47,7 +45,6 @@ int setup_namespace(const char *chroot, char **inaccessible_dirs, const char *tmp_dir, const char *var_tmp_dir, - const char *endpoint_path, bool private_dev, ProtectHome protect_home, ProtectSystem protect_system, diff --git a/src/core/path.c b/src/core/path.c index e2d39eaa65..6ac9b8b90d 100644 --- a/src/core/path.c +++ b/src/core/path.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -466,6 +464,7 @@ static void path_enter_dead(Path *p, PathResult f) { static void path_enter_running(Path *p) { _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; + Unit *trigger; int r; assert(p); @@ -474,7 +473,14 @@ static void path_enter_running(Path *p) { if (unit_stop_pending(UNIT(p))) return; - r = manager_add_job(UNIT(p)->manager, JOB_START, UNIT_TRIGGER(UNIT(p)), JOB_REPLACE, &error, NULL); + trigger = UNIT_TRIGGER(UNIT(p)); + if (!trigger) { + log_unit_error(UNIT(p), "Unit to trigger vanished."); + path_enter_dead(p, PATH_FAILURE_RESOURCES); + return; + } + + r = manager_add_job(UNIT(p)->manager, JOB_START, trigger, JOB_REPLACE, &error, NULL); if (r < 0) goto fail; @@ -555,12 +561,16 @@ static void path_mkdir(Path *p) { static int path_start(Unit *u) { Path *p = PATH(u); + Unit *trigger; assert(p); assert(p->state == PATH_DEAD || p->state == PATH_FAILED); - if (UNIT_TRIGGER(u)->load_state != UNIT_LOADED) + trigger = UNIT_TRIGGER(u); + if (!trigger || trigger->load_state != UNIT_LOADED) { + log_unit_error(u, "Refusing to start, unit to trigger not loaded."); return -ENOENT; + } path_mkdir(p); diff --git a/src/core/path.h b/src/core/path.h index deb9bab1e5..bbbcebd78e 100644 --- a/src/core/path.h +++ b/src/core/path.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/scope.c b/src/core/scope.c index 1953af1f88..c5d0ecef04 100644 --- a/src/core/scope.c +++ b/src/core/scope.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -66,29 +64,27 @@ static void scope_done(Unit *u) { s->timer_event_source = sd_event_source_unref(s->timer_event_source); } -static int scope_arm_timer(Scope *s) { +static int scope_arm_timer(Scope *s, usec_t usec) { int r; assert(s); - if (s->timeout_stop_usec <= 0) { - s->timer_event_source = sd_event_source_unref(s->timer_event_source); - return 0; - } - if (s->timer_event_source) { - r = sd_event_source_set_time(s->timer_event_source, now(CLOCK_MONOTONIC) + s->timeout_stop_usec); + r = sd_event_source_set_time(s->timer_event_source, usec); if (r < 0) return r; return sd_event_source_set_enabled(s->timer_event_source, SD_EVENT_ONESHOT); } + if (usec == USEC_INFINITY) + return 0; + r = sd_event_add_time( UNIT(s)->manager->event, &s->timer_event_source, CLOCK_MONOTONIC, - now(CLOCK_MONOTONIC) + s->timeout_stop_usec, 0, + usec, 0, scope_dispatch_timer, s); if (r < 0) return r; @@ -190,20 +186,19 @@ static int scope_coldplug(Unit *u) { assert(s); assert(s->state == SCOPE_DEAD); - if (s->deserialized_state != s->state) { - - if (IN_SET(s->deserialized_state, SCOPE_STOP_SIGKILL, SCOPE_STOP_SIGTERM)) { - r = scope_arm_timer(s); - if (r < 0) - return r; - } - - if (!IN_SET(s->deserialized_state, SCOPE_DEAD, SCOPE_FAILED)) - unit_watch_all_pids(UNIT(s)); + if (s->deserialized_state == s->state) + return 0; - scope_set_state(s, s->deserialized_state); + if (IN_SET(s->deserialized_state, SCOPE_STOP_SIGKILL, SCOPE_STOP_SIGTERM)) { + r = scope_arm_timer(s, usec_add(u->state_change_timestamp.monotonic, s->timeout_stop_usec)); + if (r < 0) + return r; } + if (!IN_SET(s->deserialized_state, SCOPE_DEAD, SCOPE_FAILED)) + unit_watch_all_pids(UNIT(s)); + + scope_set_state(s, s->deserialized_state); return 0; } @@ -261,7 +256,7 @@ static void scope_enter_signal(Scope *s, ScopeState state, ScopeResult f) { r = 1; if (r > 0) { - r = scope_arm_timer(s); + r = scope_arm_timer(s, usec_add(now(CLOCK_MONOTONIC), s->timeout_stop_usec)); if (r < 0) goto fail; @@ -348,17 +343,21 @@ static int scope_kill(Unit *u, KillWho who, int signo, sd_bus_error *error) { return unit_kill_common(u, who, signo, -1, -1, error); } -static int scope_get_timeout(Unit *u, uint64_t *timeout) { +static int scope_get_timeout(Unit *u, usec_t *timeout) { Scope *s = SCOPE(u); + usec_t t; int r; if (!s->timer_event_source) return 0; - r = sd_event_source_get_time(s->timer_event_source, timeout); + r = sd_event_source_get_time(s->timer_event_source, &t); if (r < 0) return r; + if (t == USEC_INFINITY) + return 0; + *timeout = t; return 1; } diff --git a/src/core/scope.h b/src/core/scope.h index f838ee5357..2dc86325c5 100644 --- a/src/core/scope.h +++ b/src/core/scope.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/selinux-access.c b/src/core/selinux-access.c index 3f3c5bf9fc..2cdfcf7b5d 100644 --- a/src/core/selinux-access.c +++ b/src/core/selinux-access.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/core/selinux-access.h b/src/core/selinux-access.h index 3566ba529f..8f1f058a32 100644 --- a/src/core/selinux-access.h +++ b/src/core/selinux-access.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/selinux-setup.c b/src/core/selinux-setup.c index d4757e0853..9a115a4387 100644 --- a/src/core/selinux-setup.c +++ b/src/core/selinux-setup.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/core/selinux-setup.h b/src/core/selinux-setup.h index 9ac2276576..7b613249b0 100644 --- a/src/core/selinux-setup.h +++ b/src/core/selinux-setup.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/service.c b/src/core/service.c index 355de3e15d..ed24417859 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -112,14 +110,12 @@ static void service_init(Unit *u) { s->timeout_start_usec = u->manager->default_timeout_start_usec; s->timeout_stop_usec = u->manager->default_timeout_stop_usec; s->restart_usec = u->manager->default_restart_usec; + s->runtime_max_usec = USEC_INFINITY; s->type = _SERVICE_TYPE_INVALID; s->socket_fd = -1; - s->bus_endpoint_fd = -1; s->stdin_fd = s->stdout_fd = s->stderr_fd = -1; s->guess_main_pid = true; - RATELIMIT_INIT(s->start_limit, u->manager->default_start_limit_interval, u->manager->default_start_limit_burst); - s->control_command_id = _SERVICE_EXEC_COMMAND_INVALID; } @@ -216,7 +212,7 @@ static void service_start_watchdog(Service *s) { return; if (s->watchdog_event_source) { - r = sd_event_source_set_time(s->watchdog_event_source, s->watchdog_timestamp.monotonic + s->watchdog_usec); + r = sd_event_source_set_time(s->watchdog_event_source, usec_add(s->watchdog_timestamp.monotonic, s->watchdog_usec)); if (r < 0) { log_unit_warning_errno(UNIT(s), r, "Failed to reset watchdog timer: %m"); return; @@ -228,7 +224,7 @@ static void service_start_watchdog(Service *s) { UNIT(s)->manager->event, &s->watchdog_event_source, CLOCK_MONOTONIC, - s->watchdog_timestamp.monotonic + s->watchdog_usec, 0, + usec_add(s->watchdog_timestamp.monotonic, s->watchdog_usec), 0, service_dispatch_watchdog, s); if (r < 0) { log_unit_warning_errno(UNIT(s), r, "Failed to add watchdog timer: %m"); @@ -301,7 +297,6 @@ static void service_done(Unit *u) { s->pid_file = mfree(s->pid_file); s->status_text = mfree(s->status_text); - s->reboot_arg = mfree(s->reboot_arg); s->exec_runtime = exec_runtime_unref(s->exec_runtime); exec_command_free_array(s->exec_command, _SERVICE_EXEC_COMMAND_MAX); @@ -325,7 +320,6 @@ static void service_done(Unit *u) { s->bus_name_owner = mfree(s->bus_name_owner); - s->bus_endpoint_fd = safe_close(s->bus_endpoint_fd); service_close_socket_fd(s); service_connection_unref(s); @@ -433,18 +427,21 @@ static int service_arm_timer(Service *s, usec_t usec) { assert(s); if (s->timer_event_source) { - r = sd_event_source_set_time(s->timer_event_source, now(CLOCK_MONOTONIC) + usec); + r = sd_event_source_set_time(s->timer_event_source, usec); if (r < 0) return r; return sd_event_source_set_enabled(s->timer_event_source, SD_EVENT_ONESHOT); } + if (usec == USEC_INFINITY) + return 0; + r = sd_event_add_time( UNIT(s)->manager->event, &s->timer_event_source, CLOCK_MONOTONIC, - now(CLOCK_MONOTONIC) + usec, 0, + usec, 0, service_dispatch_timer, s); if (r < 0) return r; @@ -509,6 +506,9 @@ static int service_verify(Service *s) { if (!s->usb_function_descriptors && s->usb_function_strings) log_unit_warning(UNIT(s), "Service has USBFunctionStrings= setting, but no USBFunctionDescriptors=. Ignoring."); + if (s->runtime_max_usec != USEC_INFINITY && s->type == SERVICE_ONESHOT) + log_unit_warning(UNIT(s), "MaxRuntimeSec= has no effect in combination with Type=oneshot. Ignoring."); + return 0; } @@ -624,7 +624,7 @@ static int service_add_extras(Service *s) { /* Oneshot services have disabled start timeout by default */ if (s->type == SERVICE_ONESHOT && !s->start_timeout_defined) - s->timeout_start_usec = 0; + s->timeout_start_usec = USEC_INFINITY; service_fix_output(s); @@ -882,6 +882,7 @@ static void service_set_state(Service *s, ServiceState state) { if (!IN_SET(state, SERVICE_START_PRE, SERVICE_START, SERVICE_START_POST, + SERVICE_RUNNING, SERVICE_RELOAD, SERVICE_STOP, SERVICE_STOP_SIGABRT, SERVICE_STOP_SIGTERM, SERVICE_STOP_SIGKILL, SERVICE_STOP_POST, SERVICE_FINAL_SIGTERM, SERVICE_FINAL_SIGKILL, @@ -954,6 +955,37 @@ static void service_set_state(Service *s, ServiceState state) { unit_notify(UNIT(s), table[old_state], table[state], s->reload_result == SERVICE_SUCCESS); } +static usec_t service_coldplug_timeout(Service *s) { + assert(s); + + switch (s->deserialized_state) { + + case SERVICE_START_PRE: + case SERVICE_START: + case SERVICE_START_POST: + case SERVICE_RELOAD: + return usec_add(UNIT(s)->state_change_timestamp.monotonic, s->timeout_start_usec); + + case SERVICE_RUNNING: + return usec_add(UNIT(s)->active_enter_timestamp.monotonic, s->runtime_max_usec); + + case SERVICE_STOP: + case SERVICE_STOP_SIGABRT: + case SERVICE_STOP_SIGTERM: + case SERVICE_STOP_SIGKILL: + case SERVICE_STOP_POST: + case SERVICE_FINAL_SIGTERM: + case SERVICE_FINAL_SIGKILL: + return usec_add(UNIT(s)->state_change_timestamp.monotonic, s->timeout_stop_usec); + + case SERVICE_AUTO_RESTART: + return usec_add(UNIT(s)->inactive_enter_timestamp.monotonic, s->restart_usec); + + default: + return USEC_INFINITY; + } +} + static int service_coldplug(Unit *u) { Service *s = SERVICE(u); int r; @@ -964,31 +996,9 @@ static int service_coldplug(Unit *u) { if (s->deserialized_state == s->state) return 0; - if (IN_SET(s->deserialized_state, - SERVICE_START_PRE, SERVICE_START, SERVICE_START_POST, - SERVICE_RELOAD, - SERVICE_STOP, SERVICE_STOP_SIGABRT, SERVICE_STOP_SIGTERM, SERVICE_STOP_SIGKILL, SERVICE_STOP_POST, - SERVICE_FINAL_SIGTERM, SERVICE_FINAL_SIGKILL)) { - - usec_t k; - - k = IN_SET(s->deserialized_state, SERVICE_START_PRE, SERVICE_START, SERVICE_START_POST, SERVICE_RELOAD) ? s->timeout_start_usec : s->timeout_stop_usec; - - /* For the start/stop timeouts 0 means off */ - if (k > 0) { - r = service_arm_timer(s, k); - if (r < 0) - return r; - } - } - - if (s->deserialized_state == SERVICE_AUTO_RESTART) { - - /* The restart timeouts 0 means immediately */ - r = service_arm_timer(s, s->restart_usec); - if (r < 0) - return r; - } + r = service_arm_timer(s, service_coldplug_timeout(s)); + if (r < 0) + return r; if (s->main_pid > 0 && pid_is_unwaited(s->main_pid) && @@ -1145,7 +1155,6 @@ static int service_spawn( pid_t *_pid) { _cleanup_strv_free_ char **argv = NULL, **final_env = NULL, **our_env = NULL, **fd_names = NULL; - _cleanup_free_ char *bus_endpoint_path = NULL; _cleanup_free_ int *fds = NULL; unsigned n_fds = 0, n_env = 0; const char *path; @@ -1155,7 +1164,6 @@ static int service_spawn( .apply_permissions = apply_permissions, .apply_chroot = apply_chroot, .apply_tty_stdin = apply_tty_stdin, - .bus_endpoint_fd = -1, .stdin_fd = -1, .stdout_fd = -1, .stderr_fd = -1, @@ -1175,7 +1183,7 @@ static int service_spawn( r = unit_setup_exec_runtime(UNIT(s)); if (r < 0) - goto fail; + return r; if (pass_fds || s->exec_context.std_input == EXEC_INPUT_SOCKET || @@ -1184,55 +1192,42 @@ static int service_spawn( r = service_collect_fds(s, &fds, &fd_names); if (r < 0) - goto fail; + return r; n_fds = r; } - if (timeout > 0) { - r = service_arm_timer(s, timeout); - if (r < 0) - goto fail; - } else - s->timer_event_source = sd_event_source_unref(s->timer_event_source); + r = service_arm_timer(s, usec_add(now(CLOCK_MONOTONIC), timeout)); + if (r < 0) + return r; r = unit_full_printf_strv(UNIT(s), c->argv, &argv); if (r < 0) - goto fail; + return r; our_env = new0(char*, 6); - if (!our_env) { - r = -ENOMEM; - goto fail; - } + if (!our_env) + return -ENOMEM; if (is_control ? s->notify_access == NOTIFY_ALL : s->notify_access != NOTIFY_NONE) - if (asprintf(our_env + n_env++, "NOTIFY_SOCKET=%s", UNIT(s)->manager->notify_socket) < 0) { - r = -ENOMEM; - goto fail; - } + if (asprintf(our_env + n_env++, "NOTIFY_SOCKET=%s", UNIT(s)->manager->notify_socket) < 0) + return -ENOMEM; if (s->main_pid > 0) - if (asprintf(our_env + n_env++, "MAINPID="PID_FMT, s->main_pid) < 0) { - r = -ENOMEM; - goto fail; - } + if (asprintf(our_env + n_env++, "MAINPID="PID_FMT, s->main_pid) < 0) + return -ENOMEM; if (UNIT(s)->manager->running_as != MANAGER_SYSTEM) - if (asprintf(our_env + n_env++, "MANAGERPID="PID_FMT, getpid()) < 0) { - r = -ENOMEM; - goto fail; - } + if (asprintf(our_env + n_env++, "MANAGERPID="PID_FMT, getpid()) < 0) + return -ENOMEM; if (s->socket_fd >= 0) { union sockaddr_union sa; socklen_t salen = sizeof(sa); r = getpeername(s->socket_fd, &sa.sa, &salen); - if (r < 0) { - r = -errno; - goto fail; - } + if (r < 0) + return -errno; if (IN_SET(sa.sa.sa_family, AF_INET, AF_INET6)) { _cleanup_free_ char *addr = NULL; @@ -1241,34 +1236,26 @@ static int service_spawn( r = sockaddr_pretty(&sa.sa, salen, true, false, &addr); if (r < 0) - goto fail; + return r; t = strappend("REMOTE_ADDR=", addr); - if (!t) { - r = -ENOMEM; - goto fail; - } + if (!t) + return -ENOMEM; our_env[n_env++] = t; port = sockaddr_port(&sa.sa); - if (port < 0) { - r = port; - goto fail; - } + if (port < 0) + return port; - if (asprintf(&t, "REMOTE_PORT=%u", port) < 0) { - r = -ENOMEM; - goto fail; - } + if (asprintf(&t, "REMOTE_PORT=%u", port) < 0) + return -ENOMEM; our_env[n_env++] = t; } } final_env = strv_env_merge(2, UNIT(s)->manager->environment, our_env, NULL); - if (!final_env) { - r = -ENOMEM; - goto fail; - } + if (!final_env) + return -ENOMEM; if (is_control && UNIT(s)->cgroup_path) { path = strjoina(UNIT(s)->cgroup_path, "/control"); @@ -1276,18 +1263,6 @@ static int service_spawn( } else path = UNIT(s)->cgroup_path; - if (s->exec_context.bus_endpoint) { - r = bus_kernel_create_endpoint(UNIT(s)->manager->running_as == MANAGER_SYSTEM ? "system" : "user", - UNIT(s)->id, &bus_endpoint_path); - if (r < 0) - goto fail; - - /* Pass the fd to the exec_params so that the child process can upload the policy. - * Keep a reference to the fd in the service, so the endpoint is kept alive as long - * as the service is running. */ - exec_params.bus_endpoint_fd = s->bus_endpoint_fd = r; - } - exec_params.argv = argv; exec_params.fds = fds; exec_params.fd_names = fd_names; @@ -1299,7 +1274,6 @@ static int service_spawn( exec_params.cgroup_delegate = s->cgroup_context.delegate; exec_params.runtime_prefix = manager_get_runtime_prefix(UNIT(s)->manager); exec_params.watchdog_usec = s->watchdog_usec; - exec_params.bus_endpoint_path = bus_endpoint_path; exec_params.selinux_context_net = s->socket_fd_selinux_context_net; if (s->type == SERVICE_IDLE) exec_params.idle_pipe = UNIT(s)->manager->idle_pipe; @@ -1314,22 +1288,16 @@ static int service_spawn( s->exec_runtime, &pid); if (r < 0) - goto fail; + return r; r = unit_watch_pid(UNIT(s), pid); if (r < 0) /* FIXME: we need to do something here */ - goto fail; + return r; *_pid = pid; return 0; - -fail: - if (timeout) - s->timer_event_source = sd_event_source_unref(s->timer_event_source); - - return r; } static int main_pid_good(Service *s) { @@ -1432,12 +1400,12 @@ static void service_enter_dead(Service *s, ServiceResult f, bool allow_restart) if (s->result != SERVICE_SUCCESS) { log_unit_warning(UNIT(s), "Failed with result '%s'.", service_result_to_string(s->result)); - failure_action(UNIT(s)->manager, s->failure_action, s->reboot_arg); + failure_action(UNIT(s)->manager, s->failure_action, UNIT(s)->reboot_arg); } if (allow_restart && service_shall_restart(s)) { - r = service_arm_timer(s, s->restart_usec); + r = service_arm_timer(s, usec_add(now(CLOCK_MONOTONIC), s->restart_usec)); if (r < 0) goto fail; @@ -1458,7 +1426,7 @@ static void service_enter_dead(Service *s, ServiceResult f, bool allow_restart) * out-of-date, and some software might be confused by it, so * let's remove it. */ if (s->pid_file) - unlink_noerrno(s->pid_file); + (void) unlink(s->pid_file); return; @@ -1545,11 +1513,9 @@ static void service_enter_signal(Service *s, ServiceState state, ServiceResult f goto fail; if (r > 0) { - if (s->timeout_stop_usec > 0) { - r = service_arm_timer(s, s->timeout_stop_usec); - if (r < 0) - goto fail; - } + r = service_arm_timer(s, usec_add(now(CLOCK_MONOTONIC), s->timeout_stop_usec)); + if (r < 0) + goto fail; service_set_state(s, state); } else if (IN_SET(state, SERVICE_STOP_SIGABRT, SERVICE_STOP_SIGTERM) && s->kill_context.send_sigkill) @@ -1577,8 +1543,7 @@ static void service_enter_stop_by_notify(Service *s) { unit_watch_all_pids(UNIT(s)); - if (s->timeout_stop_usec > 0) - service_arm_timer(s, s->timeout_stop_usec); + service_arm_timer(s, usec_add(now(CLOCK_MONOTONIC), s->timeout_stop_usec)); /* The service told us it's stopping, so it's as if we SIGTERM'd it. */ service_set_state(s, SERVICE_STOP_SIGTERM); @@ -1648,6 +1613,8 @@ static void service_enter_running(Service *s, ServiceResult f) { if (f != SERVICE_SUCCESS) s->result = f; + service_unwatch_control_pid(s); + if (service_good(s)) { /* If there are any queued up sd_notify() @@ -1656,8 +1623,10 @@ static void service_enter_running(Service *s, ServiceResult f) { service_enter_reload_by_notify(s); else if (s->notify_state == NOTIFY_STOPPING) service_enter_stop_by_notify(s); - else + else { service_set_state(s, SERVICE_RUNNING); + service_arm_timer(s, usec_add(UNIT(s)->active_enter_timestamp.monotonic, s->runtime_max_usec)); + } } else if (s->remain_after_exit) service_set_state(s, SERVICE_EXITED); @@ -1711,6 +1680,7 @@ static void service_kill_control_processes(Service *s) { static void service_enter_start(Service *s) { ExecCommand *c; + usec_t timeout; pid_t pid; int r; @@ -1742,9 +1712,16 @@ static void service_enter_start(Service *s) { return; } + if (IN_SET(s->type, SERVICE_SIMPLE, SERVICE_IDLE)) + /* For simple + idle this is the main process. We don't apply any timeout here, but + * service_enter_running() will later apply the .runtime_max_usec timeout. */ + timeout = USEC_INFINITY; + else + timeout = s->timeout_start_usec; + r = service_spawn(s, c, - IN_SET(s->type, SERVICE_FORKING, SERVICE_DBUS, SERVICE_NOTIFY, SERVICE_ONESHOT) ? s->timeout_start_usec : 0, + timeout, true, true, true, @@ -1754,7 +1731,7 @@ static void service_enter_start(Service *s) { if (r < 0) goto fail; - if (s->type == SERVICE_SIMPLE || s->type == SERVICE_IDLE) { + if (IN_SET(s->type, SERVICE_SIMPLE, SERVICE_IDLE)) { /* For simple services we immediately start * the START_POST binaries. */ @@ -1769,9 +1746,7 @@ static void service_enter_start(Service *s) { s->control_pid = pid; service_set_state(s, SERVICE_START); - } else if (s->type == SERVICE_ONESHOT || - s->type == SERVICE_DBUS || - s->type == SERVICE_NOTIFY) { + } else if (IN_SET(s->type, SERVICE_ONESHOT, SERVICE_DBUS, SERVICE_NOTIFY)) { /* For oneshot services we wait until the start * process exited, too, but it is our main process. */ @@ -1840,7 +1815,7 @@ static void service_enter_restart(Service *s) { /* Don't restart things if we are going down anyway */ log_unit_info(UNIT(s), "Stop job pending for unit, delaying automatic restart."); - r = service_arm_timer(s, s->restart_usec); + r = service_arm_timer(s, usec_add(now(CLOCK_MONOTONIC), s->restart_usec)); if (r < 0) goto fail; @@ -1870,9 +1845,7 @@ fail: static void service_enter_reload_by_notify(Service *s) { assert(s); - if (s->timeout_start_usec > 0) - service_arm_timer(s, s->timeout_start_usec); - + service_arm_timer(s, usec_add(now(CLOCK_MONOTONIC), s->timeout_start_usec)); service_set_state(s, SERVICE_RELOAD); } @@ -1913,6 +1886,7 @@ fail: } static void service_run_next_control(Service *s) { + usec_t timeout; int r; assert(s); @@ -1924,9 +1898,14 @@ static void service_run_next_control(Service *s) { s->control_command = s->control_command->command_next; service_unwatch_control_pid(s); + if (IN_SET(s->state, SERVICE_START_PRE, SERVICE_START, SERVICE_START_POST, SERVICE_RUNNING, SERVICE_RELOAD)) + timeout = s->timeout_start_usec; + else + timeout = s->timeout_stop_usec; + r = service_spawn(s, s->control_command, - IN_SET(s->state, SERVICE_START_PRE, SERVICE_START, SERVICE_START_POST, SERVICE_RUNNING, SERVICE_RELOAD) ? s->timeout_start_usec : s->timeout_stop_usec, + timeout, false, !s->permissions_start_only, !s->root_directory_start_only, @@ -1988,20 +1967,8 @@ fail: service_enter_stop(s, SERVICE_FAILURE_RESOURCES); } -static int service_start_limit_test(Service *s) { - assert(s); - - if (ratelimit_test(&s->start_limit)) - return 0; - - log_unit_warning(UNIT(s), "Start request repeated too quickly."); - - return failure_action(UNIT(s)->manager, s->start_limit_action, s->reboot_arg); -} - static int service_start(Unit *u) { Service *s = SERVICE(u); - int r; assert(s); @@ -2028,13 +1995,6 @@ static int service_start(Unit *u) { assert(IN_SET(s->state, SERVICE_DEAD, SERVICE_FAILED)); - /* Make sure we don't enter a busy loop of some kind. */ - r = service_start_limit_test(s); - if (r < 0) { - service_enter_dead(s, SERVICE_FAILURE_START_LIMIT, false); - return r; - } - s->result = SERVICE_SUCCESS; s->reload_result = SERVICE_SUCCESS; s->main_pid_known = false; @@ -2149,9 +2109,6 @@ static int service_serialize(Unit *u, FILE *f, FDSet *fds) { r = unit_serialize_item_fd(u, f, fds, "socket-fd", s->socket_fd); if (r < 0) return r; - r = unit_serialize_item_fd(u, f, fds, "endpoint-fd", s->bus_endpoint_fd); - if (r < 0) - return r; LIST_FOREACH(fd_store, fs, s->fd_store) { _cleanup_free_ char *c = NULL; @@ -2286,15 +2243,6 @@ static int service_deserialize_item(Unit *u, const char *key, const char *value, asynchronous_close(s->socket_fd); s->socket_fd = fdset_remove(fds, fd); } - } else if (streq(key, "endpoint-fd")) { - int fd; - - if (safe_atoi(value, &fd) < 0 || fd < 0 || !fdset_contains(fds, fd)) - log_unit_debug(u, "Failed to parse endpoint-fd value: %s", value); - else { - safe_close(s->bus_endpoint_fd); - s->bus_endpoint_fd = fdset_remove(fds, fd); - } } else if (streq(key, "fd-store-fd")) { const char *fdv; size_t pf; @@ -2789,7 +2737,7 @@ static void service_sigchld_event(Unit *u, pid_t pid, int code, int status) { case SERVICE_START_POST: if (f != SERVICE_SUCCESS) { - service_enter_stop(s, f); + service_enter_signal(s, SERVICE_STOP_SIGTERM, f); break; } @@ -2879,12 +2827,16 @@ static int service_dispatch_timer(sd_event_source *source, usec_t usec, void *us case SERVICE_START_POST: log_unit_warning(UNIT(s), "Start-post operation timed out. Stopping."); + service_enter_signal(s, SERVICE_STOP_SIGTERM, SERVICE_FAILURE_TIMEOUT); + break; + + case SERVICE_RUNNING: + log_unit_warning(UNIT(s), "Service reached runtime time limit. Stopping."); service_enter_stop(s, SERVICE_FAILURE_TIMEOUT); break; case SERVICE_RELOAD: - log_unit_warning(UNIT(s), "Reload operation timed out. Stopping."); - service_unwatch_control_pid(s); + log_unit_warning(UNIT(s), "Reload operation timed out. Killing reload process."); service_kill_control_processes(s); s->reload_result = SERVICE_FAILURE_TIMEOUT; service_enter_running(s, SERVICE_SUCCESS); @@ -3106,17 +3058,21 @@ static void service_notify_message(Unit *u, pid_t pid, char **tags, FDSet *fds) unit_add_to_dbus_queue(u); } -static int service_get_timeout(Unit *u, uint64_t *timeout) { +static int service_get_timeout(Unit *u, usec_t *timeout) { Service *s = SERVICE(u); + uint64_t t; int r; if (!s->timer_event_source) return 0; - r = sd_event_source_get_time(s->timer_event_source, timeout); + r = sd_event_source_get_time(s->timer_event_source, &t); if (r < 0) return r; + if (t == USEC_INFINITY) + return 0; + *timeout = t; return 1; } @@ -3239,8 +3195,6 @@ static void service_reset_failed(Unit *u) { s->result = SERVICE_SUCCESS; s->reload_result = SERVICE_SUCCESS; - - RATELIMIT_RESET(s->start_limit); } static int service_kill(Unit *u, KillWho who, int signo, sd_bus_error *error) { @@ -3308,7 +3262,6 @@ static const char* const service_result_table[_SERVICE_RESULT_MAX] = { [SERVICE_FAILURE_SIGNAL] = "signal", [SERVICE_FAILURE_CORE_DUMP] = "core-dump", [SERVICE_FAILURE_WATCHDOG] = "watchdog", - [SERVICE_FAILURE_START_LIMIT] = "start-limit" }; DEFINE_STRING_TABLE_LOOKUP(service_result, ServiceResult); diff --git a/src/core/service.h b/src/core/service.h index 19efbccfc7..a5ced215e4 100644 --- a/src/core/service.h +++ b/src/core/service.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** @@ -88,7 +86,6 @@ typedef enum ServiceResult { SERVICE_FAILURE_SIGNAL, SERVICE_FAILURE_CORE_DUMP, SERVICE_FAILURE_WATCHDOG, - SERVICE_FAILURE_START_LIMIT, _SERVICE_RESULT_MAX, _SERVICE_RESULT_INVALID = -1 } ServiceResult; @@ -118,6 +115,7 @@ struct Service { usec_t restart_usec; usec_t timeout_start_usec; usec_t timeout_stop_usec; + usec_t runtime_max_usec; dual_timestamp watchdog_timestamp; usec_t watchdog_usec; @@ -152,8 +150,6 @@ struct Service { int socket_fd; bool socket_fd_selinux_context_net; - int bus_endpoint_fd; - bool permissions_start_only; bool root_directory_start_only; bool remain_after_exit; @@ -177,10 +173,7 @@ struct Service { char *status_text; int status_errno; - RateLimit start_limit; - FailureAction start_limit_action; FailureAction failure_action; - char *reboot_arg; UnitRef accept_socket; diff --git a/src/core/show-status.c b/src/core/show-status.c index e4e12a3365..59ebdc7219 100644 --- a/src/core/show-status.c +++ b/src/core/show-status.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/core/show-status.h b/src/core/show-status.h index c79d4acb66..9a29e72645 100644 --- a/src/core/show-status.h +++ b/src/core/show-status.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/shutdown.c b/src/core/shutdown.c index 3a95b5fd72..6296b4c94a 100644 --- a/src/core/shutdown.c +++ b/src/core/shutdown.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/core/slice.c b/src/core/slice.c index 06ac6f8450..d65364c6f4 100644 --- a/src/core/slice.c +++ b/src/core/slice.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/core/slice.h b/src/core/slice.h index 0c356651e3..c9f3f61067 100644 --- a/src/core/slice.h +++ b/src/core/slice.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/smack-setup.c b/src/core/smack-setup.c index c9374ca0e8..0c26e85460 100644 --- a/src/core/smack-setup.c +++ b/src/core/smack-setup.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/core/smack-setup.h b/src/core/smack-setup.h index 1cab7718ff..78164c85e6 100644 --- a/src/core/smack-setup.h +++ b/src/core/smack-setup.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/socket.c b/src/core/socket.c index 2e4173aabc..a1cb54d77a 100644 --- a/src/core/socket.c +++ b/src/core/socket.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -170,29 +168,27 @@ static void socket_done(Unit *u) { s->timer_event_source = sd_event_source_unref(s->timer_event_source); } -static int socket_arm_timer(Socket *s) { +static int socket_arm_timer(Socket *s, usec_t usec) { int r; assert(s); - if (s->timeout_usec <= 0) { - s->timer_event_source = sd_event_source_unref(s->timer_event_source); - return 0; - } - if (s->timer_event_source) { - r = sd_event_source_set_time(s->timer_event_source, now(CLOCK_MONOTONIC) + s->timeout_usec); + r = sd_event_source_set_time(s->timer_event_source, usec); if (r < 0) return r; return sd_event_source_set_enabled(s->timer_event_source, SD_EVENT_ONESHOT); } + if (usec == USEC_INFINITY) + return 0; + r = sd_event_add_time( UNIT(s)->manager->event, &s->timer_event_source, CLOCK_MONOTONIC, - now(CLOCK_MONOTONIC) + s->timeout_usec, 0, + usec, 0, socket_dispatch_timer, s); if (r < 0) return r; @@ -1494,7 +1490,7 @@ static int socket_coldplug(Unit *u) { if (r < 0) return r; - r = socket_arm_timer(s); + r = socket_arm_timer(s, usec_add(u->state_change_timestamp.monotonic, s->timeout_usec)); if (r < 0) return r; } @@ -1507,6 +1503,7 @@ static int socket_coldplug(Unit *u) { SOCKET_STOP_PRE, SOCKET_STOP_PRE_SIGTERM, SOCKET_STOP_PRE_SIGKILL)) { + r = socket_open_fds(s); if (r < 0) return r; @@ -1530,7 +1527,6 @@ static int socket_spawn(Socket *s, ExecCommand *c, pid_t *_pid) { .apply_permissions = true, .apply_chroot = true, .apply_tty_stdin = true, - .bus_endpoint_fd = -1, .stdin_fd = -1, .stdout_fd = -1, .stderr_fd = -1, @@ -1548,15 +1544,15 @@ static int socket_spawn(Socket *s, ExecCommand *c, pid_t *_pid) { r = unit_setup_exec_runtime(UNIT(s)); if (r < 0) - goto fail; + return r; - r = socket_arm_timer(s); + r = socket_arm_timer(s, usec_add(now(CLOCK_MONOTONIC), s->timeout_usec)); if (r < 0) - goto fail; + return r; r = unit_full_printf_strv(UNIT(s), c->argv, &argv); if (r < 0) - goto fail; + return r; exec_params.argv = argv; exec_params.environment = UNIT(s)->manager->environment; @@ -1573,26 +1569,22 @@ static int socket_spawn(Socket *s, ExecCommand *c, pid_t *_pid) { s->exec_runtime, &pid); if (r < 0) - goto fail; + return r; r = unit_watch_pid(UNIT(s), pid); if (r < 0) /* FIXME: we need to do something here */ - goto fail; + return r; *_pid = pid; return 0; - -fail: - s->timer_event_source = sd_event_source_unref(s->timer_event_source); - return r; } static int socket_chown(Socket *s, pid_t *_pid) { pid_t pid; int r; - r = socket_arm_timer(s); + r = socket_arm_timer(s, usec_add(now(CLOCK_MONOTONIC), s->timeout_usec)); if (r < 0) goto fail; @@ -1735,7 +1727,7 @@ static void socket_enter_signal(Socket *s, SocketState state, SocketResult f) { goto fail; if (r > 0) { - r = socket_arm_timer(s); + r = socket_arm_timer(s, usec_add(now(CLOCK_MONOTONIC), s->timeout_usec)); if (r < 0) goto fail; @@ -2707,23 +2699,6 @@ static void socket_reset_failed(Unit *u) { s->result = SOCKET_SUCCESS; } -static void socket_notify_service_dead(Socket *s, bool failed_permanent) { - assert(s); - - /* The service is dead. Dang! - * - * This is strictly for one-instance-for-all-connections - * services. */ - - if (s->state == SOCKET_RUNNING) { - log_unit_debug(UNIT(s), "Got notified about service death (failed permanently: %s)", yes_no(failed_permanent)); - if (failed_permanent) - socket_enter_stop_pre(s, SOCKET_FAILURE_SERVICE_FAILED_PERMANENT); - else - socket_enter_listening(s); - } -} - void socket_connection_unref(Socket *s) { assert(s); @@ -2740,34 +2715,30 @@ void socket_connection_unref(Socket *s) { static void socket_trigger_notify(Unit *u, Unit *other) { Socket *s = SOCKET(u); - Service *se; assert(u); assert(other); /* Don't propagate state changes from the service if we are already down or accepting connections */ - if ((s->state != SOCKET_RUNNING && - s->state != SOCKET_LISTENING) || - s->accept) + if (!IN_SET(s->state, SOCKET_RUNNING, SOCKET_LISTENING) || s->accept) return; - if (other->load_state != UNIT_LOADED || - other->type != UNIT_SERVICE) + if (other->start_limit_hit) { + socket_enter_stop_pre(s, SOCKET_FAILURE_SERVICE_START_LIMIT_HIT); return; + } - se = SERVICE(other); - - if (se->state == SERVICE_FAILED) - socket_notify_service_dead(s, se->result == SERVICE_FAILURE_START_LIMIT); + if (other->load_state != UNIT_LOADED || other->type != UNIT_SERVICE) + return; - if (se->state == SERVICE_DEAD || - se->state == SERVICE_FINAL_SIGTERM || - se->state == SERVICE_FINAL_SIGKILL || - se->state == SERVICE_AUTO_RESTART) - socket_notify_service_dead(s, false); + if (IN_SET(SERVICE(other)->state, + SERVICE_DEAD, SERVICE_FAILED, + SERVICE_FINAL_SIGTERM, SERVICE_FINAL_SIGKILL, + SERVICE_AUTO_RESTART)) + socket_enter_listening(s); - if (se->state == SERVICE_RUNNING) + if (SERVICE(other)->state == SERVICE_RUNNING) socket_set_state(s, SOCKET_RUNNING); } @@ -2775,17 +2746,21 @@ static int socket_kill(Unit *u, KillWho who, int signo, sd_bus_error *error) { return unit_kill_common(u, who, signo, -1, SOCKET(u)->control_pid, error); } -static int socket_get_timeout(Unit *u, uint64_t *timeout) { +static int socket_get_timeout(Unit *u, usec_t *timeout) { Socket *s = SOCKET(u); + usec_t t; int r; if (!s->timer_event_source) return 0; - r = sd_event_source_get_time(s->timer_event_source, timeout); + r = sd_event_source_get_time(s->timer_event_source, &t); if (r < 0) return r; + if (t == USEC_INFINITY) + return 0; + *timeout = t; return 1; } @@ -2819,7 +2794,7 @@ static const char* const socket_result_table[_SOCKET_RESULT_MAX] = { [SOCKET_FAILURE_EXIT_CODE] = "exit-code", [SOCKET_FAILURE_SIGNAL] = "signal", [SOCKET_FAILURE_CORE_DUMP] = "core-dump", - [SOCKET_FAILURE_SERVICE_FAILED_PERMANENT] = "service-failed-permanent" + [SOCKET_FAILURE_SERVICE_START_LIMIT_HIT] = "service-start-limit-hit" }; DEFINE_STRING_TABLE_LOOKUP(socket_result, SocketResult); diff --git a/src/core/socket.h b/src/core/socket.h index 08033287a6..b537b026a7 100644 --- a/src/core/socket.h +++ b/src/core/socket.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** @@ -54,7 +52,7 @@ typedef enum SocketResult { SOCKET_FAILURE_EXIT_CODE, SOCKET_FAILURE_SIGNAL, SOCKET_FAILURE_CORE_DUMP, - SOCKET_FAILURE_SERVICE_FAILED_PERMANENT, + SOCKET_FAILURE_SERVICE_START_LIMIT_HIT, _SOCKET_RESULT_MAX, _SOCKET_RESULT_INVALID = -1 } SocketResult; diff --git a/src/core/swap.c b/src/core/swap.c index 5568898bd7..11506d9ecb 100644 --- a/src/core/swap.c +++ b/src/core/swap.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -160,29 +158,27 @@ static void swap_done(Unit *u) { s->timer_event_source = sd_event_source_unref(s->timer_event_source); } -static int swap_arm_timer(Swap *s) { +static int swap_arm_timer(Swap *s, usec_t usec) { int r; assert(s); - if (s->timeout_usec <= 0) { - s->timer_event_source = sd_event_source_unref(s->timer_event_source); - return 0; - } - if (s->timer_event_source) { - r = sd_event_source_set_time(s->timer_event_source, now(CLOCK_MONOTONIC) + s->timeout_usec); + r = sd_event_source_set_time(s->timer_event_source, usec); if (r < 0) return r; return sd_event_source_set_enabled(s->timer_event_source, SD_EVENT_ONESHOT); } + if (usec == USEC_INFINITY) + return 0; + r = sd_event_add_time( UNIT(s)->manager->event, &s->timer_event_source, CLOCK_MONOTONIC, - now(CLOCK_MONOTONIC) + s->timeout_usec, 0, + usec, 0, swap_dispatch_timer, s); if (r < 0) return r; @@ -552,7 +548,7 @@ static int swap_coldplug(Unit *u) { if (r < 0) return r; - r = swap_arm_timer(s); + r = swap_arm_timer(s, usec_add(u->state_change_timestamp.monotonic, s->timeout_usec)); if (r < 0) return r; } @@ -613,7 +609,6 @@ static int swap_spawn(Swap *s, ExecCommand *c, pid_t *_pid) { .apply_permissions = true, .apply_chroot = true, .apply_tty_stdin = true, - .bus_endpoint_fd = -1, .stdin_fd = -1, .stdout_fd = -1, .stderr_fd = -1, @@ -633,7 +628,7 @@ static int swap_spawn(Swap *s, ExecCommand *c, pid_t *_pid) { if (r < 0) goto fail; - r = swap_arm_timer(s); + r = swap_arm_timer(s, usec_add(now(CLOCK_MONOTONIC), s->timeout_usec)); if (r < 0) goto fail; @@ -710,7 +705,7 @@ static void swap_enter_signal(Swap *s, SwapState state, SwapResult f) { goto fail; if (r > 0) { - r = swap_arm_timer(s); + r = swap_arm_timer(s, usec_add(now(CLOCK_MONOTONIC), s->timeout_usec)); if (r < 0) goto fail; @@ -1398,17 +1393,21 @@ static int swap_kill(Unit *u, KillWho who, int signo, sd_bus_error *error) { return unit_kill_common(u, who, signo, -1, SWAP(u)->control_pid, error); } -static int swap_get_timeout(Unit *u, uint64_t *timeout) { +static int swap_get_timeout(Unit *u, usec_t *timeout) { Swap *s = SWAP(u); + usec_t t; int r; if (!s->timer_event_source) return 0; - r = sd_event_source_get_time(s->timer_event_source, timeout); + r = sd_event_source_get_time(s->timer_event_source, &t); if (r < 0) return r; + if (t == USEC_INFINITY) + return 0; + *timeout = t; return 1; } diff --git a/src/core/swap.h b/src/core/swap.h index 303b926568..ac7a63d81b 100644 --- a/src/core/swap.h +++ b/src/core/swap.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/target.c b/src/core/target.c index 14f9b2e26a..61a91aad07 100644 --- a/src/core/target.c +++ b/src/core/target.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/core/target.h b/src/core/target.h index 3cc6c07bfa..339aea154e 100644 --- a/src/core/target.h +++ b/src/core/target.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/timer.c b/src/core/timer.c index a3c8ac72e8..6f3e6a8db3 100644 --- a/src/core/timer.c +++ b/src/core/timer.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -359,8 +357,18 @@ static void timer_enter_waiting(Timer *t, bool initial) { usec_t base = 0; bool leave_around = false; TimerValue *v; + Unit *trigger; int r; + assert(t); + + trigger = UNIT_TRIGGER(UNIT(t)); + if (!trigger) { + log_unit_error(UNIT(t), "Unit to trigger vanished."); + timer_enter_dead(t, TIMER_FAILURE_RESOURCES); + return; + } + /* If we shall wake the system we use the boottime clock * rather than the monotonic clock. */ @@ -419,7 +427,7 @@ static void timer_enter_waiting(Timer *t, bool initial) { case TIMER_UNIT_ACTIVE: leave_around = true; - base = UNIT_TRIGGER(UNIT(t))->inactive_exit_timestamp.monotonic; + base = trigger->inactive_exit_timestamp.monotonic; if (base <= 0) base = t->last_trigger.monotonic; @@ -431,7 +439,7 @@ static void timer_enter_waiting(Timer *t, bool initial) { case TIMER_UNIT_INACTIVE: leave_around = true; - base = UNIT_TRIGGER(UNIT(t))->inactive_enter_timestamp.monotonic; + base = trigger->inactive_enter_timestamp.monotonic; if (base <= 0) base = t->last_trigger.monotonic; @@ -554,6 +562,7 @@ fail: static void timer_enter_running(Timer *t) { _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; + Unit *trigger; int r; assert(t); @@ -562,7 +571,14 @@ static void timer_enter_running(Timer *t) { if (unit_stop_pending(UNIT(t))) return; - r = manager_add_job(UNIT(t)->manager, JOB_START, UNIT_TRIGGER(UNIT(t)), JOB_REPLACE, &error, NULL); + trigger = UNIT_TRIGGER(UNIT(t)); + if (!trigger) { + log_unit_error(UNIT(t), "Unit to trigger vanished."); + timer_enter_dead(t, TIMER_FAILURE_RESOURCES); + return; + } + + r = manager_add_job(UNIT(t)->manager, JOB_START, trigger, JOB_REPLACE, &error, NULL); if (r < 0) goto fail; @@ -582,12 +598,16 @@ fail: static int timer_start(Unit *u) { Timer *t = TIMER(u); TimerValue *v; + Unit *trigger; assert(t); assert(t->state == TIMER_DEAD || t->state == TIMER_FAILED); - if (UNIT_TRIGGER(u)->load_state != UNIT_LOADED) + trigger = UNIT_TRIGGER(u); + if (!trigger || trigger->load_state != UNIT_LOADED) { + log_unit_error(u, "Refusing to start, unit to trigger not loaded."); return -ENOENT; + } t->last_trigger = DUAL_TIMESTAMP_NULL; diff --git a/src/core/timer.h b/src/core/timer.h index 0599f07818..698e6da2f5 100644 --- a/src/core/timer.h +++ b/src/core/timer.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/transaction.c b/src/core/transaction.c index 0d53e4bac0..b28fc76785 100644 --- a/src/core/transaction.c +++ b/src/core/transaction.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -912,7 +910,7 @@ int transaction_add_job_and_dependencies( SET_FOREACH(dep, ret->unit->dependencies[UNIT_REQUIRES], i) { r = transaction_add_job_and_dependencies(tr, JOB_START, dep, ret, true, false, false, ignore_order, e); if (r < 0) { - if (r != -EBADR) + if (r != -EBADR) /* job type not applicable */ goto fail; sd_bus_error_free(e); @@ -922,7 +920,7 @@ int transaction_add_job_and_dependencies( SET_FOREACH(dep, ret->unit->dependencies[UNIT_BINDS_TO], i) { r = transaction_add_job_and_dependencies(tr, JOB_START, dep, ret, true, false, false, ignore_order, e); if (r < 0) { - if (r != -EBADR) + if (r != -EBADR) /* job type not applicable */ goto fail; sd_bus_error_free(e); @@ -932,9 +930,9 @@ int transaction_add_job_and_dependencies( SET_FOREACH(dep, ret->unit->dependencies[UNIT_WANTS], i) { r = transaction_add_job_and_dependencies(tr, JOB_START, dep, ret, false, false, false, ignore_order, e); if (r < 0) { - /* unit masked and unit not found are not considered as errors. */ + /* unit masked, job type not applicable and unit not found are not considered as errors. */ log_unit_full(dep, - r == -EBADR || r == -ENOENT ? LOG_DEBUG : LOG_WARNING, + IN_SET(r, -ESHUTDOWN, -EBADR, -ENOENT) ? LOG_DEBUG : LOG_WARNING, r, "Cannot add dependency job, ignoring: %s", bus_error_message(e, r)); sd_bus_error_free(e); @@ -944,7 +942,7 @@ int transaction_add_job_and_dependencies( SET_FOREACH(dep, ret->unit->dependencies[UNIT_REQUISITE], i) { r = transaction_add_job_and_dependencies(tr, JOB_VERIFY_ACTIVE, dep, ret, true, false, false, ignore_order, e); if (r < 0) { - if (r != -EBADR) + if (r != -EBADR) /* job type not applicable */ goto fail; sd_bus_error_free(e); @@ -954,7 +952,7 @@ int transaction_add_job_and_dependencies( SET_FOREACH(dep, ret->unit->dependencies[UNIT_CONFLICTS], i) { r = transaction_add_job_and_dependencies(tr, JOB_STOP, dep, ret, true, true, false, ignore_order, e); if (r < 0) { - if (r != -EBADR) + if (r != -EBADR) /* job type not applicable */ goto fail; sd_bus_error_free(e); @@ -999,7 +997,7 @@ int transaction_add_job_and_dependencies( r = transaction_add_job_and_dependencies(tr, nt, dep, ret, true, false, false, ignore_order, e); if (r < 0) { - if (r != -EBADR) + if (r != -EBADR) /* job type not applicable */ goto fail; sd_bus_error_free(e); diff --git a/src/core/transaction.h b/src/core/transaction.h index 5c4a13edab..6a3f927b0f 100644 --- a/src/core/transaction.h +++ b/src/core/transaction.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/umount.c b/src/core/umount.c index 9d1f7660db..a458768e7d 100644 --- a/src/core/umount.c +++ b/src/core/umount.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/core/umount.h b/src/core/umount.h index 8439ffe58f..4e2215a47d 100644 --- a/src/core/umount.h +++ b/src/core/umount.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/unit-printf.c b/src/core/unit-printf.c index f587a5a141..fc057d965c 100644 --- a/src/core/unit-printf.c +++ b/src/core/unit-printf.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/core/unit-printf.h b/src/core/unit-printf.h index 51acad63e9..4fc8531228 100644 --- a/src/core/unit-printf.h +++ b/src/core/unit-printf.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/core/unit.c b/src/core/unit.c index b6fbf4e785..3c4f85e744 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -99,7 +97,9 @@ Unit *unit_new(Manager *m, size_t size) { u->unit_file_preset = -1; u->on_failure_job_mode = JOB_REPLACE; u->cgroup_inotify_wd = -1; + u->job_timeout = USEC_INFINITY; + RATELIMIT_INIT(u->start_limit, m->default_start_limit_interval, m->default_start_limit_burst); RATELIMIT_INIT(u->auto_stop_ratelimit, 10 * USEC_PER_SEC, 16); return u; @@ -458,7 +458,6 @@ static void unit_free_requires_mounts_for(Unit *u) { static void unit_done(Unit *u) { ExecContext *ec; CGroupContext *cc; - int r; assert(u); @@ -475,10 +474,6 @@ static void unit_done(Unit *u) { cc = unit_get_cgroup_context(u); if (cc) cgroup_context_done(cc); - - r = unit_remove_from_netclass_cgroup(u); - if (r < 0) - log_warning_errno(r, "Unable to remove unit from netclass group: %m"); } void unit_free(Unit *u) { @@ -558,6 +553,8 @@ void unit_free(Unit *u) { condition_free_list(u->conditions); condition_free_list(u->asserts); + free(u->reboot_arg); + unit_ref_unset(&u->slice); while (u->refs) @@ -869,6 +866,7 @@ void unit_dump(Unit *u, FILE *f, const char *prefix) { Iterator i; const char *prefix2; char + timestamp0[FORMAT_TIMESTAMP_MAX], timestamp1[FORMAT_TIMESTAMP_MAX], timestamp2[FORMAT_TIMESTAMP_MAX], timestamp3[FORMAT_TIMESTAMP_MAX], @@ -890,6 +888,7 @@ void unit_dump(Unit *u, FILE *f, const char *prefix) { "%s\tInstance: %s\n" "%s\tUnit Load State: %s\n" "%s\tUnit Active State: %s\n" + "%s\tState Change Timestamp: %s\n" "%s\tInactive Exit Timestamp: %s\n" "%s\tActive Enter Timestamp: %s\n" "%s\tActive Exit Timestamp: %s\n" @@ -907,6 +906,7 @@ void unit_dump(Unit *u, FILE *f, const char *prefix) { prefix, strna(u->instance), prefix, unit_load_state_to_string(u->load_state), prefix, unit_active_state_to_string(unit_active_state(u)), + prefix, strna(format_timestamp(timestamp0, sizeof(timestamp0), u->state_change_timestamp.realtime)), prefix, strna(format_timestamp(timestamp1, sizeof(timestamp1), u->inactive_exit_timestamp.realtime)), prefix, strna(format_timestamp(timestamp2, sizeof(timestamp2), u->active_enter_timestamp.realtime)), prefix, strna(format_timestamp(timestamp3, sizeof(timestamp3), u->active_exit_timestamp.realtime)), @@ -947,7 +947,7 @@ void unit_dump(Unit *u, FILE *f, const char *prefix) { STRV_FOREACH(j, u->dropin_paths) fprintf(f, "%s\tDropIn Path: %s\n", prefix, *j); - if (u->job_timeout > 0) + if (u->job_timeout != USEC_INFINITY) fprintf(f, "%s\tJob Timeout: %s\n", prefix, format_timespan(timespan, sizeof(timespan), u->job_timeout, 0)); if (u->job_timeout_action != FAILURE_ACTION_NONE) @@ -1258,14 +1258,6 @@ int unit_load(Unit *u) { } unit_update_cgroup_members_masks(u); - - /* If we are reloading, we need to wait for the deserializer - * to restore the net_cls ids that have been set previously */ - if (u->manager->n_reloading <= 0) { - r = unit_add_to_netclass_cgroup(u); - if (r < 0) - return r; - } } assert((u->load_state != UNIT_MERGED) == !u->merged_into); @@ -1442,23 +1434,36 @@ void unit_status_emit_starting_stopping_reloading(Unit *u, JobType t) { unit_status_print_starting_stopping(u, t); } +static int unit_start_limit_test(Unit *u) { + assert(u); + + if (ratelimit_test(&u->start_limit)) { + u->start_limit_hit = false; + return 0; + } + + log_unit_warning(u, "Start request repeated too quickly."); + u->start_limit_hit = true; + + return failure_action(u->manager, u->start_limit_action, u->reboot_arg); +} + /* Errors: - * -EBADR: This unit type does not support starting. - * -EALREADY: Unit is already started. - * -EAGAIN: An operation is already in progress. Retry later. - * -ECANCELED: Too many requests for now. - * -EPROTO: Assert failed + * -EBADR: This unit type does not support starting. + * -EALREADY: Unit is already started. + * -EAGAIN: An operation is already in progress. Retry later. + * -ECANCELED: Too many requests for now. + * -EPROTO: Assert failed + * -EINVAL: Unit not loaded + * -EOPNOTSUPP: Unit type not supported */ int unit_start(Unit *u) { UnitActiveState state; Unit *following; + int r; assert(u); - /* Units that aren't loaded cannot be started */ - if (u->load_state != UNIT_LOADED) - return -EINVAL; - /* If this is already started, then this will succeed. Note * that this will even succeed if this unit is not startable * by the user. This is relied on to detect when we need to @@ -1467,6 +1472,15 @@ int unit_start(Unit *u) { if (UNIT_IS_ACTIVE_OR_RELOADING(state)) return -EALREADY; + /* Make sure we don't enter a busy loop of some kind. */ + r = unit_start_limit_test(u); + if (r < 0) + return r; + + /* Units that aren't loaded cannot be started */ + if (u->load_state != UNIT_LOADED) + return -EINVAL; + /* If the conditions failed, don't do anything at all. If we * already are activating this call might still be useful to * speed up activation in case there is some hold-off time, @@ -1821,19 +1835,17 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_su /* Update timestamps for state changes */ if (m->n_reloading <= 0) { - dual_timestamp ts; - - dual_timestamp_get(&ts); + dual_timestamp_get(&u->state_change_timestamp); if (UNIT_IS_INACTIVE_OR_FAILED(os) && !UNIT_IS_INACTIVE_OR_FAILED(ns)) - u->inactive_exit_timestamp = ts; + u->inactive_exit_timestamp = u->state_change_timestamp; else if (!UNIT_IS_INACTIVE_OR_FAILED(os) && UNIT_IS_INACTIVE_OR_FAILED(ns)) - u->inactive_enter_timestamp = ts; + u->inactive_enter_timestamp = u->state_change_timestamp; if (!UNIT_IS_ACTIVE_OR_RELOADING(os) && UNIT_IS_ACTIVE_OR_RELOADING(ns)) - u->active_enter_timestamp = ts; + u->active_enter_timestamp = u->state_change_timestamp; else if (UNIT_IS_ACTIVE_OR_RELOADING(os) && !UNIT_IS_ACTIVE_OR_RELOADING(ns)) - u->active_exit_timestamp = ts; + u->active_exit_timestamp = u->state_change_timestamp; } /* Keep track of failed units */ @@ -2553,10 +2565,13 @@ int unit_serialize(Unit *u, FILE *f, FDSet *fds, bool serialize_jobs) { } } + dual_timestamp_serialize(f, "state-change-timestamp", &u->state_change_timestamp); + dual_timestamp_serialize(f, "inactive-exit-timestamp", &u->inactive_exit_timestamp); dual_timestamp_serialize(f, "active-enter-timestamp", &u->active_enter_timestamp); dual_timestamp_serialize(f, "active-exit-timestamp", &u->active_exit_timestamp); dual_timestamp_serialize(f, "inactive-enter-timestamp", &u->inactive_enter_timestamp); + dual_timestamp_serialize(f, "condition-timestamp", &u->condition_timestamp); dual_timestamp_serialize(f, "assert-timestamp", &u->assert_timestamp); @@ -2573,9 +2588,6 @@ int unit_serialize(Unit *u, FILE *f, FDSet *fds, bool serialize_jobs) { unit_serialize_item(u, f, "cgroup", u->cgroup_path); unit_serialize_item(u, f, "cgroup-realized", yes_no(u->cgroup_realized)); - if (u->cgroup_netclass_id) - unit_serialize_item_format(u, f, "netclass-id", "%" PRIu32, u->cgroup_netclass_id); - if (serialize_jobs) { if (u->job) { fprintf(f, "job\n"); @@ -2695,7 +2707,7 @@ int unit_deserialize(Unit *u, FILE *f, FDSet *fds) { /* End marker */ if (isempty(l)) - return 0; + break; k = strcspn(l, "="); @@ -2735,6 +2747,9 @@ int unit_deserialize(Unit *u, FILE *f, FDSet *fds) { } else /* legacy for pre-44 */ log_unit_warning(u, "Update from too old systemd versions are unsupported, cannot deserialize job: %s", v); continue; + } else if (streq(l, "state-change-timestamp")) { + dual_timestamp_deserialize(v, &u->state_change_timestamp); + continue; } else if (streq(l, "inactive-exit-timestamp")) { dual_timestamp_deserialize(v, &u->inactive_exit_timestamp); continue; @@ -2810,17 +2825,6 @@ int unit_deserialize(Unit *u, FILE *f, FDSet *fds) { u->cgroup_realized = b; continue; - } else if (streq(l, "netclass-id")) { - r = safe_atou32(v, &u->cgroup_netclass_id); - if (r < 0) - log_unit_debug(u, "Failed to parse netclass ID %s, ignoring.", v); - else { - r = unit_add_to_netclass_cgroup(u); - if (r < 0) - log_unit_debug_errno(u, r, "Failed to add unit to netclass cgroup, ignoring: %m"); - } - - continue; } if (unit_can_serialize(u)) { @@ -2841,6 +2845,15 @@ int unit_deserialize(Unit *u, FILE *f, FDSet *fds) { log_unit_warning(u, "Failed to deserialize unit parameter '%s', ignoring.", l); } } + + /* Versions before 228 did not carry a state change timestamp. In this case, take the current time. This is + * useful, so that timeouts based on this timestamp don't trigger too early, and is in-line with the logic from + * before 228 where the base for timeouts was not persistent across reboots. */ + + if (!dual_timestamp_is_set(&u->state_change_timestamp)) + dual_timestamp_get(&u->state_change_timestamp); + + return 0; } int unit_add_node_link(Unit *u, const char *what, bool wants, UnitDependency dep) { @@ -2971,6 +2984,9 @@ void unit_reset_failed(Unit *u) { if (UNIT_VTABLE(u)->reset_failed) UNIT_VTABLE(u)->reset_failed(u); + + RATELIMIT_RESET(u->start_limit); + u->start_limit_hit = false; } Unit *unit_following(Unit *u) { diff --git a/src/core/unit.h b/src/core/unit.h index 3eb3484fb7..601e763ce2 100644 --- a/src/core/unit.h +++ b/src/core/unit.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** @@ -121,6 +119,10 @@ struct Unit { dual_timestamp condition_timestamp; dual_timestamp assert_timestamp; + /* Updated whenever the low-level state changes */ + dual_timestamp state_change_timestamp; + + /* Updated whenever the (high-level) active state enters or leaves the active or inactive states */ dual_timestamp inactive_exit_timestamp; dual_timestamp active_enter_timestamp; dual_timestamp active_exit_timestamp; @@ -163,6 +165,11 @@ struct Unit { /* Error code when we didn't manage to load the unit (negative) */ int load_error; + /* Put a ratelimit on unit starting */ + RateLimit start_limit; + FailureAction start_limit_action; + char *reboot_arg; + /* Make sure we never enter endless loops with the check unneeded logic, or the BindsTo= logic */ RateLimit auto_stop_ratelimit; @@ -226,6 +233,8 @@ struct Unit { bool cgroup_members_mask_valid:1; bool cgroup_subtree_mask_valid:1; + bool start_limit_hit:1; + /* Did we already invoke unit_coldplug() for this unit? */ bool coldplugged:1; }; @@ -375,7 +384,8 @@ struct UnitVTable { /* Called whenever CLOCK_REALTIME made a jump */ void (*time_change)(Unit *u); - int (*get_timeout)(Unit *u, uint64_t *timeout); + /* Returns the next timeout of a unit */ + int (*get_timeout)(Unit *u, usec_t *timeout); /* This is called for each unit type and should be used to * enumerate existing devices and load them. However, diff --git a/src/coredump/Makefile b/src/coredump/Makefile new file mode 120000 index 0000000000..d0b0e8e008 --- /dev/null +++ b/src/coredump/Makefile @@ -0,0 +1 @@ +../Makefile
\ No newline at end of file diff --git a/src/journal/coredump-vacuum.c b/src/coredump/coredump-vacuum.c index 09ab60c6c4..f02b6dbd87 100644 --- a/src/journal/coredump-vacuum.c +++ b/src/coredump/coredump-vacuum.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/journal/coredump-vacuum.h b/src/coredump/coredump-vacuum.h index 7779c97574..4b7b9f2d98 100644 --- a/src/journal/coredump-vacuum.h +++ b/src/coredump/coredump-vacuum.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/journal/coredump.c b/src/coredump/coredump.c index 8298b02439..085909c20c 100644 --- a/src/journal/coredump.c +++ b/src/coredump/coredump.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -26,12 +24,13 @@ #include <unistd.h> #ifdef HAVE_ELFUTILS -# include <dwarf.h> -# include <elfutils/libdwfl.h> +#include <dwarf.h> +#include <elfutils/libdwfl.h> #endif #include "sd-journal.h" #include "sd-login.h" +#include "sd-daemon.h" #include "acl-util.h" #include "alloc-util.h" @@ -53,6 +52,7 @@ #include "mkdir.h" #include "parse-util.h" #include "process-util.h" +#include "socket-util.h" #include "special.h" #include "stacktrace.h" #include "string-table.h" @@ -64,12 +64,10 @@ /* The maximum size up to which we process coredumps */ #define PROCESS_SIZE_MAX ((uint64_t) (2LLU*1024LLU*1024LLU*1024LLU)) -/* The maximum size up to which we leave the coredump around on - * disk */ +/* The maximum size up to which we leave the coredump around on disk */ #define EXTERNAL_SIZE_MAX PROCESS_SIZE_MAX -/* The maximum size up to which we store the coredump in the - * journal */ +/* The maximum size up to which we store the coredump in the journal */ #define JOURNAL_SIZE_MAX ((size_t) (767LU*1024LU*1024LU)) /* Make sure to not make this larger than the maximum journal entry @@ -77,14 +75,17 @@ assert_cc(JOURNAL_SIZE_MAX <= DATA_SIZE_MAX); enum { - INFO_PID, - INFO_UID, - INFO_GID, - INFO_SIGNAL, - INFO_TIMESTAMP, - INFO_COMM, - INFO_EXE, - _INFO_LEN + /* We use this as array indexes for a couple of special fields we use for naming coredumping files, and + * attaching xattrs */ + CONTEXT_PID, + CONTEXT_UID, + CONTEXT_GID, + CONTEXT_SIGNAL, + CONTEXT_TIMESTAMP, + CONTEXT_RLIMIT, + CONTEXT_COMM, + CONTEXT_EXE, + _CONTEXT_MAX }; typedef enum CoredumpStorage { @@ -175,16 +176,16 @@ static int fix_acl(int fd, uid_t uid) { return 0; } -static int fix_xattr(int fd, const char *info[_INFO_LEN]) { +static int fix_xattr(int fd, const char *context[_CONTEXT_MAX]) { - static const char * const xattrs[_INFO_LEN] = { - [INFO_PID] = "user.coredump.pid", - [INFO_UID] = "user.coredump.uid", - [INFO_GID] = "user.coredump.gid", - [INFO_SIGNAL] = "user.coredump.signal", - [INFO_TIMESTAMP] = "user.coredump.timestamp", - [INFO_COMM] = "user.coredump.comm", - [INFO_EXE] = "user.coredump.exe", + static const char * const xattrs[_CONTEXT_MAX] = { + [CONTEXT_PID] = "user.coredump.pid", + [CONTEXT_UID] = "user.coredump.uid", + [CONTEXT_GID] = "user.coredump.gid", + [CONTEXT_SIGNAL] = "user.coredump.signal", + [CONTEXT_TIMESTAMP] = "user.coredump.timestamp", + [CONTEXT_COMM] = "user.coredump.comm", + [CONTEXT_EXE] = "user.coredump.exe", }; int r = 0; @@ -195,13 +196,13 @@ static int fix_xattr(int fd, const char *info[_INFO_LEN]) { /* Attach some metadata to coredumps via extended * attributes. Just because we can. */ - for (i = 0; i < _INFO_LEN; i++) { + for (i = 0; i < _CONTEXT_MAX; i++) { int k; - if (isempty(info[i]) || !xattrs[i]) + if (isempty(context[i]) || !xattrs[i]) continue; - k = fsetxattr(fd, xattrs[i], info[i], strlen(info[i]), XATTR_CREATE); + k = fsetxattr(fd, xattrs[i], context[i], strlen(context[i]), XATTR_CREATE); if (k < 0 && r == 0) r = -errno; } @@ -215,18 +216,18 @@ static int fix_permissions( int fd, const char *filename, const char *target, - const char *info[_INFO_LEN], + const char *context[_CONTEXT_MAX], uid_t uid) { assert(fd >= 0); assert(filename); assert(target); - assert(info); + assert(context); /* Ignore errors on these */ - fchmod(fd, 0640); - fix_acl(fd, uid); - fix_xattr(fd, info); + (void) fchmod(fd, 0640); + (void) fix_acl(fd, uid); + (void) fix_xattr(fd, context); if (fsync(fd) < 0) return log_error_errno(errno, "Failed to sync coredump %s: %m", filename); @@ -254,18 +255,18 @@ static int maybe_remove_external_coredump(const char *filename, uint64_t size) { return 1; } -static int make_filename(const char *info[_INFO_LEN], char **ret) { +static int make_filename(const char *context[_CONTEXT_MAX], char **ret) { _cleanup_free_ char *c = NULL, *u = NULL, *p = NULL, *t = NULL; sd_id128_t boot = {}; int r; - assert(info); + assert(context); - c = filename_escape(info[INFO_COMM]); + c = filename_escape(context[CONTEXT_COMM]); if (!c) return -ENOMEM; - u = filename_escape(info[INFO_UID]); + u = filename_escape(context[CONTEXT_UID]); if (!u) return -ENOMEM; @@ -273,11 +274,11 @@ static int make_filename(const char *info[_INFO_LEN], char **ret) { if (r < 0) return r; - p = filename_escape(info[INFO_PID]); + p = filename_escape(context[CONTEXT_PID]); if (!p) return -ENOMEM; - t = filename_escape(info[INFO_TIMESTAMP]); + t = filename_escape(context[CONTEXT_TIMESTAMP]); if (!t) return -ENOMEM; @@ -294,8 +295,8 @@ static int make_filename(const char *info[_INFO_LEN], char **ret) { } static int save_external_coredump( - const char *info[_INFO_LEN], - uid_t uid, + const char *context[_CONTEXT_MAX], + int input_fd, char **ret_filename, int *ret_node_fd, int *ret_data_fd, @@ -303,16 +304,34 @@ static int save_external_coredump( _cleanup_free_ char *fn = NULL, *tmp = NULL; _cleanup_close_ int fd = -1; + uint64_t rlimit, max_size; struct stat st; + uid_t uid; int r; - assert(info); + assert(context); assert(ret_filename); assert(ret_node_fd); assert(ret_data_fd); assert(ret_size); - r = make_filename(info, &fn); + r = parse_uid(context[CONTEXT_UID], &uid); + if (r < 0) + return log_error_errno(r, "Failed to parse UID: %m"); + + r = safe_atou64(context[CONTEXT_RLIMIT], &rlimit); + if (r < 0) + return log_error_errno(r, "Failed to parse resource limit: %s", context[CONTEXT_RLIMIT]); + if (rlimit <= 0) { + /* Is coredumping disabled? Then don't bother saving/processing the coredump */ + log_info("Core Dumping has been disabled for process %s (%s).", context[CONTEXT_PID], context[CONTEXT_COMM]); + return -EBADSLT; + } + + /* Never store more than the process configured, or than we actually shall keep or process */ + max_size = MIN(rlimit, MAX(arg_process_size_max, arg_external_size_max)); + + r = make_filename(context, &fn); if (r < 0) return log_error_errno(r, "Failed to determine coredump file name: %m"); @@ -326,12 +345,12 @@ static int save_external_coredump( if (fd < 0) return log_error_errno(errno, "Failed to create coredump file %s: %m", tmp); - r = copy_bytes(STDIN_FILENO, fd, arg_process_size_max, false); + r = copy_bytes(input_fd, fd, max_size, false); if (r == -EFBIG) { - log_error("Coredump of %s (%s) is larger than configured processing limit, refusing.", info[INFO_PID], info[INFO_COMM]); + log_error("Coredump of %s (%s) is larger than configured processing limit, refusing.", context[CONTEXT_PID], context[CONTEXT_COMM]); goto fail; } else if (IN_SET(r, -EDQUOT, -ENOSPC)) { - log_error("Not enough disk space for coredump of %s (%s), refusing.", info[INFO_PID], info[INFO_COMM]); + log_error("Not enough disk space for coredump of %s (%s), refusing.", context[CONTEXT_PID], context[CONTEXT_COMM]); goto fail; } else if (r < 0) { log_error_errno(r, "Failed to dump coredump to file: %m"); @@ -380,7 +399,7 @@ static int save_external_coredump( goto fail_compressed; } - r = fix_permissions(fd_compressed, tmp_compressed, fn_compressed, info, uid); + r = fix_permissions(fd_compressed, tmp_compressed, fn_compressed, context, uid); if (r < 0) goto fail_compressed; @@ -398,13 +417,13 @@ static int save_external_coredump( return 0; fail_compressed: - unlink_noerrno(tmp_compressed); + (void) unlink(tmp_compressed); } uncompressed: #endif - r = fix_permissions(fd, tmp, fn, info, uid); + r = fix_permissions(fd, tmp, fn, context, uid); if (r < 0) goto fail; @@ -419,7 +438,7 @@ uncompressed: return 0; fail: - unlink_noerrno(tmp); + (void) unlink(tmp); return r; } @@ -541,186 +560,473 @@ static int compose_open_fds(pid_t pid, char **open_fds) { return 0; } -int main(int argc, char* argv[]) { +static int change_uid_gid(const char *context[]) { + uid_t uid; + gid_t gid; + int r; - /* The small core field we allocate on the stack, to keep things simple */ - char - *core_pid = NULL, *core_uid = NULL, *core_gid = NULL, *core_signal = NULL, - *core_session = NULL, *core_exe = NULL, *core_comm = NULL, *core_cmdline = NULL, - *core_cgroup = NULL, *core_cwd = NULL, *core_root = NULL, *core_unit = NULL, - *core_slice = NULL; + r = parse_uid(context[CONTEXT_UID], &uid); + if (r < 0) + return r; - /* The larger ones we allocate on the heap */ - _cleanup_free_ char - *core_timestamp = NULL, *core_message = NULL, *coredump_data = NULL, *core_owner_uid = NULL, - *core_open_fds = NULL, *core_proc_status = NULL, *core_proc_maps = NULL, *core_proc_limits = NULL, - *core_proc_cgroup = NULL, *core_environ = NULL; + if (uid <= SYSTEM_UID_MAX) { + const char *user = "systemd-coredump"; - _cleanup_free_ char *exe = NULL, *comm = NULL, *filename = NULL; - const char *info[_INFO_LEN]; + r = get_user_creds(&user, &uid, &gid, NULL, NULL); + if (r < 0) { + log_warning_errno(r, "Cannot resolve %s user. Proceeding to dump core as root: %m", user); + uid = gid = 0; + } + } else { + r = parse_gid(context[CONTEXT_GID], &gid); + if (r < 0) + return r; + } - _cleanup_close_ int coredump_fd = -1, coredump_node_fd = -1; + return drop_privileges(uid, gid, 0); +} - struct iovec iovec[26]; +static int submit_coredump( + const char *context[_CONTEXT_MAX], + struct iovec *iovec, + size_t n_iovec_allocated, + size_t n_iovec, + int input_fd) { + + _cleanup_close_ int coredump_fd = -1, coredump_node_fd = -1; + _cleanup_free_ char *core_message = NULL, *filename = NULL, *coredump_data = NULL; uint64_t coredump_size; - int r, j = 0; - uid_t uid, owner_uid; - gid_t gid; - pid_t pid; - char *t; - const char *p; + int r; - /* Make sure we never enter a loop */ - prctl(PR_SET_DUMPABLE, 0); + assert(context); + assert(iovec); + assert(n_iovec_allocated >= n_iovec + 3); + assert(input_fd >= 0); - /* First, log to a safe place, since we don't know what - * crashed and it might be journald which we'd rather not log - * to then. */ - log_set_target(LOG_TARGET_KMSG); - log_open(); + /* Vacuum before we write anything again */ + (void) coredump_vacuum(-1, arg_keep_free, arg_max_use); - if (argc < INFO_COMM + 1) { - log_error("Not enough arguments passed from kernel (%d, expected %d).", - argc - 1, INFO_COMM + 1 - 1); - r = -EINVAL; - goto finish; + /* Always stream the coredump to disk, if that's possible */ + r = save_external_coredump(context, input_fd, &filename, &coredump_node_fd, &coredump_fd, &coredump_size); + if (r < 0) + /* Skip whole core dumping part */ + goto log; + + /* If we don't want to keep the coredump on disk, remove it now, as later on we will lack the privileges for + * it. However, we keep the fd to it, so that we can still process it and log it. */ + r = maybe_remove_external_coredump(filename, coredump_size); + if (r < 0) + return r; + if (r == 0) { + const char *coredump_filename; + + coredump_filename = strjoina("COREDUMP_FILENAME=", filename); + IOVEC_SET_STRING(iovec[n_iovec++], coredump_filename); } - /* Ignore all parse errors */ - parse_config(); + /* Vacuum again, but exclude the coredump we just created */ + (void) coredump_vacuum(coredump_node_fd >= 0 ? coredump_node_fd : coredump_fd, arg_keep_free, arg_max_use); - log_debug("Selected storage '%s'.", coredump_storage_to_string(arg_storage)); - log_debug("Selected compression %s.", yes_no(arg_compress)); + /* Now, let's drop privileges to become the user who owns the segfaulted process and allocate the coredump + * memory under the user's uid. This also ensures that the credentials journald will see are the ones of the + * coredumping user, thus making sure the user gets access to the core dump. Let's also get rid of all + * capabilities, if we run as root, we won't need them anymore. */ + r = change_uid_gid(context); + if (r < 0) + return log_error_errno(r, "Failed to drop privileges: %m"); - r = parse_uid(argv[INFO_UID + 1], &uid); - if (r < 0) { - log_error("Failed to parse UID."); - goto finish; +#ifdef HAVE_ELFUTILS + /* Try to get a strack trace if we can */ + if (coredump_size <= arg_process_size_max) { + _cleanup_free_ char *stacktrace = NULL; + + r = coredump_make_stack_trace(coredump_fd, context[CONTEXT_EXE], &stacktrace); + if (r >= 0) + core_message = strjoin("MESSAGE=Process ", context[CONTEXT_PID], " (", context[CONTEXT_COMM], ") of user ", context[CONTEXT_UID], " dumped core.\n\n", stacktrace, NULL); + else if (r == -EINVAL) + log_warning("Failed to generate stack trace: %s", dwfl_errmsg(dwfl_errno())); + else + log_warning_errno(r, "Failed to generate stack trace: %m"); } - r = parse_pid(argv[INFO_PID + 1], &pid); - if (r < 0) { - log_error("Failed to parse PID."); - goto finish; + if (!core_message) +#endif +log: + core_message = strjoin("MESSAGE=Process ", context[CONTEXT_PID], " (", context[CONTEXT_COMM], ") of user ", context[CONTEXT_UID], " dumped core.", NULL); + if (core_message) + IOVEC_SET_STRING(iovec[n_iovec++], core_message); + + /* Optionally store the entire coredump in the journal */ + if (IN_SET(arg_storage, COREDUMP_STORAGE_JOURNAL, COREDUMP_STORAGE_BOTH) && + coredump_size <= arg_journal_size_max) { + size_t sz = 0; + + /* Store the coredump itself in the journal */ + + r = allocate_journal_field(coredump_fd, (size_t) coredump_size, &coredump_data, &sz); + if (r >= 0) { + iovec[n_iovec].iov_base = coredump_data; + iovec[n_iovec].iov_len = sz; + n_iovec++; + } } - r = parse_gid(argv[INFO_GID + 1], &gid); - if (r < 0) { - log_error("Failed to parse GID."); + assert(n_iovec <= n_iovec_allocated); + + r = sd_journal_sendv(iovec, n_iovec); + if (r < 0) + return log_error_errno(r, "Failed to log coredump: %m"); + + return 0; +} + +static void map_context_fields(const struct iovec *iovec, const char *context[]) { + + static const char * const context_field_names[_CONTEXT_MAX] = { + [CONTEXT_PID] = "COREDUMP_PID=", + [CONTEXT_UID] = "COREDUMP_UID=", + [CONTEXT_GID] = "COREDUMP_GID=", + [CONTEXT_SIGNAL] = "COREDUMP_SIGNAL=", + [CONTEXT_TIMESTAMP] = "COREDUMP_TIMESTAMP=", + [CONTEXT_COMM] = "COREDUMP_COMM=", + [CONTEXT_EXE] = "COREDUMP_EXE=", + [CONTEXT_RLIMIT] = "COREDUMP_RLIMIT=", + }; + + unsigned i; + + assert(iovec); + assert(context); + + for (i = 0; i < _CONTEXT_MAX; i++) { + size_t l; + + l = strlen(context_field_names[i]); + if (iovec->iov_len < l) + continue; + + if (memcmp(iovec->iov_base, context_field_names[i], l) != 0) + continue; + + /* Note that these strings are NUL terminated, because we made sure that a trailing NUL byte is in the + * buffer, though not included in the iov_len count. (see below) */ + context[i] = (char*) iovec->iov_base + l; + break; + } +} + +static int process_socket(int fd) { + _cleanup_close_ int coredump_fd = -1; + struct iovec *iovec = NULL; + size_t n_iovec = 0, n_iovec_allocated = 0, i; + const char *context[_CONTEXT_MAX] = {}; + int r; + + assert(fd >= 0); + + log_set_target(LOG_TARGET_AUTO); + log_parse_environment(); + log_open(); + + for (;;) { + union { + struct cmsghdr cmsghdr; + uint8_t buf[CMSG_SPACE(sizeof(int))]; + } control = {}; + struct msghdr mh = { + .msg_control = &control, + .msg_controllen = sizeof(control), + .msg_iovlen = 1, + }; + ssize_t n; + int l; + + if (!GREEDY_REALLOC(iovec, n_iovec_allocated, n_iovec + 3)) { + r = log_oom(); + goto finish; + } + + if (ioctl(fd, FIONREAD, &l) < 0) { + r = log_error_errno(errno, "FIONREAD failed: %m"); + goto finish; + } + + assert(l >= 0); + + iovec[n_iovec].iov_len = l; + iovec[n_iovec].iov_base = malloc(l + 1); + + if (!iovec[n_iovec].iov_base) { + r = log_oom(); + goto finish; + } + + mh.msg_iov = iovec + n_iovec; + + n = recvmsg(fd, &mh, MSG_NOSIGNAL|MSG_CMSG_CLOEXEC); + if (n < 0) { + free(iovec[n_iovec].iov_base); + r = log_error_errno(errno, "Failed to receive datagram: %m"); + goto finish; + } + + if (n == 0) { + struct cmsghdr *cmsg, *found = NULL; + /* The final zero-length datagram carries the file descriptor and tells us that we're done. */ + + free(iovec[n_iovec].iov_base); + + CMSG_FOREACH(cmsg, &mh) { + if (cmsg->cmsg_level == SOL_SOCKET && + cmsg->cmsg_type == SCM_RIGHTS && + cmsg->cmsg_len == CMSG_LEN(sizeof(int))) { + assert(!found); + found = cmsg; + } + } + + if (!found) { + log_error("Coredump file descriptor missing."); + r = -EBADMSG; + goto finish; + } + + assert(coredump_fd < 0); + coredump_fd = *(int*) CMSG_DATA(found); + break; + } + + /* Add trailing NUL byte, in case these are strings */ + ((char*) iovec[n_iovec].iov_base)[n] = 0; + iovec[n_iovec].iov_len = (size_t) n; + + cmsg_close_all(&mh); + map_context_fields(iovec + n_iovec, context); + n_iovec++; + } + + if (!GREEDY_REALLOC(iovec, n_iovec_allocated, n_iovec + 3)) { + r = log_oom(); goto finish; } - if (get_process_comm(pid, &comm) < 0) { - log_warning("Failed to get COMM, falling back to the command line."); - comm = strv_join(argv + INFO_COMM + 1, " "); + /* Make sure we we got all data we really need */ + assert(context[CONTEXT_PID]); + assert(context[CONTEXT_UID]); + assert(context[CONTEXT_GID]); + assert(context[CONTEXT_SIGNAL]); + assert(context[CONTEXT_TIMESTAMP]); + assert(context[CONTEXT_RLIMIT]); + assert(context[CONTEXT_COMM]); + assert(coredump_fd >= 0); + + r = submit_coredump(context, iovec, n_iovec_allocated, n_iovec, coredump_fd); + +finish: + for (i = 0; i < n_iovec; i++) + free(iovec[i].iov_base); + free(iovec); + + return r; +} + +static int send_iovec(const struct iovec iovec[], size_t n_iovec, int input_fd) { + + static const union sockaddr_union sa = { + .un.sun_family = AF_UNIX, + .un.sun_path = "/run/systemd/coredump", + }; + _cleanup_close_ int fd = -1; + size_t i; + int r; + + assert(iovec || n_iovec <= 0); + assert(input_fd >= 0); + + fd = socket(AF_UNIX, SOCK_SEQPACKET|SOCK_CLOEXEC, 0); + if (fd < 0) + return log_error_errno(errno, "Failed to create coredump socket: %m"); + + if (connect(fd, &sa.sa, offsetof(union sockaddr_union, un.sun_path) + strlen(sa.un.sun_path)) < 0) + return log_error_errno(errno, "Failed to connect to coredump service: %m"); + + for (i = 0; i < n_iovec; i++) { + ssize_t n; + assert(iovec[i].iov_len > 0); + + n = send(fd, iovec[i].iov_base, iovec[i].iov_len, MSG_NOSIGNAL); + if (n < 0) + return log_error_errno(errno, "Failed to send coredump datagram: %m"); } - if (get_process_exe(pid, &exe) < 0) - log_warning("Failed to get EXE."); + r = send_one_fd(fd, input_fd, 0); + if (r < 0) + return log_error_errno(r, "Failed to send coredump fd: %m"); - info[INFO_PID] = argv[INFO_PID + 1]; - info[INFO_UID] = argv[INFO_UID + 1]; - info[INFO_GID] = argv[INFO_GID + 1]; - info[INFO_SIGNAL] = argv[INFO_SIGNAL + 1]; - info[INFO_TIMESTAMP] = argv[INFO_TIMESTAMP + 1]; - info[INFO_COMM] = comm; - info[INFO_EXE] = exe; + return 0; +} - if (cg_pid_get_unit(pid, &t) >= 0) { +static int process_journald_crash(const char *context[], int input_fd) { + _cleanup_close_ int coredump_fd = -1, coredump_node_fd = -1; + _cleanup_free_ char *filename = NULL; + uint64_t coredump_size; + int r; - if (streq(t, SPECIAL_JOURNALD_SERVICE)) { - free(t); + assert(context); + assert(input_fd >= 0); - /* If we are journald, we cut things short, - * don't write to the journal, but still - * create a coredump. */ + /* If we are journald, we cut things short, don't write to the journal, but still create a coredump. */ - if (arg_storage != COREDUMP_STORAGE_NONE) - arg_storage = COREDUMP_STORAGE_EXTERNAL; + if (arg_storage != COREDUMP_STORAGE_NONE) + arg_storage = COREDUMP_STORAGE_EXTERNAL; - r = save_external_coredump(info, uid, &filename, &coredump_node_fd, &coredump_fd, &coredump_size); - if (r < 0) - goto finish; + r = save_external_coredump(context, input_fd, &filename, &coredump_node_fd, &coredump_fd, &coredump_size); + if (r < 0) + return r; - r = maybe_remove_external_coredump(filename, coredump_size); - if (r < 0) - goto finish; + r = maybe_remove_external_coredump(filename, coredump_size); + if (r < 0) + return r; - log_info("Detected coredump of the journal daemon itself, diverted to %s.", filename); - goto finish; + log_info("Detected coredump of the journal daemon itself, diverted to %s.", filename); + return 0; +} + +static int process_kernel(int argc, char* argv[]) { + + /* The small core field we allocate on the stack, to keep things simple */ + char + *core_pid = NULL, *core_uid = NULL, *core_gid = NULL, *core_signal = NULL, + *core_session = NULL, *core_exe = NULL, *core_comm = NULL, *core_cmdline = NULL, + *core_cgroup = NULL, *core_cwd = NULL, *core_root = NULL, *core_unit = NULL, + *core_user_unit = NULL, *core_slice = NULL, *core_timestamp = NULL, *core_rlimit = NULL; + + /* The larger ones we allocate on the heap */ + _cleanup_free_ char + *core_owner_uid = NULL, *core_open_fds = NULL, *core_proc_status = NULL, + *core_proc_maps = NULL, *core_proc_limits = NULL, *core_proc_cgroup = NULL, *core_environ = NULL; + + _cleanup_free_ char *exe = NULL, *comm = NULL; + const char *context[_CONTEXT_MAX]; + struct iovec iovec[25]; + size_t n_iovec = 0; + uid_t owner_uid; + const char *p; + pid_t pid; + char *t; + int r; + + if (argc < CONTEXT_COMM + 1) { + log_error("Not enough arguments passed from kernel (%i, expected %i).", argc - 1, CONTEXT_COMM + 1 - 1); + return -EINVAL; + } + + r = parse_pid(argv[CONTEXT_PID + 1], &pid); + if (r < 0) + return log_error_errno(r, "Failed to parse PID."); + + r = get_process_comm(pid, &comm); + if (r < 0) { + log_warning_errno(r, "Failed to get COMM, falling back to the command line: %m"); + comm = strv_join(argv + CONTEXT_COMM + 1, " "); + if (!comm) + return log_oom(); + } + + r = get_process_exe(pid, &exe); + if (r < 0) + log_warning_errno(r, "Failed to get EXE, ignoring: %m"); + + context[CONTEXT_PID] = argv[CONTEXT_PID + 1]; + context[CONTEXT_UID] = argv[CONTEXT_UID + 1]; + context[CONTEXT_GID] = argv[CONTEXT_GID + 1]; + context[CONTEXT_SIGNAL] = argv[CONTEXT_SIGNAL + 1]; + context[CONTEXT_TIMESTAMP] = argv[CONTEXT_TIMESTAMP + 1]; + context[CONTEXT_RLIMIT] = argv[CONTEXT_RLIMIT + 1]; + context[CONTEXT_COMM] = comm; + context[CONTEXT_EXE] = exe; + + if (cg_pid_get_unit(pid, &t) >= 0) { + + if (streq(t, SPECIAL_JOURNALD_SERVICE)) { + free(t); + return process_journald_crash(context, STDIN_FILENO); } core_unit = strjoina("COREDUMP_UNIT=", t); free(t); - } else if (cg_pid_get_user_unit(pid, &t) >= 0) { - core_unit = strjoina("COREDUMP_USER_UNIT=", t); - free(t); + IOVEC_SET_STRING(iovec[n_iovec++], core_unit); } - if (core_unit) - IOVEC_SET_STRING(iovec[j++], core_unit); - - /* OK, now we know it's not the journal, hence we can make use - * of it now. */ + /* OK, now we know it's not the journal, hence we can make use of it now. */ log_set_target(LOG_TARGET_JOURNAL_OR_KMSG); log_open(); - core_pid = strjoina("COREDUMP_PID=", info[INFO_PID]); - IOVEC_SET_STRING(iovec[j++], core_pid); + if (cg_pid_get_user_unit(pid, &t) >= 0) { + core_user_unit = strjoina("COREDUMP_USER_UNIT=", t); + free(t); + + IOVEC_SET_STRING(iovec[n_iovec++], core_user_unit); + } + + core_pid = strjoina("COREDUMP_PID=", context[CONTEXT_PID]); + IOVEC_SET_STRING(iovec[n_iovec++], core_pid); + + core_uid = strjoina("COREDUMP_UID=", context[CONTEXT_UID]); + IOVEC_SET_STRING(iovec[n_iovec++], core_uid); - core_uid = strjoina("COREDUMP_UID=", info[INFO_UID]); - IOVEC_SET_STRING(iovec[j++], core_uid); + core_gid = strjoina("COREDUMP_GID=", context[CONTEXT_GID]); + IOVEC_SET_STRING(iovec[n_iovec++], core_gid); - core_gid = strjoina("COREDUMP_GID=", info[INFO_GID]); - IOVEC_SET_STRING(iovec[j++], core_gid); + core_signal = strjoina("COREDUMP_SIGNAL=", context[CONTEXT_SIGNAL]); + IOVEC_SET_STRING(iovec[n_iovec++], core_signal); - core_signal = strjoina("COREDUMP_SIGNAL=", info[INFO_SIGNAL]); - IOVEC_SET_STRING(iovec[j++], core_signal); + core_rlimit = strjoina("COREDUMP_RLIMIT=", context[CONTEXT_RLIMIT]); + IOVEC_SET_STRING(iovec[n_iovec++], core_rlimit); if (sd_pid_get_session(pid, &t) >= 0) { core_session = strjoina("COREDUMP_SESSION=", t); free(t); - IOVEC_SET_STRING(iovec[j++], core_session); + IOVEC_SET_STRING(iovec[n_iovec++], core_session); } if (sd_pid_get_owner_uid(pid, &owner_uid) >= 0) { - r = asprintf(&core_owner_uid, - "COREDUMP_OWNER_UID=" UID_FMT, owner_uid); + r = asprintf(&core_owner_uid, "COREDUMP_OWNER_UID=" UID_FMT, owner_uid); if (r > 0) - IOVEC_SET_STRING(iovec[j++], core_owner_uid); + IOVEC_SET_STRING(iovec[n_iovec++], core_owner_uid); } if (sd_pid_get_slice(pid, &t) >= 0) { core_slice = strjoina("COREDUMP_SLICE=", t); free(t); - IOVEC_SET_STRING(iovec[j++], core_slice); + IOVEC_SET_STRING(iovec[n_iovec++], core_slice); } if (comm) { core_comm = strjoina("COREDUMP_COMM=", comm); - IOVEC_SET_STRING(iovec[j++], core_comm); + IOVEC_SET_STRING(iovec[n_iovec++], core_comm); } if (exe) { core_exe = strjoina("COREDUMP_EXE=", exe); - IOVEC_SET_STRING(iovec[j++], core_exe); + IOVEC_SET_STRING(iovec[n_iovec++], core_exe); } if (get_process_cmdline(pid, 0, false, &t) >= 0) { core_cmdline = strjoina("COREDUMP_CMDLINE=", t); free(t); - IOVEC_SET_STRING(iovec[j++], core_cmdline); + IOVEC_SET_STRING(iovec[n_iovec++], core_cmdline); } if (cg_pid_get_path_shifted(pid, NULL, &t) >= 0) { core_cgroup = strjoina("COREDUMP_CGROUP=", t); free(t); - IOVEC_SET_STRING(iovec[j++], core_cgroup); + IOVEC_SET_STRING(iovec[n_iovec++], core_cgroup); } if (compose_open_fds(pid, &t) >= 0) { @@ -728,7 +1034,7 @@ int main(int argc, char* argv[]) { free(t); if (core_open_fds) - IOVEC_SET_STRING(iovec[j++], core_open_fds); + IOVEC_SET_STRING(iovec[n_iovec++], core_open_fds); } p = procfs_file_alloca(pid, "status"); @@ -737,7 +1043,7 @@ int main(int argc, char* argv[]) { free(t); if (core_proc_status) - IOVEC_SET_STRING(iovec[j++], core_proc_status); + IOVEC_SET_STRING(iovec[n_iovec++], core_proc_status); } p = procfs_file_alloca(pid, "maps"); @@ -746,7 +1052,7 @@ int main(int argc, char* argv[]) { free(t); if (core_proc_maps) - IOVEC_SET_STRING(iovec[j++], core_proc_maps); + IOVEC_SET_STRING(iovec[n_iovec++], core_proc_maps); } p = procfs_file_alloca(pid, "limits"); @@ -755,7 +1061,7 @@ int main(int argc, char* argv[]) { free(t); if (core_proc_limits) - IOVEC_SET_STRING(iovec[j++], core_proc_limits); + IOVEC_SET_STRING(iovec[n_iovec++], core_proc_limits); } p = procfs_file_alloca(pid, "cgroup"); @@ -764,21 +1070,21 @@ int main(int argc, char* argv[]) { free(t); if (core_proc_cgroup) - IOVEC_SET_STRING(iovec[j++], core_proc_cgroup); + IOVEC_SET_STRING(iovec[n_iovec++], core_proc_cgroup); } if (get_process_cwd(pid, &t) >= 0) { core_cwd = strjoina("COREDUMP_CWD=", t); free(t); - IOVEC_SET_STRING(iovec[j++], core_cwd); + IOVEC_SET_STRING(iovec[n_iovec++], core_cwd); } if (get_process_root(pid, &t) >= 0) { core_root = strjoina("COREDUMP_ROOT=", t); free(t); - IOVEC_SET_STRING(iovec[j++], core_root); + IOVEC_SET_STRING(iovec[n_iovec++], core_root); } if (get_process_environ(pid, &t) >= 0) { @@ -786,96 +1092,56 @@ int main(int argc, char* argv[]) { free(t); if (core_environ) - IOVEC_SET_STRING(iovec[j++], core_environ); + IOVEC_SET_STRING(iovec[n_iovec++], core_environ); } - core_timestamp = strjoin("COREDUMP_TIMESTAMP=", info[INFO_TIMESTAMP], "000000", NULL); - if (core_timestamp) - IOVEC_SET_STRING(iovec[j++], core_timestamp); + core_timestamp = strjoina("COREDUMP_TIMESTAMP=", context[CONTEXT_TIMESTAMP], "000000", NULL); + IOVEC_SET_STRING(iovec[n_iovec++], core_timestamp); - IOVEC_SET_STRING(iovec[j++], "MESSAGE_ID=fc2e22bc6ee647b6b90729ab34a250b1"); + IOVEC_SET_STRING(iovec[n_iovec++], "MESSAGE_ID=fc2e22bc6ee647b6b90729ab34a250b1"); assert_cc(2 == LOG_CRIT); - IOVEC_SET_STRING(iovec[j++], "PRIORITY=2"); - - /* Vacuum before we write anything again */ - coredump_vacuum(-1, arg_keep_free, arg_max_use); - - /* Always stream the coredump to disk, if that's possible */ - r = save_external_coredump(info, uid, &filename, &coredump_node_fd, &coredump_fd, &coredump_size); - if (r < 0) - /* skip whole core dumping part */ - goto log; + IOVEC_SET_STRING(iovec[n_iovec++], "PRIORITY=2"); - /* If we don't want to keep the coredump on disk, remove it - * now, as later on we will lack the privileges for - * it. However, we keep the fd to it, so that we can still - * process it and log it. */ - r = maybe_remove_external_coredump(filename, coredump_size); - if (r < 0) - goto finish; - if (r == 0) { - const char *coredump_filename; + assert(n_iovec <= ELEMENTSOF(iovec)); - coredump_filename = strjoina("COREDUMP_FILENAME=", filename); - IOVEC_SET_STRING(iovec[j++], coredump_filename); - } + return send_iovec(iovec, n_iovec, STDIN_FILENO); +} - /* Vacuum again, but exclude the coredump we just created */ - coredump_vacuum(coredump_node_fd >= 0 ? coredump_node_fd : coredump_fd, arg_keep_free, arg_max_use); - - /* Now, let's drop privileges to become the user who owns the - * segfaulted process and allocate the coredump memory under - * the user's uid. This also ensures that the credentials - * journald will see are the ones of the coredumping user, - * thus making sure the user gets access to the core - * dump. Let's also get rid of all capabilities, if we run as - * root, we won't need them anymore. */ - r = drop_privileges(uid, gid, 0); - if (r < 0) { - log_error_errno(r, "Failed to drop privileges: %m"); - goto finish; - } +int main(int argc, char *argv[]) { + int r; -#ifdef HAVE_ELFUTILS - /* Try to get a strack trace if we can */ - if (coredump_size <= arg_process_size_max) { - _cleanup_free_ char *stacktrace = NULL; + /* First, log to a safe place, since we don't know what crashed and it might be journald which we'd rather not + * log to then. */ - r = coredump_make_stack_trace(coredump_fd, exe, &stacktrace); - if (r >= 0) - core_message = strjoin("MESSAGE=Process ", info[INFO_PID], " (", comm, ") of user ", info[INFO_UID], " dumped core.\n\n", stacktrace, NULL); - else if (r == -EINVAL) - log_warning("Failed to generate stack trace: %s", dwfl_errmsg(dwfl_errno())); - else - log_warning_errno(r, "Failed to generate stack trace: %m"); - } + log_set_target(LOG_TARGET_KMSG); + log_open(); - if (!core_message) -#endif -log: - core_message = strjoin("MESSAGE=Process ", info[INFO_PID], " (", comm, ") of user ", info[INFO_UID], " dumped core.", NULL); - if (core_message) - IOVEC_SET_STRING(iovec[j++], core_message); + /* Make sure we never enter a loop */ + (void) prctl(PR_SET_DUMPABLE, 0); - /* Optionally store the entire coredump in the journal */ - if (IN_SET(arg_storage, COREDUMP_STORAGE_JOURNAL, COREDUMP_STORAGE_BOTH) && - coredump_size <= arg_journal_size_max) { - size_t sz = 0; + /* Ignore all parse errors */ + (void) parse_config(); - /* Store the coredump itself in the journal */ + log_debug("Selected storage '%s'.", coredump_storage_to_string(arg_storage)); + log_debug("Selected compression %s.", yes_no(arg_compress)); - r = allocate_journal_field(coredump_fd, (size_t) coredump_size, &coredump_data, &sz); - if (r >= 0) { - iovec[j].iov_base = coredump_data; - iovec[j].iov_len = sz; - j++; - } + r = sd_listen_fds(false); + if (r < 0) { + log_error_errno(r, "Failed to determine number of file descriptor: %m"); + goto finish; } - r = sd_journal_sendv(iovec, j); - if (r < 0) - log_error_errno(r, "Failed to log coredump: %m"); + /* If we got an fd passed, we are running in coredumpd mode. Otherwise we are invoked from the kernel as + * coredump handler */ + if (r == 0) + r = process_kernel(argc, argv); + else if (r == 1) + r = process_socket(SD_LISTEN_FDS_START); + else { + log_error("Received unexpected number of file descriptors."); + r = -EINVAL; + } finish: return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; diff --git a/src/journal/coredump.conf b/src/coredump/coredump.conf index c2f0643e03..c2f0643e03 100644 --- a/src/journal/coredump.conf +++ b/src/coredump/coredump.conf diff --git a/src/journal/coredumpctl.c b/src/coredump/coredumpctl.c index 40ffa6afbe..0034a1a0ac 100644 --- a/src/journal/coredumpctl.c +++ b/src/coredump/coredumpctl.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/journal/stacktrace.c b/src/coredump/stacktrace.c index 4305462f80..68806992fc 100644 --- a/src/journal/stacktrace.c +++ b/src/coredump/stacktrace.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/journal/stacktrace.h b/src/coredump/stacktrace.h index 189e5c4597..15e9c04465 100644 --- a/src/journal/stacktrace.h +++ b/src/coredump/stacktrace.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/journal/test-coredump-vacuum.c b/src/coredump/test-coredump-vacuum.c index 514dadc1dc..70a57f183f 100644 --- a/src/journal/test-coredump-vacuum.c +++ b/src/coredump/test-coredump-vacuum.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/cryptsetup/cryptsetup-generator.c b/src/cryptsetup/cryptsetup-generator.c index ae53bac600..8ac5ab730a 100644 --- a/src/cryptsetup/cryptsetup-generator.c +++ b/src/cryptsetup/cryptsetup-generator.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/cryptsetup/cryptsetup.c b/src/cryptsetup/cryptsetup.c index bc708bca67..2ef966257a 100644 --- a/src/cryptsetup/cryptsetup.c +++ b/src/cryptsetup/cryptsetup.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/dbus1-generator/dbus1-generator.c b/src/dbus1-generator/dbus1-generator.c index 6861a592fe..717cb9558e 100644 --- a/src/dbus1-generator/dbus1-generator.c +++ b/src/dbus1-generator/dbus1-generator.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/debug-generator/debug-generator.c b/src/debug-generator/debug-generator.c index 413cfd0388..7e80af78e7 100644 --- a/src/debug-generator/debug-generator.c +++ b/src/debug-generator/debug-generator.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/delta/delta.c b/src/delta/delta.c index 8bf678c28f..a54fc89de6 100644 --- a/src/delta/delta.c +++ b/src/delta/delta.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -430,18 +428,16 @@ static int process_suffix(const char *suffix, const char *onlyprefix) { } finish: - if (top) - hashmap_free_free(top); - if (bottom) - hashmap_free_free(bottom); - if (drops) { - HASHMAP_FOREACH_KEY(h, key, drops, i){ - hashmap_free_free(hashmap_remove(drops, key)); - hashmap_remove(drops, key); - free(key); - } - hashmap_free(drops); + hashmap_free_free(top); + hashmap_free_free(bottom); + + HASHMAP_FOREACH_KEY(h, key, drops, i){ + hashmap_free_free(hashmap_remove(drops, key)); + hashmap_remove(drops, key); + free(key); } + hashmap_free(drops); + return r < 0 ? r : n_found; } @@ -453,9 +449,10 @@ static int process_suffixes(const char *onlyprefix) { r = process_suffix(n, onlyprefix); if (r < 0) return r; - else - n_found += r; + + n_found += r; } + return n_found; } @@ -469,7 +466,9 @@ static int process_suffix_chop(const char *arg) { /* Strip prefix from the suffix */ NULSTR_FOREACH(p, prefixes) { - const char *suffix = startswith(arg, p); + const char *suffix; + + suffix = startswith(arg, p); if (suffix) { suffix += strspn(suffix, "/"); if (*suffix) @@ -577,10 +576,9 @@ static int parse_argv(int argc, char *argv[]) { if (b < 0) { log_error("Failed to parse diff boolean."); return -EINVAL; - } else if (b) - arg_diff = 1; - else - arg_diff = 0; + } + + arg_diff = b; } break; @@ -595,8 +593,7 @@ static int parse_argv(int argc, char *argv[]) { } int main(int argc, char *argv[]) { - int r = 0, k; - int n_found = 0; + int r, k, n_found = 0; log_parse_environment(); log_open(); @@ -620,6 +617,7 @@ int main(int argc, char *argv[]) { for (i = optind; i < argc; i++) { path_kill_slashes(argv[i]); + k = process_suffix_chop(argv[i]); if (k < 0) r = k; @@ -636,8 +634,7 @@ int main(int argc, char *argv[]) { } if (r >= 0) - printf("%s%i overridden configuration files found.\n", - n_found ? "\n" : "", n_found); + printf("%s%i overridden configuration files found.\n", n_found ? "\n" : "", n_found); finish: pager_close(); diff --git a/src/detect-virt/detect-virt.c b/src/detect-virt/detect-virt.c index 0a256c29be..5d51589a31 100644 --- a/src/detect-virt/detect-virt.c +++ b/src/detect-virt/detect-virt.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/escape/escape.c b/src/escape/escape.c index e857affbc4..9f39049577 100644 --- a/src/escape/escape.c +++ b/src/escape/escape.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/firstboot/firstboot.c b/src/firstboot/firstboot.c index cc5e9741fe..7790ab865d 100644 --- a/src/firstboot/firstboot.c +++ b/src/firstboot/firstboot.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/fsck/fsck.c b/src/fsck/fsck.c index 109c4a7ae0..6f56066da8 100644 --- a/src/fsck/fsck.c +++ b/src/fsck/fsck.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c index 1468dc8df6..97a48764ae 100644 --- a/src/fstab-generator/fstab-generator.c +++ b/src/fstab-generator/fstab-generator.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/getty-generator/getty-generator.c b/src/getty-generator/getty-generator.c index bddc0c441a..b15c76b5b8 100644 --- a/src/getty-generator/getty-generator.c +++ b/src/getty-generator/getty-generator.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c index ce8cecc5cb..af96adec06 100644 --- a/src/gpt-auto-generator/gpt-auto-generator.c +++ b/src/gpt-auto-generator/gpt-auto-generator.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -515,14 +513,15 @@ static int add_boot(const char *what) { return log_error_errno(errno ?: EIO, "Failed to probe %s: %m", what); (void) blkid_probe_lookup_value(b, "TYPE", &fstype, NULL); - if (!streq(fstype, "vfat")) { + if (!streq_ptr(fstype, "vfat")) { log_debug("Partition for /boot is not a FAT filesystem, ignoring."); return 0; } + errno = 0; r = blkid_probe_lookup_value(b, "PART_ENTRY_UUID", &uuid, NULL); if (r != 0) { - log_debug_errno(r, "Partition for /boot does not have a UUID, ignoring. %m"); + log_debug_errno(errno, "Partition for /boot does not have a UUID, ignoring."); return 0; } @@ -635,16 +634,19 @@ static int enumerate_partitions(dev_t devnum) { if (r == 1) return 0; /* no results */ else if (r == -2) { - log_warning("%s: probe gave ambiguous results, ignoring", node); + log_warning("%s: probe gave ambiguous results, ignoring.", node); return 0; } else if (r != 0) return log_error_errno(errno ?: EIO, "%s: failed to probe: %m", node); errno = 0; r = blkid_probe_lookup_value(b, "PTTYPE", &pttype, NULL); - if (r != 0) - return log_error_errno(errno ?: EIO, - "%s: failed to determine partition table type: %m", node); + if (r != 0) { + if (errno == 0) + return 0; /* No partition table found. */ + + return log_error_errno(errno, "%s: failed to determine partition table type: %m", node); + } /* We only do this all for GPT... */ if (!streq_ptr(pttype, "gpt")) { diff --git a/src/hibernate-resume/hibernate-resume-generator.c b/src/hibernate-resume/hibernate-resume-generator.c index da719f2a30..d7ee80d58f 100644 --- a/src/hibernate-resume/hibernate-resume-generator.c +++ b/src/hibernate-resume/hibernate-resume-generator.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/hibernate-resume/hibernate-resume.c b/src/hibernate-resume/hibernate-resume.c index 2e1259ef68..21df3c4461 100644 --- a/src/hibernate-resume/hibernate-resume.c +++ b/src/hibernate-resume/hibernate-resume.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/hostname/hostnamectl.c b/src/hostname/hostnamectl.c index 940f6f7e23..c16a324232 100644 --- a/src/hostname/hostnamectl.c +++ b/src/hostname/hostnamectl.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/hostname/hostnamed.c b/src/hostname/hostnamed.c index 84605fa267..c37e32e96b 100644 --- a/src/hostname/hostnamed.c +++ b/src/hostname/hostnamed.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/import/aufs-util.c b/src/import/aufs-util.c index b44dbb14ea..44aa6e2170 100644 --- a/src/import/aufs-util.c +++ b/src/import/aufs-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/import/aufs-util.h b/src/import/aufs-util.h index 712fb81cee..e474a50897 100644 --- a/src/import/aufs-util.h +++ b/src/import/aufs-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/import/curl-util.c b/src/import/curl-util.c index 8e531a64fa..a04c8c49ff 100644 --- a/src/import/curl-util.c +++ b/src/import/curl-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/import/curl-util.h b/src/import/curl-util.h index eec53c9266..a758cc5640 100644 --- a/src/import/curl-util.h +++ b/src/import/curl-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/import/export-raw.c b/src/import/export-raw.c index 28c87594d6..db06e11b87 100644 --- a/src/import/export-raw.c +++ b/src/import/export-raw.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/import/export-raw.h b/src/import/export-raw.h index e5e298f6ab..8e723d4908 100644 --- a/src/import/export-raw.h +++ b/src/import/export-raw.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/import/export-tar.c b/src/import/export-tar.c index 2bbec661e6..d79c27f2d0 100644 --- a/src/import/export-tar.c +++ b/src/import/export-tar.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/import/export-tar.h b/src/import/export-tar.h index 9061e7515d..1e3c8bb80c 100644 --- a/src/import/export-tar.h +++ b/src/import/export-tar.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/import/export.c b/src/import/export.c index 27efc3b099..cc98c33ef6 100644 --- a/src/import/export.c +++ b/src/import/export.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/import/import-common.c b/src/import/import-common.c index 8a48bd7bf9..18a30be36d 100644 --- a/src/import/import-common.c +++ b/src/import/import-common.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/import/import-common.h b/src/import/import-common.h index 7b60de80c2..07d3250e71 100644 --- a/src/import/import-common.h +++ b/src/import/import-common.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/import/import-compress.c b/src/import/import-compress.c index d4ff178f60..f1766bbe3b 100644 --- a/src/import/import-compress.c +++ b/src/import/import-compress.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/import/import-compress.h b/src/import/import-compress.h index 0a13232554..6b59d0724b 100644 --- a/src/import/import-compress.h +++ b/src/import/import-compress.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/import/import-raw.c b/src/import/import-raw.c index 7593f064fc..fd6b9f7703 100644 --- a/src/import/import-raw.c +++ b/src/import/import-raw.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/import/import-raw.h b/src/import/import-raw.h index 626d965cf8..4f543e0883 100644 --- a/src/import/import-raw.h +++ b/src/import/import-raw.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/import/import-tar.c b/src/import/import-tar.c index c7983c04be..8b81324fde 100644 --- a/src/import/import-tar.c +++ b/src/import/import-tar.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/import/import-tar.h b/src/import/import-tar.h index d12391572d..24abe06c8f 100644 --- a/src/import/import-tar.h +++ b/src/import/import-tar.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/import/import.c b/src/import/import.c index 15505de924..4e442ee84a 100644 --- a/src/import/import.c +++ b/src/import/import.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/import/importd.c b/src/import/importd.c index 1b777c32b6..d2a5867a6e 100644 --- a/src/import/importd.c +++ b/src/import/importd.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/import/pull-common.c b/src/import/pull-common.c index a83cffffa0..d301d4d79e 100644 --- a/src/import/pull-common.c +++ b/src/import/pull-common.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/import/pull-common.h b/src/import/pull-common.h index ea228bb5c8..929a131c88 100644 --- a/src/import/pull-common.h +++ b/src/import/pull-common.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/import/pull-job.c b/src/import/pull-job.c index 824fa246ec..6bcf35ef4e 100644 --- a/src/import/pull-job.c +++ b/src/import/pull-job.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/import/pull-job.h b/src/import/pull-job.h index 56a74a34ef..998857035a 100644 --- a/src/import/pull-job.h +++ b/src/import/pull-job.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/import/pull-raw.c b/src/import/pull-raw.c index 03bfb51756..8a16602c3e 100644 --- a/src/import/pull-raw.c +++ b/src/import/pull-raw.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/import/pull-raw.h b/src/import/pull-raw.h index 0e4e1daf0e..8f6d16eb3a 100644 --- a/src/import/pull-raw.h +++ b/src/import/pull-raw.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/import/pull-tar.c b/src/import/pull-tar.c index 2e48167c54..afb13366f0 100644 --- a/src/import/pull-tar.c +++ b/src/import/pull-tar.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/import/pull-tar.h b/src/import/pull-tar.h index 9f02f1ec71..7e63e496d8 100644 --- a/src/import/pull-tar.h +++ b/src/import/pull-tar.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/import/pull.c b/src/import/pull.c index e0631bdeaf..72604a6a74 100644 --- a/src/import/pull.c +++ b/src/import/pull.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/import/qcow2-util.c b/src/import/qcow2-util.c index 47dabaa86e..ee2121cc36 100644 --- a/src/import/qcow2-util.c +++ b/src/import/qcow2-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/import/qcow2-util.h b/src/import/qcow2-util.h index be7fd1d0c9..6dddac8cdf 100644 --- a/src/import/qcow2-util.h +++ b/src/import/qcow2-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/import/test-qcow2.c b/src/import/test-qcow2.c index 4b60079619..b820253d71 100644 --- a/src/import/test-qcow2.c +++ b/src/import/test-qcow2.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/initctl/initctl.c b/src/initctl/initctl.c index 7e51735df0..3e57afb997 100644 --- a/src/initctl/initctl.c +++ b/src/initctl/initctl.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/journal-remote/journal-gatewayd.c b/src/journal-remote/journal-gatewayd.c index f5fe165fa3..60d897758b 100644 --- a/src/journal-remote/journal-gatewayd.c +++ b/src/journal-remote/journal-gatewayd.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/journal-remote/journal-remote-parse.c b/src/journal-remote/journal-remote-parse.c index 3ff40228a0..3864647eb7 100644 --- a/src/journal-remote/journal-remote-parse.c +++ b/src/journal-remote/journal-remote-parse.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/journal-remote/journal-remote-parse.h b/src/journal-remote/journal-remote-parse.h index 58cb5e70df..0b8b6af736 100644 --- a/src/journal-remote/journal-remote-parse.h +++ b/src/journal-remote/journal-remote-parse.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/journal-remote/journal-remote-write.c b/src/journal-remote/journal-remote-write.c index d8250378b0..5fab74e5cc 100644 --- a/src/journal-remote/journal-remote-write.c +++ b/src/journal-remote/journal-remote-write.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/journal-remote/journal-remote-write.h b/src/journal-remote/journal-remote-write.h index 7f47f8b014..6b645a353c 100644 --- a/src/journal-remote/journal-remote-write.h +++ b/src/journal-remote/journal-remote-write.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/journal-remote/journal-remote.c b/src/journal-remote/journal-remote.c index cfe111fd91..3ce6fe27b3 100644 --- a/src/journal-remote/journal-remote.c +++ b/src/journal-remote/journal-remote.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -645,7 +643,7 @@ static int setup_microhttpd_server(RemoteServer *s, { MHD_OPTION_NOTIFY_COMPLETED, (intptr_t) request_meta_free}, { MHD_OPTION_EXTERNAL_LOGGER, (intptr_t) microhttpd_logger}, { MHD_OPTION_LISTEN_SOCKET, fd}, - { MHD_OPTION_CONNECTION_MEMORY_LIMIT, DATA_SIZE_MAX}, + { MHD_OPTION_CONNECTION_MEMORY_LIMIT, 128*1024}, { MHD_OPTION_END}, { MHD_OPTION_END}, { MHD_OPTION_END}, diff --git a/src/journal-remote/journal-remote.h b/src/journal-remote/journal-remote.h index fd81a1c592..6466a1c101 100644 --- a/src/journal-remote/journal-remote.h +++ b/src/journal-remote/journal-remote.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/journal-remote/journal-upload-journal.c b/src/journal-remote/journal-upload-journal.c index f9d2385215..fc8f63c9e3 100644 --- a/src/journal-remote/journal-upload-journal.c +++ b/src/journal-remote/journal-upload-journal.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/journal-remote/journal-upload.c b/src/journal-remote/journal-upload.c index 6302266ccb..440563e7d3 100644 --- a/src/journal-remote/journal-upload.c +++ b/src/journal-remote/journal-upload.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/journal-remote/microhttpd-util.c b/src/journal-remote/microhttpd-util.c index 09e6da0031..c65c43186f 100644 --- a/src/journal-remote/microhttpd-util.c +++ b/src/journal-remote/microhttpd-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/journal-remote/microhttpd-util.h b/src/journal-remote/microhttpd-util.h index cba57403a3..70c4d29c0f 100644 --- a/src/journal-remote/microhttpd-util.h +++ b/src/journal-remote/microhttpd-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/journal/audit-type.c b/src/journal/audit-type.c index 086bf7e7e3..71e8790ca8 100644 --- a/src/journal/audit-type.c +++ b/src/journal/audit-type.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/journal/audit-type.h b/src/journal/audit-type.h index fa5284e027..1dd2163707 100644 --- a/src/journal/audit-type.h +++ b/src/journal/audit-type.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/journal/cat.c b/src/journal/cat.c index 7fd4198df8..08c844d44f 100644 --- a/src/journal/cat.c +++ b/src/journal/cat.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -34,7 +32,7 @@ #include "syslog-util.h" #include "util.h" -static char *arg_identifier = NULL; +static const char *arg_identifier = NULL; static int arg_priority = LOG_INFO; static bool arg_level_prefix = true; @@ -82,14 +80,10 @@ static int parse_argv(int argc, char *argv[]) { return version(); case 't': - free(arg_identifier); if (isempty(optarg)) arg_identifier = NULL; - else { - arg_identifier = strdup(optarg); - if (!arg_identifier) - return log_oom(); - } + else + arg_identifier = optarg; break; case 'p': diff --git a/src/journal/catalog.c b/src/journal/catalog.c index fcaa54aa0c..164a3a15f2 100644 --- a/src/journal/catalog.c +++ b/src/journal/catalog.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -94,25 +92,87 @@ const struct hash_ops catalog_hash_ops = { .compare = catalog_compare_func }; +static bool next_header(const char **s) { + const char *e; + + e = strchr(*s, '\n'); + + /* Unexpected end */ + if (!e) + return false; + + /* End of headers */ + if (e == *s) + return false; + + *s = e + 1; + return true; +} + +static const char *skip_header(const char *s) { + while (next_header(&s)) + ; + return s; +} + +static char *combine_entries(const char *one, const char *two) { + const char *b1, *b2; + size_t l1, l2, n; + char *dest, *p; + + /* Find split point of headers to body */ + b1 = skip_header(one); + b2 = skip_header(two); + + l1 = strlen(one); + l2 = strlen(two); + dest = new(char, l1 + l2 + 1); + if (!dest) { + log_oom(); + return NULL; + } + + p = dest; + + /* Headers from @one */ + n = b1 - one; + p = mempcpy(p, one, n); + + /* Headers from @two, these will only be found if not present above */ + n = b2 - two; + p = mempcpy(p, two, n); + + /* Body from @one */ + n = l1 - (b1 - one); + if (n > 0) { + memcpy(p, b1, n); + p += n; + + /* Body from @two */ + } else { + n = l2 - (b2 - two); + memcpy(p, b2, n); + p += n; + } + + assert(p - dest <= (ptrdiff_t)(l1 + l2)); + p[0] = '\0'; + return dest; +} + static int finish_item( Hashmap *h, - struct strbuf *sb, sd_id128_t id, const char *language, - const char *payload) { + char *payload) { - ssize_t offset; _cleanup_free_ CatalogItem *i = NULL; + _cleanup_free_ char *combined = NULL, *prev = NULL; int r; assert(h); - assert(sb); assert(payload); - offset = strbuf_add_string(sb, payload, strlen(payload)); - if (offset < 0) - return log_oom(); - i = new0(CatalogItem, 1); if (!i) return log_oom(); @@ -122,17 +182,27 @@ static int finish_item( assert(strlen(language) > 1 && strlen(language) < 32); strcpy(i->language, language); } - i->offset = htole64((uint64_t) offset); - r = hashmap_put(h, i, i); - if (r == -EEXIST) { - log_warning("Duplicate entry for " SD_ID128_FORMAT_STR ".%s, ignoring.", - SD_ID128_FORMAT_VAL(id), language ? language : "C"); - return 0; - } else if (r < 0) - return r; + prev = hashmap_get(h, i); + + /* Already have such an item, combine them */ + if (prev) { + combined = combine_entries(payload, prev); + if (!combined) + return log_oom(); + r = hashmap_update(h, i, combined); + if (r < 0) + return r; + combined = NULL; + + /* A new item */ + } else { + r = hashmap_put(h, i, payload); + if (r < 0) + return r; + i = NULL; + } - i = NULL; return 0; } @@ -189,7 +259,7 @@ static int catalog_entry_lang(const char* filename, int line, return 0; } -int catalog_import_file(Hashmap *h, struct strbuf *sb, const char *path) { +int catalog_import_file(Hashmap *h, const char *path) { _cleanup_fclose_ FILE *f = NULL; _cleanup_free_ char *payload = NULL; unsigned n = 0; @@ -199,7 +269,6 @@ int catalog_import_file(Hashmap *h, struct strbuf *sb, const char *path) { int r; assert(h); - assert(sb); assert(path); f = fopen(path, "re"); @@ -254,10 +323,11 @@ int catalog_import_file(Hashmap *h, struct strbuf *sb, const char *path) { if (sd_id128_from_string(line + 2 + 1, &jd) >= 0) { if (got_id) { - r = finish_item(h, sb, id, lang ?: deflang, payload); + r = finish_item(h, id, lang ?: deflang, payload); if (r < 0) return r; + payload = NULL; lang = mfree(lang); } @@ -310,9 +380,10 @@ int catalog_import_file(Hashmap *h, struct strbuf *sb, const char *path) { } if (got_id) { - r = finish_item(h, sb, id, lang ?: deflang, payload); + r = finish_item(h, id, lang ?: deflang, payload); if (r < 0) return r; + payload = NULL; } return 0; @@ -389,8 +460,10 @@ int catalog_update(const char* database, const char* root, const char* const* di _cleanup_strv_free_ char **files = NULL; char **f; struct strbuf *sb = NULL; - _cleanup_hashmap_free_free_ Hashmap *h = NULL; + _cleanup_hashmap_free_free_free_ Hashmap *h = NULL; _cleanup_free_ CatalogItem *items = NULL; + ssize_t offset; + char *payload; CatalogItem *i; Iterator j; unsigned n; @@ -413,7 +486,7 @@ int catalog_update(const char* database, const char* root, const char* const* di STRV_FOREACH(f, files) { log_debug("Reading file '%s'", *f); - r = catalog_import_file(h, sb, *f); + r = catalog_import_file(h, *f); if (r < 0) { log_error_errno(r, "Failed to import file '%s': %m", *f); goto finish; @@ -426,8 +499,6 @@ int catalog_update(const char* database, const char* root, const char* const* di } else log_debug("Found %u items in catalog.", hashmap_size(h)); - strbuf_complete(sb); - items = new(CatalogItem, hashmap_size(h)); if (!items) { r = log_oom(); @@ -435,16 +506,25 @@ int catalog_update(const char* database, const char* root, const char* const* di } n = 0; - HASHMAP_FOREACH(i, h, j) { + HASHMAP_FOREACH_KEY(payload, i, h, j) { log_debug("Found " SD_ID128_FORMAT_STR ", language %s", SD_ID128_FORMAT_VAL(i->id), isempty(i->language) ? "C" : i->language); + + offset = strbuf_add_string(sb, payload, strlen(payload)); + if (offset < 0) { + r = log_oom(); + goto finish; + } + i->offset = htole64((uint64_t) offset); items[n++] = *i; } assert(n == hashmap_size(h)); qsort_safe(items, n, sizeof(CatalogItem), catalog_compare_func); + strbuf_complete(sb); + sz = write_catalog(database, sb, items, n); if (sz < 0) r = log_error_errno(sz, "Failed to write %s: %m", database); @@ -587,7 +667,7 @@ finish: static char *find_header(const char *s, const char *header) { for (;;) { - const char *v, *e; + const char *v; v = startswith(s, header); if (v) { @@ -595,16 +675,8 @@ static char *find_header(const char *s, const char *header) { return strndup(v, strcspn(v, NEWLINE)); } - /* End of text */ - e = strchr(s, '\n'); - if (!e) + if (!next_header(&s)) return NULL; - - /* End of header */ - if (e == s) - return NULL; - - s = e + 1; } } diff --git a/src/journal/catalog.h b/src/journal/catalog.h index bcc73c2631..1b1014b335 100644 --- a/src/journal/catalog.h +++ b/src/journal/catalog.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** @@ -28,7 +26,7 @@ #include "hashmap.h" #include "strbuf.h" -int catalog_import_file(Hashmap *h, struct strbuf *sb, const char *path); +int catalog_import_file(Hashmap *h, const char *path); int catalog_update(const char* database, const char* root, const char* const* dirs); int catalog_get(const char* database, sd_id128_t id, char **data); int catalog_list(FILE *f, const char* database, bool oneline); diff --git a/src/journal/compress.c b/src/journal/compress.c index 78935fee74..1933b87b00 100644 --- a/src/journal/compress.c +++ b/src/journal/compress.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/journal/compress.h b/src/journal/compress.h index 758598730a..c138099d9a 100644 --- a/src/journal/compress.h +++ b/src/journal/compress.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/journal/fsprg.c b/src/journal/fsprg.c index 12ae7449f9..8956eb1d58 100644 --- a/src/journal/fsprg.c +++ b/src/journal/fsprg.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /* * fsprg v0.1 - (seekable) forward-secure pseudorandom generator * Copyright (C) 2012 B. Poettering diff --git a/src/journal/fsprg.h b/src/journal/fsprg.h index b79221fc2e..829b56e240 100644 --- a/src/journal/fsprg.h +++ b/src/journal/fsprg.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #ifndef __fsprgh__ #define __fsprgh__ diff --git a/src/journal/journal-authenticate.c b/src/journal/journal-authenticate.c index 45d7f4b340..d8af113d3f 100644 --- a/src/journal/journal-authenticate.c +++ b/src/journal/journal-authenticate.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/journal/journal-authenticate.h b/src/journal/journal-authenticate.h index 118bb1367b..6c87319ede 100644 --- a/src/journal/journal-authenticate.h +++ b/src/journal/journal-authenticate.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/journal/journal-def.h b/src/journal/journal-def.h index c003ac05dd..67edb43960 100644 --- a/src/journal/journal-def.h +++ b/src/journal/journal-def.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c index da8039712f..994d1ec5d8 100644 --- a/src/journal/journal-file.c +++ b/src/journal/journal-file.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -100,7 +98,7 @@ static int journal_file_set_online(JournalFile *f) { if (mmap_cache_got_sigbus(f->mmap, f->fd)) return -EIO; - switch(f->header->state) { + switch (f->header->state) { case STATE_ONLINE: return 0; @@ -247,6 +245,7 @@ static int journal_file_refresh_header(JournalFile *f) { int r; assert(f); + assert(f->header); r = sd_id128_get_machine(&f->header->machine_id); if (r < 0) @@ -273,6 +272,7 @@ static int journal_file_verify_header(JournalFile *f) { uint32_t flags; assert(f); + assert(f->header); if (memcmp(f->header->signature, HEADER_SIGNATURE, 8)) return -EBADMSG; @@ -381,6 +381,7 @@ static int journal_file_allocate(JournalFile *f, uint64_t offset, uint64_t size) int r; assert(f); + assert(f->header); /* We assume that this file is not sparse, and we know that * for sure, since we always call posix_fallocate() @@ -544,6 +545,7 @@ static uint64_t journal_file_entry_seqnum(JournalFile *f, uint64_t *seqnum) { uint64_t r; assert(f); + assert(f->header); r = le64toh(f->header->tail_entry_seqnum) + 1; @@ -573,6 +575,7 @@ int journal_file_append_object(JournalFile *f, ObjectType type, uint64_t size, O void *t; assert(f); + assert(f->header); assert(type > OBJECT_UNUSED && type < _OBJECT_TYPE_MAX); assert(size >= sizeof(ObjectHeader)); assert(offset); @@ -622,6 +625,7 @@ static int journal_file_setup_data_hash_table(JournalFile *f) { int r; assert(f); + assert(f->header); /* We estimate that we need 1 hash table entry per 768 bytes of journal file and we want to make sure we never get @@ -655,6 +659,7 @@ static int journal_file_setup_field_hash_table(JournalFile *f) { int r; assert(f); + assert(f->header); /* We use a fixed size hash table for the fields as this * number should grow very slowly only */ @@ -681,6 +686,7 @@ int journal_file_map_data_hash_table(JournalFile *f) { int r; assert(f); + assert(f->header); if (f->data_hash_table) return 0; @@ -706,6 +712,7 @@ int journal_file_map_field_hash_table(JournalFile *f) { int r; assert(f); + assert(f->header); if (f->field_hash_table) return 0; @@ -735,6 +742,8 @@ static int journal_file_link_field( int r; assert(f); + assert(f->header); + assert(f->field_hash_table); assert(o); assert(offset > 0); @@ -778,6 +787,8 @@ static int journal_file_link_data( int r; assert(f); + assert(f->header); + assert(f->data_hash_table); assert(o); assert(offset > 0); @@ -826,6 +837,7 @@ int journal_file_find_field_object_with_hash( int r; assert(f); + assert(f->header); assert(field && size > 0); /* If the field hash table is empty, we can't find anything */ @@ -897,6 +909,7 @@ int journal_file_find_data_object_with_hash( int r; assert(f); + assert(f->header); assert(data || size == 0); /* If there's no data hash table, then there's no entry. */ @@ -1193,6 +1206,7 @@ static int link_entry_into_array(JournalFile *f, Object *o; assert(f); + assert(f->header); assert(first); assert(idx); assert(p > 0); @@ -1313,6 +1327,7 @@ static int journal_file_link_entry(JournalFile *f, Object *o, uint64_t offset) { int r; assert(f); + assert(f->header); assert(o); assert(offset > 0); @@ -1363,6 +1378,7 @@ static int journal_file_append_entry_internal( int r; assert(f); + assert(f->header); assert(items || n_items == 0); assert(ts); @@ -1507,6 +1523,7 @@ int journal_file_append_entry(JournalFile *f, const dual_timestamp *ts, const st struct dual_timestamp _ts; assert(f); + assert(f->header); assert(iovec || n_iovec == 0); if (!ts) { @@ -1514,10 +1531,6 @@ int journal_file_append_entry(JournalFile *f, const dual_timestamp *ts, const st ts = &_ts; } - if (f->tail_entry_monotonic_valid && - ts->monotonic < le64toh(f->header->tail_entry_monotonic)) - return -EINVAL; - #ifdef HAVE_GCRYPT r = journal_file_maybe_append_tag(f, ts->realtime); if (r < 0) @@ -2022,6 +2035,8 @@ int journal_file_move_to_entry_by_seqnum( direction_t direction, Object **ret, uint64_t *offset) { + assert(f); + assert(f->header); return generic_array_bisect(f, le64toh(f->header->entry_array_offset), @@ -2057,6 +2072,8 @@ int journal_file_move_to_entry_by_realtime( direction_t direction, Object **ret, uint64_t *offset) { + assert(f); + assert(f->header); return generic_array_bisect(f, le64toh(f->header->entry_array_offset), @@ -2149,7 +2166,9 @@ void journal_file_save_location(JournalFile *f, Object *o, uint64_t offset) { int journal_file_compare_locations(JournalFile *af, JournalFile *bf) { assert(af); + assert(af->header); assert(bf); + assert(bf->header); assert(af->location_type == LOCATION_SEEK); assert(bf->location_type == LOCATION_SEEK); @@ -2209,6 +2228,7 @@ int journal_file_next_entry( int r; assert(f); + assert(f->header); n = le64toh(f->header->n_entries); if (n <= 0) @@ -2491,6 +2511,7 @@ void journal_file_dump(JournalFile *f) { uint64_t p; assert(f); + assert(f->header); journal_file_print_header(f); @@ -2575,6 +2596,7 @@ void journal_file_print_header(JournalFile *f) { char bytes[FORMAT_BYTES_MAX]; assert(f); + assert(f->header); printf("File Path: %s\n" "File ID: %s\n" @@ -3180,6 +3202,7 @@ void journal_default_metrics(JournalMetrics *m, int fd) { int journal_file_get_cutoff_realtime_usec(JournalFile *f, usec_t *from, usec_t *to) { assert(f); + assert(f->header); assert(from || to); if (from) { @@ -3243,6 +3266,7 @@ int journal_file_get_cutoff_monotonic_usec(JournalFile *f, sd_id128_t boot_id, u bool journal_file_rotate_suggested(JournalFile *f, usec_t max_file_usec) { assert(f); + assert(f->header); /* If we gained new header fields we gained new features, * hence suggest a rotation */ diff --git a/src/journal/journal-file.h b/src/journal/journal-file.h index 7970ebe738..07b9561b8a 100644 --- a/src/journal/journal-file.h +++ b/src/journal/journal-file.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/journal/journal-internal.h b/src/journal/journal-internal.h index fa5ca11636..7639325acf 100644 --- a/src/journal/journal-internal.h +++ b/src/journal/journal-internal.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** @@ -103,18 +101,27 @@ struct sd_journal { unsigned current_invalidate_counter, last_invalidate_counter; usec_t last_process_usec; + /* Iterating through unique fields and their data values */ char *unique_field; JournalFile *unique_file; uint64_t unique_offset; + /* Iterating through known fields */ + JournalFile *fields_file; + uint64_t fields_offset; + uint64_t fields_hash_table_index; + char *fields_buffer; + size_t fields_buffer_allocated; + int flags; - 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. */ + bool on_network:1; + bool no_new_files:1; + bool unique_file_lost:1; /* 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. */ + bool fields_file_lost:1; bool has_runtime_files:1; bool has_persistent_files:1; diff --git a/src/journal/journal-qrcode.c b/src/journal/journal-qrcode.c index 257ddb302b..e38730d65c 100644 --- a/src/journal/journal-qrcode.c +++ b/src/journal/journal-qrcode.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/journal/journal-qrcode.h b/src/journal/journal-qrcode.h index 7d14e8754b..ef39085561 100644 --- a/src/journal/journal-qrcode.h +++ b/src/journal/journal-qrcode.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/journal/journal-send.c b/src/journal/journal-send.c index def4caab92..c7d670f4ff 100644 --- a/src/journal/journal-send.c +++ b/src/journal/journal-send.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/journal/journal-vacuum.c b/src/journal/journal-vacuum.c index 4b5fc76eb1..05e97620ae 100644 --- a/src/journal/journal-vacuum.c +++ b/src/journal/journal-vacuum.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/journal/journal-vacuum.h b/src/journal/journal-vacuum.h index 49ab90af91..1e750a2170 100644 --- a/src/journal/journal-vacuum.h +++ b/src/journal/journal-vacuum.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/journal/journal-verify.c b/src/journal/journal-verify.c index 715847e018..b968e89bb8 100644 --- a/src/journal/journal-verify.c +++ b/src/journal/journal-verify.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/journal/journal-verify.h b/src/journal/journal-verify.h index e392ab61d7..8f0eaf6daa 100644 --- a/src/journal/journal-verify.h +++ b/src/journal/journal-verify.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c index 1686f38c4e..273242bea6 100644 --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -69,6 +67,8 @@ #include "strv.h" #include "syslog-util.h" #include "terminal-util.h" +#include "udev.h" +#include "udev-util.h" #include "unit-name.h" #include "user-util.h" @@ -136,6 +136,8 @@ static enum { ACTION_SYNC, ACTION_ROTATE, ACTION_VACUUM, + ACTION_LIST_FIELDS, + ACTION_LIST_FIELD_NAMES, } arg_action = ACTION_SHOW; typedef struct BootId { @@ -145,6 +147,84 @@ typedef struct BootId { LIST_FIELDS(struct BootId, boot_list); } BootId; +static int add_matches_for_device(sd_journal *j, const char *devpath) { + int r; + _cleanup_udev_unref_ struct udev *udev = NULL; + _cleanup_udev_device_unref_ struct udev_device *device = NULL; + struct udev_device *d = NULL; + struct stat st; + + assert(j); + assert(devpath); + + if (!path_startswith(devpath, "/dev/")) { + log_error("Devpath does not start with /dev/"); + return -EINVAL; + } + + udev = udev_new(); + if (!udev) + return log_oom(); + + r = stat(devpath, &st); + if (r < 0) + log_error_errno(errno, "Couldn't stat file: %m"); + + d = device = udev_device_new_from_devnum(udev, S_ISBLK(st.st_mode) ? 'b' : 'c', st.st_rdev); + if (!device) + return log_error_errno(errno, "Failed to get udev device from devnum %u:%u: %m", major(st.st_rdev), minor(st.st_rdev)); + + while (d) { + _cleanup_free_ char *match = NULL; + const char *subsys, *sysname, *devnode; + + subsys = udev_device_get_subsystem(d); + if (!subsys) { + d = udev_device_get_parent(d); + continue; + } + + sysname = udev_device_get_sysname(d); + if (!sysname) { + d = udev_device_get_parent(d); + continue; + } + + match = strjoin("_KERNEL_DEVICE=+", subsys, ":", sysname, NULL); + if (!match) + return log_oom(); + + r = sd_journal_add_match(j, match, 0); + if (r < 0) + return log_error_errno(r, "Failed to add match: %m"); + + devnode = udev_device_get_devnode(d); + if (devnode) { + _cleanup_free_ char *match1 = NULL; + + r = stat(devnode, &st); + if (r < 0) + return log_error_errno(r, "Failed to stat() device node \"%s\": %m", devnode); + + r = asprintf(&match1, "_KERNEL_DEVICE=%c%u:%u", S_ISBLK(st.st_mode) ? 'b' : 'c', major(st.st_rdev), minor(st.st_rdev)); + if (r < 0) + return log_oom(); + + r = sd_journal_add_match(j, match1, 0); + if (r < 0) + return log_error_errno(r, "Failed to add match: %m"); + } + + d = udev_device_get_parent(d); + } + + r = add_match_this_boot(j, arg_machine); + if (r < 0) + return log_error_errno(r, "Failed to add match for the current boot: %m"); + + return 0; +} + static void pager_open_if_enabled(void) { if (arg_no_pager) @@ -244,6 +324,7 @@ static void help(void) { "\nCommands:\n" " -h --help Show this help text\n" " --version Show package version\n" + " -N --fields List all field names currently used\n" " -F --field=FIELD List all values that a specified field takes\n" " --disk-usage Show total disk usage of all journal files\n" " --vacuum-size=BYTES Reduce disk usage below specified size\n" @@ -340,6 +421,7 @@ static int parse_argv(int argc, char *argv[]) { { "unit", required_argument, NULL, 'u' }, { "user-unit", required_argument, NULL, ARG_USER_UNIT }, { "field", required_argument, NULL, 'F' }, + { "fields", no_argument, NULL, 'N' }, { "catalog", no_argument, NULL, 'x' }, { "list-catalog", no_argument, NULL, ARG_LIST_CATALOG }, { "dump-catalog", no_argument, NULL, ARG_DUMP_CATALOG }, @@ -361,7 +443,7 @@ static int parse_argv(int argc, char *argv[]) { assert(argc >= 0); assert(argv); - while ((c = getopt_long(argc, argv, "hefo:aln::qmb::kD:p:c:S:U:t:u:F:xrM:", options, NULL)) >= 0) + while ((c = getopt_long(argc, argv, "hefo:aln::qmb::kD:p:c:S:U:t:u:NF:xrM:", options, NULL)) >= 0) switch (c) { @@ -698,9 +780,14 @@ static int parse_argv(int argc, char *argv[]) { break; case 'F': + arg_action = ACTION_LIST_FIELDS; arg_field = optarg; break; + case 'N': + arg_action = ACTION_LIST_FIELD_NAMES; + break; + case 'x': arg_catalog = true; break; @@ -825,13 +912,12 @@ static int add_matches(sd_journal *j, char **args) { have_term = false; } else if (path_is_absolute(*i)) { - _cleanup_free_ char *p, *t = NULL, *t2 = NULL; + _cleanup_free_ char *p, *t = NULL, *t2 = NULL, *interpreter = NULL; const char *path; - _cleanup_free_ char *interpreter = NULL; struct stat st; p = canonicalize_file_name(*i); - path = p ? p : *i; + path = p ?: *i; if (lstat(path, &st) < 0) return log_error_errno(errno, "Couldn't stat file: %m"); @@ -845,34 +931,37 @@ static int add_matches(sd_journal *j, char **args) { return log_oom(); t = strappend("_COMM=", comm); + if (!t) + return log_oom(); /* Append _EXE only if the interpreter is not a link. Otherwise, it might be outdated often. */ - if (lstat(interpreter, &st) == 0 && - !S_ISLNK(st.st_mode)) { + if (lstat(interpreter, &st) == 0 && !S_ISLNK(st.st_mode)) { t2 = strappend("_EXE=", interpreter); if (!t2) return log_oom(); } - } else + } else { t = strappend("_EXE=", path); - } else if (S_ISCHR(st.st_mode)) - (void) asprintf(&t, "_KERNEL_DEVICE=c%u:%u", major(st.st_rdev), minor(st.st_rdev)); - else if (S_ISBLK(st.st_mode)) - (void) asprintf(&t, "_KERNEL_DEVICE=b%u:%u", major(st.st_rdev), minor(st.st_rdev)); - else { + if (!t) + return log_oom(); + } + + r = sd_journal_add_match(j, t, 0); + + if (r >=0 && t2) + r = sd_journal_add_match(j, t2, 0); + + } else if (S_ISCHR(st.st_mode) || S_ISBLK(st.st_mode)) { + r = add_matches_for_device(j, path); + if (r < 0) + return r; + } else { log_error("File is neither a device node, nor regular file, nor executable: %s", *i); return -EINVAL; } - if (!t) - return log_oom(); - - r = sd_journal_add_match(j, t, 0); - if (t2) - r = sd_journal_add_match(j, t2, 0); have_term = true; - } else { r = sd_journal_add_match(j, *i, 0); have_term = true; @@ -2003,6 +2092,8 @@ int main(int argc, char *argv[]) { case ACTION_DISK_USAGE: case ACTION_LIST_BOOTS: case ACTION_VACUUM: + case ACTION_LIST_FIELDS: + case ACTION_LIST_FIELD_NAMES: /* These ones require access to the journal files, continue below. */ break; @@ -2085,7 +2176,20 @@ int main(int argc, char *argv[]) { goto finish; } + case ACTION_LIST_FIELD_NAMES: { + const char *field; + + SD_JOURNAL_FOREACH_FIELD(j, field) { + printf("%s\n", field); + n_shown ++; + } + + r = 0; + goto finish; + } + case ACTION_SHOW: + case ACTION_LIST_FIELDS: break; default: @@ -2139,10 +2243,12 @@ int main(int argc, char *argv[]) { log_debug("Journal filter: %s", filter); } - if (arg_field) { + if (arg_action == ACTION_LIST_FIELDS) { const void *data; size_t size; + assert(arg_field); + r = sd_journal_set_data_threshold(j, 0); if (r < 0) { log_error_errno(r, "Failed to unset data size threshold: %m"); diff --git a/src/journal/journald-audit.c b/src/journal/journald-audit.c index 28970131e7..b2eb8a33ef 100644 --- a/src/journal/journald-audit.c +++ b/src/journal/journald-audit.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/journal/journald-audit.h b/src/journal/journald-audit.h index 5c88bb6383..8c7457778c 100644 --- a/src/journal/journald-audit.h +++ b/src/journal/journald-audit.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/journal/journald-console.c b/src/journal/journald-console.c index 04487c29b5..fcc9f25814 100644 --- a/src/journal/journald-console.c +++ b/src/journal/journald-console.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/journal/journald-console.h b/src/journal/journald-console.h index d8af2267e1..dda07e2c28 100644 --- a/src/journal/journald-console.h +++ b/src/journal/journald-console.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/journal/journald-kmsg.c b/src/journal/journald-kmsg.c index 1306ad6974..eb1ac90e98 100644 --- a/src/journal/journald-kmsg.c +++ b/src/journal/journald-kmsg.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/journal/journald-kmsg.h b/src/journal/journald-kmsg.h index 9a9d089967..dab49f1e8c 100644 --- a/src/journal/journald-kmsg.h +++ b/src/journal/journald-kmsg.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/journal/journald-native.c b/src/journal/journald-native.c index f80a6ebfe5..3d8f05996b 100644 --- a/src/journal/journald-native.c +++ b/src/journal/journald-native.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/journal/journald-native.h b/src/journal/journald-native.h index 2f9d458fb5..c13b80aa4f 100644 --- a/src/journal/journald-native.h +++ b/src/journal/journald-native.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/journal/journald-rate-limit.c b/src/journal/journald-rate-limit.c index 1c406aef8e..6f6a90fe4e 100644 --- a/src/journal/journald-rate-limit.c +++ b/src/journal/journald-rate-limit.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/journal/journald-rate-limit.h b/src/journal/journald-rate-limit.h index 466239d3c6..bb0abb7ee9 100644 --- a/src/journal/journald-rate-limit.h +++ b/src/journal/journald-rate-limit.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c index 8ff7ef943b..ee2db8d29f 100644 --- a/src/journal/journald-server.c +++ b/src/journal/journald-server.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -244,7 +242,6 @@ static int open_journal( int flags, bool seal, JournalMetrics *metrics, - JournalFile *template, JournalFile **ret) { int r; JournalFile *f; @@ -254,9 +251,9 @@ static int open_journal( assert(ret); if (reliably) - r = journal_file_open_reliably(fname, flags, 0640, s->compress, seal, metrics, s->mmap, template, &f); + r = journal_file_open_reliably(fname, flags, 0640, s->compress, seal, metrics, s->mmap, NULL, &f); else - r = journal_file_open(fname, flags, 0640, s->compress, seal, metrics, s->mmap, template, &f); + r = journal_file_open(fname, flags, 0640, s->compress, seal, metrics, s->mmap, NULL, &f); if (r < 0) return r; @@ -308,7 +305,7 @@ static JournalFile* find_journal(Server *s, uid_t uid) { journal_file_close(f); } - r = open_journal(s, true, p, O_RDWR|O_CREAT, s->seal, &s->system_metrics, NULL, &f); + r = open_journal(s, true, p, O_RDWR|O_CREAT, s->seal, &s->system_metrics, &f); if (r < 0) return s->system_journal; @@ -1000,7 +997,7 @@ static int system_journal_open(Server *s, bool flush_requested) { (void) mkdir(fn, 0755); fn = strjoina(fn, "/system.journal"); - r = open_journal(s, true, fn, O_RDWR|O_CREAT, s->seal, &s->system_metrics, NULL, &s->system_journal); + r = open_journal(s, true, fn, O_RDWR|O_CREAT, s->seal, &s->system_metrics, &s->system_journal); if (r >= 0) { server_add_acls(s->system_journal, 0); (void) determine_space_for(s, &s->system_metrics, "/var/log/journal/", "System journal", true, true, NULL, NULL); @@ -1023,7 +1020,7 @@ static int system_journal_open(Server *s, bool flush_requested) { * if it already exists, so that we can flush * it into the system journal */ - r = open_journal(s, false, fn, O_RDWR, false, &s->runtime_metrics, NULL, &s->runtime_journal); + r = open_journal(s, false, fn, O_RDWR, false, &s->runtime_metrics, &s->runtime_journal); if (r < 0) { if (r != -ENOENT) log_warning_errno(r, "Failed to open runtime journal: %m"); @@ -1040,7 +1037,7 @@ static int system_journal_open(Server *s, bool flush_requested) { (void) mkdir("/run/log/journal", 0755); (void) mkdir_parents(fn, 0750); - r = open_journal(s, true, fn, O_RDWR|O_CREAT, false, &s->runtime_metrics, NULL, &s->runtime_journal); + r = open_journal(s, true, fn, O_RDWR|O_CREAT, false, &s->runtime_metrics, &s->runtime_journal); if (r < 0) return log_error_errno(r, "Failed to open runtime journal: %m"); } diff --git a/src/journal/journald-server.h b/src/journal/journald-server.h index 49bbee0646..b9551dda1b 100644 --- a/src/journal/journald-server.h +++ b/src/journal/journald-server.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/journal/journald-stream.c b/src/journal/journald-stream.c index 90884b6929..6e8b405b53 100644 --- a/src/journal/journald-stream.c +++ b/src/journal/journald-stream.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/journal/journald-stream.h b/src/journal/journald-stream.h index e3497f0ded..db4c67fae3 100644 --- a/src/journal/journald-stream.h +++ b/src/journal/journald-stream.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/journal/journald-syslog.c b/src/journal/journald-syslog.c index 9f2ccdcc77..5153fd0cce 100644 --- a/src/journal/journald-syslog.c +++ b/src/journal/journald-syslog.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/journal/journald-syslog.h b/src/journal/journald-syslog.h index 3774ebdf05..46ad715314 100644 --- a/src/journal/journald-syslog.h +++ b/src/journal/journald-syslog.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/journal/journald-wall.c b/src/journal/journald-wall.c index 88bea3b86e..4d91fafffe 100644 --- a/src/journal/journald-wall.c +++ b/src/journal/journald-wall.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/journal/journald-wall.h b/src/journal/journald-wall.h index 45c52854a0..ebc2b89fa8 100644 --- a/src/journal/journald-wall.h +++ b/src/journal/journald-wall.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/journal/journald.c b/src/journal/journald.c index 293b788d03..272acb71c4 100644 --- a/src/journal/journald.c +++ b/src/journal/journald.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/journal/lookup3.h b/src/journal/lookup3.h index 3224473a6a..787921ffbf 100644 --- a/src/journal/lookup3.h +++ b/src/journal/lookup3.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once #include <inttypes.h> diff --git a/src/journal/mmap-cache.c b/src/journal/mmap-cache.c index eb4b092e80..9c0ce8ccbf 100644 --- a/src/journal/mmap-cache.c +++ b/src/journal/mmap-cache.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -40,9 +38,9 @@ typedef struct FileDescriptor FileDescriptor; struct Window { MMapCache *cache; - bool invalidated; - bool keep_always; - bool in_unused; + bool invalidated:1; + bool keep_always:1; + bool in_unused:1; int prot; void *ptr; @@ -78,7 +76,6 @@ struct MMapCache { unsigned n_hit, n_missed; - Hashmap *fds; Context *contexts[MMAP_CACHE_MAX_CONTEXTS]; @@ -174,10 +171,11 @@ _pure_ static bool window_matches(Window *w, int fd, int prot, uint64_t offset, offset + size <= w->offset + w->size; } -static Window *window_add(MMapCache *m) { +static Window *window_add(MMapCache *m, FileDescriptor *fd, int prot, bool keep_always, uint64_t offset, size_t size, void *ptr) { Window *w; assert(m); + assert(fd); if (!m->last_unused || m->n_windows <= WINDOWS_MIN) { @@ -195,6 +193,15 @@ static Window *window_add(MMapCache *m) { } w->cache = m; + w->fd = fd; + w->prot = prot; + w->keep_always = keep_always; + w->offset = offset; + w->size = size; + w->ptr = ptr; + + LIST_PREPEND(by_fd, fd->windows, w); + return w; } @@ -408,7 +415,7 @@ static int try_context( if (c->window->fd->sigbus) return -EIO; - c->window->keep_always |= keep_always; + c->window->keep_always = c->window->keep_always || keep_always; *ret = (uint8_t*) c->window->ptr + (offset - c->window->offset); return 1; @@ -454,12 +461,39 @@ static int find_mmap( return -ENOMEM; context_attach_window(c, w); - w->keep_always += keep_always; + w->keep_always = w->keep_always || keep_always; *ret = (uint8_t*) w->ptr + (offset - w->offset); return 1; } +static int mmap_try_harder(MMapCache *m, void *addr, int fd, int prot, int flags, uint64_t offset, size_t size, void **res) { + void *ptr; + + assert(m); + assert(fd >= 0); + assert(res); + + for (;;) { + int r; + + ptr = mmap(addr, size, prot, flags, fd, offset); + if (ptr != MAP_FAILED) + break; + if (errno != ENOMEM) + return -errno; + + r = make_room(m); + if (r < 0) + return r; + if (r == 0) + return -ENOMEM; + } + + *res = ptr; + return 0; +} + static int add_mmap( MMapCache *m, int fd, @@ -513,19 +547,9 @@ static int add_mmap( wsize = PAGE_ALIGN(st->st_size - woffset); } - for (;;) { - d = mmap(NULL, wsize, prot, MAP_SHARED, fd, woffset); - if (d != MAP_FAILED) - break; - if (errno != ENOMEM) - return -errno; - - r = make_room(m); - if (r < 0) - return r; - if (r == 0) - return -ENOMEM; - } + r = mmap_try_harder(m, NULL, fd, prot, MAP_SHARED, woffset, wsize, &d); + if (r < 0) + return r; c = context_add(m, context); if (!c) @@ -535,19 +559,10 @@ static int add_mmap( if (!f) goto outofmem; - w = window_add(m); + w = window_add(m, f, prot, keep_always, woffset, wsize, d); if (!w) goto outofmem; - w->keep_always = keep_always; - w->ptr = d; - w->offset = woffset; - w->prot = prot; - w->size = wsize; - w->fd = f; - - LIST_PREPEND(by_fd, f->windows, w); - context_detach_window(c); c->window = w; LIST_PREPEND(by_window, w->contexts, c); diff --git a/src/journal/mmap-cache.h b/src/journal/mmap-cache.h index 37ea7b4a9c..199d944647 100644 --- a/src/journal/mmap-cache.h +++ b/src/journal/mmap-cache.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c index 74a5e262f8..5a2a28a8d4 100644 --- a/src/journal/sd-journal.c +++ b/src/journal/sd-journal.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -1338,6 +1336,13 @@ static void remove_file_real(sd_journal *j, JournalFile *f) { j->unique_file_lost = true; } + if (j->fields_file == f) { + j->fields_file = ordered_hashmap_next(j->files, j->fields_file->path); + j->fields_offset = 0; + if (!j->fields_file) + j->fields_file_lost = true; + } + journal_file_close(f); j->current_invalidate_counter ++; @@ -1806,6 +1811,7 @@ _public_ void sd_journal_close(sd_journal *j) { free(j->path); free(j->prefix); free(j->unique_field); + free(j->fields_buffer); free(j); } @@ -2512,24 +2518,20 @@ _public_ int sd_journal_enumerate_unique(sd_journal *j, const void **data, size_ * traversed files. */ found = false; ORDERED_HASHMAP_FOREACH(of, j->files, i) { - Object *oo; - uint64_t op; - if (of == j->unique_file) break; - /* Skip this file it didn't have any fields - * indexed */ - if (JOURNAL_HEADER_CONTAINS(of->header, n_fields) && - le64toh(of->header->n_fields) <= 0) + /* Skip this file it didn't have any fields indexed */ + if (JOURNAL_HEADER_CONTAINS(of->header, n_fields) && le64toh(of->header->n_fields) <= 0) continue; - r = journal_file_find_data_object_with_hash(of, odata, ol, le64toh(o->data.hash), &oo, &op); + r = journal_file_find_data_object_with_hash(of, odata, ol, le64toh(o->data.hash), NULL, NULL); if (r < 0) return r; - - if (r > 0) + if (r > 0) { found = true; + break; + } } if (found) @@ -2552,6 +2554,154 @@ _public_ void sd_journal_restart_unique(sd_journal *j) { j->unique_file_lost = false; } +_public_ int sd_journal_enumerate_fields(sd_journal *j, const char **field) { + int r; + + assert_return(j, -EINVAL); + assert_return(!journal_pid_changed(j), -ECHILD); + assert_return(field, -EINVAL); + + if (!j->fields_file) { + if (j->fields_file_lost) + return 0; + + j->fields_file = ordered_hashmap_first(j->files); + if (!j->fields_file) + return 0; + + j->fields_hash_table_index = 0; + j->fields_offset = 0; + } + + for (;;) { + JournalFile *f, *of; + Iterator i; + uint64_t m; + Object *o; + size_t sz; + bool found; + + f = j->fields_file; + + if (j->fields_offset == 0) { + bool eof = false; + + /* We are not yet positioned at any field. Let's pick the first one */ + r = journal_file_map_field_hash_table(f); + if (r < 0) + return r; + + m = le64toh(f->header->field_hash_table_size) / sizeof(HashItem); + for (;;) { + if (j->fields_hash_table_index >= m) { + /* Reached the end of the hash table, go to the next file. */ + eof = true; + break; + } + + j->fields_offset = le64toh(f->field_hash_table[j->fields_hash_table_index].head_hash_offset); + + if (j->fields_offset != 0) + break; + + /* Empty hash table bucket, go to next one */ + j->fields_hash_table_index++; + } + + if (eof) { + /* Proceed with next file */ + j->fields_file = ordered_hashmap_next(j->files, f->path); + if (!j->fields_file) { + *field = NULL; + return 0; + } + + j->fields_offset = 0; + j->fields_hash_table_index = 0; + continue; + } + + } else { + /* We are already positioned at a field. If so, let's figure out the next field from it */ + + r = journal_file_move_to_object(f, OBJECT_FIELD, j->fields_offset, &o); + if (r < 0) + return r; + + j->fields_offset = le64toh(o->field.next_hash_offset); + if (j->fields_offset == 0) { + /* Reached the end of the hash table chain */ + j->fields_hash_table_index++; + continue; + } + } + + /* We use OBJECT_UNUSED here, so that the iterator below doesn't remove our mmap window */ + r = journal_file_move_to_object(f, OBJECT_UNUSED, j->fields_offset, &o); + if (r < 0) + return r; + + /* Because we used OBJECT_UNUSED above, we need to do our type check manually */ + if (o->object.type != OBJECT_FIELD) { + log_debug("%s:offset " OFSfmt ": object has type %i, expected %i", f->path, j->fields_offset, o->object.type, OBJECT_FIELD); + return -EBADMSG; + } + + sz = le64toh(o->object.size) - offsetof(Object, field.payload); + + /* Let's see if we already returned this field name before. */ + found = false; + ORDERED_HASHMAP_FOREACH(of, j->files, i) { + if (of == f) + break; + + /* Skip this file it didn't have any fields indexed */ + if (JOURNAL_HEADER_CONTAINS(of->header, n_fields) && le64toh(of->header->n_fields) <= 0) + continue; + + r = journal_file_find_field_object_with_hash(of, o->field.payload, sz, le64toh(o->field.hash), NULL, NULL); + if (r < 0) + return r; + if (r > 0) { + found = true; + break; + } + } + + if (found) + continue; + + /* Check if this is really a valid string containing no NUL byte */ + if (memchr(o->field.payload, 0, sz)) + return -EBADMSG; + + if (sz > j->data_threshold) + sz = j->data_threshold; + + if (!GREEDY_REALLOC(j->fields_buffer, j->fields_buffer_allocated, sz + 1)) + return -ENOMEM; + + memcpy(j->fields_buffer, o->field.payload, sz); + j->fields_buffer[sz] = 0; + + if (!field_is_valid(j->fields_buffer)) + return -EBADMSG; + + *field = j->fields_buffer; + return 1; + } +} + +_public_ void sd_journal_restart_fields(sd_journal *j) { + if (!j) + return; + + j->fields_file = NULL; + j->fields_hash_table_index = 0; + j->fields_offset = 0; + j->fields_file_lost = false; +} + _public_ int sd_journal_reliable_fd(sd_journal *j) { assert_return(j, -EINVAL); assert_return(!journal_pid_changed(j), -ECHILD); diff --git a/src/journal/test-audit-type.c b/src/journal/test-audit-type.c index 7946cf3c41..88a2e6d9d9 100644 --- a/src/journal/test-audit-type.c +++ b/src/journal/test-audit-type.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/journal/test-catalog.c b/src/journal/test-catalog.c index 25980b7744..da6fcbca4d 100644 --- a/src/journal/test-catalog.c +++ b/src/journal/test-catalog.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -46,61 +44,135 @@ static const char *no_catalog_dirs[] = { NULL }; -static void test_import(Hashmap *h, struct strbuf *sb, - const char* contents, ssize_t size, int code) { +static Hashmap * test_import(const char* contents, ssize_t size, int code) { int r; char name[] = "/tmp/test-catalog.XXXXXX"; _cleanup_close_ int fd; + Hashmap *h; + + if (size < 0) + size = strlen(contents); + + assert_se(h = hashmap_new(&catalog_hash_ops)); fd = mkostemp_safe(name, O_RDWR|O_CLOEXEC); assert_se(fd >= 0); assert_se(write(fd, contents, size) == size); - r = catalog_import_file(h, sb, name); + r = catalog_import_file(h, name); assert_se(r == code); unlink(name); + + return h; } -static void test_catalog_importing(void) { - Hashmap *h; - struct strbuf *sb; +static void test_catalog_import_invalid(void) { + _cleanup_hashmap_free_free_free_ Hashmap *h = NULL; - assert_se(h = hashmap_new(&catalog_hash_ops)); - assert_se(sb = strbuf_new()); - -#define BUF "xxx" - test_import(h, sb, BUF, sizeof(BUF), -EINVAL); -#undef BUF + h = test_import("xxx", -1, -EINVAL); assert_se(hashmap_isempty(h)); - log_debug("----------------------------------------"); +} -#define BUF \ +static void test_catalog_import_badid(void) { + _cleanup_hashmap_free_free_free_ Hashmap *h = NULL; + const char *input = "-- 0027229ca0644181a76c4e92458afaff dededededededededededededededede\n" \ "Subject: message\n" \ "\n" \ -"payload\n" - test_import(h, sb, BUF, sizeof(BUF), -EINVAL); -#undef BUF +"payload\n"; + h = test_import(input, -1, -EINVAL); +} - log_debug("----------------------------------------"); +static void test_catalog_import_one(void) { + _cleanup_hashmap_free_free_free_ Hashmap *h = NULL; + char *payload; + Iterator j; -#define BUF \ + const char *input = "-- 0027229ca0644181a76c4e92458afaff dededededededededededededededed\n" \ "Subject: message\n" \ "\n" \ -"payload\n" - test_import(h, sb, BUF, sizeof(BUF), 0); -#undef BUF +"payload\n"; + const char *expect = +"Subject: message\n" \ +"\n" \ +"payload\n"; + h = test_import(input, -1, 0); assert_se(hashmap_size(h) == 1); - log_debug("----------------------------------------"); + HASHMAP_FOREACH(payload, h, j) { + assert_se(streq(expect, payload)); + } +} + +static void test_catalog_import_merge(void) { + _cleanup_hashmap_free_free_free_ Hashmap *h = NULL; + char *payload; + Iterator j; + + const char *input = +"-- 0027229ca0644181a76c4e92458afaff dededededededededededededededed\n" \ +"Subject: message\n" \ +"Defined-By: me\n" \ +"\n" \ +"payload\n" \ +"\n" \ +"-- 0027229ca0644181a76c4e92458afaff dededededededededededededededed\n" \ +"Subject: override subject\n" \ +"X-Header: hello\n" \ +"\n" \ +"override payload\n"; + + const char *combined = +"Subject: override subject\n" \ +"X-Header: hello\n" \ +"Subject: message\n" \ +"Defined-By: me\n" \ +"\n" \ +"override payload\n"; + + h = test_import(input, -1, 0); + assert_se(hashmap_size(h) == 1); - hashmap_free_free(h); - strbuf_cleanup(sb); + HASHMAP_FOREACH(payload, h, j) { + assert_se(streq(combined, payload)); + } } +static void test_catalog_import_merge_no_body(void) { + _cleanup_hashmap_free_free_free_ Hashmap *h = NULL; + char *payload; + Iterator j; + + const char *input = +"-- 0027229ca0644181a76c4e92458afaff dededededededededededededededed\n" \ +"Subject: message\n" \ +"Defined-By: me\n" \ +"\n" \ +"payload\n" \ +"\n" \ +"-- 0027229ca0644181a76c4e92458afaff dededededededededededededededed\n" \ +"Subject: override subject\n" \ +"X-Header: hello\n" \ +"\n"; + + const char *combined = +"Subject: override subject\n" \ +"X-Header: hello\n" \ +"Subject: message\n" \ +"Defined-By: me\n" \ +"\n" \ +"payload\n"; + + h = test_import(input, -1, 0); + assert_se(hashmap_size(h) == 1); + + HASHMAP_FOREACH(payload, h, j) { + assert_se(streq(combined, payload)); + } +} static const char* database = NULL; @@ -166,7 +238,11 @@ int main(int argc, char *argv[]) { test_catalog_file_lang(); - test_catalog_importing(); + test_catalog_import_invalid(); + test_catalog_import_badid(); + test_catalog_import_one(); + test_catalog_import_merge(); + test_catalog_import_merge_no_body(); test_catalog_update(); diff --git a/src/journal/test-compress-benchmark.c b/src/journal/test-compress-benchmark.c index baed0d82a4..5b2d130cd6 100644 --- a/src/journal/test-compress-benchmark.c +++ b/src/journal/test-compress-benchmark.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd diff --git a/src/journal/test-journal-enum.c b/src/journal/test-journal-enum.c index d396fabdab..e5e9d9dcb3 100644 --- a/src/journal/test-journal-enum.c +++ b/src/journal/test-journal-enum.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/journal/test-journal-flush.c b/src/journal/test-journal-flush.c index 03d1522e23..7bd9c40366 100644 --- a/src/journal/test-journal-flush.c +++ b/src/journal/test-journal-flush.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/journal/test-journal-init.c b/src/journal/test-journal-init.c index 142da85041..ef21e2d05f 100644 --- a/src/journal/test-journal-init.c +++ b/src/journal/test-journal-init.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/journal/test-journal-interleaving.c b/src/journal/test-journal-interleaving.c index 5c055ef748..7f94990888 100644 --- a/src/journal/test-journal-interleaving.c +++ b/src/journal/test-journal-interleaving.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/journal/test-journal-match.c b/src/journal/test-journal-match.c index 4ebaa8b31a..3ab554b9b0 100644 --- a/src/journal/test-journal-match.c +++ b/src/journal/test-journal-match.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/journal/test-journal-send.c b/src/journal/test-journal-send.c index e537c1fe5f..d70f0b0bc8 100644 --- a/src/journal/test-journal-send.c +++ b/src/journal/test-journal-send.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/journal/test-journal-stream.c b/src/journal/test-journal-stream.c index 2c257e43b6..4e6f8c0f7b 100644 --- a/src/journal/test-journal-stream.c +++ b/src/journal/test-journal-stream.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/journal/test-journal-syslog.c b/src/journal/test-journal-syslog.c index 1784187fe9..4ff7f3ec2e 100644 --- a/src/journal/test-journal-syslog.c +++ b/src/journal/test-journal-syslog.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/journal/test-journal-verify.c b/src/journal/test-journal-verify.c index a7abb11fba..a26c624f41 100644 --- a/src/journal/test-journal-verify.c +++ b/src/journal/test-journal-verify.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/journal/test-journal.c b/src/journal/test-journal.c index 266e0d5473..0334b1cd1a 100644 --- a/src/journal/test-journal.c +++ b/src/journal/test-journal.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/journal/test-mmap-cache.c b/src/journal/test-mmap-cache.c index fdd48e531c..009aabf55e 100644 --- a/src/journal/test-mmap-cache.c +++ b/src/journal/test-mmap-cache.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd-network/arp-util.h b/src/libsystemd-network/arp-util.h index 63c559f8dd..3ef56b002a 100644 --- a/src/libsystemd-network/arp-util.h +++ b/src/libsystemd-network/arp-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/libsystemd-network/dhcp-identifier.c b/src/libsystemd-network/dhcp-identifier.c index d7ae865557..1d9ec7be82 100644 --- a/src/libsystemd-network/dhcp-identifier.c +++ b/src/libsystemd-network/dhcp-identifier.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd-network/dhcp-identifier.h b/src/libsystemd-network/dhcp-identifier.h index 2291736f8b..93f06f5938 100644 --- a/src/libsystemd-network/dhcp-identifier.h +++ b/src/libsystemd-network/dhcp-identifier.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/libsystemd-network/dhcp-internal.h b/src/libsystemd-network/dhcp-internal.h index 67714fd099..a3b842cda3 100644 --- a/src/libsystemd-network/dhcp-internal.h +++ b/src/libsystemd-network/dhcp-internal.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/libsystemd-network/dhcp-lease-internal.h b/src/libsystemd-network/dhcp-lease-internal.h index 9a96be6236..82cae2300a 100644 --- a/src/libsystemd-network/dhcp-lease-internal.h +++ b/src/libsystemd-network/dhcp-lease-internal.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/libsystemd-network/dhcp-option.c b/src/libsystemd-network/dhcp-option.c index 3ceb70f07e..b0ea7576bf 100644 --- a/src/libsystemd-network/dhcp-option.c +++ b/src/libsystemd-network/dhcp-option.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd-network/dhcp-protocol.h b/src/libsystemd-network/dhcp-protocol.h index 18490def06..3e32484c1d 100644 --- a/src/libsystemd-network/dhcp-protocol.h +++ b/src/libsystemd-network/dhcp-protocol.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/libsystemd-network/dhcp-server-internal.h b/src/libsystemd-network/dhcp-server-internal.h index 2e30e93df9..bf123f1439 100644 --- a/src/libsystemd-network/dhcp-server-internal.h +++ b/src/libsystemd-network/dhcp-server-internal.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd-network/dhcp6-internal.h b/src/libsystemd-network/dhcp6-internal.h index ecc220f2f6..749086d33a 100644 --- a/src/libsystemd-network/dhcp6-internal.h +++ b/src/libsystemd-network/dhcp6-internal.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/libsystemd-network/dhcp6-lease-internal.h b/src/libsystemd-network/dhcp6-lease-internal.h index 3bfb46b96d..14e708ef63 100644 --- a/src/libsystemd-network/dhcp6-lease-internal.h +++ b/src/libsystemd-network/dhcp6-lease-internal.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/libsystemd-network/dhcp6-option.c b/src/libsystemd-network/dhcp6-option.c index e858e14d97..5462e03476 100644 --- a/src/libsystemd-network/dhcp6-option.c +++ b/src/libsystemd-network/dhcp6-option.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd-network/dhcp6-protocol.h b/src/libsystemd-network/dhcp6-protocol.h index 246cc94cd8..ee4bdfb07f 100644 --- a/src/libsystemd-network/dhcp6-protocol.h +++ b/src/libsystemd-network/dhcp6-protocol.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/libsystemd-network/icmp6-util.h b/src/libsystemd-network/icmp6-util.h index 4eb17e152e..2b4dbc76ce 100644 --- a/src/libsystemd-network/icmp6-util.h +++ b/src/libsystemd-network/icmp6-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/libsystemd-network/lldp-internal.c b/src/libsystemd-network/lldp-internal.c index 10f12d11a2..c8740ce5f0 100644 --- a/src/libsystemd-network/lldp-internal.c +++ b/src/libsystemd-network/lldp-internal.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd-network/lldp-internal.h b/src/libsystemd-network/lldp-internal.h index 5d19fa0fea..15b4a11b15 100644 --- a/src/libsystemd-network/lldp-internal.h +++ b/src/libsystemd-network/lldp-internal.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd-network/lldp-network.c b/src/libsystemd-network/lldp-network.c index f483cd9c8e..42058c4449 100644 --- a/src/libsystemd-network/lldp-network.c +++ b/src/libsystemd-network/lldp-network.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd-network/lldp-network.h b/src/libsystemd-network/lldp-network.h index 74ee13a414..dcf31faa95 100644 --- a/src/libsystemd-network/lldp-network.h +++ b/src/libsystemd-network/lldp-network.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd-network/lldp-port.c b/src/libsystemd-network/lldp-port.c index 1f1a49adbf..c86f62a6c2 100644 --- a/src/libsystemd-network/lldp-port.c +++ b/src/libsystemd-network/lldp-port.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd-network/lldp-port.h b/src/libsystemd-network/lldp-port.h index 517b162a67..96092f8df9 100644 --- a/src/libsystemd-network/lldp-port.h +++ b/src/libsystemd-network/lldp-port.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd-network/lldp-tlv.c b/src/libsystemd-network/lldp-tlv.c index 66343147a1..9170b50691 100644 --- a/src/libsystemd-network/lldp-tlv.c +++ b/src/libsystemd-network/lldp-tlv.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd-network/lldp-tlv.h b/src/libsystemd-network/lldp-tlv.h index 744dec37f7..8e7706c612 100644 --- a/src/libsystemd-network/lldp-tlv.h +++ b/src/libsystemd-network/lldp-tlv.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd-network/lldp.h b/src/libsystemd-network/lldp.h index 19e5cc5f41..d2c7164633 100644 --- a/src/libsystemd-network/lldp.h +++ b/src/libsystemd-network/lldp.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd-network/network-internal.c b/src/libsystemd-network/network-internal.c index 5da06435ed..fdafcd84d8 100644 --- a/src/libsystemd-network/network-internal.c +++ b/src/libsystemd-network/network-internal.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd-network/network-internal.h b/src/libsystemd-network/network-internal.h index c43c01accf..c8a531ab0f 100644 --- a/src/libsystemd-network/network-internal.h +++ b/src/libsystemd-network/network-internal.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/libsystemd-network/sd-dhcp-client.c b/src/libsystemd-network/sd-dhcp-client.c index d3ad6b7717..cad1a52c09 100644 --- a/src/libsystemd-network/sd-dhcp-client.c +++ b/src/libsystemd-network/sd-dhcp-client.c @@ -43,6 +43,9 @@ #define MAX_CLIENT_ID_LEN (sizeof(uint32_t) + MAX_DUID_LEN) /* Arbitrary limit */ #define MAX_MAC_ADDR_LEN CONST_MAX(INFINIBAND_ALEN, ETH_ALEN) +#define RESTART_AFTER_NAK_MIN_USEC (1 * USEC_PER_SEC) +#define RESTART_AFTER_NAK_MAX_USEC (30 * USEC_PER_MINUTE) + struct sd_dhcp_client { unsigned n_ref; @@ -101,6 +104,7 @@ struct sd_dhcp_client { sd_dhcp_client_cb_t cb; void *userdata; sd_dhcp_lease *lease; + usec_t start_delay; }; static const uint8_t default_req_opts[] = { @@ -945,6 +949,7 @@ error: } static int client_initialize_time_events(sd_dhcp_client *client) { + uint64_t usec = 0; int r; assert(client); @@ -952,10 +957,15 @@ static int client_initialize_time_events(sd_dhcp_client *client) { client->timeout_resend = sd_event_source_unref(client->timeout_resend); + if (client->start_delay) { + sd_event_now(client->event, clock_boottime_or_monotonic(), &usec); + usec += client->start_delay; + } + r = sd_event_add_time(client->event, &client->timeout_resend, clock_boottime_or_monotonic(), - 0, 0, + usec, 0, client_timeout_resend, client); if (r < 0) goto error; @@ -985,7 +995,7 @@ static int client_initialize_events(sd_dhcp_client *client, return 0; } -static int client_start(sd_dhcp_client *client) { +static int client_start_delayed(sd_dhcp_client *client) { int r; assert_return(client, -EINVAL); @@ -1013,6 +1023,11 @@ static int client_start(sd_dhcp_client *client) { return client_initialize_events(client, client_receive_message_raw); } +static int client_start(sd_dhcp_client *client) { + client->start_delay = 0; + return client_start_delayed(client); +} + static int client_timeout_expire(sd_event_source *s, uint64_t usec, void *userdata) { sd_dhcp_client *client = userdata; @@ -1362,6 +1377,7 @@ static int client_set_lease_timeouts(sd_dhcp_client *client) { static int client_handle_message(sd_dhcp_client *client, DHCPMessage *message, int len) { DHCP_CLIENT_DONT_DESTROY(client); + char time_string[FORMAT_TIMESPAN_MAX]; int r = 0, notify_event = 0; assert(client); @@ -1409,6 +1425,7 @@ static int client_handle_message(sd_dhcp_client *client, DHCPMessage *message, r = client_handle_ack(client, message, len); if (r >= 0) { + client->start_delay = 0; client->timeout_resend = sd_event_source_unref(client->timeout_resend); client->receive_message = @@ -1458,11 +1475,15 @@ static int client_handle_message(sd_dhcp_client *client, DHCPMessage *message, if (r < 0) goto error; - r = client_start(client); + r = client_start_delayed(client); if (r < 0) goto error; - log_dhcp_client(client, "REBOOTED"); + log_dhcp_client(client, "REBOOT in %s", format_timespan(time_string, FORMAT_TIMESPAN_MAX, + client->start_delay, USEC_PER_SEC)); + + client->start_delay = CLAMP(client->start_delay * 2, + RESTART_AFTER_NAK_MIN_USEC, RESTART_AFTER_NAK_MAX_USEC); return 0; } else if (r == -ENOMSG) diff --git a/src/libsystemd-network/sd-dhcp-server.c b/src/libsystemd-network/sd-dhcp-server.c index 0b8d4bb843..ad3a37b722 100644 --- a/src/libsystemd-network/sd-dhcp-server.c +++ b/src/libsystemd-network/sd-dhcp-server.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd-network/sd-dhcp6-client.c b/src/libsystemd-network/sd-dhcp6-client.c index 0e7327b895..5b6b9cbcac 100644 --- a/src/libsystemd-network/sd-dhcp6-client.c +++ b/src/libsystemd-network/sd-dhcp6-client.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd-network/sd-dhcp6-lease.c b/src/libsystemd-network/sd-dhcp6-lease.c index 327759e180..5c10a6326a 100644 --- a/src/libsystemd-network/sd-dhcp6-lease.c +++ b/src/libsystemd-network/sd-dhcp6-lease.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd-network/sd-lldp.c b/src/libsystemd-network/sd-lldp.c index 1c696f9ef0..885ca62425 100644 --- a/src/libsystemd-network/sd-lldp.c +++ b/src/libsystemd-network/sd-lldp.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd-network/sd-ndisc.c b/src/libsystemd-network/sd-ndisc.c index 0ee466b32a..519d2aa36b 100644 --- a/src/libsystemd-network/sd-ndisc.c +++ b/src/libsystemd-network/sd-ndisc.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd-network/test-acd.c b/src/libsystemd-network/test-acd.c index 43578aa269..75564615b9 100644 --- a/src/libsystemd-network/test-acd.c +++ b/src/libsystemd-network/test-acd.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd-network/test-dhcp-client.c b/src/libsystemd-network/test-dhcp-client.c index 31832d2d1e..c3c08fef5e 100644 --- a/src/libsystemd-network/test-dhcp-client.c +++ b/src/libsystemd-network/test-dhcp-client.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd-network/test-dhcp-option.c b/src/libsystemd-network/test-dhcp-option.c index 45f4e0b5f5..d84859c053 100644 --- a/src/libsystemd-network/test-dhcp-option.c +++ b/src/libsystemd-network/test-dhcp-option.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #include <errno.h> #include <stdbool.h> #include <stdio.h> diff --git a/src/libsystemd-network/test-dhcp-server.c b/src/libsystemd-network/test-dhcp-server.c index 4ad2e42b86..e81c508c7f 100644 --- a/src/libsystemd-network/test-dhcp-server.c +++ b/src/libsystemd-network/test-dhcp-server.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd-network/test-dhcp6-client.c b/src/libsystemd-network/test-dhcp6-client.c index 93f585b8d4..e74c8c72db 100644 --- a/src/libsystemd-network/test-dhcp6-client.c +++ b/src/libsystemd-network/test-dhcp6-client.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd-network/test-ipv4ll-manual.c b/src/libsystemd-network/test-ipv4ll-manual.c index 599c789a26..85dd61470d 100644 --- a/src/libsystemd-network/test-ipv4ll-manual.c +++ b/src/libsystemd-network/test-ipv4ll-manual.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd-network/test-ipv4ll.c b/src/libsystemd-network/test-ipv4ll.c index bccab25cd4..a233e0378c 100644 --- a/src/libsystemd-network/test-ipv4ll.c +++ b/src/libsystemd-network/test-ipv4ll.c @@ -1,4 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ /*** This file is part of systemd. diff --git a/src/libsystemd-network/test-lldp.c b/src/libsystemd-network/test-lldp.c index 497f3c1031..b8490073dd 100644 --- a/src/libsystemd-network/test-lldp.c +++ b/src/libsystemd-network/test-lldp.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd-network/test-ndisc-rs.c b/src/libsystemd-network/test-ndisc-rs.c index a485be704e..f7b2eb8050 100644 --- a/src/libsystemd-network/test-ndisc-rs.c +++ b/src/libsystemd-network/test-ndisc-rs.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/libsystemd.sym b/src/libsystemd/libsystemd.sym index 043ff13e6f..4ab637b686 100644 --- a/src/libsystemd/libsystemd.sym +++ b/src/libsystemd/libsystemd.sym @@ -481,3 +481,11 @@ global: sd_bus_path_encode_many; sd_listen_fds_with_names; } LIBSYSTEMD_226; + +LIBSYSTEMD_229 { +global: + sd_journal_has_runtime_files; + sd_journal_has_persistent_files; + sd_journal_enumerate_fields; + sd_journal_restart_fields; +} LIBSYSTEMD_227; diff --git a/src/libsystemd/sd-bus/bus-bloom.c b/src/libsystemd/sd-bus/bus-bloom.c index c0c5d445eb..112769fcb6 100644 --- a/src/libsystemd/sd-bus/bus-bloom.c +++ b/src/libsystemd/sd-bus/bus-bloom.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-bus/bus-bloom.h b/src/libsystemd/sd-bus/bus-bloom.h index 38892044f1..c824622b95 100644 --- a/src/libsystemd/sd-bus/bus-bloom.h +++ b/src/libsystemd/sd-bus/bus-bloom.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/libsystemd/sd-bus/bus-common-errors.c b/src/libsystemd/sd-bus/bus-common-errors.c index e344b3b77b..3c19f2b108 100644 --- a/src/libsystemd/sd-bus/bus-common-errors.c +++ b/src/libsystemd/sd-bus/bus-common-errors.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -39,7 +37,7 @@ BUS_ERROR_MAP_ELF_REGISTER const sd_bus_error_map bus_common_errors[] = { SD_BUS_ERROR_MAP(BUS_ERROR_TRANSACTION_JOBS_CONFLICTING, EDEADLK), SD_BUS_ERROR_MAP(BUS_ERROR_TRANSACTION_ORDER_IS_CYCLIC, EDEADLK), SD_BUS_ERROR_MAP(BUS_ERROR_TRANSACTION_IS_DESTRUCTIVE, EDEADLK), - SD_BUS_ERROR_MAP(BUS_ERROR_UNIT_MASKED, EBADR), + SD_BUS_ERROR_MAP(BUS_ERROR_UNIT_MASKED, ESHUTDOWN), SD_BUS_ERROR_MAP(BUS_ERROR_JOB_TYPE_NOT_APPLICABLE, EBADR), SD_BUS_ERROR_MAP(BUS_ERROR_NO_ISOLATION, EPERM), SD_BUS_ERROR_MAP(BUS_ERROR_SHUTTING_DOWN, ECANCELED), diff --git a/src/libsystemd/sd-bus/bus-common-errors.h b/src/libsystemd/sd-bus/bus-common-errors.h index 130779e8e3..fab8748f46 100644 --- a/src/libsystemd/sd-bus/bus-common-errors.h +++ b/src/libsystemd/sd-bus/bus-common-errors.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/libsystemd/sd-bus/bus-container.c b/src/libsystemd/sd-bus/bus-container.c index 7da6ba9903..3191d27ded 100644 --- a/src/libsystemd/sd-bus/bus-container.c +++ b/src/libsystemd/sd-bus/bus-container.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-bus/bus-container.h b/src/libsystemd/sd-bus/bus-container.h index c6f757a99b..509ef45624 100644 --- a/src/libsystemd/sd-bus/bus-container.h +++ b/src/libsystemd/sd-bus/bus-container.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/libsystemd/sd-bus/bus-control.c b/src/libsystemd/sd-bus/bus-control.c index 00de2a95da..e860876c12 100644 --- a/src/libsystemd/sd-bus/bus-control.c +++ b/src/libsystemd/sd-bus/bus-control.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-bus/bus-control.h b/src/libsystemd/sd-bus/bus-control.h index e01b075832..c181aa7959 100644 --- a/src/libsystemd/sd-bus/bus-control.h +++ b/src/libsystemd/sd-bus/bus-control.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/libsystemd/sd-bus/bus-convenience.c b/src/libsystemd/sd-bus/bus-convenience.c index d3d5149242..2d06bf541f 100644 --- a/src/libsystemd/sd-bus/bus-convenience.c +++ b/src/libsystemd/sd-bus/bus-convenience.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-bus/bus-creds.c b/src/libsystemd/sd-bus/bus-creds.c index 4e0d02a62c..c4f693dee9 100644 --- a/src/libsystemd/sd-bus/bus-creds.c +++ b/src/libsystemd/sd-bus/bus-creds.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-bus/bus-creds.h b/src/libsystemd/sd-bus/bus-creds.h index 209d216123..df8a1f1005 100644 --- a/src/libsystemd/sd-bus/bus-creds.h +++ b/src/libsystemd/sd-bus/bus-creds.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/libsystemd/sd-bus/bus-dump.c b/src/libsystemd/sd-bus/bus-dump.c index 43a7e67a6d..7c81e7a25d 100644 --- a/src/libsystemd/sd-bus/bus-dump.c +++ b/src/libsystemd/sd-bus/bus-dump.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-bus/bus-dump.h b/src/libsystemd/sd-bus/bus-dump.h index 71e56991fa..874e86d09c 100644 --- a/src/libsystemd/sd-bus/bus-dump.h +++ b/src/libsystemd/sd-bus/bus-dump.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/libsystemd/sd-bus/bus-error.c b/src/libsystemd/sd-bus/bus-error.c index c77eb5fd03..26219bdeed 100644 --- a/src/libsystemd/sd-bus/bus-error.c +++ b/src/libsystemd/sd-bus/bus-error.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-bus/bus-error.h b/src/libsystemd/sd-bus/bus-error.h index d7fd8612d0..e2c4cf4b3f 100644 --- a/src/libsystemd/sd-bus/bus-error.h +++ b/src/libsystemd/sd-bus/bus-error.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/libsystemd/sd-bus/bus-gvariant.c b/src/libsystemd/sd-bus/bus-gvariant.c index ec027590b2..58782767fa 100644 --- a/src/libsystemd/sd-bus/bus-gvariant.c +++ b/src/libsystemd/sd-bus/bus-gvariant.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-bus/bus-gvariant.h b/src/libsystemd/sd-bus/bus-gvariant.h index 875d34b59b..6da637fb05 100644 --- a/src/libsystemd/sd-bus/bus-gvariant.h +++ b/src/libsystemd/sd-bus/bus-gvariant.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/libsystemd/sd-bus/bus-internal.c b/src/libsystemd/sd-bus/bus-internal.c index d9f9cd1c5e..caca679086 100644 --- a/src/libsystemd/sd-bus/bus-internal.c +++ b/src/libsystemd/sd-bus/bus-internal.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-bus/bus-internal.h b/src/libsystemd/sd-bus/bus-internal.h index 35aed634f7..216d9f62bc 100644 --- a/src/libsystemd/sd-bus/bus-internal.h +++ b/src/libsystemd/sd-bus/bus-internal.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/libsystemd/sd-bus/bus-introspect.c b/src/libsystemd/sd-bus/bus-introspect.c index a90536bac9..8f93edb8da 100644 --- a/src/libsystemd/sd-bus/bus-introspect.c +++ b/src/libsystemd/sd-bus/bus-introspect.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-bus/bus-introspect.h b/src/libsystemd/sd-bus/bus-introspect.h index 57c2430ee8..8e2f3800ca 100644 --- a/src/libsystemd/sd-bus/bus-introspect.h +++ b/src/libsystemd/sd-bus/bus-introspect.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/libsystemd/sd-bus/bus-kernel.c b/src/libsystemd/sd-bus/bus-kernel.c index e7d6170eec..59398b841d 100644 --- a/src/libsystemd/sd-bus/bus-kernel.c +++ b/src/libsystemd/sd-bus/bus-kernel.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -1695,50 +1693,6 @@ int bus_kernel_open_bus_fd(const char *bus, char **path) { return fd; } -int bus_kernel_create_endpoint(const char *bus_name, const char *ep_name, char **ep_path) { - _cleanup_free_ char *path = NULL; - struct kdbus_cmd *make; - struct kdbus_item *n; - const char *name; - int fd; - - fd = bus_kernel_open_bus_fd(bus_name, &path); - if (fd < 0) - return fd; - - make = alloca0_align(ALIGN8(offsetof(struct kdbus_cmd, items)) + - ALIGN8(offsetof(struct kdbus_item, str) + DECIMAL_STR_MAX(uid_t) + 1 + strlen(ep_name) + 1), - 8); - make->size = ALIGN8(offsetof(struct kdbus_cmd, items)); - make->flags = KDBUS_MAKE_ACCESS_WORLD; - - n = make->items; - sprintf(n->str, UID_FMT "-%s", getuid(), ep_name); - n->size = offsetof(struct kdbus_item, str) + strlen(n->str) + 1; - n->type = KDBUS_ITEM_MAKE_NAME; - make->size += ALIGN8(n->size); - name = n->str; - - if (ioctl(fd, KDBUS_CMD_ENDPOINT_MAKE, make) < 0) { - safe_close(fd); - return -errno; - } - - if (ep_path) { - char *p; - - p = strjoin(dirname(path), "/", name, NULL); - if (!p) { - safe_close(fd); - return -ENOMEM; - } - - *ep_path = p; - } - - return fd; -} - int bus_kernel_try_close(sd_bus *bus) { struct kdbus_cmd byebye = { .size = sizeof(byebye) }; diff --git a/src/libsystemd/sd-bus/bus-kernel.h b/src/libsystemd/sd-bus/bus-kernel.h index bb4dff6d82..53ba3bdcf3 100644 --- a/src/libsystemd/sd-bus/bus-kernel.h +++ b/src/libsystemd/sd-bus/bus-kernel.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/libsystemd/sd-bus/bus-match.c b/src/libsystemd/sd-bus/bus-match.c index cb3c8bbd26..397baf6f33 100644 --- a/src/libsystemd/sd-bus/bus-match.c +++ b/src/libsystemd/sd-bus/bus-match.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-bus/bus-match.h b/src/libsystemd/sd-bus/bus-match.h index bc85af3ec0..8cbbb63b11 100644 --- a/src/libsystemd/sd-bus/bus-match.h +++ b/src/libsystemd/sd-bus/bus-match.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/libsystemd/sd-bus/bus-message.c b/src/libsystemd/sd-bus/bus-message.c index 6fd0001359..c2e913f62a 100644 --- a/src/libsystemd/sd-bus/bus-message.c +++ b/src/libsystemd/sd-bus/bus-message.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-bus/bus-message.h b/src/libsystemd/sd-bus/bus-message.h index 4c91dbae09..4710c106b9 100644 --- a/src/libsystemd/sd-bus/bus-message.h +++ b/src/libsystemd/sd-bus/bus-message.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/libsystemd/sd-bus/bus-objects.c b/src/libsystemd/sd-bus/bus-objects.c index 4fc5f8dfa3..1f285ae8a6 100644 --- a/src/libsystemd/sd-bus/bus-objects.c +++ b/src/libsystemd/sd-bus/bus-objects.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-bus/bus-objects.h b/src/libsystemd/sd-bus/bus-objects.h index 4373fae89c..e0b8c534ed 100644 --- a/src/libsystemd/sd-bus/bus-objects.h +++ b/src/libsystemd/sd-bus/bus-objects.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/libsystemd/sd-bus/bus-protocol.h b/src/libsystemd/sd-bus/bus-protocol.h index 183af89a63..9d180cb284 100644 --- a/src/libsystemd/sd-bus/bus-protocol.h +++ b/src/libsystemd/sd-bus/bus-protocol.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/libsystemd/sd-bus/bus-signature.c b/src/libsystemd/sd-bus/bus-signature.c index 1e5bf4821d..7bc243494a 100644 --- a/src/libsystemd/sd-bus/bus-signature.c +++ b/src/libsystemd/sd-bus/bus-signature.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-bus/bus-signature.h b/src/libsystemd/sd-bus/bus-signature.h index c4fed0b53d..1e0cd7f587 100644 --- a/src/libsystemd/sd-bus/bus-signature.h +++ b/src/libsystemd/sd-bus/bus-signature.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/libsystemd/sd-bus/bus-slot.c b/src/libsystemd/sd-bus/bus-slot.c index e396d6c3b4..a8c74011bf 100644 --- a/src/libsystemd/sd-bus/bus-slot.c +++ b/src/libsystemd/sd-bus/bus-slot.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-bus/bus-slot.h b/src/libsystemd/sd-bus/bus-slot.h index c997e58f9a..3b8b94dc6b 100644 --- a/src/libsystemd/sd-bus/bus-slot.h +++ b/src/libsystemd/sd-bus/bus-slot.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/libsystemd/sd-bus/bus-socket.c b/src/libsystemd/sd-bus/bus-socket.c index 4f99719231..13d0aef4b5 100644 --- a/src/libsystemd/sd-bus/bus-socket.c +++ b/src/libsystemd/sd-bus/bus-socket.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-bus/bus-socket.h b/src/libsystemd/sd-bus/bus-socket.h index 5a1c7d4cf2..684feead74 100644 --- a/src/libsystemd/sd-bus/bus-socket.h +++ b/src/libsystemd/sd-bus/bus-socket.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/libsystemd/sd-bus/bus-track.c b/src/libsystemd/sd-bus/bus-track.c index 2f6d7e9452..bdbf7d4a85 100644 --- a/src/libsystemd/sd-bus/bus-track.c +++ b/src/libsystemd/sd-bus/bus-track.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-bus/bus-track.h b/src/libsystemd/sd-bus/bus-track.h index f8690a5239..7d93a727d6 100644 --- a/src/libsystemd/sd-bus/bus-track.h +++ b/src/libsystemd/sd-bus/bus-track.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/libsystemd/sd-bus/bus-type.c b/src/libsystemd/sd-bus/bus-type.c index 6bc7b880a6..c692afc580 100644 --- a/src/libsystemd/sd-bus/bus-type.c +++ b/src/libsystemd/sd-bus/bus-type.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-bus/bus-type.h b/src/libsystemd/sd-bus/bus-type.h index ad89e6c911..5c87eb5f08 100644 --- a/src/libsystemd/sd-bus/bus-type.h +++ b/src/libsystemd/sd-bus/bus-type.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/libsystemd/sd-bus/busctl-introspect.c b/src/libsystemd/sd-bus/busctl-introspect.c index 71f962b00c..b09509f8e1 100644 --- a/src/libsystemd/sd-bus/busctl-introspect.c +++ b/src/libsystemd/sd-bus/busctl-introspect.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-bus/busctl-introspect.h b/src/libsystemd/sd-bus/busctl-introspect.h index ea807d5973..d922e352db 100644 --- a/src/libsystemd/sd-bus/busctl-introspect.h +++ b/src/libsystemd/sd-bus/busctl-introspect.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/libsystemd/sd-bus/busctl.c b/src/libsystemd/sd-bus/busctl.c index 3e66589489..35fabf038c 100644 --- a/src/libsystemd/sd-bus/busctl.c +++ b/src/libsystemd/sd-bus/busctl.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-bus/sd-bus.c b/src/libsystemd/sd-bus/sd-bus.c index 3c2232a354..c6f626d8aa 100644 --- a/src/libsystemd/sd-bus/sd-bus.c +++ b/src/libsystemd/sd-bus/sd-bus.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-bus/test-bus-benchmark.c b/src/libsystemd/sd-bus/test-bus-benchmark.c index 3a88bf59c7..56ac2ab3dd 100644 --- a/src/libsystemd/sd-bus/test-bus-benchmark.c +++ b/src/libsystemd/sd-bus/test-bus-benchmark.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-bus/test-bus-chat.c b/src/libsystemd/sd-bus/test-bus-chat.c index b07e348fdb..048c0d19e2 100644 --- a/src/libsystemd/sd-bus/test-bus-chat.c +++ b/src/libsystemd/sd-bus/test-bus-chat.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-bus/test-bus-cleanup.c b/src/libsystemd/sd-bus/test-bus-cleanup.c index cbc450fdb2..250a5b2908 100644 --- a/src/libsystemd/sd-bus/test-bus-cleanup.c +++ b/src/libsystemd/sd-bus/test-bus-cleanup.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-bus/test-bus-creds.c b/src/libsystemd/sd-bus/test-bus-creds.c index 8003501059..e9ef483bdd 100644 --- a/src/libsystemd/sd-bus/test-bus-creds.c +++ b/src/libsystemd/sd-bus/test-bus-creds.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-bus/test-bus-error.c b/src/libsystemd/sd-bus/test-bus-error.c index 407fd14555..46d18abd29 100644 --- a/src/libsystemd/sd-bus/test-bus-error.c +++ b/src/libsystemd/sd-bus/test-bus-error.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-bus/test-bus-gvariant.c b/src/libsystemd/sd-bus/test-bus-gvariant.c index 2d8e9d2f28..83f114a0fe 100644 --- a/src/libsystemd/sd-bus/test-bus-gvariant.c +++ b/src/libsystemd/sd-bus/test-bus-gvariant.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-bus/test-bus-introspect.c b/src/libsystemd/sd-bus/test-bus-introspect.c index 26ba16d119..4425cfae26 100644 --- a/src/libsystemd/sd-bus/test-bus-introspect.c +++ b/src/libsystemd/sd-bus/test-bus-introspect.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-bus/test-bus-kernel-bloom.c b/src/libsystemd/sd-bus/test-bus-kernel-bloom.c index 0e957253c0..eb6179d7d2 100644 --- a/src/libsystemd/sd-bus/test-bus-kernel-bloom.c +++ b/src/libsystemd/sd-bus/test-bus-kernel-bloom.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-bus/test-bus-kernel.c b/src/libsystemd/sd-bus/test-bus-kernel.c index 6163c7784e..2214817312 100644 --- a/src/libsystemd/sd-bus/test-bus-kernel.c +++ b/src/libsystemd/sd-bus/test-bus-kernel.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-bus/test-bus-marshal.c b/src/libsystemd/sd-bus/test-bus-marshal.c index b9d1ea5217..a28cc5b79e 100644 --- a/src/libsystemd/sd-bus/test-bus-marshal.c +++ b/src/libsystemd/sd-bus/test-bus-marshal.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-bus/test-bus-match.c b/src/libsystemd/sd-bus/test-bus-match.c index 97ef396c6b..29c4529f95 100644 --- a/src/libsystemd/sd-bus/test-bus-match.c +++ b/src/libsystemd/sd-bus/test-bus-match.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-bus/test-bus-objects.c b/src/libsystemd/sd-bus/test-bus-objects.c index 0dd248552c..f11cafd888 100644 --- a/src/libsystemd/sd-bus/test-bus-objects.c +++ b/src/libsystemd/sd-bus/test-bus-objects.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-bus/test-bus-proxy.c b/src/libsystemd/sd-bus/test-bus-proxy.c index 42fa3e6293..45d0a5ffce 100644 --- a/src/libsystemd/sd-bus/test-bus-proxy.c +++ b/src/libsystemd/sd-bus/test-bus-proxy.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-bus/test-bus-server.c b/src/libsystemd/sd-bus/test-bus-server.c index bd89780346..b6272efc30 100644 --- a/src/libsystemd/sd-bus/test-bus-server.c +++ b/src/libsystemd/sd-bus/test-bus-server.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-bus/test-bus-signature.c b/src/libsystemd/sd-bus/test-bus-signature.c index 949d16e6e9..4f4fd093bf 100644 --- a/src/libsystemd/sd-bus/test-bus-signature.c +++ b/src/libsystemd/sd-bus/test-bus-signature.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-bus/test-bus-zero-copy.c b/src/libsystemd/sd-bus/test-bus-zero-copy.c index 1cf8416fa4..3380e8500a 100644 --- a/src/libsystemd/sd-bus/test-bus-zero-copy.c +++ b/src/libsystemd/sd-bus/test-bus-zero-copy.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-daemon/sd-daemon.c b/src/libsystemd/sd-daemon/sd-daemon.c index f1e9b7ed1b..4e50b61979 100644 --- a/src/libsystemd/sd-daemon/sd-daemon.c +++ b/src/libsystemd/sd-daemon/sd-daemon.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-device/device-enumerator-private.h b/src/libsystemd/sd-device/device-enumerator-private.h index 8d04640dc7..eb06f9542d 100644 --- a/src/libsystemd/sd-device/device-enumerator-private.h +++ b/src/libsystemd/sd-device/device-enumerator-private.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/libsystemd/sd-device/device-private.h b/src/libsystemd/sd-device/device-private.h index d1f34efc2d..29b3e155fb 100644 --- a/src/libsystemd/sd-device/device-private.h +++ b/src/libsystemd/sd-device/device-private.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/libsystemd/sd-device/device-util.h b/src/libsystemd/sd-device/device-util.h index ba9edc61ce..5b42e11de6 100644 --- a/src/libsystemd/sd-device/device-util.h +++ b/src/libsystemd/sd-device/device-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/libsystemd/sd-event/sd-event.c b/src/libsystemd/sd-event/sd-event.c index 11c7330b9b..2b46a1ff06 100644 --- a/src/libsystemd/sd-event/sd-event.c +++ b/src/libsystemd/sd-event/sd-event.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -327,6 +325,10 @@ static int earliest_time_prioq_compare(const void *a, const void *b) { return 0; } +static usec_t time_event_source_latest(const sd_event_source *s) { + return usec_add(s->time.next, s->time.accuracy); +} + static int latest_time_prioq_compare(const void *a, const void *b) { const sd_event_source *x = a, *y = b; @@ -346,9 +348,9 @@ static int latest_time_prioq_compare(const void *a, const void *b) { return 1; /* Order by time */ - if (x->time.next + x->time.accuracy < y->time.next + y->time.accuracy) + if (time_event_source_latest(x) < time_event_source_latest(y)) return -1; - if (x->time.next + x->time.accuracy > y->time.next + y->time.accuracy) + if (time_event_source_latest(x) > time_event_source_latest(y)) return 1; return 0; @@ -1066,7 +1068,6 @@ _public_ int sd_event_add_time( int r; assert_return(e, -EINVAL); - assert_return(usec != (uint64_t) -1, -EINVAL); assert_return(accuracy != (uint64_t) -1, -EINVAL); assert_return(e->state != SD_EVENT_FINISHED, -ESTALE); assert_return(!event_pid_changed(e), -ECHILD); @@ -1756,7 +1757,6 @@ _public_ int sd_event_source_set_time(sd_event_source *s, uint64_t usec) { struct clock_data *d; assert_return(s, -EINVAL); - assert_return(usec != (uint64_t) -1, -EINVAL); assert_return(EVENT_SOURCE_IS_TIME(s->type), -EDOM); assert_return(s->event->state != SD_EVENT_FINISHED, -ESTALE); assert_return(!event_pid_changed(s->event), -ECHILD); @@ -1886,6 +1886,8 @@ static usec_t sleep_between(sd_event *e, usec_t a, usec_t b) { if (a <= 0) return 0; + if (a >= USEC_INFINITY) + return USEC_INFINITY; if (b <= a + 1) return a; @@ -1975,7 +1977,7 @@ static int event_arm_timer( d->needs_rearm = false; a = prioq_peek(d->earliest); - if (!a || a->enabled == SD_EVENT_OFF) { + if (!a || a->enabled == SD_EVENT_OFF || a->time.next == USEC_INFINITY) { if (d->fd < 0) return 0; @@ -1995,7 +1997,7 @@ static int event_arm_timer( b = prioq_peek(d->latest); assert_se(b && b->enabled != SD_EVENT_OFF); - t = sleep_between(e, a->time.next, b->time.next + b->time.accuracy); + t = sleep_between(e, a->time.next, time_event_source_latest(b)); if (d->next == t) return 0; @@ -2778,9 +2780,13 @@ _public_ int sd_event_now(sd_event *e, clockid_t clock, uint64_t *usec) { *usec = e->timestamp.monotonic; break; - default: + case CLOCK_BOOTTIME: + case CLOCK_BOOTTIME_ALARM: *usec = e->timestamp_boottime; break; + + default: + assert_not_reached("Unknown clock?"); } return 0; diff --git a/src/libsystemd/sd-event/test-event.c b/src/libsystemd/sd-event/test-event.c index c605b18ae9..daea4126f8 100644 --- a/src/libsystemd/sd-event/test-event.c +++ b/src/libsystemd/sd-event/test-event.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-hwdb/hwdb-util.h b/src/libsystemd/sd-hwdb/hwdb-util.h index 6765ba9400..5e21e5008b 100644 --- a/src/libsystemd/sd-hwdb/hwdb-util.h +++ b/src/libsystemd/sd-hwdb/hwdb-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/libsystemd/sd-id128/sd-id128.c b/src/libsystemd/sd-id128/sd-id128.c index c12bb1e20b..d9c0116f60 100644 --- a/src/libsystemd/sd-id128/sd-id128.c +++ b/src/libsystemd/sd-id128/sd-id128.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-login/sd-login.c b/src/libsystemd/sd-login/sd-login.c index ef240c3531..9d4f187502 100644 --- a/src/libsystemd/sd-login/sd-login.c +++ b/src/libsystemd/sd-login/sd-login.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-login/test-login.c b/src/libsystemd/sd-login/test-login.c index b0f94c9522..c1fd7dd33e 100644 --- a/src/libsystemd/sd-login/test-login.c +++ b/src/libsystemd/sd-login/test-login.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-netlink/local-addresses.c b/src/libsystemd/sd-netlink/local-addresses.c index 997b048e58..6abd8fd0cc 100644 --- a/src/libsystemd/sd-netlink/local-addresses.c +++ b/src/libsystemd/sd-netlink/local-addresses.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-netlink/local-addresses.h b/src/libsystemd/sd-netlink/local-addresses.h index 74d4f25534..18d71e797e 100644 --- a/src/libsystemd/sd-netlink/local-addresses.h +++ b/src/libsystemd/sd-netlink/local-addresses.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/libsystemd/sd-netlink/netlink-internal.h b/src/libsystemd/sd-netlink/netlink-internal.h index 6c752ac65e..dcfb080ad3 100644 --- a/src/libsystemd/sd-netlink/netlink-internal.h +++ b/src/libsystemd/sd-netlink/netlink-internal.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/libsystemd/sd-netlink/netlink-message.c b/src/libsystemd/sd-netlink/netlink-message.c index b1b3bccc44..3a866fdafe 100644 --- a/src/libsystemd/sd-netlink/netlink-message.c +++ b/src/libsystemd/sd-netlink/netlink-message.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-netlink/netlink-socket.c b/src/libsystemd/sd-netlink/netlink-socket.c index e95c99af0d..590fc53fc7 100644 --- a/src/libsystemd/sd-netlink/netlink-socket.c +++ b/src/libsystemd/sd-netlink/netlink-socket.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-netlink/netlink-types.c b/src/libsystemd/sd-netlink/netlink-types.c index be4ab1373d..a5758bb516 100644 --- a/src/libsystemd/sd-netlink/netlink-types.c +++ b/src/libsystemd/sd-netlink/netlink-types.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-netlink/netlink-types.h b/src/libsystemd/sd-netlink/netlink-types.h index 9e636a0b53..ecb20bfcdc 100644 --- a/src/libsystemd/sd-netlink/netlink-types.h +++ b/src/libsystemd/sd-netlink/netlink-types.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/libsystemd/sd-netlink/netlink-util.c b/src/libsystemd/sd-netlink/netlink-util.c index b69969e426..73b9ac0258 100644 --- a/src/libsystemd/sd-netlink/netlink-util.c +++ b/src/libsystemd/sd-netlink/netlink-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-netlink/netlink-util.h b/src/libsystemd/sd-netlink/netlink-util.h index a0e59e1ec6..f49bf4eaa6 100644 --- a/src/libsystemd/sd-netlink/netlink-util.h +++ b/src/libsystemd/sd-netlink/netlink-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/libsystemd/sd-netlink/rtnl-message.c b/src/libsystemd/sd-netlink/rtnl-message.c index 3e605db661..090552f576 100644 --- a/src/libsystemd/sd-netlink/rtnl-message.c +++ b/src/libsystemd/sd-netlink/rtnl-message.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-netlink/sd-netlink.c b/src/libsystemd/sd-netlink/sd-netlink.c index 15d387df2c..4833815b43 100644 --- a/src/libsystemd/sd-netlink/sd-netlink.c +++ b/src/libsystemd/sd-netlink/sd-netlink.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -44,11 +42,8 @@ static int sd_netlink_new(sd_netlink **ret) { return -ENOMEM; rtnl->n_ref = REFCNT_INIT; - rtnl->fd = -1; - rtnl->sockaddr.nl.nl_family = AF_NETLINK; - rtnl->original_pid = getpid(); LIST_HEAD_INIT(rtnl->match_callbacks); @@ -87,6 +82,9 @@ int sd_netlink_new_from_netlink(sd_netlink **ret, int fd) { if (r < 0) return -errno; + if (rtnl->sockaddr.nl.nl_family != AF_NETLINK) + return -EINVAL; + rtnl->fd = fd; *ret = rtnl; @@ -118,8 +116,10 @@ int sd_netlink_open_fd(sd_netlink **ret, int fd) { rtnl->fd = fd; r = socket_bind(rtnl); - if (r < 0) + if (r < 0) { + rtnl->fd = -1; /* on failure, the caller remains owner of the fd, hence don't close it here */ return r; + } *ret = rtnl; rtnl = NULL; diff --git a/src/libsystemd/sd-netlink/test-local-addresses.c b/src/libsystemd/sd-netlink/test-local-addresses.c index 0b53297ab8..e0e28cc0cc 100644 --- a/src/libsystemd/sd-netlink/test-local-addresses.c +++ b/src/libsystemd/sd-netlink/test-local-addresses.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-netlink/test-netlink.c b/src/libsystemd/sd-netlink/test-netlink.c index 6a8b4d31d1..de5e0ffc8f 100644 --- a/src/libsystemd/sd-netlink/test-netlink.c +++ b/src/libsystemd/sd-netlink/test-netlink.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-network/network-util.c b/src/libsystemd/sd-network/network-util.c index a2d6c59314..a0d9b5f1a4 100644 --- a/src/libsystemd/sd-network/network-util.c +++ b/src/libsystemd/sd-network/network-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-network/network-util.h b/src/libsystemd/sd-network/network-util.h index 57bbb70f41..26780dce28 100644 --- a/src/libsystemd/sd-network/network-util.h +++ b/src/libsystemd/sd-network/network-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/libsystemd/sd-network/sd-network.c b/src/libsystemd/sd-network/sd-network.c index 4b7fad9c81..62051992ef 100644 --- a/src/libsystemd/sd-network/sd-network.c +++ b/src/libsystemd/sd-network/sd-network.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-resolve/sd-resolve.c b/src/libsystemd/sd-resolve/sd-resolve.c index c3489cb02f..de17a6112e 100644 --- a/src/libsystemd/sd-resolve/sd-resolve.c +++ b/src/libsystemd/sd-resolve/sd-resolve.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-resolve/test-resolve.c b/src/libsystemd/sd-resolve/test-resolve.c index ce97e81ed6..33ef6fc0f7 100644 --- a/src/libsystemd/sd-resolve/test-resolve.c +++ b/src/libsystemd/sd-resolve/test-resolve.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/libsystemd/sd-utf8/sd-utf8.c b/src/libsystemd/sd-utf8/sd-utf8.c index 9e52db3b3d..33a5a04ea1 100644 --- a/src/libsystemd/sd-utf8/sd-utf8.c +++ b/src/libsystemd/sd-utf8/sd-utf8.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/locale/localectl.c b/src/locale/localectl.c index db75bf4615..365c79aa51 100644 --- a/src/locale/localectl.c +++ b/src/locale/localectl.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/locale/localed.c b/src/locale/localed.c index 8ab845eb80..f0fe59cc67 100644 --- a/src/locale/localed.c +++ b/src/locale/localed.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/login/inhibit.c b/src/login/inhibit.c index cb4a2d9e78..f2c37a8623 100644 --- a/src/login/inhibit.c +++ b/src/login/inhibit.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/login/loginctl.c b/src/login/loginctl.c index 931b96fe51..6ad3d089bd 100644 --- a/src/login/loginctl.c +++ b/src/login/loginctl.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/login/logind-acl.c b/src/login/logind-acl.c index d0dd569a03..0cef88a82d 100644 --- a/src/login/logind-acl.c +++ b/src/login/logind-acl.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/login/logind-acl.h b/src/login/logind-acl.h index 1f55759798..1286c6a3cd 100644 --- a/src/login/logind-acl.h +++ b/src/login/logind-acl.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/login/logind-action.c b/src/login/logind-action.c index 4470522c55..9a8089f97c 100644 --- a/src/login/logind-action.c +++ b/src/login/logind-action.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/login/logind-action.h b/src/login/logind-action.h index 63c279cde7..fb40ae48d2 100644 --- a/src/login/logind-action.h +++ b/src/login/logind-action.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/login/logind-button.c b/src/login/logind-button.c index b08b69dbfc..baa6b7113c 100644 --- a/src/login/logind-button.c +++ b/src/login/logind-button.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/login/logind-button.h b/src/login/logind-button.h index 80d93c7e6b..f30cba2959 100644 --- a/src/login/logind-button.h +++ b/src/login/logind-button.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/login/logind-core.c b/src/login/logind-core.c index 2e14aa2d95..8bdb3a9a38 100644 --- a/src/login/logind-core.c +++ b/src/login/logind-core.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c index 9eda4638e5..1d3133ee25 100644 --- a/src/login/logind-dbus.c +++ b/src/login/logind-dbus.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -1228,7 +1226,6 @@ static int attach_device(Manager *m, const char *seat, const char *sysfs) { return -ENOMEM; mkdir_p_label("/etc/udev/rules.d", 0755); - mac_selinux_init("/etc"); r = write_string_file_atomic_label(file, rule); if (r < 0) return r; diff --git a/src/login/logind-device.c b/src/login/logind-device.c index ffb9162e56..eb5edd1cd5 100644 --- a/src/login/logind-device.c +++ b/src/login/logind-device.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/login/logind-device.h b/src/login/logind-device.h index 6b2728586c..927068e00a 100644 --- a/src/login/logind-device.h +++ b/src/login/logind-device.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/login/logind-inhibit.c b/src/login/logind-inhibit.c index 33fbdde557..a0e3ba2b7c 100644 --- a/src/login/logind-inhibit.c +++ b/src/login/logind-inhibit.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/login/logind-inhibit.h b/src/login/logind-inhibit.h index 1b77fc1e9e..70de199c60 100644 --- a/src/login/logind-inhibit.h +++ b/src/login/logind-inhibit.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/login/logind-seat-dbus.c b/src/login/logind-seat-dbus.c index e7dccbdba4..3cee10d009 100644 --- a/src/login/logind-seat-dbus.c +++ b/src/login/logind-seat-dbus.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/login/logind-seat.c b/src/login/logind-seat.c index 9d111f737c..b5192320e4 100644 --- a/src/login/logind-seat.c +++ b/src/login/logind-seat.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/login/logind-seat.h b/src/login/logind-seat.h index 248dbeb9d7..9a4fbc5bc5 100644 --- a/src/login/logind-seat.h +++ b/src/login/logind-seat.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/login/logind-session-dbus.c b/src/login/logind-session-dbus.c index 99438d87f7..ff9170683b 100644 --- a/src/login/logind-session-dbus.c +++ b/src/login/logind-session-dbus.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/login/logind-session-device.c b/src/login/logind-session-device.c index adec894da2..4055a23277 100644 --- a/src/login/logind-session-device.c +++ b/src/login/logind-session-device.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/login/logind-session-device.h b/src/login/logind-session-device.h index 1c9f998371..7c8503583f 100644 --- a/src/login/logind-session-device.h +++ b/src/login/logind-session-device.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/login/logind-session.c b/src/login/logind-session.c index c8d505e773..417b7f5d98 100644 --- a/src/login/logind-session.c +++ b/src/login/logind-session.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/login/logind-session.h b/src/login/logind-session.h index d27407fc92..e24b808474 100644 --- a/src/login/logind-session.h +++ b/src/login/logind-session.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/login/logind-user-dbus.c b/src/login/logind-user-dbus.c index 3a27305488..fd98c7beca 100644 --- a/src/login/logind-user-dbus.c +++ b/src/login/logind-user-dbus.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/login/logind-user.c b/src/login/logind-user.c index 98f8ea3c78..6b9c69cc45 100644 --- a/src/login/logind-user.c +++ b/src/login/logind-user.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/login/logind-user.h b/src/login/logind-user.h index de99cf47b4..4f0966dc77 100644 --- a/src/login/logind-user.h +++ b/src/login/logind-user.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/login/logind-utmp.c b/src/login/logind-utmp.c index 3bd61a81fd..11a91c3947 100644 --- a/src/login/logind-utmp.c +++ b/src/login/logind-utmp.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/login/logind.c b/src/login/logind.c index 9723e2f4e0..933602eb08 100644 --- a/src/login/logind.c +++ b/src/login/logind.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -36,6 +34,7 @@ #include "fd-util.h" #include "formats-util.h" #include "logind.h" +#include "selinux-util.h" #include "signal-util.h" #include "strv.h" #include "udev-util.h" @@ -1127,6 +1126,12 @@ int main(int argc, char *argv[]) { goto finish; } + r = mac_selinux_init("/run"); + if (r < 0) { + log_error_errno(r, "Could not initialize labelling: %m"); + goto finish; + } + /* Always create the directories people can create inotify * watches in. Note that some applications might check for the * existence of /run/systemd/seats/ to determine whether diff --git a/src/login/logind.h b/src/login/logind.h index f34544e64c..6748af3c07 100644 --- a/src/login/logind.h +++ b/src/login/logind.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/login/pam_systemd.c b/src/login/pam_systemd.c index 95977426d9..40e246bb06 100644 --- a/src/login/pam_systemd.c +++ b/src/login/pam_systemd.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/login/sysfs-show.c b/src/login/sysfs-show.c index e9ca4bb03d..bd603e297d 100644 --- a/src/login/sysfs-show.c +++ b/src/login/sysfs-show.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/login/sysfs-show.h b/src/login/sysfs-show.h index 9ffd129c48..3e94bc3ed5 100644 --- a/src/login/sysfs-show.h +++ b/src/login/sysfs-show.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/login/test-inhibit.c b/src/login/test-inhibit.c index 7022087076..a3cf9d293b 100644 --- a/src/login/test-inhibit.c +++ b/src/login/test-inhibit.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/login/test-login-shared.c b/src/login/test-login-shared.c index ac327f71fb..3d233f017c 100644 --- a/src/login/test-login-shared.c +++ b/src/login/test-login-shared.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/machine-id-setup/machine-id-setup-main.c b/src/machine-id-setup/machine-id-setup-main.c index 9d19307236..1d55fa04af 100644 --- a/src/machine-id-setup/machine-id-setup-main.c +++ b/src/machine-id-setup/machine-id-setup-main.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/machine/image-dbus.c b/src/machine/image-dbus.c index 19388b016a..73f5112c4d 100644 --- a/src/machine/image-dbus.c +++ b/src/machine/image-dbus.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/machine/image-dbus.h b/src/machine/image-dbus.h index d56d905c8e..b62da996c6 100644 --- a/src/machine/image-dbus.h +++ b/src/machine/image-dbus.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/machine/machine-dbus.c b/src/machine/machine-dbus.c index 03d32c6ed7..71f20b3f07 100644 --- a/src/machine/machine-dbus.c +++ b/src/machine/machine-dbus.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/machine/machine-dbus.h b/src/machine/machine-dbus.h index 194e680e05..3a8162b171 100644 --- a/src/machine/machine-dbus.h +++ b/src/machine/machine-dbus.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/machine/machine.c b/src/machine/machine.c index 3fe6f8b072..406d5a4b85 100644 --- a/src/machine/machine.c +++ b/src/machine/machine.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/machine/machine.h b/src/machine/machine.h index ad7f2a162f..1d8cc5911a 100644 --- a/src/machine/machine.h +++ b/src/machine/machine.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/machine/machinectl.c b/src/machine/machinectl.c index fd454310ae..4853139321 100644 --- a/src/machine/machinectl.c +++ b/src/machine/machinectl.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/machine/machined-dbus.c b/src/machine/machined-dbus.c index 6cb70af3aa..b933099330 100644 --- a/src/machine/machined-dbus.c +++ b/src/machine/machined-dbus.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/machine/machined.c b/src/machine/machined.c index df6318ca20..f2c1966a6b 100644 --- a/src/machine/machined.c +++ b/src/machine/machined.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/machine/machined.h b/src/machine/machined.h index bc5d4abb80..e7d7dfdceb 100644 --- a/src/machine/machined.h +++ b/src/machine/machined.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/modules-load/modules-load.c b/src/modules-load/modules-load.c index a7fdcb09cf..f75015d8c3 100644 --- a/src/modules-load/modules-load.c +++ b/src/modules-load/modules-load.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/network/networkctl.c b/src/network/networkctl.c index 253692aa64..60724fce80 100644 --- a/src/network/networkctl.c +++ b/src/network/networkctl.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/network/networkd-address-pool.c b/src/network/networkd-address-pool.c index 889fe1e30d..d9d487d805 100644 --- a/src/network/networkd-address-pool.c +++ b/src/network/networkd-address-pool.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/network/networkd-address-pool.h b/src/network/networkd-address-pool.h index 7f5bdf1d2f..8e1378ff40 100644 --- a/src/network/networkd-address-pool.h +++ b/src/network/networkd-address-pool.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/network/networkd-address.c b/src/network/networkd-address.c index 2d475d6ccc..7f9a7268cc 100644 --- a/src/network/networkd-address.c +++ b/src/network/networkd-address.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/network/networkd-address.h b/src/network/networkd-address.h index accd0a027d..338f6eb9a2 100644 --- a/src/network/networkd-address.h +++ b/src/network/networkd-address.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/network/networkd-dhcp4.c b/src/network/networkd-dhcp4.c index 59eccb392f..03c28bbcb6 100644 --- a/src/network/networkd-dhcp4.c +++ b/src/network/networkd-dhcp4.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/network/networkd-dhcp6.c b/src/network/networkd-dhcp6.c index e67e51f7ef..5f7a005c36 100644 --- a/src/network/networkd-dhcp6.c +++ b/src/network/networkd-dhcp6.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/network/networkd-fdb.c b/src/network/networkd-fdb.c index 6d819e245b..1538caa204 100644 --- a/src/network/networkd-fdb.c +++ b/src/network/networkd-fdb.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/network/networkd-fdb.h b/src/network/networkd-fdb.h index c8e3f2ce56..89b3e29405 100644 --- a/src/network/networkd-fdb.h +++ b/src/network/networkd-fdb.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/network/networkd-ipv4ll.c b/src/network/networkd-ipv4ll.c index f4aac4bb93..949c75337c 100644 --- a/src/network/networkd-ipv4ll.c +++ b/src/network/networkd-ipv4ll.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/network/networkd-link-bus.c b/src/network/networkd-link-bus.c index 4d6ac747fd..532557ed6c 100644 --- a/src/network/networkd-link-bus.c +++ b/src/network/networkd-link-bus.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index a2f0eceb6d..692c0bf63d 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/network/networkd-link.h b/src/network/networkd-link.h index 3964a12f37..0e6a7b6f21 100644 --- a/src/network/networkd-link.h +++ b/src/network/networkd-link.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/network/networkd-manager-bus.c b/src/network/networkd-manager-bus.c index dafaf2daea..0c429b9471 100644 --- a/src/network/networkd-manager-bus.c +++ b/src/network/networkd-manager-bus.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/network/networkd-manager.c b/src/network/networkd-manager.c index c10635d202..b527191a5a 100644 --- a/src/network/networkd-manager.c +++ b/src/network/networkd-manager.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/network/networkd-ndisc.c b/src/network/networkd-ndisc.c index 483efd17c3..f2287be20a 100644 --- a/src/network/networkd-ndisc.c +++ b/src/network/networkd-ndisc.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/network/networkd-netdev-bond.c b/src/network/networkd-netdev-bond.c index 50b9021d09..106f15fabc 100644 --- a/src/network/networkd-netdev-bond.c +++ b/src/network/networkd-netdev-bond.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/network/networkd-netdev-bond.h b/src/network/networkd-netdev-bond.h index 0cdce1605e..cb6baea24f 100644 --- a/src/network/networkd-netdev-bond.h +++ b/src/network/networkd-netdev-bond.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/network/networkd-netdev-bridge.c b/src/network/networkd-netdev-bridge.c index e2a099c833..cdcd08f057 100644 --- a/src/network/networkd-netdev-bridge.c +++ b/src/network/networkd-netdev-bridge.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/network/networkd-netdev-bridge.h b/src/network/networkd-netdev-bridge.h index d3bd15e0d6..b2bf7e15f1 100644 --- a/src/network/networkd-netdev-bridge.h +++ b/src/network/networkd-netdev-bridge.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/network/networkd-netdev-dummy.c b/src/network/networkd-netdev-dummy.c index bb246a2be0..6617a86c20 100644 --- a/src/network/networkd-netdev-dummy.c +++ b/src/network/networkd-netdev-dummy.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/network/networkd-netdev-dummy.h b/src/network/networkd-netdev-dummy.h index 0d321e5ae6..29f75a149b 100644 --- a/src/network/networkd-netdev-dummy.h +++ b/src/network/networkd-netdev-dummy.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/network/networkd-netdev-ipvlan.c b/src/network/networkd-netdev-ipvlan.c index 27cb7d1bf0..af4177e43a 100644 --- a/src/network/networkd-netdev-ipvlan.c +++ b/src/network/networkd-netdev-ipvlan.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/network/networkd-netdev-ipvlan.h b/src/network/networkd-netdev-ipvlan.h index 408386f378..5b85ef2150 100644 --- a/src/network/networkd-netdev-ipvlan.h +++ b/src/network/networkd-netdev-ipvlan.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/network/networkd-netdev-macvlan.c b/src/network/networkd-netdev-macvlan.c index 7144823b2d..48e98aa51b 100644 --- a/src/network/networkd-netdev-macvlan.c +++ b/src/network/networkd-netdev-macvlan.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/network/networkd-netdev-macvlan.h b/src/network/networkd-netdev-macvlan.h index c491bfa312..8b42684de6 100644 --- a/src/network/networkd-netdev-macvlan.h +++ b/src/network/networkd-netdev-macvlan.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/network/networkd-netdev-tunnel.c b/src/network/networkd-netdev-tunnel.c index a2c00161d3..46ff2974f4 100644 --- a/src/network/networkd-netdev-tunnel.c +++ b/src/network/networkd-netdev-tunnel.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/network/networkd-netdev-tunnel.h b/src/network/networkd-netdev-tunnel.h index fa7decce18..ea1d9a79e7 100644 --- a/src/network/networkd-netdev-tunnel.h +++ b/src/network/networkd-netdev-tunnel.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/network/networkd-netdev-tuntap.c b/src/network/networkd-netdev-tuntap.c index 3d504a8564..ab9a1b0426 100644 --- a/src/network/networkd-netdev-tuntap.c +++ b/src/network/networkd-netdev-tuntap.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/network/networkd-netdev-tuntap.h b/src/network/networkd-netdev-tuntap.h index 29f8bb0ea5..b970b0ce3b 100644 --- a/src/network/networkd-netdev-tuntap.h +++ b/src/network/networkd-netdev-tuntap.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/network/networkd-netdev-veth.c b/src/network/networkd-netdev-veth.c index 773a1ee6d1..b122a06c25 100644 --- a/src/network/networkd-netdev-veth.c +++ b/src/network/networkd-netdev-veth.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/network/networkd-netdev-veth.h b/src/network/networkd-netdev-veth.h index 85d8b49a75..f7fdf906ab 100644 --- a/src/network/networkd-netdev-veth.h +++ b/src/network/networkd-netdev-veth.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/network/networkd-netdev-vlan.c b/src/network/networkd-netdev-vlan.c index 75fbdd355e..b1f4714afa 100644 --- a/src/network/networkd-netdev-vlan.c +++ b/src/network/networkd-netdev-vlan.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/network/networkd-netdev-vlan.h b/src/network/networkd-netdev-vlan.h index 0c0fbbe093..8701c4b785 100644 --- a/src/network/networkd-netdev-vlan.h +++ b/src/network/networkd-netdev-vlan.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/network/networkd-netdev-vxlan.c b/src/network/networkd-netdev-vxlan.c index 531f2c300e..eb9a2c06b3 100644 --- a/src/network/networkd-netdev-vxlan.c +++ b/src/network/networkd-netdev-vxlan.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/network/networkd-netdev-vxlan.h b/src/network/networkd-netdev-vxlan.h index 00142968ae..459ce53f5e 100644 --- a/src/network/networkd-netdev-vxlan.h +++ b/src/network/networkd-netdev-vxlan.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/network/networkd-netdev.c b/src/network/networkd-netdev.c index 795f24ae4f..d7d014f05d 100644 --- a/src/network/networkd-netdev.c +++ b/src/network/networkd-netdev.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/network/networkd-netdev.h b/src/network/networkd-netdev.h index 3ab39efd57..3eacee824b 100644 --- a/src/network/networkd-netdev.h +++ b/src/network/networkd-netdev.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/network/networkd-network-bus.c b/src/network/networkd-network-bus.c index 120760a986..d6b7448a43 100644 --- a/src/network/networkd-network-bus.c +++ b/src/network/networkd-network-bus.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/network/networkd-network.c b/src/network/networkd-network.c index e1a811129d..4315790093 100644 --- a/src/network/networkd-network.c +++ b/src/network/networkd-network.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/network/networkd-network.h b/src/network/networkd-network.h index 626dfbd40a..03c3f206c3 100644 --- a/src/network/networkd-network.h +++ b/src/network/networkd-network.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/network/networkd-route.c b/src/network/networkd-route.c index 798fe3f647..e065a5a5a9 100644 --- a/src/network/networkd-route.c +++ b/src/network/networkd-route.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/network/networkd-route.h b/src/network/networkd-route.h index 37c12907d7..a4a4bf2653 100644 --- a/src/network/networkd-route.h +++ b/src/network/networkd-route.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/network/networkd-util.c b/src/network/networkd-util.c index 93135bb658..555a7c68a1 100644 --- a/src/network/networkd-util.c +++ b/src/network/networkd-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/network/networkd-util.h b/src/network/networkd-util.h index 021ce4b128..d5c385bea4 100644 --- a/src/network/networkd-util.h +++ b/src/network/networkd-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/network/networkd-wait-online-link.c b/src/network/networkd-wait-online-link.c index c2779ff773..5727422e3d 100644 --- a/src/network/networkd-wait-online-link.c +++ b/src/network/networkd-wait-online-link.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/network/networkd-wait-online-link.h b/src/network/networkd-wait-online-link.h index 068196622e..dc35085c55 100644 --- a/src/network/networkd-wait-online-link.h +++ b/src/network/networkd-wait-online-link.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/network/networkd-wait-online-manager.c b/src/network/networkd-wait-online-manager.c index c70b370012..2ff7ddb044 100644 --- a/src/network/networkd-wait-online-manager.c +++ b/src/network/networkd-wait-online-manager.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/network/networkd-wait-online.h b/src/network/networkd-wait-online.h index 627c46be13..421c2bdf44 100644 --- a/src/network/networkd-wait-online.h +++ b/src/network/networkd-wait-online.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/network/networkd.c b/src/network/networkd.c index ef394e0c04..3a2615e6fd 100644 --- a/src/network/networkd.c +++ b/src/network/networkd.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/network/networkd.h b/src/network/networkd.h index 8086e528bf..7ee922621a 100644 --- a/src/network/networkd.h +++ b/src/network/networkd.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/network/test-network.c b/src/network/test-network.c index a1a77b6867..855646173f 100644 --- a/src/network/test-network.c +++ b/src/network/test-network.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/notify/notify.c b/src/notify/notify.c index b144554702..49f97c61d9 100644 --- a/src/notify/notify.c +++ b/src/notify/notify.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/nspawn/nspawn-cgroup.c b/src/nspawn/nspawn-cgroup.c index 3c0e26ea5a..1db5ba7116 100644 --- a/src/nspawn/nspawn-cgroup.c +++ b/src/nspawn/nspawn-cgroup.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/nspawn/nspawn-cgroup.h b/src/nspawn/nspawn-cgroup.h index 4e8db63750..1ff35a299a 100644 --- a/src/nspawn/nspawn-cgroup.h +++ b/src/nspawn/nspawn-cgroup.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/nspawn/nspawn-expose-ports.c b/src/nspawn/nspawn-expose-ports.c index 89e5c57db3..86124b8779 100644 --- a/src/nspawn/nspawn-expose-ports.c +++ b/src/nspawn/nspawn-expose-ports.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/nspawn/nspawn-expose-ports.h b/src/nspawn/nspawn-expose-ports.h index cb7340bad7..741ad9765c 100644 --- a/src/nspawn/nspawn-expose-ports.h +++ b/src/nspawn/nspawn-expose-ports.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/nspawn/nspawn-gperf.gperf b/src/nspawn/nspawn-gperf.gperf index 58f9f4c635..116655cdd2 100644 --- a/src/nspawn/nspawn-gperf.gperf +++ b/src/nspawn/nspawn-gperf.gperf @@ -15,7 +15,8 @@ struct ConfigPerfItem; %struct-type %includes %% -Exec.Boot, config_parse_tristate, 0, offsetof(Settings, boot) +Exec.Boot, config_parse_boot, 0, 0 +Exec.ProcessTwo, config_parse_pid2, 0, 0, Exec.Parameters, config_parse_strv, 0, offsetof(Settings, parameters) Exec.Environment, config_parse_strv, 0, offsetof(Settings, environment) Exec.User, config_parse_string, 0, offsetof(Settings, user) @@ -24,6 +25,7 @@ Exec.DropCapability, config_parse_capability, 0, offsetof(Settings, Exec.KillSignal, config_parse_signal, 0, offsetof(Settings, kill_signal) Exec.Personality, config_parse_personality, 0, offsetof(Settings, personality) Exec.MachineID, config_parse_id128, 0, offsetof(Settings, machine_id) +Exec.WorkingDirectory, config_parse_path, 0, offsetof(Settings, working_directory) Files.ReadOnly, config_parse_tristate, 0, offsetof(Settings, read_only) Files.Volatile, config_parse_volatile_mode, 0, offsetof(Settings, volatile_mode) Files.Bind, config_parse_bind, 0, 0 diff --git a/src/nspawn/nspawn-mount.c b/src/nspawn/nspawn-mount.c index c8e627ac78..70cca15278 100644 --- a/src/nspawn/nspawn-mount.c +++ b/src/nspawn/nspawn-mount.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/nspawn/nspawn-mount.h b/src/nspawn/nspawn-mount.h index bdab23bcca..0daf145412 100644 --- a/src/nspawn/nspawn-mount.h +++ b/src/nspawn/nspawn-mount.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/nspawn/nspawn-network.c b/src/nspawn/nspawn-network.c index 3104c8e953..fcb1efaa74 100644 --- a/src/nspawn/nspawn-network.c +++ b/src/nspawn/nspawn-network.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/nspawn/nspawn-network.h b/src/nspawn/nspawn-network.h index c91fc79c42..9ab1606d1c 100644 --- a/src/nspawn/nspawn-network.h +++ b/src/nspawn/nspawn-network.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/nspawn/nspawn-register.c b/src/nspawn/nspawn-register.c index 65ca9c762b..760861089d 100644 --- a/src/nspawn/nspawn-register.c +++ b/src/nspawn/nspawn-register.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -166,17 +164,9 @@ int register_machine( } STRV_FOREACH(i, properties) { - r = sd_bus_message_open_container(m, 'r', "sv"); - if (r < 0) - return bus_log_create_error(r); - r = bus_append_unit_property_assignment(m, *i); if (r < 0) return r; - - r = sd_bus_message_close_container(m); - if (r < 0) - return bus_log_create_error(r); } r = sd_bus_message_close_container(m); diff --git a/src/nspawn/nspawn-register.h b/src/nspawn/nspawn-register.h index d3bfd84e5e..304c5a485b 100644 --- a/src/nspawn/nspawn-register.h +++ b/src/nspawn/nspawn-register.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/nspawn/nspawn-settings.c b/src/nspawn/nspawn-settings.c index d6b64d8d5a..4fb0054698 100644 --- a/src/nspawn/nspawn-settings.c +++ b/src/nspawn/nspawn-settings.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -24,6 +22,7 @@ #include "conf-parser.h" #include "nspawn-network.h" #include "nspawn-settings.h" +#include "parse-util.h" #include "process-util.h" #include "strv.h" #include "util.h" @@ -39,7 +38,7 @@ int settings_load(FILE *f, const char *path, Settings **ret) { if (!s) return -ENOMEM; - s->boot = -1; + s->start_mode = _START_MODE_INVALID; s->personality = PERSONALITY_INVALID; s->read_only = -1; @@ -74,6 +73,7 @@ Settings* settings_free(Settings *s) { strv_free(s->parameters); strv_free(s->environment); free(s->user); + free(s->working_directory); strv_free(s->network_interfaces); strv_free(s->network_macvlan); @@ -302,3 +302,93 @@ int config_parse_veth_extra( return 0; } + +int config_parse_boot( + const char *unit, + const char *filename, + unsigned line, + const char *section, + unsigned section_line, + const char *lvalue, + int ltype, + const char *rvalue, + void *data, + void *userdata) { + + Settings *settings = data; + int r; + + assert(filename); + assert(lvalue); + assert(rvalue); + + r = parse_boolean(rvalue); + if (r < 0) { + log_syntax(unit, LOG_ERR, filename, line, r, "Failed to parse Boot= parameter %s, ignoring: %m", rvalue); + return 0; + } + + if (r > 0) { + if (settings->start_mode == START_PID2) + goto conflict; + + settings->start_mode = START_BOOT; + } else { + if (settings->start_mode == START_BOOT) + goto conflict; + + if (settings->start_mode < 0) + settings->start_mode = START_PID1; + } + + return 0; + +conflict: + log_syntax(unit, LOG_ERR, filename, line, r, "Conflicting Boot= or ProcessTwo= setting found. Ignoring."); + return 0; +} + +int config_parse_pid2( + const char *unit, + const char *filename, + unsigned line, + const char *section, + unsigned section_line, + const char *lvalue, + int ltype, + const char *rvalue, + void *data, + void *userdata) { + + Settings *settings = data; + int r; + + assert(filename); + assert(lvalue); + assert(rvalue); + + r = parse_boolean(rvalue); + if (r < 0) { + log_syntax(unit, LOG_ERR, filename, line, r, "Failed to parse ProcessTwo= parameter %s, ignoring: %m", rvalue); + return 0; + } + + if (r > 0) { + if (settings->start_mode == START_BOOT) + goto conflict; + + settings->start_mode = START_PID2; + } else { + if (settings->start_mode == START_PID2) + goto conflict; + + if (settings->start_mode < 0) + settings->start_mode = START_PID1; + } + + return 0; + +conflict: + log_syntax(unit, LOG_ERR, filename, line, r, "Conflicting Boot= or ProcessTwo= setting found. Ignoring."); + return 0; +} diff --git a/src/nspawn/nspawn-settings.h b/src/nspawn/nspawn-settings.h index 10230a5b83..a017405cd9 100644 --- a/src/nspawn/nspawn-settings.h +++ b/src/nspawn/nspawn-settings.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** @@ -27,25 +25,34 @@ #include "nspawn-expose-ports.h" #include "nspawn-mount.h" +typedef enum StartMode { + START_PID1, /* Run parameters as command line as process 1 */ + START_PID2, /* Use stub init process as PID 1, run parameters as command line as process 2 */ + START_BOOT, /* Search for init system, pass arguments as parameters */ + _START_MODE_MAX, + _START_MODE_INVALID = -1 +} StartMode; + typedef enum SettingsMask { - SETTING_BOOT = 1 << 0, - SETTING_ENVIRONMENT = 1 << 1, - SETTING_USER = 1 << 2, - SETTING_CAPABILITY = 1 << 3, - SETTING_KILL_SIGNAL = 1 << 4, - SETTING_PERSONALITY = 1 << 5, - SETTING_MACHINE_ID = 1 << 6, - SETTING_NETWORK = 1 << 7, - SETTING_EXPOSE_PORTS = 1 << 8, - SETTING_READ_ONLY = 1 << 9, - SETTING_VOLATILE_MODE = 1 << 10, - SETTING_CUSTOM_MOUNTS = 1 << 11, - _SETTINGS_MASK_ALL = (1 << 12) -1 + SETTING_START_MODE = 1 << 0, + SETTING_ENVIRONMENT = 1 << 1, + SETTING_USER = 1 << 2, + SETTING_CAPABILITY = 1 << 3, + SETTING_KILL_SIGNAL = 1 << 4, + SETTING_PERSONALITY = 1 << 5, + SETTING_MACHINE_ID = 1 << 6, + SETTING_NETWORK = 1 << 7, + SETTING_EXPOSE_PORTS = 1 << 8, + SETTING_READ_ONLY = 1 << 9, + SETTING_VOLATILE_MODE = 1 << 10, + SETTING_CUSTOM_MOUNTS = 1 << 11, + SETTING_WORKING_DIRECTORY = 1 << 12, + _SETTINGS_MASK_ALL = (1 << 13) -1 } SettingsMask; typedef struct Settings { /* [Run] */ - int boot; + StartMode start_mode; char **parameters; char **environment; char *user; @@ -54,6 +61,7 @@ typedef struct Settings { int kill_signal; unsigned long personality; sd_id128_t machine_id; + char *working_directory; /* [Image] */ int read_only; @@ -89,3 +97,5 @@ int config_parse_volatile_mode(const char *unit, const char *filename, unsigned int config_parse_bind(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); int config_parse_tmpfs(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); int config_parse_veth_extra(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); +int config_parse_boot(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); +int config_parse_pid2(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); diff --git a/src/nspawn/nspawn-setuid.c b/src/nspawn/nspawn-setuid.c index 014a40b243..ee15a47e93 100644 --- a/src/nspawn/nspawn-setuid.c +++ b/src/nspawn/nspawn-setuid.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/nspawn/nspawn-setuid.h b/src/nspawn/nspawn-setuid.h index 33be44a946..b4968ba1fc 100644 --- a/src/nspawn/nspawn-setuid.h +++ b/src/nspawn/nspawn-setuid.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/nspawn/nspawn-stub-pid1.c b/src/nspawn/nspawn-stub-pid1.c new file mode 100644 index 0000000000..2de87e3c63 --- /dev/null +++ b/src/nspawn/nspawn-stub-pid1.c @@ -0,0 +1,170 @@ +/*** + This file is part of systemd. + + Copyright 2016 Lennart Poettering + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see <http://www.gnu.org/licenses/>. +***/ + +#include <sys/reboot.h> +#include <sys/unistd.h> +#include <sys/wait.h> + +#include "fd-util.h" +#include "log.h" +#include "nspawn-stub-pid1.h" +#include "process-util.h" +#include "signal-util.h" +#include "time-util.h" +#include "def.h" + +int stub_pid1(void) { + enum { + STATE_RUNNING, + STATE_REBOOT, + STATE_POWEROFF, + } state = STATE_RUNNING; + + sigset_t fullmask, oldmask, waitmask; + usec_t quit_usec = USEC_INFINITY; + pid_t pid; + int r; + + /* Implements a stub PID 1, that reaps all processes and processes a couple of standard signals. This is useful + * for allowing arbitrary processes run in a container, and still have all zombies reaped. */ + + assert_se(sigfillset(&fullmask) >= 0); + assert_se(sigprocmask(SIG_BLOCK, &fullmask, &oldmask) >= 0); + + pid = fork(); + if (pid < 0) + return log_error_errno(errno, "Failed to fork child pid: %m"); + + if (pid == 0) { + /* Return in the child */ + assert_se(sigprocmask(SIG_SETMASK, &oldmask, NULL) >= 0); + setsid(); + return 0; + } + + reset_all_signal_handlers(); + + log_close(); + close_all_fds(NULL, 0); + log_open(); + + rename_process("STUBINIT"); + + assert_se(sigemptyset(&waitmask) >= 0); + assert_se(sigset_add_many(&waitmask, + SIGCHLD, /* posix: process died */ + SIGINT, /* sysv: ctrl-alt-del */ + SIGRTMIN+3, /* systemd: halt */ + SIGRTMIN+4, /* systemd: poweroff */ + SIGRTMIN+5, /* systemd: reboot */ + SIGRTMIN+6, /* systemd: kexec */ + SIGRTMIN+13, /* systemd: halt */ + SIGRTMIN+14, /* systemd: poweroff */ + SIGRTMIN+15, /* systemd: reboot */ + SIGRTMIN+16, /* systemd: kexec */ + -1) >= 0); + + /* Note that we ignore SIGTERM (sysv's reexec), SIGHUP (reload), and all other signals here, since we don't + * support reexec/reloading in this stub process. */ + + for (;;) { + siginfo_t si; + usec_t current_usec; + + si.si_pid = 0; + r = waitid(P_ALL, 0, &si, WEXITED|WNOHANG); + if (r < 0) { + r = log_error_errno(errno, "Failed to reap children: %m"); + goto finish; + } + + current_usec = now(CLOCK_MONOTONIC); + + if (si.si_pid == pid || current_usec >= quit_usec) { + + /* The child we started ourselves died or we reached a timeout. */ + + if (state == STATE_REBOOT) { /* dispatch a queued reboot */ + (void) reboot(RB_AUTOBOOT); + r = log_error_errno(errno, "Failed to reboot: %m"); + goto finish; + + } else if (state == STATE_POWEROFF) + (void) reboot(RB_POWER_OFF); /* if this fails, fall back to normal exit. */ + + if (si.si_pid == pid && si.si_code == CLD_EXITED) + r = si.si_status; /* pass on exit code */ + else + r = 255; /* signal, coredump, timeout, … */ + + goto finish; + } + if (si.si_pid != 0) + /* We reaped something. Retry until there's nothing more to reap. */ + continue; + + if (quit_usec == USEC_INFINITY) + r = sigwaitinfo(&waitmask, &si); + else { + struct timespec ts; + r = sigtimedwait(&waitmask, &si, timespec_store(&ts, quit_usec - current_usec)); + } + if (r < 0) { + if (errno == EINTR) /* strace -p attach can result in EINTR, let's handle this nicely. */ + continue; + if (errno == EAGAIN) /* timeout reached */ + continue; + + r = log_error_errno(errno, "Failed to wait for signal: %m"); + goto finish; + } + + if (si.si_signo == SIGCHLD) + continue; /* Let's reap this */ + + if (state != STATE_RUNNING) + continue; + + /* Would love to use a switch() statement here, but SIGRTMIN is actually a function call, not a + * constant… */ + + if (si.si_signo == SIGRTMIN+3 || + si.si_signo == SIGRTMIN+4 || + si.si_signo == SIGRTMIN+13 || + si.si_signo == SIGRTMIN+14) + + state = STATE_POWEROFF; + + else if (si.si_signo == SIGINT || + si.si_signo == SIGRTMIN+5 || + si.si_signo == SIGRTMIN+6 || + si.si_signo == SIGRTMIN+15 || + si.si_signo == SIGRTMIN+16) + + state = STATE_REBOOT; + else + assert_not_reached("Got unexpected signal"); + + /* (void) kill_and_sigcont(pid, SIGTERM); */ + quit_usec = now(CLOCK_MONOTONIC) + DEFAULT_TIMEOUT_USEC; + } + +finish: + _exit(r < 0 ? EXIT_FAILURE : r); +} diff --git a/src/core/bus-endpoint.h b/src/nspawn/nspawn-stub-pid1.h index f6c5f7c5af..36c1aaf5dd 100644 --- a/src/core/bus-endpoint.h +++ b/src/nspawn/nspawn-stub-pid1.h @@ -1,11 +1,9 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** This file is part of systemd. - Copyright 2014 Daniel Mack + Copyright 2016 Lennart Poettering 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 @@ -21,24 +19,4 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>. ***/ -typedef struct BusEndpoint BusEndpoint; -typedef struct BusEndpointPolicy BusEndpointPolicy; - -#include "bus-policy.h" -#include "hashmap.h" - -struct BusEndpointPolicy { - char *name; - BusPolicyAccess access; -}; - -struct BusEndpoint { - Hashmap *policy_hash; -}; - -int bus_endpoint_new(BusEndpoint **ep); -void bus_endpoint_free(BusEndpoint *endpoint); - -int bus_endpoint_add_policy(BusEndpoint *ep, const char *name, BusPolicyAccess access); - -int bus_kernel_set_endpoint_policy(int fd, uid_t uid, BusEndpoint *ep); +int stub_pid1(void); diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index 1c010b3b84..5a68fec603 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -79,6 +77,7 @@ #include "nspawn-register.h" #include "nspawn-settings.h" #include "nspawn-setuid.h" +#include "nspawn-stub-pid1.h" #include "parse-util.h" #include "path-util.h" #include "process-util.h" @@ -114,6 +113,7 @@ typedef enum LinkJournal { static char *arg_directory = NULL; static char *arg_template = NULL; +static char *arg_chdir = NULL; static char *arg_user = NULL; static sd_id128_t arg_uuid = {}; static char *arg_machine = NULL; @@ -122,7 +122,7 @@ static const char *arg_selinux_apifs_context = NULL; static const char *arg_slice = NULL; static bool arg_private_network = false; static bool arg_read_only = false; -static bool arg_boot = false; +static StartMode arg_start_mode = START_PID1; static bool arg_ephemeral = false; static LinkJournal arg_link_journal = LINK_AUTO; static bool arg_link_journal_try = false; @@ -192,7 +192,9 @@ static void help(void) { " -x --ephemeral Run container with snapshot of root directory, and\n" " remove it after exit\n" " -i --image=PATH File system device or disk image for the container\n" + " -a --as-pid2 Maintain a stub init as PID1, invoke binary as PID2\n" " -b --boot Boot up full system (i.e. invoke init)\n" + " --chdir=PATH Set working directory in the container\n" " -u --user=USER Run the command under specified user or uid\n" " -M --machine=NAME Set the machine name for the container\n" " --uuid=UUID Set a specific machine UUID for the container\n" @@ -231,8 +233,8 @@ static void help(void) { " capability\n" " --drop-capability=CAP Drop the specified capability from the default set\n" " --kill-signal=SIGNAL Select signal to use for shutting down PID 1\n" - " --link-journal=MODE Link up guest journal, one of no, auto, guest, host,\n" - " try-guest, try-host\n" + " --link-journal=MODE Link up guest journal, one of no, auto, guest, \n" + " host, try-guest, try-host\n" " -j Equivalent to --link-journal=try-guest\n" " --read-only Mount the root directory read-only\n" " --bind=PATH[:PATH[:OPTIONS]]\n" @@ -345,6 +347,7 @@ static int parse_argv(int argc, char *argv[]) { ARG_PRIVATE_USERS, ARG_KILL_SIGNAL, ARG_SETTINGS, + ARG_CHDIR, }; static const struct option options[] = { @@ -355,6 +358,7 @@ static int parse_argv(int argc, char *argv[]) { { "ephemeral", no_argument, NULL, 'x' }, { "user", required_argument, NULL, 'u' }, { "private-network", no_argument, NULL, ARG_PRIVATE_NETWORK }, + { "as-pid2", no_argument, NULL, 'a' }, { "boot", no_argument, NULL, 'b' }, { "uuid", required_argument, NULL, ARG_UUID }, { "read-only", no_argument, NULL, ARG_READ_ONLY }, @@ -389,6 +393,7 @@ static int parse_argv(int argc, char *argv[]) { { "private-users", optional_argument, NULL, ARG_PRIVATE_USERS }, { "kill-signal", required_argument, NULL, ARG_KILL_SIGNAL }, { "settings", required_argument, NULL, ARG_SETTINGS }, + { "chdir", required_argument, NULL, ARG_CHDIR }, {} }; @@ -400,7 +405,7 @@ static int parse_argv(int argc, char *argv[]) { assert(argc >= 0); assert(argv); - while ((c = getopt_long(argc, argv, "+hD:u:bL:M:jS:Z:qi:xp:n", options, NULL)) >= 0) + while ((c = getopt_long(argc, argv, "+hD:u:abL:M:jS:Z:qi:xp:n", options, NULL)) >= 0) switch (c) { @@ -491,8 +496,23 @@ static int parse_argv(int argc, char *argv[]) { break; case 'b': - arg_boot = true; - arg_settings_mask |= SETTING_BOOT; + if (arg_start_mode == START_PID2) { + log_error("--boot and --as-pid2 may not be combined."); + return -EINVAL; + } + + arg_start_mode = START_BOOT; + arg_settings_mask |= SETTING_START_MODE; + break; + + case 'a': + if (arg_start_mode == START_BOOT) { + log_error("--boot and --as-pid2 may not be combined."); + return -EINVAL; + } + + arg_start_mode = START_PID2; + arg_settings_mask |= SETTING_START_MODE; break; case ARG_UUID: @@ -849,6 +869,19 @@ static int parse_argv(int argc, char *argv[]) { break; + case ARG_CHDIR: + if (!path_is_absolute(optarg)) { + log_error("Working directory %s is not an absolute path.", optarg); + return -EINVAL; + } + + r = free_and_strdup(&arg_chdir, optarg); + if (r < 0) + return log_oom(); + + arg_settings_mask |= SETTING_WORKING_DIRECTORY; + break; + case '?': return -EINVAL; @@ -859,7 +892,7 @@ static int parse_argv(int argc, char *argv[]) { if (arg_share_system) arg_register = false; - if (arg_boot && arg_share_system) { + if (arg_start_mode != START_PID1 && arg_share_system) { log_error("--boot and --share-system may not be combined."); return -EINVAL; } @@ -907,7 +940,7 @@ static int parse_argv(int argc, char *argv[]) { if (!arg_parameters) return log_oom(); - arg_settings_mask |= SETTING_BOOT; + arg_settings_mask |= SETTING_START_MODE; } /* Load all settings from .nspawn files */ @@ -943,7 +976,7 @@ static int verify_arguments(void) { return -EINVAL; } - if (arg_boot && arg_kill_signal <= 0) + if (arg_start_mode == START_BOOT && arg_kill_signal <= 0) arg_kill_signal = SIGRTMIN+3; return 0; @@ -2563,6 +2596,16 @@ static int inner_child( return -ESRCH; } + if (arg_chdir) + if (chdir(arg_chdir) < 0) + return log_error_errno(errno, "Failed to change to specified working directory %s: %m", arg_chdir); + + if (arg_start_mode == START_PID2) { + r = stub_pid1(); + if (r < 0) + return r; + } + /* Now, explicitly close the log, so that we * then can close all remaining fds. Closing * the log explicitly first has the benefit @@ -2574,7 +2617,7 @@ static int inner_child( log_close(); (void) fdset_close_others(fds); - if (arg_boot) { + if (arg_start_mode == START_BOOT) { char **a; size_t m; @@ -2596,7 +2639,9 @@ static int inner_child( } else if (!strv_isempty(arg_parameters)) execvpe(arg_parameters[0], arg_parameters, env_use); else { - chdir(home ?: "/root"); + if (!arg_chdir) + chdir(home ?: "/root"); + execle("/bin/bash", "-bash", NULL, env_use); execle("/bin/sh", "-sh", NULL, env_use); } @@ -2892,15 +2937,22 @@ static int load_settings(void) { /* Copy over bits from the settings, unless they have been * explicitly masked by command line switches. */ - if ((arg_settings_mask & SETTING_BOOT) == 0 && - settings->boot >= 0) { - arg_boot = settings->boot; + if ((arg_settings_mask & SETTING_START_MODE) == 0 && + settings->start_mode >= 0) { + arg_start_mode = settings->start_mode; strv_free(arg_parameters); arg_parameters = settings->parameters; settings->parameters = NULL; } + if ((arg_settings_mask & SETTING_WORKING_DIRECTORY) == 0 && + settings->working_directory) { + free(arg_chdir); + arg_chdir = settings->working_directory; + settings->working_directory = NULL; + } + if ((arg_settings_mask & SETTING_ENVIRONMENT) == 0 && settings->environment) { strv_free(arg_setenv); @@ -3042,6 +3094,10 @@ int main(int argc, char *argv[]) { log_parse_environment(); log_open(); + /* Make sure rename_process() in the stub init process can work */ + saved_argv = argv; + saved_argc = argc; + r = parse_argv(argc, argv); if (r <= 0) goto finish; @@ -3148,7 +3204,7 @@ int main(int argc, char *argv[]) { } } - if (arg_boot) { + if (arg_start_mode == START_BOOT) { if (path_is_os_tree(arg_directory) <= 0) { log_error("Directory %s doesn't look like an OS root directory (os-release file is missing). Refusing.", arg_directory); r = -EINVAL; @@ -3627,6 +3683,7 @@ finish: free(arg_image); free(arg_machine); free(arg_user); + free(arg_chdir); strv_free(arg_setenv); free(arg_network_bridge); strv_free(arg_network_interfaces); diff --git a/src/nss-myhostname/nss-myhostname.c b/src/nss-myhostname/nss-myhostname.c index e438625814..2536ad2898 100644 --- a/src/nss-myhostname/nss-myhostname.c +++ b/src/nss-myhostname/nss-myhostname.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/nss-mymachines/nss-mymachines.c b/src/nss-mymachines/nss-mymachines.c index 3cd29500d0..1582d702f8 100644 --- a/src/nss-mymachines/nss-mymachines.c +++ b/src/nss-mymachines/nss-mymachines.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -40,6 +38,9 @@ NSS_GETHOSTBYNAME_PROTOTYPES(mymachines); NSS_GETPW_PROTOTYPES(mymachines); NSS_GETGR_PROTOTYPES(mymachines); +#define HOST_UID_LIMIT ((uid_t) UINT32_C(0x10000)) +#define HOST_GID_LIMIT ((gid_t) UINT32_C(0x10000)) + static int count_addresses(sd_bus_message *m, int af, unsigned *ret) { unsigned c = 0; int r; @@ -457,6 +458,10 @@ enum nss_status _nss_mymachines_getpwnam_r( if (r < 0) goto fail; + /* Refuse to work if the mapped address is in the host UID range, or if there was no mapping at all. */ + if (mapped < HOST_UID_LIMIT || mapped == uid) + goto not_found; + l = strlen(name); if (buflen < l+1) { *errnop = ENOMEM; @@ -506,7 +511,7 @@ enum nss_status _nss_mymachines_getpwuid_r( } /* We consider all uids < 65536 host uids */ - if (uid < 0x10000) + if (uid < HOST_UID_LIMIT) goto not_found; r = sd_bus_open_system(&bus); @@ -533,6 +538,9 @@ enum nss_status _nss_mymachines_getpwuid_r( if (r < 0) goto fail; + if (mapped == uid) + goto not_found; + if (snprintf(buffer, buflen, "vu-%s-" UID_FMT, machine, (uid_t) mapped) >= (int) buflen) { *errnop = ENOMEM; return NSS_STATUS_TRYAGAIN; @@ -621,6 +629,9 @@ enum nss_status _nss_mymachines_getgrnam_r( if (r < 0) goto fail; + if (mapped < HOST_GID_LIMIT || mapped == gid) + goto not_found; + l = sizeof(char*) + strlen(name) + 1; if (buflen < l) { *errnop = ENOMEM; @@ -668,7 +679,7 @@ enum nss_status _nss_mymachines_getgrgid_r( } /* We consider all gids < 65536 host gids */ - if (gid < 0x10000) + if (gid < HOST_GID_LIMIT) goto not_found; r = sd_bus_open_system(&bus); @@ -695,6 +706,9 @@ enum nss_status _nss_mymachines_getgrgid_r( if (r < 0) goto fail; + if (mapped == gid) + goto not_found; + if (buflen < sizeof(char*) + 1) { *errnop = ENOMEM; return NSS_STATUS_TRYAGAIN; diff --git a/src/nss-resolve/nss-resolve.c b/src/nss-resolve/nss-resolve.c index 85649f67dc..69c0d9bdc1 100644 --- a/src/nss-resolve/nss-resolve.c +++ b/src/nss-resolve/nss-resolve.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/path/path.c b/src/path/path.c index 0ece72f6fe..61d877fcf8 100644 --- a/src/path/path.c +++ b/src/path/path.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/quotacheck/quotacheck.c b/src/quotacheck/quotacheck.c index 883d96608d..6d8c05f046 100644 --- a/src/quotacheck/quotacheck.c +++ b/src/quotacheck/quotacheck.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/random-seed/random-seed.c b/src/random-seed/random-seed.c index d857ade36a..6748bb9dd3 100644 --- a/src/random-seed/random-seed.c +++ b/src/random-seed/random-seed.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -40,7 +38,7 @@ int main(int argc, char *argv[]) { _cleanup_free_ void* buf = NULL; size_t buf_size = 0; ssize_t k; - int r; + int r, open_rw_error; FILE *f; bool refresh_seed_file = true; @@ -87,14 +85,23 @@ int main(int argc, char *argv[]) { if (streq(argv[1], "load")) { seed_fd = open(RANDOM_SEED, O_RDWR|O_CLOEXEC|O_NOCTTY|O_CREAT, 0600); + open_rw_error = -errno; if (seed_fd < 0) { + refresh_seed_file = false; + seed_fd = open(RANDOM_SEED, O_RDONLY|O_CLOEXEC|O_NOCTTY); if (seed_fd < 0) { - r = log_error_errno(errno, "Failed to open " RANDOM_SEED ": %m"); + bool missing = errno == ENOENT; + + log_full_errno(missing ? LOG_DEBUG : LOG_ERR, + open_rw_error, "Failed to open " RANDOM_SEED " for writing: %m"); + r = log_full_errno(missing ? LOG_DEBUG : LOG_ERR, + errno, "Failed to open " RANDOM_SEED " for reading: %m"); + if (missing) + r = 0; + goto finish; } - - refresh_seed_file = false; } random_fd = open("/dev/urandom", O_RDWR|O_CLOEXEC|O_NOCTTY, 0600); @@ -109,9 +116,10 @@ int main(int argc, char *argv[]) { k = loop_read(seed_fd, buf, buf_size, false); if (k < 0) r = log_error_errno(k, "Failed to read seed from " RANDOM_SEED ": %m"); - else if (k == 0) + else if (k == 0) { + r = 0; log_debug("Seed file " RANDOM_SEED " not yet initialized, proceeding."); - else { + } else { (void) lseek(seed_fd, 0, SEEK_SET); r = loop_write(random_fd, buf, (size_t) k, false); diff --git a/src/rc-local-generator/rc-local-generator.c b/src/rc-local-generator/rc-local-generator.c index 6ecadbf3e5..9e9c161993 100644 --- a/src/rc-local-generator/rc-local-generator.c +++ b/src/rc-local-generator/rc-local-generator.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/remount-fs/remount-fs.c b/src/remount-fs/remount-fs.c index 9fc56284d2..6468d1eecd 100644 --- a/src/remount-fs/remount-fs.c +++ b/src/remount-fs/remount-fs.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/reply-password/reply-password.c b/src/reply-password/reply-password.c index 166ab470ed..e291758969 100644 --- a/src/reply-password/reply-password.c +++ b/src/reply-password/reply-password.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/resolve/dns-type.c b/src/resolve/dns-type.c index fc2f1826fd..b2f479cae5 100644 --- a/src/resolve/dns-type.c +++ b/src/resolve/dns-type.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -240,31 +238,69 @@ int dns_class_from_string(const char *s) { } const char* tlsa_cert_usage_to_string(uint8_t cert_usage) { - switch(cert_usage) { - case 0: return "CA constraint"; - case 1: return "Service certificate constraint"; - case 2: return "Trust anchor assertion"; - case 3: return "Domain-issued certificate"; - case 4 ... 254: return "Unassigned"; - case 255: return "Private use"; + + switch (cert_usage) { + + case 0: + return "CA constraint"; + + case 1: + return "Service certificate constraint"; + + case 2: + return "Trust anchor assertion"; + + case 3: + return "Domain-issued certificate"; + + case 4 ... 254: + return "Unassigned"; + + case 255: + return "Private use"; } + + return NULL; /* clang cannot count that we covered everything */ } const char* tlsa_selector_to_string(uint8_t selector) { - switch(selector) { - case 0: return "Full Certificate"; - case 1: return "SubjectPublicKeyInfo"; - case 2 ... 254: return "Unassigned"; - case 255: return "Private use"; + switch (selector) { + + case 0: + return "Full Certificate"; + + case 1: + return "SubjectPublicKeyInfo"; + + case 2 ... 254: + return "Unassigned"; + + case 255: + return "Private use"; } + + return NULL; } const char* tlsa_matching_type_to_string(uint8_t selector) { - switch(selector) { - case 0: return "No hash used"; - case 1: return "SHA-256"; - case 2: return "SHA-512"; - case 3 ... 254: return "Unassigned"; - case 255: return "Private use"; + + switch (selector) { + + case 0: + return "No hash used"; + + case 1: + return "SHA-256"; + + case 2: + return "SHA-512"; + + case 3 ... 254: + return "Unassigned"; + + case 255: + return "Private use"; } + + return NULL; } diff --git a/src/resolve/dns-type.h b/src/resolve/dns-type.h index ea51dfdb65..f18ac6eef3 100644 --- a/src/resolve/dns-type.h +++ b/src/resolve/dns-type.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/resolve/resolve-tool.c b/src/resolve/resolve-tool.c index 6d1bc6d0f9..9aade8e490 100644 --- a/src/resolve/resolve-tool.c +++ b/src/resolve/resolve-tool.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/resolve/resolved-bus.c b/src/resolve/resolved-bus.c index 834ae837de..fc5e6beca0 100644 --- a/src/resolve/resolved-bus.c +++ b/src/resolve/resolved-bus.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -281,6 +279,7 @@ static int bus_method_resolve_hostname(sd_bus_message *message, void *userdata, q->request = sd_bus_message_ref(message); q->request_family = family; q->complete = bus_method_resolve_hostname_complete; + q->suppress_unroutable_family = family == AF_UNSPEC; r = dns_query_bus_track(q, message); if (r < 0) diff --git a/src/resolve/resolved-bus.h b/src/resolve/resolved-bus.h index 1ee57ba43d..f49e1337d2 100644 --- a/src/resolve/resolved-bus.h +++ b/src/resolve/resolved-bus.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/resolve/resolved-conf.c b/src/resolve/resolved-conf.c index 6d8c35164e..bb93fbfda2 100644 --- a/src/resolve/resolved-conf.c +++ b/src/resolve/resolved-conf.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/resolve/resolved-conf.h b/src/resolve/resolved-conf.h index b4ef1b0378..e1fd2cceec 100644 --- a/src/resolve/resolved-conf.h +++ b/src/resolve/resolved-conf.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/resolve/resolved-def.h b/src/resolve/resolved-def.h index 6014d345f3..c4c1915b18 100644 --- a/src/resolve/resolved-def.h +++ b/src/resolve/resolved-def.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** @@ -21,6 +19,8 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>. ***/ +#include <inttypes.h> + #define SD_RESOLVED_DNS (UINT64_C(1) << 0) #define SD_RESOLVED_LLMNR_IPV4 (UINT64_C(1) << 1) #define SD_RESOLVED_LLMNR_IPV6 (UINT64_C(1) << 2) diff --git a/src/resolve/resolved-dns-answer.c b/src/resolve/resolved-dns-answer.c index f74e440531..7eb303ab95 100644 --- a/src/resolve/resolved-dns-answer.c +++ b/src/resolve/resolved-dns-answer.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/resolve/resolved-dns-answer.h b/src/resolve/resolved-dns-answer.h index 1875fd6136..0679c610f5 100644 --- a/src/resolve/resolved-dns-answer.h +++ b/src/resolve/resolved-dns-answer.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** @@ -32,7 +30,7 @@ typedef struct DnsAnswerItem DnsAnswerItem; * can qualify A and AAAA RRs referring to a local link with the * right ifindex. * - * Note that we usually encode the the empty DnsAnswer object as a simple NULL. */ + * Note that we usually encode the empty DnsAnswer object as a simple NULL. */ typedef enum DnsAnswerFlags { DNS_ANSWER_AUTHENTICATED = 1, /* Item has been authenticated */ diff --git a/src/resolve/resolved-dns-cache.c b/src/resolve/resolved-dns-cache.c index 9267b67f79..9bcc71724e 100644 --- a/src/resolve/resolved-dns-cache.c +++ b/src/resolve/resolved-dns-cache.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -51,6 +49,7 @@ struct DnsCacheItem { bool authenticated:1; bool shared_owner:1; + int ifindex; int owner_family; union in_addr_union owner_address; @@ -329,6 +328,7 @@ static void dns_cache_item_update_positive( bool authenticated, bool shared_owner, usec_t timestamp, + int ifindex, int owner_family, const union in_addr_union *owner_address) { @@ -356,6 +356,8 @@ static void dns_cache_item_update_positive( i->authenticated = authenticated; i->shared_owner = shared_owner; + i->ifindex = ifindex; + i->owner_family = owner_family; i->owner_address = *owner_address; @@ -368,6 +370,7 @@ static int dns_cache_put_positive( bool authenticated, bool shared_owner, usec_t timestamp, + int ifindex, int owner_family, const union in_addr_union *owner_address) { @@ -414,6 +417,7 @@ static int dns_cache_put_positive( authenticated, shared_owner, timestamp, + ifindex, owner_family, owner_address); return 0; @@ -436,6 +440,7 @@ static int dns_cache_put_positive( i->until = calculate_until(rr, (uint32_t) -1, timestamp, false); i->authenticated = authenticated; i->shared_owner = shared_owner; + i->ifindex = ifindex; i->owner_family = owner_family; i->owner_address = *owner_address; i->prioq_idx = PRIOQ_IDX_NULL; @@ -615,7 +620,7 @@ int dns_cache_put( DnsResourceRecord *soa = NULL, *rr; DnsAnswerFlags flags; unsigned cache_keys; - int r; + int r, ifindex; assert(c); assert(owner_address); @@ -653,7 +658,7 @@ int dns_cache_put( timestamp = now(clock_boottime_or_monotonic()); /* Second, add in positive entries for all contained RRs */ - DNS_ANSWER_FOREACH_FLAGS(rr, flags, answer) { + DNS_ANSWER_FOREACH_FULL(rr, ifindex, flags, answer) { if ((flags & DNS_ANSWER_CACHEABLE) == 0) continue; @@ -669,6 +674,7 @@ int dns_cache_put( flags & DNS_ANSWER_AUTHENTICATED, flags & DNS_ANSWER_SHARED_OWNER, timestamp, + ifindex, owner_family, owner_address); if (r < 0) goto fail; @@ -922,7 +928,7 @@ int dns_cache_lookup(DnsCache *c, DnsResourceKey *key, int *rcode, DnsAnswer **r if (!j->rr) continue; - r = dns_answer_add(answer, j->rr, 0, j->authenticated ? DNS_ANSWER_AUTHENTICATED : 0); + r = dns_answer_add(answer, j->rr, j->ifindex, j->authenticated ? DNS_ANSWER_AUTHENTICATED : 0); if (r < 0) return r; } diff --git a/src/resolve/resolved-dns-cache.h b/src/resolve/resolved-dns-cache.h index e61b285df4..2293718e86 100644 --- a/src/resolve/resolved-dns-cache.h +++ b/src/resolve/resolved-dns-cache.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/resolve/resolved-dns-dnssec.c b/src/resolve/resolved-dns-dnssec.c index f799379efd..7098265929 100644 --- a/src/resolve/resolved-dns-dnssec.c +++ b/src/resolve/resolved-dns-dnssec.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -625,9 +623,9 @@ int dnssec_verify_rrset( assert(rrsig->key->type == DNS_TYPE_RRSIG); assert(dnskey->key->type == DNS_TYPE_DNSKEY); - /* Verifies the the RRSet matching the specified "key" in "a", + /* Verifies that the RRSet matches the specified "key" in "a", * using the signature "rrsig" and the key "dnskey". It's - * assumed the RRSIG and DNSKEY match. */ + * assumed that RRSIG and DNSKEY match. */ md_algorithm = algorithm_to_gcrypt_md(rrsig->rrsig.algorithm); if (md_algorithm == -EOPNOTSUPP) { @@ -1236,7 +1234,7 @@ static int nsec3_is_good(DnsResourceRecord *rr, DnsResourceRecord *nsec3) { if (rr->key->type != DNS_TYPE_NSEC3) return 0; - /* RFC 5155, Section 8.2 says we MUST ignore NSEC3 RRs with flags != 0 or 1 */ + /* RFC 5155, Section 8.2 says we MUST ignore NSEC3 RRs with flags != 0 or 1 */ if (!IN_SET(rr->nsec3.flags, 0, 1)) return 0; @@ -1979,7 +1977,7 @@ static int dnssec_test_positive_wildcard_nsec3( /* Run a positive NSEC3 wildcard proof. Specifically: * - * A proof that the the "next closer" of the generating wildcard does not exist. + * A proof that the "next closer" of the generating wildcard does not exist. * * Note a key difference between the NSEC3 and NSEC versions of the proof. NSEC RRs don't have to exist for * empty non-transients. NSEC3 RRs however have to. This means it's sufficient to check if the next closer name diff --git a/src/resolve/resolved-dns-dnssec.h b/src/resolve/resolved-dns-dnssec.h index 4542f0aa89..77bd4d71bf 100644 --- a/src/resolve/resolved-dns-dnssec.h +++ b/src/resolve/resolved-dns-dnssec.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/resolve/resolved-dns-packet.c b/src/resolve/resolved-dns-packet.c index 4c4d16d109..c2fc1d8b05 100644 --- a/src/resolve/resolved-dns-packet.c +++ b/src/resolve/resolved-dns-packet.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -2133,7 +2131,7 @@ int dns_packet_extract(DnsPacket *p) { } if (!dns_name_is_root(DNS_RESOURCE_KEY_NAME(rr->key))) { - /* If the OPT RR qis not owned by the root domain, then it is bad, let's ignore + /* If the OPT RR is not owned by the root domain, then it is bad, let's ignore * it. */ log_debug("OPT RR is not owned by root domain, ignoring."); bad_opt = true; diff --git a/src/resolve/resolved-dns-packet.h b/src/resolve/resolved-dns-packet.h index c53431576b..0bf34d270c 100644 --- a/src/resolve/resolved-dns-packet.h +++ b/src/resolve/resolved-dns-packet.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/resolve/resolved-dns-query.c b/src/resolve/resolved-dns-query.c index a00851658e..a378b2b7f7 100644 --- a/src/resolve/resolved-dns-query.c +++ b/src/resolve/resolved-dns-query.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -21,6 +19,7 @@ #include "alloc-util.h" #include "dns-domain.h" +#include "dns-type.h" #include "hostname-util.h" #include "local-addresses.h" #include "resolved-dns-query.h" @@ -161,6 +160,7 @@ static int dns_query_candidate_go(DnsQueryCandidate *c) { DnsTransaction *t; Iterator i; int r; + unsigned n = 0; assert(c); @@ -172,8 +172,14 @@ static int dns_query_candidate_go(DnsQueryCandidate *c) { r = dns_transaction_go(t); if (r < 0) return r; + + n++; } + /* If there was nothing to start, then let's proceed immediately */ + if (n == 0) + dns_query_candidate_notify(c); + return 0; } @@ -222,6 +228,31 @@ static DnsTransactionState dns_query_candidate_state(DnsQueryCandidate *c) { return state; } +static bool dns_query_candidate_is_routable(DnsQueryCandidate *c, uint16_t type) { + int family; + + assert(c); + + /* Checks whether the specified RR type matches an address family that is routable on the link(s) the scope of + * this candidate belongs to. Specifically, whether there's a routable IPv4 address on it if we query an A RR, + * or a routable IPv6 address if we query an AAAA RR. */ + + if (!c->query->suppress_unroutable_family) + return true; + + if (c->scope->protocol != DNS_PROTOCOL_DNS) + return true; + + family = dns_type_to_af(type); + if (family < 0) + return true; + + if (c->scope->link) + return link_relevant(c->scope->link, family, false); + else + return manager_routable(c->scope->manager, family); +} + static int dns_query_candidate_setup_transactions(DnsQueryCandidate *c) { DnsQuestion *question; DnsResourceKey *key; @@ -236,14 +267,24 @@ static int dns_query_candidate_setup_transactions(DnsQueryCandidate *c) { /* Create one transaction per question key */ DNS_QUESTION_FOREACH(key, question) { _cleanup_(dns_resource_key_unrefp) DnsResourceKey *new_key = NULL; + DnsResourceKey *qkey; + + if (!dns_query_candidate_is_routable(c, key->type)) + continue; if (c->search_domain) { r = dns_resource_key_new_append_suffix(&new_key, key, c->search_domain->name); if (r < 0) goto fail; - } - r = dns_query_candidate_add_transaction(c, new_key ?: key); + qkey = new_key; + } else + qkey = key; + + if (!dns_scope_good_key(c->scope, qkey)) + continue; + + r = dns_query_candidate_add_transaction(c, qkey); if (r < 0) goto fail; @@ -924,6 +965,17 @@ static int dns_query_cname_redirect(DnsQuery *q, const DnsResourceRecord *cname) if (r == 0 && k == 0) /* No actual cname happened? */ return -ELOOP; + if (q->answer_protocol == DNS_PROTOCOL_DNS) { + /* Don't permit CNAME redirects from unicast DNS to LLMNR or MulticastDNS, so that global resources + * cannot invade the local namespace. The opposite way we permit: local names may redirect to global + * ones. */ + + q->flags &= ~(SD_RESOLVED_LLMNR|SD_RESOLVED_MDNS); /* mask away the local protocols */ + } + + /* Turn off searching for the new name */ + q->flags |= SD_RESOLVED_NO_SEARCH; + dns_question_unref(q->question_idna); q->question_idna = nq_idna; nq_idna = NULL; @@ -934,10 +986,8 @@ static int dns_query_cname_redirect(DnsQuery *q, const DnsResourceRecord *cname) dns_query_free_candidates(q); dns_query_reset_answer(q); - q->state = DNS_TRANSACTION_NULL; - /* Turn off searching for the new name */ - q->flags |= SD_RESOLVED_NO_SEARCH; + q->state = DNS_TRANSACTION_NULL; return 0; } diff --git a/src/resolve/resolved-dns-query.h b/src/resolve/resolved-dns-query.h index c7e4ce9a00..c2ac02f68b 100644 --- a/src/resolve/resolved-dns-query.h +++ b/src/resolve/resolved-dns-query.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** @@ -69,6 +67,10 @@ struct DnsQuery { uint64_t flags; int ifindex; + /* If true, A or AAAA RR lookups will be suppressed on links with no routable address of the matching address + * family */ + bool suppress_unroutable_family; + DnsTransactionState state; unsigned n_cname_redirects; diff --git a/src/resolve/resolved-dns-question.c b/src/resolve/resolved-dns-question.c index 1e41a9aa3c..8e452e79a4 100644 --- a/src/resolve/resolved-dns-question.c +++ b/src/resolve/resolved-dns-question.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/resolve/resolved-dns-question.h b/src/resolve/resolved-dns-question.h index 98e1f0e366..ea41478975 100644 --- a/src/resolve/resolved-dns-question.h +++ b/src/resolve/resolved-dns-question.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/resolve/resolved-dns-rr.c b/src/resolve/resolved-dns-rr.c index d54645fc7a..6397005a68 100644 --- a/src/resolve/resolved-dns-rr.c +++ b/src/resolve/resolved-dns-rr.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -1487,7 +1485,7 @@ static int dns_resource_record_compare_func(const void *a, const void *b) { if (dns_resource_record_equal(x, y)) return 0; - /* This is a bit dirty, we don't implement proper odering, but + /* This is a bit dirty, we don't implement proper ordering, but * the hashtable doesn't need ordering anyway, hence we don't * care. */ return x < y ? -1 : 1; diff --git a/src/resolve/resolved-dns-rr.h b/src/resolve/resolved-dns-rr.h index b75676912b..23749790b4 100644 --- a/src/resolve/resolved-dns-rr.h +++ b/src/resolve/resolved-dns-rr.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/resolve/resolved-dns-scope.c b/src/resolve/resolved-dns-scope.c index ac4887abea..a406872a38 100644 --- a/src/resolve/resolved-dns-scope.c +++ b/src/resolve/resolved-dns-scope.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -57,8 +55,6 @@ int dns_scope_new(Manager *m, DnsScope **ret, Link *l, DnsProtocol protocol, int s->family = family; s->resend_timeout = MULTICAST_RESEND_TIMEOUT_MIN_USEC; - s->dnssec_mode = _DNSSEC_MODE_INVALID; - if (protocol == DNS_PROTOCOL_DNS) { /* Copy DNSSEC mode from the link if it is set there, * otherwise take the manager's DNSSEC mode. Note that @@ -70,7 +66,8 @@ int dns_scope_new(Manager *m, DnsScope **ret, Link *l, DnsProtocol protocol, int s->dnssec_mode = link_get_dnssec_mode(l); else s->dnssec_mode = manager_get_dnssec_mode(m); - } + } else + s->dnssec_mode = DNSSEC_NO; LIST_PREPEND(scopes, m->dns_scopes, s); @@ -490,7 +487,9 @@ DnsScopeMatch dns_scope_good_domain(DnsScope *s, int ifindex, uint64_t flags, co } } -int dns_scope_good_key(DnsScope *s, DnsResourceKey *key) { +bool dns_scope_good_key(DnsScope *s, const DnsResourceKey *key) { + int key_family; + assert(s); assert(key); @@ -498,6 +497,9 @@ int dns_scope_good_key(DnsScope *s, DnsResourceKey *key) { * this scope. Note that this call assumes as fully qualified * name, i.e. the search suffixes already appended. */ + if (key->class != DNS_CLASS_IN) + return false; + if (s->protocol == DNS_PROTOCOL_DNS) { /* On classic DNS, looking up non-address RRs is always @@ -519,13 +521,11 @@ int dns_scope_good_key(DnsScope *s, DnsResourceKey *key) { /* On mDNS and LLMNR, send A and AAAA queries only on the * respective scopes */ - if (s->family == AF_INET && key->class == DNS_CLASS_IN && key->type == DNS_TYPE_AAAA) - return false; - - if (s->family == AF_INET6 && key->class == DNS_CLASS_IN && key->type == DNS_TYPE_A) - return false; + key_family = dns_type_to_af(key->type); + if (key_family < 0) + return true; - return true; + return key_family == s->family; } static int dns_scope_multicast_membership(DnsScope *s, bool b, struct in_addr in, struct in6_addr in6) { @@ -1017,9 +1017,6 @@ bool dns_scope_name_needs_search_domain(DnsScope *s, const char *name) { } bool dns_scope_network_good(DnsScope *s) { - Iterator i; - Link *l; - /* Checks whether the network is in good state for lookups on this scope. For mDNS/LLMNR/Classic DNS scopes * bound to links this is easy, as they don't even exist if the link isn't in a suitable state. For the global * DNS scope we check whether there are any links that are up and have an address. */ @@ -1027,10 +1024,5 @@ bool dns_scope_network_good(DnsScope *s) { if (s->link) return true; - HASHMAP_FOREACH(l, s->manager->links, i) { - if (link_relevant(l, AF_UNSPEC, false)) - return true; - } - - return false; + return manager_routable(s->manager, AF_UNSPEC); } diff --git a/src/resolve/resolved-dns-scope.h b/src/resolve/resolved-dns-scope.h index f9b63d56d9..291e5817d0 100644 --- a/src/resolve/resolved-dns-scope.h +++ b/src/resolve/resolved-dns-scope.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** @@ -87,7 +85,7 @@ int dns_scope_socket_tcp(DnsScope *s, int family, const union in_addr_union *add int dns_scope_socket_udp(DnsScope *s, DnsServer *server, uint16_t port); DnsScopeMatch dns_scope_good_domain(DnsScope *s, int ifindex, uint64_t flags, const char *domain); -int dns_scope_good_key(DnsScope *s, DnsResourceKey *key); +bool dns_scope_good_key(DnsScope *s, const DnsResourceKey *key); DnsServer *dns_scope_get_dns_server(DnsScope *s); void dns_scope_next_dns_server(DnsScope *s); diff --git a/src/resolve/resolved-dns-search-domain.c b/src/resolve/resolved-dns-search-domain.c index 356c05b9a4..732471027b 100644 --- a/src/resolve/resolved-dns-search-domain.c +++ b/src/resolve/resolved-dns-search-domain.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/resolve/resolved-dns-search-domain.h b/src/resolve/resolved-dns-search-domain.h index c1903b334f..eaacef4edc 100644 --- a/src/resolve/resolved-dns-search-domain.h +++ b/src/resolve/resolved-dns-search-domain.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/resolve/resolved-dns-server.c b/src/resolve/resolved-dns-server.c index 43ec92f4f0..27342a0e04 100644 --- a/src/resolve/resolved-dns-server.c +++ b/src/resolve/resolved-dns-server.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/resolve/resolved-dns-server.h b/src/resolve/resolved-dns-server.h index 7a885655a4..9f4a69c37a 100644 --- a/src/resolve/resolved-dns-server.h +++ b/src/resolve/resolved-dns-server.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/resolve/resolved-dns-stream.c b/src/resolve/resolved-dns-stream.c index b72e6cc06f..a1040aeff4 100644 --- a/src/resolve/resolved-dns-stream.c +++ b/src/resolve/resolved-dns-stream.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/resolve/resolved-dns-stream.h b/src/resolve/resolved-dns-stream.h index fb81e9f1ac..5ccc842249 100644 --- a/src/resolve/resolved-dns-stream.h +++ b/src/resolve/resolved-dns-stream.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/resolve/resolved-dns-transaction.c b/src/resolve/resolved-dns-transaction.c index 637b99aaa5..060c430f3a 100644 --- a/src/resolve/resolved-dns-transaction.c +++ b/src/resolve/resolved-dns-transaction.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -1411,12 +1409,6 @@ static int dns_transaction_make_packet(DnsTransaction *t) { if (r < 0) return r; - r = dns_scope_good_key(t->scope, t->key); - if (r < 0) - return r; - if (r == 0) - return -EDOM; - r = dns_packet_append_key(p, t->key, NULL); if (r < 0) return r; @@ -1498,13 +1490,6 @@ int dns_transaction_go(DnsTransaction *t) { /* Otherwise, we need to ask the network */ r = dns_transaction_make_packet(t); - if (r == -EDOM) { - /* Not the right request to make on this network? - * (i.e. an A request made on IPv6 or an AAAA request - * made on IPv4, on LLMNR or mDNS.) */ - dns_transaction_complete(t, DNS_TRANSACTION_NO_SERVERS); - return 0; - } if (r < 0) return r; @@ -1693,7 +1678,7 @@ static int dns_transaction_negative_trust_anchor_lookup(DnsTransaction *t, const assert(t); - /* Check whether the specified name is in the the NTA + /* Check whether the specified name is in the NTA * database, either in the global one, or the link-local * one. */ diff --git a/src/resolve/resolved-dns-transaction.h b/src/resolve/resolved-dns-transaction.h index b6c5b2861c..4617194711 100644 --- a/src/resolve/resolved-dns-transaction.h +++ b/src/resolve/resolved-dns-transaction.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/resolve/resolved-dns-trust-anchor.c b/src/resolve/resolved-dns-trust-anchor.c index 02d7ac91e1..a75337eb6a 100644 --- a/src/resolve/resolved-dns-trust-anchor.c +++ b/src/resolve/resolved-dns-trust-anchor.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/resolve/resolved-dns-trust-anchor.h b/src/resolve/resolved-dns-trust-anchor.h index 5d137faae1..635c75fde5 100644 --- a/src/resolve/resolved-dns-trust-anchor.h +++ b/src/resolve/resolved-dns-trust-anchor.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/resolve/resolved-dns-zone.c b/src/resolve/resolved-dns-zone.c index f60b0bddc1..f52383cfd1 100644 --- a/src/resolve/resolved-dns-zone.c +++ b/src/resolve/resolved-dns-zone.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/resolve/resolved-dns-zone.h b/src/resolve/resolved-dns-zone.h index dbd6a2a368..408833c359 100644 --- a/src/resolve/resolved-dns-zone.h +++ b/src/resolve/resolved-dns-zone.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/resolve/resolved-link-bus.c b/src/resolve/resolved-link-bus.c index e6b087f412..df7516f4f4 100644 --- a/src/resolve/resolved-link-bus.c +++ b/src/resolve/resolved-link-bus.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/resolve/resolved-link-bus.h b/src/resolve/resolved-link-bus.h index d444957d1c..31e6cd2b45 100644 --- a/src/resolve/resolved-link-bus.h +++ b/src/resolve/resolved-link-bus.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/resolve/resolved-link.c b/src/resolve/resolved-link.c index 37dd4a6e78..c5863b3aa2 100644 --- a/src/resolve/resolved-link.c +++ b/src/resolve/resolved-link.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -515,14 +513,17 @@ int link_update_monitor(Link *l) { return 0; } -bool link_relevant(Link *l, int family, bool multicast) { +bool link_relevant(Link *l, int family, bool local_multicast) { _cleanup_free_ char *state = NULL; LinkAddress *a; assert(l); - /* A link is relevant for multicast traffic if it isn't a loopback or pointopoint device, has a link beat, can - * do multicast and has at least one relevant IP address */ + /* A link is relevant for local multicast traffic if it isn't a loopback or pointopoint device, has a link + * beat, can do multicast and has at least one link-local (or better) IP address. + * + * A link is relevant for non-multicast traffic if it isn't a loopback device, has a link beat, and has at + * least one routable address.*/ if (l->flags & (IFF_LOOPBACK|IFF_DORMANT)) return false; @@ -530,7 +531,7 @@ bool link_relevant(Link *l, int family, bool multicast) { if ((l->flags & (IFF_UP|IFF_LOWER_UP)) != (IFF_UP|IFF_LOWER_UP)) return false; - if (multicast) { + if (local_multicast) { if (l->flags & IFF_POINTOPOINT) return false; @@ -548,7 +549,7 @@ bool link_relevant(Link *l, int family, bool multicast) { return false; LIST_FOREACH(addresses, a, l->addresses) - if ((family == AF_UNSPEC || a->family == family) && link_address_relevant(a)) + if ((family == AF_UNSPEC || a->family == family) && link_address_relevant(a, local_multicast)) return true; return false; @@ -692,7 +693,7 @@ void link_address_add_rrs(LinkAddress *a, bool force_remove) { if (a->family == AF_INET) { if (!force_remove && - link_address_relevant(a) && + link_address_relevant(a, true) && a->link->llmnr_ipv4_scope && a->link->llmnr_support == RESOLVE_SUPPORT_YES && a->link->manager->llmnr_support == RESOLVE_SUPPORT_YES) { @@ -749,7 +750,7 @@ void link_address_add_rrs(LinkAddress *a, bool force_remove) { if (a->family == AF_INET6) { if (!force_remove && - link_address_relevant(a) && + link_address_relevant(a, true) && a->link->llmnr_ipv6_scope && a->link->llmnr_support == RESOLVE_SUPPORT_YES && a->link->manager->llmnr_support == RESOLVE_SUPPORT_YES) { @@ -826,13 +827,13 @@ int link_address_update_rtnl(LinkAddress *a, sd_netlink_message *m) { return 0; } -bool link_address_relevant(LinkAddress *a) { +bool link_address_relevant(LinkAddress *a, bool local_multicast) { assert(a); if (a->flags & (IFA_F_DEPRECATED|IFA_F_TENTATIVE)) return false; - if (IN_SET(a->scope, RT_SCOPE_HOST, RT_SCOPE_NOWHERE)) + if (a->scope >= (local_multicast ? RT_SCOPE_HOST : RT_SCOPE_LINK)) return false; return true; diff --git a/src/resolve/resolved-link.h b/src/resolve/resolved-link.h index 3b6aafb8f0..f534c12824 100644 --- a/src/resolve/resolved-link.h +++ b/src/resolve/resolved-link.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** @@ -89,7 +87,7 @@ int link_new(Manager *m, Link **ret, int ifindex); Link *link_free(Link *l); int link_update_rtnl(Link *l, sd_netlink_message *m); int link_update_monitor(Link *l); -bool link_relevant(Link *l, int family, bool multicast); +bool link_relevant(Link *l, int family, bool local_multicast); LinkAddress* link_find_address(Link *l, int family, const union in_addr_union *in_addr); void link_add_rrs(Link *l, bool force_remove); @@ -107,7 +105,7 @@ bool link_dnssec_supported(Link *l); int link_address_new(Link *l, LinkAddress **ret, int family, const union in_addr_union *in_addr); LinkAddress *link_address_free(LinkAddress *a); int link_address_update_rtnl(LinkAddress *a, sd_netlink_message *m); -bool link_address_relevant(LinkAddress *l); +bool link_address_relevant(LinkAddress *l, bool local_multicast); void link_address_add_rrs(LinkAddress *a, bool force_remove); DEFINE_TRIVIAL_CLEANUP_FUNC(Link*, link_free); diff --git a/src/resolve/resolved-llmnr.c b/src/resolve/resolved-llmnr.c index f52ab8f384..ef12abfbb5 100644 --- a/src/resolve/resolved-llmnr.c +++ b/src/resolve/resolved-llmnr.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/resolve/resolved-llmnr.h b/src/resolve/resolved-llmnr.h index d489d481e8..8133582fa7 100644 --- a/src/resolve/resolved-llmnr.h +++ b/src/resolve/resolved-llmnr.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/resolve/resolved-manager.c b/src/resolve/resolved-manager.c index fbd188c2ac..bf5efe4cfa 100644 --- a/src/resolve/resolved-manager.c +++ b/src/resolve/resolved-manager.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -1226,3 +1224,18 @@ void manager_dnssec_verdict(Manager *m, DnssecVerdict verdict, const DnsResource m->n_dnssec_verdict[verdict]++; } + +bool manager_routable(Manager *m, int family) { + Iterator i; + Link *l; + + assert(m); + + /* Returns true if the host has at least one interface with a routable address of the specified type */ + + HASHMAP_FOREACH(l, m->links, i) + if (link_relevant(l, family, false)) + return true; + + return false; +} diff --git a/src/resolve/resolved-manager.h b/src/resolve/resolved-manager.h index 1af49c8fb9..e82a824f29 100644 --- a/src/resolve/resolved-manager.h +++ b/src/resolve/resolved-manager.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** @@ -169,3 +167,5 @@ DnssecMode manager_get_dnssec_mode(Manager *m); bool manager_dnssec_supported(Manager *m); void manager_dnssec_verdict(Manager *m, DnssecVerdict verdict, const DnsResourceKey *key); + +bool manager_routable(Manager *m, int family); diff --git a/src/resolve/resolved-mdns.c b/src/resolve/resolved-mdns.c index d5b253d4f5..bc8b8b809b 100644 --- a/src/resolve/resolved-mdns.c +++ b/src/resolve/resolved-mdns.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/resolve/resolved-mdns.h b/src/resolve/resolved-mdns.h index 8a84010615..5d274648f4 100644 --- a/src/resolve/resolved-mdns.h +++ b/src/resolve/resolved-mdns.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/resolve/resolved-resolv-conf.c b/src/resolve/resolved-resolv-conf.c index c5ce9c4f01..065427b690 100644 --- a/src/resolve/resolved-resolv-conf.c +++ b/src/resolve/resolved-resolv-conf.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/resolve/resolved-resolv-conf.h b/src/resolve/resolved-resolv-conf.h index 7081563965..75fa080e4c 100644 --- a/src/resolve/resolved-resolv-conf.h +++ b/src/resolve/resolved-resolv-conf.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/resolve/resolved.c b/src/resolve/resolved.c index eee52da882..c7e2ab14d6 100644 --- a/src/resolve/resolved.c +++ b/src/resolve/resolved.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/resolve/test-dnssec-complex.c b/src/resolve/test-dnssec-complex.c index cde9741866..58c089eb40 100644 --- a/src/resolve/test-dnssec-complex.c +++ b/src/resolve/test-dnssec-complex.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/resolve/test-dnssec.c b/src/resolve/test-dnssec.c index 45fe1997e2..a093d86a91 100644 --- a/src/resolve/test-dnssec.c +++ b/src/resolve/test-dnssec.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/rfkill/rfkill.c b/src/rfkill/rfkill.c index 5c45a3ae6c..0acdf229ed 100644 --- a/src/rfkill/rfkill.c +++ b/src/rfkill/rfkill.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/run/run.c b/src/run/run.c index 92a1d5373c..e7f4c21f73 100644 --- a/src/run/run.c +++ b/src/run/run.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -422,17 +420,9 @@ static int transient_unit_set_properties(sd_bus_message *m, char **properties) { return r; STRV_FOREACH(i, properties) { - r = sd_bus_message_open_container(m, 'r', "sv"); - if (r < 0) - return r; - r = bus_append_unit_property_assignment(m, *i); if (r < 0) return r; - - r = sd_bus_message_close_container(m); - if (r < 0) - return r; } return 0; diff --git a/src/shared/acl-util.c b/src/shared/acl-util.c index b4028564c2..2aa951fce9 100644 --- a/src/shared/acl-util.c +++ b/src/shared/acl-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/shared/acl-util.h b/src/shared/acl-util.h index 1d7f45e2a8..396e9e067e 100644 --- a/src/shared/acl-util.h +++ b/src/shared/acl-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/shared/acpi-fpdt.c b/src/shared/acpi-fpdt.c index dcdef50a18..3cb9e781fd 100644 --- a/src/shared/acpi-fpdt.c +++ b/src/shared/acpi-fpdt.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/shared/acpi-fpdt.h b/src/shared/acpi-fpdt.h index fc4fe6f10f..fc28175d0a 100644 --- a/src/shared/acpi-fpdt.h +++ b/src/shared/acpi-fpdt.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/shared/apparmor-util.c b/src/shared/apparmor-util.c index f8cbb333d5..edd695fd23 100644 --- a/src/shared/apparmor-util.c +++ b/src/shared/apparmor-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/shared/apparmor-util.h b/src/shared/apparmor-util.h index a3d1b3b066..524f740152 100644 --- a/src/shared/apparmor-util.h +++ b/src/shared/apparmor-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/shared/architecture.c b/src/shared/architecture.c index ca6821b4d8..a9ecfc1cd6 100644 --- a/src/shared/architecture.c +++ b/src/shared/architecture.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/shared/architecture.h b/src/shared/architecture.h index c6af4a5b33..26679e28c6 100644 --- a/src/shared/architecture.h +++ b/src/shared/architecture.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/shared/ask-password-api.c b/src/shared/ask-password-api.c index 716899f659..6805873f9e 100644 --- a/src/shared/ask-password-api.c +++ b/src/shared/ask-password-api.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/shared/ask-password-api.h b/src/shared/ask-password-api.h index 913cad9f8a..9d7f65130c 100644 --- a/src/shared/ask-password-api.h +++ b/src/shared/ask-password-api.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/shared/base-filesystem.c b/src/shared/base-filesystem.c index 2a7a38dd14..59a34a9d11 100644 --- a/src/shared/base-filesystem.c +++ b/src/shared/base-filesystem.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/shared/base-filesystem.h b/src/shared/base-filesystem.h index 39a496090f..49599f0a60 100644 --- a/src/shared/base-filesystem.h +++ b/src/shared/base-filesystem.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/shared/boot-timestamps.c b/src/shared/boot-timestamps.c index 63daf932f0..7e0152761c 100644 --- a/src/shared/boot-timestamps.c +++ b/src/shared/boot-timestamps.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/shared/boot-timestamps.h b/src/shared/boot-timestamps.h index a3d2405b56..6f691026be 100644 --- a/src/shared/boot-timestamps.h +++ b/src/shared/boot-timestamps.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/shared/bus-util.c b/src/shared/bus-util.c index 63fd9b9514..38557f0b8d 100644 --- a/src/shared/bus-util.c +++ b/src/shared/bus-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -1398,7 +1396,7 @@ int bus_parse_unit_info(sd_bus_message *message, UnitInfo *u) { int bus_append_unit_property_assignment(sd_bus_message *m, const char *assignment) { const char *eq, *field; - int r; + int r, rl; assert(m); assert(assignment); @@ -1409,20 +1407,18 @@ int bus_append_unit_property_assignment(sd_bus_message *m, const char *assignmen return -EINVAL; } + r = sd_bus_message_open_container(m, SD_BUS_TYPE_STRUCT, "sv"); + if (r < 0) + return bus_log_create_error(r); + field = strndupa(assignment, eq - assignment); eq ++; if (streq(field, "CPUQuota")) { - if (isempty(eq)) { - - r = sd_bus_message_append_basic(m, SD_BUS_TYPE_STRING, "CPUQuotaPerSecUSec"); - if (r < 0) - return bus_log_create_error(r); - - r = sd_bus_message_append(m, "v", "t", USEC_INFINITY); - - } else if (endswith(eq, "%")) { + if (isempty(eq)) + r = sd_bus_message_append(m, "sv", "CPUQuotaPerSecUSec", "t", USEC_INFINITY); + else if (endswith(eq, "%")) { double percent; if (sscanf(eq, "%lf%%", &percent) != 1 || percent <= 0) { @@ -1430,58 +1426,69 @@ int bus_append_unit_property_assignment(sd_bus_message *m, const char *assignmen return -EINVAL; } - r = sd_bus_message_append_basic(m, SD_BUS_TYPE_STRING, "CPUQuotaPerSecUSec"); - if (r < 0) - return bus_log_create_error(r); - - r = sd_bus_message_append(m, "v", "t", (usec_t) percent * USEC_PER_SEC / 100); + r = sd_bus_message_append(m, "sv", "CPUQuotaPerSecUSec", "t", (usec_t) percent * USEC_PER_SEC / 100); } else { log_error("CPU quota needs to be in percent."); return -EINVAL; } - if (r < 0) - return bus_log_create_error(r); - - return 0; + goto finish; } else if (streq(field, "EnvironmentFile")) { - r = sd_bus_message_append_basic(m, SD_BUS_TYPE_STRING, "EnvironmentFiles"); - if (r < 0) - return bus_log_create_error(r); - - r = sd_bus_message_append(m, "v", "a(sb)", 1, + r = sd_bus_message_append(m, "sv", "EnvironmentFiles", "a(sb)", 1, eq[0] == '-' ? eq + 1 : eq, eq[0] == '-'); + goto finish; + + } else if (STR_IN_SET(field, "AccuracySec", "RandomizedDelaySec", "RuntimeMaxSec")) { + char *n; + usec_t t; + size_t l; + r = parse_sec(eq, &t); if (r < 0) - return bus_log_create_error(r); + return log_error_errno(r, "Failed to parse %s= parameter: %s", field, eq); - return 0; + l = strlen(field); + n = newa(char, l + 2); + if (!n) + return log_oom(); - } else if (streq(field, "RandomizedDelaySec")) { - usec_t t; + /* Change suffix Sec → USec */ + strcpy(mempcpy(n, field, l - 3), "USec"); + r = sd_bus_message_append(m, "sv", n, "t", t); + goto finish; + } - r = parse_sec(eq, &t); + r = sd_bus_message_append_basic(m, SD_BUS_TYPE_STRING, field); + if (r < 0) + return bus_log_create_error(r); + + rl = rlimit_from_string(field); + if (rl >= 0) { + const char *sn; + struct rlimit l; + + r = rlimit_parse(rl, eq, &l); if (r < 0) - return log_error_errno(r, "Failed to parse RandomizedDelaySec= parameter: %s", eq); + return log_error_errno(r, "Failed to parse resource limit: %s", eq); - r = sd_bus_message_append_basic(m, SD_BUS_TYPE_STRING, "RandomizedDelayUSec"); + r = sd_bus_message_append(m, "v", "t", l.rlim_max); if (r < 0) return bus_log_create_error(r); - r = sd_bus_message_append(m, "v", "t", t); + r = sd_bus_message_close_container(m); if (r < 0) return bus_log_create_error(r); - return 0; - } + r = sd_bus_message_open_container(m, SD_BUS_TYPE_STRUCT, "sv"); + if (r < 0) + return bus_log_create_error(r); - r = sd_bus_message_append_basic(m, SD_BUS_TYPE_STRING, field); - if (r < 0) - return bus_log_create_error(r); + sn = strjoina(field, "Soft"); + r = sd_bus_message_append(m, "sv", sn, "t", l.rlim_cur); - if (STR_IN_SET(field, + } else if (STR_IN_SET(field, "CPUAccounting", "MemoryAccounting", "BlockIOAccounting", "TasksAccounting", "SendSIGHUP", "SendSIGKILL", "WakeSystem", "DefaultDependencies", "IgnoreSIGPIPE", "TTYVHangup", "TTYReset", "RemainAfterExit", @@ -1662,21 +1669,6 @@ int bus_append_unit_property_assignment(sd_bus_message *m, const char *assignmen r = sd_bus_message_append(m, "v", "a(st)", path, u); } - } else if (rlimit_from_string(field) >= 0) { - uint64_t rl; - - if (streq(eq, "infinity")) - rl = (uint64_t) -1; - else { - r = safe_atou64(eq, &rl); - if (r < 0) { - log_error("Invalid resource limit: %s", eq); - return -EINVAL; - } - } - - r = sd_bus_message_append(m, "v", "t", rl); - } else if (streq(field, "Nice")) { int32_t i; @@ -1746,16 +1738,6 @@ int bus_append_unit_property_assignment(sd_bus_message *m, const char *assignmen r = sd_bus_message_append(m, "v", "i", sig); - } else if (streq(field, "AccuracySec")) { - usec_t u; - - r = parse_sec(eq, &u); - if (r < 0) { - log_error("Failed to parse %s value %s", field, eq); - return -EINVAL; - } - - r = sd_bus_message_append(m, "v", "t", u); } else if (streq(field, "TimerSlackNSec")) { nsec_t n; @@ -1869,6 +1851,11 @@ int bus_append_unit_property_assignment(sd_bus_message *m, const char *assignmen return -EINVAL; } +finish: + if (r < 0) + return bus_log_create_error(r); + + r = sd_bus_message_close_container(m); if (r < 0) return bus_log_create_error(r); diff --git a/src/shared/bus-util.h b/src/shared/bus-util.h index 18fc827754..204da55682 100644 --- a/src/shared/bus-util.h +++ b/src/shared/bus-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/shared/cgroup-show.c b/src/shared/cgroup-show.c index d256b5a7cc..f3039b23f7 100644 --- a/src/shared/cgroup-show.c +++ b/src/shared/cgroup-show.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/shared/cgroup-show.h b/src/shared/cgroup-show.h index 24b758658d..3ab7dfb33c 100644 --- a/src/shared/cgroup-show.h +++ b/src/shared/cgroup-show.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/shared/clean-ipc.c b/src/shared/clean-ipc.c index 2c494d3a31..a3ac7aeb82 100644 --- a/src/shared/clean-ipc.c +++ b/src/shared/clean-ipc.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/shared/clean-ipc.h b/src/shared/clean-ipc.h index 2de57fad26..44a83afcf7 100644 --- a/src/shared/clean-ipc.h +++ b/src/shared/clean-ipc.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/shared/condition.c b/src/shared/condition.c index dedaf2291f..f93785865e 100644 --- a/src/shared/condition.c +++ b/src/shared/condition.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/shared/condition.h b/src/shared/condition.h index 0780e78123..bdda04b770 100644 --- a/src/shared/condition.h +++ b/src/shared/condition.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/shared/conf-parser.c b/src/shared/conf-parser.c index 2aae49fbce..e7fe9ac21e 100644 --- a/src/shared/conf-parser.c +++ b/src/shared/conf-parser.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/shared/conf-parser.h b/src/shared/conf-parser.h index 027ed209d9..a91c94c322 100644 --- a/src/shared/conf-parser.h +++ b/src/shared/conf-parser.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/shared/dev-setup.c b/src/shared/dev-setup.c index ff583faa6e..b2d464c117 100644 --- a/src/shared/dev-setup.c +++ b/src/shared/dev-setup.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/shared/dev-setup.h b/src/shared/dev-setup.h index ab2748db7f..5766a62060 100644 --- a/src/shared/dev-setup.h +++ b/src/shared/dev-setup.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/shared/dns-domain.c b/src/shared/dns-domain.c index 7ef4ad3cf8..0fc2a31f04 100644 --- a/src/shared/dns-domain.c +++ b/src/shared/dns-domain.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -333,7 +331,7 @@ int dns_label_apply_idna(const char *encoded, size_t encoded_size, char *decoded l = strlen(buffer); - /* Verify that the the result is not longer than one DNS label. */ + /* Verify that the result is not longer than one DNS label. */ if (l <= 0 || l > DNS_LABEL_MAX) return -EINVAL; if (l > decoded_max) diff --git a/src/shared/dns-domain.h b/src/shared/dns-domain.h index 40c9ee5f27..2de3642cb3 100644 --- a/src/shared/dns-domain.h +++ b/src/shared/dns-domain.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/shared/dropin.c b/src/shared/dropin.c index 073a8396c5..cc1acd6f23 100644 --- a/src/shared/dropin.c +++ b/src/shared/dropin.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/shared/dropin.h b/src/shared/dropin.h index a8d647e990..c1936f397b 100644 --- a/src/shared/dropin.h +++ b/src/shared/dropin.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/shared/efivars.c b/src/shared/efivars.c index 13af68d539..8631a5a5d9 100644 --- a/src/shared/efivars.c +++ b/src/shared/efivars.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/shared/efivars.h b/src/shared/efivars.h index 94af9717b0..b61d14c4ec 100644 --- a/src/shared/efivars.h +++ b/src/shared/efivars.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/shared/firewall-util.c b/src/shared/firewall-util.c index 9606122345..0d3da2e6d2 100644 --- a/src/shared/firewall-util.c +++ b/src/shared/firewall-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/shared/firewall-util.h b/src/shared/firewall-util.h index 463e09bcaf..c39b34cf8f 100644 --- a/src/shared/firewall-util.h +++ b/src/shared/firewall-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/shared/fstab-util.c b/src/shared/fstab-util.c index d013901973..a4e0cd3267 100644 --- a/src/shared/fstab-util.c +++ b/src/shared/fstab-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/shared/fstab-util.h b/src/shared/fstab-util.h index 5ebea44019..679f6902f7 100644 --- a/src/shared/fstab-util.h +++ b/src/shared/fstab-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/shared/generator.c b/src/shared/generator.c index 76808cbdd5..cd3c35cd55 100644 --- a/src/shared/generator.c +++ b/src/shared/generator.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/shared/generator.h b/src/shared/generator.h index 6c3f38abba..a734e13970 100644 --- a/src/shared/generator.h +++ b/src/shared/generator.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/shared/gpt.h b/src/shared/gpt.h index 5f4c00ba83..52ab29ed5f 100644 --- a/src/shared/gpt.h +++ b/src/shared/gpt.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/shared/ima-util.c b/src/shared/ima-util.c index 6c1954bbff..789064d653 100644 --- a/src/shared/ima-util.c +++ b/src/shared/ima-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/shared/ima-util.h b/src/shared/ima-util.h index d382161706..5be94761fd 100644 --- a/src/shared/ima-util.h +++ b/src/shared/ima-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/shared/import-util.c b/src/shared/import-util.c index ad400e8693..ab701ad8b2 100644 --- a/src/shared/import-util.c +++ b/src/shared/import-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/shared/import-util.h b/src/shared/import-util.h index 4bfa2d9aae..77b17d91f3 100644 --- a/src/shared/import-util.h +++ b/src/shared/import-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/shared/install-printf.c b/src/shared/install-printf.c index 645b3ce33c..88143361da 100644 --- a/src/shared/install-printf.c +++ b/src/shared/install-printf.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/shared/install-printf.h b/src/shared/install-printf.h index 6550337824..acf519f4f7 100644 --- a/src/shared/install-printf.h +++ b/src/shared/install-printf.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/shared/install.c b/src/shared/install.c index b37f8922df..ef8f485cae 100644 --- a/src/shared/install.c +++ b/src/shared/install.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/shared/install.h b/src/shared/install.h index 5519fbcf8f..c1a43e23e7 100644 --- a/src/shared/install.h +++ b/src/shared/install.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/shared/logs-show.c b/src/shared/logs-show.c index 111f0225d9..5eb3bd35c7 100644 --- a/src/shared/logs-show.c +++ b/src/shared/logs-show.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/shared/logs-show.h b/src/shared/logs-show.h index 396050936d..9765a24ff2 100644 --- a/src/shared/logs-show.h +++ b/src/shared/logs-show.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/shared/machine-image.c b/src/shared/machine-image.c index 2ded0ff698..ed8a29c575 100644 --- a/src/shared/machine-image.c +++ b/src/shared/machine-image.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/shared/machine-image.h b/src/shared/machine-image.h index 5e9d8f6980..31b720d50c 100644 --- a/src/shared/machine-image.h +++ b/src/shared/machine-image.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/shared/machine-pool.c b/src/shared/machine-pool.c index 23cbd8d600..e5674e4137 100644 --- a/src/shared/machine-pool.c +++ b/src/shared/machine-pool.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/shared/machine-pool.h b/src/shared/machine-pool.h index a1f2c5c626..40fe5ecb3a 100644 --- a/src/shared/machine-pool.h +++ b/src/shared/machine-pool.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/shared/output-mode.h b/src/shared/output-mode.h index 81d7f05d91..c5470e7c1b 100644 --- a/src/shared/output-mode.h +++ b/src/shared/output-mode.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/shared/pager.c b/src/shared/pager.c index 07ce926d75..05b2b15e40 100644 --- a/src/shared/pager.c +++ b/src/shared/pager.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/shared/pager.h b/src/shared/pager.h index 67446170d0..9fb05796bb 100644 --- a/src/shared/pager.h +++ b/src/shared/pager.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/shared/path-lookup.c b/src/shared/path-lookup.c index 90114001ee..5410620725 100644 --- a/src/shared/path-lookup.c +++ b/src/shared/path-lookup.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/shared/path-lookup.h b/src/shared/path-lookup.h index b8036718ba..26c83d6111 100644 --- a/src/shared/path-lookup.h +++ b/src/shared/path-lookup.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/shared/ptyfwd.c b/src/shared/ptyfwd.c index e6a7a488c9..061d31f4de 100644 --- a/src/shared/ptyfwd.c +++ b/src/shared/ptyfwd.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/shared/ptyfwd.h b/src/shared/ptyfwd.h index 002590d1cf..a046eb4e5e 100644 --- a/src/shared/ptyfwd.h +++ b/src/shared/ptyfwd.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/shared/resolve-util.c b/src/shared/resolve-util.c index bf6fc26841..e2da81bab7 100644 --- a/src/shared/resolve-util.c +++ b/src/shared/resolve-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/shared/resolve-util.h b/src/shared/resolve-util.h index fd93a13f73..8636a6c134 100644 --- a/src/shared/resolve-util.h +++ b/src/shared/resolve-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/shared/seccomp-util.c b/src/shared/seccomp-util.c index bd1d44a0ab..cebe0fce2a 100644 --- a/src/shared/seccomp-util.c +++ b/src/shared/seccomp-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/shared/seccomp-util.h b/src/shared/seccomp-util.h index 79ee8c728d..4ed2afc1b2 100644 --- a/src/shared/seccomp-util.h +++ b/src/shared/seccomp-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/shared/sleep-config.c b/src/shared/sleep-config.c index 7ba11e2f0e..a0aef66bc8 100644 --- a/src/shared/sleep-config.c +++ b/src/shared/sleep-config.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/shared/sleep-config.h b/src/shared/sleep-config.h index 5eda18ee38..51f4621844 100644 --- a/src/shared/sleep-config.h +++ b/src/shared/sleep-config.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/shared/spawn-ask-password-agent.c b/src/shared/spawn-ask-password-agent.c index 3fcea61873..a46b7525f0 100644 --- a/src/shared/spawn-ask-password-agent.c +++ b/src/shared/spawn-ask-password-agent.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/shared/spawn-ask-password-agent.h b/src/shared/spawn-ask-password-agent.h index 31b4beab58..fb0749b13f 100644 --- a/src/shared/spawn-ask-password-agent.h +++ b/src/shared/spawn-ask-password-agent.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/shared/spawn-polkit-agent.c b/src/shared/spawn-polkit-agent.c index ada4bdb17e..cf3c8ad5a3 100644 --- a/src/shared/spawn-polkit-agent.c +++ b/src/shared/spawn-polkit-agent.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/shared/spawn-polkit-agent.h b/src/shared/spawn-polkit-agent.h index c3bc1b845e..42b2989ded 100644 --- a/src/shared/spawn-polkit-agent.h +++ b/src/shared/spawn-polkit-agent.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/shared/specifier.c b/src/shared/specifier.c index 841f4654b0..1c17eb5251 100644 --- a/src/shared/specifier.c +++ b/src/shared/specifier.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/shared/specifier.h b/src/shared/specifier.h index fca206f665..6b1623ee61 100644 --- a/src/shared/specifier.h +++ b/src/shared/specifier.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/shared/switch-root.c b/src/shared/switch-root.c index bf0739e5fa..47d3a5a1fa 100644 --- a/src/shared/switch-root.c +++ b/src/shared/switch-root.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/shared/switch-root.h b/src/shared/switch-root.h index 1350fd9b1c..a7a080b3e8 100644 --- a/src/shared/switch-root.h +++ b/src/shared/switch-root.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once #include <stdbool.h> diff --git a/src/shared/sysctl-util.c b/src/shared/sysctl-util.c index a2cb6e9763..e1ccb3294c 100644 --- a/src/shared/sysctl-util.c +++ b/src/shared/sysctl-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/shared/sysctl-util.h b/src/shared/sysctl-util.h index 2ee6454e52..2decb39f58 100644 --- a/src/shared/sysctl-util.h +++ b/src/shared/sysctl-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/shared/udev-util.h b/src/shared/udev-util.h index f758ce13e4..ca0889f8a6 100644 --- a/src/shared/udev-util.h +++ b/src/shared/udev-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/shared/uid-range.c b/src/shared/uid-range.c index 1ecef5a44c..eb251492c3 100644 --- a/src/shared/uid-range.c +++ b/src/shared/uid-range.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/shared/uid-range.h b/src/shared/uid-range.h index 45335e939f..4044eb4c9c 100644 --- a/src/shared/uid-range.h +++ b/src/shared/uid-range.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/shared/utmp-wtmp.c b/src/shared/utmp-wtmp.c index e72f6fa1a2..9750dcd817 100644 --- a/src/shared/utmp-wtmp.c +++ b/src/shared/utmp-wtmp.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/shared/utmp-wtmp.h b/src/shared/utmp-wtmp.h index 3aec3f959d..438e270a26 100644 --- a/src/shared/utmp-wtmp.h +++ b/src/shared/utmp-wtmp.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/shared/watchdog.c b/src/shared/watchdog.c index bc171817ea..4f3e0125f3 100644 --- a/src/shared/watchdog.c +++ b/src/shared/watchdog.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/shared/watchdog.h b/src/shared/watchdog.h index fd1c11a644..f6ec178ea1 100644 --- a/src/shared/watchdog.h +++ b/src/shared/watchdog.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/sleep/sleep.c b/src/sleep/sleep.c index 95de369817..c8f0742183 100644 --- a/src/sleep/sleep.c +++ b/src/sleep/sleep.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/socket-proxy/socket-proxyd.c b/src/socket-proxy/socket-proxyd.c index 600f772e19..99d4b62139 100644 --- a/src/socket-proxy/socket-proxyd.c +++ b/src/socket-proxy/socket-proxyd.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/sysctl/sysctl.c b/src/sysctl/sysctl.c index 25b5ff52ea..ce7c26e7d3 100644 --- a/src/sysctl/sysctl.c +++ b/src/sysctl/sysctl.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/system-update-generator/system-update-generator.c b/src/system-update-generator/system-update-generator.c index 6c2f53774d..a3d677f068 100644 --- a/src/system-update-generator/system-update-generator.c +++ b/src/system-update-generator/system-update-generator.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 078c1b5ea4..908ccabf8a 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -4873,17 +4871,9 @@ static int set_property(int argc, char *argv[], void *userdata) { return bus_log_create_error(r); STRV_FOREACH(i, strv_skip(argv, 2)) { - r = sd_bus_message_open_container(m, SD_BUS_TYPE_STRUCT, "sv"); - if (r < 0) - return bus_log_create_error(r); - r = bus_append_unit_property_assignment(m, *i); if (r < 0) return r; - - r = sd_bus_message_close_container(m); - if (r < 0) - return bus_log_create_error(r); } r = sd_bus_message_close_container(m); diff --git a/src/systemd/_sd-common.h b/src/systemd/_sd-common.h index 6b5e6c50f9..2d4e1f26e1 100644 --- a/src/systemd/_sd-common.h +++ b/src/systemd/_sd-common.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #ifndef foosdcommonhfoo #define foosdcommonhfoo diff --git a/src/systemd/sd-bus-protocol.h b/src/systemd/sd-bus-protocol.h index 5185a48b31..47b256d5b9 100644 --- a/src/systemd/sd-bus-protocol.h +++ b/src/systemd/sd-bus-protocol.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #ifndef foosdbusprotocolhfoo #define foosdbusprotocolhfoo diff --git a/src/systemd/sd-bus-vtable.h b/src/systemd/sd-bus-vtable.h index c5d05a2db2..6ad6d51979 100644 --- a/src/systemd/sd-bus-vtable.h +++ b/src/systemd/sd-bus-vtable.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #ifndef foosdbusvtablehfoo #define foosdbusvtablehfoo diff --git a/src/systemd/sd-bus.h b/src/systemd/sd-bus.h index ac156fe19f..2a2ef0eb98 100644 --- a/src/systemd/sd-bus.h +++ b/src/systemd/sd-bus.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #ifndef foosdbushfoo #define foosdbushfoo diff --git a/src/systemd/sd-daemon.h b/src/systemd/sd-daemon.h index c26cd1be3a..e6787b0a64 100644 --- a/src/systemd/sd-daemon.h +++ b/src/systemd/sd-daemon.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #ifndef foosddaemonhfoo #define foosddaemonhfoo diff --git a/src/systemd/sd-device.h b/src/systemd/sd-device.h index d3d4abd6ce..5bfca6ecec 100644 --- a/src/systemd/sd-device.h +++ b/src/systemd/sd-device.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #ifndef foosddevicehfoo #define foosddevicehfoo diff --git a/src/systemd/sd-dhcp-client.h b/src/systemd/sd-dhcp-client.h index bbf220e689..2b865a80e1 100644 --- a/src/systemd/sd-dhcp-client.h +++ b/src/systemd/sd-dhcp-client.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #ifndef foosddhcpclienthfoo #define foosddhcpclienthfoo diff --git a/src/systemd/sd-dhcp-lease.h b/src/systemd/sd-dhcp-lease.h index a0d24c211c..2f565ca825 100644 --- a/src/systemd/sd-dhcp-lease.h +++ b/src/systemd/sd-dhcp-lease.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #ifndef foosddhcpleasehfoo #define foosddhcpleasehfoo diff --git a/src/systemd/sd-dhcp-server.h b/src/systemd/sd-dhcp-server.h index dbebb4f294..8658197e80 100644 --- a/src/systemd/sd-dhcp-server.h +++ b/src/systemd/sd-dhcp-server.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #ifndef foosddhcpserverhfoo #define foosddhcpserverhfoo diff --git a/src/systemd/sd-dhcp6-client.h b/src/systemd/sd-dhcp6-client.h index fa90f7a670..9608060830 100644 --- a/src/systemd/sd-dhcp6-client.h +++ b/src/systemd/sd-dhcp6-client.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #ifndef foosddhcp6clienthfoo #define foosddhcp6clienthfoo diff --git a/src/systemd/sd-dhcp6-lease.h b/src/systemd/sd-dhcp6-lease.h index 3a62d3402d..184fbb8e0d 100644 --- a/src/systemd/sd-dhcp6-lease.h +++ b/src/systemd/sd-dhcp6-lease.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #ifndef foosddhcp6leasehfoo #define foosddhcp6leasehfoo diff --git a/src/systemd/sd-event.h b/src/systemd/sd-event.h index 59cea09e59..1ea97e47f8 100644 --- a/src/systemd/sd-event.h +++ b/src/systemd/sd-event.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #ifndef foosdeventhfoo #define foosdeventhfoo diff --git a/src/systemd/sd-hwdb.h b/src/systemd/sd-hwdb.h index c0b8d94c9e..7105920492 100644 --- a/src/systemd/sd-hwdb.h +++ b/src/systemd/sd-hwdb.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #ifndef foosdhwdbhfoo #define foosdhwdbhfoo diff --git a/src/systemd/sd-id128.h b/src/systemd/sd-id128.h index 9f445278bb..a3bf5897b8 100644 --- a/src/systemd/sd-id128.h +++ b/src/systemd/sd-id128.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #ifndef foosdid128hfoo #define foosdid128hfoo diff --git a/src/systemd/sd-ipv4acd.h b/src/systemd/sd-ipv4acd.h index 9f0e2ba7d4..3a2219c82c 100644 --- a/src/systemd/sd-ipv4acd.h +++ b/src/systemd/sd-ipv4acd.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #ifndef foosdipv4acdfoo #define foosdipv4acdfoo diff --git a/src/systemd/sd-ipv4ll.h b/src/systemd/sd-ipv4ll.h index 8c2533d1e6..67c566fe0d 100644 --- a/src/systemd/sd-ipv4ll.h +++ b/src/systemd/sd-ipv4ll.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #ifndef foosdipv4llfoo #define foosdipv4llfoo diff --git a/src/systemd/sd-journal.h b/src/systemd/sd-journal.h index 7f16c69ce5..abb9eca576 100644 --- a/src/systemd/sd-journal.h +++ b/src/systemd/sd-journal.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #ifndef foosdjournalhfoo #define foosdjournalhfoo @@ -129,6 +127,9 @@ int sd_journal_query_unique(sd_journal *j, const char *field); int sd_journal_enumerate_unique(sd_journal *j, const void **data, size_t *l); void sd_journal_restart_unique(sd_journal *j); +int sd_journal_enumerate_fields(sd_journal *j, const char **field); +void sd_journal_restart_fields(sd_journal *j); + int sd_journal_get_fd(sd_journal *j); int sd_journal_get_events(sd_journal *j); int sd_journal_get_timeout(sd_journal *j, uint64_t *timeout_usec); @@ -142,22 +143,28 @@ int sd_journal_get_catalog_for_message_id(sd_id128_t id, char **text); int sd_journal_has_runtime_files(sd_journal *j); int sd_journal_has_persistent_files(sd_journal *j); -/* the inverse condition avoids ambiguity of danling 'else' after the macro */ +/* The inverse condition avoids ambiguity of dangling 'else' after the macro */ #define SD_JOURNAL_FOREACH(j) \ if (sd_journal_seek_head(j) < 0) { } \ else while (sd_journal_next(j) > 0) -/* the inverse condition avoids ambiguity of danling 'else' after the macro */ +/* The inverse condition avoids ambiguity of dangling 'else' after the macro */ #define SD_JOURNAL_FOREACH_BACKWARDS(j) \ if (sd_journal_seek_tail(j) < 0) { } \ else while (sd_journal_previous(j) > 0) +/* Iterate through the data fields of the current journal entry */ #define SD_JOURNAL_FOREACH_DATA(j, data, l) \ for (sd_journal_restart_data(j); sd_journal_enumerate_data((j), &(data), &(l)) > 0; ) +/* Iterate through the all known values of a specific field */ #define SD_JOURNAL_FOREACH_UNIQUE(j, data, l) \ for (sd_journal_restart_unique(j); sd_journal_enumerate_unique((j), &(data), &(l)) > 0; ) +/* Iterate through all known field names */ +#define SD_JOURNAL_FOREACH_FIELD(j, field) \ + for (sd_journal_restart_fields(j); sd_journal_enumerate_fields((j), &(field)) > 0; ) + _SD_DEFINE_POINTER_CLEANUP_FUNC(sd_journal, sd_journal_close); _SD_END_DECLARATIONS; diff --git a/src/systemd/sd-lldp.h b/src/systemd/sd-lldp.h index d912b08a6a..ea952ef187 100644 --- a/src/systemd/sd-lldp.h +++ b/src/systemd/sd-lldp.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #ifndef foosdlldphfoo #define foosdlldphfoo diff --git a/src/systemd/sd-login.h b/src/systemd/sd-login.h index 164c75641c..e3ecbd8378 100644 --- a/src/systemd/sd-login.h +++ b/src/systemd/sd-login.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #ifndef foosdloginhfoo #define foosdloginhfoo @@ -110,7 +108,7 @@ int sd_peer_get_slice(int fd, char **slice); int sd_peer_get_user_slice(int fd, char **slice); /* Similar to sd_pid_get_machine_name(), but retrieves data about the - * peer of a a connected AF_UNIX socket */ + * peer of a connected AF_UNIX socket */ int sd_peer_get_machine_name(int fd, char **machine); /* Similar to sd_pid_get_cgroup(), but retrieves data about the peer diff --git a/src/systemd/sd-messages.h b/src/systemd/sd-messages.h index 814263546b..8a72576ec8 100644 --- a/src/systemd/sd-messages.h +++ b/src/systemd/sd-messages.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #ifndef foosdmessageshfoo #define foosdmessageshfoo diff --git a/src/systemd/sd-ndisc.h b/src/systemd/sd-ndisc.h index d48612efdf..762947531d 100644 --- a/src/systemd/sd-ndisc.h +++ b/src/systemd/sd-ndisc.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #ifndef foosdndiscfoo #define foosdndiscfoo diff --git a/src/systemd/sd-netlink.h b/src/systemd/sd-netlink.h index 5d0d0643e1..b4798d2476 100644 --- a/src/systemd/sd-netlink.h +++ b/src/systemd/sd-netlink.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #ifndef foosdnetlinkhfoo #define foosdnetlinkhfoo diff --git a/src/systemd/sd-network.h b/src/systemd/sd-network.h index ff0d2b191e..e20d12c44d 100644 --- a/src/systemd/sd-network.h +++ b/src/systemd/sd-network.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #ifndef foosdnetworkhfoo #define foosdnetworkhfoo diff --git a/src/systemd/sd-path.h b/src/systemd/sd-path.h index 3280303633..be6abdcd03 100644 --- a/src/systemd/sd-path.h +++ b/src/systemd/sd-path.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #ifndef foosdpathhfoo #define foosdpathhfoo diff --git a/src/systemd/sd-resolve.h b/src/systemd/sd-resolve.h index eb4548a2dc..903b917f70 100644 --- a/src/systemd/sd-resolve.h +++ b/src/systemd/sd-resolve.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #ifndef foosdresolvehfoo #define foosdresolvehfoo diff --git a/src/systemd/sd-utf8.h b/src/systemd/sd-utf8.h index 205ee42213..6781983878 100644 --- a/src/systemd/sd-utf8.h +++ b/src/systemd/sd-utf8.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #ifndef foosdutf8hfoo #define foosdutf8hfoo diff --git a/src/sysusers/sysusers.c b/src/sysusers/sysusers.c index b1dd7e1913..863c628323 100644 --- a/src/sysusers/sysusers.c +++ b/src/sysusers/sysusers.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/sysv-generator/sysv-generator.c b/src/sysv-generator/sysv-generator.c index d48d5abbe3..5a6818a79d 100644 --- a/src/sysv-generator/sysv-generator.c +++ b/src/sysv-generator/sysv-generator.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-acl-util.c b/src/test/test-acl-util.c index 91866daf2d..430dda8e78 100644 --- a/src/test/test-acl-util.c +++ b/src/test/test-acl-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-architecture.c b/src/test/test-architecture.c index 35479d67c1..f41e488d99 100644 --- a/src/test/test-architecture.c +++ b/src/test/test-architecture.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-ask-password-api.c b/src/test/test-ask-password-api.c index d81f32b632..86666597c7 100644 --- a/src/test/test-ask-password-api.c +++ b/src/test/test-ask-password-api.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-barrier.c b/src/test/test-barrier.c index f37cb49c85..e6aa3b5cfe 100644 --- a/src/test/test-barrier.c +++ b/src/test/test-barrier.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-boot-timestamps.c b/src/test/test-boot-timestamps.c index fab33d20c7..d2add5880c 100644 --- a/src/test/test-boot-timestamps.c +++ b/src/test/test-boot-timestamps.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-btrfs.c b/src/test/test-btrfs.c index 33356f8387..ce29d88412 100644 --- a/src/test/test-btrfs.c +++ b/src/test/test-btrfs.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-calendarspec.c b/src/test/test-calendarspec.c index 9cef7154c6..8754cb3381 100644 --- a/src/test/test-calendarspec.c +++ b/src/test/test-calendarspec.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-cap-list.c b/src/test/test-cap-list.c index 4418bafda6..4132ec56fd 100644 --- a/src/test/test-cap-list.c +++ b/src/test/test-cap-list.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-cgroup-mask.c b/src/test/test-cgroup-mask.c index a33519b9da..ad15075a5b 100644 --- a/src/test/test-cgroup-mask.c +++ b/src/test/test-cgroup-mask.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-cgroup-util.c b/src/test/test-cgroup-util.c index a48b324e26..43f8906172 100644 --- a/src/test/test-cgroup-util.c +++ b/src/test/test-cgroup-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-cgroup.c b/src/test/test-cgroup.c index c20a29ba1f..72c32d9c8f 100644 --- a/src/test/test-cgroup.c +++ b/src/test/test-cgroup.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-conf-files.c b/src/test/test-conf-files.c index 86ac513d4f..03b3a9fa5c 100644 --- a/src/test/test-conf-files.c +++ b/src/test/test-conf-files.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-daemon.c b/src/test/test-daemon.c index 45fb554445..4ce00f4b1f 100644 --- a/src/test/test-daemon.c +++ b/src/test/test-daemon.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-date.c b/src/test/test-date.c index 851d384117..7f497bb7d5 100644 --- a/src/test/test-date.c +++ b/src/test/test-date.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-device-nodes.c b/src/test/test-device-nodes.c index 646b168cc0..af75b38948 100644 --- a/src/test/test-device-nodes.c +++ b/src/test/test-device-nodes.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-dns-domain.c b/src/test/test-dns-domain.c index 3efc61ad0a..a9d09f59bc 100644 --- a/src/test/test-dns-domain.c +++ b/src/test/test-dns-domain.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-ellipsize.c b/src/test/test-ellipsize.c index c597d5aecd..d4f09b08a5 100644 --- a/src/test/test-ellipsize.c +++ b/src/test/test-ellipsize.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-engine.c b/src/test/test-engine.c index e23eec7370..ca66f5b684 100644 --- a/src/test/test-engine.c +++ b/src/test/test-engine.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-env-replace.c b/src/test/test-env-replace.c index c1315bbf9f..264acc6ea6 100644 --- a/src/test/test-env-replace.c +++ b/src/test/test-env-replace.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-extract-word.c b/src/test/test-extract-word.c index 65d3a0a96e..7a23fa7b7b 100644 --- a/src/test/test-extract-word.c +++ b/src/test/test-extract-word.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-fileio.c b/src/test/test-fileio.c index 871c71e171..5586a2d6c1 100644 --- a/src/test/test-fileio.c +++ b/src/test/test-fileio.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-firewall-util.c b/src/test/test-firewall-util.c index ff66bde094..77e809c5bf 100644 --- a/src/test/test-firewall-util.c +++ b/src/test/test-firewall-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-fstab-util.c b/src/test/test-fstab-util.c index 27816ac779..ea3d1a6909 100644 --- a/src/test/test-fstab-util.c +++ b/src/test/test-fstab-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-helper.h b/src/test/test-helper.h index c0f6a91787..ddb10f88fd 100644 --- a/src/test/test-helper.h +++ b/src/test/test-helper.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/test/test-hostname-util.c b/src/test/test-hostname-util.c index 590175433c..17fde9f27e 100644 --- a/src/test/test-hostname-util.c +++ b/src/test/test-hostname-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-hostname.c b/src/test/test-hostname.c index dd50c5148c..b38507df5d 100644 --- a/src/test/test-hostname.c +++ b/src/test/test-hostname.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-id128.c b/src/test/test-id128.c index 32cf3f80ca..96aa008c06 100644 --- a/src/test/test-id128.c +++ b/src/test/test-id128.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-install-root.c b/src/test/test-install-root.c index 08fde94f7f..cd250ca7b8 100644 --- a/src/test/test-install-root.c +++ b/src/test/test-install-root.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-install.c b/src/test/test-install.c index ef6f1efb89..874d617621 100644 --- a/src/test/test-install.c +++ b/src/test/test-install.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-ipcrm.c b/src/test/test-ipcrm.c index 5841cb3fb1..2464d32458 100644 --- a/src/test/test-ipcrm.c +++ b/src/test/test-ipcrm.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-job-type.c b/src/test/test-job-type.c index 75ce3a349e..7f0b9f253c 100644 --- a/src/test/test-job-type.c +++ b/src/test/test-job-type.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-json.c b/src/test/test-json.c index 3995224eea..3fe2f58d04 100644 --- a/src/test/test-json.c +++ b/src/test/test-json.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-libudev.c b/src/test/test-libudev.c index 94d852b3b0..a7eb60e8cf 100644 --- a/src/test/test-libudev.c +++ b/src/test/test-libudev.c @@ -1,4 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ /*** This file is part of systemd. diff --git a/src/test/test-log.c b/src/test/test-log.c index a01df9b049..55a2f9d23b 100644 --- a/src/test/test-log.c +++ b/src/test/test-log.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-loopback.c b/src/test/test-loopback.c index 556938a0f8..2748395ade 100644 --- a/src/test/test-loopback.c +++ b/src/test/test-loopback.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-namespace.c b/src/test/test-namespace.c index 5a12e959d4..0b2f9e9173 100644 --- a/src/test/test-namespace.c +++ b/src/test/test-namespace.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-netlink-manual.c b/src/test/test-netlink-manual.c index a1e8774063..79ff6ae74d 100644 --- a/src/test/test-netlink-manual.c +++ b/src/test/test-netlink-manual.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-ns.c b/src/test/test-ns.c index 1175114a3a..9248f2987c 100644 --- a/src/test/test-ns.c +++ b/src/test/test-ns.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -70,7 +68,6 @@ int main(int argc, char *argv[]) { (char **) inaccessible, tmp_dir, var_tmp_dir, - NULL, true, PROTECT_HOME_NO, PROTECT_SYSTEM_NO, diff --git a/src/test/test-parse-util.c b/src/test/test-parse-util.c index f0d5d71083..7d8677e17c 100644 --- a/src/test/test-parse-util.c +++ b/src/test/test-parse-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-path-lookup.c b/src/test/test-path-lookup.c index 65cb894ff7..268da002a9 100644 --- a/src/test/test-path-lookup.c +++ b/src/test/test-path-lookup.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-path-util.c b/src/test/test-path-util.c index 3f0f0264ab..53a585290a 100644 --- a/src/test/test-path-util.c +++ b/src/test/test-path-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-prioq.c b/src/test/test-prioq.c index 07273ffe79..d81880a655 100644 --- a/src/test/test-prioq.c +++ b/src/test/test-prioq.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-replace-var.c b/src/test/test-replace-var.c index 2de2091561..297effce79 100644 --- a/src/test/test-replace-var.c +++ b/src/test/test-replace-var.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-rlimit-util.c b/src/test/test-rlimit-util.c index 24bfe7a60e..d9ac9368cd 100644 --- a/src/test/test-rlimit-util.c +++ b/src/test/test-rlimit-util.c @@ -17,12 +17,37 @@ #include <sys/resource.h> +#include "alloc-util.h" #include "capability-util.h" #include "macro.h" #include "rlimit-util.h" #include "string-util.h" #include "util.h" +static void test_rlimit_parse_format(int resource, const char *string, rlim_t soft, rlim_t hard, int ret, const char *formatted) { + _cleanup_free_ char *f = NULL; + struct rlimit rl = { + .rlim_cur = 4711, + .rlim_max = 4712, + }, rl2 = { + .rlim_cur = 4713, + .rlim_max = 4714 + }; + + assert_se(rlimit_parse(resource, string, &rl) == ret); + if (ret < 0) + return; + + assert_se(rl.rlim_cur == soft); + assert_se(rl.rlim_max == hard); + + assert_se(rlimit_format(&rl, &f) >= 0); + assert_se(streq(formatted, f)); + + assert_se(rlimit_parse(resource, formatted, &rl2) >= 0); + assert_se(memcmp(&rl, &rl2, sizeof(struct rlimit)) == 0); +} + int main(int argc, char *argv[]) { struct rlimit old, new, high; struct rlimit err = { @@ -65,5 +90,15 @@ int main(int argc, char *argv[]) { assert_se(old.rlim_cur == new.rlim_cur); assert_se(old.rlim_max == new.rlim_max); + test_rlimit_parse_format(RLIMIT_NOFILE, "4:5", 4, 5, 0, "4:5"); + test_rlimit_parse_format(RLIMIT_NOFILE, "6", 6, 6, 0, "6"); + test_rlimit_parse_format(RLIMIT_NOFILE, "infinity", RLIM_INFINITY, RLIM_INFINITY, 0, "infinity"); + test_rlimit_parse_format(RLIMIT_NOFILE, "infinity:infinity", RLIM_INFINITY, RLIM_INFINITY, 0, "infinity"); + test_rlimit_parse_format(RLIMIT_NOFILE, "8:infinity", 8, RLIM_INFINITY, 0, "8:infinity"); + test_rlimit_parse_format(RLIMIT_CPU, "25min:13h", (25*USEC_PER_MINUTE) / USEC_PER_SEC, (13*USEC_PER_HOUR) / USEC_PER_SEC, 0, "1500:46800"); + test_rlimit_parse_format(RLIMIT_NOFILE, "", 0, 0, -EINVAL, NULL); + test_rlimit_parse_format(RLIMIT_NOFILE, "5:4", 0, 0, -EILSEQ, NULL); + test_rlimit_parse_format(RLIMIT_NOFILE, "5:4:3", 0, 0, -EINVAL, NULL); + return 0; } diff --git a/src/test/test-sched-prio.c b/src/test/test-sched-prio.c index 60b5160cec..7f515b53d8 100644 --- a/src/test/test-sched-prio.c +++ b/src/test/test-sched-prio.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-sigbus.c b/src/test/test-sigbus.c index b3ccc7509d..17b81747be 100644 --- a/src/test/test-sigbus.c +++ b/src/test/test-sigbus.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-siphash24.c b/src/test/test-siphash24.c index c20be99350..caae911f30 100644 --- a/src/test/test-siphash24.c +++ b/src/test/test-siphash24.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-sleep.c b/src/test/test-sleep.c index fb115ce4f3..97b6f3015d 100644 --- a/src/test/test-sleep.c +++ b/src/test/test-sleep.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-strbuf.c b/src/test/test-strbuf.c index 1d8eda0c15..513218c397 100644 --- a/src/test/test-strbuf.c +++ b/src/test/test-strbuf.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-string-util.c b/src/test/test-string-util.c index 12889ce873..9b48e95998 100644 --- a/src/test/test-string-util.c +++ b/src/test/test-string-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-strip-tab-ansi.c b/src/test/test-strip-tab-ansi.c index 10fc98ced5..72b0f6fc11 100644 --- a/src/test/test-strip-tab-ansi.c +++ b/src/test/test-strip-tab-ansi.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-strv.c b/src/test/test-strv.c index c27f15283e..2b2f76cc7f 100644 --- a/src/test/test-strv.c +++ b/src/test/test-strv.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-strxcpyx.c b/src/test/test-strxcpyx.c index e411d479ab..9bea770131 100644 --- a/src/test/test-strxcpyx.c +++ b/src/test/test-strxcpyx.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-time.c b/src/test/test-time.c index 8896b2c92b..9062c3f3c1 100644 --- a/src/test/test-time.c +++ b/src/test/test-time.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -176,12 +174,36 @@ static void test_get_timezones(void) { r = get_timezones(&zones); assert_se(r == 0); - STRV_FOREACH(zone, zones) { + STRV_FOREACH(zone, zones) assert_se(timezone_is_valid(*zone)); - } +} + +static void test_usec_add(void) { + assert_se(usec_add(0, 0) == 0); + assert_se(usec_add(1, 4) == 5); + assert_se(usec_add(USEC_INFINITY, 5) == USEC_INFINITY); + assert_se(usec_add(5, USEC_INFINITY) == USEC_INFINITY); + assert_se(usec_add(USEC_INFINITY-5, 2) == USEC_INFINITY-3); + assert_se(usec_add(USEC_INFINITY-2, 2) == USEC_INFINITY); + assert_se(usec_add(USEC_INFINITY-1, 2) == USEC_INFINITY); + assert_se(usec_add(USEC_INFINITY, 2) == USEC_INFINITY); +} + +static void test_usec_sub(void) { + assert_se(usec_sub(0, 0) == 0); + assert_se(usec_sub(4, 1) == 3); + assert_se(usec_sub(4, 4) == 0); + assert_se(usec_sub(4, 5) == 0); + assert_se(usec_sub(USEC_INFINITY-3, -3) == USEC_INFINITY); + assert_se(usec_sub(USEC_INFINITY-3, -3) == USEC_INFINITY); + assert_se(usec_sub(USEC_INFINITY-3, -4) == USEC_INFINITY); + assert_se(usec_sub(USEC_INFINITY-3, -5) == USEC_INFINITY); + assert_se(usec_sub(USEC_INFINITY, 5) == USEC_INFINITY); } int main(int argc, char *argv[]) { + uintmax_t x; + test_parse_sec(); test_parse_time(); test_parse_nsec(); @@ -190,6 +212,16 @@ int main(int argc, char *argv[]) { test_format_timespan(USEC_PER_SEC); test_timezone_is_valid(); test_get_timezones(); + test_usec_add(); + test_usec_sub(); + + /* Ensure time_t is signed */ + assert_cc((time_t) -1 < (time_t) 1); + + /* Ensure TIME_T_MAX works correctly */ + x = (uintmax_t) TIME_T_MAX; + x ++; + assert((time_t) x < 0); return 0; } diff --git a/src/test/test-tmpfiles.c b/src/test/test-tmpfiles.c index 23f26369bd..d7223dd2bf 100644 --- a/src/test/test-tmpfiles.c +++ b/src/test/test-tmpfiles.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-uid-range.c b/src/test/test-uid-range.c index 4dcf10e26d..41f06a5cec 100644 --- a/src/test/test-uid-range.c +++ b/src/test/test-uid-range.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-unit-file.c b/src/test/test-unit-file.c index 199623e025..b0c343590d 100644 --- a/src/test/test-unit-file.c +++ b/src/test/test-unit-file.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -712,12 +710,15 @@ static void test_config_parse_rlimit(void) { assert_se(rl[RLIMIT_NOFILE]->rlim_cur == RLIM_INFINITY); assert_se(rl[RLIMIT_NOFILE]->rlim_cur == rl[RLIMIT_NOFILE]->rlim_max); + rl[RLIMIT_NOFILE]->rlim_cur = 10; + rl[RLIMIT_NOFILE]->rlim_max = 20; + + /* Invalid values don't change rl */ assert_se(config_parse_limit(NULL, "fake", 1, "section", 1, "LimitNOFILE", RLIMIT_NOFILE, "10:20:30", rl, NULL) >= 0); assert_se(rl[RLIMIT_NOFILE]); assert_se(rl[RLIMIT_NOFILE]->rlim_cur == 10); assert_se(rl[RLIMIT_NOFILE]->rlim_max == 20); - /* Invalid values don't change rl */ assert_se(config_parse_limit(NULL, "fake", 1, "section", 1, "LimitNOFILE", RLIMIT_NOFILE, "wat:wat", rl, NULL) >= 0); assert_se(rl[RLIMIT_NOFILE]); assert_se(rl[RLIMIT_NOFILE]->rlim_cur == 10); @@ -735,64 +736,64 @@ static void test_config_parse_rlimit(void) { rl[RLIMIT_NOFILE] = mfree(rl[RLIMIT_NOFILE]); - assert_se(config_parse_sec_limit(NULL, "fake", 1, "section", 1, "LimitCPU", RLIMIT_CPU, "56", rl, NULL) >= 0); + assert_se(config_parse_limit(NULL, "fake", 1, "section", 1, "LimitCPU", RLIMIT_CPU, "56", rl, NULL) >= 0); assert_se(rl[RLIMIT_CPU]); assert_se(rl[RLIMIT_CPU]->rlim_cur == 56); assert_se(rl[RLIMIT_CPU]->rlim_cur == rl[RLIMIT_CPU]->rlim_max); - assert_se(config_parse_sec_limit(NULL, "fake", 1, "section", 1, "LimitCPU", RLIMIT_CPU, "57s", rl, NULL) >= 0); + assert_se(config_parse_limit(NULL, "fake", 1, "section", 1, "LimitCPU", RLIMIT_CPU, "57s", rl, NULL) >= 0); assert_se(rl[RLIMIT_CPU]); assert_se(rl[RLIMIT_CPU]->rlim_cur == 57); assert_se(rl[RLIMIT_CPU]->rlim_cur == rl[RLIMIT_CPU]->rlim_max); - assert_se(config_parse_sec_limit(NULL, "fake", 1, "section", 1, "LimitCPU", RLIMIT_CPU, "40s:1m", rl, NULL) >= 0); + assert_se(config_parse_limit(NULL, "fake", 1, "section", 1, "LimitCPU", RLIMIT_CPU, "40s:1m", rl, NULL) >= 0); assert_se(rl[RLIMIT_CPU]); assert_se(rl[RLIMIT_CPU]->rlim_cur == 40); assert_se(rl[RLIMIT_CPU]->rlim_max == 60); - assert_se(config_parse_sec_limit(NULL, "fake", 1, "section", 1, "LimitCPU", RLIMIT_CPU, "infinity", rl, NULL) >= 0); + assert_se(config_parse_limit(NULL, "fake", 1, "section", 1, "LimitCPU", RLIMIT_CPU, "infinity", rl, NULL) >= 0); assert_se(rl[RLIMIT_CPU]); assert_se(rl[RLIMIT_CPU]->rlim_cur == RLIM_INFINITY); assert_se(rl[RLIMIT_CPU]->rlim_cur == rl[RLIMIT_CPU]->rlim_max); - assert_se(config_parse_sec_limit(NULL, "fake", 1, "section", 1, "LimitCPU", RLIMIT_CPU, "1234ms", rl, NULL) >= 0); + assert_se(config_parse_limit(NULL, "fake", 1, "section", 1, "LimitCPU", RLIMIT_CPU, "1234ms", rl, NULL) >= 0); assert_se(rl[RLIMIT_CPU]); assert_se(rl[RLIMIT_CPU]->rlim_cur == 2); assert_se(rl[RLIMIT_CPU]->rlim_cur == rl[RLIMIT_CPU]->rlim_max); rl[RLIMIT_CPU] = mfree(rl[RLIMIT_CPU]); - assert_se(config_parse_usec_limit(NULL, "fake", 1, "section", 1, "LimitRTTIME", RLIMIT_RTTIME, "58", rl, NULL) >= 0); + assert_se(config_parse_limit(NULL, "fake", 1, "section", 1, "LimitRTTIME", RLIMIT_RTTIME, "58", rl, NULL) >= 0); assert_se(rl[RLIMIT_RTTIME]); assert_se(rl[RLIMIT_RTTIME]->rlim_cur == 58); assert_se(rl[RLIMIT_RTTIME]->rlim_cur == rl[RLIMIT_RTTIME]->rlim_max); - assert_se(config_parse_usec_limit(NULL, "fake", 1, "section", 1, "LimitRTTIME", RLIMIT_RTTIME, "58:60", rl, NULL) >= 0); + assert_se(config_parse_limit(NULL, "fake", 1, "section", 1, "LimitRTTIME", RLIMIT_RTTIME, "58:60", rl, NULL) >= 0); assert_se(rl[RLIMIT_RTTIME]); assert_se(rl[RLIMIT_RTTIME]->rlim_cur == 58); assert_se(rl[RLIMIT_RTTIME]->rlim_max == 60); - assert_se(config_parse_usec_limit(NULL, "fake", 1, "section", 1, "LimitRTTIME", RLIMIT_RTTIME, "59s", rl, NULL) >= 0); + assert_se(config_parse_limit(NULL, "fake", 1, "section", 1, "LimitRTTIME", RLIMIT_RTTIME, "59s", rl, NULL) >= 0); assert_se(rl[RLIMIT_RTTIME]); assert_se(rl[RLIMIT_RTTIME]->rlim_cur == 59 * USEC_PER_SEC); assert_se(rl[RLIMIT_RTTIME]->rlim_cur == rl[RLIMIT_RTTIME]->rlim_max); - assert_se(config_parse_usec_limit(NULL, "fake", 1, "section", 1, "LimitRTTIME", RLIMIT_RTTIME, "59s:123s", rl, NULL) >= 0); + assert_se(config_parse_limit(NULL, "fake", 1, "section", 1, "LimitRTTIME", RLIMIT_RTTIME, "59s:123s", rl, NULL) >= 0); assert_se(rl[RLIMIT_RTTIME]); assert_se(rl[RLIMIT_RTTIME]->rlim_cur == 59 * USEC_PER_SEC); assert_se(rl[RLIMIT_RTTIME]->rlim_max == 123 * USEC_PER_SEC); - assert_se(config_parse_usec_limit(NULL, "fake", 1, "section", 1, "LimitRTTIME", RLIMIT_RTTIME, "infinity", rl, NULL) >= 0); + assert_se(config_parse_limit(NULL, "fake", 1, "section", 1, "LimitRTTIME", RLIMIT_RTTIME, "infinity", rl, NULL) >= 0); assert_se(rl[RLIMIT_RTTIME]); assert_se(rl[RLIMIT_RTTIME]->rlim_cur == RLIM_INFINITY); assert_se(rl[RLIMIT_RTTIME]->rlim_cur == rl[RLIMIT_RTTIME]->rlim_max); - assert_se(config_parse_usec_limit(NULL, "fake", 1, "section", 1, "LimitRTTIME", RLIMIT_RTTIME, "infinity:infinity", rl, NULL) >= 0); + assert_se(config_parse_limit(NULL, "fake", 1, "section", 1, "LimitRTTIME", RLIMIT_RTTIME, "infinity:infinity", rl, NULL) >= 0); assert_se(rl[RLIMIT_RTTIME]); assert_se(rl[RLIMIT_RTTIME]->rlim_cur == RLIM_INFINITY); assert_se(rl[RLIMIT_RTTIME]->rlim_cur == rl[RLIMIT_RTTIME]->rlim_max); - assert_se(config_parse_usec_limit(NULL, "fake", 1, "section", 1, "LimitRTTIME", RLIMIT_RTTIME, "2345ms", rl, NULL) >= 0); + assert_se(config_parse_limit(NULL, "fake", 1, "section", 1, "LimitRTTIME", RLIMIT_RTTIME, "2345ms", rl, NULL) >= 0); assert_se(rl[RLIMIT_RTTIME]); assert_se(rl[RLIMIT_RTTIME]->rlim_cur == 2345 * USEC_PER_MSEC); assert_se(rl[RLIMIT_RTTIME]->rlim_cur == rl[RLIMIT_RTTIME]->rlim_max); diff --git a/src/test/test-unit-name.c b/src/test/test-unit-name.c index 5287ee5e6f..3de94ef425 100644 --- a/src/test/test-unit-name.c +++ b/src/test/test-unit-name.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-user-util.c b/src/test/test-user-util.c index 09d37087e5..42c6a8d5e2 100644 --- a/src/test/test-user-util.c +++ b/src/test/test-user-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-utf8.c b/src/test/test-utf8.c index e98be5763c..1ce5a5a24d 100644 --- a/src/test/test-utf8.c +++ b/src/test/test-utf8.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-util.c b/src/test/test-util.c index e199497818..9a8a265790 100644 --- a/src/test/test-util.c +++ b/src/test/test-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-watchdog.c b/src/test/test-watchdog.c index d10d9f49af..e3c19647fc 100644 --- a/src/test/test-watchdog.c +++ b/src/test/test-watchdog.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/test/test-xml.c b/src/test/test-xml.c index 548d75a3c3..b0b72fa78a 100644 --- a/src/test/test-xml.c +++ b/src/test/test-xml.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/timedate/timedatectl.c b/src/timedate/timedatectl.c index b6fa458696..097963b41b 100644 --- a/src/timedate/timedatectl.c +++ b/src/timedate/timedatectl.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/timedate/timedated.c b/src/timedate/timedated.c index bfe1b5e8cd..2a10135fba 100644 --- a/src/timedate/timedated.c +++ b/src/timedate/timedated.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/timesync/timesyncd-conf.c b/src/timesync/timesyncd-conf.c index 5881bc0c45..20c64a3354 100644 --- a/src/timesync/timesyncd-conf.c +++ b/src/timesync/timesyncd-conf.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/timesync/timesyncd-conf.h b/src/timesync/timesyncd-conf.h index cbc19c4054..cba0724b1b 100644 --- a/src/timesync/timesyncd-conf.h +++ b/src/timesync/timesyncd-conf.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/timesync/timesyncd-manager.c b/src/timesync/timesyncd-manager.c index 5627d17de1..d5e16db3a0 100644 --- a/src/timesync/timesyncd-manager.c +++ b/src/timesync/timesyncd-manager.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/timesync/timesyncd-manager.h b/src/timesync/timesyncd-manager.h index fab22cfe84..efe3e60d3e 100644 --- a/src/timesync/timesyncd-manager.h +++ b/src/timesync/timesyncd-manager.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/timesync/timesyncd-server.c b/src/timesync/timesyncd-server.c index f98e6b4cf0..6bda86fe6e 100644 --- a/src/timesync/timesyncd-server.c +++ b/src/timesync/timesyncd-server.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/timesync/timesyncd-server.h b/src/timesync/timesyncd-server.h index f764d0737b..8a19e41d67 100644 --- a/src/timesync/timesyncd-server.h +++ b/src/timesync/timesyncd-server.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - #pragma once /*** diff --git a/src/timesync/timesyncd.c b/src/timesync/timesyncd.c index 7f70eaaea0..23e19159e0 100644 --- a/src/timesync/timesyncd.c +++ b/src/timesync/timesyncd.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c index bb81ff5e3a..7b105a6bd4 100644 --- a/src/tmpfiles/tmpfiles.c +++ b/src/tmpfiles/tmpfiles.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -1153,6 +1151,7 @@ static int create_item(Item *i) { _cleanup_free_ char *resolved = NULL; struct stat st; int r = 0; + int q = 0; CreationMode creation; assert(i); @@ -1279,27 +1278,23 @@ static int create_item(Item *i) { if (IN_SET(i->type, CREATE_SUBVOLUME_NEW_QUOTA, CREATE_SUBVOLUME_INHERIT_QUOTA)) { r = btrfs_subvol_auto_qgroup(i->path, 0, i->type == CREATE_SUBVOLUME_NEW_QUOTA); - if (r == -ENOTTY) { + if (r == -ENOTTY) log_debug_errno(r, "Couldn't adjust quota for subvolume \"%s\" because of unsupported file system or because directory is not a subvolume: %m", i->path); - return 0; - } - if (r == -EROFS) { + else if (r == -EROFS) log_debug_errno(r, "Couldn't adjust quota for subvolume \"%s\" because of read-only file system: %m", i->path); - return 0; - } - if (r == -ENOPROTOOPT) { + else if (r == -ENOPROTOOPT) log_debug_errno(r, "Couldn't adjust quota for subvolume \"%s\" because quota support is disabled: %m", i->path); - return 0; - } - if (r < 0) - return log_error_errno(r, "Failed to adjust quota for subvolume \"%s\": %m", i->path); - if (r > 0) + else if (r < 0) + q = log_error_errno(r, "Failed to adjust quota for subvolume \"%s\": %m", i->path); + else if (r > 0) log_debug("Adjusted quota for subvolume \"%s\".", i->path); - if (r == 0) + else if (r == 0) log_debug("Quota for subvolume \"%s\" already in place, no change made.", i->path); } r = path_set_perms(i, i->path); + if (q < 0) + return q; if (r < 0) return r; diff --git a/src/tty-ask-password-agent/tty-ask-password-agent.c b/src/tty-ask-password-agent/tty-ask-password-agent.c index 8cfe10330d..7b67831e54 100644 --- a/src/tty-ask-password-agent/tty-ask-password-agent.c +++ b/src/tty-ask-password-agent/tty-ask-password-agent.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -240,10 +238,50 @@ finish: return r; } +static int send_passwords(const char *socket_name, char **passwords) { + _cleanup_free_ char *packet = NULL; + _cleanup_close_ int socket_fd = -1; + union sockaddr_union sa = { .un.sun_family = AF_UNIX }; + size_t packet_length = 1; + char **p, *d; + int r; + + assert(socket_name); + + STRV_FOREACH(p, passwords) + packet_length += strlen(*p) + 1; + + packet = new(char, packet_length); + if (!packet) + return -ENOMEM; + + packet[0] = '+'; + + d = packet + 1; + STRV_FOREACH(p, passwords) + d = stpcpy(d, *p) + 1; + + socket_fd = socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0); + if (socket_fd < 0) { + r = log_debug_errno(errno, "socket(): %m"); + goto finish; + } + + strncpy(sa.un.sun_path, socket_name, sizeof(sa.un.sun_path)); + + r = sendto(socket_fd, packet, packet_length, MSG_NOSIGNAL, &sa.sa, + offsetof(struct sockaddr_un, sun_path) + strlen(socket_name)); + if (r < 0) + r = log_debug_errno(errno, "sendto(): %m"); + +finish: + memory_erase(packet, packet_length); + return r; +} + static int parse_password(const char *filename, char **wall) { - _cleanup_free_ char *socket_name = NULL, *message = NULL, *packet = NULL; + _cleanup_free_ char *socket_name = NULL, *message = NULL; bool accept_cached = false, echo = false; - size_t packet_length = 0; uint64_t not_after = 0; unsigned pid = 0; @@ -298,8 +336,7 @@ static int parse_password(const char *filename, char **wall) { *wall = _wall; } else { - union sockaddr_union sa = {}; - _cleanup_close_ int socket_fd = -1; + _cleanup_strv_free_erase_ char **passwords = NULL; assert(arg_action == ACTION_QUERY || arg_action == ACTION_WATCH); @@ -311,32 +348,10 @@ static int parse_password(const char *filename, char **wall) { return 0; } - if (arg_plymouth) { - _cleanup_strv_free_erase_ char **passwords = NULL; - + if (arg_plymouth) r = ask_password_plymouth(message, not_after, accept_cached ? ASK_PASSWORD_ACCEPT_CACHED : 0, filename, &passwords); - if (r >= 0) { - char **p; - - packet_length = 1; - STRV_FOREACH(p, passwords) - packet_length += strlen(*p) + 1; - - packet = new(char, packet_length); - if (!packet) - r = -ENOMEM; - else { - char *d = packet + 1; - - STRV_FOREACH(p, passwords) - d = stpcpy(d, *p) + 1; - - packet[0] = '+'; - } - } - - } else { - _cleanup_string_free_erase_ char *password = NULL; + else { + char *password = NULL; int tty_fd = -1; if (arg_console) { @@ -356,48 +371,26 @@ static int parse_password(const char *filename, char **wall) { release_terminal(); } - if (r >= 0) { - packet_length = 1 + strlen(password) + 1; - packet = new(char, packet_length); - if (!packet) - r = -ENOMEM; - else { - packet[0] = '+'; - strcpy(packet + 1, password); - } - } - } + if (r >= 0) + r = strv_push(&passwords, password); - if (IN_SET(r, -ETIME, -ENOENT)) { - /* If the query went away, that's OK */ - r = 0; - goto finish; - } - if (r < 0) { - log_error_errno(r, "Failed to query password: %m"); - goto finish; + if (r < 0) + string_free_erase(password); } - socket_fd = socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0); - if (socket_fd < 0) { - r = log_error_errno(errno, "socket(): %m"); - goto finish; - } + /* If the query went away, that's OK */ + if (IN_SET(r, -ETIME, -ENOENT)) + return 0; - sa.un.sun_family = AF_UNIX; - strncpy(sa.un.sun_path, socket_name, sizeof(sa.un.sun_path)); + if (r < 0) + return log_error_errno(r, "Failed to query password: %m"); - r = sendto(socket_fd, packet, packet_length, MSG_NOSIGNAL, &sa.sa, offsetof(struct sockaddr_un, sun_path) + strlen(socket_name)); - memory_erase(packet, packet_length); + r = send_passwords(socket_name, passwords); if (r < 0) - return log_error_errno(errno, "Failed to send: %m"); + return log_error_errno(r, "Failed to send: %m"); } return 0; - -finish: - memory_erase(packet, packet_length); - return r; } static int wall_tty_block(void) { diff --git a/src/udev/net/ethtool-util.c b/src/udev/net/ethtool-util.c index 0647008d90..c00ff79123 100644 --- a/src/udev/net/ethtool-util.c +++ b/src/udev/net/ethtool-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/udev/net/ethtool-util.h b/src/udev/net/ethtool-util.h index 690b1a65aa..2e6e1d7150 100644 --- a/src/udev/net/ethtool-util.h +++ b/src/udev/net/ethtool-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/udev/net/link-config.c b/src/udev/net/link-config.c index 77d9bf995a..15145fc5eb 100644 --- a/src/udev/net/link-config.c +++ b/src/udev/net/link-config.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/udev/net/link-config.h b/src/udev/net/link-config.h index 4fcbee8b92..f525fe2116 100644 --- a/src/udev/net/link-config.h +++ b/src/udev/net/link-config.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/udev/scsi_id/scsi.h b/src/udev/scsi_id/scsi.h index 1054551d0b..3bf1a94200 100644 --- a/src/udev/scsi_id/scsi.h +++ b/src/udev/scsi_id/scsi.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /* * scsi.h * diff --git a/src/udev/scsi_id/scsi_id.c b/src/udev/scsi_id/scsi_id.c index e9ab7dce59..4655691642 100644 --- a/src/udev/scsi_id/scsi_id.c +++ b/src/udev/scsi_id/scsi_id.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /* * Copyright (C) IBM Corp. 2003 * Copyright (C) SUSE Linux Products GmbH, 2006 diff --git a/src/udev/scsi_id/scsi_id.h b/src/udev/scsi_id/scsi_id.h index 25f3d1a3b7..141b116a88 100644 --- a/src/udev/scsi_id/scsi_id.h +++ b/src/udev/scsi_id/scsi_id.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /* * Copyright (C) IBM Corp. 2003 * diff --git a/src/udev/scsi_id/scsi_serial.c b/src/udev/scsi_id/scsi_serial.c index bc18af05af..e079e28698 100644 --- a/src/udev/scsi_id/scsi_serial.c +++ b/src/udev/scsi_id/scsi_serial.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /* * Copyright (C) IBM Corp. 2003 * diff --git a/src/udev/udev-builtin-blkid.c b/src/udev/udev-builtin-blkid.c index 018b4dc596..ed0ea5ce5f 100644 --- a/src/udev/udev-builtin-blkid.c +++ b/src/udev/udev-builtin-blkid.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /* * probe disks for filesystems and partitions * diff --git a/src/udev/udev-builtin-btrfs.c b/src/udev/udev-builtin-btrfs.c index 467010f5b3..cfaa463804 100644 --- a/src/udev/udev-builtin-btrfs.c +++ b/src/udev/udev-builtin-btrfs.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/udev/udev-builtin-hwdb.c b/src/udev/udev-builtin-hwdb.c index a9e312e2c0..f4a065a97d 100644 --- a/src/udev/udev-builtin-hwdb.c +++ b/src/udev/udev-builtin-hwdb.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/udev/udev-builtin-input_id.c b/src/udev/udev-builtin-input_id.c index 691ef5656d..3a3d8a1770 100644 --- a/src/udev/udev-builtin-input_id.c +++ b/src/udev/udev-builtin-input_id.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /* * expose input properties via udev * diff --git a/src/udev/udev-builtin-keyboard.c b/src/udev/udev-builtin-keyboard.c index b80be52567..aa10beafb0 100644 --- a/src/udev/udev-builtin-keyboard.c +++ b/src/udev/udev-builtin-keyboard.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/udev/udev-builtin-kmod.c b/src/udev/udev-builtin-kmod.c index 9210d1cc71..9665f678fd 100644 --- a/src/udev/udev-builtin-kmod.c +++ b/src/udev/udev-builtin-kmod.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /* * load kernel modules * diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c index 4f8a759d04..8b1bcefe2d 100644 --- a/src/udev/udev-builtin-net_id.c +++ b/src/udev/udev-builtin-net_id.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/udev/udev-builtin-net_setup_link.c b/src/udev/udev-builtin-net_setup_link.c index f72894b5c5..8e47775135 100644 --- a/src/udev/udev-builtin-net_setup_link.c +++ b/src/udev/udev-builtin-net_setup_link.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/udev/udev-builtin-path_id.c b/src/udev/udev-builtin-path_id.c index 7851cec17f..b6ed45d8ba 100644 --- a/src/udev/udev-builtin-path_id.c +++ b/src/udev/udev-builtin-path_id.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /* * compose persistent device path * @@ -665,6 +663,12 @@ static int builtin_path_id(struct udev_device *dev, int argc, char *argv[], bool path_prepend(&path, "xen-%s", udev_device_get_sysname(parent)); parent = skip_subsystem(parent, "xen"); supported_parent = true; + } else if (streq(subsys, "virtio")) { + while (parent && streq_ptr("virtio", udev_device_get_subsystem(parent))) + parent = udev_device_get_parent(parent); + path_prepend(&path, "virtio-pci-%s", udev_device_get_sysname(parent)); + supported_transport = true; + supported_parent = true; } else if (streq(subsys, "scm")) { path_prepend(&path, "scm-%s", udev_device_get_sysname(parent)); parent = skip_subsystem(parent, "scm"); diff --git a/src/udev/udev-builtin-uaccess.c b/src/udev/udev-builtin-uaccess.c index b650a15bd8..3ebe36f043 100644 --- a/src/udev/udev-builtin-uaccess.c +++ b/src/udev/udev-builtin-uaccess.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /* * manage device node user ACL * diff --git a/src/udev/udev-builtin-usb_id.c b/src/udev/udev-builtin-usb_id.c index 40d1e8cc47..587649eff0 100644 --- a/src/udev/udev-builtin-usb_id.c +++ b/src/udev/udev-builtin-usb_id.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /* * USB device properties and persistent device path * diff --git a/src/udev/udev-builtin.c b/src/udev/udev-builtin.c index 18fb6615d5..e6b36f124f 100644 --- a/src/udev/udev-builtin.c +++ b/src/udev/udev-builtin.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/udev/udev-ctrl.c b/src/udev/udev-ctrl.c index 10dd747256..962de22f43 100644 --- a/src/udev/udev-ctrl.c +++ b/src/udev/udev-ctrl.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /* * libudev - interface to udev device information * diff --git a/src/udev/udev-event.c b/src/udev/udev-event.c index c1dcee6c73..8d601c9c2c 100644 --- a/src/udev/udev-event.c +++ b/src/udev/udev-event.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /* * Copyright (C) 2003-2013 Kay Sievers <kay@vrfy.org> * diff --git a/src/udev/udev-node.c b/src/udev/udev-node.c index fd7936c2dc..5d2997fd8f 100644 --- a/src/udev/udev-node.c +++ b/src/udev/udev-node.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /* * Copyright (C) 2003-2013 Kay Sievers <kay@vrfy.org> * diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c index 7342f2849e..c06ace09cf 100644 --- a/src/udev/udev-rules.c +++ b/src/udev/udev-rules.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /* * Copyright (C) 2003-2012 Kay Sievers <kay@vrfy.org> * diff --git a/src/udev/udev-watch.c b/src/udev/udev-watch.c index c0f4973f93..9ce5e975de 100644 --- a/src/udev/udev-watch.c +++ b/src/udev/udev-watch.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /* * Copyright (C) 2004-2012 Kay Sievers <kay@vrfy.org> * Copyright (C) 2009 Canonical Ltd. diff --git a/src/udev/udev.h b/src/udev/udev.h index 4f4002056c..1f9c8120c0 100644 --- a/src/udev/udev.h +++ b/src/udev/udev.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /* * Copyright (C) 2003 Greg Kroah-Hartman <greg@kroah.com> * Copyright (C) 2003-2010 Kay Sievers <kay@vrfy.org> diff --git a/src/udev/udevadm-control.c b/src/udev/udevadm-control.c index 119033c2af..989decbe95 100644 --- a/src/udev/udevadm-control.c +++ b/src/udev/udevadm-control.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /* * Copyright (C) 2005-2011 Kay Sievers <kay@vrfy.org> * diff --git a/src/udev/udevadm-hwdb.c b/src/udev/udevadm-hwdb.c index 53f0871957..948ad0f5a5 100644 --- a/src/udev/udevadm-hwdb.c +++ b/src/udev/udevadm-hwdb.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/udev/udevadm-info.c b/src/udev/udevadm-info.c index ca67c385b4..7182668f23 100644 --- a/src/udev/udevadm-info.c +++ b/src/udev/udevadm-info.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /* * Copyright (C) 2004-2009 Kay Sievers <kay@vrfy.org> * diff --git a/src/udev/udevadm-monitor.c b/src/udev/udevadm-monitor.c index 1579894082..f9cb5e63a2 100644 --- a/src/udev/udevadm-monitor.c +++ b/src/udev/udevadm-monitor.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /* * Copyright (C) 2004-2010 Kay Sievers <kay@vrfy.org> * diff --git a/src/udev/udevadm-settle.c b/src/udev/udevadm-settle.c index 2cc9f123bd..6a5dc6e9e4 100644 --- a/src/udev/udevadm-settle.c +++ b/src/udev/udevadm-settle.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /* * Copyright (C) 2006-2009 Kay Sievers <kay@vrfy.org> * Copyright (C) 2009 Canonical Ltd. diff --git a/src/udev/udevadm-test-builtin.c b/src/udev/udevadm-test-builtin.c index 7389ca1b72..0b180d03eb 100644 --- a/src/udev/udevadm-test-builtin.c +++ b/src/udev/udevadm-test-builtin.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /* * Copyright (C) 2011 Kay Sievers <kay@vrfy.org> * diff --git a/src/udev/udevadm-test.c b/src/udev/udevadm-test.c index 00ad917efc..ff427cf292 100644 --- a/src/udev/udevadm-test.c +++ b/src/udev/udevadm-test.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /* * Copyright (C) 2003-2004 Greg Kroah-Hartman <greg@kroah.com> * Copyright (C) 2004-2008 Kay Sievers <kay@vrfy.org> diff --git a/src/udev/udevadm-trigger.c b/src/udev/udevadm-trigger.c index 1385b87b3a..9d52345d92 100644 --- a/src/udev/udevadm-trigger.c +++ b/src/udev/udevadm-trigger.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /* * Copyright (C) 2008-2009 Kay Sievers <kay@vrfy.org> * diff --git a/src/udev/udevadm-util.c b/src/udev/udevadm-util.c index 94cbe21f3e..3539c1d6ab 100644 --- a/src/udev/udevadm-util.c +++ b/src/udev/udevadm-util.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /* * Copyright (C) 2008-2009 Kay Sievers <kay@vrfy.org> * diff --git a/src/udev/udevadm-util.h b/src/udev/udevadm-util.h index 5882096081..37e4fe8369 100644 --- a/src/udev/udevadm-util.h +++ b/src/udev/udevadm-util.h @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /* * Copyright (C) 2014 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> * diff --git a/src/udev/udevadm.c b/src/udev/udevadm.c index af1b5a9186..7bd2c1ea42 100644 --- a/src/udev/udevadm.c +++ b/src/udev/udevadm.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /* * Copyright (C) 2007-2012 Kay Sievers <kay@vrfy.org> * diff --git a/src/udev/udevd.c b/src/udev/udevd.c index e658d6a079..2c1c4a967b 100644 --- a/src/udev/udevd.c +++ b/src/udev/udevd.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /* * Copyright (C) 2004-2012 Kay Sievers <kay@vrfy.org> * Copyright (C) 2004 Chris Friesen <chris_friesen@sympatico.ca> diff --git a/src/udev/v4l_id/v4l_id.c b/src/udev/v4l_id/v4l_id.c index 377eb7a72c..aec6676a33 100644 --- a/src/udev/v4l_id/v4l_id.c +++ b/src/udev/v4l_id/v4l_id.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /* * Copyright (C) 2009 Kay Sievers <kay@vrfy.org> * Copyright (c) 2009 Filippo Argiolas <filippo.argiolas@gmail.com> diff --git a/src/update-done/update-done.c b/src/update-done/update-done.c index 4c44d50613..931e583785 100644 --- a/src/update-done/update-done.c +++ b/src/update-done/update-done.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/update-utmp/update-utmp.c b/src/update-utmp/update-utmp.c index 3883b33407..8ae4a8a833 100644 --- a/src/update-utmp/update-utmp.c +++ b/src/update-utmp/update-utmp.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/user-sessions/user-sessions.c b/src/user-sessions/user-sessions.c index d28b196c4e..8bf44e2100 100644 --- a/src/user-sessions/user-sessions.c +++ b/src/user-sessions/user-sessions.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/src/vconsole/vconsole-setup.c b/src/vconsole/vconsole-setup.c index 622fbe9a6d..8a1b824e65 100644 --- a/src/vconsole/vconsole-setup.c +++ b/src/vconsole/vconsole-setup.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. diff --git a/sysctl.d/50-coredump.conf.in b/sysctl.d/50-coredump.conf.in index 5e04c821b6..5a25de4512 100644 --- a/sysctl.d/50-coredump.conf.in +++ b/sysctl.d/50-coredump.conf.in @@ -9,4 +9,4 @@ # and systemd-coredump(8) and core(5) for the explanation of the # setting below. -kernel.core_pattern=|@rootlibexecdir@/systemd-coredump %P %u %g %s %t %e +kernel.core_pattern=|@rootlibexecdir@/systemd-coredump %P %u %g %s %t %c %e diff --git a/sysusers.d/systemd.conf.m4 b/sysusers.d/systemd.conf.m4 index 81b1d79c37..317240a9fd 100644 --- a/sysusers.d/systemd.conf.m4 +++ b/sysusers.d/systemd.conf.m4 @@ -16,3 +16,6 @@ u systemd-resolve - "systemd Resolver" m4_ifdef(`ENABLE_TIMESYNCD', u systemd-timesync - "systemd Time Synchronization" )m4_dnl +m4_ifdef(`ENABLE_COREDUMP', +u systemd-coredump - "systemd Core Dumper" +)m4_dnl diff --git a/test/TEST-03-JOBS/test-jobs.sh b/test/TEST-03-JOBS/test-jobs.sh index 4252a9a75d..0c7d4439a2 100755 --- a/test/TEST-03-JOBS/test-jobs.sh +++ b/test/TEST-03-JOBS/test-jobs.sh @@ -50,4 +50,3 @@ systemctl stop --job-mode=replace-irreversibly unstoppable.service || exit 1 systemctl start unstoppable.service || exit 1 touch /testok -exit 0 diff --git a/test/TEST-04-JOURNAL/test-journal.sh b/test/TEST-04-JOURNAL/test-journal.sh index 3a05619ad5..6646eccfa7 100755 --- a/test/TEST-04-JOURNAL/test-journal.sh +++ b/test/TEST-04-JOURNAL/test-journal.sh @@ -60,4 +60,3 @@ systemctl stop forever-print-hola [[ ! -f "/i-lose-my-logs" ]] touch /testok -exit 0 diff --git a/test/TEST-05-RLIMITS/test-rlimits.sh b/test/TEST-05-RLIMITS/test-rlimits.sh index 54000ecefb..ba665c5968 100755 --- a/test/TEST-05-RLIMITS/test-rlimits.sh +++ b/test/TEST-05-RLIMITS/test-rlimits.sh @@ -14,4 +14,3 @@ set -o pipefail [[ "$(ulimit -n -H)" = "16384" ]] touch /testok -exit 0 diff --git a/test/TEST-06-SELINUX/test-selinux-checks.sh b/test/TEST-06-SELINUX/test-selinux-checks.sh index 08d2ddf4f0..153fab3aac 100755 --- a/test/TEST-06-SELINUX/test-selinux-checks.sh +++ b/test/TEST-06-SELINUX/test-selinux-checks.sh @@ -10,4 +10,3 @@ runcon -t systemd_test_reload_t systemctl reload hola runcon -t systemd_test_stop_t systemctl stop hola touch /testok -exit 0 diff --git a/test/TEST-07-ISSUE-1981/Makefile b/test/TEST-07-ISSUE-1981/Makefile new file mode 120000 index 0000000000..e9f93b1104 --- /dev/null +++ b/test/TEST-07-ISSUE-1981/Makefile @@ -0,0 +1 @@ +../TEST-01-BASIC/Makefile
\ No newline at end of file diff --git a/test/TEST-07-ISSUE-1981/test-segfault.sh b/test/TEST-07-ISSUE-1981/test-segfault.sh new file mode 100755 index 0000000000..48f05d89fb --- /dev/null +++ b/test/TEST-07-ISSUE-1981/test-segfault.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +set -x +set -e + +>/failed + +cat <<'EOL' >/lib/systemd/system/my.service +[Service] +Type=oneshot +ExecStart=/bin/echo Timer runs me +EOL + +cat <<'EOL' >/lib/systemd/system/my.timer +[Timer] +OnBootSec=10s +OnUnitInactiveSec=1h +EOL + +systemctl unmask my.timer + +systemctl start my.timer + +mkdir -p /etc/systemd/system/my.timer.d/ +cat <<'EOL' >/etc/systemd/system/my.timer.d/override.conf +[Timer] +OnBootSec=10s +OnUnitInactiveSec=1h +EOL + +systemctl daemon-reload + +systemctl mask my.timer + +touch /testok +rm /failed diff --git a/test/TEST-07-ISSUE-1981/test.sh b/test/TEST-07-ISSUE-1981/test.sh new file mode 100755 index 0000000000..dcb6ece4d4 --- /dev/null +++ b/test/TEST-07-ISSUE-1981/test.sh @@ -0,0 +1,58 @@ +#!/bin/bash +# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- +# ex: ts=8 sw=4 sts=4 et filetype=sh +TEST_DESCRIPTION="https://github.com/systemd/systemd/issues/1981" + +. $TEST_BASE_DIR/test-functions + +test_run() { + dwarn "skipping QEMU" + if check_nspawn; then + timeout --foreground 30s systemd-nspawn --kill-signal=SIGKILL --boot --directory=$TESTDIR/nspawn-root $ROOTLIBDIR/systemd $KERNEL_APPEND + check_result_nspawn || return 1 + else + dwarn "can't run systemd-nspawn, skipping" + fi + return 0 +} + +test_setup() { + create_empty_image + mkdir -p $TESTDIR/root + mount ${LOOPDEV}p1 $TESTDIR/root + + # Create what will eventually be our root filesystem onto an overlay + ( + LOG_LEVEL=5 + eval $(udevadm info --export --query=env --name=${LOOPDEV}p2) + + setup_basic_environment + + # setup the testsuite service + cat >$initdir/etc/systemd/system/testsuite.service <<EOF +[Unit] +Description=Testsuite service +After=multi-user.target + +[Service] +ExecStart=/test-segfault.sh +Type=oneshot +EOF + + cp test-segfault.sh $initdir/ + + setup_testsuite + ) || return 1 + setup_nspawn_root + + ddebug "umount $TESTDIR/root" + umount $TESTDIR/root +} + +test_cleanup() { + umount $TESTDIR/root 2>/dev/null + [[ $LOOPDEV ]] && losetup -d $LOOPDEV + return 0 +} + +do_test "$@" diff --git a/test/sys.tar.xz b/test/sys.tar.xz Binary files differindex 49ee8027b2..052c77d182 100644 --- a/test/sys.tar.xz +++ b/test/sys.tar.xz diff --git a/test/test-functions b/test/test-functions index 59167b009b..6667e0524f 100644 --- a/test/test-functions +++ b/test/test-functions @@ -13,8 +13,8 @@ if ! ROOTLIBDIR=$(pkg-config --variable=systemdutildir systemd); then ROOTLIBDIR=/usr/lib/systemd fi -BASICTOOLS="sh bash setsid loadkeys setfont login sulogin gzip sleep echo mount umount cryptsetup date dmsetup modprobe sed cmp tee" -DEBUGTOOLS="df free ls stty cat ps ln ip route dmesg dhclient mkdir cp ping dhclient strace less grep id tty touch du sort hostname" +BASICTOOLS="sh bash setsid loadkeys setfont login sulogin gzip sleep echo mount umount cryptsetup date dmsetup modprobe sed cmp tee rm" +DEBUGTOOLS="df free ls stty cat ps ln ip route dmesg dhclient mkdir cp ping dhclient strace less grep id tty touch du sort hostname find" function find_qemu_bin() { # SUSE and Red Hat call the binary qemu-kvm diff --git a/test/udev-test.pl b/test/udev-test.pl index 0a89303570..638c3e8f4e 100755 --- a/test/udev-test.pl +++ b/test/udev-test.pl @@ -700,7 +700,7 @@ EOF desc => "big major number test", devpath => "/devices/virtual/misc/misc-fake1", exp_name => "node", - exp_majorminor => "4095:1", + exp_majorminor => "511:1", rules => <<EOF KERNEL=="misc-fake1", SYMLINK+="node" EOF @@ -709,7 +709,7 @@ EOF desc => "big major and big minor number test", devpath => "/devices/virtual/misc/misc-fake89999", exp_name => "node", - exp_majorminor => "4095:89999", + exp_majorminor => "511:89999", rules => <<EOF KERNEL=="misc-fake89999", SYMLINK+="node" EOF diff --git a/units/.gitignore b/units/.gitignore index c89740df05..2fff20a052 100644 --- a/units/.gitignore +++ b/units/.gitignore @@ -25,6 +25,7 @@ /systemd-binfmt.service /systemd-bootchart.service /systemd-bus-proxyd.service +/systemd-coredump@.service /systemd-firstboot.service /systemd-fsck-root.service /systemd-fsck@.service diff --git a/units/basic.target b/units/basic.target index e0e1e604f8..3e3527f894 100644 --- a/units/basic.target +++ b/units/basic.target @@ -10,8 +10,11 @@ Description=Basic System Documentation=man:systemd.special(7) Requires=sysinit.target Wants=sockets.target timers.target paths.target slices.target -After=sysinit.target sockets.target paths.target slices.target +After=sysinit.target sockets.target paths.target slices.target tmp.mount # We support /var, /tmp, /var/tmp, being on NFS, but we don't pull in -# remote-fs.target by default, hence explicitly pull /var in here. -RequiresMountsFor=/var /tmp /var/tmp +# remote-fs.target by default, hence pull them in explicitly here. Note that we +# require /var and /var/tmp, but only add a Wants= type dependency on /tmp, as +# we support that unit being masked, and this should not be considered an error. +RequiresMountsFor=/var /var/tmp +Wants=tmp.mount diff --git a/units/dev-mqueue.mount b/units/dev-mqueue.mount index 5c11ca7d35..8d29f96ca6 100644 --- a/units/dev-mqueue.mount +++ b/units/dev-mqueue.mount @@ -12,6 +12,7 @@ Documentation=http://www.freedesktop.org/wiki/Software/systemd/APIFileSystems DefaultDependencies=no Before=sysinit.target ConditionPathExists=/proc/sys/fs/mqueue +ConditionCapability=CAP_SYS_ADMIN [Mount] What=mqueue diff --git a/units/rescue.service.in b/units/rescue.service.in index 6c202174d3..92553f61dd 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 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.' +ExecStartPre=-/bin/echo -e 'Welcome to rescue 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 "@SULOGIN@; @SYSTEMCTL@ --job-mode=fail --no-block default" Type=idle StandardInput=tty-force diff --git a/units/sys-fs-fuse-connections.mount b/units/sys-fs-fuse-connections.mount index ebd93e2cda..e940beb09f 100644 --- a/units/sys-fs-fuse-connections.mount +++ b/units/sys-fs-fuse-connections.mount @@ -11,6 +11,7 @@ Documentation=https://www.kernel.org/doc/Documentation/filesystems/fuse.txt Documentation=http://www.freedesktop.org/wiki/Software/systemd/APIFileSystems DefaultDependencies=no ConditionPathExists=/sys/fs/fuse/connections +ConditionCapability=CAP_SYS_ADMIN After=systemd-modules-load.service Before=sysinit.target diff --git a/units/systemd-coredump.socket b/units/systemd-coredump.socket new file mode 100644 index 0000000000..4cb2460471 --- /dev/null +++ b/units/systemd-coredump.socket @@ -0,0 +1,17 @@ +# 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=Process Core Dump Socket +Documentation=man:systemd-coredump(8) +DefaultDependencies=no + +[Socket] +ListenSequentialPacket=/run/systemd/coredump +SocketMode=0600 +Accept=yes +MaxConnections=16 diff --git a/units/systemd-coredump@.service.in b/units/systemd-coredump@.service.in new file mode 100644 index 0000000000..588c8d629c --- /dev/null +++ b/units/systemd-coredump@.service.in @@ -0,0 +1,24 @@ +# 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=Process Core Dump +Documentation=man:systemd-coredump(8) +DefaultDependencies=no +RequiresMountsFor=/var/lib/systemd/coredump +Conflicts=shutdown.target +After=systemd-remount-fs.service systemd-journald.socket +Requires=systemd-journald.socket +Before=shutdown.target + +[Service] +ExecStart=-@rootlibexecdir@/systemd-coredump +Nice=9 +OOMScoreAdjust=500 +PrivateNetwork=yes +ProtectSystem=full +RuntimeMaxSec=5min |