# support all the features we need (like --optimization=). Since the build-dep
# command above installs the distro versions, let's install the pip ones just
# locally and add the local bin directory to the $PATH.
-pip3 install --user -U meson ninja
+pip3 install --user -U meson==0.56.2 ninja
export PATH="$HOME/.local/bin:$PATH"
$CC --version
- fedora-rawhide-aarch64
- fedora-rawhide-i386
- fedora-rawhide-x86_64
- - fedora-eln-aarch64
- - fedora-eln-x86_64
CHANGES WITH 248:
+ * A concept of system extension images is introduced. Such images may
+ be used to extend the /usr/ and /opt/ directory hierarchies at
+ runtime with additional files (even if the file system is read-only).
+ When a system extension image is activated, its /usr/ and /opt/
+ hierarchies and os-release information are combined via overlayfs
+ with the file system hierarchy of the host OS.
+
+ A new systemd-sysext tool can be used to merge, unmerge, list, and
+ refresh system extension hierarchies. See
+ https://www.freedesktop.org/software/systemd/man/systemd-sysext.html.
+
+ The systemd-sysext.service automatically merges installed system
+ extensions during boot (before basic.target, but not in very early
+ boot, since various file systems have to be mounted first).
+
+ The SYSEXT_LEVEL= field in os-release(5) may be used to specify the
+ supported system extension level.
+
+ * A new configuration file /etc/veritytab may be used to configure
+ integrity protection for block devices. Each line is in the format
+ "volume-name data-device hash-device roothash options".
+
+ * A new kernel command-line option systemd.verity.root-options= may be
+ used to configure dm-verity behaviour for the root device.
+
+ * The key file specified in /etc/crypttab (the third field) may now
+ refer to a UNIX socket path. The key is acquired by connecting to
+ that socket and reading from it. This allows the implementation of a
+ service to provide key information dynamically, at the moment when it
+ is needed.
+
+ * Support has been added for extracting the PKCS#11 token URI and
+ encrypted key from the LUKS2 JSON embedded metadata header. This
+ allows the information how to open the encrypted device to be
+ embedded directly in the device and obviates the need for
+ configuration in an external file.
+
+ * LUKS devices may now be unlocked using TPM2 hardware.
+
+ * systemd-repart may lock partitions using TPM2 hardware. This may be
+ useful for example to create an encrypted /var partition bound to the
+ machine on first boot.
+
+ * A new systemd-cryptenroll tool has been added to enroll FIDO2+PKCS#11
+ security tokens to LUKS volumes, list and destroy them. See
+ https://www.freedesktop.org/software/systemd/man/systemd-cryptenroll.html.
+
+ * The manager may be configured at compile time to use fexecve instead
+ of execve when spawning children. Using fexecve closes a window
+ between checking the security context of an executable and spawning
+ it, but unfortunately the kernel displays stale information in the
+ comm field, which impacts ps output and such.
+
+ * The configuration option -Dcompat-gateway-hostname has been dropped.
+ "_gateway" is now the only supported name.
+
+ * The ConditionSecurity=tpm2 unit file setting may be used to check
+ if the system has at least one TPM2 (tpmrm class) device.
+
+ * The tables of system calls in seccomps filters are now automatically
+ generated from kernel lists exported on
+ https://fedora.juszkiewicz.com.pl/syscalls.html.
+
+ The following architectures should now have complete lists:
+ alpha, arc, arm64, arm, i386, ia64, m68k, mips64n32, mips64, mipso32,
+ powerpc, powerpc64, s390, s390x, tilegx, sparc, x86_64, x32.
+
* The MountAPIVFS= service file setting now additionally mounts a tmpfs
- on /run/ if it is not already a mount point. A writable /run/ has always
- been a requirement for a functioning system, but this was not
+ on /run/ if it is not already a mount point. A writable /run/ has
+ always been a requirement for a functioning system, but this was not
guaranteed when using a read-only image.
- Users can always specify BindPaths= or InaccessiblePaths= as overrides,
- and they will take precedence. If the host's root mount point is used,
- there is no change in behaviour.
+
+ Users can always specify BindPaths= or InaccessiblePaths= as
+ overrides, and they will take precedence. If the host's root mount
+ point is used, there is no change in behaviour.
+
+ * New bind mounts and file system image mounts may be injected into the
+ mount namespace of a service (without restarting it). This is exposed
+ respectively as 'systemctl bind <unit> <path>…' and
+ 'systemctl mount-image <unit> <image>…'.
+
+ * The StandardOuput= and StandardError= settings can now specify files
+ to be truncated for output (as "truncate:<path>").
+
+ * The ExecPaths= and NoExecPaths= settings may be used to specify
+ noexec for parts of the file system.
+
+ * sd-bus has a new function sd_bus_open_use_machine() to open a
+ connection to the session bus of a specific user in a local container
+ or on the local host. It also gained a convenience function
+ sd_bus_reply() to call sd_bus_send() with an existing reply message.
+
+ * sd-event allows rate limits to be set on event sources. See the new
+ man page sd_event_source_set_ratelimit(3) for details.
+
+ * systemd.link files gained a [Link] Promiscuous= switch, which allows
+ the device to be raised in promiscuous mode.
+
+ New [Link] TransmitQueues= and ReceiveQueues= settings allow the
+ number of TX and RX queues to be configured.
+
+ New [Link] TransmitQueueLength= setting allows the size of the TX
+ queue to be configured.
+
+ New [Link] GenericSegmentOffloadMaxBytes= and
+ GenericSegmentOffloadMaxSegments= allow capping the packet size and
+ the number of segments accepted in Generic Segment Offload.
+
+ * systemd.network files gained a [Network] RouteTable= configuration
+ switch to select the routing policy table.
+
+ systemd.network files gained a [RoutingPolicyRule] Type=
+ configuration switch (one of "blackhole, "unreachable", "prohibit").
+
+ systemd.network files gained a [IPv6AcceptRA] RouteDenyList= and
+ RouteAllowList= settings to ignore/accept route advertisements from
+ routers matching specified prefixes. The DenyList= setting has been
+ renamed to PrefixDenyList= and a new PrefixAllowList= option has been
+ added.
+
+ systemd.network files gained a [DHCPv6] UseAddress= setting to
+ optionally ignore the address provided in the lease.
+
+ systemd.network files gained a [DHCPv6PrefixDelegation]
+ ManageTemporaryAddress= switch.
+
+ * systemd.netdev files gained a [VLAN] Protocol=, IngressQOSMaps=,
+ EgressQOSMaps=, and [MACVLAN] BroadcastMulticastQueueLength=
+ configuration options for VLAN packet handling.
+
+ * udev rules may now set log_level= option. This allows debug logs to
+ be enabled for select events, e.g. just for a specific subsystem or
+ even a single device.
+
+ * udev now exports the VOLUME_ID, LOGICAL_VOLUME_ID, VOLUME_SET_ID, and
+ DATA_PREPARED_ID attributes for block devices (when available).
+
+ * udev now exports decoded DMI information about memory under the
+ /sys/class/dmi/id/ pseudo device.
+
+ * /dev is not mounted noexec any more. This didn't provide any
+ significant security benefits and would conflicts with the executable
+ mappings used with /dev/sgx device nodes.
+
+ * Permissions for /dev/vsock are now set to 0o666, and /dev/vhost-vsock
+ and /dev/vhost-net are owned by the kvm group.
+
+ * The hardware database has been extended with a list of fingerprint
+ readers that correctly support autosuspend using data from libfprint.
+
+ * systemd-resolved can now answer DNSSEC questions through the stub
+ resolver interface in a way that allows local clients to do DNSSEC
+ validation themselves. For a question with DO+CD set, it'll proxy the
+ DNS query and respond with a mostly unmodified packet received from
+ the upstream server.
+
+ * systemd-nspawn gained a new --ambient-capability= setting
+ (AmbientCapability= in .nspawn files) to configure ambient
+ capabilities passed to the container payload.
+
+ * systemd-nspawn gained the ability to configure the firewall using the
+ nft subsystem (in addition to the existing iptables support).
+
+ * systemd-oomd now gained a new DefaultMemoryPressureDurationSec=
+ setting to configure the time a unit's cgroup needs to exceed memory
+ pressure limits before action will be taken.
+
+ systemd-oomd is now considered fully supported (the usual
+ backwards-compatiblity promises apply). Swap is not required for
+ operation, but it is still recommended.
+
+ * systemd-timesyncd gained a new ConnectionRetrySec= setting which
+ configures the retry delay when trying to contact servers.
+
+ * systemd-stdio-bridge gained --system/--user options to connect to the
+ system bus (previous default) or the user session bus.
+
+ * When the hostname is set to "localhost", systemd-hostnamed will
+ accept this. Previously such a setting would be mostly silently
+ ignored. The goal is to honour configuration as specified by the
+ user.
+
+ * systemd-hostnamed now exports the fallback hostname and the source of
+ the configured hostname ("static", "transient", or "fallback") as
+ D-Bus properties.
+
+ * systemd-hostnamed now exports the HardwareVendor and HardwareModel
+ D-Bus properties. hostnamectl shows this in the status output.
+
+ * systemd-localed may now call locale-gen to generate missing locales
+ on-demand (UTF-8-only). This improves integration with Debian-based
+ distributions (Debian/Ubuntu/PureOS/Tanglu/...) and Arch Linux.
+
+ * systemctl --check-inhibitors may now be used to obey inhibitors even
+ when invoked non-interactively.
+
+ * systemctl import-environment will now emit a warning when called
+ without any arguments (i.e. to import the full environment block of
+ the called program). This command will usually be invoked from a
+ shell, which means that it'll inherit a bunch of variables which are
+ specific to that shell, and usually to the TTY the shell is connected
+ to, and don't have any meaning in the global context of the system or
+ user service manager. Instead, only specific variables should be
+ imported into the manager environment block.
+
+ Similarly, programs which update the manager environment block by
+ directly calling the D-Bus API of the manager, should also push
+ specific variables, and not the full inherited environment.
+
+ * coredumpctl gained a --debugger-arguments= switch to pass arguments
+ to the debugger.
+
+ * networkctl now shows the link activation policy in status.
+
+ * Various tools gained --pager/--no-pager/--json switches to
+ enable/disable the pager and provide JSON output.
+
+ * Various tools now accept SYSTEMD_COLORS=16|256 to configure what
+ colours are used in output.
+
+ * less 568 or newer is now required. Link markup is now always used,
+ and older versions will not display it properly. SYSTEMD_URLIFY=0 may
+ be used to disable it.
+
+ * Builds with support for separate / and /usr hierarchies (split-usr
+ builds, non-merged-usr builds) are now officially deprecated. A
+ warning is emitted during build. Support is slated to be removed in
+ about a year (when the Debian Bookworm release development starts).
+
+ * The main development branch has been renamed to 'main'.
+
+ * mmcblk[0-9]boot[0-9] devices will no longer be probed automatically
+ for partitions, as in the vast majority of cases they contain none
+ and are used internally by the bootloader (eg: uboot).
CHANGES WITH 247:
Features:
+* Hook up journald's FSS logic with TPM2: seal the verification disk by
+ time-based policy, so that the verification key can remain on host and ve
+ validated via TPM.
+
+* sd-event: port to new kernel API epoll_wait2() (new in 5.11), to get more
+ accurate wait timeouts
+
* sd-boot: define a drop-in dir in the ESP that may contain X.509
certificates. If the firmware is detected to be in setup mode, automatically
enroll them as PK/KEK/db, turn off setup mode and proceed. Optionally,
specify API file systems such as `/proc/` or `/sys/` here, or hierarchies
that have them as submounts. In particular, do not specify the root directory
`/` here.
+
+systemd-tmpfiles:
+
+* `SYSTEMD_TMPFILES_FORCE_SUBVOL` - if unset, v/q/Q lines will create subvolumes only if the
+ OS itself is installed into a subvolume. If set to 1 (or another true value), these lines will always create
+ subvolumes (if the backing filesystem supports them). If set to 0, these lines will always create directories.
✓ ManagedOOMSwap=
✓ ManagedOOMMemoryPressure=
✓ ManagedOOMMemoryPressureLimit=
+✓ ManagedOOMPreference=
```
## Process Killing Settings
ID_OUI_FROM_DATABASE=Skidata AG
OUI:00047D*
- ID_OUI_FROM_DATABASE=Pelco
+ ID_OUI_FROM_DATABASE=Motorola Solutions Inc.
OUI:00047E*
ID_OUI_FROM_DATABASE=Siqura B.V.
ID_OUI_FROM_DATABASE=Birka BPA Informationssystem AB
OUI:00080C*
- ID_OUI_FROM_DATABASE=VDA Elettronica spa
+ ID_OUI_FROM_DATABASE=VDA Group S.p.a.
OUI:00080D*
ID_OUI_FROM_DATABASE=Toshiba
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
OUI:00141D*
- ID_OUI_FROM_DATABASE=LTI-Motion GmbH
+ ID_OUI_FROM_DATABASE=KEBA Industrial Automation Germany GmbH
OUI:00141E*
ID_OUI_FROM_DATABASE=P.A. Semi, Inc.
ID_OUI_FROM_DATABASE=Fon Technology S.L.
OUI:001885*
- ID_OUI_FROM_DATABASE=Avigilon Corporation
+ ID_OUI_FROM_DATABASE=Motorola Solutions Inc.
OUI:001886*
ID_OUI_FROM_DATABASE=EL-TECH, INC.
ID_OUI_FROM_DATABASE=NV Michel Van de Wiele
OUI:001A86*
- ID_OUI_FROM_DATABASE=AdvancedIO Systems Inc
+ ID_OUI_FROM_DATABASE=New Wave Design & Verification
OUI:001A87*
ID_OUI_FROM_DATABASE=Canhold International Limited
ID_OUI_FROM_DATABASE=DBS Lodging Technologies, LLC
OUI:001F92*
- ID_OUI_FROM_DATABASE=Avigilon Corporation
+ ID_OUI_FROM_DATABASE=Motorola Solutions Inc.
OUI:001F93*
ID_OUI_FROM_DATABASE=Xiotech Corporation
ID_OUI_FROM_DATABASE=Chroma
OUI:0023BB*
- ID_OUI_FROM_DATABASE=Schmitt Industries
+ ID_OUI_FROM_DATABASE=Accretech SBS, Inc.
OUI:0023BC*
ID_OUI_FROM_DATABASE=EQ-SYS GmbH
OUI:002D76*
ID_OUI_FROM_DATABASE=TITECH GmbH
+OUI:002DB3*
+ ID_OUI_FROM_DATABASE=AMPAK Technology,Inc.
+
OUI:002EC7*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
OUI:006762*
ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD
+OUI:00682B*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:0068EB*
ID_OUI_FROM_DATABASE=HP Inc.
ID_OUI_FROM_DATABASE=DACOLL LIMITED
OUI:00808C*
- ID_OUI_FROM_DATABASE=NetAlly
+ ID_OUI_FROM_DATABASE=NETSCOUT SYSTEMS INC
OUI:00808D*
ID_OUI_FROM_DATABASE=WESTCOAST TECHNOLOGY B.V.
ID_OUI_FROM_DATABASE=THE PANDA PROJECT
OUI:00A00E*
- ID_OUI_FROM_DATABASE=NetAlly
+ ID_OUI_FROM_DATABASE=NETSCOUT SYSTEMS INC
OUI:00A00F*
ID_OUI_FROM_DATABASE=Broadband Technologies
ID_OUI_FROM_DATABASE=Axxcelera Broadband Wireless
OUI:00C06A*
- ID_OUI_FROM_DATABASE=ZAHNER-ELEKTRIK GMBH & CO. KG
+ ID_OUI_FROM_DATABASE=Zahner-Elektrik Ingeborg Zahner-Schiller GmbH & Co. KG.
OUI:00C06B*
ID_OUI_FROM_DATABASE=OSI PLUS CORPORATION
OUI:00CBBD*
ID_OUI_FROM_DATABASE=Cambridge Broadband Networks Group
+OUI:00CC34*
+ ID_OUI_FROM_DATABASE=Juniper Networks
+
OUI:00CC3F*
ID_OUI_FROM_DATABASE=Universal Electronics, Inc.
ID_OUI_FROM_DATABASE=DATAX NV
OUI:00E0DF*
- ID_OUI_FROM_DATABASE=KEYMILE GmbH
+ ID_OUI_FROM_DATABASE=DZS GmbH
OUI:00E0E0*
ID_OUI_FROM_DATABASE=SI ELECTRONICS, LTD.
OUI:00E406*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+OUI:00E421*
+ ID_OUI_FROM_DATABASE=Sony Interactive Entertainment Inc.
+
OUI:00E5E4*
ID_OUI_FROM_DATABASE=Sichuan Tianyi Comheart Telecom Co., Ltd.
OUI:040EC2*
ID_OUI_FROM_DATABASE=ViewSonic Mobile China Limited
+OUI:0411190*
+ ID_OUI_FROM_DATABASE=FORT Robotics Inc.
+
+OUI:0411191*
+ ID_OUI_FROM_DATABASE=Acentury
+
+OUI:0411192*
+ ID_OUI_FROM_DATABASE=Alethea Communications Technologies Pvt. Ltd.
+
+OUI:0411193*
+ ID_OUI_FROM_DATABASE=SUZHOU RIBAO TECHNOLOGY CO.,LTD.
+
+OUI:0411194*
+ ID_OUI_FROM_DATABASE=Bolicom Innovation Technology (BeiJing) Co.,LTD.
+
+OUI:0411195*
+ ID_OUI_FROM_DATABASE=CEITA COMMUNICATION TECHNOLOGY CO.,LTD
+
+OUI:0411196*
+ ID_OUI_FROM_DATABASE=ZPD technology Co., Ltd
+
+OUI:0411197*
+ ID_OUI_FROM_DATABASE=Herrick Tech Labs
+
+OUI:0411198*
+ ID_OUI_FROM_DATABASE=Shenzhen YIZHENG Technology Co.,Ltd
+
+OUI:0411199*
+ ID_OUI_FROM_DATABASE=AC Power Distribution / ACT Entmt.
+
+OUI:041119A*
+ ID_OUI_FROM_DATABASE=CyOne Security AG
+
+OUI:041119B*
+ ID_OUI_FROM_DATABASE=Hubei Baobao Intelligent Technology Co.,LTD
+
+OUI:041119C*
+ ID_OUI_FROM_DATABASE=Haerbin Donglin Technology Co., Ltd.
+
+OUI:041119D*
+ ID_OUI_FROM_DATABASE=Nuance Hearing Ltd.
+
+OUI:041119E*
+ ID_OUI_FROM_DATABASE=JULIDA LIMITED
+
OUI:041552*
ID_OUI_FROM_DATABASE=Apple, Inc.
OUI:0425C5*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+OUI:0425E0*
+ ID_OUI_FROM_DATABASE=Taicang T&W Electronics
+
OUI:042605*
ID_OUI_FROM_DATABASE=GFR Gesellschaft für Regelungstechnik und Energieeinsparung mbH
OUI:042665*
ID_OUI_FROM_DATABASE=Apple, Inc.
+OUI:042728*
+ ID_OUI_FROM_DATABASE=Microsoft Corporation
+
OUI:042758*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
OUI:045604*
ID_OUI_FROM_DATABASE=Gionee Communication Equipment Co.,Ltd.
+OUI:0456E5*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
OUI:04572F*
ID_OUI_FROM_DATABASE=Sertel Electronics UK Ltd
OUI:047A0B*
ID_OUI_FROM_DATABASE=Beijing Xiaomi Electronics Co., Ltd.
+OUI:047BCB*
+ ID_OUI_FROM_DATABASE=Universal Global Scientific Industrial Co., Ltd.
+
OUI:047D50*
ID_OUI_FROM_DATABASE=Shenzhen Kang Ying Technology Co.Ltd.
OUI:048D38*
ID_OUI_FROM_DATABASE=Netcore Technology Inc.
+OUI:049081*
+ ID_OUI_FROM_DATABASE=Pensando Systems, Inc.
+
OUI:049162*
ID_OUI_FROM_DATABASE=Microchip Technology Inc.
ID_OUI_FROM_DATABASE=Smobile Co., Ltd.
OUI:049F81*
- ID_OUI_FROM_DATABASE=NetAlly
+ ID_OUI_FROM_DATABASE=NETSCOUT SYSTEMS INC
OUI:049FCA*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
OUI:04B648*
ID_OUI_FROM_DATABASE=ZENNER
+OUI:04BA1C*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:04BA36*
ID_OUI_FROM_DATABASE=Li Seng Technology Ltd
OUI:04C241*
ID_OUI_FROM_DATABASE=Nokia
+OUI:04C29B*
+ ID_OUI_FROM_DATABASE=Aura Home, Inc.
+
OUI:04C3E60*
ID_OUI_FROM_DATABASE=DREAMKAS LLC
OUI:04D16EE*
ID_OUI_FROM_DATABASE=Evolute Systems Private Limited
+OUI:04D320*
+ ID_OUI_FROM_DATABASE=ITEL MOBILE LIMITED
+
OUI:04D395*
ID_OUI_FROM_DATABASE=Motorola Mobility LLC, a Lenovo Company
OUI:04D590*
ID_OUI_FROM_DATABASE=Fortinet, Inc.
+OUI:04D60E*
+ ID_OUI_FROM_DATABASE=FUNAI ELECTRIC CO., LTD.
+
OUI:04D6AA*
ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO-MECHANICS(THAILAND)
+OUI:04D6F4*
+ ID_OUI_FROM_DATABASE=GD Midea Air-Conditioning Equipment Co.,Ltd.
+
OUI:04D783*
ID_OUI_FROM_DATABASE=Y&H E&C Co.,LTD.
OUI:080FFA*
ID_OUI_FROM_DATABASE=KSP INC.
+OUI:081086*
+ ID_OUI_FROM_DATABASE=NEC Platforms, Ltd.
+
OUI:08115E*
ID_OUI_FROM_DATABASE=Bitel Co., Ltd.
OUI:082CB6*
ID_OUI_FROM_DATABASE=Apple, Inc.
+OUI:082CED*
+ ID_OUI_FROM_DATABASE=Technity Solutions Inc.
+
+OUI:082E36*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:082E5F*
ID_OUI_FROM_DATABASE=Hewlett Packard
+OUI:082FE9*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:08306B*
ID_OUI_FROM_DATABASE=Palo Alto Networks
OUI:083A2F*
ID_OUI_FROM_DATABASE=Guangzhou Juan Intelligent Tech Joint Stock Co.,Ltd
+OUI:083A38*
+ ID_OUI_FROM_DATABASE=New H3C Technologies Co., Ltd
+
OUI:083A5C*
ID_OUI_FROM_DATABASE=Junilab, Inc.
OUI:084656*
ID_OUI_FROM_DATABASE=VEO-LABS
+OUI:08474C*
+ ID_OUI_FROM_DATABASE=Nokia
+
OUI:0847D0*
ID_OUI_FROM_DATABASE=Nokia Shanghai Bell Co., Ltd.
OUI:088039*
ID_OUI_FROM_DATABASE=Cisco SPVTG
+OUI:0881B2*
+ ID_OUI_FROM_DATABASE=Logitech (China) Technology Co., Ltd
+
OUI:0881BC*
ID_OUI_FROM_DATABASE=HongKong Ipro Technology Co., Limited
OUI:08A12B*
ID_OUI_FROM_DATABASE=ShenZhen EZL Technology Co., Ltd
+OUI:08A189*
+ ID_OUI_FROM_DATABASE=Hangzhou Hikvision Digital Technology Co.,Ltd.
+
OUI:08A5C8*
ID_OUI_FROM_DATABASE=Sunnovo International Limited
OUI:08A6BC*
ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
+OUI:08A7C0*
+ ID_OUI_FROM_DATABASE=Technicolor CH USA Inc.
+
OUI:08A8A1*
ID_OUI_FROM_DATABASE=Cyclotronics Power Concepts, Inc
OUI:08AA55*
ID_OUI_FROM_DATABASE=Motorola Mobility LLC, a Lenovo Company
+OUI:08AA89*
+ ID_OUI_FROM_DATABASE=zte corporation
+
OUI:08ACA5*
ID_OUI_FROM_DATABASE=Benu Video, Inc.
OUI:08BA5F*
ID_OUI_FROM_DATABASE=Qingdao Hisense Electronics Co.,Ltd.
+OUI:08BB3C*
+ ID_OUI_FROM_DATABASE=Flextronics Tech.(Ind) Pvt Ltd
+
OUI:08BBCC*
ID_OUI_FROM_DATABASE=AK-NORD EDV VERTRIEBSGES. mbH
OUI:08F4AB*
ID_OUI_FROM_DATABASE=Apple, Inc.
+OUI:08F606*
+ ID_OUI_FROM_DATABASE=zte corporation
+
OUI:08F69C*
ID_OUI_FROM_DATABASE=Apple, Inc.
OUI:0C5101*
ID_OUI_FROM_DATABASE=Apple, Inc.
-OUI:0C51D0*
- ID_OUI_FROM_DATABASE=Altice Labs S.A.
-
OUI:0C51F7*
ID_OUI_FROM_DATABASE=CHAUVIN ARNOUX
OUI:0C5A9E*
ID_OUI_FROM_DATABASE=Wi-SUN Alliance
+OUI:0C5CB50*
+ ID_OUI_FROM_DATABASE=Yamasei
+
+OUI:0C5CB51*
+ ID_OUI_FROM_DATABASE=avxav Electronic Trading LLC
+
+OUI:0C5CB52*
+ ID_OUI_FROM_DATABASE=HongKong Blossom Limited
+
+OUI:0C5CB53*
+ ID_OUI_FROM_DATABASE=iH&S Technology Limited
+
+OUI:0C5CB54*
+ ID_OUI_FROM_DATABASE=Annapurna labs
+
+OUI:0C5CB55*
+ ID_OUI_FROM_DATABASE=The Raymond Corporation
+
+OUI:0C5CB56*
+ ID_OUI_FROM_DATABASE=S2C limited
+
+OUI:0C5CB57*
+ ID_OUI_FROM_DATABASE=Energybox Limited
+
+OUI:0C5CB58*
+ ID_OUI_FROM_DATABASE=Shenzhen C & D Electronics Co., Ltd.
+
+OUI:0C5CB59*
+ ID_OUI_FROM_DATABASE=Colordeve International
+
+OUI:0C5CB5A*
+ ID_OUI_FROM_DATABASE=Zhengzhou coal machinery hydraulic electric control Co.,Ltd
+
+OUI:0C5CB5B*
+ ID_OUI_FROM_DATABASE=ADI
+
+OUI:0C5CB5C*
+ ID_OUI_FROM_DATABASE=Hunan Newman Car NetworKing Technology Co.,Ltd
+
+OUI:0C5CB5D*
+ ID_OUI_FROM_DATABASE=BSU Inc
+
+OUI:0C5CB5E*
+ ID_OUI_FROM_DATABASE=Munters Europe AB
+
OUI:0C5CD8*
ID_OUI_FROM_DATABASE=DOLI Elektronik GmbH
OUI:0C839A*
ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+OUI:0C83CC*
+ ID_OUI_FROM_DATABASE=Alpha Networks Inc.
+
OUI:0C8411*
ID_OUI_FROM_DATABASE=A.O. Smith Water Products
OUI:0C8C24*
ID_OUI_FROM_DATABASE=SHENZHEN BILIAN ELECTRONIC CO.,LTD
+OUI:0C8C69*
+ ID_OUI_FROM_DATABASE=Shenzhen elink smart Co., ltd
+
OUI:0C8C8F*
ID_OUI_FROM_DATABASE=Kamo Technology Limited
OUI:0CCEF6*
ID_OUI_FROM_DATABASE=Guizhou Fortuneship Technology Co., Ltd
+OUI:0CCF89*
+ ID_OUI_FROM_DATABASE=SHENZHEN BILIAN ELECTRONIC CO.,LTD
+
OUI:0CCFD1*
ID_OUI_FROM_DATABASE=SPRINGWAVE Co., Ltd
OUI:0CE0E4*
ID_OUI_FROM_DATABASE=PLANTRONICS, INC.
+OUI:0CE441*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:0CE4A0*
ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
OUI:100F18*
ID_OUI_FROM_DATABASE=Fu Gang Electronic(KunShan)CO.,LTD
+OUI:101081*
+ ID_OUI_FROM_DATABASE=zte corporation
+
OUI:1010B6*
ID_OUI_FROM_DATABASE=McCain Inc
OUI:1027BE*
ID_OUI_FROM_DATABASE=TVIP
+OUI:1027F5*
+ ID_OUI_FROM_DATABASE=TP-Link Corporation Limited
+
OUI:102831*
ID_OUI_FROM_DATABASE=Morion Inc.
OUI:102AB3*
ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
+OUI:102B41*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
OUI:102C6B*
ID_OUI_FROM_DATABASE=AMPAK Technology, Inc.
OUI:102D31*
ID_OUI_FROM_DATABASE=Shenzhen Americas Trading Company LLC
+OUI:102D41*
+ ID_OUI_FROM_DATABASE=Sichuan AI-Link Technology Co., Ltd.
+
OUI:102D96*
ID_OUI_FROM_DATABASE=Looxcie Inc.
OUI:103711*
ID_OUI_FROM_DATABASE=Simlink AS
+OUI:10381F*
+ ID_OUI_FROM_DATABASE=Sichuan AI-Link Technology Co., Ltd.
+
OUI:103917*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:10394E*
+ ID_OUI_FROM_DATABASE=Hisense broadband multimedia technology Co.,Ltd
+
OUI:1039E9*
ID_OUI_FROM_DATABASE=Juniper Networks
OUI:103D0A*
ID_OUI_FROM_DATABASE=Hui Zhou Gaoshengda Technology Co.,LTD
+OUI:103D1C*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
OUI:103D3E*
ID_OUI_FROM_DATABASE=China Mobile Group Device Co.,Ltd.
OUI:105072*
ID_OUI_FROM_DATABASE=Sercomm Corporation.
+OUI:105107*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
OUI:105172*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
OUI:1093E9*
ID_OUI_FROM_DATABASE=Apple, Inc.
+OUI:109497*
+ ID_OUI_FROM_DATABASE=Logitech Hong Kong
+
OUI:1094BB*
ID_OUI_FROM_DATABASE=Apple, Inc.
OUI:10A4BE*
ID_OUI_FROM_DATABASE=SHENZHEN BILIAN ELECTRONIC CO.,LTD
+OUI:10A4DA*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:10A5D0*
ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd.
OUI:10C753*
ID_OUI_FROM_DATABASE=Qingdao Intelligent&Precise Electronics Co.,Ltd.
+OUI:10C9CA*
+ ID_OUI_FROM_DATABASE=Ace Technology Corp.
+
OUI:10CA81*
ID_OUI_FROM_DATABASE=PRECIA
OUI:10D542*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:10D561*
+ ID_OUI_FROM_DATABASE=Tuya Smart Inc.
+
OUI:10D7B0*
ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS
OUI:1407E0*
ID_OUI_FROM_DATABASE=Abrantix AG
+OUI:1409B4*
+ ID_OUI_FROM_DATABASE=zte corporation
+
OUI:1409DC*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
OUI:143AEA*
ID_OUI_FROM_DATABASE=Dynapower Company LLC
+OUI:143B42*
+ ID_OUI_FROM_DATABASE=Realfit(Shenzhen) Intelligent Technology Co., Ltd
+
OUI:143CC3*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
OUI:144FD7E*
ID_OUI_FROM_DATABASE=Edan Instruments, Inc.
+OUI:145051*
+ ID_OUI_FROM_DATABASE=SHARP Corporation
+
OUI:145120*
ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+OUI:14517E*
+ ID_OUI_FROM_DATABASE=New H3C Technologies Co., Ltd
+
OUI:145290*
ID_OUI_FROM_DATABASE=KNS Group LLC (YADRO Company)
OUI:145A83*
ID_OUI_FROM_DATABASE=Logi-D inc
+OUI:145AFC*
+ ID_OUI_FROM_DATABASE=Liteon Technology Corporation
+
OUI:145BD1*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
OUI:147BAC*
ID_OUI_FROM_DATABASE=Nokia
+OUI:147D05*
+ ID_OUI_FROM_DATABASE=SERCOMM PHILIPPINES INC
+
OUI:147DB3*
ID_OUI_FROM_DATABASE=JOA TELECOM.CO.,LTD
OUI:148430*
ID_OUI_FROM_DATABASE=MITAC COMPUTING TECHNOLOGY CORPORATION
+OUI:14857F*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
OUI:148692*
ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
OUI:14893E*
ID_OUI_FROM_DATABASE=VIXTEL TECHNOLOGIES LIMTED
+OUI:1489CB*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:1489FD*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
OUI:14CAA0*
ID_OUI_FROM_DATABASE=Hu&Co
+OUI:14CB19*
+ ID_OUI_FROM_DATABASE=HP Inc.
+
OUI:14CC20*
ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
OUI:14DB85*
ID_OUI_FROM_DATABASE=S NET MEDIA
+OUI:14DD9C*
+ ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd.
+
OUI:14DDA9*
ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
OUI:182A44*
ID_OUI_FROM_DATABASE=HIROSE ELECTRONIC SYSTEM
+OUI:182A57*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:182A7B*
ID_OUI_FROM_DATABASE=Nintendo Co., Ltd.
OUI:1831BF*
ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
+OUI:183219*
+ ID_OUI_FROM_DATABASE=EM Microelectronic
+
OUI:1832A2*
ID_OUI_FROM_DATABASE=LAON TECHNOLOGY CO., LTD.
OUI:18422F*
ID_OUI_FROM_DATABASE=Alcatel Lucent
+OUI:1842D4*
+ ID_OUI_FROM_DATABASE=Wuhan Hosan Telecommunication Technology Co.,Ltd
+
OUI:184462*
ID_OUI_FROM_DATABASE=Riava Networks, Inc.
OUI:18473D*
ID_OUI_FROM_DATABASE=CHONGQING FUGUI ELECTRONICS CO.,LTD.
+OUI:184859*
+ ID_OUI_FROM_DATABASE=Castlenet Technology Inc.
+
OUI:1848CA*
ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd.
OUI:184C08*
ID_OUI_FROM_DATABASE=Rockwell Automation
+OUI:184CAE*
+ ID_OUI_FROM_DATABASE=CONTINENTAL
+
OUI:184E16*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
OUI:18BB26*
ID_OUI_FROM_DATABASE=FN-LINK TECHNOLOGY LIMITED
+OUI:18BB41*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:18BC5A*
ID_OUI_FROM_DATABASE=Zhejiang Tmall Technology Co., Ltd.
OUI:18BF1C*
ID_OUI_FROM_DATABASE=Jiangsu Huitong Group Co.,Ltd.
+OUI:18BFB3*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co., Ltd., Memory Division
+
OUI:18C04D*
ID_OUI_FROM_DATABASE=GIGA-BYTE TECHNOLOGY CO.,LTD.
OUI:18C19D*
ID_OUI_FROM_DATABASE=Integrated Device Technology (Malaysia) Sdn. Bhd.
+OUI:18C241*
+ ID_OUI_FROM_DATABASE=SonicWall
+
OUI:18C2BF*
ID_OUI_FROM_DATABASE=BUFFALO.INC
OUI:1C45C2*
ID_OUI_FROM_DATABASE=Huizhou City Sunsin lntelligent Technology Co.,Ltd
+OUI:1C472F*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:1C4840*
ID_OUI_FROM_DATABASE=IMS Messsysteme GmbH
OUI:1C6E76*
ID_OUI_FROM_DATABASE=Quarion Technology Inc
+OUI:1C6EE6*
+ ID_OUI_FROM_DATABASE=NHNETWORKS
+
OUI:1C6F65*
ID_OUI_FROM_DATABASE=GIGA-BYTE TECHNOLOGY CO.,LTD.
OUI:1C8779E*
ID_OUI_FROM_DATABASE=ASSYSTEM France
+OUI:1C87E3*
+ ID_OUI_FROM_DATABASE=TECNO MOBILE LIMITED
+
OUI:1C88790*
ID_OUI_FROM_DATABASE=Newps co.,ltd
OUI:1C9179*
ID_OUI_FROM_DATABASE=Integrated System Technologies Ltd
+OUI:1C9180*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:1C919D*
ID_OUI_FROM_DATABASE=Dongguan Liesheng Electronic Co., Ltd.
+OUI:1C937C*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
OUI:1C9492*
ID_OUI_FROM_DATABASE=RUAG Schweiz AG
OUI:1C994C*
ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd.
+OUI:1C9957*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
OUI:1C9C26*
ID_OUI_FROM_DATABASE=Zoovel Technologies
OUI:1CA0D3E*
ID_OUI_FROM_DATABASE=Exicom Tele-Systems Ltd.
+OUI:1CA0EF0*
+ ID_OUI_FROM_DATABASE=Tangshan Liulin Automation Equipment Co., Ltd.
+
+OUI:1CA0EF1*
+ ID_OUI_FROM_DATABASE=Wisnu and Supak Co.,Ltd.
+
+OUI:1CA0EF2*
+ ID_OUI_FROM_DATABASE=Schneider-Electric(China)Co.Ltd,Shenzhen Branch
+
+OUI:1CA0EF3*
+ ID_OUI_FROM_DATABASE=Sequent AG
+
+OUI:1CA0EF4*
+ ID_OUI_FROM_DATABASE=Leviathan Solutions Ltd.
+
+OUI:1CA0EF5*
+ ID_OUI_FROM_DATABASE=Nanjing Bilin Intelligent Identification Technology Co.,Ltd
+
+OUI:1CA0EF6*
+ ID_OUI_FROM_DATABASE=HANJEN.CHIN CO., LTD.
+
+OUI:1CA0EF7*
+ ID_OUI_FROM_DATABASE=tec5AG
+
+OUI:1CA0EF8*
+ ID_OUI_FROM_DATABASE=Zillnk
+
+OUI:1CA0EF9*
+ ID_OUI_FROM_DATABASE=Atlas Aerospace
+
+OUI:1CA0EFA*
+ ID_OUI_FROM_DATABASE=Henrich Electronics Corporation
+
+OUI:1CA0EFB*
+ ID_OUI_FROM_DATABASE=BMK professional electronics GmbH
+
+OUI:1CA0EFC*
+ ID_OUI_FROM_DATABASE=LLC Gagar.In
+
+OUI:1CA0EFD*
+ ID_OUI_FROM_DATABASE=Shenzhen Liandian Communication Technology Co.LTD
+
+OUI:1CA0EFE*
+ ID_OUI_FROM_DATABASE=RDA Microelectronics Technologies (Shanghai) Co. , Ltd
+
OUI:1CA2B1*
ID_OUI_FROM_DATABASE=ruwido austria gmbh
OUI:1CA532*
ID_OUI_FROM_DATABASE=SHENZHEN GONGJIN ELECTRONICS CO.,LT
+OUI:1CA681*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:1CA770*
ID_OUI_FROM_DATABASE=SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD
OUI:1CCDE5*
ID_OUI_FROM_DATABASE=Shanghai Wind Technologies Co.,Ltd
+OUI:1CD107*
+ ID_OUI_FROM_DATABASE=Realme Chongqing Mobile Telecommunications Corp.,Ltd.
+
OUI:1CD1BA*
ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD
+OUI:1CD1E0*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
OUI:1CD40C*
ID_OUI_FROM_DATABASE=Kriwan Industrie-Elektronik GmbH
OUI:1CE62B*
ID_OUI_FROM_DATABASE=Apple, Inc.
+OUI:1CE6AD*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:1CE6C7*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
OUI:202598*
ID_OUI_FROM_DATABASE=Teleview
+OUI:2025D2*
+ ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD
+
OUI:202681*
ID_OUI_FROM_DATABASE=TECNO MOBILE LIMITED
OUI:203AEF*
ID_OUI_FROM_DATABASE=Sivantos GmbH
+OUI:203B69*
+ ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd.
+
OUI:203CAE*
ID_OUI_FROM_DATABASE=Apple, Inc.
OUI:205D47*
ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd.
+OUI:205E64*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:205EF7*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
OUI:20658E*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+OUI:2066CF*
+ ID_OUI_FROM_DATABASE=FREEBOX SAS
+
OUI:20677C*
ID_OUI_FROM_DATABASE=Hewlett Packard Enterprise
OUI:206A8A*
ID_OUI_FROM_DATABASE=Wistron Infocomm (Zhongshan) Corporation
+OUI:206A94*
+ ID_OUI_FROM_DATABASE=Hitron Technologies. Inc
+
OUI:206AFF*
ID_OUI_FROM_DATABASE=Atlas Elektronik UK Limited
OUI:2087AC*
ID_OUI_FROM_DATABASE=AES motomation
+OUI:2087EC*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:20896F*
ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD
OUI:20A787*
ID_OUI_FROM_DATABASE=Bointec Taiwan Corporation Limited
+OUI:20A7F9*
+ ID_OUI_FROM_DATABASE=SHENZHEN OLANBOA TECHNOLOGY CO., LTD
+
OUI:20A8B9*
ID_OUI_FROM_DATABASE=SIEMENS AG
OUI:20B5C6*
ID_OUI_FROM_DATABASE=Mimosa Networks
+OUI:20B730*
+ ID_OUI_FROM_DATABASE=TeconGroup, Inc
+
OUI:20B780*
ID_OUI_FROM_DATABASE=Toshiba Visual Solutions Corporation Co.,Ltd
OUI:20C6EB*
ID_OUI_FROM_DATABASE=Panasonic Corporation AVC Networks Company
+OUI:20C74F*
+ ID_OUI_FROM_DATABASE=SensorPush
+
OUI:20C8B3*
ID_OUI_FROM_DATABASE=SHENZHEN BUL-TECH CO.,LTD.
OUI:20CD6E*
ID_OUI_FROM_DATABASE=Realme Chongqing Mobile Telecommunications Corp.,Ltd.
+OUI:20CE2A1*
+ ID_OUI_FROM_DATABASE=Shanghai Digicube Info&Tech Co.,Ltd.
+
+OUI:20CE2A7*
+ ID_OUI_FROM_DATABASE=Beijing Huadianzhongxin Tech.Co.,Ltd
+
OUI:20CEC4*
ID_OUI_FROM_DATABASE=Peraso Technologies
OUI:24181D*
ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO-MECHANICS(THAILAND)
+OUI:2418C6*
+ ID_OUI_FROM_DATABASE=HUNAN FN-LINK TECHNOLOGY LIMITED
+
OUI:241A8C*
ID_OUI_FROM_DATABASE=Squarehead Technology AS
OUI:244427*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+OUI:24456B*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:244597*
ID_OUI_FROM_DATABASE=GEMUE Gebr. Mueller Apparatebau
OUI:245CCB*
ID_OUI_FROM_DATABASE=AXIe Consortium, Inc.
+OUI:245DFC0*
+ ID_OUI_FROM_DATABASE=CompanyDeep
+
+OUI:245DFC1*
+ ID_OUI_FROM_DATABASE=ARTICONA - Bechtle Logistik & Service GmbH
+
+OUI:245DFC2*
+ ID_OUI_FROM_DATABASE=Blue Iris Labs
+
+OUI:245DFC3*
+ ID_OUI_FROM_DATABASE=Shenzhen Hailuck Electronic Technology CO.,LTD
+
+OUI:245DFC4*
+ ID_OUI_FROM_DATABASE=Suzhou Jiangzhi electronic technology co., Ltd
+
+OUI:245DFC5*
+ ID_OUI_FROM_DATABASE=ContactProximity Inc
+
+OUI:245DFC6*
+ ID_OUI_FROM_DATABASE=Guangzhou Lango Electronics Technology Co.,Ltd.
+
+OUI:245DFC7*
+ ID_OUI_FROM_DATABASE=LTY LLC
+
+OUI:245DFC8*
+ ID_OUI_FROM_DATABASE=Cosmicnode
+
+OUI:245DFC9*
+ ID_OUI_FROM_DATABASE=TORGOVYY DOM TEHNOLOGIY LLC
+
+OUI:245DFCA*
+ ID_OUI_FROM_DATABASE=Tata Sky Limited
+
+OUI:245DFCB*
+ ID_OUI_FROM_DATABASE=ONLY
+
+OUI:245DFCC*
+ ID_OUI_FROM_DATABASE=Senix Corporation
+
+OUI:245DFCD*
+ ID_OUI_FROM_DATABASE=Hunan Honestone lntelligence Technology Co.,Ltd
+
+OUI:245DFCE*
+ ID_OUI_FROM_DATABASE=Dodge
+
OUI:245EBE*
ID_OUI_FROM_DATABASE=QNAP Systems, Inc.
OUI:2497ED*
ID_OUI_FROM_DATABASE=Techvision Intelligent Technology Limited
+OUI:249AD8*
+ ID_OUI_FROM_DATABASE=YEALINK(XIAMEN) NETWORK TECHNOLOGY CO.,LTD.
+
OUI:249EAB*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
OUI:24A534*
ID_OUI_FROM_DATABASE=SynTrust Tech International Ltd.
+OUI:24A65E*
+ ID_OUI_FROM_DATABASE=zte corporation
+
OUI:24A7DC*
ID_OUI_FROM_DATABASE=BSkyB Ltd
OUI:24E6BA*
ID_OUI_FROM_DATABASE=JSC Zavod im. Kozitsky
+OUI:24E853*
+ ID_OUI_FROM_DATABASE=LG Innotek
+
OUI:24E927*
ID_OUI_FROM_DATABASE=TomTom International BV
OUI:2829D9*
ID_OUI_FROM_DATABASE=GlobalBeiMing technology (Beijing)Co. Ltd
+OUI:282B96*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:282C020*
ID_OUI_FROM_DATABASE=SAKATA DENKI Co., Ltd.
OUI:2841C6*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+OUI:2841EC*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:284430*
ID_OUI_FROM_DATABASE=GenesisTechnical Systems (UK) Ltd
OUI:2852F9*
ID_OUI_FROM_DATABASE=Zhongxin Intelligent Times (Shenzhen) Co., Ltd.
+OUI:28534E*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:285471*
ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
OUI:285AEB*
ID_OUI_FROM_DATABASE=Apple, Inc.
+OUI:285B0C*
+ ID_OUI_FROM_DATABASE=Sichuan Jiuzhou Electronic Technology Co., Ltd.
+
OUI:285F2F*
ID_OUI_FROM_DATABASE=RNware Co.,Ltd.
OUI:28AF0A*
ID_OUI_FROM_DATABASE=Sirius XM Radio Inc
+OUI:28AFFD*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
OUI:28B0CC*
ID_OUI_FROM_DATABASE=Xenya d.o.o.
OUI:28C68E*
ID_OUI_FROM_DATABASE=NETGEAR
+OUI:28C709*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:28C718*
ID_OUI_FROM_DATABASE=Altierre
OUI:28C87A*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+OUI:28C87C*
+ ID_OUI_FROM_DATABASE=zte corporation
+
OUI:28C914*
ID_OUI_FROM_DATABASE=Taimag Corporation
OUI:28D0CB*
ID_OUI_FROM_DATABASE=Cambridge Communication Systems Ltd
+OUI:28D0EA*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
OUI:28D127*
ID_OUI_FROM_DATABASE=Beijing Xiaomi Mobile Software Co., Ltd
OUI:28D244*
ID_OUI_FROM_DATABASE=LCFC(HeFei) Electronics Technology Co., Ltd.
+OUI:28D3EA*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:28D436*
ID_OUI_FROM_DATABASE=Jiangsu dewosi electric co., LTD
ID_OUI_FROM_DATABASE=Shenzhen Super D Technology Co., Ltd
OUI:28EF01*
- ID_OUI_FROM_DATABASE=Private
+ ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
OUI:28F033*
ID_OUI_FROM_DATABASE=Apple, Inc.
OUI:28F366*
ID_OUI_FROM_DATABASE=Shenzhen Bilian electronic CO.,LTD
+OUI:28F49B*
+ ID_OUI_FROM_DATABASE=LEETEK
+
OUI:28F532*
ID_OUI_FROM_DATABASE=ADD-Engineering BV
OUI:2C0033*
ID_OUI_FROM_DATABASE=EControls, LLC
+OUI:2C00AB*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
OUI:2C00F7*
ID_OUI_FROM_DATABASE=XOS
OUI:2C081C*
ID_OUI_FROM_DATABASE=OVH
+OUI:2C0823*
+ ID_OUI_FROM_DATABASE=Sercomm France Sarl
+
OUI:2C088C*
ID_OUI_FROM_DATABASE=HUMAX Co., Ltd.
OUI:2C16BDE*
ID_OUI_FROM_DATABASE=Molex Incorporated
+OUI:2C17E0*
+ ID_OUI_FROM_DATABASE=SYSTEMES ET TECHNOLOGIES IDENTIFICATION (STid)
+
OUI:2C1875*
ID_OUI_FROM_DATABASE=Skyworth Digital Technology(Shenzhen) Co.,Ltd
OUI:2C431A*
ID_OUI_FROM_DATABASE=Shenzhen YOUHUA Technology Co., Ltd
+OUI:2C43BE*
+ ID_OUI_FROM_DATABASE=Sunnovo International Limited
+
OUI:2C4401*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
OUI:2C5089*
ID_OUI_FROM_DATABASE=Shenzhen Kaixuan Visual Technology Co.,Limited
+OUI:2C52AF*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:2C534A*
ID_OUI_FROM_DATABASE=Shenzhen Winyao Electronic Limited
OUI:2C7155*
ID_OUI_FROM_DATABASE=HiveMotion
+OUI:2C71FF*
+ ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
+
OUI:2C72C3*
ID_OUI_FROM_DATABASE=Soundmatters
OUI:2C8BF2*
ID_OUI_FROM_DATABASE=Hitachi Metals America Ltd
+OUI:2C8DB1*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
OUI:2C9127*
ID_OUI_FROM_DATABASE=Eintechno Corporation
OUI:2CBE97*
ID_OUI_FROM_DATABASE=Ingenieurbuero Bickele und Buehler GmbH
+OUI:2CBEEB*
+ ID_OUI_FROM_DATABASE=Nothing Technology Limited
+
OUI:2CC260*
ID_OUI_FROM_DATABASE=Oracle Corporation
OUI:2CC5D3*
ID_OUI_FROM_DATABASE=Ruckus Wireless
+OUI:2CC81B*
+ ID_OUI_FROM_DATABASE=Routerboard.com
+
OUI:2CCA0C*
ID_OUI_FROM_DATABASE=WITHUS PLANET
OUI:2CCD69*
ID_OUI_FROM_DATABASE=Aqavi.com
+OUI:2CCE1E*
+ ID_OUI_FROM_DATABASE=Cloudtronics Pty Ltd
+
OUI:2CCF58*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
OUI:2CFDAB*
ID_OUI_FROM_DATABASE=Motorola (Wuhan) Mobility Technologies Communication Co., Ltd.
+OUI:2CFDB3*
+ ID_OUI_FROM_DATABASE=TCL Technoly Electronics(Huizhou).,Ltd
+
OUI:2CFF65*
ID_OUI_FROM_DATABASE=Oki Electric Industry Co., Ltd.
OUI:3037A6*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+OUI:3037B3*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:303855*
ID_OUI_FROM_DATABASE=Nokia Corporation
OUI:3078C2*
ID_OUI_FROM_DATABASE=Innowireless / QUCELL Networks
+OUI:3078D3*
+ ID_OUI_FROM_DATABASE=Virgilant Technologies Ltd.
+
OUI:307BAC*
ID_OUI_FROM_DATABASE=New H3C Technologies Co., Ltd
OUI:307C30*
ID_OUI_FROM_DATABASE=RIM
+OUI:307C4A*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:307C5E*
ID_OUI_FROM_DATABASE=Juniper Networks
OUI:30809B*
ID_OUI_FROM_DATABASE=New H3C Technologies Co., Ltd
+OUI:308398*
+ ID_OUI_FROM_DATABASE=Espressif Inc.
+
OUI:308454*
ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
OUI:3085A9*
ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
+OUI:3085EB*
+ ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD
+
OUI:30862D*
ID_OUI_FROM_DATABASE=Arista Network, Inc.
OUI:308D99*
ID_OUI_FROM_DATABASE=Hewlett Packard
+OUI:308E7A*
+ ID_OUI_FROM_DATABASE=Shenzhen iComm Semiconductor CO.,LTD
+
OUI:309048*
ID_OUI_FROM_DATABASE=Apple, Inc.
OUI:309435*
ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd.
+OUI:309587*
+ ID_OUI_FROM_DATABASE=HUNAN FN-LINK TECHNOLOGY LIMITED
+
OUI:3095E3*
ID_OUI_FROM_DATABASE=SHANGHAI SIMCOM LIMITED
OUI:30A452*
ID_OUI_FROM_DATABASE=Arrival Elements BV
+OUI:30A612*
+ ID_OUI_FROM_DATABASE=ShenZhen Hugsun Technology Co.,Ltd.
+
OUI:30A889*
ID_OUI_FROM_DATABASE=DECIMATOR DESIGN
OUI:30B164*
ID_OUI_FROM_DATABASE=Power Electronics International Inc.
+OUI:30B1B5*
+ ID_OUI_FROM_DATABASE=Arcadyan Corporation
+
OUI:30B216*
ID_OUI_FROM_DATABASE=Hitachi ABB Power Grids – Grid Automation
OUI:30E37A*
ID_OUI_FROM_DATABASE=Intel Corporate
+OUI:30E396*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:30E3D6*
ID_OUI_FROM_DATABASE=Spotify USA Inc.
OUI:30F7D7*
ID_OUI_FROM_DATABASE=Thread Technology Co., Ltd
+OUI:30F94B*
+ ID_OUI_FROM_DATABASE=Universal Electronics, Inc.
+
OUI:30F9ED*
ID_OUI_FROM_DATABASE=Sony Corporation
OUI:34495B*
ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS
+OUI:344AC3*
+ ID_OUI_FROM_DATABASE=HuNan ZiKun Information Technology CO., Ltd
+
OUI:344B3D*
ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD
OUI:34684A*
ID_OUI_FROM_DATABASE=Teraworks Co., Ltd.
+OUI:346893*
+ ID_OUI_FROM_DATABASE=Tecnovideo Srl
+
OUI:346895*
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
OUI:347146*
ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+OUI:34732D*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
+OUI:34735A*
+ ID_OUI_FROM_DATABASE=Dell Inc.
+
OUI:347563*
ID_OUI_FROM_DATABASE=SHENZHEN RF-LINK TECHNOLOGY CO.,LTD.
OUI:34862A*
ID_OUI_FROM_DATABASE=Heinz Lackmann GmbH & Co KG
+OUI:34865D*
+ ID_OUI_FROM_DATABASE=Espressif Inc.
+
OUI:34873D*
ID_OUI_FROM_DATABASE=Quectel Wireless Solutions Co., Ltd.
OUI:34AB37*
ID_OUI_FROM_DATABASE=Apple, Inc.
+OUI:34AB95*
+ ID_OUI_FROM_DATABASE=Espressif Inc.
+
OUI:34ADE4*
ID_OUI_FROM_DATABASE=Shanghai Chint Power Systems Co., Ltd.
OUI:34E911*
ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd.
+OUI:34E9FE*
+ ID_OUI_FROM_DATABASE=Metis Co., Ltd.
+
OUI:34EA34*
ID_OUI_FROM_DATABASE=HangZhou Gubei Electronics Technology Co.,Ltd
OUI:38019F*
ID_OUI_FROM_DATABASE=SHENZHEN FAST TECHNOLOGIES CO.,LTD
+OUI:3802DE*
+ ID_OUI_FROM_DATABASE=Sercomm Corporation.
+
OUI:380546*
ID_OUI_FROM_DATABASE=Foctek Photonics, Inc.
OUI:381DD9*
ID_OUI_FROM_DATABASE=FN-LINK TECHNOLOGY LIMITED
+OUI:382028*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:382056*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
OUI:38521A*
ID_OUI_FROM_DATABASE=Nokia
+OUI:385247*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:38539C*
ID_OUI_FROM_DATABASE=Apple, Inc.
OUI:388602*
ID_OUI_FROM_DATABASE=Flexoptix GmbH
+OUI:3887D5*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
OUI:38881E*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
OUI:389F83*
ID_OUI_FROM_DATABASE=OTN Systems N.V.
+OUI:38A067*
+ ID_OUI_FROM_DATABASE=Nokia Solutions and Networks GmbH & Co. KG
+
OUI:38A28C*
ID_OUI_FROM_DATABASE=SHENZHEN RF-LINK TECHNOLOGY CO.,LTD.
ID_OUI_FROM_DATABASE=Zhejiang Dahua Technology Co., Ltd.
OUI:38AFD0*
- ID_OUI_FROM_DATABASE=Private
+ ID_OUI_FROM_DATABASE=Nevro
OUI:38AFD7*
ID_OUI_FROM_DATABASE=FUJITSU LIMITED
OUI:38B1DB*
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+OUI:38B3F7*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:38B4D3*
ID_OUI_FROM_DATABASE=BSH Hausgeraete GmbH
ID_OUI_FROM_DATABASE=MATRIXSTREAM TECHNOLOGIES, INC.
OUI:38B8EB7*
- ID_OUI_FROM_DATABASE=Private
+ ID_OUI_FROM_DATABASE=Sirin Mobile Technologies
OUI:38B8EB8*
ID_OUI_FROM_DATABASE=CeeNex Inc
OUI:38F33F*
ID_OUI_FROM_DATABASE=TATSUNO CORPORATION
+OUI:38F3AB*
+ ID_OUI_FROM_DATABASE=LCFC(HeFei) Electronics Technology co., ltd
+
+OUI:38F3FB*
+ ID_OUI_FROM_DATABASE=Asperiq
+
OUI:38F554*
ID_OUI_FROM_DATABASE=HISENSE ELECTRIC CO.,LTD
OUI:3C05AB*
ID_OUI_FROM_DATABASE=Product Creation Studio
+OUI:3C0630*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:3C06A7*
ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
OUI:3C13CC*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+OUI:3C1512*
+ ID_OUI_FROM_DATABASE=Shenzhen Huanhu Technology Co.,Ltd
+
OUI:3C15C2*
ID_OUI_FROM_DATABASE=Apple, Inc.
OUI:3C7A8A*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+OUI:3C7AAA*
+ ID_OUI_FROM_DATABASE=China Dragon Technology Limited
+
+OUI:3C7AC4*
+ ID_OUI_FROM_DATABASE=Chemtronics
+
OUI:3C7C3F*
ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
OUI:3CA82A*
ID_OUI_FROM_DATABASE=Hewlett Packard
+OUI:3CA8ED*
+ ID_OUI_FROM_DATABASE=smart light technology
+
OUI:3CA9F4*
ID_OUI_FROM_DATABASE=Intel Corporate
OUI:3CC2E1*
ID_OUI_FROM_DATABASE=XINHUA CONTROL ENGINEERING CO.,LTD
+OUI:3CC786*
+ ID_OUI_FROM_DATABASE=DONGGUAN HUARONG COMMUNICATION TECHNOLOGIES CO.,LTD.
+
OUI:3CC99E*
ID_OUI_FROM_DATABASE=Huiyang Technology Co., Ltd
OUI:3CE1A1*
ID_OUI_FROM_DATABASE=Universal Global Scientific Industrial Co., Ltd.
+OUI:3CE36B*
+ ID_OUI_FROM_DATABASE=Zhejiang Dahua Technology Co., Ltd.
+
OUI:3CE3E7*
ID_OUI_FROM_DATABASE=China Mobile Group Device Co.,Ltd.
OUI:3CFDFE*
ID_OUI_FROM_DATABASE=Intel Corporate
+OUI:3CFFD8*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:4000E0*
ID_OUI_FROM_DATABASE=Derek(Shaoguan)Limited
OUI:402343*
ID_OUI_FROM_DATABASE=CHONGQING FUGUI ELECTRONICS CO.,LTD.
+OUI:4024B2*
+ ID_OUI_FROM_DATABASE=Sichuan AI-Link Technology Co., Ltd.
+
OUI:4025C2*
ID_OUI_FROM_DATABASE=Intel Corporate
OUI:4040A7*
ID_OUI_FROM_DATABASE=Sony Mobile Communications Inc
+OUI:404101*
+ ID_OUI_FROM_DATABASE=Rockwell Automation
+
OUI:404229*
ID_OUI_FROM_DATABASE=Layer3TV, Inc
+OUI:4044FD*
+ ID_OUI_FROM_DATABASE=Realme Chongqing Mobile Telecommunications Corp.,Ltd.
+
OUI:4045DA*
ID_OUI_FROM_DATABASE=Spreadtrum Communications (Shanghai) Co., Ltd.
OUI:40BD9E*
ID_OUI_FROM_DATABASE=Physio-Control, Inc
+OUI:40BEEE*
+ ID_OUI_FROM_DATABASE=Shenzhen Yunding Information Technology Co.,Ltd
+
OUI:40BF17*
ID_OUI_FROM_DATABASE=Digistar Telecom. SA
OUI:40E3D6*
ID_OUI_FROM_DATABASE=Aruba, a Hewlett Packard Enterprise Company
+OUI:40E64B*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:40E730*
ID_OUI_FROM_DATABASE=DEY Storage Systems, Inc.
OUI:446FD81*
ID_OUI_FROM_DATABASE=Shenzhen Furuilian Electronic Co.,Ltd.
+OUI:446FD82*
+ ID_OUI_FROM_DATABASE=BAYKON Endüstriyel Kontrol Sistemleri San. ve Tic. A.Ş.
+
+OUI:446FD83*
+ ID_OUI_FROM_DATABASE=Shenzhen Mestechs Technology CO., LTD
+
OUI:446FD84*
ID_OUI_FROM_DATABASE=lb Lautsprecher gmbH
OUI:446FD85*
ID_OUI_FROM_DATABASE=ZHEJIANG SHIP ELECTRONICS & TECHNOLOGY CO., LTD.
+OUI:446FD86*
+ ID_OUI_FROM_DATABASE=Anhui GuDao Tech
+
OUI:446FD87*
ID_OUI_FROM_DATABASE=ITC
OUI:446FD88*
ID_OUI_FROM_DATABASE=Global Telecom Engineering, Inc
+OUI:446FD89*
+ ID_OUI_FROM_DATABASE=Annapurna labs
+
+OUI:446FD8A*
+ ID_OUI_FROM_DATABASE=ZHEJIANG HIKAILINK TECHNOLOGY Co., Ltd
+
OUI:446FD8B*
ID_OUI_FROM_DATABASE=Beijing gpthink technology co.,LTD.
+OUI:446FD8C*
+ ID_OUI_FROM_DATABASE=Changzhou Haitu Electronic Technology Co.,Ltd
+
OUI:446FD8D*
ID_OUI_FROM_DATABASE=SCAIME
+OUI:446FD8E*
+ ID_OUI_FROM_DATABASE=CTE
+
+OUI:446FF8*
+ ID_OUI_FROM_DATABASE=Dyson Limited
+
OUI:44700B*
ID_OUI_FROM_DATABASE=IFFU
OUI:449B78*
ID_OUI_FROM_DATABASE=The Now Factory
+OUI:449BC1*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:449CB5*
ID_OUI_FROM_DATABASE=Alcomp, Inc
OUI:44BB3B*
ID_OUI_FROM_DATABASE=Google, Inc.
+OUI:44BDDE*
+ ID_OUI_FROM_DATABASE=BHTC GmbH
+
OUI:44BFE3*
ID_OUI_FROM_DATABASE=Shenzhen Longtech Electronics Co.,Ltd
OUI:480033*
ID_OUI_FROM_DATABASE=Technicolor CH USA Inc.
+OUI:48007D*
+ ID_OUI_FROM_DATABASE=DTS ELEKTRONIK SAN. TIC. LTD. STI.
+
OUI:4801C5*
ID_OUI_FROM_DATABASE=OnePlus Technology (Shenzhen) Co., Ltd
OUI:481249*
ID_OUI_FROM_DATABASE=Luxcom Technologies Inc.
+OUI:481258*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:48137E*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
OUI:481D70*
ID_OUI_FROM_DATABASE=Cisco SPVTG
+OUI:481F2D*
+ ID_OUI_FROM_DATABASE=Shenzhen Jie Shi Lian Industrial Co.,LTD
+
OUI:48210B*
ID_OUI_FROM_DATABASE=PEGATRON CORPORATION
OUI:48282F*
ID_OUI_FROM_DATABASE=zte corporation
+OUI:482952*
+ ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS
+
+OUI:4829E4*
+ ID_OUI_FROM_DATABASE=ZAO NPK Rotek
+
OUI:482AE3*
ID_OUI_FROM_DATABASE=Wistron InfoComm(Kunshan)Co.,Ltd.
OUI:48365F*
ID_OUI_FROM_DATABASE=Wintecronics Ltd.
+OUI:483871*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:483974*
ID_OUI_FROM_DATABASE=Proware Technologies Co., Ltd.
OUI:4851C5*
ID_OUI_FROM_DATABASE=Intel Corporate
+OUI:4851CF*
+ ID_OUI_FROM_DATABASE=Intelbras
+
OUI:485261*
ID_OUI_FROM_DATABASE=SOREEL
OUI:486834*
ID_OUI_FROM_DATABASE=Silicon Motion, Inc.
+OUI:48684A*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
OUI:486B2C*
ID_OUI_FROM_DATABASE=BBK EDUCATIONAL ELECTRONICS CORP.,LTD.
OUI:487746*
ID_OUI_FROM_DATABASE=Calix Inc.
+OUI:48785E*
+ ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
+
OUI:48794D*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
OUI:487D2E*
ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
+OUI:487E48*
+ ID_OUI_FROM_DATABASE=Earda Technologies co Ltd
+
OUI:488244*
ID_OUI_FROM_DATABASE=Life Fitness / Div. of Brunswick
OUI:48881E*
ID_OUI_FROM_DATABASE=EthoSwitch LLC
+OUI:488899*
+ ID_OUI_FROM_DATABASE=Shenzhen SuperElectron Technology Co.,Ltd.
+
OUI:4888CA*
ID_OUI_FROM_DATABASE=Motorola (Wuhan) Mobility Technologies Communication Co., Ltd.
OUI:48B253*
ID_OUI_FROM_DATABASE=Marketaxess Corporation
+OUI:48B25D*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:48B5A7*
ID_OUI_FROM_DATABASE=Glory Horse Industries Ltd.
OUI:4C57CA*
ID_OUI_FROM_DATABASE=Apple, Inc.
+OUI:4C5D3C*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
OUI:4C5DCD*
ID_OUI_FROM_DATABASE=Oy Finnish Electric Vehicle Technologies Ltd
OUI:4C60DE*
ID_OUI_FROM_DATABASE=NETGEAR
+OUI:4C617E*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:4C6255*
ID_OUI_FROM_DATABASE=SANMINA-SCI SYSTEM DE MEXICO S.A. DE C.V.
OUI:4C774F*
ID_OUI_FROM_DATABASE=Embedded Wireless Labs
+OUI:4C7766*
+ ID_OUI_FROM_DATABASE=SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.
+
OUI:4C776D*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
OUI:4C7897*
ID_OUI_FROM_DATABASE=Arrowhead Alarm Products Ltd
+OUI:4C796E*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
OUI:4C79BA*
ID_OUI_FROM_DATABASE=Intel Corporate
OUI:4CB8B5*
ID_OUI_FROM_DATABASE=Shenzhen YOUHUA Technology Co., Ltd
+OUI:4CB910*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:4CB911*
ID_OUI_FROM_DATABASE=Raisecom Technology CO.,LTD
OUI:4CF19E*
ID_OUI_FROM_DATABASE=Groupe Atlantic
+OUI:4CF202*
+ ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
+
OUI:4CF2BF*
ID_OUI_FROM_DATABASE=Cambridge Industries(Group) Co.,Ltd.
OUI:5041B9*
ID_OUI_FROM_DATABASE=I-O DATA DEVICE,INC.
+OUI:504348*
+ ID_OUI_FROM_DATABASE=ThingsMatrix Inc.
+
OUI:5043B9*
ID_OUI_FROM_DATABASE=OktoInform RUS
OUI:509551*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+OUI:509707*
+ ID_OUI_FROM_DATABASE=Xiamen Paperang Technology Co.,Ltd.
+
OUI:509744*
ID_OUI_FROM_DATABASE=Integrated Device Technology (Malaysia) Sdn. Bhd.
OUI:509772*
ID_OUI_FROM_DATABASE=Westinghouse Digital
+OUI:509839*
+ ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
+
OUI:509871*
ID_OUI_FROM_DATABASE=Inventum Technologies Private Limited
OUI:5098F3*
ID_OUI_FROM_DATABASE=Rheem Australia Pty Ltd
+OUI:509A46*
+ ID_OUI_FROM_DATABASE=Safetrust Inc
+
OUI:509A4C*
ID_OUI_FROM_DATABASE=Dell Inc.
OUI:50ADD5*
ID_OUI_FROM_DATABASE=Dynalec Corporation
+OUI:50AE86*
+ ID_OUI_FROM_DATABASE=Linkintec Co., Ltd
+
OUI:50AF4D*
ID_OUI_FROM_DATABASE=zte corporation
OUI:50C271*
ID_OUI_FROM_DATABASE=SECURETECH INC
+OUI:50C2ED*
+ ID_OUI_FROM_DATABASE=GN Audio A/S
+
OUI:50C3A2*
ID_OUI_FROM_DATABASE=nFore Technology Co.,Ltd.
OUI:50E14A*
ID_OUI_FROM_DATABASE=Private
+OUI:50E24E*
+ ID_OUI_FROM_DATABASE=zte corporation
+
OUI:50E549*
ID_OUI_FROM_DATABASE=GIGA-BYTE TECHNOLOGY CO.,LTD.
OUI:50F43C*
ID_OUI_FROM_DATABASE=Leeo Inc
+OUI:50F4EB*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:50F520*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
OUI:540E2D*
ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd.
+OUI:540E58*
+ ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+
OUI:541031*
ID_OUI_FROM_DATABASE=SMARTO
OUI:541473*
ID_OUI_FROM_DATABASE=Wingtech Group (HongKong)Limited
+OUI:5414F3*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
OUI:5414FD*
ID_OUI_FROM_DATABASE=Orbbec 3D Technology International
OUI:5448E6*
ID_OUI_FROM_DATABASE=Beijing Xiaomi Mobile Software Co., Ltd
+OUI:5449DF*
+ ID_OUI_FROM_DATABASE=Peloton Interactive, Inc
+
OUI:544A00*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
OUI:54724F*
ID_OUI_FROM_DATABASE=Apple, Inc.
+OUI:54725E*
+ ID_OUI_FROM_DATABASE=UNIONMAN TECHNOLOGY CO.,LTD
+
OUI:547398*
ID_OUI_FROM_DATABASE=Toyo Electronics Corporation
OUI:54E4BD*
ID_OUI_FROM_DATABASE=FN-LINK TECHNOLOGY LIMITED
+OUI:54E61B*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:54E63F*
ID_OUI_FROM_DATABASE=ShenZhen LingKeWeiEr Technology Co., Ltd.
OUI:54F6C5*
ID_OUI_FROM_DATABASE=FUJIAN STAR-NET COMMUNICATION CO.,LTD
+OUI:54F6E2*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:54F876*
ID_OUI_FROM_DATABASE=ABB AG
OUI:58108C*
ID_OUI_FROM_DATABASE=Intelbras
+OUI:5810B7*
+ ID_OUI_FROM_DATABASE=Infinix mobility limited
+
OUI:581243*
ID_OUI_FROM_DATABASE=AcSiP Technology Corp.
OUI:583526*
ID_OUI_FROM_DATABASE=DEEPLET TECHNOLOGY CORP
+OUI:58356B*
+ ID_OUI_FROM_DATABASE=TECNO MOBILE LIMITED
+
OUI:5835D9*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
OUI:584498*
ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
+OUI:58454C*
+ ID_OUI_FROM_DATABASE=Ericsson AB
+
OUI:58468F*
ID_OUI_FROM_DATABASE=Koncar Electronics and Informatics
OUI:5855CA*
ID_OUI_FROM_DATABASE=Apple, Inc.
+OUI:5856C2*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:5856E8*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
OUI:586B14*
ID_OUI_FROM_DATABASE=Apple, Inc.
+OUI:586C25*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
OUI:586D8F*
ID_OUI_FROM_DATABASE=Cisco-Linksys, LLC
OUI:5894A2*
ID_OUI_FROM_DATABASE=KETEK GmbH
+OUI:5894AE*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:5894B2*
ID_OUI_FROM_DATABASE=BrainCo
OUI:58AEA8*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+OUI:58AEF1*
+ ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD
+
OUI:58B035*
ID_OUI_FROM_DATABASE=Apple, Inc.
OUI:58D349*
ID_OUI_FROM_DATABASE=Apple, Inc.
+OUI:58D391*
+ ID_OUI_FROM_DATABASE=Quectel Wireless Solutions Co., Ltd.
+
OUI:58D50A*
ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd.
OUI:58FB84*
ID_OUI_FROM_DATABASE=Intel Corporate
+OUI:58FB96*
+ ID_OUI_FROM_DATABASE=Ruckus Wireless
+
+OUI:58FC20*
+ ID_OUI_FROM_DATABASE=Altice Labs S.A.
+
OUI:58FC73*
ID_OUI_FROM_DATABASE=Arria Live Media, Inc.
ID_OUI_FROM_DATABASE=Private
OUI:58FD20*
- ID_OUI_FROM_DATABASE=Bravida Sakerhet AB
+ ID_OUI_FROM_DATABASE=Systemhouse Solutions AB
OUI:58FDB1*
ID_OUI_FROM_DATABASE=LG Electronics
OUI:5C16C7*
ID_OUI_FROM_DATABASE=Big Switch Networks
+OUI:5C1720*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:5C1737*
ID_OUI_FROM_DATABASE=I-View Now, LLC.
OUI:5C6199*
ID_OUI_FROM_DATABASE=CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.
+OUI:5C625A*
+ ID_OUI_FROM_DATABASE=CANON INC.
+
OUI:5C63BF*
ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
OUI:5C647A*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+OUI:5C648E*
+ ID_OUI_FROM_DATABASE=Zyxel Communications Corporation
+
OUI:5C666C*
ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
OUI:5CAF06*
ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
+OUI:5CB00A*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:5CB066*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
OUI:6014B3*
ID_OUI_FROM_DATABASE=CyberTAN Technology Inc.
+OUI:6015920*
+ ID_OUI_FROM_DATABASE=S Labs sp. z o.o.
+
+OUI:6015921*
+ ID_OUI_FROM_DATABASE=RTDS Technologies Inc.
+
+OUI:6015922*
+ ID_OUI_FROM_DATABASE=EDA Technology Co.,LTD
+
+OUI:6015923*
+ ID_OUI_FROM_DATABASE=OSI TECHNOLOGY CO.,LTD.
+
+OUI:6015924*
+ ID_OUI_FROM_DATABASE=Zaptec
+
+OUI:6015926*
+ ID_OUI_FROM_DATABASE=BEIJING KUANGSHI TECHNOLOGY CO., LTD
+
+OUI:6015927*
+ ID_OUI_FROM_DATABASE=Faster CZ spol. s r.o.
+
+OUI:6015928*
+ ID_OUI_FROM_DATABASE=Yangzhou Wanfang Electronic Technology,CO .,Ltd.
+
+OUI:6015929*
+ ID_OUI_FROM_DATABASE=JIANGSU SUNFY TECHNOLOGIES HOLDING CO.,LTD.
+
+OUI:601592A*
+ ID_OUI_FROM_DATABASE=insensiv GmbH
+
+OUI:601592B*
+ ID_OUI_FROM_DATABASE=Annapurna labs
+
+OUI:601592C*
+ ID_OUI_FROM_DATABASE=PSS Co., Ltd
+
+OUI:601592D*
+ ID_OUI_FROM_DATABASE=REMOWIRELESS COMMUNICATION INTERNATIONAL CO.,LIMITED
+
+OUI:601592E*
+ ID_OUI_FROM_DATABASE=Annapurna labs
+
OUI:6015C7*
ID_OUI_FROM_DATABASE=IdaTech
OUI:601888*
ID_OUI_FROM_DATABASE=zte corporation
+OUI:601895*
+ ID_OUI_FROM_DATABASE=Dell Inc.
+
OUI:60190C*
ID_OUI_FROM_DATABASE=RRAMAC
OUI:605718*
ID_OUI_FROM_DATABASE=Intel Corporate
+OUI:60577D*
+ ID_OUI_FROM_DATABASE=eero inc.
+
OUI:605BB4*
ID_OUI_FROM_DATABASE=AzureWave Technology Inc.
+OUI:605E4F*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:605F8D*
ID_OUI_FROM_DATABASE=eero inc.
OUI:60A44C*
ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
+OUI:60A4B7*
+ ID_OUI_FROM_DATABASE=TP-Link Corporation Limited
+
OUI:60A4D0*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
OUI:60A730*
ID_OUI_FROM_DATABASE=Shenzhen Yipinfang Internet Technology Co.,Ltd
+OUI:60A751*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:60A8FE*
ID_OUI_FROM_DATABASE=Nokia Solutions and Networks GmbH & Co. KG
OUI:60C5AD*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:60C5E6*
+ ID_OUI_FROM_DATABASE=Skullcandy
+
OUI:60C658*
ID_OUI_FROM_DATABASE=PHYTRONIX Co.,Ltd.
OUI:6405E9*
ID_OUI_FROM_DATABASE=Shenzhen WayOS Technology Crop., Ltd.
+OUI:6407F6*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
OUI:64094C*
ID_OUI_FROM_DATABASE=Beijing Superbee Wireless Technology Co.,Ltd
OUI:640BD7*
ID_OUI_FROM_DATABASE=Apple, Inc.
+OUI:640D22*
+ ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
+
OUI:640DCE*
ID_OUI_FROM_DATABASE=SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.
OUI:6416F0*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+OUI:641759*
+ ID_OUI_FROM_DATABASE=Intellivision Holdings, LLC
+
OUI:641A22*
ID_OUI_FROM_DATABASE=Heliospectra AB
OUI:642737*
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+OUI:642753*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:6429ED*
ID_OUI_FROM_DATABASE=AO PKK Milandr
OUI:64628A*
ID_OUI_FROM_DATABASE=evon GmbH
+OUI:64644A*
+ ID_OUI_FROM_DATABASE=Beijing Xiaomi Mobile Software Co., Ltd
+
OUI:64649B*
ID_OUI_FROM_DATABASE=Juniper Networks
OUI:646E97*
ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
+OUI:646EE0*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
OUI:646EEA*
ID_OUI_FROM_DATABASE=Iskratel d.o.o.
OUI:6479A7*
ID_OUI_FROM_DATABASE=Phison Electronics Corp.
+OUI:6479F0*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
OUI:647BCE*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
OUI:64956C*
ID_OUI_FROM_DATABASE=LG Electronics
+OUI:649714*
+ ID_OUI_FROM_DATABASE=eero inc.
+
OUI:649829*
ID_OUI_FROM_DATABASE=Integrated Device Technology (Malaysia) Sdn. Bhd.
OUI:64E003*
ID_OUI_FROM_DATABASE=Hui Zhou Gaoshengda Technology Co.,LTD
+OUI:64E0AB*
+ ID_OUI_FROM_DATABASE=UNIONMAN TECHNOLOGY CO.,LTD
+
OUI:64E161*
ID_OUI_FROM_DATABASE=DEP Corp.
OUI:682C7B*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+OUI:682D83*
+ ID_OUI_FROM_DATABASE=SHENZHEN DINGHE COMMUNICATION COMPANY
+
OUI:682DDC*
ID_OUI_FROM_DATABASE=Wuhan Changjiang Electro-Communication Equipment CO.,LTD
OUI:689E19*
ID_OUI_FROM_DATABASE=Texas Instruments
+OUI:689E6A*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:689FF0*
ID_OUI_FROM_DATABASE=zte corporation
OUI:6C1A75*
ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+OUI:6C1B3F*
+ ID_OUI_FROM_DATABASE=MiraeSignal Co., Ltd
+
OUI:6C1C71*
ID_OUI_FROM_DATABASE=Zhejiang Dahua Technology Co., Ltd.
OUI:6C25B9*
ID_OUI_FROM_DATABASE=BBK EDUCATIONAL ELECTRONICS CORP.,LTD.
+OUI:6C2636*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:6C2779*
ID_OUI_FROM_DATABASE=Microsoft Mobile Oy
OUI:6C33A9*
ID_OUI_FROM_DATABASE=Magicjack LP
+OUI:6C3491*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:6C3838*
ID_OUI_FROM_DATABASE=Marking System Technology Co., Ltd.
OUI:6C4598*
ID_OUI_FROM_DATABASE=Antex Electronic Corp.
+OUI:6C4760*
+ ID_OUI_FROM_DATABASE=Sunitec Enterprise Co.,Ltd
+
OUI:6C49C1*
ID_OUI_FROM_DATABASE=o2ones Co., Ltd.
OUI:6C55E8*
ID_OUI_FROM_DATABASE=Technicolor CH USA Inc.
+OUI:6C5640*
+ ID_OUI_FROM_DATABASE=BLU Products Inc
+
OUI:6C5697*
ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
OUI:6CD2BA*
ID_OUI_FROM_DATABASE=zte corporation
+OUI:6CD630*
+ ID_OUI_FROM_DATABASE=Rootous System Co.,Ltd
+
OUI:6CD68A*
ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
OUI:6CFDB9*
ID_OUI_FROM_DATABASE=Proware Technologies Co Ltd.
+OUI:6CFE54*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
OUI:6CFFBE*
ID_OUI_FROM_DATABASE=MPB Communications Inc.
OUI:70B3D5003*
ID_OUI_FROM_DATABASE=ANYROAM
+OUI:70B3D5004*
+ ID_OUI_FROM_DATABASE=LEIDOS
+
OUI:70B3D5005*
ID_OUI_FROM_DATABASE=CT Company
OUI:70B3D502B*
ID_OUI_FROM_DATABASE=Scorpion Precision Industry (HK)CO. Ltd.
+OUI:70B3D502C*
+ ID_OUI_FROM_DATABASE=Iylus Inc.
+
OUI:70B3D502D*
ID_OUI_FROM_DATABASE=NEXTtec srl
OUI:70B3D5035*
ID_OUI_FROM_DATABASE=HKW-Elektronik GmbH
+OUI:70B3D5036*
+ ID_OUI_FROM_DATABASE=PARAGON ID
+
OUI:70B3D5037*
ID_OUI_FROM_DATABASE=EIFFAGE ENERGIE ELECTRONIQUE
OUI:70B3D50E3*
ID_OUI_FROM_DATABASE=SinTau SrL
+OUI:70B3D50E4*
+ ID_OUI_FROM_DATABASE=Walter Müller AG
+
OUI:70B3D50E5*
ID_OUI_FROM_DATABASE=Delta Solutions LLC
OUI:70B3D50FC*
ID_OUI_FROM_DATABASE=vitalcare
+OUI:70B3D50FD*
+ ID_OUI_FROM_DATABASE=JSC Ural Factories
+
OUI:70B3D50FE*
ID_OUI_FROM_DATABASE=Vocality International Ltd
OUI:70B3D5127*
ID_OUI_FROM_DATABASE=VITEC
+OUI:70B3D5128*
+ ID_OUI_FROM_DATABASE=Akse srl
+
OUI:70B3D5129*
ID_OUI_FROM_DATABASE=OOO Microlink-Svyaz
OUI:70B3D515F*
ID_OUI_FROM_DATABASE=SAVRONÄ°K ELEKTRONÄ°K
+OUI:70B3D5160*
+ ID_OUI_FROM_DATABASE=European Synchrotron Radiation Facility
+
OUI:70B3D5161*
ID_OUI_FROM_DATABASE=MB connect line GmbH Fernwartungssysteme
OUI:70B3D516C*
ID_OUI_FROM_DATABASE=OCEAN
+OUI:70B3D516D*
+ ID_OUI_FROM_DATABASE=BluB0X Security, Inc.
+
OUI:70B3D516E*
ID_OUI_FROM_DATABASE=Jemac Sweden AB
OUI:70B3D5195*
ID_OUI_FROM_DATABASE=Ci4Rail
+OUI:70B3D5196*
+ ID_OUI_FROM_DATABASE=YUYAMA MFG Co.,Ltd
+
OUI:70B3D5197*
ID_OUI_FROM_DATABASE=Lattech Systems Pty Ltd
OUI:70B3D519C*
ID_OUI_FROM_DATABASE=Kubu, Inc.
+OUI:70B3D519D*
+ ID_OUI_FROM_DATABASE=Automata GmbH & Co. KG
+
OUI:70B3D519E*
ID_OUI_FROM_DATABASE=J-Factor Embedded Technologies
OUI:70B3D51AD*
ID_OUI_FROM_DATABASE=Techworld Industries Ltd
+OUI:70B3D51AE*
+ ID_OUI_FROM_DATABASE=EcoG
+
OUI:70B3D51AF*
ID_OUI_FROM_DATABASE=Teenage Engineering AB
+OUI:70B3D51B0*
+ ID_OUI_FROM_DATABASE=NAL Research Corporation
+
OUI:70B3D51B1*
ID_OUI_FROM_DATABASE=Shanghai Danyan Information Technology Co., Ltd.
OUI:70B3D5211*
ID_OUI_FROM_DATABASE=Fracarro srl
+OUI:70B3D5212*
+ ID_OUI_FROM_DATABASE=Semiconsoft, inc
+
OUI:70B3D5213*
ID_OUI_FROM_DATABASE=ETON Deutschland Electro Acoustic GmbH
OUI:70B3D5264*
ID_OUI_FROM_DATABASE=ifak technology + service GmbH
+OUI:70B3D5265*
+ ID_OUI_FROM_DATABASE=Rapiot
+
OUI:70B3D5266*
ID_OUI_FROM_DATABASE=Spectra Displays Ltd
OUI:70B3D52C4*
ID_OUI_FROM_DATABASE=Hodwa Co., Ltd
+OUI:70B3D52C5*
+ ID_OUI_FROM_DATABASE=MECT SRL
+
OUI:70B3D52C7*
ID_OUI_FROM_DATABASE=Worldsensing
OUI:70B3D52E3*
ID_OUI_FROM_DATABASE=Meiknologic GmbH
+OUI:70B3D52E4*
+ ID_OUI_FROM_DATABASE=Schneider Electric Motion USA
+
OUI:70B3D52E5*
ID_OUI_FROM_DATABASE=Fläkt Woods AB
OUI:70B3D5311*
ID_OUI_FROM_DATABASE=Günther Spelsberg GmbH + Co. KG
+OUI:70B3D5312*
+ ID_OUI_FROM_DATABASE=SMITEC S.p.A.
+
OUI:70B3D5313*
ID_OUI_FROM_DATABASE=DIEHL Controls
+OUI:70B3D5314*
+ ID_OUI_FROM_DATABASE=Grau Elektronik GmbH
+
OUI:70B3D5316*
ID_OUI_FROM_DATABASE=Austco Marketing & Service (USA) ltd.
OUI:70B3D5372*
ID_OUI_FROM_DATABASE=MATELEX
+OUI:70B3D5373*
+ ID_OUI_FROM_DATABASE=Hangzhou Weimu Technology Co.,Ltd.
+
OUI:70B3D5374*
ID_OUI_FROM_DATABASE=OOO NPP Mars-Energo
OUI:70B3D538F*
ID_OUI_FROM_DATABASE=Sorynorydotcom Inc
+OUI:70B3D5390*
+ ID_OUI_FROM_DATABASE=TEX COMPUTER SRL
+
OUI:70B3D5391*
ID_OUI_FROM_DATABASE=Changshu Ruite Electric Co.,Ltd.
OUI:70B3D53B2*
ID_OUI_FROM_DATABASE=Sicon srl
+OUI:70B3D53B3*
+ ID_OUI_FROM_DATABASE=Movicom Electric LLC
+
OUI:70B3D53B4*
ID_OUI_FROM_DATABASE=YOUSUNG
OUI:70B3D53DB*
ID_OUI_FROM_DATABASE=KST technology
+OUI:70B3D53DC*
+ ID_OUI_FROM_DATABASE=XIA LLC
+
OUI:70B3D53DD*
ID_OUI_FROM_DATABASE=Kniggendorf + Kögler Security GmbH
OUI:70B3D544B*
ID_OUI_FROM_DATABASE=Open System Solutions Limited
+OUI:70B3D544C*
+ ID_OUI_FROM_DATABASE=ejoin, s.r.o.
+
OUI:70B3D544D*
ID_OUI_FROM_DATABASE=Vessel Technology Ltd
OUI:70B3D544F*
ID_OUI_FROM_DATABASE=Velvac Incorporated
+OUI:70B3D5452*
+ ID_OUI_FROM_DATABASE=ITALIANA PONTI RADIO SRL
+
OUI:70B3D5453*
ID_OUI_FROM_DATABASE=Foerster-Technik GmbH
OUI:70B3D546C*
ID_OUI_FROM_DATABASE=SHANGHAI CHENZHU INSTRUMENT CO., LTD.
+OUI:70B3D546D*
+ ID_OUI_FROM_DATABASE=Guan Show Technologe Co., Ltd.
+
OUI:70B3D546E*
ID_OUI_FROM_DATABASE=Zamir Recognition Systems Ltd.
ID_OUI_FROM_DATABASE=KeyProd
OUI:70B3D5474*
- ID_OUI_FROM_DATABASE=DAYOUPLUS
+ ID_OUI_FROM_DATABASE=CTROGERS LLC
OUI:70B3D5475*
ID_OUI_FROM_DATABASE=EWATTCH
OUI:70B3D54D8*
ID_OUI_FROM_DATABASE=Versilis Inc.
+OUI:70B3D54D9*
+ ID_OUI_FROM_DATABASE=Coda Octopus Products Limited
+
OUI:70B3D54DA*
ID_OUI_FROM_DATABASE=Private
OUI:70B3D54FA*
ID_OUI_FROM_DATABASE=Thruvision Limited
+OUI:70B3D54FB*
+ ID_OUI_FROM_DATABASE=MAS Elettronica sas di Mascetti Sandro e C.
+
OUI:70B3D54FC*
ID_OUI_FROM_DATABASE=Mettler Toledo
OUI:70B3D550A*
ID_OUI_FROM_DATABASE=AMEDTEC Medizintechnik Aue GmbH
+OUI:70B3D550B*
+ ID_OUI_FROM_DATABASE=Nordson Corporation
+
OUI:70B3D550C*
ID_OUI_FROM_DATABASE=Hangzhou landesker digital technology co. LTD
OUI:70B3D551F*
ID_OUI_FROM_DATABASE=VALEO CDA
+OUI:70B3D5520*
+ ID_OUI_FROM_DATABASE=promedias AG
+
OUI:70B3D5521*
ID_OUI_FROM_DATABASE=Selex ES Inc.
OUI:70B3D5580*
ID_OUI_FROM_DATABASE=Private
+OUI:70B3D5581*
+ ID_OUI_FROM_DATABASE=Thermokon Sensortechnik GmbH
+
OUI:70B3D5582*
ID_OUI_FROM_DATABASE=VAGLER International Sdn Bhd
OUI:70B3D5585*
ID_OUI_FROM_DATABASE=Nefteavtomatika
+OUI:70B3D5586*
+ ID_OUI_FROM_DATABASE=Aliter Technologies
+
OUI:70B3D5587*
ID_OUI_FROM_DATABASE=INCAA Computers
OUI:70B3D559E*
ID_OUI_FROM_DATABASE=i2-electronics
+OUI:70B3D559F*
+ ID_OUI_FROM_DATABASE=Megger Germany GmbH
+
OUI:70B3D55A0*
ID_OUI_FROM_DATABASE=Ascon Tecnologic S.r.l.
OUI:70B3D55B6*
ID_OUI_FROM_DATABASE=Ethical Lighting and Sensor Solutions Limited
+OUI:70B3D55B7*
+ ID_OUI_FROM_DATABASE=on-systems limited
+
OUI:70B3D55B8*
ID_OUI_FROM_DATABASE=Hella Gutmann Solutions GmbH
+OUI:70B3D55B9*
+ ID_OUI_FROM_DATABASE=EIZO RUGGED SOLUTIONS
+
OUI:70B3D55BA*
ID_OUI_FROM_DATABASE=INFRASAFE/ ADVANTOR SYSTEMS
OUI:70B3D55C1*
ID_OUI_FROM_DATABASE=Shanghai JaWay Information Technology Co., Ltd.
+OUI:70B3D55C2*
+ ID_OUI_FROM_DATABASE=Sono-Tek Corporation
+
+OUI:70B3D55C3*
+ ID_OUI_FROM_DATABASE=DIC Corporation
+
OUI:70B3D55C4*
ID_OUI_FROM_DATABASE=TATTILE SRL
OUI:70B3D5603*
ID_OUI_FROM_DATABASE=EGISTECH CO.,LTD.
+OUI:70B3D5604*
+ ID_OUI_FROM_DATABASE=Foxtrot Research Corp
+
OUI:70B3D5605*
ID_OUI_FROM_DATABASE=Aplex Technology Inc.
OUI:70B3D563C*
ID_OUI_FROM_DATABASE=Pivothead
+OUI:70B3D563D*
+ ID_OUI_FROM_DATABASE=Topic Embedded Products B.V.
+
OUI:70B3D563E*
ID_OUI_FROM_DATABASE=RIKEN OPTECH CORPORATION
OUI:70B3D566D*
ID_OUI_FROM_DATABASE=Sanmina Israel
+OUI:70B3D566E*
+ ID_OUI_FROM_DATABASE=SIAME
+
OUI:70B3D566F*
ID_OUI_FROM_DATABASE=Simplified MFG
OUI:70B3D5680*
ID_OUI_FROM_DATABASE=BASF Corporation
+OUI:70B3D5681*
+ ID_OUI_FROM_DATABASE=DEUTA-WERKE GmbH
+
OUI:70B3D5682*
ID_OUI_FROM_DATABASE=Rosslare Enterprises Limited
OUI:70B3D568F*
ID_OUI_FROM_DATABASE=PEEK TRAFFIC
+OUI:70B3D5690*
+ ID_OUI_FROM_DATABASE=Sicon srl
+
OUI:70B3D5691*
ID_OUI_FROM_DATABASE=PEEK TRAFFIC
ID_OUI_FROM_DATABASE=Altaneos
OUI:70B3D569B*
- ID_OUI_FROM_DATABASE=TAIYO SEIKI CO.,LTD.
+ ID_OUI_FROM_DATABASE=Horizon Co., Ltd
OUI:70B3D569C*
ID_OUI_FROM_DATABASE=Keepen
OUI:70B3D56B3*
ID_OUI_FROM_DATABASE=DuraComm Corporation
+OUI:70B3D56B4*
+ ID_OUI_FROM_DATABASE=Nudron IoT Solutions LLP
+
OUI:70B3D56B5*
ID_OUI_FROM_DATABASE=ART SPA
OUI:70B3D56BF*
ID_OUI_FROM_DATABASE=Otto Bihler Maschinenfabrik GmbH & Co. KG
+OUI:70B3D56C0*
+ ID_OUI_FROM_DATABASE=LLC NTZ Mekhanotronika
+
OUI:70B3D56C1*
ID_OUI_FROM_DATABASE=Labtronik s.r.l.
OUI:70B3D56D3*
ID_OUI_FROM_DATABASE=DEUTA-WERKE GmbH
+OUI:70B3D56D4*
+ ID_OUI_FROM_DATABASE=Telerob Gesellschaft für Fernhantierungs
+
+OUI:70B3D56D5*
+ ID_OUI_FROM_DATABASE=Potter Electric Signal Co. LLC
+
OUI:70B3D56D6*
ID_OUI_FROM_DATABASE=KMtronic ltd
OUI:70B3D570C*
ID_OUI_FROM_DATABASE=Potter Electric Signal Co. LLC
+OUI:70B3D570D*
+ ID_OUI_FROM_DATABASE=OMNISENSING PHOTONICS LLC
+
OUI:70B3D570E*
ID_OUI_FROM_DATABASE=Wuhan Xingtuxinke ELectronic Co.,Ltd
OUI:70B3D5712*
ID_OUI_FROM_DATABASE=APG Cash Drawer, LLC
+OUI:70B3D5713*
+ ID_OUI_FROM_DATABASE=Coloet S.r.l.
+
OUI:70B3D5714*
ID_OUI_FROM_DATABASE=Alturna Networks
OUI:70B3D5719*
ID_OUI_FROM_DATABASE=2M Technology
+OUI:70B3D571A*
+ ID_OUI_FROM_DATABASE=MB connect line GmbH Fernwartungssysteme
+
OUI:70B3D571B*
ID_OUI_FROM_DATABASE=elsys
ID_OUI_FROM_DATABASE=Motec Pty Ltd
OUI:70B3D5720*
- ID_OUI_FROM_DATABASE=Private
+ ID_OUI_FROM_DATABASE=Jeio Tech
OUI:70B3D5721*
ID_OUI_FROM_DATABASE=Zoe Medical
OUI:70B3D5724*
ID_OUI_FROM_DATABASE=Quan International Co., Ltd.
+OUI:70B3D5725*
+ ID_OUI_FROM_DATABASE=Swiss Timing LTD
+
OUI:70B3D5726*
ID_OUI_FROM_DATABASE=ATGS
OUI:70B3D572A*
ID_OUI_FROM_DATABASE=MRC Systems GmbH
+OUI:70B3D572B*
+ ID_OUI_FROM_DATABASE=Medipense Inc.
+
OUI:70B3D572C*
ID_OUI_FROM_DATABASE=NuRi&G Engineering co,.Ltd.
OUI:70B3D5745*
ID_OUI_FROM_DATABASE=TMSI LLC
+OUI:70B3D5746*
+ ID_OUI_FROM_DATABASE=Smart Systems LLC
+
OUI:70B3D5747*
ID_OUI_FROM_DATABASE=Eva Automation
OUI:70B3D5797*
ID_OUI_FROM_DATABASE=Mitsubishi Electric India Pvt. Ltd.
+OUI:70B3D5798*
+ ID_OUI_FROM_DATABASE=TIAMA
+
OUI:70B3D5799*
ID_OUI_FROM_DATABASE=Vitec System Engineering Inc.
OUI:70B3D57CB*
ID_OUI_FROM_DATABASE=KeyW Corporation
+OUI:70B3D57CC*
+ ID_OUI_FROM_DATABASE=MITSUBISHI HEAVY INDUSTRIES THERMAL SYSTEMS, LTD.
+
OUI:70B3D57CD*
ID_OUI_FROM_DATABASE=Molekuler Goruntuleme A.S.
OUI:70B3D57F5*
ID_OUI_FROM_DATABASE=Incusense
+OUI:70B3D57F6*
+ ID_OUI_FROM_DATABASE=IDZ Ltd
+
OUI:70B3D57F7*
ID_OUI_FROM_DATABASE=JASCO Applied Sciences Canada Ltd
OUI:70B3D57F9*
ID_OUI_FROM_DATABASE=Communication Systems Solutions
+OUI:70B3D57FA*
+ ID_OUI_FROM_DATABASE=meoENERGY
+
OUI:70B3D57FB*
ID_OUI_FROM_DATABASE=db Broadcast Products Ltd
OUI:70B3D5811*
ID_OUI_FROM_DATABASE=CJSC «INTERSET»
+OUI:70B3D5812*
+ ID_OUI_FROM_DATABASE=TESCAN Brno, s.r.o.
+
OUI:70B3D5813*
ID_OUI_FROM_DATABASE=Wavemed srl
OUI:70B3D5828*
ID_OUI_FROM_DATABASE=Xacti Corporation
+OUI:70B3D5829*
+ ID_OUI_FROM_DATABASE=Guan Show Technologe Co., Ltd.
+
OUI:70B3D582A*
ID_OUI_FROM_DATABASE=C W F Hamilton & Co Ltd
OUI:70B3D58C8*
ID_OUI_FROM_DATABASE=KRONOTECH SRL
+OUI:70B3D58C9*
+ ID_OUI_FROM_DATABASE=Arwin Technology Limited
+
OUI:70B3D58CA*
ID_OUI_FROM_DATABASE=Allied Data Systems
OUI:70B3D58E4*
ID_OUI_FROM_DATABASE=Aplex Technology Inc.
+OUI:70B3D58E5*
+ ID_OUI_FROM_DATABASE=Shanghai Armour Technology Co., Ltd.
+
OUI:70B3D58E6*
ID_OUI_FROM_DATABASE=Mothonic AB
OUI:70B3D58E8*
ID_OUI_FROM_DATABASE=PREO INDUSTRIES FAR EAST LTD
+OUI:70B3D58E9*
+ ID_OUI_FROM_DATABASE=COONTROL Tecnologia em Combustão LTDA EPP
+
OUI:70B3D58EA*
ID_OUI_FROM_DATABASE=JLCooper Electronics
OUI:70B3D58FC*
ID_OUI_FROM_DATABASE=Mianjie Technology
+OUI:70B3D58FD*
+ ID_OUI_FROM_DATABASE=sonatest
+
OUI:70B3D58FE*
ID_OUI_FROM_DATABASE=Selmatec AS
OUI:70B3D5911*
ID_OUI_FROM_DATABASE=Equatel
+OUI:70B3D5912*
+ ID_OUI_FROM_DATABASE=VERTEL DIGITAL PRIVATE LIMITED
+
OUI:70B3D5913*
ID_OUI_FROM_DATABASE=Shenzhen Riitek Technology Co.,Ltd
OUI:70B3D5914*
ID_OUI_FROM_DATABASE=Contec Americas Inc.
+OUI:70B3D5915*
+ ID_OUI_FROM_DATABASE=DHK Storage, LLC
+
OUI:70B3D5916*
ID_OUI_FROM_DATABASE=Techno Mathematical Co.,Ltd
OUI:70B3D5927*
ID_OUI_FROM_DATABASE=LG Electronics
+OUI:70B3D5928*
+ ID_OUI_FROM_DATABASE=Done Design Inc
+
OUI:70B3D5929*
ID_OUI_FROM_DATABASE=OutSys
OUI:70B3D596B*
ID_OUI_FROM_DATABASE=FOCAL-JMLab
+OUI:70B3D596C*
+ ID_OUI_FROM_DATABASE=Weble SÃ rl
+
OUI:70B3D596D*
ID_OUI_FROM_DATABASE=MSB Elektronik und Gerätebau GmbH
OUI:70B3D59BB*
ID_OUI_FROM_DATABASE=Jinga-hi, Inc.
+OUI:70B3D59BC*
+ ID_OUI_FROM_DATABASE=Radian Research, Inc.
+
OUI:70B3D59BD*
ID_OUI_FROM_DATABASE=Signal Processing Devices Sweden AB
ID_OUI_FROM_DATABASE=Benchmark Electronics BV
OUI:70B3D59EE*
- ID_OUI_FROM_DATABASE=Private
+ ID_OUI_FROM_DATABASE=Lockheed Martin - THAAD
OUI:70B3D59EF*
ID_OUI_FROM_DATABASE=Cottonwood Creek Technologies, Inc.
OUI:70B3D59FE*
ID_OUI_FROM_DATABASE=SURUGA SEIKI CO., LTD.
+OUI:70B3D59FF*
+ ID_OUI_FROM_DATABASE=Network Integrity Systems
+
OUI:70B3D5A00*
ID_OUI_FROM_DATABASE=ATX NETWORKS LTD
OUI:70B3D5A01*
ID_OUI_FROM_DATABASE=FeldTech GmbH
+OUI:70B3D5A02*
+ ID_OUI_FROM_DATABASE=GreenFlux
+
OUI:70B3D5A03*
ID_OUI_FROM_DATABASE=Proemion GmbH
OUI:70B3D5A1D*
ID_OUI_FROM_DATABASE=Fluid Components International
+OUI:70B3D5A1E*
+ ID_OUI_FROM_DATABASE=Monnit Corporation
+
OUI:70B3D5A1F*
ID_OUI_FROM_DATABASE=GlobalTest LLC
ID_OUI_FROM_DATABASE=Argon ST
OUI:70B3D5A9F*
- ID_OUI_FROM_DATABASE=Private
+ ID_OUI_FROM_DATABASE=Master Meter Inc.
OUI:70B3D5AA0*
ID_OUI_FROM_DATABASE=Simple Works, Inc.
OUI:70B3D5ACF*
ID_OUI_FROM_DATABASE=APG Cash Drawer, LLC
+OUI:70B3D5AD0*
+ ID_OUI_FROM_DATABASE=REO AG
+
OUI:70B3D5AD1*
ID_OUI_FROM_DATABASE=Sensile Technologies SA
OUI:70B3D5B00*
ID_OUI_FROM_DATABASE=HORIBA ABX SAS
+OUI:70B3D5B01*
+ ID_OUI_FROM_DATABASE=G.S.D GROUP INC.
+
OUI:70B3D5B02*
ID_OUI_FROM_DATABASE=Nordic Automation Systems AS
OUI:70B3D5B11*
ID_OUI_FROM_DATABASE=CAB S.R.L.
+OUI:70B3D5B12*
+ ID_OUI_FROM_DATABASE=VTEQ
+
OUI:70B3D5B13*
ID_OUI_FROM_DATABASE=Omwave
OUI:70B3D5B4B*
ID_OUI_FROM_DATABASE=Network Customizing Technologies Inc
+OUI:70B3D5B4C*
+ ID_OUI_FROM_DATABASE=AmericanPharma Technologies
+
OUI:70B3D5B4D*
ID_OUI_FROM_DATABASE=Avidbots Corporation
OUI:70B3D5B6F*
ID_OUI_FROM_DATABASE=Integra Metering SAS
+OUI:70B3D5B70*
+ ID_OUI_FROM_DATABASE=Torion Plasma Corporation
+
OUI:70B3D5B71*
ID_OUI_FROM_DATABASE=Optiver Pty Ltd
OUI:70B3D5B78*
ID_OUI_FROM_DATABASE=HOERMANN GmbH
+OUI:70B3D5B79*
+ ID_OUI_FROM_DATABASE=Dadacon GmbH
+
OUI:70B3D5B7A*
ID_OUI_FROM_DATABASE=MAHLE
OUI:70B3D5BC7*
ID_OUI_FROM_DATABASE=Autonomic Controls, Inc.
+OUI:70B3D5BC8*
+ ID_OUI_FROM_DATABASE=Loma Systems s.r.o.
+
OUI:70B3D5BC9*
ID_OUI_FROM_DATABASE=Yite technology
OUI:70B3D5BD6*
ID_OUI_FROM_DATABASE=Consarc Corporation
+OUI:70B3D5BD7*
+ ID_OUI_FROM_DATABASE=TT Group SRL
+
OUI:70B3D5BD8*
ID_OUI_FROM_DATABASE=MB connect line GmbH Fernwartungssysteme
OUI:70B3D5C6A*
ID_OUI_FROM_DATABASE=Private
+OUI:70B3D5C6B*
+ ID_OUI_FROM_DATABASE=Herholdt Controls srl
+
OUI:70B3D5C6C*
ID_OUI_FROM_DATABASE=McQ Inc
OUI:70B3D5C9F*
ID_OUI_FROM_DATABASE=Triax A/S
+OUI:70B3D5CA0*
+ ID_OUI_FROM_DATABASE=Xirgo Technologies LLC
+
OUI:70B3D5CA1*
ID_OUI_FROM_DATABASE=Waldo System
OUI:70B3D5CA5*
ID_OUI_FROM_DATABASE=PTS Technologies Pte Ltd
+OUI:70B3D5CA6*
+ ID_OUI_FROM_DATABASE=AXING AG
+
OUI:70B3D5CA7*
ID_OUI_FROM_DATABASE=i-View Communication Inc.
OUI:70B3D5CAC*
ID_OUI_FROM_DATABASE=CRDE
+OUI:70B3D5CAD*
+ ID_OUI_FROM_DATABASE=YUYAMA MFG Co.,Ltd
+
OUI:70B3D5CAE*
ID_OUI_FROM_DATABASE=THEMA
OUI:70B3D5CB4*
ID_OUI_FROM_DATABASE=Planewave Instruments
+OUI:70B3D5CB5*
+ ID_OUI_FROM_DATABASE=Atlas Lighting Products
+
OUI:70B3D5CB6*
ID_OUI_FROM_DATABASE=Kuebrich Ingeniergesellschaft mbh & Co. KG
OUI:70B3D5CBF*
ID_OUI_FROM_DATABASE=Cubic ITS, Inc. dba GRIDSMART Technologies
+OUI:70B3D5CC0*
+ ID_OUI_FROM_DATABASE=Avionica
+
OUI:70B3D5CC1*
ID_OUI_FROM_DATABASE=BEEcube Inc.
OUI:70B3D5CDF*
ID_OUI_FROM_DATABASE=3D Printing Specialists
+OUI:70B3D5CE0*
+ ID_OUI_FROM_DATABASE=M.S. CONTROL
+
OUI:70B3D5CE1*
ID_OUI_FROM_DATABASE=EA Elektroautomatik GmbH & Co. KG
OUI:70B3D5CE7*
ID_OUI_FROM_DATABASE=June Automation Singapore Pte. Ltd.
+OUI:70B3D5CE8*
+ ID_OUI_FROM_DATABASE=Grossenbacher Systeme AG
+
OUI:70B3D5CE9*
ID_OUI_FROM_DATABASE=KINEMETRICS
OUI:70B3D5CEA*
ID_OUI_FROM_DATABASE=Computerwise, Inc.
+OUI:70B3D5CEB*
+ ID_OUI_FROM_DATABASE=Xirgo Technologies LLC
+
OUI:70B3D5CEC*
ID_OUI_FROM_DATABASE=Deltronic Security AB
OUI:70B3D5CF8*
ID_OUI_FROM_DATABASE=Idneo Technologies S.A.U.
+OUI:70B3D5CF9*
+ ID_OUI_FROM_DATABASE=Breas Medical AB
+
+OUI:70B3D5CFA*
+ ID_OUI_FROM_DATABASE=SCHEIBER
+
OUI:70B3D5CFB*
ID_OUI_FROM_DATABASE=Screen Innovations
OUI:70B3D5D03*
ID_OUI_FROM_DATABASE=Digitella Inc.
+OUI:70B3D5D04*
+ ID_OUI_FROM_DATABASE=Plenty Unlimited Inc
+
OUI:70B3D5D05*
ID_OUI_FROM_DATABASE=Colmek
OUI:70B3D5D1C*
ID_OUI_FROM_DATABASE=Specialised Imaging Limited
+OUI:70B3D5D1D*
+ ID_OUI_FROM_DATABASE=Stuyts Engineering Haarlem BV
+
OUI:70B3D5D1E*
ID_OUI_FROM_DATABASE=Houston Radar LLC
OUI:70B3D5D20*
ID_OUI_FROM_DATABASE=Rheonics GmbH
+OUI:70B3D5D21*
+ ID_OUI_FROM_DATABASE=biosilver .co.,ltd
+
OUI:70B3D5D22*
ID_OUI_FROM_DATABASE=DEK Technologies
OUI:70B3D5D2B*
ID_OUI_FROM_DATABASE=StreamPlay Oy Ltd
+OUI:70B3D5D2C*
+ ID_OUI_FROM_DATABASE=microWerk GmbH
+
OUI:70B3D5D2D*
ID_OUI_FROM_DATABASE=Evolute Systems Private Limited
OUI:70B3D5D44*
ID_OUI_FROM_DATABASE=ic-automation GmbH
+OUI:70B3D5D45*
+ ID_OUI_FROM_DATABASE=Vemco Sp. z o. o.
+
OUI:70B3D5D46*
ID_OUI_FROM_DATABASE=Contineo s.r.o.
OUI:70B3D5D51*
ID_OUI_FROM_DATABASE=Azcom Technology S.r.l.
+OUI:70B3D5D52*
+ ID_OUI_FROM_DATABASE=Sensoronic Co.,Ltd
+
OUI:70B3D5D53*
ID_OUI_FROM_DATABASE=BeiLi eTek (Zhangjiagang) Co., Ltd.
OUI:70B3D5D6C*
ID_OUI_FROM_DATABASE=GP Systems GmbH
+OUI:70B3D5D6D*
+ ID_OUI_FROM_DATABASE=ACD Elekronik GmbH
+
OUI:70B3D5D6E*
ID_OUI_FROM_DATABASE=ard sa
OUI:70B3D5D82*
ID_OUI_FROM_DATABASE=SUN ELECTRONICS CO.,LTD.
+OUI:70B3D5D83*
+ ID_OUI_FROM_DATABASE=AKASAKATEC INC.
+
OUI:70B3D5D84*
ID_OUI_FROM_DATABASE=Sentry360
OUI:70B3D5D9F*
ID_OUI_FROM_DATABASE=Digital Solutions JSC
+OUI:70B3D5DA0*
+ ID_OUI_FROM_DATABASE=Jiangsu Etern Compamy Limited
+
OUI:70B3D5DA1*
ID_OUI_FROM_DATABASE=Qprel srl
OUI:70B3D5DD9*
ID_OUI_FROM_DATABASE=MaNima Technologies BV
+OUI:70B3D5DDA*
+ ID_OUI_FROM_DATABASE=Hubbell Power Systems
+
OUI:70B3D5DDB*
ID_OUI_FROM_DATABASE=Intra Corporation
OUI:70B3D5DEA*
ID_OUI_FROM_DATABASE=Advanced Ventilation Applications, Inc.
+OUI:70B3D5DEB*
+ ID_OUI_FROM_DATABASE=DORLET SAU
+
OUI:70B3D5DEC*
ID_OUI_FROM_DATABASE=Condev-Automation GmbH
OUI:70B3D5DEE*
ID_OUI_FROM_DATABASE=CRDE
+OUI:70B3D5DEF*
+ ID_OUI_FROM_DATABASE=ISG Nordic AB
+
OUI:70B3D5DF0*
ID_OUI_FROM_DATABASE=astozi consulting Tomasz Zieba
OUI:70B3D5E18*
ID_OUI_FROM_DATABASE=Plasmapp Co.,Ltd.
+OUI:70B3D5E19*
+ ID_OUI_FROM_DATABASE=BAB TECHNOLOGIE GmbH
+
OUI:70B3D5E1A*
ID_OUI_FROM_DATABASE=BIZERBA LUCEO
OUI:70B3D5E40*
ID_OUI_FROM_DATABASE=Siemens Mobility GmbH - MO TI SPA
+OUI:70B3D5E42*
+ ID_OUI_FROM_DATABASE=Neusoft Reach Automotive Technology (Shenyang) Co.,Ltd
+
OUI:70B3D5E43*
ID_OUI_FROM_DATABASE=SL Audio A/S
OUI:70B3D5E5E*
ID_OUI_FROM_DATABASE=Critical Link LLC
+OUI:70B3D5E60*
+ ID_OUI_FROM_DATABASE=Davitor AB
+
OUI:70B3D5E61*
ID_OUI_FROM_DATABASE=Adeli
OUI:70B3D5EDF*
ID_OUI_FROM_DATABASE=GridNavigator
+OUI:70B3D5EE0*
+ ID_OUI_FROM_DATABASE=Stecomp
+
OUI:70B3D5EE1*
ID_OUI_FROM_DATABASE=allora Factory BVBA
OUI:70B3D5EEF*
ID_OUI_FROM_DATABASE=TATTILE SRL
+OUI:70B3D5EF0*
+ ID_OUI_FROM_DATABASE=PNETWORKS
+
OUI:70B3D5EF1*
ID_OUI_FROM_DATABASE=Nanotok LLC
OUI:70B3D5F1A*
ID_OUI_FROM_DATABASE=Sator Controls s.r.o.
+OUI:70B3D5F1B*
+ ID_OUI_FROM_DATABASE=RoyalShield Technologies India Private Limited
+
OUI:70B3D5F1C*
ID_OUI_FROM_DATABASE=Bavaria Digital Technik GmbH
OUI:70B3D5F25*
ID_OUI_FROM_DATABASE=JSC “Scientific Industrial Enterprise Rubin
+OUI:70B3D5F26*
+ ID_OUI_FROM_DATABASE=XJ ELECTRIC CO., LTD.
+
OUI:70B3D5F27*
ID_OUI_FROM_DATABASE=NIRIT- Xinwei Telecom Technology Co., Ltd.
OUI:70B3D5F30*
ID_OUI_FROM_DATABASE=ADE Technology Inc.
+OUI:70B3D5F31*
+ ID_OUI_FROM_DATABASE=The-Box Development
+
OUI:70B3D5F32*
ID_OUI_FROM_DATABASE=Elektronik Art
ID_OUI_FROM_DATABASE=KST technology
OUI:70B3D5F7C*
- ID_OUI_FROM_DATABASE=Private
+ ID_OUI_FROM_DATABASE=Medicomp, Inc
OUI:70B3D5F7D*
ID_OUI_FROM_DATABASE=2M Technology
OUI:70B3D5FB3*
ID_OUI_FROM_DATABASE=3PS Inc
+OUI:70B3D5FB4*
+ ID_OUI_FROM_DATABASE=Array Technologies Inc.
+
OUI:70B3D5FB5*
ID_OUI_FROM_DATABASE=Orange Tree Technologies Ltd
OUI:70B3D5FDF*
ID_OUI_FROM_DATABASE=NARA CONTROLS INC.
+OUI:70B3D5FE0*
+ ID_OUI_FROM_DATABASE=Blueprint Lab
+
+OUI:70B3D5FE1*
+ ID_OUI_FROM_DATABASE=Shenzhen Zhiting Technology Co.,Ltd
+
OUI:70B3D5FE2*
ID_OUI_FROM_DATABASE=Galileo Tıp Teknolojileri San. ve Tic. A.S.
OUI:70DF2F*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+OUI:70DFF7*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
OUI:70E027*
ID_OUI_FROM_DATABASE=HONGYU COMMUNICATION TECHNOLOGY LIMITED
OUI:70F087*
ID_OUI_FROM_DATABASE=Apple, Inc.
+OUI:70F088*
+ ID_OUI_FROM_DATABASE=Nintendo Co.,Ltd
+
OUI:70F096*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
OUI:7405A5*
ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
+OUI:7409AC*
+ ID_OUI_FROM_DATABASE=Quext, LLC
+
OUI:740ABC*
ID_OUI_FROM_DATABASE=LightwaveRF Technology Ltd
OUI:741489*
ID_OUI_FROM_DATABASE=SRT Wireless
+OUI:741575*
+ ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
+
OUI:7415E2*
ID_OUI_FROM_DATABASE=Tri-Sen Systems Corporation
OUI:74ACB9*
ID_OUI_FROM_DATABASE=Ubiquiti Networks Inc.
+OUI:74AD98*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
OUI:74ADB7*
ID_OUI_FROM_DATABASE=China Mobile Group Device Co.,Ltd.
OUI:74D21D*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+OUI:74D285*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
OUI:74D435*
ID_OUI_FROM_DATABASE=GIGA-BYTE TECHNOLOGY CO.,LTD.
OUI:780F77*
ID_OUI_FROM_DATABASE=HangZhou Gubei Electronics Technology Co.,Ltd
+OUI:781053*
+ ID_OUI_FROM_DATABASE=China Mobile Group Device Co.,Ltd.
+
OUI:781100*
ID_OUI_FROM_DATABASE=Quantumsolution
OUI:781881*
ID_OUI_FROM_DATABASE=AzureWave Technology Inc.
+OUI:7818A8*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:78192E*
ID_OUI_FROM_DATABASE=NASCENT Technology
OUI:786256*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+OUI:7864C0*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:7864E6*
ID_OUI_FROM_DATABASE=Green Motive Technology Limited
+OUI:78653B*
+ ID_OUI_FROM_DATABASE=Shaoxing Ourten Electronics Co., Ltd.
+
OUI:786559*
ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS
OUI:78725D*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+OUI:787A6F*
+ ID_OUI_FROM_DATABASE=Juice Technology AG
+
OUI:787B8A*
ID_OUI_FROM_DATABASE=Apple, Inc.
OUI:78A683*
ID_OUI_FROM_DATABASE=Precidata
+OUI:78A6A0*
+ ID_OUI_FROM_DATABASE=Hangzhou Ezviz Software Co.,Ltd.
+
OUI:78A6BD*
ID_OUI_FROM_DATABASE=DAEYEON Control&Instrument Co,.Ltd
OUI:78B46A*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+OUI:78B554*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:78B5D2*
ID_OUI_FROM_DATABASE=Ever Treasure Industrial Limited
OUI:78CF2F*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+OUI:78CFF9*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:78D004*
ID_OUI_FROM_DATABASE=Neousys Technology Inc.
OUI:78D99F*
ID_OUI_FROM_DATABASE=NuCom HK Ltd.
+OUI:78D9E9*
+ ID_OUI_FROM_DATABASE=MOMENTUM IOT
+
OUI:78DA07*
ID_OUI_FROM_DATABASE=Zhejiang Tmall Technology Co., Ltd.
OUI:78E2BD*
ID_OUI_FROM_DATABASE=Vodafone Automotive S.p.A.
+OUI:78E36D*
+ ID_OUI_FROM_DATABASE=Espressif Inc.
+
OUI:78E3B5*
ID_OUI_FROM_DATABASE=Hewlett Packard
OUI:78F09B*
ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+OUI:78F235*
+ ID_OUI_FROM_DATABASE=Sichuan AI-Link Technology Co., Ltd.
+
OUI:78F29E*
ID_OUI_FROM_DATABASE=PEGATRON CORPORATION
OUI:78FFCA*
ID_OUI_FROM_DATABASE=TECNO MOBILE LIMITED
+OUI:7C004D*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:7C010A*
ID_OUI_FROM_DATABASE=Texas Instruments
OUI:7C092B*
ID_OUI_FROM_DATABASE=Bekey A/S
+OUI:7C0A3F*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
OUI:7C0A50*
ID_OUI_FROM_DATABASE=J-MEX Inc.
OUI:7C1AFC*
ID_OUI_FROM_DATABASE=Dalian Co-Edifice Video Technology Co., Ltd
+OUI:7C1B93*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:7C1C4E*
ID_OUI_FROM_DATABASE=LG Innotek
OUI:7C3CB6*
ID_OUI_FROM_DATABASE=Shenzhen Homecare Technology Co.,Ltd.
+OUI:7C3D2B*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:7C3E9D*
ID_OUI_FROM_DATABASE=PATECH
OUI:7C534A*
ID_OUI_FROM_DATABASE=Metamako
+OUI:7C55A7*
+ ID_OUI_FROM_DATABASE=Kastle Systems
+
OUI:7C55E7*
ID_OUI_FROM_DATABASE=YSI, Inc.
OUI:7C9EBD*
ID_OUI_FROM_DATABASE=Espressif Inc.
+OUI:7C9F07*
+ ID_OUI_FROM_DATABASE=CIG SHANGHAI CO LTD
+
OUI:7CA15D*
ID_OUI_FROM_DATABASE=GN ReSound A/S
OUI:7CB77B*
ID_OUI_FROM_DATABASE=Paradigm Electronics Inc
+OUI:7CB94C*
+ ID_OUI_FROM_DATABASE=Bouffalo Lab (Nanjing) Co., Ltd.
+
OUI:7CB960*
ID_OUI_FROM_DATABASE=Shanghai X-Cheng telecom LTD
OUI:7CD9A0*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+OUI:7CD9F4*
+ ID_OUI_FROM_DATABASE=UAB Teltonika Telematics
+
OUI:7CD9FE*
ID_OUI_FROM_DATABASE=New Cosmos Electric Co., Ltd.
OUI:7CF429*
ID_OUI_FROM_DATABASE=NUUO Inc.
+OUI:7CF666*
+ ID_OUI_FROM_DATABASE=Tuya Smart Inc.
+
OUI:7CF854*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:7CF880*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
OUI:7CF90E*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
OUI:8005DF*
ID_OUI_FROM_DATABASE=Montage Technology Group Limited
+OUI:80071B*
+ ID_OUI_FROM_DATABASE=VSOLUTION TELECOMMUNICATION TECHNOLOGY CO.,LTD.
+
OUI:8007A2*
ID_OUI_FROM_DATABASE=Esson Technology Inc.
OUI:8022A7*
ID_OUI_FROM_DATABASE=NEC Platforms, Ltd.
+OUI:802511*
+ ID_OUI_FROM_DATABASE=ITEL MOBILE LIMITED
+
OUI:802689*
ID_OUI_FROM_DATABASE=D-Link International
OUI:803253*
ID_OUI_FROM_DATABASE=Intel Corporate
+OUI:803428*
+ ID_OUI_FROM_DATABASE=Microchip Technology Inc.
+
OUI:803457*
ID_OUI_FROM_DATABASE=OT Systems Limited
OUI:80427C*
ID_OUI_FROM_DATABASE=Adolf Tedsen GmbH & Co. KG
+OUI:8044FD*
+ ID_OUI_FROM_DATABASE=China Mobile (Hangzhou) Information Technology Co., Ltd.
+
+OUI:8045DD*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
OUI:804731*
ID_OUI_FROM_DATABASE=Packet Design, Inc.
+OUI:804786*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
OUI:8048A5*
ID_OUI_FROM_DATABASE=SICHUAN TIANYI COMHEART TELECOMCO.,LTD
OUI:807215*
ID_OUI_FROM_DATABASE=BSkyB Ltd
+OUI:807264*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:80739F*
ID_OUI_FROM_DATABASE=KYOCERA CORPORATION
OUI:808A8B*
ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd.
+OUI:808AF7*
+ ID_OUI_FROM_DATABASE=Nanoleaf
+
OUI:808B5C*
ID_OUI_FROM_DATABASE=Shenzhen Runhuicheng Technology Co., Ltd
OUI:80F25E*
ID_OUI_FROM_DATABASE=Kyynel
+OUI:80F3EF*
+ ID_OUI_FROM_DATABASE=Facebook Technologies, LLC
+
OUI:80F503*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
OUI:8404D2*
ID_OUI_FROM_DATABASE=Kirale Technologies SL
+OUI:8406FA*
+ ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD
+
OUI:840B2D*
ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO MECHANICS CO., LTD.
OUI:841E26*
ID_OUI_FROM_DATABASE=KERNEL-I Co.,LTD
+OUI:841EA3*
+ ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS
+
OUI:842096*
ID_OUI_FROM_DATABASE=SHENZHEN RF-LINK TECHNOLOGY CO.,LTD.
OUI:84225E*
ID_OUI_FROM_DATABASE=SHENZHEN TECHNEWCHIP TECHNOLOGY CO.,LTD.
+OUI:842388*
+ ID_OUI_FROM_DATABASE=Ruckus Wireless
+
OUI:84248D*
ID_OUI_FROM_DATABASE=Zebra Technologies Inc
OUI:84262B*
ID_OUI_FROM_DATABASE=Nokia
+OUI:84267A*
+ ID_OUI_FROM_DATABASE=GUANGDONG TAIDE ZHILIAN TECHNOLOGY CO.,LTD
+
OUI:842690*
ID_OUI_FROM_DATABASE=BEIJING THOUGHT SCIENCE CO.,LTD.
OUI:843A4B*
ID_OUI_FROM_DATABASE=Intel Corporate
+OUI:843A5B*
+ ID_OUI_FROM_DATABASE=Inventec(Chongqing) Corporation
+
+OUI:843B10*
+ ID_OUI_FROM_DATABASE=Lv switch Inc.
+
OUI:843DC6*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
OUI:847A88*
ID_OUI_FROM_DATABASE=HTC Corporation
+OUI:847AB6*
+ ID_OUI_FROM_DATABASE=AltoBeam (China) Inc.
+
OUI:847BEB*
ID_OUI_FROM_DATABASE=Dell Inc.
OUI:848BCDE*
ID_OUI_FROM_DATABASE=Emotiv Inc
+OUI:848C8D*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:848D84*
ID_OUI_FROM_DATABASE=Rajant Corporation
ID_OUI_FROM_DATABASE=Dell Inc.
OUI:849000*
- ID_OUI_FROM_DATABASE=Arnold & Richter Cine Technik
+ ID_OUI_FROM_DATABASE=Arnold&Richter Cine Technik GmbH & Co. Betriebs KG
OUI:84930C*
ID_OUI_FROM_DATABASE=InCoax Networks Europe AB
OUI:84AB1A*
ID_OUI_FROM_DATABASE=Apple, Inc.
+OUI:84AB26*
+ ID_OUI_FROM_DATABASE=Tiinlab Corporation
+
OUI:84ACA4*
ID_OUI_FROM_DATABASE=Beijing Novel Super Digital TV Technology Co., Ltd
ID_OUI_FROM_DATABASE=Gnodal Ltd
OUI:84C78F*
- ID_OUI_FROM_DATABASE=STORDIS GmbH
+ ID_OUI_FROM_DATABASE=APS Networks GmbH
OUI:84C7A9*
ID_OUI_FROM_DATABASE=C3PO S.A.
OUI:84D4C8*
ID_OUI_FROM_DATABASE=Widex A/S
+OUI:84D608*
+ ID_OUI_FROM_DATABASE=Wingtech Mobile Communications Co., Ltd.
+
OUI:84D6C5*
ID_OUI_FROM_DATABASE=SolarEdge Technologies
OUI:84E892*
ID_OUI_FROM_DATABASE=Actiontec Electronics, Inc
+OUI:84E986*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:84EA97*
ID_OUI_FROM_DATABASE=Shenzhen iComm Semiconductor CO.,LTD
OUI:84FCFE*
ID_OUI_FROM_DATABASE=Apple, Inc.
+OUI:84FD27*
+ ID_OUI_FROM_DATABASE=Silicon Laboratories
+
OUI:84FDD1*
ID_OUI_FROM_DATABASE=Intel Corporate
OUI:88299C*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:882A5E*
+ ID_OUI_FROM_DATABASE=New H3C Technologies Co., Ltd
+
OUI:882B94*
ID_OUI_FROM_DATABASE=MADOKA SYSTEM Co.,Ltd.
OUI:8844F6*
ID_OUI_FROM_DATABASE=Nokia Corporation
+OUI:884604*
+ ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
+
OUI:88462A*
ID_OUI_FROM_DATABASE=Telechips Inc.
OUI:888E68*
ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+OUI:889009*
+ ID_OUI_FROM_DATABASE=Juniper Networks
+
OUI:88908D*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
OUI:88C3B3*
ID_OUI_FROM_DATABASE=SOVICO
+OUI:88C3E5*
+ ID_OUI_FROM_DATABASE=Betop Techonologies
+
OUI:88C626*
ID_OUI_FROM_DATABASE=Logitech, Inc
OUI:88E034*
ID_OUI_FROM_DATABASE=Shinwa industries(China) ltd.
+OUI:88E056*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:88E0A0*
ID_OUI_FROM_DATABASE=Shenzhen VisionSTOR Technologies Co., Ltd
OUI:8C192DE*
ID_OUI_FROM_DATABASE=Elcon AB
+OUI:8C19B5*
+ ID_OUI_FROM_DATABASE=Arcadyan Corporation
+
OUI:8C1ABF*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
OUI:8C2937*
ID_OUI_FROM_DATABASE=Apple, Inc.
+OUI:8C2A8E*
+ ID_OUI_FROM_DATABASE=DongGuan Ramaxel Memory Technology
+
OUI:8C2DAA*
ID_OUI_FROM_DATABASE=Apple, Inc.
OUI:8C2FA6*
ID_OUI_FROM_DATABASE=Solid Optics B.V.
+OUI:8C31E2*
+ ID_OUI_FROM_DATABASE=DAYOUPLUS
+
OUI:8C3330*
ID_OUI_FROM_DATABASE=EmFirst Co., Ltd.
OUI:8C3401*
ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+OUI:8C3446*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:8C34FD*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
OUI:8C3579*
ID_OUI_FROM_DATABASE=QDIQO Sp. z o.o.
+OUI:8C367A*
+ ID_OUI_FROM_DATABASE=Palo Alto Networks
+
OUI:8C395C*
ID_OUI_FROM_DATABASE=Bit4id Srl
OUI:8C426D*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+OUI:8C4361*
+ ID_OUI_FROM_DATABASE=Hailo Digital Hub GmbH & Co. KG
+
OUI:8C4435*
ID_OUI_FROM_DATABASE=Shanghai BroadMobi Communication Technology Co., Ltd.
OUI:8C736E*
ID_OUI_FROM_DATABASE=FUJITSU LIMITED
+OUI:8C73A0*
+ ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD
+
OUI:8C76C1*
ID_OUI_FROM_DATABASE=Goden Tech Limited
OUI:8C83E1*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:8C83FC*
+ ID_OUI_FROM_DATABASE=Axioma Metering UAB
+
OUI:8C8401*
ID_OUI_FROM_DATABASE=Private
OUI:8CAAB5*
ID_OUI_FROM_DATABASE=Espressif Inc.
+OUI:8CAACE*
+ ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
+
OUI:8CAB8E*
ID_OUI_FROM_DATABASE=Shanghai Feixun Communication Co.,Ltd.
OUI:8CD67F*
ID_OUI_FROM_DATABASE=EM Microelectronic
+OUI:8CD9D6*
+ ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
+
OUI:8CDB25*
ID_OUI_FROM_DATABASE=ESG Solutions
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
OUI:8CE748*
- ID_OUI_FROM_DATABASE=Private
+ ID_OUI_FROM_DATABASE=Hangzhou Hikvision Digital Technology Co.,Ltd.
OUI:8CE78C*
ID_OUI_FROM_DATABASE=DK Networks
OUI:902181*
ID_OUI_FROM_DATABASE=Shanghai Huaqin Telecom Technology Co.,Ltd
+OUI:9023B4*
+ ID_OUI_FROM_DATABASE=New H3C Technologies Co., Ltd
+
OUI:9023EC*
ID_OUI_FROM_DATABASE=Availink, Inc.
OUI:90A7C1*
ID_OUI_FROM_DATABASE=Pakedge Device and Software Inc.
+OUI:90A822*
+ ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
+
OUI:90A935*
ID_OUI_FROM_DATABASE=JWEntertainment
OUI:90B4DD*
ID_OUI_FROM_DATABASE=Private
+OUI:90B67A*
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
+
OUI:90B686*
ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd.
OUI:90C115*
ID_OUI_FROM_DATABASE=Sony Mobile Communications Inc
+OUI:90C119*
+ ID_OUI_FROM_DATABASE=Nokia
+
OUI:90C1C6*
ID_OUI_FROM_DATABASE=Apple, Inc.
OUI:90F891*
ID_OUI_FROM_DATABASE=Kaonmedia CO., LTD.
+OUI:90F9B7*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:90FB5B*
ID_OUI_FROM_DATABASE=Avaya Inc
ID_OUI_FROM_DATABASE=Dongguan CXWE Technology Co.,Ltd.
OUI:9405BB3*
- ID_OUI_FROM_DATABASE=Neurik AG
+ ID_OUI_FROM_DATABASE=Neutrik AG
OUI:9405BB4*
ID_OUI_FROM_DATABASE=Shenzhen Baolijie Technology Co., Ltd.
OUI:9439E5*
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+OUI:943A91*
+ ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
+
OUI:943AF0*
ID_OUI_FROM_DATABASE=Nokia Corporation
OUI:943BB1*
ID_OUI_FROM_DATABASE=Kaonmedia CO., LTD.
+OUI:943CC6*
+ ID_OUI_FROM_DATABASE=Espressif Inc.
+
OUI:943DC9*
ID_OUI_FROM_DATABASE=Asahi Net, Inc.
OUI:94A40C*
ID_OUI_FROM_DATABASE=Diehl Metering GmbH
+OUI:94A4F9*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:94A67E*
ID_OUI_FROM_DATABASE=NETGEAR
OUI:94E226*
ID_OUI_FROM_DATABASE=D. ORtiz Consulting, LLC
+OUI:94E23C*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
OUI:94E2FD*
ID_OUI_FROM_DATABASE=Boge Kompressoren OTTO Boge GmbH & Co. KG
OUI:94E9EE*
ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+OUI:94EA32*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:94EAEA*
ID_OUI_FROM_DATABASE=TELLESCOM INDUSTRIA E COMERCIO EM TELECOMUNICACAO
OUI:981888*
ID_OUI_FROM_DATABASE=Cisco Meraki
+OUI:981A35*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:981BB5*
ID_OUI_FROM_DATABASE=ASSA ABLOY Korea Co., Ltd iRevo
OUI:98262A*
ID_OUI_FROM_DATABASE=Applied Research Associates, Inc
+OUI:9827820*
+ ID_OUI_FROM_DATABASE=SHENZHEN HEROFUN BIO-TECH CO., LTD
+
+OUI:9827821*
+ ID_OUI_FROM_DATABASE=INFODAS GmbH
+
+OUI:9827822*
+ ID_OUI_FROM_DATABASE=Anhui Shengren Electronic Technology Co., Ltd
+
+OUI:9827823*
+ ID_OUI_FROM_DATABASE=Danfoss Power Solutions
+
+OUI:9827824*
+ ID_OUI_FROM_DATABASE=Dspread Technology (Beijing) Inc.
+
+OUI:9827825*
+ ID_OUI_FROM_DATABASE=Guangzhou Wuzhou Technology Co, Ltd.
+
+OUI:9827826*
+ ID_OUI_FROM_DATABASE=WESTERN SECURITY SOLUTIONS
+
+OUI:9827827*
+ ID_OUI_FROM_DATABASE=KORTEK CORPORATION
+
+OUI:9827828*
+ ID_OUI_FROM_DATABASE=CATS Power design
+
+OUI:9827829*
+ ID_OUI_FROM_DATABASE=Wuxi GuoYiHaiJu Technology Co.,Ltd.
+
+OUI:982782A*
+ ID_OUI_FROM_DATABASE=Nanjing BianYu Future Home Technology Co.Ltd
+
+OUI:982782B*
+ ID_OUI_FROM_DATABASE=RayTron, INC.
+
+OUI:982782C*
+ ID_OUI_FROM_DATABASE=KRISTECH Krzysztof Kajstura
+
+OUI:982782D*
+ ID_OUI_FROM_DATABASE=Thorlabs GmbH
+
+OUI:982782E*
+ ID_OUI_FROM_DATABASE=SureFlap Ltd
+
OUI:9828A6*
ID_OUI_FROM_DATABASE=COMPAL INFORMATION (KUNSHAN) CO., LTD.
OUI:983713*
ID_OUI_FROM_DATABASE=PT.Navicom Indonesia
+OUI:98387D*
+ ID_OUI_FROM_DATABASE=ITRONIC TECHNOLOGY CO . , LTD .
+
OUI:98398E*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
OUI:983F60*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+OUI:983F66*
+ ID_OUI_FROM_DATABASE=Wuhan Funshion Online Technologies Co.,Ltd
+
OUI:983F9F*
ID_OUI_FROM_DATABASE=China SSJ (Suzhou) Network Technology Inc.
OUI:984246*
ID_OUI_FROM_DATABASE=SOL INDUSTRY PTE., LTD
+OUI:984265*
+ ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS
+
OUI:9843DA*
ID_OUI_FROM_DATABASE=INTERTECH
OUI:984827*
ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
+OUI:984874*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:984914*
ID_OUI_FROM_DATABASE=Wistron Neweb Corporation
OUI:9874DA*
ID_OUI_FROM_DATABASE=Infinix mobility limited
+OUI:98751A*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:9876B6*
ID_OUI_FROM_DATABASE=Adafruit
OUI:98AAFCE*
ID_OUI_FROM_DATABASE=Comarch S.A.
+OUI:98AD1D*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:98AE71*
ID_OUI_FROM_DATABASE=VVDN Technologies Pvt Ltd
OUI:98C0EB*
ID_OUI_FROM_DATABASE=Global Regency Ltd
+OUI:98C3D2*
+ ID_OUI_FROM_DATABASE=Ningbo Sanxing Medical Electric Co.,Ltd
+
OUI:98C5DB*
ID_OUI_FROM_DATABASE=Ericsson AB
OUI:98CC4D*
ID_OUI_FROM_DATABASE=Shenzhen mantunsci co., LTD
+OUI:98CDAC*
+ ID_OUI_FROM_DATABASE=Espressif Inc.
+
OUI:98CDB4*
ID_OUI_FROM_DATABASE=Virident Systems, Inc.
OUI:9C1C12*
ID_OUI_FROM_DATABASE=Aruba, a Hewlett Packard Enterprise Company
+OUI:9C1C37*
+ ID_OUI_FROM_DATABASE=AltoBeam (China) Inc.
+
OUI:9C1D36*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
OUI:9C4EBF*
ID_OUI_FROM_DATABASE=BoxCast
+OUI:9C4F5F*
+ ID_OUI_FROM_DATABASE=TAP Sound System
+
OUI:9C4FCF*
ID_OUI_FROM_DATABASE=TCT mobile ltd
OUI:9C7514*
ID_OUI_FROM_DATABASE=Wildix srl
+OUI:9C760E*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
+OUI:9C7613*
+ ID_OUI_FROM_DATABASE=Ring LLC
+
OUI:9C77AA*
ID_OUI_FROM_DATABASE=NADASNV
OUI:9C7F57*
ID_OUI_FROM_DATABASE=UNIC Memory Technology Co Ltd
+OUI:9C7F81*
+ ID_OUI_FROM_DATABASE=SHENZHEN FAST TECHNOLOGIES CO.,LTD
+
OUI:9C807D*
ID_OUI_FROM_DATABASE=SYSCABLE Korea Inc.
OUI:9C8275*
ID_OUI_FROM_DATABASE=Yichip Microelectronics (Hangzhou) Co.,Ltd
+OUI:9C8281*
+ ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd.
+
OUI:9C83BF*
ID_OUI_FROM_DATABASE=PRO-VISION, Inc.
OUI:9C93E4*
ID_OUI_FROM_DATABASE=Private
+OUI:9C9567*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:9C95F8*
ID_OUI_FROM_DATABASE=SmartDoor Systems, LLC
OUI:9CDB07*
ID_OUI_FROM_DATABASE=Thum+Mahr GmbH
+OUI:9CDBCB*
+ ID_OUI_FROM_DATABASE=Wuhan Funshion Online Technologies Co.,Ltd
+
OUI:9CDC71*
ID_OUI_FROM_DATABASE=Hewlett Packard Enterprise
OUI:A0341B*
ID_OUI_FROM_DATABASE=Adero Inc
+OUI:A03679*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:A0369F*
ID_OUI_FROM_DATABASE=Intel Corporate
OUI:A0481C*
ID_OUI_FROM_DATABASE=Hewlett Packard
+OUI:A04A5E*
+ ID_OUI_FROM_DATABASE=Microsoft Corporation
+
OUI:A04C5B*
ID_OUI_FROM_DATABASE=Shenzhen TINNO Mobile Technology Corp.
OUI:A07099*
ID_OUI_FROM_DATABASE=Beijing Huacan Electronics Co., Ltd
+OUI:A070B7*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:A071A9*
ID_OUI_FROM_DATABASE=Nokia Corporation
OUI:A0D795*
ID_OUI_FROM_DATABASE=Apple, Inc.
+OUI:A0D7A0*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:A0D807*
ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
OUI:A40450*
ID_OUI_FROM_DATABASE=nFore Technology Inc.
+OUI:A4056E*
+ ID_OUI_FROM_DATABASE=Tiinlab Corporation
+
OUI:A4059E*
ID_OUI_FROM_DATABASE=STA Infinity LLP
OUI:A41908*
ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD
+OUI:A41B34*
+ ID_OUI_FROM_DATABASE=China Mobile Group Device Co.,Ltd.
+
OUI:A41BC0*
ID_OUI_FROM_DATABASE=Fastec Imaging Corporation
OUI:A43523*
ID_OUI_FROM_DATABASE=Guangdong Donyan Network Technologies Co.,Ltd.
+OUI:A4352D*
+ ID_OUI_FROM_DATABASE=TRIZ Networks corp.
+
OUI:A43831*
ID_OUI_FROM_DATABASE=RF elements s.r.o.
OUI:A438FC*
ID_OUI_FROM_DATABASE=Plastic Logic
+OUI:A439B6*
+ ID_OUI_FROM_DATABASE=SHENZHEN PEIZHE MICROELECTRONICS CO .LTD
+
OUI:A43A69*
ID_OUI_FROM_DATABASE=Vers Inc
OUI:A44C11*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+OUI:A44C62*
+ ID_OUI_FROM_DATABASE=Hangzhou Microimage Software Co., Ltd
+
OUI:A44CC8*
ID_OUI_FROM_DATABASE=Dell Inc.
ID_OUI_FROM_DATABASE=Foshan Yisihang Electrical Technology Co., Ltd.
OUI:A453EE6*
- ID_OUI_FROM_DATABASE=Aura Home, Inc.
+ ID_OUI_FROM_DATABASE=Shenzhen Xunqi Interconnet Technology Co., Ltd
OUI:A453EE7*
ID_OUI_FROM_DATABASE=Beijing Lanke Science and Technology Co.,LTd.
OUI:A456CC*
ID_OUI_FROM_DATABASE=Technicolor CH USA Inc.
+OUI:A45802*
+ ID_OUI_FROM_DATABASE=SHIN-IL TECH
+
OUI:A4580F0*
ID_OUI_FROM_DATABASE=INNOPRO
OUI:A47ACF*
ID_OUI_FROM_DATABASE=VIBICOM COMMUNICATIONS INC.
+OUI:A47B1A*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:A47B2C*
ID_OUI_FROM_DATABASE=Nokia
OUI:A47D9F*
ID_OUI_FROM_DATABASE=Shenzhen iComm Semiconductor CO.,LTD
+OUI:A47E36*
+ ID_OUI_FROM_DATABASE=EM Microelectronic
+
OUI:A47E39*
ID_OUI_FROM_DATABASE=zte corporation
OUI:A49B4F*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+OUI:A49BCD*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
OUI:A49BF5*
ID_OUI_FROM_DATABASE=Hybridserver Tec GmbH
OUI:A4A24A*
ID_OUI_FROM_DATABASE=Cisco SPVTG
+OUI:A4A46B*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:A4A4D3*
ID_OUI_FROM_DATABASE=Bluebank Communication Technology Co.Ltd
OUI:A4CD23*
ID_OUI_FROM_DATABASE=Shenzhenshi Xinzhongxin Co., Ltd
+OUI:A4CEDA*
+ ID_OUI_FROM_DATABASE=Arcadyan Corporation
+
OUI:A4CF12*
ID_OUI_FROM_DATABASE=Espressif Inc.
OUI:A4D578*
ID_OUI_FROM_DATABASE=Texas Instruments
+OUI:A4D795*
+ ID_OUI_FROM_DATABASE=Wingtech Mobile Communications Co.,Ltd
+
OUI:A4D856*
ID_OUI_FROM_DATABASE=Gimbal, Inc
OUI:A4DA3F*
ID_OUI_FROM_DATABASE=Bionics Corp.
+OUI:A4DAD4*
+ ID_OUI_FROM_DATABASE=Yamato Denki Co.,Ltd.
+
OUI:A4DB2E*
ID_OUI_FROM_DATABASE=Kingspan Environmental Ltd
OUI:A842A7*
ID_OUI_FROM_DATABASE=Jiangsu Huitong Group Co.,Ltd.
+OUI:A84397*
+ ID_OUI_FROM_DATABASE=Innogrit Corporation
+
OUI:A84481*
ID_OUI_FROM_DATABASE=Nokia Corporation
OUI:A84E3F*
ID_OUI_FROM_DATABASE=Hitron Technologies. Inc
+OUI:A85081*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:A8515B*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
OUI:A862A2*
ID_OUI_FROM_DATABASE=JIWUMEDIA CO., LTD.
+OUI:A8637D*
+ ID_OUI_FROM_DATABASE=D-Link International
+
OUI:A863DF*
ID_OUI_FROM_DATABASE=DISPLAIRE CORPORATION
OUI:A8776F*
ID_OUI_FROM_DATABASE=Zonoff
+OUI:A877E5*
+ ID_OUI_FROM_DATABASE=SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD
+
OUI:A87B39*
ID_OUI_FROM_DATABASE=Nokia Corporation
OUI:A8922C*
ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communications)
+OUI:A8934A*
+ ID_OUI_FROM_DATABASE=CHONGQING FUGUI ELECTRONICS CO.,LTD.
+
OUI:A89352*
ID_OUI_FROM_DATABASE=SHANGHAI ZHONGMI COMMUNICATION TECHNOLOGY CO.,LTD
OUI:A8E77D*
ID_OUI_FROM_DATABASE=Texas Instruments
+OUI:A8E81E*
+ ID_OUI_FROM_DATABASE=ATW TECHNOLOGY, INC.
+
OUI:A8E824*
ID_OUI_FROM_DATABASE=INIM ELECTRONICS S.R.L.
OUI:A8F038*
ID_OUI_FROM_DATABASE=SHEN ZHEN SHI JIN HUA TAI ELECTRONICS CO.,LTD
+OUI:A8F266*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:A8F274*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
OUI:AC122F*
ID_OUI_FROM_DATABASE=Fantasia Trading LLC
+OUI:AC139C*
+ ID_OUI_FROM_DATABASE=Adtran Inc
+
OUI:AC1461*
ID_OUI_FROM_DATABASE=ATAW Co., Ltd.
OUI:AC1F09*
ID_OUI_FROM_DATABASE=shenzhen RAKwireless technology Co.,Ltd
+OUI:AC1F0F*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
OUI:AC1F6B*
ID_OUI_FROM_DATABASE=Super Micro Computer, Inc.
OUI:AC220B*
ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
+OUI:AC2316*
+ ID_OUI_FROM_DATABASE=Mist Systems, Inc.
+
OUI:AC2334*
ID_OUI_FROM_DATABASE=Infinix mobility limited
OUI:AC5AEE*
ID_OUI_FROM_DATABASE=China Mobile Group Device Co.,Ltd.
+OUI:AC5AFC*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
OUI:AC5D10*
ID_OUI_FROM_DATABASE=Pace Americas
OUI:AC7409*
ID_OUI_FROM_DATABASE=Hangzhou H3C Technologies Co., Limited
+OUI:AC74C4*
+ ID_OUI_FROM_DATABASE=Maytronics Ltd.
+
OUI:AC751D*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
OUI:AC9572*
ID_OUI_FROM_DATABASE=Jovision Technology Co., Ltd.
+OUI:AC9929*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:AC9A22*
ID_OUI_FROM_DATABASE=NXP Semiconductors
OUI:ACD564*
ID_OUI_FROM_DATABASE=CHONGQING FUGUI ELECTRONICS CO.,LTD.
+OUI:ACD618*
+ ID_OUI_FROM_DATABASE=OnePlus Technology (Shenzhen) Co., Ltd
+
OUI:ACD657*
ID_OUI_FROM_DATABASE=Shaanxi GuoLian Digital TV Technology Co.,Ltd.
OUI:B01F81F*
ID_OUI_FROM_DATABASE=Private
+OUI:B0227A*
+ ID_OUI_FROM_DATABASE=HP Inc.
+
+OUI:B02491*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:B024F3*
ID_OUI_FROM_DATABASE=Progeny Systems
OUI:B03956*
ID_OUI_FROM_DATABASE=NETGEAR
+OUI:B03ACE*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:B03D96*
ID_OUI_FROM_DATABASE=Vision Valley FZ LLC
+OUI:B03DC2*
+ ID_OUI_FROM_DATABASE=Wasp artificial intelligence(Shenzhen) Co.,ltd
+
OUI:B03E51*
ID_OUI_FROM_DATABASE=BSkyB Ltd
OUI:B04E26*
ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
+OUI:B04F13*
+ ID_OUI_FROM_DATABASE=Dell Inc.
+
OUI:B04FC3*
ID_OUI_FROM_DATABASE=Shenzhen NVC Cloud Technology Co., Ltd.
OUI:B05CE5*
ID_OUI_FROM_DATABASE=Nokia Corporation
+OUI:B05DD4*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
OUI:B06088*
ID_OUI_FROM_DATABASE=Intel Corporate
OUI:B0C8AD*
ID_OUI_FROM_DATABASE=People Power Company
+OUI:B0C952*
+ ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+
OUI:B0C95B*
ID_OUI_FROM_DATABASE=Beijing Symtech CO.,LTD
OUI:B40FB3*
ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd.
+OUI:B4107B*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
OUI:B41489*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+OUI:B414E6*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:B41513*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
OUI:B46077*
ID_OUI_FROM_DATABASE=Sichuan Changhong Electric Ltd.
+OUI:B4608C*
+ ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD
+
OUI:B460ED*
ID_OUI_FROM_DATABASE=Beijing Xiaomi Mobile Software Co., Ltd
OUI:B48655*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+OUI:B48901*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:B48910*
ID_OUI_FROM_DATABASE=Coster T.E. S.P.A.
+OUI:B48A5F*
+ ID_OUI_FROM_DATABASE=Juniper Networks
+
OUI:B48B19*
ID_OUI_FROM_DATABASE=Apple, Inc.
OUI:B49EE6*
ID_OUI_FROM_DATABASE=SHENZHEN TECHNOLOGY CO LTD
+OUI:B4A25C*
+ ID_OUI_FROM_DATABASE=Cambium Networks Limited
+
OUI:B4A2EB0*
ID_OUI_FROM_DATABASE=QKM Technology(Dongguan)Co.,Ltd
OUI:B4E1EB*
ID_OUI_FROM_DATABASE=Private
+OUI:B4E3F9*
+ ID_OUI_FROM_DATABASE=Silicon Laboratories
+
OUI:B4E62A*
ID_OUI_FROM_DATABASE=LG Innotek
OUI:B4F949*
ID_OUI_FROM_DATABASE=optilink networks pvt ltd
+OUI:B4FA48*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:B4FBE3*
ID_OUI_FROM_DATABASE=AltoBeam (China) Inc.
OUI:B81413*
ID_OUI_FROM_DATABASE=Keen High Holding(HK) Ltd.
+OUI:B814DB*
+ ID_OUI_FROM_DATABASE=OHSUNG
+
OUI:B81619*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
OUI:B82A72*
ID_OUI_FROM_DATABASE=Dell Inc.
+OUI:B82AA9*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:B82ADC*
ID_OUI_FROM_DATABASE=EFR Europäische Funk-Rundsteuerung GmbH
OUI:B843E4*
ID_OUI_FROM_DATABASE=Vlatacom
+OUI:B844AE*
+ ID_OUI_FROM_DATABASE=TCT mobile ltd
+
OUI:B844D9*
ID_OUI_FROM_DATABASE=Apple, Inc.
OUI:B88198*
ID_OUI_FROM_DATABASE=Intel Corporate
+OUI:B881FA*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:B88303*
ID_OUI_FROM_DATABASE=Hewlett Packard Enterprise
OUI:B8A175*
ID_OUI_FROM_DATABASE=Roku, Inc.
+OUI:B8A377*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
OUI:B8A386*
ID_OUI_FROM_DATABASE=D-Link International
OUI:B8D309*
ID_OUI_FROM_DATABASE=Cox Communications, Inc
+OUI:B8D43E*
+ ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd.
+
OUI:B8D49D*
ID_OUI_FROM_DATABASE=M Seven System Ltd.
OUI:B8D526*
ID_OUI_FROM_DATABASE=Zyxel Communications Corporation
+OUI:B8D6F6*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:B8D7AF*
ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd.
OUI:BCEE7B*
ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
+OUI:BCF171*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
OUI:BCF1F2*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
OUI:BCF9F2*
ID_OUI_FROM_DATABASE=TEKO
+OUI:BCFAB8*
+ ID_OUI_FROM_DATABASE=Guangzhou Shiyuan Electronic Technology Company Limited
+
OUI:BCFE8C*
ID_OUI_FROM_DATABASE=Altronic, LLC
OUI:BCFF21*
ID_OUI_FROM_DATABASE=Smart Code(shenzhen)Technology Co.,Ltd
+OUI:BCFF4D*
+ ID_OUI_FROM_DATABASE=Espressif Inc.
+
OUI:BCFFAC*
ID_OUI_FROM_DATABASE=TOPCON CORPORATION
OUI:C005C2*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+OUI:C006C3*
+ ID_OUI_FROM_DATABASE=TP-Link Corporation Limited
+
OUI:C0074A*
ID_OUI_FROM_DATABASE=Brita GmbH
OUI:C044E3*
ID_OUI_FROM_DATABASE=Shenzhen Sinkna Electronics Co., LTD
+OUI:C04754*
+ ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd.
+
OUI:C048E6*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
OUI:C04A09*
ID_OUI_FROM_DATABASE=Zhejiang Everbright Communication Equip. Co,. Ltd
+OUI:C04B13*
+ ID_OUI_FROM_DATABASE=WonderSound Technology Co., Ltd
+
OUI:C04DF7*
ID_OUI_FROM_DATABASE=SERELEC
OUI:C09134*
ID_OUI_FROM_DATABASE=ProCurve Networking by HP
+OUI:C09296*
+ ID_OUI_FROM_DATABASE=zte corporation
+
OUI:C09435*
ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
OUI:C0AC54*
ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS
+OUI:C0AEFD*
+ ID_OUI_FROM_DATABASE=Shenzhen HC-WLAN Technology Co.,Ltd
+
OUI:C0B101*
ID_OUI_FROM_DATABASE=zte corporation
OUI:C0D3C0*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:C0D46B*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:C0D682*
ID_OUI_FROM_DATABASE=Arista Networks
OUI:C0DC6A*
ID_OUI_FROM_DATABASE=Qingdao Eastsoft Communication Technology Co.,LTD
+OUI:C0DCD7*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:C0DCDA*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
OUI:C0E018*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+OUI:C0E1BE*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:C0E3A0*
ID_OUI_FROM_DATABASE=Renesas Electronics (Penang) Sdn. Bhd.
OUI:C45A86*
ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+OUI:C45BBE*
+ ID_OUI_FROM_DATABASE=Espressif Inc.
+
OUI:C45BF7*
ID_OUI_FROM_DATABASE=ants
OUI:C4700B*
ID_OUI_FROM_DATABASE=GUANGZHOU CHIP TECHNOLOGIES CO.,LTD
+OUI:C470AB*
+ ID_OUI_FROM_DATABASE=Ruijie Networks Co.,LTD
+
OUI:C47130*
ID_OUI_FROM_DATABASE=Fon Technology S.L.
OUI:C4913A*
ID_OUI_FROM_DATABASE=Shenzhen Sanland Electronic Co., ltd.
+OUI:C491CF*
+ ID_OUI_FROM_DATABASE=Luxul
+
OUI:C4924C*
ID_OUI_FROM_DATABASE=KEISOKUKI CENTER CO.,LTD.
OUI:C4BBEA*
ID_OUI_FROM_DATABASE=Pakedge Device and Software Inc
+OUI:C4BCD7*
+ ID_OUI_FROM_DATABASE=New Ryatek
+
OUI:C4BD6A*
ID_OUI_FROM_DATABASE=SKF GmbH
OUI:C4CD82*
ID_OUI_FROM_DATABASE=Hangzhou Lowan Information Technology Co., Ltd.
+OUI:C4D0E3*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
OUI:C4D197*
ID_OUI_FROM_DATABASE=Ventia Utility Services
OUI:C4F0EC*
ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD
+OUI:C4F174*
+ ID_OUI_FROM_DATABASE=eero inc.
+
OUI:C4F1D1*
ID_OUI_FROM_DATABASE=BEIJING SOGOU TECHNOLOGY DEVELOPMENT CO., LTD.
OUI:C81073*
ID_OUI_FROM_DATABASE=CENTURY OPTICOMM CO.,LTD
+OUI:C8138B*
+ ID_OUI_FROM_DATABASE=Shenzhen Skyworth Digital Technology CO., Ltd
+
OUI:C81451*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
OUI:C8334B*
ID_OUI_FROM_DATABASE=Apple, Inc.
+OUI:C833E5*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:C8348E*
ID_OUI_FROM_DATABASE=Intel Corporate
OUI:C84C75*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+OUI:C84D34*
+ ID_OUI_FROM_DATABASE=LIONS Taiwan Technology Inc.
+
OUI:C84F0E*
ID_OUI_FROM_DATABASE=Integrated Device Technology (Malaysia) Sdn. Bhd.
OUI:C8778B*
ID_OUI_FROM_DATABASE=Mercury Systems – Trusted Mission Solutions, Inc.
+OUI:C87B23*
+ ID_OUI_FROM_DATABASE=Bose Corporation
+
OUI:C87B5B*
ID_OUI_FROM_DATABASE=zte corporation
OUI:C89383*
ID_OUI_FROM_DATABASE=Embedded Automation, Inc.
+OUI:C89402*
+ ID_OUI_FROM_DATABASE=CHONGQING FUGUI ELECTRONICS CO.,LTD.
+
OUI:C894BB*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
OUI:C8979F*
ID_OUI_FROM_DATABASE=Nokia Corporation
+OUI:C89BAD*
+ ID_OUI_FROM_DATABASE=Honor Device Co., Ltd.
+
OUI:C89C13*
ID_OUI_FROM_DATABASE=Inspiremobile
OUI:C8BAE9*
ID_OUI_FROM_DATABASE=QDIS
+OUI:C8BB81*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:C8BBD3*
ID_OUI_FROM_DATABASE=Embrane
OUI:C8BE19*
ID_OUI_FROM_DATABASE=D-Link International
+OUI:C8BFFE*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:C8C126*
ID_OUI_FROM_DATABASE=ZPM Industria e Comercio Ltda
OUI:C8D7B0*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:C8D884*
+ ID_OUI_FROM_DATABASE=Universal Electronics, Inc.
+
OUI:C8D9D2*
ID_OUI_FROM_DATABASE=Hewlett Packard
OUI:CC2237E*
ID_OUI_FROM_DATABASE=MANUFACTURAS Y TRANSFORMADOS AB, S.L.
+OUI:CC242E*
+ ID_OUI_FROM_DATABASE=Shenzhen SuperElectron Technology Co.,Ltd.
+
OUI:CC25EF*
ID_OUI_FROM_DATABASE=Apple, Inc.
OUI:CC3080*
ID_OUI_FROM_DATABASE=VAIO Corporation
+OUI:CC3296*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:CC32E5*
ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
+OUI:CC3331*
+ ID_OUI_FROM_DATABASE=Texas Instruments
+
OUI:CC33BB*
ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS
OUI:CC66B2*
ID_OUI_FROM_DATABASE=Nokia
+OUI:CC68B6*
+ ID_OUI_FROM_DATABASE=TP-Link Corporation Limited
+
OUI:CC69B0*
ID_OUI_FROM_DATABASE=Global Traffic Technologies, LLC
OUI:CC6A10*
ID_OUI_FROM_DATABASE=The Chamberlain Group, Inc
+OUI:CC6B1E*
+ ID_OUI_FROM_DATABASE=CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.
+
OUI:CC6B98*
ID_OUI_FROM_DATABASE=Minetec Wireless Technologies
OUI:CC7F76*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+OUI:CC812A*
+ ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd.
+
OUI:CC81DA*
ID_OUI_FROM_DATABASE=Phicomm (Shanghai) Co., Ltd.
OUI:CC856C*
ID_OUI_FROM_DATABASE=SHENZHEN MDK DIGITAL TECHNOLOGY CO.,LTD
+OUI:CC86EC*
+ ID_OUI_FROM_DATABASE=Silicon Laboratories
+
OUI:CC874A*
ID_OUI_FROM_DATABASE=Nokia
OUI:CC8826*
ID_OUI_FROM_DATABASE=LG Innotek
+OUI:CC88C7*
+ ID_OUI_FROM_DATABASE=Aruba, a Hewlett Packard Enterprise Company
+
+OUI:CC895E*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:CC89FD*
ID_OUI_FROM_DATABASE=Nokia Corporation
OUI:CC9916*
ID_OUI_FROM_DATABASE=Integrated Device Technology (Malaysia) Sdn. Bhd.
+OUI:CC9C3E*
+ ID_OUI_FROM_DATABASE=Cisco Meraki
+
OUI:CC9E00*
ID_OUI_FROM_DATABASE=Nintendo Co., Ltd.
OUI:CCD9E9*
ID_OUI_FROM_DATABASE=SCR Engineers Ltd.
+OUI:CCDB04*
+ ID_OUI_FROM_DATABASE=DataRemote Inc.
+
OUI:CCDB93*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
OUI:CCEA1C*
ID_OUI_FROM_DATABASE=DCONWORKS Co., Ltd
+OUI:CCED21*
+ ID_OUI_FROM_DATABASE=Nokia Shanghai Bell Co., Ltd.
+
OUI:CCEDDC*
ID_OUI_FROM_DATABASE=MitraStar Technology Corp.
OUI:D07C2D*
ID_OUI_FROM_DATABASE=Leie IOT technology Co., Ltd
+OUI:D07D33*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:D07DE5*
ID_OUI_FROM_DATABASE=Forward Pay Systems, Inc.
OUI:D096FB*
ID_OUI_FROM_DATABASE=DASAN Network Solutions
+OUI:D097FE*
+ ID_OUI_FROM_DATABASE=Realme Chongqing Mobile Telecommunications Corp.,Ltd.
+
OUI:D099D5*
ID_OUI_FROM_DATABASE=Alcatel-Lucent
OUI:D0CF5E*
ID_OUI_FROM_DATABASE=Energy Micro AS
+OUI:D0CFD8*
+ ID_OUI_FROM_DATABASE=Huizhou Boshijie Technology Co.,Ltd
+
OUI:D0D003*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,LTD
OUI:D0DFC7*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:D0E042*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
OUI:D0E140*
ID_OUI_FROM_DATABASE=Apple, Inc.
OUI:D446E1*
ID_OUI_FROM_DATABASE=Apple, Inc.
+OUI:D4475A*
+ ID_OUI_FROM_DATABASE=ScreenBeam, Inc.
+
OUI:D4482D*
ID_OUI_FROM_DATABASE=Shenzhen Deejoy Lighting Technology Co.,Ltd.
OUI:D4772B*
ID_OUI_FROM_DATABASE=Nanjing Ztlink Network Technology Co.,Ltd
+OUI:D47798*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
OUI:D477B2*
ID_OUI_FROM_DATABASE=Netix Global B.V.
OUI:D858D7*
ID_OUI_FROM_DATABASE=CZ.NIC, z.s.p.o.
+OUI:D85982*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:D85B2A*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
OUI:D85DFB*
ID_OUI_FROM_DATABASE=Private
+OUI:D85ED3*
+ ID_OUI_FROM_DATABASE=GIGA-BYTE TECHNOLOGY CO.,LTD.
+
OUI:D85F77*
ID_OUI_FROM_DATABASE=Telink Semiconductor (Shanghai) Co., Ltd.
OUI:D89A34*
ID_OUI_FROM_DATABASE=Beijing SHENQI Technology Co., Ltd.
+OUI:D89AC1*
+ ID_OUI_FROM_DATABASE=Nokia
+
OUI:D89B3B*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
OUI:D8A315*
ID_OUI_FROM_DATABASE=vivo Mobile Communication Co., Ltd.
+OUI:D8A35C*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
OUI:D8A491*
ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
OUI:D8BB2C*
ID_OUI_FROM_DATABASE=Apple, Inc.
+OUI:D8BBC1*
+ ID_OUI_FROM_DATABASE=Micro-Star INTL CO., LTD.
+
OUI:D8BC59*
ID_OUI_FROM_DATABASE=Shenzhen DAPU Microelectronics Co., Ltd
OUI:D8CC98*
ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+OUI:D8CD2C*
+ ID_OUI_FROM_DATABASE=WUXI NEIHUA NETWORK TECHNOLOGY CO., LTD
+
OUI:D8CE3A*
ID_OUI_FROM_DATABASE=Xiaomi Communications Co Ltd
ID_OUI_FROM_DATABASE=TCT mobile ltd
OUI:D8E72B*
- ID_OUI_FROM_DATABASE=NetAlly
+ ID_OUI_FROM_DATABASE=NETSCOUT SYSTEMS INC
OUI:D8E743*
ID_OUI_FROM_DATABASE=Wush, Inc
OUI:D8E952*
ID_OUI_FROM_DATABASE=KEOPSYS
+OUI:D8EB46*
+ ID_OUI_FROM_DATABASE=Google, Inc.
+
OUI:D8EB97*
ID_OUI_FROM_DATABASE=TRENDnet, Inc.
+OUI:D8EC5E*
+ ID_OUI_FROM_DATABASE=Belkin International Inc.
+
+OUI:D8ECE5*
+ ID_OUI_FROM_DATABASE=Zyxel Communications Corporation
+
OUI:D8ED1C*
ID_OUI_FROM_DATABASE=Magna Technology SL
OUI:DC0EA1*
ID_OUI_FROM_DATABASE=COMPAL INFORMATION (KUNSHAN) CO., LTD.
+OUI:DC15C8*
+ ID_OUI_FROM_DATABASE=AVM Audiovisuelles Marketing und Computersysteme GmbH
+
OUI:DC15DB*
ID_OUI_FROM_DATABASE=Ge Ruili Intelligent Technology ( Beijing ) Co., Ltd.
OUI:DC2C26*
ID_OUI_FROM_DATABASE=Iton Technology Limited
+OUI:DC2D3C*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:DC2DCB*
ID_OUI_FROM_DATABASE=Beijing Unis HengYue Technology Co., Ltd.
OUI:DC86D8*
ID_OUI_FROM_DATABASE=Apple, Inc.
+OUI:DC87CB*
+ ID_OUI_FROM_DATABASE=Beijing Perfectek Technologies Co., Ltd.
+
OUI:DC8983*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
OUI:DCB082*
ID_OUI_FROM_DATABASE=Nokia
+OUI:DCB131*
+ ID_OUI_FROM_DATABASE=SHENZHEN HUARUIAN TECHNOLOGY CO.,LTD
+
OUI:DCB3B4*
ID_OUI_FROM_DATABASE=Honeywell Environmental & Combustion Controls (Tianjin) Co., Ltd.
ID_OUI_FROM_DATABASE=Tiertime Corporation
OUI:DCE533A*
- ID_OUI_FROM_DATABASE=Private
+ ID_OUI_FROM_DATABASE=Amazinglayer Network Co., Ltd.
OUI:DCE533B*
ID_OUI_FROM_DATABASE=Tintel Hongkong Co.Ltd
OUI:E00C7F*
ID_OUI_FROM_DATABASE=Nintendo Co., Ltd.
+OUI:E00CE5*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:E00DB9*
ID_OUI_FROM_DATABASE=Cree, Inc.
OUI:E091F5*
ID_OUI_FROM_DATABASE=NETGEAR
+OUI:E0925C*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:E092A7*
ID_OUI_FROM_DATABASE=Feitian Technologies Co., Ltd
OUI:E0D9E3*
ID_OUI_FROM_DATABASE=Eltex Enterprise Ltd.
+OUI:E0DA90*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:E0DADC*
ID_OUI_FROM_DATABASE=JVC KENWOOD Corporation
OUI:E0DB88*
ID_OUI_FROM_DATABASE=Open Standard Digital-IF Interface for SATCOM Systems
+OUI:E0DBD1*
+ ID_OUI_FROM_DATABASE=Technicolor CH USA Inc.
+
OUI:E0DCA0*
ID_OUI_FROM_DATABASE=Siemens Industrial Automation Products Ltd Chengdu
OUI:E0E2E6*
ID_OUI_FROM_DATABASE=Espressif Inc.
+OUI:E0E37C*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:E0E5CF*
ID_OUI_FROM_DATABASE=Texas Instruments
OUI:E0E631*
ID_OUI_FROM_DATABASE=SNB TECHNOLOGIES LIMITED
+OUI:E0E656*
+ ID_OUI_FROM_DATABASE=Nethesis srl
+
OUI:E0E751*
ID_OUI_FROM_DATABASE=Nintendo Co., Ltd.
OUI:E0E7BB*
ID_OUI_FROM_DATABASE=Nureva, Inc.
+OUI:E0E8BB*
+ ID_OUI_FROM_DATABASE=Unicom Vsens Telecommunications Co., Ltd.
+
OUI:E0E8E6*
ID_OUI_FROM_DATABASE=Shenzhen C-Data Technology Co., Ltd.
ID_OUI_FROM_DATABASE=TomTom Software Ltd
OUI:E405F8*
- ID_OUI_FROM_DATABASE=Delta Innovation Technology Co., Ltd.
+ ID_OUI_FROM_DATABASE=Bytedance
OUI:E40EEE*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
OUI:E42771*
ID_OUI_FROM_DATABASE=Smartlabs
+OUI:E428A4*
+ ID_OUI_FROM_DATABASE=Prama India Private Limited
+
OUI:E42AD3*
ID_OUI_FROM_DATABASE=Magneti Marelli S.p.A. Powertrain
OUI:E44122*
ID_OUI_FROM_DATABASE=OnePlus Technology (Shenzhen) Co., Ltd
+OUI:E44164*
+ ID_OUI_FROM_DATABASE=Nokia
+
OUI:E441E6*
ID_OUI_FROM_DATABASE=Ottec Technology GmbH
OUI:E44E18*
ID_OUI_FROM_DATABASE=Gardasoft VisionLimited
+OUI:E44E2D*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
OUI:E44E76*
ID_OUI_FROM_DATABASE=CHAMPIONTECH ENTERPRISE (SHENZHEN) INC
OUI:E454E8*
ID_OUI_FROM_DATABASE=Dell Inc.
+OUI:E455A8*
+ ID_OUI_FROM_DATABASE=Cisco Meraki
+
OUI:E455EA*
ID_OUI_FROM_DATABASE=Dedicated Computing
OUI:E47723*
ID_OUI_FROM_DATABASE=zte corporation
+OUI:E47727*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:E4776B*
ID_OUI_FROM_DATABASE=AARTESYS AG
OUI:E4C806*
ID_OUI_FROM_DATABASE=Ceiec Electric Technology Inc.
+OUI:E4C90B*
+ ID_OUI_FROM_DATABASE=Radwin
+
OUI:E4CA12*
ID_OUI_FROM_DATABASE=zte corporation
OUI:E4F4C6*
ID_OUI_FROM_DATABASE=NETGEAR
+OUI:E4F75B*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
OUI:E4F7A1*
ID_OUI_FROM_DATABASE=Datafox GmbH
OUI:E4FC82*
ID_OUI_FROM_DATABASE=Juniper Networks
+OUI:E4FD45*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
OUI:E4FDA1*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
OUI:E81CBA*
ID_OUI_FROM_DATABASE=Fortinet, Inc.
+OUI:E81CD8*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:E81DA8*
ID_OUI_FROM_DATABASE=Ruckus Wireless
OUI:E84C56*
ID_OUI_FROM_DATABASE=INTERCEPT SERVICES LIMITED
+OUI:E84D74*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:E84DD0*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
OUI:E84ECE*
ID_OUI_FROM_DATABASE=Nintendo Co., Ltd.
+OUI:E84F25*
+ ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd.
+
OUI:E84F4B*
ID_OUI_FROM_DATABASE=Shenzhen Delos Electronic Co., Ltd
OUI:E86A64*
ID_OUI_FROM_DATABASE=LCFC(HeFei) Electronics Technology co., ltd
+OUI:E86CC70*
+ ID_OUI_FROM_DATABASE=Trapeze Switzerland GmbH
+
+OUI:E86CC71*
+ ID_OUI_FROM_DATABASE=ASSA ABLOY(GuangZhou) Smart Technology Co., Ltd
+
+OUI:E86CC72*
+ ID_OUI_FROM_DATABASE=Xirgo Technologies LLC
+
+OUI:E86CC73*
+ ID_OUI_FROM_DATABASE=Shenzhen Yibaifen Industrial Co.,Ltd.
+
+OUI:E86CC74*
+ ID_OUI_FROM_DATABASE=Koal Software Co., Ltd
+
+OUI:E86CC75*
+ ID_OUI_FROM_DATABASE=Shenzhen Rongda Computer Co.,Ltd
+
+OUI:E86CC76*
+ ID_OUI_FROM_DATABASE=KLAB
+
+OUI:E86CC77*
+ ID_OUI_FROM_DATABASE=Huaqin Technology Co.,Ltd
+
+OUI:E86CC78*
+ ID_OUI_FROM_DATABASE=Lighthouse EIP
+
+OUI:E86CC79*
+ ID_OUI_FROM_DATABASE=Hangzhou Lanxum Security Technology Co., Ltd
+
+OUI:E86CC7A*
+ ID_OUI_FROM_DATABASE=CoxSpace
+
+OUI:E86CC7B*
+ ID_OUI_FROM_DATABASE=MORNSUN Guangzhou Science & Technology Co., Ltd.
+
+OUI:E86CC7C*
+ ID_OUI_FROM_DATABASE=Limited Liability Company M.S.Korp
+
+OUI:E86CC7D*
+ ID_OUI_FROM_DATABASE=z-max mediasolution
+
+OUI:E86CC7E*
+ ID_OUI_FROM_DATABASE=Annapurna labs
+
OUI:E86CDA*
ID_OUI_FROM_DATABASE=Supercomputers and Neurocomputers Research Center
ID_OUI_FROM_DATABASE=Toshiba
OUI:E89E0C*
- ID_OUI_FROM_DATABASE=Private
+ ID_OUI_FROM_DATABASE=MAX8USA DISTRIBUTORS INC.
OUI:E89EB4*
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+OUI:E89F39*
+ ID_OUI_FROM_DATABASE=Nokia
+
OUI:E89F80*
ID_OUI_FROM_DATABASE=Belkin International Inc.
OUI:E8A4C1*
ID_OUI_FROM_DATABASE=Deep Sea Electronics Ltd
+OUI:E8A660*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:E8A788*
ID_OUI_FROM_DATABASE=XIAMEN LEELEN TECHNOLOGY CO., LTD
OUI:E8E98E*
ID_OUI_FROM_DATABASE=SOLAR controls s.r.o.
+OUI:E8EA4D*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:E8EA6A*
ID_OUI_FROM_DATABASE=StarTech.com
OUI:E8F408*
ID_OUI_FROM_DATABASE=Intel Corporate
+OUI:E8F654*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:E8F724*
ID_OUI_FROM_DATABASE=Hewlett Packard Enterprise
OUI:E8FCAF*
ID_OUI_FROM_DATABASE=NETGEAR
+OUI:E8FD35*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:E8FD72*
ID_OUI_FROM_DATABASE=SHANGHAI LINGUO TECHNOLOGY CO., LTD.
OUI:EC01EE*
ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
+OUI:EC0273*
+ ID_OUI_FROM_DATABASE=Aruba, a Hewlett Packard Enterprise Company
+
OUI:EC0441*
ID_OUI_FROM_DATABASE=ShenZhen TIGO Semiconductor Co., Ltd.
OUI:EC086B*
ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
+OUI:EC0BAE*
+ ID_OUI_FROM_DATABASE=Hangzhou BroadLink Technology Co.,Ltd
+
OUI:EC0D9A*
ID_OUI_FROM_DATABASE=Mellanox Technologies, Inc.
OUI:EC14F6*
ID_OUI_FROM_DATABASE=BioControl AS
+OUI:EC153D*
+ ID_OUI_FROM_DATABASE=Beijing Yaxunhongda Technology Co., Ltd.
+
OUI:EC172F*
ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
OUI:EC2E4E*
ID_OUI_FROM_DATABASE=HITACHI-LG DATA STORAGE INC
+OUI:EC2E98*
+ ID_OUI_FROM_DATABASE=AzureWave Technology Inc.
+
OUI:EC3091*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
OUI:EC6264*
ID_OUI_FROM_DATABASE=Global411 Internet Services, LLC
+OUI:EC63D7*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
OUI:EC63E5*
ID_OUI_FROM_DATABASE=ePBoard Design LLC
OUI:ECB313*
ID_OUI_FROM_DATABASE=SHENZHEN GONGJIN ELECTRONICS CO.,LT
+OUI:ECB4E8*
+ ID_OUI_FROM_DATABASE=Wistron Mexico SA de CV
+
OUI:ECB541*
ID_OUI_FROM_DATABASE=SHINANO E and E Co.Ltd.
OUI:ECB907*
ID_OUI_FROM_DATABASE=CloudGenix Inc
+OUI:ECB970*
+ ID_OUI_FROM_DATABASE=Ruijie Networks Co.,LTD
+
OUI:ECBAFE*
ID_OUI_FROM_DATABASE=GIROPTIC
OUI:ECC57F*
ID_OUI_FROM_DATABASE=Suzhou Pairlink Network Technology
+OUI:ECC5D2*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:ECC882*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
OUI:F0007F*
ID_OUI_FROM_DATABASE=Janz - Contadores de Energia, SA
+OUI:F0016E*
+ ID_OUI_FROM_DATABASE=Tianyi Telecom Terminals Company Limited
+
OUI:F0022B*
ID_OUI_FROM_DATABASE=Chrontel
OUI:F0219D*
ID_OUI_FROM_DATABASE=Cal-Comp Electronics & Communications Company Ltd.
+OUI:F021E0*
+ ID_OUI_FROM_DATABASE=eero inc.
+
OUI:F0224E*
ID_OUI_FROM_DATABASE=Esan electronic co.
ID_OUI_FROM_DATABASE=Shenzhen Lachesis Mhealth Co., Ltd.
OUI:F023B9D*
- ID_OUI_FROM_DATABASE=Private
+ ID_OUI_FROM_DATABASE=Shenyang Ali Technology Company Limited
OUI:F023B9E*
ID_OUI_FROM_DATABASE=Domotz Ltd
OUI:F02E51*
ID_OUI_FROM_DATABASE=Casa Systems
+OUI:F02F4B*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:F02F74*
ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
OUI:F0463B*
ID_OUI_FROM_DATABASE=Comcast Cable Corporation
+OUI:F04A02*
+ ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+
OUI:F04A2B*
ID_OUI_FROM_DATABASE=PYRAMID Computer GmbH
OUI:F0620D*
ID_OUI_FROM_DATABASE=Shenzhen Egreat Tech Corp.,Ltd
+OUI:F0625A*
+ ID_OUI_FROM_DATABASE=Realme Chongqing Mobile Telecommunications Corp.,Ltd.
+
OUI:F06281*
ID_OUI_FROM_DATABASE=ProCurve Networking by HP
OUI:F07765*
ID_OUI_FROM_DATABASE=Sourcefire, Inc
+OUI:F077C3*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
OUI:F077D0*
ID_OUI_FROM_DATABASE=Xcellen
OUI:F09CE9*
ID_OUI_FROM_DATABASE=Extreme Networks, Inc.
+OUI:F09E4A*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
OUI:F09E63*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
OUI:F0A35A*
ID_OUI_FROM_DATABASE=Apple, Inc.
+OUI:F0A3B2*
+ ID_OUI_FROM_DATABASE=Hui Zhou Gaoshengda Technology Co.,LTD
+
OUI:F0A764*
ID_OUI_FROM_DATABASE=GST Co., Ltd.
OUI:F0B107*
ID_OUI_FROM_DATABASE=Ericsson AB
+OUI:F0B11D*
+ ID_OUI_FROM_DATABASE=Nokia
+
OUI:F0B2E5*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
OUI:F0CBA1*
ID_OUI_FROM_DATABASE=Apple, Inc.
+OUI:F0D08C*
+ ID_OUI_FROM_DATABASE=TCT mobile ltd
+
OUI:F0D14F*
ID_OUI_FROM_DATABASE=LINEAR LLC
OUI:F0FEE7*
ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+OUI:F40223*
+ ID_OUI_FROM_DATABASE=PAX Computer Technology(Shenzhen) Ltd.
+
+OUI:F40228*
+ ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO-MECHANICS(THAILAND)
+
OUI:F40270*
ID_OUI_FROM_DATABASE=Dell Inc.
OUI:F44156*
ID_OUI_FROM_DATABASE=Arrikto Inc.
+OUI:F4419E*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:F44227*
ID_OUI_FROM_DATABASE=S & S Research Inc.
OUI:F44450*
ID_OUI_FROM_DATABASE=BND Co., Ltd.
+OUI:F44588*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:F445ED*
ID_OUI_FROM_DATABASE=Portable Innovation Technology Ltd.
OUI:F44E05*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+OUI:F44EE3*
+ ID_OUI_FROM_DATABASE=Intel Corporate
+
OUI:F44EFD*
ID_OUI_FROM_DATABASE=Actions Semiconductor Co.,Ltd.(Cayman Islands)
OUI:F46ABC*
ID_OUI_FROM_DATABASE=Adonit Corp. Ltd.
+OUI:F46AD7*
+ ID_OUI_FROM_DATABASE=Microsoft Corporation
+
+OUI:F46B8C*
+ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co., Ltd.
+
OUI:F46BEF*
ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS
OUI:F4A739*
ID_OUI_FROM_DATABASE=Juniper Networks
+OUI:F4A80D*
+ ID_OUI_FROM_DATABASE=Wistron InfoComm(Kunshan)Co.,Ltd.
+
OUI:F4A997*
ID_OUI_FROM_DATABASE=CANON INC.
OUI:F4B164*
ID_OUI_FROM_DATABASE=Lightning Telecommunications Technology Co. Ltd
+OUI:F4B1C2*
+ ID_OUI_FROM_DATABASE=Zhejiang Dahua Technology Co., Ltd.
+
OUI:F4B301*
ID_OUI_FROM_DATABASE=Intel Corporate
OUI:F4BD9E*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
+OUI:F4BEEC*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:F4BF80*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
OUI:F4C795*
- ID_OUI_FROM_DATABASE=WEY Elektronik AG
+ ID_OUI_FROM_DATABASE=WEY Technology AG
+
+OUI:F4C7AA*
+ ID_OUI_FROM_DATABASE=Marvell Semiconductors
OUI:F4C7C8*
ID_OUI_FROM_DATABASE=Kelvin Inc.
OUI:F4F951*
ID_OUI_FROM_DATABASE=Apple, Inc.
+OUI:F4FBB8*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:F4FC32*
ID_OUI_FROM_DATABASE=Texas Instruments
OUI:F81897*
ID_OUI_FROM_DATABASE=2Wire Inc
+OUI:F81A2B*
+ ID_OUI_FROM_DATABASE=Google, Inc.
+
OUI:F81A67*
ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
OUI:F83DFF*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+OUI:F83E95*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:F83F51*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
OUI:F845AD*
ID_OUI_FROM_DATABASE=Konka Group Co., Ltd.
+OUI:F845C4*
+ ID_OUI_FROM_DATABASE=Shenzhen Netforward Micro-Electronic Co., Ltd.
+
OUI:F8461C*
ID_OUI_FROM_DATABASE=Sony Interactive Entertainment Inc.
OUI:F84ABF*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+OUI:F84CDA*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:F84D33*
ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Technologies Co.,LTD
OUI:F877B8*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:F8790A*
+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+
OUI:F87A41*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
OUI:F884F2*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:F885F9*
+ ID_OUI_FROM_DATABASE=Calix Inc.
+
OUI:F887F1*
ID_OUI_FROM_DATABASE=Apple, Inc.
OUI:F8893C*
ID_OUI_FROM_DATABASE=Inventec Appliances Corp.
+OUI:F889D2*
+ ID_OUI_FROM_DATABASE=CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.
+
OUI:F88A3C0*
ID_OUI_FROM_DATABASE=ART SPA
OUI:F895EA*
ID_OUI_FROM_DATABASE=Apple, Inc.
+OUI:F89753*
+ ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd.
+
OUI:F897CF*
ID_OUI_FROM_DATABASE=DAESHIN-INFORMATION TECHNOLOGY CO., LTD.
OUI:F8A9DE*
ID_OUI_FROM_DATABASE=PUISSANCE PLUS
+OUI:F8AA3F*
+ ID_OUI_FROM_DATABASE=DWnet Technologies(Suzhou) Corporation
+
OUI:F8AA8A*
ID_OUI_FROM_DATABASE=Axview Technology (Shenzhen) Co.,Ltd
OUI:F8AB05*
ID_OUI_FROM_DATABASE=Sagemcom Broadband SAS
+OUI:F8ABE5*
+ ID_OUI_FROM_DATABASE=shenzhen worldelite electronics co., LTD
+
OUI:F8AC65*
ID_OUI_FROM_DATABASE=Intel Corporate
OUI:FC1349*
ID_OUI_FROM_DATABASE=Global Apps Corp.
+OUI:FC13F0*
+ ID_OUI_FROM_DATABASE=Bouffalo Lab (Nanjing) Co., Ltd.
+
OUI:FC1499*
ID_OUI_FROM_DATABASE=Aimore Acoustics Incorporation
OUI:FC335F*
ID_OUI_FROM_DATABASE=Polyera
+OUI:FC3497*
+ ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
+
OUI:FC3598*
ID_OUI_FROM_DATABASE=Favite Inc.
OUI:FC3FDB*
ID_OUI_FROM_DATABASE=Hewlett Packard
+OUI:FC4009*
+ ID_OUI_FROM_DATABASE=zte corporation
+
OUI:FC4203*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
OUI:FC4D8C*
ID_OUI_FROM_DATABASE=SHENZHEN PANTE ELECTRONICS TECHNOLOGY CO., LTD
+OUI:FC4DA6*
+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+
OUI:FC4DD4*
ID_OUI_FROM_DATABASE=Universal Global Scientific Industrial Co., Ltd.
+OUI:FC4EA4*
+ ID_OUI_FROM_DATABASE=Apple, Inc.
+
OUI:FC5090*
ID_OUI_FROM_DATABASE=SIMEX Sp. z o.o.
OUI:FC55DC*
ID_OUI_FROM_DATABASE=Baltic Latvian Universal Electronics LLC
+OUI:FC584A*
+ ID_OUI_FROM_DATABASE=xiamenshi c-chip technology co., ltd
+
OUI:FC589A*
ID_OUI_FROM_DATABASE=Cisco Systems, Inc
OUI:FC9BC6*
ID_OUI_FROM_DATABASE=Sumavision Technologies Co.,Ltd
+OUI:FC9C98*
+ ID_OUI_FROM_DATABASE=Arlo Technology
+
OUI:FC9DD8*
ID_OUI_FROM_DATABASE=Beijing TongTongYiLian Science and Technology Ltd.
OUI:FCA9B0*
ID_OUI_FROM_DATABASE=MIARTECH (SHANGHAI),INC.
+OUI:FCA9DC*
+ ID_OUI_FROM_DATABASE=Renesas Electronics (Penang) Sdn. Bhd.
+
OUI:FCAA14*
ID_OUI_FROM_DATABASE=GIGA-BYTE TECHNOLOGY CO.,LTD.
OUI:FCE66A*
ID_OUI_FROM_DATABASE=Industrial Software Co
+OUI:FCE806*
+ ID_OUI_FROM_DATABASE=Edifier International
+
OUI:FCE892*
ID_OUI_FROM_DATABASE=Hangzhou Lancable Technology Co.,Ltd
acpi:TGV*:
ID_VENDOR_FROM_DATABASE=Grass Valley Germany GmbH
+acpi:TGW*:
+ ID_VENDOR_FROM_DATABASE=TECHNOGYM S.p.A.
+
acpi:THN*:
ID_VENDOR_FROM_DATABASE=Thundercom Holdings Sdn. Bhd.
---- 20-acpi-vendor.hwdb.base 2020-11-26 13:49:35.243482590 +0100
-+++ 20-acpi-vendor.hwdb 2020-11-26 13:49:35.260482675 +0100
+--- 20-acpi-vendor.hwdb.base 2021-02-12 15:42:10.664053745 +0100
++++ 20-acpi-vendor.hwdb 2021-02-12 15:42:10.706054210 +0100
@@ -3,6 +3,8 @@
# Data imported from:
# https://uefi.org/uefi-pnp-export
acpi:TEZ*:
ID_VENDOR_FROM_DATABASE=Tech Source Inc.
-@@ -6760,9 +6828,6 @@
+@@ -6763,9 +6831,6 @@
acpi:TNC*:
ID_VENDOR_FROM_DATABASE=TNC Industrial Company Ltd
acpi:TNM*:
ID_VENDOR_FROM_DATABASE=TECNIMAGEN SA
-@@ -7069,14 +7134,14 @@
+@@ -7072,14 +7137,14 @@
acpi:UNC*:
ID_VENDOR_FROM_DATABASE=Unisys Corporation
acpi:UNI*:
ID_VENDOR_FROM_DATABASE=Uniform Industry Corp.
-@@ -7111,6 +7176,9 @@
+@@ -7114,6 +7179,9 @@
acpi:USA*:
ID_VENDOR_FROM_DATABASE=Utimaco Safeware AG
acpi:USD*:
ID_VENDOR_FROM_DATABASE=U.S. Digital Corporation
-@@ -7357,9 +7425,6 @@
+@@ -7360,9 +7428,6 @@
acpi:WAL*:
ID_VENDOR_FROM_DATABASE=Wave Access
acpi:WAV*:
ID_VENDOR_FROM_DATABASE=Wavephore
-@@ -7484,7 +7549,7 @@
+@@ -7487,7 +7552,7 @@
ID_VENDOR_FROM_DATABASE=WyreStorm Technologies LLC
acpi:WYS*:
acpi:WYT*:
ID_VENDOR_FROM_DATABASE=Wooyoung Image & Information Co.,Ltd.
-@@ -7498,9 +7563,6 @@
+@@ -7501,9 +7566,6 @@
acpi:XDM*:
ID_VENDOR_FROM_DATABASE=XDM Ltd.
acpi:XES*:
ID_VENDOR_FROM_DATABASE=Extreme Engineering Solutions, Inc.
-@@ -7531,9 +7593,6 @@
+@@ -7534,9 +7596,6 @@
acpi:XNT*:
ID_VENDOR_FROM_DATABASE=XN Technologies, Inc.
acpi:XQU*:
ID_VENDOR_FROM_DATABASE=SHANGHAI SVA-DAV ELECTRONICS CO., LTD
-@@ -7600,6 +7659,9 @@
+@@ -7603,6 +7662,9 @@
acpi:ZBX*:
ID_VENDOR_FROM_DATABASE=Zebax Technologies
ID_MODEL_FROM_DATABASE=SAS3408 Fusion-MPT Tri-Mode I/O Controller Chip (IOC) (ThinkSystem 430-8i SAS/SATA 12Gb Dense HBA)
pci:v00001000d000000B2*
- ID_MODEL_FROM_DATABASE=PEX880xx PCIe Gen 4 Switch SES management endpoint
+ ID_MODEL_FROM_DATABASE=PCIe Switch management endpoint
+
+pci:v00001000d000000B2sv00001D49sd00000003*
+ ID_MODEL_FROM_DATABASE=PCIe Switch management endpoint (ThinkSystem 1611-8P PCIe Gen4 NVMe Switch Adapter)
pci:v00001000d000000BE*
ID_MODEL_FROM_DATABASE=SAS3504 Fusion-MPT Tri-Mode RAID On Chip (ROC)
pci:v00001000d00006001*
ID_MODEL_FROM_DATABASE=DX1 Multiformat Broadcast HD/SD Encoder/Decoder
+pci:v00001000d0000C012*
+ ID_MODEL_FROM_DATABASE=PEX880xx PCIe Gen 4 Switch
+
+pci:v00001000d0000C012sv00001D49sd00000003*
+ ID_MODEL_FROM_DATABASE=PEX880xx PCIe Gen 4 Switch (ThinkSystem 1611-8P PCIe Gen4 NVMe Switch Adapter)
+
pci:v00001001*
ID_VENDOR_FROM_DATABASE=Kolter Electronic
pci:v00001002d0000154C*
ID_MODEL_FROM_DATABASE=Kryptos [Radeon RX 350]
+pci:v00001002d0000154Csv00001462sd00007C28*
+ ID_MODEL_FROM_DATABASE=Kryptos [Radeon RX 350] (MS-7C28 Motherboard)
+
pci:v00001002d0000154E*
ID_MODEL_FROM_DATABASE=Garfield
pci:v00001002d000015D8sv000017AAsd00005124*
ID_MODEL_FROM_DATABASE=Picasso (ThinkPad E595)
+pci:v00001002d000015D8sv0000EA50sd0000CC10*
+ ID_MODEL_FROM_DATABASE=Picasso (RXi2-BP)
+
pci:v00001002d000015DD*
ID_MODEL_FROM_DATABASE=Raven Ridge [Radeon Vega Series / Radeon Vega Mobile Series]
pci:v00001002d000015DDsv0000103Csd000083C6*
ID_MODEL_FROM_DATABASE=Raven Ridge [Radeon Vega Series / Radeon Vega Mobile Series] (Radeon Vega 8 Mobile)
+pci:v00001002d000015DDsv00001043sd0000876B*
+ ID_MODEL_FROM_DATABASE=Raven Ridge [Radeon Vega Series / Radeon Vega Mobile Series] (PRIME Motherboard)
+
pci:v00001002d000015DDsv00001458sd0000D000*
ID_MODEL_FROM_DATABASE=Raven Ridge [Radeon Vega Series / Radeon Vega Mobile Series] (Radeon RX Vega 11)
+pci:v00001002d000015DDsv0000EA50sd0000CC10*
+ ID_MODEL_FROM_DATABASE=Raven Ridge [Radeon Vega Series / Radeon Vega Mobile Series] (RXi2-BP)
+
pci:v00001002d000015DE*
ID_MODEL_FROM_DATABASE=Raven/Raven2/Fenghuang HDMI/DP Audio Controller
pci:v00001002d000015DEsv0000103Csd00008615*
ID_MODEL_FROM_DATABASE=Raven/Raven2/Fenghuang HDMI/DP Audio Controller (Pavilion Laptop 15-cw1xxx)
+pci:v00001002d000015DEsv00001043sd0000876B*
+ ID_MODEL_FROM_DATABASE=Raven/Raven2/Fenghuang HDMI/DP Audio Controller (PRIME B450M-A Motherboard)
+
pci:v00001002d000015DEsv000017AAsd00005124*
ID_MODEL_FROM_DATABASE=Raven/Raven2/Fenghuang HDMI/DP Audio Controller (ThinkPad E595)
+pci:v00001002d000015DEsv0000EA50sd0000CC10*
+ ID_MODEL_FROM_DATABASE=Raven/Raven2/Fenghuang HDMI/DP Audio Controller (RXi2-BP)
+
pci:v00001002d000015DF*
ID_MODEL_FROM_DATABASE=Raven/Raven2/Fenghuang/Renoir Cryptographic Coprocessor
pci:v00001002d000015DFsv0000103Csd00008615*
ID_MODEL_FROM_DATABASE=Raven/Raven2/Fenghuang/Renoir Cryptographic Coprocessor (Pavilion Laptop 15-cw1xxx)
+pci:v00001002d000015DFsv0000EA50sd0000CE19*
+ ID_MODEL_FROM_DATABASE=Raven/Raven2/Fenghuang/Renoir Cryptographic Coprocessor (mCOM10-L1900)
+
pci:v00001002d000015FF*
ID_MODEL_FROM_DATABASE=Fenghuang [Zhongshan Subor Z+]
pci:v00001002d00001636*
ID_MODEL_FROM_DATABASE=Renoir
+pci:v00001002d00001638*
+ ID_MODEL_FROM_DATABASE=Cezanne
+
+pci:v00001002d0000163F*
+ ID_MODEL_FROM_DATABASE=VanGogh
+
+pci:v00001002d0000164C*
+ ID_MODEL_FROM_DATABASE=Lucienne
+
pci:v00001002d00001714*
ID_MODEL_FROM_DATABASE=BeaverCreek HDMI Audio [Radeon HD 6500D and 6400G-6600G series]
pci:v00001002d00004383sv00001458sd0000A102*
ID_MODEL_FROM_DATABASE=SBx00 Azalia (Intel HDA) (GA-880GMA-USB3)
+pci:v00001002d00004383sv00001462sd00007596*
+ ID_MODEL_FROM_DATABASE=SBx00 Azalia (Intel HDA) (760GM-E51(MS-7596) Motherboard)
+
pci:v00001002d00004383sv000017F2sd00005000*
ID_MODEL_FROM_DATABASE=SBx00 Azalia (Intel HDA) (KI690-AM2 Motherboard)
pci:v00001002d00004385sv00001462sd00007368*
ID_MODEL_FROM_DATABASE=SBx00 SMBus Controller (K9AG Neo2)
+pci:v00001002d00004385sv00001462sd00007596*
+ ID_MODEL_FROM_DATABASE=SBx00 SMBus Controller (760GM-E51(MS-7596) Motherboard)
+
pci:v00001002d00004385sv000015D9sd0000A811*
ID_MODEL_FROM_DATABASE=SBx00 SMBus Controller (H8DGU)
pci:v00001002d00004390sv00001458sd0000B002*
ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 SATA Controller [IDE mode] (GA-MA770-DS3rev2.0 Motherboard)
+pci:v00001002d00004390sv00001462sd00007596*
+ ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 SATA Controller [IDE mode] (760GM-E51(MS-7596) Motherboard)
+
pci:v00001002d00004390sv00001849sd00004390*
ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 SATA Controller [IDE mode] (Motherboard (one of many))
pci:v00001002d00004396sv00001458sd00005004*
ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 USB EHCI Controller (GA-880GMA-USB3)
+pci:v00001002d00004396sv00001462sd00007596*
+ ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 USB EHCI Controller (760GM-E51(MS-7596) Motherboard)
+
pci:v00001002d00004396sv000015D9sd0000A811*
ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 USB EHCI Controller (H8DGU)
pci:v00001002d00004397sv00001458sd00005004*
ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 USB OHCI0 Controller (GA-880GMA-USB3)
+pci:v00001002d00004397sv00001462sd00007596*
+ ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 USB OHCI0 Controller (760GM-E51(MS-7596) Motherboard)
+
pci:v00001002d00004397sv000015D9sd0000A811*
ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 USB OHCI0 Controller (H8DGU)
pci:v00001002d00004398sv0000105Bsd00000E13*
ID_MODEL_FROM_DATABASE=SB7x0 USB OHCI1 Controller (N15235/A74MX mainboard / AMD SB700)
+pci:v00001002d00004398sv00001462sd00007596*
+ ID_MODEL_FROM_DATABASE=SB7x0 USB OHCI1 Controller (760GM-E51(MS-7596) Motherboard)
+
pci:v00001002d00004398sv000015D9sd0000A811*
ID_MODEL_FROM_DATABASE=SB7x0 USB OHCI1 Controller (H8DGU)
pci:v00001002d00004399sv00001458sd00005004*
ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 USB OHCI2 Controller (GA-880GMA-USB3)
+pci:v00001002d00004399sv00001462sd00007596*
+ ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 USB OHCI2 Controller (760GM-E51(MS-7596) Motherboard)
+
pci:v00001002d00004399sv0000174Bsd00001001*
ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 USB OHCI2 Controller (PURE Fusion Mini)
pci:v00001002d0000439Csv0000105Bsd00000E13*
ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 IDE Controller (N15235/A74MX mainboard / AMD SB700)
+pci:v00001002d0000439Csv00001462sd00007596*
+ ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 IDE Controller (760GM-E51(MS-7596) Motherboard)
+
pci:v00001002d0000439D*
ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 LPC host controller
pci:v00001002d0000439Dsv0000105Bsd00000E13*
ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 LPC host controller (N15235/A74MX mainboard / AMD SB700)
+pci:v00001002d0000439Dsv00001462sd00007596*
+ ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 LPC host controller (760GM-E51(MS-7596) Motherboard)
+
pci:v00001002d0000439Dsv0000174Bsd00001001*
ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 LPC host controller (PURE Fusion Mini)
ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200 SE] (Radeon 9200 SE / TD / 128M)
pci:v00001002d00005964sv00001458sd00004018*
- ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200 SE] (Radeon 9200 SE)
+ ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200 SE] (R92S128T (Radeon 9200 SE 128MB))
pci:v00001002d00005964sv00001458sd00004032*
ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200 SE] (Radeon 9200 SE 128MB)
ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200 SE] (Secondary)
pci:v00001002d00005D44sv00001458sd00004019*
- ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200 SE] (Secondary) (Radeon 9200 SE (Secondary))
+ ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200 SE] (Secondary) (R92S128T (Radeon 9200 SE 128MB Secondary))
pci:v00001002d00005D44sv00001458sd00004032*
ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200 SE] (Secondary) (Radeon 9200 SE 128MB)
pci:v00001002d00006608sv000013CCsd00003D28*
ID_MODEL_FROM_DATABASE=Oland GL [FirePro W2100] (MXRT-2600)
+pci:v00001002d00006609*
+ ID_MODEL_FROM_DATABASE=Oland GL [FirePro W2100 / Barco MXRT 2600]
+
pci:v00001002d00006610*
ID_MODEL_FROM_DATABASE=Oland XT [Radeon HD 8670 / R7 250/350]
ID_MODEL_FROM_DATABASE=Vega 20 [Radeon Instinct]
pci:v00001002d000066A1*
- ID_MODEL_FROM_DATABASE=Vega 20
+ ID_MODEL_FROM_DATABASE=Vega 20 WKS GL-XE [Radeon Pro VII]
pci:v00001002d000066A2*
ID_MODEL_FROM_DATABASE=Vega 20
pci:v00001002d000066A3*
- ID_MODEL_FROM_DATABASE=Vega 20
+ ID_MODEL_FROM_DATABASE=Vega 20 [Radeon Pro Vega II/Radeon Pro Vega II Duo]
pci:v00001002d000066A7*
ID_MODEL_FROM_DATABASE=Vega 20 [Radeon Pro Vega 20]
pci:v00001002d000067B1sv0000174Bsd0000E324*
ID_MODEL_FROM_DATABASE=Hawaii PRO [Radeon R9 290/390] (Sapphire Nitro R9 390)
+pci:v00001002d000067B8*
+ ID_MODEL_FROM_DATABASE=Hawaii XT [Radeon R9 290X Engineering Sample]
+
pci:v00001002d000067B9*
ID_MODEL_FROM_DATABASE=Vesuvius [Radeon R9 295X2]
pci:v00001002d000067DFsv00001462sd0000341E*
ID_MODEL_FROM_DATABASE=Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] (Radeon RX 570 Armor 4G OC)
+pci:v00001002d000067DFsv00001462sd0000809E*
+ ID_MODEL_FROM_DATABASE=Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] (Radeon RX 480 4GB)
+
pci:v00001002d000067DFsv00001462sd00008A92*
ID_MODEL_FROM_DATABASE=Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] (Radeon RX 580)
pci:v00001002d000067DFsv00001682sd00009480*
ID_MODEL_FROM_DATABASE=Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] (Radeon RX 480)
+pci:v00001002d000067DFsv00001682sd00009587*
+ ID_MODEL_FROM_DATABASE=Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] (Radeon RX 590 FATBOY 8GB)
+
pci:v00001002d000067DFsv00001682sd00009588*
ID_MODEL_FROM_DATABASE=Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] (Radeon RX 580 XTR)
pci:v00001002d00006868*
ID_MODEL_FROM_DATABASE=Vega 10 [Radeon PRO WX 8100/8200]
+pci:v00001002d00006869*
+ ID_MODEL_FROM_DATABASE=Vega 10 XGA [Radeon Pro Vega 48]
+
+pci:v00001002d0000686A*
+ ID_MODEL_FROM_DATABASE=Vega 10 LEA
+
+pci:v00001002d0000686B*
+ ID_MODEL_FROM_DATABASE=Vega 10 XTXA [Radeon Pro Vega 64X]
+
pci:v00001002d0000686C*
ID_MODEL_FROM_DATABASE=Vega 10 [Radeon Instinct MI25 MxGPU]
+pci:v00001002d0000686D*
+ ID_MODEL_FROM_DATABASE=Vega 10 GLXTA
+
+pci:v00001002d0000686E*
+ ID_MODEL_FROM_DATABASE=Vega 10 GLXLA
+
pci:v00001002d0000687F*
ID_MODEL_FROM_DATABASE=Vega 10 XL/XT [Radeon RX Vega 56/64]
pci:v00001002d0000687Fsv00001458sd0000230C*
ID_MODEL_FROM_DATABASE=Vega 10 XL/XT [Radeon RX Vega 56/64] (Radeon RX VEGA 56 GAMING OC 8G)
+pci:v00001002d0000687Fsv00001DA2sd0000E376*
+ ID_MODEL_FROM_DATABASE=Vega 10 XL/XT [Radeon RX Vega 56/64] (Radeon RX VEGA 56 Pulse 8GB OC HBM2)
+
pci:v00001002d00006880*
ID_MODEL_FROM_DATABASE=Lexington [Radeon HD 6550M]
pci:v00001002d000068DA*
ID_MODEL_FROM_DATABASE=Redwood LE [Radeon HD 5550/5570/5630/6390/6490/7570]
+pci:v00001002d000068DAsv00001462sd00008071*
+ ID_MODEL_FROM_DATABASE=Redwood LE [Radeon HD 5550/5570/5630/6390/6490/7570] (VR5550-MD1G (Radeon HD 5550))
+
pci:v00001002d000068DAsv0000148Csd00003000*
ID_MODEL_FROM_DATABASE=Redwood LE [Radeon HD 5550/5570/5630/6390/6490/7570] (Radeon HD 6390)
pci:v00001002d0000731Fsv00001458sd00002313*
ID_MODEL_FROM_DATABASE=Navi 10 [Radeon RX 5600 OEM/5600 XT / 5700/5700 XT] (Radeon RX 5700 XT Gaming OC)
+pci:v00001002d0000731Fsv00001682sd00005701*
+ ID_MODEL_FROM_DATABASE=Navi 10 [Radeon RX 5600 OEM/5600 XT / 5700/5700 XT] (RX 5700 XT RAW II)
+
pci:v00001002d0000731Fsv00001DA2sd0000E411*
ID_MODEL_FROM_DATABASE=Navi 10 [Radeon RX 5600 OEM/5600 XT / 5700/5700 XT] (Radeon RX 5600 XT)
pci:v00001002d00007360*
ID_MODEL_FROM_DATABASE=Navi 12 [Radeon Pro 5600M]
+pci:v00001002d00007388*
+ ID_MODEL_FROM_DATABASE=Arcturus GL-XL
+
+pci:v00001002d0000738C*
+ ID_MODEL_FROM_DATABASE=Arcturus GL-XL [AMD Instinct MI100]
+
+pci:v00001002d0000738E*
+ ID_MODEL_FROM_DATABASE=Arcturus GL-XL
+
pci:v00001002d000073BF*
ID_MODEL_FROM_DATABASE=Navi 21 [Radeon RX 6800/6800 XT / 6900 XT]
+pci:v00001002d000073BFsv00001EAEsd00006701*
+ ID_MODEL_FROM_DATABASE=Navi 21 [Radeon RX 6800/6800 XT / 6900 XT] (XFX Speedster MERC 319 AMD Radeon RX 6800 XT Black)
+
pci:v00001002d000073C3*
ID_MODEL_FROM_DATABASE=Navi 22
pci:v00001002d000073DF*
ID_MODEL_FROM_DATABASE=Navi 22
+pci:v00001002d000073E0*
+ ID_MODEL_FROM_DATABASE=Navi 23
+
pci:v00001002d000073FF*
ID_MODEL_FROM_DATABASE=Navi 23
pci:v00001002d0000960F*
ID_MODEL_FROM_DATABASE=RS780 HDMI Audio [Radeon 3000/3100 / HD 3200/3300]
+pci:v00001002d0000960Fsv00001462sd00007596*
+ ID_MODEL_FROM_DATABASE=RS780 HDMI Audio [Radeon 3000/3100 / HD 3200/3300] (760GM-E51(MS-7596) Motherboard)
+
pci:v00001002d00009610*
ID_MODEL_FROM_DATABASE=RS780 [Radeon HD 3200]
pci:v00001002d00009616*
ID_MODEL_FROM_DATABASE=RS780L [Radeon 3000]
+pci:v00001002d00009616sv00001462sd00007501*
+ ID_MODEL_FROM_DATABASE=RS780L [Radeon 3000] (760GM-E51(MS-7596) Motherboard)
+
pci:v00001002d00009640*
ID_MODEL_FROM_DATABASE=Sumo [Radeon HD 6550D]
pci:v00001002d00009830*
ID_MODEL_FROM_DATABASE=Kabini [Radeon HD 8400 / R3 Series]
+pci:v00001002d00009830sv00001043sd00008623*
+ ID_MODEL_FROM_DATABASE=Kabini [Radeon HD 8400 / R3 Series] (AM1I-A Motherboard)
+
pci:v00001002d00009831*
ID_MODEL_FROM_DATABASE=Kabini [Radeon HD 8400E]
pci:v00001002d00009840*
ID_MODEL_FROM_DATABASE=Kabini HDMI/DP Audio
+pci:v00001002d00009840sv00001043sd00008623*
+ ID_MODEL_FROM_DATABASE=Kabini HDMI/DP Audio (AM1I-A Motherboard)
+
pci:v00001002d00009840sv00001849sd00009840*
ID_MODEL_FROM_DATABASE=Kabini HDMI/DP Audio (QC5000-ITX/PH)
pci:v00001022d00001452*
ID_MODEL_FROM_DATABASE=Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge
+pci:v00001022d00001452sv0000EA50sd0000CE19*
+ ID_MODEL_FROM_DATABASE=Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge (mCOM10-L1900)
+
pci:v00001022d00001453*
ID_MODEL_FROM_DATABASE=Family 17h (Models 00h-0fh) PCIe GPP Bridge
pci:v00001022d0000149Csv00001462sd00007C37*
ID_MODEL_FROM_DATABASE=Matisse USB 3.0 Host Controller (X570-A PRO motherboard)
+pci:v00001022d0000149D*
+ ID_MODEL_FROM_DATABASE=Vangogh CVIP
+
pci:v00001022d00001510*
ID_MODEL_FROM_DATABASE=Family 14h Processor Root Complex
pci:v00001022d00001536*
ID_MODEL_FROM_DATABASE=Family 16h Processor Root Complex
+pci:v00001022d00001536sv00001043sd00008623*
+ ID_MODEL_FROM_DATABASE=Family 16h Processor Root Complex (AM1I-A Motherboard)
+
pci:v00001022d00001536sv00001849sd00001536*
ID_MODEL_FROM_DATABASE=Family 16h Processor Root Complex (QC5000-ITX/PH)
pci:v00001022d000015D0sv0000103Csd00008615*
ID_MODEL_FROM_DATABASE=Raven/Raven2 Root Complex (Pavilion Laptop 15-cw1xxx)
+pci:v00001022d000015D0sv00001043sd0000876B*
+ ID_MODEL_FROM_DATABASE=Raven/Raven2 Root Complex (PRIME B450M-A Motherboard)
+
pci:v00001022d000015D1*
ID_MODEL_FROM_DATABASE=Raven/Raven2 IOMMU
pci:v00001022d000015D1sv0000103Csd00008615*
ID_MODEL_FROM_DATABASE=Raven/Raven2 IOMMU (Pavilion Laptop 15-cw1xxx)
+pci:v00001022d000015D1sv00001043sd0000876B*
+ ID_MODEL_FROM_DATABASE=Raven/Raven2 IOMMU (PRIME B450M-A Motherboard)
+
+pci:v00001022d000015D1sv0000EA50sd0000CE19*
+ ID_MODEL_FROM_DATABASE=Raven/Raven2 IOMMU (mCOM10-L1900)
+
pci:v00001022d000015D2*
ID_MODEL_FROM_DATABASE=Raven/Raven2 PCIe Dummy Host Bridge
pci:v00001022d000015DB*
ID_MODEL_FROM_DATABASE=Raven/Raven2 Internal PCIe GPP Bridge 0 to Bus A
+pci:v00001022d000015DBsv0000EA50sd0000CE19*
+ ID_MODEL_FROM_DATABASE=Raven/Raven2 Internal PCIe GPP Bridge 0 to Bus A (mCOM10-L1900)
+
pci:v00001022d000015DC*
ID_MODEL_FROM_DATABASE=Raven/Raven2 Internal PCIe GPP Bridge 0 to Bus B
+pci:v00001022d000015DCsv0000EA50sd0000CE19*
+ ID_MODEL_FROM_DATABASE=Raven/Raven2 Internal PCIe GPP Bridge 0 to Bus B (mCOM10-L1900)
+
pci:v00001022d000015DE*
ID_MODEL_FROM_DATABASE=Raven/Raven2/FireFlight HD Audio Controller
pci:v00001022d000015DF*
ID_MODEL_FROM_DATABASE=Family 17h (Models 10h-1fh) Platform Security Processor
+pci:v00001022d000015DFsv00001043sd0000876B*
+ ID_MODEL_FROM_DATABASE=Family 17h (Models 10h-1fh) Platform Security Processor (PRIME Motherboard)
+
pci:v00001022d000015DFsv000017AAsd00005124*
ID_MODEL_FROM_DATABASE=Family 17h (Models 10h-1fh) Platform Security Processor (ThinkPad E595)
+pci:v00001022d000015DFsv0000EA50sd0000CE19*
+ ID_MODEL_FROM_DATABASE=Family 17h (Models 10h-1fh) Platform Security Processor (mCOM10-L1900)
+
pci:v00001022d000015E0*
ID_MODEL_FROM_DATABASE=Raven USB 3.1
pci:v00001022d000015E0sv0000103Csd00008615*
ID_MODEL_FROM_DATABASE=Raven USB 3.1 (Pavilion Laptop 15-cw1xxx)
+pci:v00001022d000015E0sv00001043sd0000876B*
+ ID_MODEL_FROM_DATABASE=Raven USB 3.1 (PRIME Motherboard)
+
pci:v00001022d000015E0sv000017AAsd00005124*
ID_MODEL_FROM_DATABASE=Raven USB 3.1 (ThinkPad E595)
+pci:v00001022d000015E0sv0000EA50sd0000CE19*
+ ID_MODEL_FROM_DATABASE=Raven USB 3.1 (mCOM10-L1900)
+
pci:v00001022d000015E1*
ID_MODEL_FROM_DATABASE=Raven USB 3.1
pci:v00001022d000015E1sv0000103Csd00008615*
ID_MODEL_FROM_DATABASE=Raven USB 3.1 (Pavilion Laptop 15-cw1xxx)
+pci:v00001022d000015E1sv00001043sd0000876B*
+ ID_MODEL_FROM_DATABASE=Raven USB 3.1 (PRIME Motherboard)
+
pci:v00001022d000015E1sv000017AAsd00005124*
ID_MODEL_FROM_DATABASE=Raven USB 3.1 (ThinkPad E595)
+pci:v00001022d000015E1sv0000EA50sd0000CE19*
+ ID_MODEL_FROM_DATABASE=Raven USB 3.1 (mCOM10-L1900)
+
pci:v00001022d000015E2*
ID_MODEL_FROM_DATABASE=Raven/Raven2/FireFlight/Renoir Audio Processor
pci:v00001022d000015E3sv0000103Csd00008615*
ID_MODEL_FROM_DATABASE=Family 17h (Models 10h-1fh) HD Audio Controller (Pavilion Laptop 15-cw1xxx)
+pci:v00001022d000015E3sv00001043sd000086C7*
+ ID_MODEL_FROM_DATABASE=Family 17h (Models 10h-1fh) HD Audio Controller (PRIME B450M-A Motherboard)
+
pci:v00001022d000015E3sv000017AAsd00005124*
ID_MODEL_FROM_DATABASE=Family 17h (Models 10h-1fh) HD Audio Controller (ThinkPad E595)
pci:v00001022d00001644*
ID_MODEL_FROM_DATABASE=Renoir I2S
+pci:v00001022d00001648*
+ ID_MODEL_FROM_DATABASE=VanGogh Root Complex
+
+pci:v00001022d00001649*
+ ID_MODEL_FROM_DATABASE=VanGogh PSP/CCP
+
pci:v00001022d00001700*
ID_MODEL_FROM_DATABASE=Family 12h/14h Processor Function 0
pci:v00001022d00007801sv0000103Csd0000194E*
ID_MODEL_FROM_DATABASE=FCH SATA Controller [AHCI mode] (ProBook 455 G1 Notebook)
+pci:v00001022d00007801sv00001043sd00008623*
+ ID_MODEL_FROM_DATABASE=FCH SATA Controller [AHCI mode] (AM1I-A Motherboard)
+
pci:v00001022d00007801sv000017AAsd00003988*
ID_MODEL_FROM_DATABASE=FCH SATA Controller [AHCI mode] (Z50-75)
pci:v00001022d00007807sv0000103Csd00001985*
ID_MODEL_FROM_DATABASE=FCH USB OHCI Controller (Pavilion 17-e163sg Notebook PC)
+pci:v00001022d00007807sv00001043sd00008623*
+ ID_MODEL_FROM_DATABASE=FCH USB OHCI Controller (AM1I-A Motherboard)
+
pci:v00001022d00007807sv000017AAsd00003988*
ID_MODEL_FROM_DATABASE=FCH USB OHCI Controller (Z50-75)
pci:v00001022d00007808sv0000103Csd00001985*
ID_MODEL_FROM_DATABASE=FCH USB EHCI Controller (Pavilion 17-e163sg Notebook PC)
+pci:v00001022d00007808sv00001043sd00008623*
+ ID_MODEL_FROM_DATABASE=FCH USB EHCI Controller (AM1I-A Motherboard)
+
pci:v00001022d00007808sv000017AAsd00003988*
ID_MODEL_FROM_DATABASE=FCH USB EHCI Controller (Z50-75)
pci:v00001022d0000780Bsv0000103Csd00001985*
ID_MODEL_FROM_DATABASE=FCH SMBus Controller (Pavilion 17-e163sg Notebook PC)
+pci:v00001022d0000780Bsv00001043sd00008623*
+ ID_MODEL_FROM_DATABASE=FCH SMBus Controller (AM1I-A Motherboard)
+
pci:v00001022d0000780Bsv000017AAsd00003988*
ID_MODEL_FROM_DATABASE=FCH SMBus Controller (Z50-75)
pci:v00001022d0000780Dsv00001043sd00008444*
ID_MODEL_FROM_DATABASE=FCH Azalia Controller (F2A85-M Series)
+pci:v00001022d0000780Dsv00001043sd00008576*
+ ID_MODEL_FROM_DATABASE=FCH Azalia Controller (AM1I-A Motherboard)
+
pci:v00001022d0000780Dsv000017AAsd00003988*
ID_MODEL_FROM_DATABASE=FCH Azalia Controller (Z50-75)
pci:v00001022d0000780Esv0000103Csd00001985*
ID_MODEL_FROM_DATABASE=FCH LPC Bridge (Pavilion 17-e163sg Notebook PC)
+pci:v00001022d0000780Esv00001043sd00008623*
+ ID_MODEL_FROM_DATABASE=FCH LPC Bridge (AM1I-A Motherboard)
+
pci:v00001022d0000780Esv000017AAsd00003988*
ID_MODEL_FROM_DATABASE=FCH LPC Bridge (Z50-75)
pci:v00001022d00007814sv0000103Csd00001985*
ID_MODEL_FROM_DATABASE=FCH USB XHCI Controller (Pavilion 17-e163sg Notebook PC)
+pci:v00001022d00007814sv00001043sd00008623*
+ ID_MODEL_FROM_DATABASE=FCH USB XHCI Controller (AM1I-A Motherboard)
+
pci:v00001022d00007814sv000017AAsd00003988*
ID_MODEL_FROM_DATABASE=FCH USB XHCI Controller (Z50-75)
pci:v00001022d00007901sv0000103Csd00008615*
ID_MODEL_FROM_DATABASE=FCH SATA Controller [AHCI mode] (Pavilion Laptop 15-cw1xxx)
+pci:v00001022d00007901sv00001043sd0000876B*
+ ID_MODEL_FROM_DATABASE=FCH SATA Controller [AHCI mode] (PRIME Motherboard)
+
pci:v00001022d00007901sv00001462sd00007C37*
ID_MODEL_FROM_DATABASE=FCH SATA Controller [AHCI mode] (X570-A PRO motherboard)
+pci:v00001022d00007901sv0000EA50sd0000CE19*
+ ID_MODEL_FROM_DATABASE=FCH SATA Controller [AHCI mode] (mCOM10-L1900)
+
pci:v00001022d00007902*
ID_MODEL_FROM_DATABASE=FCH SATA Controller [RAID mode]
pci:v00001022d0000790Bsv0000103Csd00008615*
ID_MODEL_FROM_DATABASE=FCH SMBus Controller (Pavilion Laptop 15-cw1xxx)
+pci:v00001022d0000790Bsv00001043sd0000876B*
+ ID_MODEL_FROM_DATABASE=FCH SMBus Controller (PRIME Motherboard)
+
pci:v00001022d0000790Bsv00001462sd00007C37*
ID_MODEL_FROM_DATABASE=FCH SMBus Controller (X570-A PRO motherboard)
pci:v00001022d0000790Bsv000017AAsd00005124*
ID_MODEL_FROM_DATABASE=FCH SMBus Controller (ThinkPad E595)
+pci:v00001022d0000790Bsv0000EA50sd0000CE19*
+ ID_MODEL_FROM_DATABASE=FCH SMBus Controller (mCOM10-L1900)
+
pci:v00001022d0000790E*
ID_MODEL_FROM_DATABASE=FCH LPC Bridge
pci:v00001022d0000790Esv0000103Csd00008615*
ID_MODEL_FROM_DATABASE=FCH LPC Bridge (Pavilion Laptop 15-cw1xxx)
+pci:v00001022d0000790Esv00001043sd0000876B*
+ ID_MODEL_FROM_DATABASE=FCH LPC Bridge (PRIME B450M-A Motherboard)
+
pci:v00001022d0000790Esv00001462sd00007C37*
ID_MODEL_FROM_DATABASE=FCH LPC Bridge (X570-A PRO motherboard)
pci:v00001022d0000790Esv000017AAsd00005124*
ID_MODEL_FROM_DATABASE=FCH LPC Bridge (ThinkPad E595)
+pci:v00001022d0000790Esv0000EA50sd0000CE19*
+ ID_MODEL_FROM_DATABASE=FCH LPC Bridge (mCOM10-L1900)
+
pci:v00001022d0000790F*
ID_MODEL_FROM_DATABASE=FCH PCI Bridge
pci:v00001033d00000035sv0000807Dsd00000035*
ID_MODEL_FROM_DATABASE=OHCI USB Controller (PCI-USB2 (OHCI subsystem))
+pci:v00001033d00000035sv00008086sd00004D44*
+ ID_MODEL_FROM_DATABASE=OHCI USB Controller (D850EMV2 motherboard)
+
pci:v00001033d0000003B*
ID_MODEL_FROM_DATABASE=PCI to C-bus Bridge
pci:v00001033d000000E0sv0000807Dsd00001043*
ID_MODEL_FROM_DATABASE=uPD72010x USB 2.0 Controller (PCI-USB2 (EHCI subsystem))
+pci:v00001033d000000E0sv00008086sd00004D44*
+ ID_MODEL_FROM_DATABASE=uPD72010x USB 2.0 Controller (D850EMV2 motherboard)
+
pci:v00001033d000000E7*
ID_MODEL_FROM_DATABASE=uPD72873 [Firewarden] IEEE1394a OHCI 1.1 Link/2-port PHY Controller
pci:v00001077d00002031sv0000103Csd00008002*
ID_MODEL_FROM_DATABASE=ISP8324-based 16Gb Fibre Channel to PCI Express Adapter (3830C 16G Fibre Channel Host Bus Adapter)
+pci:v00001077d00002031sv00001077sd00000241*
+ ID_MODEL_FROM_DATABASE=ISP8324-based 16Gb Fibre Channel to PCI Express Adapter (QLE2670 16Gb Single Port Fibre Channel Adapter)
+
pci:v00001077d00002071*
ID_MODEL_FROM_DATABASE=ISP2714-based 16/32Gb Fibre Channel to PCIe Adapter
pci:v00001077d00002081sv00001077sd000002E3*
ID_MODEL_FROM_DATABASE=ISP2814-based 64/32G Fibre Channel to PCIe Controller (QLE2774 Quad Port 32GFC PCIe Gen4 x16 Adapter)
+pci:v00001077d00002089*
+ ID_MODEL_FROM_DATABASE=ISP2854-based 64/32G Fibre Channel to PCIe Controller with StorCryption
+
+pci:v00001077d00002089sv00001077sd000002E8*
+ ID_MODEL_FROM_DATABASE=ISP2854-based 64/32G Fibre Channel to PCIe Controller with StorCryption (QLE2884 Quad Port 64GFC PCIe Gen4 x16 Adapter with StorCryption)
+
+pci:v00001077d00002089sv00001077sd000002EA*
+ ID_MODEL_FROM_DATABASE=ISP2854-based 64/32G Fibre Channel to PCIe Controller with StorCryption (QLE2784 Quad Port 32GFC PCIe Gen4 x16 Adapter with StorCryption)
+
pci:v00001077d00002100*
ID_MODEL_FROM_DATABASE=QLA2100 64-bit Fibre Channel Adapter
pci:v00001077d00002261sv00001590sd0000022D*
ID_MODEL_FROM_DATABASE=ISP2722-based 16/32Gb Fibre Channel to PCIe Adapter (5830C 32Gb Dual Port Fibre Channel Adapter)
+pci:v00001077d00002261sv0000193Dsd0000100D*
+ ID_MODEL_FROM_DATABASE=ISP2722-based 16/32Gb Fibre Channel to PCIe Adapter (NIC-FC680i-Mb-2x16G)
+
pci:v00001077d00002281*
ID_MODEL_FROM_DATABASE=ISP2812-based 64/32G Fibre Channel to PCIe Controller
pci:v00001077d00002281sv00001590sd000002D4*
ID_MODEL_FROM_DATABASE=ISP2812-based 64/32G Fibre Channel to PCIe Controller (SN1610Q – 2P Enhanced 32GFC Dual Port Fibre Channel Host Bus Adapter)
+pci:v00001077d00002289*
+ ID_MODEL_FROM_DATABASE=ISP2852-based 64/32G Fibre Channel to PCIe Controller with StorCryption
+
+pci:v00001077d00002289sv00001077sd000002E9*
+ ID_MODEL_FROM_DATABASE=ISP2852-based 64/32G Fibre Channel to PCIe Controller with StorCryption (QLE2882 Dual Port 64GFC PCIe Gen4 x8 Adapter with StorCryption)
+
+pci:v00001077d00002289sv00001077sd000002EB*
+ ID_MODEL_FROM_DATABASE=ISP2852-based 64/32G Fibre Channel to PCIe Controller with StorCryption (QLE2782 Dual Port 32GFC PCIe Gen4 x8 Adapter with StorCryption)
+
+pci:v00001077d00002289sv00001077sd000002EF*
+ ID_MODEL_FROM_DATABASE=ISP2852-based 64/32G Fibre Channel to PCIe Controller with StorCryption (QLE2880 Single Port 64GFC PCIe Gen4 x8 Adapter with StorCryption)
+
+pci:v00001077d00002289sv00001077sd000002F1*
+ ID_MODEL_FROM_DATABASE=ISP2852-based 64/32G Fibre Channel to PCIe Controller with StorCryption (QLE2780 Single Port 32GFC PCIe Gen4 x8 Adapter with StorCryption)
+
pci:v00001077d00002300*
ID_MODEL_FROM_DATABASE=QLA2300 64-bit Fibre Channel Adapter
pci:v00001077d00008070sv00001590sd000002BD*
ID_MODEL_FROM_DATABASE=FastLinQ QL41000 Series 10/25/40/50GbE Controller (10Gb 2P 524SFP+ NIC)
+pci:v00001077d00008070sv0000193Dsd00001030*
+ ID_MODEL_FROM_DATABASE=FastLinQ QL41000 Series 10/25/40/50GbE Controller (NIC-ETH681i-Mb-2x25G)
+
+pci:v00001077d00008070sv0000193Dsd00001032*
+ ID_MODEL_FROM_DATABASE=FastLinQ QL41000 Series 10/25/40/50GbE Controller (NIC-ETH682i-Mb-2x25G)
+
pci:v00001077d00008080*
ID_MODEL_FROM_DATABASE=FastLinQ QL41000 Series 10/25/40/50GbE Controller (FCoE)
pci:v000010B5d00009050sv000010B5sd00009050*
ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (PCI-I04 PCI Passive PC/CAN Interface)
+pci:v000010B5d00009050sv000012FEsd00000001*
+ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (CAN-PCI/331 CAN bus controller)
+
pci:v000010B5d00009050sv00001369sd00008901*
ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (PCX11+ PCI)
pci:v000010DEd00000A23*
ID_MODEL_FROM_DATABASE=GT216 [GeForce 210]
+pci:v000010DEd00000A24*
+ ID_MODEL_FROM_DATABASE=GT216 [GeForce 405]
+
pci:v000010DEd00000A26*
ID_MODEL_FROM_DATABASE=GT216 [GeForce 405]
pci:v000010DEd00001AED*
ID_MODEL_FROM_DATABASE=TU116 USB Type-C UCSI Controller
+pci:v000010DEd00001AEF*
+ ID_MODEL_FROM_DATABASE=GA102 High Definition Audio Controller
+
pci:v000010DEd00001B00*
ID_MODEL_FROM_DATABASE=GP102 [TITAN X]
pci:v000010DEd00001B38*
ID_MODEL_FROM_DATABASE=GP102GL [Tesla P40]
+pci:v000010DEd00001B39*
+ ID_MODEL_FROM_DATABASE=GP102GL [Tesla P10]
+
pci:v000010DEd00001B70*
ID_MODEL_FROM_DATABASE=GP102GL
ID_MODEL_FROM_DATABASE=GP106GL [Quadro P2200]
pci:v000010DEd00001C35*
- ID_MODEL_FROM_DATABASE=GP106
+ ID_MODEL_FROM_DATABASE=GP106M [Quadro P2000 Mobile]
pci:v000010DEd00001C36*
- ID_MODEL_FROM_DATABASE=GP106
+ ID_MODEL_FROM_DATABASE=GP106 [P106M]
pci:v000010DEd00001C60*
ID_MODEL_FROM_DATABASE=GP106BM [GeForce GTX 1060 Mobile 6GB]
pci:v000010DEd00001F9C*
ID_MODEL_FROM_DATABASE=TU117M [GeForce MX450]
+pci:v000010DEd00001F9D*
+ ID_MODEL_FROM_DATABASE=TU117M [GeForce GTX 1650 Mobile / Max-Q]
+
pci:v000010DEd00001FAE*
ID_MODEL_FROM_DATABASE=TU117GL
pci:v000010DEd00001FB9*
ID_MODEL_FROM_DATABASE=TU117GLM [Quadro T1000 Mobile]
+pci:v000010DEd00001FBB*
+ ID_MODEL_FROM_DATABASE=TU117GLM [Quadro T500 Mobile]
+
pci:v000010DEd00001FBF*
ID_MODEL_FROM_DATABASE=TU117GL
pci:v000010DEd000020B1*
ID_MODEL_FROM_DATABASE=GA100 [A100 PCIe 40GB]
+pci:v000010DEd000020B2*
+ ID_MODEL_FROM_DATABASE=GA100 [A100 SXM4 80GB]
+
pci:v000010DEd000020BE*
ID_MODEL_FROM_DATABASE=GA100 [GRID A100A]
pci:v000010DEd000021BF*
ID_MODEL_FROM_DATABASE=TU116GL
+pci:v000010DEd000021C2*
+ ID_MODEL_FROM_DATABASE=TU116
+
pci:v000010DEd000021C4*
ID_MODEL_FROM_DATABASE=TU116 [GeForce GTX 1660 SUPER]
pci:v000010DEd00002204*
ID_MODEL_FROM_DATABASE=GA102 [GeForce RTX 3090]
+pci:v000010DEd00002205*
+ ID_MODEL_FROM_DATABASE=GA102 [GeForce RTX 3080 Ti]
+
pci:v000010DEd00002206*
ID_MODEL_FROM_DATABASE=GA102 [GeForce RTX 3080]
+pci:v000010DEd00002206sv000010DEsd00001467*
+ ID_MODEL_FROM_DATABASE=GA102 [GeForce RTX 3080]
+
pci:v000010DEd00002206sv000010DEsd0000146D*
ID_MODEL_FROM_DATABASE=GA102 [GeForce RTX 3080] (GA102 [GeForce RTX 3080 20GB])
pci:v000010DEd00002230*
ID_MODEL_FROM_DATABASE=GA102GL [RTX A6000]
+pci:v000010DEd00002235*
+ ID_MODEL_FROM_DATABASE=GA102GL [RTX A40]
+
+pci:v000010DEd00002236*
+ ID_MODEL_FROM_DATABASE=GA102GL
+
pci:v000010DEd0000223F*
ID_MODEL_FROM_DATABASE=GA102GL
+pci:v000010DEd0000228B*
+ ID_MODEL_FROM_DATABASE=GA104 High Definition Audio Controller
+
+pci:v000010DEd00002321*
+ ID_MODEL_FROM_DATABASE=GA103
+
pci:v000010DEd00002482*
ID_MODEL_FROM_DATABASE=GA104 [GeForce RTX 3070 Ti]
ID_MODEL_FROM_DATABASE=GA104 [GeForce RTX 3060 Ti]
pci:v000010DEd0000249C*
- ID_MODEL_FROM_DATABASE=GA104M [GeForce RTX 3070 Mobile / Max-Q 8GB/16GB]
+ ID_MODEL_FROM_DATABASE=GA104M [GeForce RTX 3080 Mobile / Max-Q 8GB/16GB]
pci:v000010DEd0000249D*
ID_MODEL_FROM_DATABASE=GA104M [GeForce RTX 3070 Mobile / Max-Q]
+pci:v000010DEd0000249F*
+ ID_MODEL_FROM_DATABASE=GA104M
+
pci:v000010DEd000024AC*
ID_MODEL_FROM_DATABASE=GA104 [GeForce RTX 30x0 Engineering Sample]
pci:v000010DEd000024AF*
ID_MODEL_FROM_DATABASE=GA104 [GeForce RTX 3070 Engineering Sample]
+pci:v000010DEd000024B6*
+ ID_MODEL_FROM_DATABASE=GA104
+
+pci:v000010DEd000024B8*
+ ID_MODEL_FROM_DATABASE=GA104
+
pci:v000010DEd000024BF*
ID_MODEL_FROM_DATABASE=GA104 [GeForce RTX 3070 Engineering Sample]
pci:v000010DEd000024DC*
- ID_MODEL_FROM_DATABASE=GA104M [GeForce RTX 3070 Mobile 16GB]
+ ID_MODEL_FROM_DATABASE=GA104M [GeForce RTX 3080 Mobile / Max-Q 8GB/16GB]
pci:v000010DEd000024DD*
ID_MODEL_FROM_DATABASE=GA104M [GeForce RTX 3070 Mobile / Max-Q]
+pci:v000010DEd00002501*
+ ID_MODEL_FROM_DATABASE=GA106 [GeForce RTX 3060]
+
+pci:v000010DEd00002503*
+ ID_MODEL_FROM_DATABASE=GA106 [GeForce RTX 3060]
+
+pci:v000010DEd00002505*
+ ID_MODEL_FROM_DATABASE=GA106
+
+pci:v000010DEd00002520*
+ ID_MODEL_FROM_DATABASE=GA106M [GeForce RTX 3060 Mobile / Max-Q]
+
pci:v000010DEd0000252F*
ID_MODEL_FROM_DATABASE=GA106 [GeForce RTX 3060 Engineering Sample]
+pci:v000010DEd00002560*
+ ID_MODEL_FROM_DATABASE=GA106M [GeForce RTX 3060 Mobile / Max-Q]
+
+pci:v000010DEd00002583*
+ ID_MODEL_FROM_DATABASE=GA107 [GeForce RTX 3050]
+
+pci:v000010DEd000025A2*
+ ID_MODEL_FROM_DATABASE=GA107
+
+pci:v000010DEd000025A4*
+ ID_MODEL_FROM_DATABASE=GA107
+
pci:v000010DEd000025AF*
ID_MODEL_FROM_DATABASE=GA107 [GeForce RTX 3050 Engineering Sample]
pci:v000010DFd0000E300sv00001590sd0000022E*
ID_MODEL_FROM_DATABASE=LPe31000/LPe32000 Series 16Gb/32Gb Fibre Channel Adapter (Synergy 5330C 2-Port 32Gb Fibre Channel Mezz Card)
+pci:v000010DFd0000E300sv0000193Dsd00001060*
+ ID_MODEL_FROM_DATABASE=LPe31000/LPe32000 Series 16Gb/32Gb Fibre Channel Adapter (NIC-FC730i-Mb-2P)
+
pci:v000010DFd0000F011*
ID_MODEL_FROM_DATABASE=Saturn: LightPulse Fibre Channel Host Adapter
pci:v000010DFd0000F400sv00001590sd000002D6*
ID_MODEL_FROM_DATABASE=LPe35000/LPe36000 Series 32Gb/64Gb Fibre Channel Adapter (StoreFabric SN1610E 2-Port 32Gb Fibre Channel Adapter)
+pci:v000010DFd0000F500*
+ ID_MODEL_FROM_DATABASE=LPe37000/LPe38000 Series 32Gb/64Gb Fibre Channel Adapter
+
pci:v000010DFd0000F700*
ID_MODEL_FROM_DATABASE=LP7000 Fibre Channel Host Adapter
pci:v000010ECd00000139*
ID_MODEL_FROM_DATABASE=RTL-8139/8139C/8139C+ Ethernet Controller
+pci:v000010ECd00003000*
+ ID_MODEL_FROM_DATABASE=Killer E3000 2.5GbE Controller
+
pci:v000010ECd00005208*
ID_MODEL_FROM_DATABASE=RTS5208 PCI Express Card Reader
pci:v000010ECd0000525Asv00001028sd000006E4*
ID_MODEL_FROM_DATABASE=RTS525A PCI Express Card Reader (XPS 15 9550)
+pci:v000010ECd0000525Asv00001028sd000006E6*
+ ID_MODEL_FROM_DATABASE=RTS525A PCI Express Card Reader (Latitude 11 5175 2-in-1)
+
pci:v000010ECd0000525Asv000017AAsd0000224F*
ID_MODEL_FROM_DATABASE=RTS525A PCI Express Card Reader (ThinkPad X1 Carbon 5th Gen)
pci:v000010ECd00008139sv0000A0A0sd00000007*
ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (ALN-325C)
+pci:v000010ECd00008161*
+ ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
+
+pci:v000010ECd00008161sv000010ECsd00008168*
+ ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (TP-Link TG-3468 v4.0 Gigabit PCI Express Network Adapter)
+
pci:v000010ECd00008167*
ID_MODEL_FROM_DATABASE=RTL-8110SC/8169SC Gigabit Ethernet
pci:v000010ECd00008168sv00001043sd00008505*
ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (P8 series motherboard)
+pci:v000010ECd00008168sv00001043sd00008554*
+ ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (H81M-C Motherboard)
+
+pci:v000010ECd00008168sv00001043sd0000859E*
+ ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (AM1I-A Motherboard)
+
+pci:v000010ECd00008168sv00001043sd00008677*
+ ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (PRIME B450M-A Motherboard)
+
pci:v000010ECd00008168sv0000105Bsd00000D7C*
ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (D270S/D250S Motherboard)
pci:v000010ECd00008168sv00001775sd000011CC*
ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (CC11/CL11)
+pci:v000010ECd00008168sv000017AAsd00003098*
+ ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (ThinkCentre E73)
+
pci:v000010ECd00008168sv000017AAsd00003814*
ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (Z50-75)
pci:v000010ECd00008168sv00008086sd0000D615*
ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (Desktop Board D510MO/D525MW)
+pci:v000010ECd00008168sv0000EA50sd0000CE19*
+ ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (mCOM10-L1900)
+
pci:v000010ECd00008169*
ID_MODEL_FROM_DATABASE=RTL8169 PCI Gigabit Ethernet Controller
pci:v000010ECd00008169sv0000A0A0sd00000449*
ID_MODEL_FROM_DATABASE=RTL8169 PCI Gigabit Ethernet Controller (AK86-L motherboard)
+pci:v000010ECd0000816A*
+ ID_MODEL_FROM_DATABASE=RTL8111xP UART #1
+
+pci:v000010ECd0000816Asv0000EA50sd0000CE19*
+ ID_MODEL_FROM_DATABASE=RTL8111xP UART #1 (mCOM10-L1900)
+
+pci:v000010ECd0000816B*
+ ID_MODEL_FROM_DATABASE=RTL8111xP UART #2
+
+pci:v000010ECd0000816Bsv0000EA50sd0000CE19*
+ ID_MODEL_FROM_DATABASE=RTL8111xP UART #2 (mCOM10-L1900)
+
+pci:v000010ECd0000816C*
+ ID_MODEL_FROM_DATABASE=RTL8111xP IPMI interface
+
+pci:v000010ECd0000816Csv0000EA50sd0000CE19*
+ ID_MODEL_FROM_DATABASE=RTL8111xP IPMI interface (mCOM10-L1900)
+
+pci:v000010ECd0000816D*
+ ID_MODEL_FROM_DATABASE=RTL811x EHCI host controller
+
+pci:v000010ECd0000816Dsv0000EA50sd0000CE19*
+ ID_MODEL_FROM_DATABASE=RTL811x EHCI host controller (mCOM10-L1900)
+
pci:v000010ECd00008171*
ID_MODEL_FROM_DATABASE=RTL8191SEvA Wireless LAN Controller
pci:v000010EEd00007038sv000017AAsd0000402F*
ID_MODEL_FROM_DATABASE=FPGA Card XC7VX690T (FPGA XC7VX690T-3FFG1157E)
+pci:v000010EEd00008019*
+ ID_MODEL_FROM_DATABASE=Memory controller
+
pci:v000010EEd00008380*
ID_MODEL_FROM_DATABASE=Ellips ProfiXpress Profibus Master
pci:v00001172d00000530*
ID_MODEL_FROM_DATABASE=Stratix IV
+pci:v00001172d0000646C*
+ ID_MODEL_FROM_DATABASE=KT-500/KT-521 board
+
pci:v00001173*
ID_VENDOR_FROM_DATABASE=Adobe Systems, Inc
pci:v00001179d00000103*
ID_MODEL_FROM_DATABASE=EX-IDE Type-B
+pci:v00001179d0000010E*
+ ID_MODEL_FROM_DATABASE=PXP04 NVMe SSD
+
pci:v00001179d0000010F*
ID_MODEL_FROM_DATABASE=NVMe Controller
pci:v00001179d00000113*
ID_MODEL_FROM_DATABASE=BG3 NVMe SSD Controller
+pci:v00001179d00000113sv00001179sd00000001*
+ ID_MODEL_FROM_DATABASE=BG3 NVMe SSD Controller (Toshiba KBG30ZMS128G 128GB NVMe SSD)
+
pci:v00001179d00000115*
ID_MODEL_FROM_DATABASE=XG4 NVMe SSD Controller
+pci:v00001179d0000011A*
+ ID_MODEL_FROM_DATABASE=XG6 NVMe SSD Controller
+
pci:v00001179d00000404*
ID_MODEL_FROM_DATABASE=DVD Decoder card
pci:v0000125Bd00009100sv0000A000sd00007000*
ID_MODEL_FROM_DATABASE=AX99100 PCIe to Multi I/O Controller (Local Bus)
+pci:v0000125Bd00009100sv0000EA50sd00001C10*
+ ID_MODEL_FROM_DATABASE=AX99100 PCIe to Multi I/O Controller (RXi2-BP)
+
pci:v0000125C*
ID_VENDOR_FROM_DATABASE=Aurora Technologies, Inc.
pci:v0000126Fd00002262*
ID_MODEL_FROM_DATABASE=SM2262/SM2262EN SSD Controller
+pci:v0000126Fd00002263*
+ ID_MODEL_FROM_DATABASE=SM2263EN/SM2263XT SSD Controller
+
pci:v00001270*
ID_VENDOR_FROM_DATABASE=Olympus Optical Co., Ltd.
ID_MODEL_FROM_DATABASE=DM562P V90 Modem
pci:v00001282d00009009*
- ID_MODEL_FROM_DATABASE=Ethernet 100/10 MBit
+ ID_MODEL_FROM_DATABASE=DM9009 Ethernet Controller
pci:v00001282d00009100*
ID_MODEL_FROM_DATABASE=21x4x DEC-Tulip compatible 10/100 Ethernet
pci:v00001282d00009102*
- ID_MODEL_FROM_DATABASE=21x4x DEC-Tulip compatible 10/100 Ethernet
+ ID_MODEL_FROM_DATABASE=DM9102 Fast Ethernet Controller
pci:v00001282d00009102sv00000291sd00008212*
- ID_MODEL_FROM_DATABASE=21x4x DEC-Tulip compatible 10/100 Ethernet (DM9102A (DM9102AE, SM9102AF) Ethernet 100/10 MBit)
+ ID_MODEL_FROM_DATABASE=DM9102 Fast Ethernet Controller (DM9102A (DM9102AE, SM9102AF) Ethernet 100/10 MBit)
pci:v00001282d00009132*
ID_MODEL_FROM_DATABASE=Ethernet 100/10 MBit
pci:v00001283d00008892*
ID_MODEL_FROM_DATABASE=IT8892E PCIe to PCI Bridge
+pci:v00001283d00008892sv00008086sd0000200D*
+ ID_MODEL_FROM_DATABASE=IT8892E PCIe to PCI Bridge (DH61CR motherboard)
+
pci:v00001283d00008893*
ID_MODEL_FROM_DATABASE=IT8893E PCIe to PCI Bridge
pci:v000012D8d00002608*
ID_MODEL_FROM_DATABASE=PI7C9X2G608GP PCIe2 6-Port/8-Lane Packet Switch
+pci:v000012D8d00002608sv0000EA50sd0000CC10*
+ ID_MODEL_FROM_DATABASE=PI7C9X2G608GP PCIe2 6-Port/8-Lane Packet Switch (RXi2-BP)
+
pci:v000012D8d0000400A*
ID_MODEL_FROM_DATABASE=PI7C9X442SL PCI Express Bridge Port
pci:v000012D8d00008154*
ID_MODEL_FROM_DATABASE=PI7C8154A/PI7C8154B/PI7C8154BI PCI-to-PCI Bridge
+pci:v000012D8d00008619*
+ ID_MODEL_FROM_DATABASE=PI7C9X2G1616PR PCIe2 16-Port/16-Lane Packet Switch
+
pci:v000012D8d0000E110*
ID_MODEL_FROM_DATABASE=PI7C9X110 PCI Express to PCI bridge
pci:v000012EBd00000001*
ID_MODEL_FROM_DATABASE=Vortex 1
+pci:v000012EBd00000001sv00000000sd00000300*
+ ID_MODEL_FROM_DATABASE=Vortex 1 (Terasound A3D PCI)
+
pci:v000012EBd00000001sv0000104Dsd00008036*
ID_MODEL_FROM_DATABASE=Vortex 1 (AU8820 Vortex Digital Audio Processor)
ID_MODEL_FROM_DATABASE=Vortex 1 (Sonic Impact A3D)
pci:v000012EBd00000001sv0000122Dsd00001002*
- ID_MODEL_FROM_DATABASE=Vortex 1 (AU8820 Vortex Digital Audio Processor)
+ ID_MODEL_FROM_DATABASE=Vortex 1 (SC 338-A3D)
pci:v000012EBd00000001sv000012EBsd00000001*
ID_MODEL_FROM_DATABASE=Vortex 1 (AU8820 Vortex Digital Audio Processor)
ID_VENDOR_FROM_DATABASE=Sonix Inc
pci:v00001353*
- ID_VENDOR_FROM_DATABASE=Vierling Communication SAS
+ ID_VENDOR_FROM_DATABASE=dbeeSet Technology
pci:v00001353d00000002*
ID_MODEL_FROM_DATABASE=Proserver
pci:v00001353d00000005*
ID_MODEL_FROM_DATABASE=PCI-FUT-S0
+pci:v00001353d00000006*
+ ID_MODEL_FROM_DATABASE=OTDU-1U (FPGA Zynq-7000)
+
+pci:v00001353d00000007*
+ ID_MODEL_FROM_DATABASE=OTDU-EX
+
pci:v00001354*
ID_VENDOR_FROM_DATABASE=Dwave System Inc
pci:v0000144Dd0000A802*
ID_MODEL_FROM_DATABASE=NVMe SSD Controller SM951/PM951
+pci:v0000144Dd0000A802sv0000144Dsd0000A801*
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller SM951/PM951 (PM963 2.5" NVMe PCIe SSD)
+
pci:v0000144Dd0000A804*
- ID_MODEL_FROM_DATABASE=NVMe SSD Controller SM961/PM961
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller SM961/PM961/SM963
+
+pci:v0000144Dd0000A804sv0000144Dsd0000A801*
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller SM961/PM961/SM963 (SM963 2.5" NVMe PCIe SSD)
pci:v0000144Dd0000A808*
ID_MODEL_FROM_DATABASE=NVMe SSD Controller SM981/PM981/PM983
pci:v0000144Dd0000A808sv00001D49sd0000403B*
ID_MODEL_FROM_DATABASE=NVMe SSD Controller SM981/PM981/PM983 (Thinksystem U.2 PM983 NVMe SSD)
+pci:v0000144Dd0000A80A*
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller PM9A1/980PRO
+
pci:v0000144Dd0000A820*
ID_MODEL_FROM_DATABASE=NVMe SSD Controller 171X
pci:v000014E4d0000168Esv0000193Dsd00001006*
ID_MODEL_FROM_DATABASE=NetXtreme II BCM57810 10 Gigabit Ethernet (530F-L)
+pci:v000014E4d0000168Esv0000193Dsd0000100F*
+ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57810 10 Gigabit Ethernet (NIC-ETH522i-Mb-2x10G)
+
pci:v000014E4d00001690*
ID_MODEL_FROM_DATABASE=NetXtreme BCM57760 Gigabit Ethernet PCIe
pci:v000014E4d000016A1sv00001043sd0000866E*
ID_MODEL_FROM_DATABASE=BCM57840 NetXtreme II 10 Gigabit Ethernet (PEB-10G/57840-2T 10GBase-T Network Adapter)
+pci:v000014E4d000016A1sv0000193Dsd0000100B*
+ ID_MODEL_FROM_DATABASE=BCM57840 NetXtreme II 10 Gigabit Ethernet (NIC-ETH521i-Mb-4x10G)
+
pci:v000014E4d000016A2*
ID_MODEL_FROM_DATABASE=BCM57840 NetXtreme II 10/20-Gigabit Ethernet
pci:v000014E4d00001807*
ID_MODEL_FROM_DATABASE=BCM5750X NetXtreme-E RDMA Virtual Function
+pci:v000014E4d00002711*
+ ID_MODEL_FROM_DATABASE=BCM2711 PCIe Bridge
+
pci:v000014E4d00003352*
ID_MODEL_FROM_DATABASE=BCM3352
pci:v000015B3d00001015sv0000193Dsd0000100A*
ID_MODEL_FROM_DATABASE=MT27710 Family [ConnectX-4 Lx] (620F-B)
+pci:v000015B3d00001015sv0000193Dsd00001031*
+ ID_MODEL_FROM_DATABASE=MT27710 Family [ConnectX-4 Lx] (NIC-ETH640i-Mb-2x25G)
+
pci:v000015B3d00001016*
ID_MODEL_FROM_DATABASE=MT27710 Family [ConnectX-4 Lx Virtual Function]
pci:v000015B3d00001017sv000015B3sd00000068*
ID_MODEL_FROM_DATABASE=MT27800 Family [ConnectX-5] (ConnectX®-5 EN network interface card for OCP2.0, Type 1, with host management, 25GbE dual-port SFP28, PCIe3.0 x8, no bracket Halogen free ; MCX542B-ACAN)
+pci:v000015B3d00001017sv0000193Dsd00001051*
+ ID_MODEL_FROM_DATABASE=MT27800 Family [ConnectX-5] (NIC-IB1040i-Mb-2P)
+
pci:v000015B3d00001018*
ID_MODEL_FROM_DATABASE=MT27800 Family [ConnectX-5 Virtual Function]
ID_MODEL_FROM_DATABASE=WD Black NVMe SSD
pci:v000015B7d00005002*
- ID_MODEL_FROM_DATABASE=WD Black 2018 / PC SN720 NVMe SSD
+ ID_MODEL_FROM_DATABASE=WD Black 2018/SN750 / PC SN720 NVMe SSD
pci:v000015B7d00005003*
- ID_MODEL_FROM_DATABASE=WD Black 2018 / PC SN520 NVMe SSD
+ ID_MODEL_FROM_DATABASE=WD Blue SN500 / PC SN520 NVMe SSD
pci:v000015B7d00005004*
ID_MODEL_FROM_DATABASE=PC SN520 NVMe SSD
ID_MODEL_FROM_DATABASE=PC SN520 NVMe SSD
pci:v000015B7d00005006*
- ID_MODEL_FROM_DATABASE=WD Black 2019/PC SN750 NVMe SSD
+ ID_MODEL_FROM_DATABASE=WD Black SN750 / PC SN730 NVMe SSD
pci:v000015B7d00005009*
ID_MODEL_FROM_DATABASE=WD Blue SN550 NVMe SSD
pci:v000015B7d00005009sv000015B7sd00005009*
ID_MODEL_FROM_DATABASE=WD Blue SN550 NVMe SSD
+pci:v000015B7d0000500B*
+ ID_MODEL_FROM_DATABASE=PC SN530 NVMe SSD
+
+pci:v000015B7d0000500Bsv00001414sd0000500B*
+ ID_MODEL_FROM_DATABASE=PC SN530 NVMe SSD (Xbox Series X)
+
pci:v000015B7d0000500D*
ID_MODEL_FROM_DATABASE=WD Ultrastar DC SN340 NVMe SSD
+pci:v000015B7d00005011*
+ ID_MODEL_FROM_DATABASE=WD Black SN850
+
pci:v000015B8*
ID_VENDOR_FROM_DATABASE=ADDI-DATA GmbH
pci:v00001760d00000800*
ID_MODEL_FROM_DATABASE=PCD8006 - PCIe digital Inputs/Outputs
+pci:v00001760d00000840*
+ ID_MODEL_FROM_DATABASE=PCA-8428 General-purpose multifunctional PCIe card with 8 analog inputs and 2 analog outputs
+
+pci:v00001760d00000841*
+ ID_MODEL_FROM_DATABASE=PCA-8429 General-purpose multifunctional PCIe card with 8 analog inputs
+
+pci:v00001760d00000842*
+ ID_MODEL_FROM_DATABASE=PCA-8438 General-purpose multifunctional PCIe card with 16 analog inputs and 2 analog outputs
+
+pci:v00001760d00000843*
+ ID_MODEL_FROM_DATABASE=PCA-8439 General-purpose multifunctional PCIe card with 16 analog inputs
+
pci:v00001760d0000FF00*
ID_MODEL_FROM_DATABASE=CTU CAN FD PCIe Card
pci:v000017CBd00001000*
ID_MODEL_FROM_DATABASE=QCS405 PCIe Root Complex
+pci:v000017CBd00001101*
+ ID_MODEL_FROM_DATABASE=QCA6390 Wireless Network Adapter [AX500-DBS (2x2)]
+
pci:v000017CC*
ID_VENDOR_FROM_DATABASE=NetChip Technology, Inc
pci:v000019E5d00001822sv000019E5sd0000D146*
ID_MODEL_FROM_DATABASE=Hi1822 Family (4*25GE) (Hi1822 SP585 (4*25GE))
+pci:v000019E5d00003714*
+ ID_MODEL_FROM_DATABASE=ES3000 V5 NVMe PCIe SSD
+
+pci:v000019E5d00003714sv000019E5sd00005312*
+ ID_MODEL_FROM_DATABASE=ES3000 V5 NVMe PCIe SSD (NVMe SSD ES3500P V5 2000GB 2.5" U.2)
+
pci:v000019E5d0000371E*
ID_MODEL_FROM_DATABASE=Hi1822 Family Virtual Bridge
+pci:v000019E5d00003754*
+ ID_MODEL_FROM_DATABASE=ES3000 V6 NVMe PCIe SSD
+
+pci:v000019E5d00003754sv000019E5sd00006122*
+ ID_MODEL_FROM_DATABASE=ES3000 V6 NVMe PCIe SSD (NVMe SSD ES3600P V6 1600GB 2.5" U.2)
+
+pci:v000019E5d00003754sv000019E5sd00006123*
+ ID_MODEL_FROM_DATABASE=ES3000 V6 NVMe PCIe SSD (NVMe SSD ES3600P V6 3200GB 2.5" U.2)
+
+pci:v000019E5d00003754sv000019E5sd00006124*
+ ID_MODEL_FROM_DATABASE=ES3000 V6 NVMe PCIe SSD (NVMe SSD ES3600P V6 6400GB 2.5" U.2)
+
+pci:v000019E5d00003754sv000019E5sd00006141*
+ ID_MODEL_FROM_DATABASE=ES3000 V6 NVMe PCIe SSD (NVMe SSD ES3800P V6 800GB 2.5" U.2)
+
+pci:v000019E5d00003754sv000019E5sd00006142*
+ ID_MODEL_FROM_DATABASE=ES3000 V6 NVMe PCIe SSD (NVMe SSD ES3800P V6 1600GB 2.5" U.2)
+
+pci:v000019E5d00003754sv000019E5sd00006212*
+ ID_MODEL_FROM_DATABASE=ES3000 V6 NVMe PCIe SSD (NVMe SSD ES3500P V6 1920GB 2.5" U.2)
+
+pci:v000019E5d00003754sv000019E5sd00006213*
+ ID_MODEL_FROM_DATABASE=ES3000 V6 NVMe PCIe SSD (NVMe SSD ES3500P V6 3840GB 2.5" U.2)
+
+pci:v000019E5d00003754sv000019E5sd00006214*
+ ID_MODEL_FROM_DATABASE=ES3000 V6 NVMe PCIe SSD (NVMe SSD ES3500P V6 7680GB 2.5" U.2)
+
+pci:v000019E5d00003754sv000019E5sd00006215*
+ ID_MODEL_FROM_DATABASE=ES3000 V6 NVMe PCIe SSD (NVMe SSD ES3500P V6 15360GB 2.5" U.2)
+
pci:v000019E5d0000375E*
ID_MODEL_FROM_DATABASE=Hi1822 Family Virtual Function
pci:v00001A4Ad00001010*
ID_MODEL_FROM_DATABASE=AMC EVR - Stockholm Timing Board
+pci:v00001A4Ad00001020*
+ ID_MODEL_FROM_DATABASE=PGPCard - Gen3 Cameralink Interface
+
pci:v00001A4Ad00001030*
ID_MODEL_FROM_DATABASE=PGPCard - Gen3 GIGe Interface
pci:v00001B36d0000000D*
ID_MODEL_FROM_DATABASE=QEMU XHCI Host Controller
+pci:v00001B36d00000010*
+ ID_MODEL_FROM_DATABASE=QEMU NVM Express Controller
+
pci:v00001B36d00000100*
ID_MODEL_FROM_DATABASE=QXL paravirtual graphic card
pci:v00001B4Bd0000917A*
ID_MODEL_FROM_DATABASE=88SE9172 SATA III 6Gb/s RAID Controller
+pci:v00001B4Bd00009182*
+ ID_MODEL_FROM_DATABASE=88SE9182 PCIe 2.0 x2 2-port SATA 6 Gb/s Controller
+
pci:v00001B4Bd00009183*
ID_MODEL_FROM_DATABASE=88SS9183 PCIe SSD Controller
pci:v00001B4Bd000091A4*
ID_MODEL_FROM_DATABASE=88SE912x IDE Controller
+pci:v00001B4Bd00009215*
+ ID_MODEL_FROM_DATABASE=88SE9215 PCIe 2.0 x1 4-port SATA 6 Gb/s Controller
+
pci:v00001B4Bd00009220*
ID_MODEL_FROM_DATABASE=88SE9220 PCIe 2.0 x2 2-port SATA 6 Gb/s RAID Controller
pci:v00001B4Bd00009230*
- ID_MODEL_FROM_DATABASE=88SE9230 PCIe SATA 6Gb/s Controller
+ ID_MODEL_FROM_DATABASE=88SE9230 PCIe 2.0 x2 4-port SATA 6 Gb/s RAID Controller
pci:v00001B4Bd00009230sv00001028sd00001FD6*
- ID_MODEL_FROM_DATABASE=88SE9230 PCIe SATA 6Gb/s Controller (BOSS-S1 Adapter)
+ ID_MODEL_FROM_DATABASE=88SE9230 PCIe 2.0 x2 4-port SATA 6 Gb/s RAID Controller (BOSS-S1 Adapter)
pci:v00001B4Bd00009230sv00001028sd00001FDF*
- ID_MODEL_FROM_DATABASE=88SE9230 PCIe SATA 6Gb/s Controller (BOSS-S1 Modular)
+ ID_MODEL_FROM_DATABASE=88SE9230 PCIe 2.0 x2 4-port SATA 6 Gb/s RAID Controller (BOSS-S1 Modular)
pci:v00001B4Bd00009230sv00001028sd00001FE2*
- ID_MODEL_FROM_DATABASE=88SE9230 PCIe SATA 6Gb/s Controller (BOSS-S1 Adapter)
+ ID_MODEL_FROM_DATABASE=88SE9230 PCIe 2.0 x2 4-port SATA 6 Gb/s RAID Controller (BOSS-S1 Adapter)
pci:v00001B4Bd00009230sv00001028sd00002010*
- ID_MODEL_FROM_DATABASE=88SE9230 PCIe SATA 6Gb/s Controller (BOSS-S2 Adapter)
+ ID_MODEL_FROM_DATABASE=88SE9230 PCIe 2.0 x2 4-port SATA 6 Gb/s RAID Controller (BOSS-S2 Adapter)
pci:v00001B4Bd00009230sv00001D49sd00000300*
- ID_MODEL_FROM_DATABASE=88SE9230 PCIe SATA 6Gb/s Controller (ThinkSystem M.2 with Mirroring Enablement Kit)
+ ID_MODEL_FROM_DATABASE=88SE9230 PCIe 2.0 x2 4-port SATA 6 Gb/s RAID Controller (ThinkSystem M.2 with Mirroring Enablement Kit)
pci:v00001B4Bd00009230sv00001D49sd00000301*
- ID_MODEL_FROM_DATABASE=88SE9230 PCIe SATA 6Gb/s Controller (ThinkSystem SR630 x16 PCIE with 4 SATA ports Riser)
+ ID_MODEL_FROM_DATABASE=88SE9230 PCIe 2.0 x2 4-port SATA 6 Gb/s RAID Controller (ThinkSystem SR630 x16 PCIE with 4 SATA ports Riser)
pci:v00001B4Bd00009230sv00001D49sd00000302*
- ID_MODEL_FROM_DATABASE=88SE9230 PCIe SATA 6Gb/s Controller (ThinkSystem SE350 M.2 SATA 4-Bay Data RAID Mirroring Enablement Kit)
+ ID_MODEL_FROM_DATABASE=88SE9230 PCIe 2.0 x2 4-port SATA 6 Gb/s RAID Controller (ThinkSystem SE350 M.2 SATA 4-Bay Data RAID Mirroring Enablement Kit)
pci:v00001B4Bd00009230sv00001D49sd00000303*
- ID_MODEL_FROM_DATABASE=88SE9230 PCIe SATA 6Gb/s Controller (ThinkSystem SE350 M.2 SATA 4-Bay Data RAID Mirroring Enablement Kit)
+ ID_MODEL_FROM_DATABASE=88SE9230 PCIe 2.0 x2 4-port SATA 6 Gb/s RAID Controller (ThinkSystem SE350 M.2 SATA 4-Bay Data RAID Mirroring Enablement Kit)
pci:v00001B4Bd00009230sv00001D49sd00000304*
- ID_MODEL_FROM_DATABASE=88SE9230 PCIe SATA 6Gb/s Controller (ThinkSystem M.2 SATA 2-Bay RAID Enablement Kit)
+ ID_MODEL_FROM_DATABASE=88SE9230 PCIe 2.0 x2 4-port SATA 6 Gb/s RAID Controller (ThinkSystem M.2 SATA 2-Bay RAID Enablement Kit)
pci:v00001B4Bd00009230sv00001D49sd00000305*
- ID_MODEL_FROM_DATABASE=88SE9230 PCIe SATA 6Gb/s Controller (ThinkSystem 7mm SATA 2-Bay Rear RAID Enablement Kit)
+ ID_MODEL_FROM_DATABASE=88SE9230 PCIe 2.0 x2 4-port SATA 6 Gb/s RAID Controller (ThinkSystem 7mm SATA 2-Bay Rear RAID Enablement Kit)
pci:v00001B4Bd00009235*
ID_MODEL_FROM_DATABASE=88SE9235 PCIe 2.0 x2 4-port SATA 6 Gb/s Controller
pci:v00001B96d00002500*
ID_MODEL_FROM_DATABASE=Ultrastar DC SN840 NVMe SSD
+pci:v00001B96d00002600*
+ ID_MODEL_FROM_DATABASE=Ultrastar DC ZN540 ZNS NVMe SSD
+
pci:v00001B96d00003714*
ID_MODEL_FROM_DATABASE=PC SN730 NVMe SSD
pci:v00001C5Cd00001504*
ID_MODEL_FROM_DATABASE=SC300 512GB M.2 2280 SATA Solid State Drive
+pci:v00001C5Cd00001527*
+ ID_MODEL_FROM_DATABASE=PC401 NVMe Solid State Drive 256GB
+
pci:v00001C5Cd0000243B*
ID_MODEL_FROM_DATABASE=PE6110 NVMe Solid State Drive
ID_VENDOR_FROM_DATABASE=Beijing Memblaze Technology Co. Ltd.
pci:v00001C5Fd0000000D*
- ID_MODEL_FROM_DATABASE=PBlaze5 520/526 AIC
+ ID_MODEL_FROM_DATABASE=PBlaze5 520/526
pci:v00001C5Fd0000003D*
- ID_MODEL_FROM_DATABASE=PBlaze5 920/926 AIC
+ ID_MODEL_FROM_DATABASE=PBlaze5 920/926
+
+pci:v00001C5Fd0000003E*
+ ID_MODEL_FROM_DATABASE=PBlaze6 6920
-pci:v00001C5Fd0000010D*
- ID_MODEL_FROM_DATABASE=PBlaze5 520/526 U.2
+pci:v00001C5Fd0000003Esv00001C5Fsd00000A31*
+ ID_MODEL_FROM_DATABASE=PBlaze6 6920 (NVMe SSD PBlaze6 6920 3840GB 2.5" U.2)
-pci:v00001C5Fd0000013D*
- ID_MODEL_FROM_DATABASE=PBlaze5 920/926 U.2
+pci:v00001C5Fd0000003Esv00001C5Fsd00000A41*
+ ID_MODEL_FROM_DATABASE=PBlaze6 6920 (NVMe SSD PBlaze6 6920 7680GB 2.5" U.2)
+
+pci:v00001C5Fd0000003Esv00001C5Fsd00004A31*
+ ID_MODEL_FROM_DATABASE=PBlaze6 6920 (NVMe SSD PBlaze6 6920 3200GB 2.5" U.2)
+
+pci:v00001C5Fd0000003Esv00001C5Fsd00004A41*
+ ID_MODEL_FROM_DATABASE=PBlaze6 6920 (NVMe SSD PBlaze6 6920 6400GB 2.5" U.2)
pci:v00001C5Fd00000540*
ID_MODEL_FROM_DATABASE=PBlaze4 NVMe SSD
pci:v00001D0F*
ID_VENDOR_FROM_DATABASE=Amazon.com, Inc.
+pci:v00001D0Fd00008061*
+ ID_MODEL_FROM_DATABASE=NVMe EBS Controller
+
pci:v00001D0Fd0000CD01*
ID_MODEL_FROM_DATABASE=NVMe SSD Controller
pci:v00001D6Cd00001016*
ID_MODEL_FROM_DATABASE=AR-ARK-BBDEV-FX1 [Arkville 64B DPDK Baseband Device]
+pci:v00001D6Cd00001017*
+ ID_MODEL_FROM_DATABASE=AR-ARK-FX1 [Arkville 64B Multi-Homed Primary Endpoint]
+
+pci:v00001D6Cd00001018*
+ ID_MODEL_FROM_DATABASE=AR-ARK-FX1 [Arkville 64B Multi-Homed Secondary Endpoint]
+
+pci:v00001D6Cd00001019*
+ ID_MODEL_FROM_DATABASE=AR-ARK-FX1 [Arkville 64B Multi-Homed Tertiary Endpoint]
+
pci:v00001D6Cd00004200*
ID_MODEL_FROM_DATABASE=A5PL-E1-10GETI [10 GbE Ethernet Traffic Instrument]
ID_VENDOR_FROM_DATABASE=Enyx
pci:v00001D93*
- ID_VENDOR_FROM_DATABASE=YADRO (KNS Group)
+ ID_VENDOR_FROM_DATABASE=YADRO
pci:v00001D94*
ID_VENDOR_FROM_DATABASE=Chengdu Haiguang IC Design Co., Ltd.
ID_MODEL_FROM_DATABASE=DSC Capri Upstream Port (Naples 25Gb 2-port SFP28 x8 4GB)
pci:v00001DD8d00001000sv00001DD8sd00004007*
- ID_MODEL_FROM_DATABASE=DSC Capri Upstream Port (DSP DSC-25 10/25G 2p OCP Card)
+ ID_MODEL_FROM_DATABASE=DSC Capri Upstream Port (DSP DSC-25 Ent 10/25G OCP3 Card)
pci:v00001DD8d00001000sv00001DD8sd00004008*
- ID_MODEL_FROM_DATABASE=DSC Capri Upstream Port (DSC-25 10/25G 2-port SFP28 x8 4GB RAM 8GB eMMC)
+ ID_MODEL_FROM_DATABASE=DSC Capri Upstream Port (DSP DSC-25 10/25G 2p SFP28 Card)
pci:v00001DD8d00001000sv00001DD8sd0000400A*
ID_MODEL_FROM_DATABASE=DSC Capri Upstream Port (DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card)
ID_MODEL_FROM_DATABASE=DSC Capri Upstream Port (DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card)
pci:v00001DD8d00001000sv00001DD8sd0000400D*
- ID_MODEL_FROM_DATABASE=DSC Capri Upstream Port (DSP DSC-100 100G 2p QSFP28 Card)
+ ID_MODEL_FROM_DATABASE=DSC Capri Upstream Port (DSP DSC-100 Ent 100Gb Card)
+
+pci:v00001DD8d00001000sv00001DD8sd0000400E*
+ ID_MODEL_FROM_DATABASE=DSC Capri Upstream Port (DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card)
pci:v00001DD8d00001001*
ID_MODEL_FROM_DATABASE=DSC Virtual Downstream Port
ID_MODEL_FROM_DATABASE=DSC Virtual Downstream Port (Naples 25Gb 2-port SFP28 x8 4GB)
pci:v00001DD8d00001001sv00001DD8sd00004007*
- ID_MODEL_FROM_DATABASE=DSC Virtual Downstream Port (DSP DSC-25 10/25G 2p OCP Card)
+ ID_MODEL_FROM_DATABASE=DSC Virtual Downstream Port (DSP DSC-25 Ent 10/25G OCP3 Card)
pci:v00001DD8d00001001sv00001DD8sd00004008*
- ID_MODEL_FROM_DATABASE=DSC Virtual Downstream Port (DSC-25 10/25G 2-port SFP28 x8 4GB RAM 8GB eMMC)
+ ID_MODEL_FROM_DATABASE=DSC Virtual Downstream Port (DSP DSC-25 10/25G 2p SFP28 Card)
pci:v00001DD8d00001001sv00001DD8sd0000400A*
ID_MODEL_FROM_DATABASE=DSC Virtual Downstream Port (DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card)
ID_MODEL_FROM_DATABASE=DSC Virtual Downstream Port (DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card)
pci:v00001DD8d00001001sv00001DD8sd0000400D*
- ID_MODEL_FROM_DATABASE=DSC Virtual Downstream Port (DSP DSC-100 100G 2p QSFP28 Card)
+ ID_MODEL_FROM_DATABASE=DSC Virtual Downstream Port (DSP DSC-100 Ent 100Gb Card)
+
+pci:v00001DD8d00001001sv00001DD8sd0000400E*
+ ID_MODEL_FROM_DATABASE=DSC Virtual Downstream Port (DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card)
pci:v00001DD8d00001002*
ID_MODEL_FROM_DATABASE=DSC Ethernet Controller
ID_MODEL_FROM_DATABASE=DSC Ethernet Controller (Naples 25Gb 2-port SFP28 x8 4GB)
pci:v00001DD8d00001002sv00001DD8sd00004007*
- ID_MODEL_FROM_DATABASE=DSC Ethernet Controller (DSP DSC-25 10/25G 2p OCP Card)
+ ID_MODEL_FROM_DATABASE=DSC Ethernet Controller (DSP DSC-25 Ent 10/25G OCP3 Card)
pci:v00001DD8d00001002sv00001DD8sd00004008*
- ID_MODEL_FROM_DATABASE=DSC Ethernet Controller (DSC-25 10/25G 2-port SFP28 x8 4GB RAM 8GB eMMC)
+ ID_MODEL_FROM_DATABASE=DSC Ethernet Controller (DSP DSC-25 10/25G 2p SFP28 Card)
pci:v00001DD8d00001002sv00001DD8sd0000400A*
ID_MODEL_FROM_DATABASE=DSC Ethernet Controller (DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card)
ID_MODEL_FROM_DATABASE=DSC Ethernet Controller (DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card)
pci:v00001DD8d00001002sv00001DD8sd0000400D*
- ID_MODEL_FROM_DATABASE=DSC Ethernet Controller (DSP DSC-100 100G 2p QSFP28 Card)
+ ID_MODEL_FROM_DATABASE=DSC Ethernet Controller (DSP DSC-100 Ent 100Gb Card)
+
+pci:v00001DD8d00001002sv00001DD8sd0000400E*
+ ID_MODEL_FROM_DATABASE=DSC Ethernet Controller (DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card)
pci:v00001DD8d00001003*
ID_MODEL_FROM_DATABASE=DSC Ethernet Controller VF
ID_MODEL_FROM_DATABASE=DSC Ethernet Controller VF (Naples 25Gb 2-port SFP28 x8 4GB)
pci:v00001DD8d00001003sv00001DD8sd00004007*
- ID_MODEL_FROM_DATABASE=DSC Ethernet Controller VF (DSP DSC-25 10/25G 2p OCP Card)
+ ID_MODEL_FROM_DATABASE=DSC Ethernet Controller VF (DSP DSC-25 Ent 10/25G OCP3 Card)
pci:v00001DD8d00001003sv00001DD8sd00004008*
- ID_MODEL_FROM_DATABASE=DSC Ethernet Controller VF (DSC-25 10/25G 2-port SFP28 x8 4GB RAM 8GB eMMC)
+ ID_MODEL_FROM_DATABASE=DSC Ethernet Controller VF (DSP DSC-25 10/25G 2p SFP28 Card)
pci:v00001DD8d00001003sv00001DD8sd0000400A*
ID_MODEL_FROM_DATABASE=DSC Ethernet Controller VF (DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card)
ID_MODEL_FROM_DATABASE=DSC Ethernet Controller VF (DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card)
pci:v00001DD8d00001003sv00001DD8sd0000400D*
- ID_MODEL_FROM_DATABASE=DSC Ethernet Controller VF (DSP DSC-100 100G 2p QSFP28 Card)
+ ID_MODEL_FROM_DATABASE=DSC Ethernet Controller VF (DSP DSC-100 Ent 100Gb Card)
+
+pci:v00001DD8d00001003sv00001DD8sd0000400E*
+ ID_MODEL_FROM_DATABASE=DSC Ethernet Controller VF (DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card)
pci:v00001DD8d00001004*
ID_MODEL_FROM_DATABASE=DSC Management Controller
ID_MODEL_FROM_DATABASE=DSC Management Controller (Naples 25Gb 2-port SFP28 x8 4GB)
pci:v00001DD8d00001004sv00001DD8sd00004007*
- ID_MODEL_FROM_DATABASE=DSC Management Controller (DSP DSC-25 10/25G 2p OCP Card)
+ ID_MODEL_FROM_DATABASE=DSC Management Controller (DSP DSC-25 Ent 10/25G OCP3 Card)
pci:v00001DD8d00001004sv00001DD8sd00004008*
- ID_MODEL_FROM_DATABASE=DSC Management Controller (DSC-25 10/25G 2-port SFP28 x8 4GB RAM 8GB eMMC)
+ ID_MODEL_FROM_DATABASE=DSC Management Controller (DSP DSC-25 10/25G 2p SFP28 Card)
pci:v00001DD8d00001004sv00001DD8sd0000400A*
ID_MODEL_FROM_DATABASE=DSC Management Controller (DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card)
ID_MODEL_FROM_DATABASE=DSC Management Controller (DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card)
pci:v00001DD8d00001004sv00001DD8sd0000400D*
- ID_MODEL_FROM_DATABASE=DSC Management Controller (DSP DSC-100 100G 2p QSFP28 Card)
+ ID_MODEL_FROM_DATABASE=DSC Management Controller (DSP DSC-100 Ent 100Gb Card)
+
+pci:v00001DD8d00001004sv00001DD8sd0000400E*
+ ID_MODEL_FROM_DATABASE=DSC Management Controller (DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card)
pci:v00001DD8d00001007*
ID_MODEL_FROM_DATABASE=DSC Storage Accelerator
ID_MODEL_FROM_DATABASE=DSC Storage Accelerator (Naples 25Gb 2-port SFP28 x8 4GB)
pci:v00001DD8d00001007sv00001DD8sd00004007*
- ID_MODEL_FROM_DATABASE=DSC Storage Accelerator (DSP DSC-25 10/25G 2p OCP Card)
+ ID_MODEL_FROM_DATABASE=DSC Storage Accelerator (DSP DSC-25 Ent 10/25G OCP3 Card)
pci:v00001DD8d00001007sv00001DD8sd00004008*
- ID_MODEL_FROM_DATABASE=DSC Storage Accelerator (DSC-25 10/25G 2-port SFP28 x8 4GB RAM 8GB eMMC)
+ ID_MODEL_FROM_DATABASE=DSC Storage Accelerator (DSP DSC-25 10/25G 2p SFP28 Card)
pci:v00001DD8d00001007sv00001DD8sd0000400A*
ID_MODEL_FROM_DATABASE=DSC Storage Accelerator (DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card)
ID_MODEL_FROM_DATABASE=DSC Storage Accelerator (DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card)
pci:v00001DD8d00001007sv00001DD8sd0000400D*
- ID_MODEL_FROM_DATABASE=DSC Storage Accelerator (DSP DSC-100 100G 2p QSFP28 Card)
+ ID_MODEL_FROM_DATABASE=DSC Storage Accelerator (DSP DSC-100 Ent 100Gb Card)
+
+pci:v00001DD8d00001007sv00001DD8sd0000400E*
+ ID_MODEL_FROM_DATABASE=DSC Storage Accelerator (DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card)
pci:v00001DE0*
ID_VENDOR_FROM_DATABASE=Groq
pci:v00001DE0d00000000*
- ID_MODEL_FROM_DATABASE=Q100 Tensor Streaming Processor
+ ID_MODEL_FROM_DATABASE=TSP100 Tensor Streaming Processor
pci:v00001DE1*
ID_VENDOR_FROM_DATABASE=Tekram Technology Co.,Ltd.
pci:v00001DEFd0000E00C*
ID_MODEL_FROM_DATABASE=eMAG PCI Express Root Port 7
+pci:v00001DEFd0000E100*
+ ID_MODEL_FROM_DATABASE=Altra PCI Express Root Complex A
+
+pci:v00001DEFd0000E101*
+ ID_MODEL_FROM_DATABASE=Altra PCI Express Root Port a0
+
+pci:v00001DEFd0000E102*
+ ID_MODEL_FROM_DATABASE=Altra PCI Express Root Port a1
+
+pci:v00001DEFd0000E103*
+ ID_MODEL_FROM_DATABASE=Altra PCI Express Root Port a2
+
+pci:v00001DEFd0000E104*
+ ID_MODEL_FROM_DATABASE=Altra PCI Express Root Port a3
+
+pci:v00001DEFd0000E105*
+ ID_MODEL_FROM_DATABASE=Altra PCI Express Root Port a4
+
+pci:v00001DEFd0000E106*
+ ID_MODEL_FROM_DATABASE=Altra PCI Express Root Port a5
+
+pci:v00001DEFd0000E107*
+ ID_MODEL_FROM_DATABASE=Altra PCI Express Root Port a6
+
+pci:v00001DEFd0000E108*
+ ID_MODEL_FROM_DATABASE=Altra PCI Express Root Port a7
+
+pci:v00001DEFd0000E110*
+ ID_MODEL_FROM_DATABASE=Altra PCI Express Root Complex B
+
+pci:v00001DEFd0000E111*
+ ID_MODEL_FROM_DATABASE=Altra PCI Express Root Port b0
+
+pci:v00001DEFd0000E112*
+ ID_MODEL_FROM_DATABASE=Altra PCI Express Root Port b1
+
+pci:v00001DEFd0000E113*
+ ID_MODEL_FROM_DATABASE=Altra PCI Express Root Port b2
+
+pci:v00001DEFd0000E114*
+ ID_MODEL_FROM_DATABASE=Altra PCI Express Root Port b3
+
+pci:v00001DEFd0000E115*
+ ID_MODEL_FROM_DATABASE=Altra PCI Express Root Port b4
+
+pci:v00001DEFd0000E116*
+ ID_MODEL_FROM_DATABASE=Altra PCI Express Root Port b5
+
+pci:v00001DEFd0000E117*
+ ID_MODEL_FROM_DATABASE=Altra PCI Express Root Port b6
+
+pci:v00001DEFd0000E118*
+ ID_MODEL_FROM_DATABASE=Altra PCI Express Root Port b7
+
pci:v00001DF3*
ID_VENDOR_FROM_DATABASE=Ethernity Networks
pci:v00001E36d00008011*
ID_MODEL_FROM_DATABASE=I10 [CloudBlazer]
+pci:v00001E36d00008012*
+ ID_MODEL_FROM_DATABASE=I10L [CloudBlazer]
+
pci:v00001E38*
ID_VENDOR_FROM_DATABASE=Blaize, Inc
ID_VENDOR_FROM_DATABASE=GSI Technology
pci:v00001E4Cd00000010*
- ID_MODEL_FROM_DATABASE=APU [Leda-G]
+ ID_MODEL_FROM_DATABASE=APU [Leda]
pci:v00001E4Cd00000010sv00001E4Csd00000120*
- ID_MODEL_FROM_DATABASE=APU [Leda-G] (SE120)
+ ID_MODEL_FROM_DATABASE=APU [Leda] (SE120)
pci:v00001E57*
ID_VENDOR_FROM_DATABASE=Beijing Panyi Technology Co., Ltd
pci:v00001E57d00000100sv00000000sd00000100*
ID_MODEL_FROM_DATABASE=The device has already been deleted. (PY8800 64GB Accelerator)
+pci:v00001E60*
+ ID_VENDOR_FROM_DATABASE=Hailo Technologies Ltd.
+
+pci:v00001E60d00002864*
+ ID_MODEL_FROM_DATABASE=Hailo-8 AI Processor
+
pci:v00001E6B*
ID_VENDOR_FROM_DATABASE=Axiado Corp.
pci:v00001E95*
ID_VENDOR_FROM_DATABASE=Solid State Storage Technology Corporation
+pci:v00001EA0*
+ ID_VENDOR_FROM_DATABASE=Tencent Technology (Shenzhen) Company Limited
+
+pci:v00001EA0d00002A16*
+ ID_MODEL_FROM_DATABASE=Cloud Intelligent Inference Controller
+
pci:v00001EAB*
ID_VENDOR_FROM_DATABASE=Hefei DATANG Storage Technology Co.,LTD.
+pci:v00001EABd0000300A*
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller 300A
+
+pci:v00001EABd0000300B*
+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller 300B
+
pci:v00001EAE*
ID_VENDOR_FROM_DATABASE=XFX Limited
pci:v00001EB1d00001001*
ID_MODEL_FROM_DATABASE=Video Accelerator
+pci:v00001ED8*
+ ID_VENDOR_FROM_DATABASE=Digiteq Automotive
+
+pci:v00001ED8d00000101*
+ ID_MODEL_FROM_DATABASE=FG4 PCIe Frame Grabber
+
+pci:v00001ED9*
+ ID_VENDOR_FROM_DATABASE=Myrtle.ai
+
+pci:v00001EE9*
+ ID_VENDOR_FROM_DATABASE=SUSE LLC
+
pci:v00001FC0*
ID_VENDOR_FROM_DATABASE=Ascom (Finland) Oy
pci:v00002646*
ID_VENDOR_FROM_DATABASE=Kingston Technology Company, Inc.
+pci:v00002646d00000010*
+ ID_MODEL_FROM_DATABASE=HyperX Predator PCIe AHCI SSD
+
pci:v00002646d00002263*
ID_MODEL_FROM_DATABASE=A2000 NVMe SSD
+pci:v00002646d00005008*
+ ID_MODEL_FROM_DATABASE=U-SNS8154P3 NVMe SSD
+
+pci:v00002646d0000500D*
+ ID_MODEL_FROM_DATABASE=OM3PDP3 NVMe SSD
+
pci:v0000270B*
ID_VENDOR_FROM_DATABASE=Xantel Corporation
pci:v00008086d00000100sv00001043sd0000844D*
ID_MODEL_FROM_DATABASE=2nd Generation Core Processor Family DRAM Controller (P8P67/P8H67 Series Motherboard)
+pci:v00008086d00000100sv00008086sd0000200D*
+ ID_MODEL_FROM_DATABASE=2nd Generation Core Processor Family DRAM Controller (DH61CR motherboard)
+
pci:v00008086d00000101*
ID_MODEL_FROM_DATABASE=Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port
pci:v00008086d00000176*
ID_MODEL_FROM_DATABASE=3rd Gen Core processor Graphics Controller
+pci:v00008086d00000201*
+ ID_MODEL_FROM_DATABASE=Arctic Sound
+
pci:v00008086d00000284*
ID_MODEL_FROM_DATABASE=Comet Lake PCH-LP LPC Premium Controller/eSPI Controller
pci:v00008086d000002A6*
ID_MODEL_FROM_DATABASE=Comet Lake North Peak
+pci:v00008086d000002B0*
+ ID_MODEL_FROM_DATABASE=Comet Lake PCI Express Root Port #9
+
+pci:v00008086d000002B1*
+ ID_MODEL_FROM_DATABASE=Comet Lake PCI Express Root Port #10
+
+pci:v00008086d000002B3*
+ ID_MODEL_FROM_DATABASE=Comet Lake PCI Express Root Port #12
+
+pci:v00008086d000002B4*
+ ID_MODEL_FROM_DATABASE=Comet Lake PCI Express Root Port #13
+
+pci:v00008086d000002B8*
+ ID_MODEL_FROM_DATABASE=Comet Lake PCI Express Root Port #1
+
+pci:v00008086d000002BC*
+ ID_MODEL_FROM_DATABASE=Comet Lake PCI Express Root Port #5
+
+pci:v00008086d000002C5*
+ ID_MODEL_FROM_DATABASE=Comet Lake Serial IO I2C Host Controller
+
pci:v00008086d000002C8*
ID_MODEL_FROM_DATABASE=Comet Lake PCH-LP cAVS
pci:v00008086d000002E9*
ID_MODEL_FROM_DATABASE=Comet Lake Serial IO I2C Host Controller
+pci:v00008086d000002EA*
+ ID_MODEL_FROM_DATABASE=Comet Lake PCH-LP LPSS: I2C Controller #2
+
pci:v00008086d000002ED*
ID_MODEL_FROM_DATABASE=Comet Lake PCH-LP USB 3.1 xHCI Host Controller
pci:v00008086d00000412sv0000103Csd00001998*
ID_MODEL_FROM_DATABASE=Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller (EliteDesk 800 G1)
+pci:v00008086d00000412sv000017AAsd00003098*
+ ID_MODEL_FROM_DATABASE=Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller (ThinkCentre E73)
+
pci:v00008086d00000412sv000017AAsd0000309F*
ID_MODEL_FROM_DATABASE=Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller (ThinkCentre M83)
ID_MODEL_FROM_DATABASE=Thunderbolt 4 USB Controller [Goshen Ridge 2020]
pci:v00008086d00000B60*
- ID_MODEL_FROM_DATABASE=NVMe DC SSD [3DNAND, Beta Rock Controller]
+ ID_MODEL_FROM_DATABASE=NVMe DC SSD [3DNAND, Sentinel Rock Controller]
pci:v00008086d00000B60sv00001028sd00002060*
- ID_MODEL_FROM_DATABASE=NVMe DC SSD [3DNAND, Beta Rock Controller] (NVMe SED MU U.2 1.6TB (P5600))
+ ID_MODEL_FROM_DATABASE=NVMe DC SSD [3DNAND, Sentinel Rock Controller] (NVMe SED MU U.2 1.6TB (P5600))
pci:v00008086d00000B60sv00001028sd00002061*
- ID_MODEL_FROM_DATABASE=NVMe DC SSD [3DNAND, Beta Rock Controller] (NVMe SED MU U.2 3.2TB (P5600))
+ ID_MODEL_FROM_DATABASE=NVMe DC SSD [3DNAND, Sentinel Rock Controller] (NVMe SED MU U.2 3.2TB (P5600))
pci:v00008086d00000B60sv00001028sd00002062*
- ID_MODEL_FROM_DATABASE=NVMe DC SSD [3DNAND, Beta Rock Controller] (NVMe SED MU U.2 6.4TB (P5600))
+ ID_MODEL_FROM_DATABASE=NVMe DC SSD [3DNAND, Sentinel Rock Controller] (NVMe SED MU U.2 6.4TB (P5600))
pci:v00008086d00000B60sv00001028sd00002064*
- ID_MODEL_FROM_DATABASE=NVMe DC SSD [3DNAND, Beta Rock Controller] (NVMe SED RI U.2 1.92TB (P5500))
+ ID_MODEL_FROM_DATABASE=NVMe DC SSD [3DNAND, Sentinel Rock Controller] (NVMe SED RI U.2 1.92TB (P5500))
pci:v00008086d00000B60sv00001028sd00002065*
- ID_MODEL_FROM_DATABASE=NVMe DC SSD [3DNAND, Beta Rock Controller] (NVMe SED RI U.2 3.84TB (P5500))
+ ID_MODEL_FROM_DATABASE=NVMe DC SSD [3DNAND, Sentinel Rock Controller] (NVMe SED RI U.2 3.84TB (P5500))
pci:v00008086d00000B60sv00001028sd00002066*
- ID_MODEL_FROM_DATABASE=NVMe DC SSD [3DNAND, Beta Rock Controller] (NVMe SED RI U.2 7.68TB (P5500))
+ ID_MODEL_FROM_DATABASE=NVMe DC SSD [3DNAND, Sentinel Rock Controller] (NVMe SED RI U.2 7.68TB (P5500))
pci:v00008086d00000B60sv00001028sd0000209E*
- ID_MODEL_FROM_DATABASE=NVMe DC SSD [3DNAND, Beta Rock Controller] (NVMe MU U.2 1.6TB (P5600))
+ ID_MODEL_FROM_DATABASE=NVMe DC SSD [3DNAND, Sentinel Rock Controller] (NVMe MU U.2 1.6TB (P5600))
pci:v00008086d00000B60sv00001028sd0000209F*
- ID_MODEL_FROM_DATABASE=NVMe DC SSD [3DNAND, Beta Rock Controller] (NVMe MU U.2 3.2TB (P5600))
+ ID_MODEL_FROM_DATABASE=NVMe DC SSD [3DNAND, Sentinel Rock Controller] (NVMe MU U.2 3.2TB (P5600))
pci:v00008086d00000B60sv00001028sd00002100*
- ID_MODEL_FROM_DATABASE=NVMe DC SSD [3DNAND, Beta Rock Controller] (NVMe MU U.2 6.4TB (P5600))
+ ID_MODEL_FROM_DATABASE=NVMe DC SSD [3DNAND, Sentinel Rock Controller] (NVMe MU U.2 6.4TB (P5600))
pci:v00008086d00000B60sv00001028sd00002102*
- ID_MODEL_FROM_DATABASE=NVMe DC SSD [3DNAND, Beta Rock Controller] (NVMe RI U.2 1.92TB (P5500))
+ ID_MODEL_FROM_DATABASE=NVMe DC SSD [3DNAND, Sentinel Rock Controller] (NVMe RI U.2 1.92TB (P5500))
pci:v00008086d00000B60sv00001028sd00002103*
- ID_MODEL_FROM_DATABASE=NVMe DC SSD [3DNAND, Beta Rock Controller] (NVMe RI U.2 3.84TB (P5500))
+ ID_MODEL_FROM_DATABASE=NVMe DC SSD [3DNAND, Sentinel Rock Controller] (NVMe RI U.2 3.84TB (P5500))
pci:v00008086d00000B60sv00001028sd00002104*
- ID_MODEL_FROM_DATABASE=NVMe DC SSD [3DNAND, Beta Rock Controller] (NVMe RI U.2 7.68TB (P5500))
+ ID_MODEL_FROM_DATABASE=NVMe DC SSD [3DNAND, Sentinel Rock Controller] (NVMe RI U.2 7.68TB (P5500))
+
+pci:v00008086d00000B60sv00008086sd00008008*
+ ID_MODEL_FROM_DATABASE=NVMe DC SSD [3DNAND, Sentinel Rock Controller] (NVMe Datacenter SSD [3DNAND] SE 2.5" U.2 (P5510))
pci:v00008086d00000BE0*
ID_MODEL_FROM_DATABASE=Atom Processor D2xxx/N2xxx Integrated Graphics Controller
pci:v00008086d00000C00sv0000103Csd00001998*
ID_MODEL_FROM_DATABASE=4th Gen Core Processor DRAM Controller (EliteDesk 800 G1)
+pci:v00008086d00000C00sv000017AAsd00003098*
+ ID_MODEL_FROM_DATABASE=4th Gen Core Processor DRAM Controller (ThinkCentre E73)
+
pci:v00008086d00000C00sv000017AAsd0000309F*
ID_MODEL_FROM_DATABASE=4th Gen Core Processor DRAM Controller (ThinkCentre M83)
pci:v00008086d00001132sv00008086sd00004557*
ID_MODEL_FROM_DATABASE=82815 Chipset Graphics Controller (CGC) (D815EGEW Mainboard)
+pci:v00008086d00001136*
+ ID_MODEL_FROM_DATABASE=Thunderbolt 4 Bridge [Maple Ridge 4C 2020]
+
+pci:v00008086d00001137*
+ ID_MODEL_FROM_DATABASE=Thunderbolt 4 NHI [Maple Ridge 4C 2020]
+
+pci:v00008086d00001138*
+ ID_MODEL_FROM_DATABASE=Thunderbolt 4 USB Controller [Maple Ridge 4C 2020]
+
pci:v00008086d00001161*
ID_MODEL_FROM_DATABASE=82806AA PCI64 Hub Advanced Programmable Interrupt Controller
pci:v00008086d00001503sv000010CFsd0000161C*
ID_MODEL_FROM_DATABASE=82579V Gigabit Network Connection (LIFEBOOK E752)
+pci:v00008086d00001503sv00008086sd0000200D*
+ ID_MODEL_FROM_DATABASE=82579V Gigabit Network Connection (DH61CR motherboard)
+
pci:v00008086d00001507*
ID_MODEL_FROM_DATABASE=Ethernet Express Module X520-P2
pci:v00008086d0000156Fsv0000103Csd00008079*
ID_MODEL_FROM_DATABASE=Ethernet Connection I219-LM (EliteBook 840 G3)
+pci:v00008086d0000156Fsv000017AAsd00002247*
+ ID_MODEL_FROM_DATABASE=Ethernet Connection I219-LM (ThinkPad T570)
+
pci:v00008086d00001570*
ID_MODEL_FROM_DATABASE=Ethernet Connection I219-V
pci:v00008086d00001572sv000017AAsd00004002*
ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+ (ThinkServer X710-2 AnyFabric for 10GbE SFP+)
+pci:v00008086d00001572sv0000193Dsd00001020*
+ ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+ (NIC-ETH561F-sL-4x10G)
+
+pci:v00008086d00001572sv0000193Dsd00001021*
+ ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+ (NIC-ETH561F-sL-2x10G)
+
pci:v00008086d00001572sv000019E5sd0000D11C*
ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+ (Ethernet 2-port X710 10Gb SFP+ Adapter SP330)
pci:v00008086d0000157B*
ID_MODEL_FROM_DATABASE=I210 Gigabit Network Connection
+pci:v00008086d0000157Bsv0000EA50sd0000CC10*
+ ID_MODEL_FROM_DATABASE=I210 Gigabit Network Connection (RXi2-BP)
+
pci:v00008086d0000157C*
ID_MODEL_FROM_DATABASE=I210 Gigabit Backplane Connection
pci:v00008086d00001581sv00001590sd000000F8*
ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE backplane (Ethernet 2-port 563i Adapter)
+pci:v00008086d00001581sv0000193Dsd0000100E*
+ ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE backplane (NIC-ETH561i-Mb-4x10G)
+
pci:v00008086d00001581sv00008086sd00000000*
ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE backplane (Ethernet Converged Network Adapter XL710-Q2)
pci:v00008086d00001592sv00001137sd000002BF*
ID_MODEL_FROM_DATABASE=Ethernet Controller E810-C for QSFP (E810CQDA2 2x100 GbE QSFP28 PCIe NIC)
+pci:v00008086d00001592sv00008086sd00000001*
+ ID_MODEL_FROM_DATABASE=Ethernet Controller E810-C for QSFP (Ethernet Network Adapter E810-C-Q1)
+
pci:v00008086d00001592sv00008086sd00000002*
ID_MODEL_FROM_DATABASE=Ethernet Controller E810-C for QSFP (Ethernet Network Adapter E810-C-Q2)
pci:v00008086d00001592sv00008086sd0000000C*
ID_MODEL_FROM_DATABASE=Ethernet Controller E810-C for QSFP (Ethernet 100G 2P E810-C OCP)
+pci:v00008086d00001592sv00008086sd0000000D*
+ ID_MODEL_FROM_DATABASE=Ethernet Controller E810-C for QSFP (Ethernet Network Adapter E810-L-Q2 for OCP 3.0)
+
pci:v00008086d00001593*
ID_MODEL_FROM_DATABASE=Ethernet Controller E810-C for SFP
pci:v00008086d000015FFsv00001137sd000002C2*
ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GBASE-T (X710T4LG 4x10 GbE RJ45 PCIe NIC)
+pci:v00008086d000015FFsv00001137sd000002D9*
+ ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GBASE-T (Ethernet Network Adapter X710-T2L OCP 3.0)
+
+pci:v00008086d000015FFsv00001137sd000002DA*
+ ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GBASE-T (Ethernet Network Adapter X710-T4L OCP 3.0)
+
pci:v00008086d000015FFsv00008086sd00000000*
ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GBASE-T (Ethernet Network Adapter X710-TL)
ID_MODEL_FROM_DATABASE=Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers
pci:v00008086d00001901*
- ID_MODEL_FROM_DATABASE=6th-9th Gen Core Processor PCIe Controller (x16)
+ ID_MODEL_FROM_DATABASE=6th-10th Gen Core Processor PCIe Controller (x16)
pci:v00008086d00001902*
ID_MODEL_FROM_DATABASE=HD Graphics 510
pci:v00008086d00001903sv00001028sd000006E4*
ID_MODEL_FROM_DATABASE=Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Thermal Subsystem (XPS 15 9550)
+pci:v00008086d00001903sv00001028sd000006E6*
+ ID_MODEL_FROM_DATABASE=Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Thermal Subsystem (Latitude 11 5175 2-in-1)
+
pci:v00008086d00001903sv0000103Csd0000825B*
ID_MODEL_FROM_DATABASE=Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Thermal Subsystem (OMEN-17-w001nv)
pci:v00008086d00001904sv0000103Csd00008079*
ID_MODEL_FROM_DATABASE=Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers (EliteBook 840 G3)
+pci:v00008086d00001904sv000017AAsd00002247*
+ ID_MODEL_FROM_DATABASE=Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers (ThinkPad T570)
+
pci:v00008086d00001904sv000017AAsd0000382A*
ID_MODEL_FROM_DATABASE=Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers (B51-80 Laptop)
pci:v00008086d0000190Csv00001028sd000006D6*
ID_MODEL_FROM_DATABASE=Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers (Latitude 7275 tablet)
+pci:v00008086d0000190Csv00001028sd000006E6*
+ ID_MODEL_FROM_DATABASE=Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers (Latitude 11 5175 2-in-1)
+
pci:v00008086d0000190F*
ID_MODEL_FROM_DATABASE=Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers
pci:v00008086d00001916sv0000103Csd00008079*
ID_MODEL_FROM_DATABASE=Skylake GT2 [HD Graphics 520] (EliteBook 840 G3)
+pci:v00008086d00001916sv000017AAsd00002247*
+ ID_MODEL_FROM_DATABASE=Skylake GT2 [HD Graphics 520] (ThinkPad T570)
+
pci:v00008086d00001918*
ID_MODEL_FROM_DATABASE=Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers
pci:v00008086d00001919sv00001028sd000006D6*
ID_MODEL_FROM_DATABASE=Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Imaging Unit (Latitude 7275 tablet)
+pci:v00008086d00001919sv00001028sd000006E6*
+ ID_MODEL_FROM_DATABASE=Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Imaging Unit (Latitude 11 5175 2-in-1)
+
pci:v00008086d0000191B*
ID_MODEL_FROM_DATABASE=HD Graphics 530
pci:v00008086d0000191Esv00001028sd000006D6*
ID_MODEL_FROM_DATABASE=HD Graphics 515 (Latitude 7275 tablet)
+pci:v00008086d0000191Esv00001028sd000006E6*
+ ID_MODEL_FROM_DATABASE=HD Graphics 515 (Latitude 11 5175 2-in-1)
+
pci:v00008086d0000191F*
ID_MODEL_FROM_DATABASE=Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers
pci:v00008086d00001C02sv00001043sd0000844D*
ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family 6 port Desktop SATA AHCI Controller (P8 series motherboard)
+pci:v00008086d00001C02sv00008086sd0000200D*
+ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family 6 port Desktop SATA AHCI Controller (DH61CR motherboard)
+
pci:v00008086d00001C02sv00008086sd00007270*
ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family 6 port Desktop SATA AHCI Controller (Server Board S1200BT Family)
pci:v00008086d00001C20sv00008086sd00002008*
ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family High Definition Audio Controller (DQ67SW board)
+pci:v00008086d00001C20sv00008086sd0000200D*
+ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family High Definition Audio Controller (DH61CR motherboard)
+
pci:v00008086d00001C20sv00008086sd00007270*
ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family High Definition Audio Controller (Apple MacBookPro8,2 [Core i7, 15", 2011])
pci:v00008086d00001C22sv000017AAsd000021CF*
ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family SMBus Controller (ThinkPad T520)
+pci:v00008086d00001C22sv00008086sd0000200D*
+ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family SMBus Controller (DH61CR motherboard)
+
pci:v00008086d00001C22sv00008086sd00007270*
ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family SMBus Controller (Server Board S1200BT Family / Apple MacBook Pro 8,1/8,2)
pci:v00008086d00001C26sv000017AAsd000021CF*
ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 (ThinkPad T520)
+pci:v00008086d00001C26sv00008086sd0000200D*
+ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 (DH61CR motherboard)
+
pci:v00008086d00001C26sv00008086sd00007270*
ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 (Server Board S1200BT Family / Apple MacBook Pro 8,1/8,2)
pci:v00008086d00001C2Dsv000017AAsd000021CF*
ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 (ThinkPad T520)
+pci:v00008086d00001C2Dsv00008086sd0000200D*
+ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 (DH61CR motherboard)
+
pci:v00008086d00001C2Dsv00008086sd00007270*
ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 (Server Board S1200BT Family / Apple MacBook Pro 8,1/8,2)
pci:v00008086d00001C3Asv000017AAsd000021CF*
ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family MEI Controller #1 (ThinkPad T520)
+pci:v00008086d00001C3Asv00008086sd0000200D*
+ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family MEI Controller #1 (DH61CR motherboard)
+
pci:v00008086d00001C3Asv00008086sd00007270*
ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family MEI Controller #1 (Apple MacBookPro8,2 [Core i7, 15", 2011])
pci:v00008086d00001C5C*
ID_MODEL_FROM_DATABASE=H61 Express Chipset LPC Controller
+pci:v00008086d00001C5Csv00008086sd0000200D*
+ ID_MODEL_FROM_DATABASE=H61 Express Chipset LPC Controller (DH61CR motherboard)
+
pci:v00008086d00001C5D*
ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family LPC Controller
pci:v00008086d00002442sv00008086sd00004557*
ID_MODEL_FROM_DATABASE=82801BA/BAM UHCI USB 1.1 Controller #1 (D815EGEW Mainboard)
+pci:v00008086d00002442sv00008086sd00004D44*
+ ID_MODEL_FROM_DATABASE=82801BA/BAM UHCI USB 1.1 Controller #1 (D850EMV2 motherboard)
+
pci:v00008086d00002442sv00008086sd00005744*
ID_MODEL_FROM_DATABASE=82801BA/BAM UHCI USB 1.1 Controller #1 (S845WD1-E mainboard)
pci:v00008086d00002445sv00008086sd00004656*
ID_MODEL_FROM_DATABASE=82801BA/BAM AC'97 Audio Controller (Desktop Board D815EFV)
+pci:v00008086d00002445sv00008086sd00004D44*
+ ID_MODEL_FROM_DATABASE=82801BA/BAM AC'97 Audio Controller (D850EMV2 motherboard)
+
pci:v00008086d00002446*
ID_MODEL_FROM_DATABASE=82801BA/BAM AC'97 Modem Controller
pci:v00008086d0000244Bsv00008086sd00004557*
ID_MODEL_FROM_DATABASE=82801BA IDE U100 Controller (D815EGEW Mainboard)
+pci:v00008086d0000244Bsv00008086sd00004D44*
+ ID_MODEL_FROM_DATABASE=82801BA IDE U100 Controller (D850EMV2 motherboard)
+
pci:v00008086d0000244Bsv00008086sd00005744*
ID_MODEL_FROM_DATABASE=82801BA IDE U100 Controller (S845WD1-E mainboard)
pci:v00008086d00002590sv0000103Csd0000099C*
ID_MODEL_FROM_DATABASE=Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller (NX6110/NC6120)
+pci:v00008086d00002590sv00001043sd000082D9*
+ ID_MODEL_FROM_DATABASE=Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller (Asus Eee PC 900)
+
pci:v00008086d00002590sv0000104Dsd000081B7*
ID_MODEL_FROM_DATABASE=Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller (Vaio VGN-S3XP)
pci:v00008086d00002A00sv0000103Csd000030C1*
ID_MODEL_FROM_DATABASE=Mobile PM965/GM965/GL960 Memory Controller Hub (Compaq 6910p)
+pci:v00008086d00002A00sv0000103Csd000030C5*
+ ID_MODEL_FROM_DATABASE=Mobile PM965/GM965/GL960 Memory Controller Hub (Compaq 8510p)
+
pci:v00008086d00002A00sv0000103Csd000030CC*
ID_MODEL_FROM_DATABASE=Mobile PM965/GM965/GL960 Memory Controller Hub (Pavilion dv6700)
pci:v00008086d00002A42*
ID_MODEL_FROM_DATABASE=Mobile 4 Series Chipset Integrated Graphics Controller
+pci:v00008086d00002A42sv00001028sd000002AA*
+ ID_MODEL_FROM_DATABASE=Mobile 4 Series Chipset Integrated Graphics Controller (Dell Inspiron 1545)
+
pci:v00008086d00002A42sv000017AAsd00002112*
ID_MODEL_FROM_DATABASE=Mobile 4 Series Chipset Integrated Graphics Controller (ThinkPad T400)
ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 3165 Plus Bluetooth (Dual Band Wireless-AC 3165)
pci:v00008086d00003184*
- ID_MODEL_FROM_DATABASE=UHD Graphics 605
+ ID_MODEL_FROM_DATABASE=GeminiLake [UHD Graphics 605]
pci:v00008086d00003185*
- ID_MODEL_FROM_DATABASE=UHD Graphics 605
+ ID_MODEL_FROM_DATABASE=GeminiLake [UHD Graphics 600]
pci:v00008086d0000318C*
ID_MODEL_FROM_DATABASE=Celeron/Pentium Silver Processor Dynamic Platform and Thermal Framework Processor Participant
pci:v00008086d000031A2*
ID_MODEL_FROM_DATABASE=Celeron/Pentium Silver Processor Integrated Sensor Solution
+pci:v00008086d000031A8*
+ ID_MODEL_FROM_DATABASE=Celeron/Pentium Silver Processor USB 3.0 xHCI Controller
+
+pci:v00008086d000031A8sv00001849sd000031A8*
+ ID_MODEL_FROM_DATABASE=Celeron/Pentium Silver Processor USB 3.0 xHCI Controller
+
pci:v00008086d000031AC*
ID_MODEL_FROM_DATABASE=Celeron/Pentium Silver Processor Serial IO I2C Host Controller
pci:v00008086d000031DC*
ID_MODEL_FROM_DATABASE=AC 1550i Wireless
+pci:v00008086d000031E3*
+ ID_MODEL_FROM_DATABASE=Celeron/Pentium Silver Processor SATA Controller
+
+pci:v00008086d000031E8*
+ ID_MODEL_FROM_DATABASE=Celeron/Pentium Silver Processor LPC Controller
+
pci:v00008086d000031EE*
ID_MODEL_FROM_DATABASE=Celeron/Pentium Silver Processor Serial IO UART Host Controller
pci:v00008086d000034B0*
ID_MODEL_FROM_DATABASE=Ice Lake-LP PCI Express Root Port #9
+pci:v00008086d000034B7*
+ ID_MODEL_FROM_DATABASE=Ice Lake-LP PCI Express Root Port #16
+
pci:v00008086d000034BC*
ID_MODEL_FROM_DATABASE=Ice Lake-LP PCI Express Root Port #5
ID_MODEL_FROM_DATABASE=Ice Lake-LP Serial IO I2c Controller #5
pci:v00008086d000034C8*
- ID_MODEL_FROM_DATABASE=Smart Sound Technology Audio Controller
+ ID_MODEL_FROM_DATABASE=Ice Lake-LP Smart Sound Technology Audio Controller
pci:v00008086d000034D3*
ID_MODEL_FROM_DATABASE=Ice Lake-LP SATA Controller [AHCI mode]
pci:v00008086d000034E0*
- ID_MODEL_FROM_DATABASE=Management Engine Interface
+ ID_MODEL_FROM_DATABASE=Ice Lake-LP Management Engine
pci:v00008086d000034E8*
ID_MODEL_FROM_DATABASE=Ice Lake-LP Serial IO I2C Controller #0
pci:v00008086d000034ED*
ID_MODEL_FROM_DATABASE=Ice Lake-LP USB 3.1 xHCI Host Controller
+pci:v00008086d000034EF*
+ ID_MODEL_FROM_DATABASE=Ice Lake-LP DRAM Controller
+
pci:v00008086d000034F0*
ID_MODEL_FROM_DATABASE=Killer Wi-Fi 6 AX1650i 160MHz Wireless Network Adapter (201NGW)
pci:v00008086d000034F8*
ID_MODEL_FROM_DATABASE=Ice Lake-LP SD Controller
+pci:v00008086d000034FC*
+ ID_MODEL_FROM_DATABASE=Ice Lake-LP Integrated Sensor Solution
+
pci:v00008086d00003500*
ID_MODEL_FROM_DATABASE=6311ESB/6321ESB PCI Express Upstream Port
pci:v00008086d00003E89*
ID_MODEL_FROM_DATABASE=8th Gen Core Processor PCIe Controller (x4)
+pci:v00008086d00003E90*
+ ID_MODEL_FROM_DATABASE=CoffeeLake-S GT1 [UHD Graphics 610]
+
pci:v00008086d00003E91*
- ID_MODEL_FROM_DATABASE=8th Gen Core Processor Gaussian Mixture Model
+ ID_MODEL_FROM_DATABASE=CoffeeLake-S GT2 [UHD Graphics 630]
pci:v00008086d00003E92*
- ID_MODEL_FROM_DATABASE=UHD Graphics 630 (Desktop)
+ ID_MODEL_FROM_DATABASE=CometLake-S GT2 [UHD Graphics 630]
pci:v00008086d00003E92sv00001028sd00000869*
- ID_MODEL_FROM_DATABASE=UHD Graphics 630 (Desktop) (Vostro 3470)
+ ID_MODEL_FROM_DATABASE=CometLake-S GT2 [UHD Graphics 630] (Vostro 3470)
pci:v00008086d00003E93*
- ID_MODEL_FROM_DATABASE=UHD Graphics 610
+ ID_MODEL_FROM_DATABASE=CoffeeLake-S GT1 [UHD Graphics 610]
pci:v00008086d00003E96*
- ID_MODEL_FROM_DATABASE=HD Graphics P630
+ ID_MODEL_FROM_DATABASE=CoffeeLake-S GT2 [UHD Graphics P630]
pci:v00008086d00003E98*
- ID_MODEL_FROM_DATABASE=UHD Graphics 630 (Desktop 9 Series)
+ ID_MODEL_FROM_DATABASE=CoffeeLake-S GT2 [UHD Graphics 630]
pci:v00008086d00003E9B*
- ID_MODEL_FROM_DATABASE=UHD Graphics 630 (Mobile)
+ ID_MODEL_FROM_DATABASE=CoffeeLake-H GT2 [UHD Graphics 630]
pci:v00008086d00003EA0*
- ID_MODEL_FROM_DATABASE=UHD Graphics 620 (Whiskey Lake)
+ ID_MODEL_FROM_DATABASE=WhiskeyLake-U GT2 [UHD Graphics 620]
pci:v00008086d00003EA0sv00001028sd0000089E*
- ID_MODEL_FROM_DATABASE=UHD Graphics 620 (Whiskey Lake) (Inspiron 5482)
+ ID_MODEL_FROM_DATABASE=WhiskeyLake-U GT2 [UHD Graphics 620] (Inspiron 5482)
pci:v00008086d00003EA5*
- ID_MODEL_FROM_DATABASE=Iris Plus Graphics 655
+ ID_MODEL_FROM_DATABASE=CoffeeLake-U GT3e [Iris Plus Graphics 655]
pci:v00008086d00003EC2*
ID_MODEL_FROM_DATABASE=8th Gen Core Processor Host Bridge/DRAM Registers
pci:v00008086d00004036*
ID_MODEL_FROM_DATABASE=5400 Chipset FBD Registers
+pci:v00008086d00004041*
+ ID_MODEL_FROM_DATABASE=NVMe Datacenter SSD [Optane]
+
pci:v00008086d00004100*
ID_MODEL_FROM_DATABASE=Moorestown Graphics and Video
pci:v00008086d00004117*
ID_MODEL_FROM_DATABASE=Atom Processor E6xx PCI Host Bridge #4
+pci:v00008086d00004140*
+ ID_MODEL_FROM_DATABASE=NVMe Datacenter SSD [Optane]
+
+pci:v00008086d00004140sv00001028sd00002134*
+ ID_MODEL_FROM_DATABASE=NVMe Datacenter SSD [Optane] (SED 400GB 2.5" U.2 (P5800X))
+
+pci:v00008086d00004140sv00001028sd00002135*
+ ID_MODEL_FROM_DATABASE=NVMe Datacenter SSD [Optane] (SED 800GB 2.5" U.2 (P5800X))
+
+pci:v00008086d00004140sv00001028sd00002136*
+ ID_MODEL_FROM_DATABASE=NVMe Datacenter SSD [Optane] (SED 1.6GB 2.5" U.2 (P5800X))
+
+pci:v00008086d00004140sv00001028sd00002137*
+ ID_MODEL_FROM_DATABASE=NVMe Datacenter SSD [Optane] (400GB 2.5" U.2 (P5800X))
+
+pci:v00008086d00004140sv00001028sd00002138*
+ ID_MODEL_FROM_DATABASE=NVMe Datacenter SSD [Optane] (800GB 2.5" U.2 (P5800X))
+
+pci:v00008086d00004140sv00001028sd00002139*
+ ID_MODEL_FROM_DATABASE=NVMe Datacenter SSD [Optane] (1.6TB 2.5" U.2 (P5800X))
+
pci:v00008086d00004220*
ID_MODEL_FROM_DATABASE=PRO/Wireless 2200BG [Calexico2] Network Connection
pci:v00008086d0000467F*
ID_MODEL_FROM_DATABASE=Volume Management Device NVMe RAID Controller
+pci:v00008086d00004680*
+ ID_MODEL_FROM_DATABASE=AlderLake-S GT1
+
+pci:v00008086d000046A0*
+ ID_MODEL_FROM_DATABASE=AlderLake-P GT2
+
+pci:v00008086d00004905*
+ ID_MODEL_FROM_DATABASE=DG1 [Iris Xe MAX Graphics]
+
+pci:v00008086d00004906*
+ ID_MODEL_FROM_DATABASE=DG1 [Iris Xe Pod]
+
+pci:v00008086d00004907*
+ ID_MODEL_FROM_DATABASE=SG1 [Server GPU SG-18M]
+
+pci:v00008086d00004908*
+ ID_MODEL_FROM_DATABASE=DG1 [Iris Xe Graphics]
+
pci:v00008086d00004C3D*
ID_MODEL_FROM_DATABASE=Volume Management Device NVMe RAID Controller
+pci:v00008086d00004F80*
+ ID_MODEL_FROM_DATABASE=DG2
+
+pci:v00008086d00004F81*
+ ID_MODEL_FROM_DATABASE=DG2
+
+pci:v00008086d00004F82*
+ ID_MODEL_FROM_DATABASE=DG2
+
pci:v00008086d00005001*
ID_MODEL_FROM_DATABASE=LE80578
pci:v00008086d00008500sv00001993sd00000DEF*
ID_MODEL_FROM_DATABASE=IXP4XX Network Processor (IXP420/421/422/425/IXC1100) (mGuard-PCI AV#0)
+pci:v00008086d00008603*
+ ID_MODEL_FROM_DATABASE=Ice Lake-LP Dynamic Tuning Processor Participant
+
pci:v00008086d000087C0*
ID_MODEL_FROM_DATABASE=UHD Graphics 617
pci:v00008086d00008A0D*
ID_MODEL_FROM_DATABASE=Ice Lake Thunderbolt 3 NHI #1
+pci:v00008086d00008A12*
+ ID_MODEL_FROM_DATABASE=Ice Lake-LP Processor Host Bridge/DRAM Registers
+
pci:v00008086d00008A13*
ID_MODEL_FROM_DATABASE=Ice Lake Thunderbolt 3 USB Controller
pci:v00008086d00008A17*
ID_MODEL_FROM_DATABASE=Ice Lake Thunderbolt 3 NHI #0
+pci:v00008086d00008A19*
+ ID_MODEL_FROM_DATABASE=Image Signal Processor
+
pci:v00008086d00008A1D*
ID_MODEL_FROM_DATABASE=Ice Lake Thunderbolt 3 PCI Express Root Port #0
pci:v00008086d00008C02sv0000103Csd00001998*
ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode] (EliteDesk 800 G1)
+pci:v00008086d00008C02sv000017AAsd00003098*
+ ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode] (ThinkCentre E73)
+
pci:v00008086d00008C02sv000017AAsd0000309F*
ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode] (ThinkCentre M83)
pci:v00008086d00008C10sv000017AAsd0000220E*
ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family PCI Express Root Port #1 (ThinkPad T440p)
+pci:v00008086d00008C10sv000017AAsd00003098*
+ ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family PCI Express Root Port #1 (ThinkCentre E73)
+
pci:v00008086d00008C11*
ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family PCI Express Root Port #1
pci:v00008086d00008C1A*
ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family PCI Express Root Port #6
+pci:v00008086d00008C1Asv000017AAsd00003098*
+ ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family PCI Express Root Port #6 (ThinkCentre E73)
+
pci:v00008086d00008C1B*
ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family PCI Express Root Port #6
pci:v00008086d00008C22sv000017AAsd0000220E*
ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family SMBus Controller (ThinkPad T440p)
+pci:v00008086d00008C22sv000017AAsd00003098*
+ ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family SMBus Controller (ThinkCentre E73)
+
pci:v00008086d00008C22sv000017AAsd0000309F*
ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family SMBus Controller (ThinkCentre M83)
pci:v00008086d00008C26sv000017AAsd00002210*
ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family USB EHCI #1 (ThinkPad T540p)
+pci:v00008086d00008C26sv000017AAsd00003098*
+ ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family USB EHCI #1 (ThinkCentre E73)
+
pci:v00008086d00008C26sv000017AAsd0000309F*
ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family USB EHCI #1 (ThinkCentre M83)
pci:v00008086d00008C2Dsv000017AAsd0000220E*
ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family USB EHCI #2 (ThinkPad T440p)
+pci:v00008086d00008C2Dsv000017AAsd00003098*
+ ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family USB EHCI #2 (ThinkCentre E73)
+
pci:v00008086d00008C2Dsv000017AAsd0000309F*
ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family USB EHCI #2 (ThinkCentre M83)
pci:v00008086d00008C31sv000017AAsd0000220E*
ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family USB xHCI (ThinkPad T440p)
+pci:v00008086d00008C31sv000017AAsd00003098*
+ ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family USB xHCI (ThinkCentre E73)
+
pci:v00008086d00008C31sv000017AAsd0000309F*
ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family USB xHCI (ThinkCentre M83)
pci:v00008086d00008C3Asv000017AAsd0000220E*
ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family MEI Controller #1 (ThinkPad T440p)
+pci:v00008086d00008C3Asv000017AAsd00003098*
+ ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family MEI Controller #1 (ThinkCentre E73)
+
pci:v00008086d00008C3Asv000017AAsd0000309F*
ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family MEI Controller #1 (ThinkCentre M83)
pci:v00008086d00008C5C*
ID_MODEL_FROM_DATABASE=H81 Express LPC Controller
+pci:v00008086d00008C5Csv000017AAsd00003098*
+ ID_MODEL_FROM_DATABASE=H81 Express LPC Controller (ThinkCentre E73)
+
pci:v00008086d00008C5D*
ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family LPC Controller
pci:v00008086d000096A1*
ID_MODEL_FROM_DATABASE=Integrated RAID
+pci:v00008086d00009A03*
+ ID_MODEL_FROM_DATABASE=TigerLake-LP Dynamic Tuning Processor Participant
+
pci:v00008086d00009A09*
ID_MODEL_FROM_DATABASE=11th Gen Core Processor PCIe Controller
pci:v00008086d00009A0B*
ID_MODEL_FROM_DATABASE=Volume Management Device NVMe RAID Controller
+pci:v00008086d00009A0D*
+ ID_MODEL_FROM_DATABASE=Tiger Lake-LP Telemetry Aggregator
+
pci:v00008086d00009A13*
- ID_MODEL_FROM_DATABASE=Tiger Lake-LP Thunderbolt USB Controller
+ ID_MODEL_FROM_DATABASE=Tiger Lake-LP Thunderbolt 4 USB Controller
pci:v00008086d00009A14*
ID_MODEL_FROM_DATABASE=11th Gen Core Processor Host Bridge/DRAM Registers
pci:v00008086d00009A17*
- ID_MODEL_FROM_DATABASE=Tiger Lake-H Thunderbolt USB Controller
+ ID_MODEL_FROM_DATABASE=Tiger Lake-H Thunderbolt 4 USB Controller
pci:v00008086d00009A1B*
- ID_MODEL_FROM_DATABASE=Tiger Lake-LP Thunderbolt NHI #0
+ ID_MODEL_FROM_DATABASE=Tiger Lake-LP Thunderbolt 4 NHI #0
pci:v00008086d00009A1D*
- ID_MODEL_FROM_DATABASE=Tiger Lake-LP Thunderbolt NHI #1
+ ID_MODEL_FROM_DATABASE=Tiger Lake-LP Thunderbolt 4 NHI #1
pci:v00008086d00009A1F*
- ID_MODEL_FROM_DATABASE=Tiger Lake-H Thunderbolt NHI #0
+ ID_MODEL_FROM_DATABASE=Tiger Lake-H Thunderbolt 4 NHI #0
pci:v00008086d00009A21*
- ID_MODEL_FROM_DATABASE=Tiger Lake-H Thunderbolt NHI #1
+ ID_MODEL_FROM_DATABASE=Tiger Lake-H Thunderbolt 4 NHI #1
pci:v00008086d00009A23*
- ID_MODEL_FROM_DATABASE=Tiger Lake-LP Thunderbolt PCI Express Root Port #0
+ ID_MODEL_FROM_DATABASE=Tiger Lake-LP Thunderbolt 4 PCI Express Root Port #0
pci:v00008086d00009A25*
- ID_MODEL_FROM_DATABASE=Tiger Lake-LP Thunderbolt PCI Express Root Port #1
+ ID_MODEL_FROM_DATABASE=Tiger Lake-LP Thunderbolt 4 PCI Express Root Port #1
pci:v00008086d00009A27*
- ID_MODEL_FROM_DATABASE=Tiger Lake-LP Thunderbolt PCI Express Root Port #2
+ ID_MODEL_FROM_DATABASE=Tiger Lake-LP Thunderbolt 4 PCI Express Root Port #2
pci:v00008086d00009A29*
- ID_MODEL_FROM_DATABASE=Tiger Lake-LP Thunderbolt PCI Express Root Port #3
+ ID_MODEL_FROM_DATABASE=Tiger Lake-LP Thunderbolt 4 PCI Express Root Port #3
pci:v00008086d00009A2B*
- ID_MODEL_FROM_DATABASE=Tiger Lake-H Thunderbolt PCI Express Root Port #0
+ ID_MODEL_FROM_DATABASE=Tiger Lake-H Thunderbolt 4 PCI Express Root Port #0
pci:v00008086d00009A2D*
- ID_MODEL_FROM_DATABASE=Tiger Lake-H Thunderbolt PCI Express Root Port #1
+ ID_MODEL_FROM_DATABASE=Tiger Lake-H Thunderbolt 4 PCI Express Root Port #1
pci:v00008086d00009A2F*
- ID_MODEL_FROM_DATABASE=Tiger Lake-H Thunderbolt PCI Express Root Port #2
+ ID_MODEL_FROM_DATABASE=Tiger Lake-H Thunderbolt 4 PCI Express Root Port #2
pci:v00008086d00009A31*
- ID_MODEL_FROM_DATABASE=Tiger Lake-H Thunderbolt PCI Express Root Port #3
+ ID_MODEL_FROM_DATABASE=Tiger Lake-H Thunderbolt 4 PCI Express Root Port #3
pci:v00008086d00009A33*
ID_MODEL_FROM_DATABASE=Tiger Lake Trace Hub
pci:v00008086d00009A49*
- ID_MODEL_FROM_DATABASE=Iris Xe Graphics
+ ID_MODEL_FROM_DATABASE=TigerLake GT2 [Iris Xe Graphics]
pci:v00008086d00009B41*
- ID_MODEL_FROM_DATABASE=UHD Graphics
+ ID_MODEL_FROM_DATABASE=CometLake-U GT2 [UHD Graphics]
pci:v00008086d00009B44*
ID_MODEL_FROM_DATABASE=10th Gen Core Processor Host Bridge/DRAM Registers
+pci:v00008086d00009B53*
+ ID_MODEL_FROM_DATABASE=Comet Lake-S 6c Host Bridge/DRAM Controller
+
pci:v00008086d00009B54*
ID_MODEL_FROM_DATABASE=10th Gen Core Processor Host Bridge/DRAM Registers
pci:v00008086d00009B61*
ID_MODEL_FROM_DATABASE=Comet Lake-U v1 4c Host Bridge/DRAM Controller
+pci:v00008086d00009B63*
+ ID_MODEL_FROM_DATABASE=10th Gen Core Processor Host Bridge/DRAM Registers
+
pci:v00008086d00009B64*
ID_MODEL_FROM_DATABASE=10th Gen Core Processor Host Bridge/DRAM Registers
pci:v00008086d00009BC4*
- ID_MODEL_FROM_DATABASE=UHD Graphics
+ ID_MODEL_FROM_DATABASE=CometLake-H GT2 [UHD Graphics]
+
+pci:v00008086d00009BC5*
+ ID_MODEL_FROM_DATABASE=CometLake-S GT2 [UHD Graphics 630]
pci:v00008086d00009BC8*
- ID_MODEL_FROM_DATABASE=UHD Graphics 630
+ ID_MODEL_FROM_DATABASE=CometLake-S GT2 [UHD Graphics 630]
pci:v00008086d00009C00*
ID_MODEL_FROM_DATABASE=8 Series SATA Controller 1 [IDE mode]
pci:v00008086d00009D03sv00001028sd000006DC*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP SATA Controller [AHCI mode] (Latitude E7470)
+pci:v00008086d00009D03sv00001028sd000006E6*
+ ID_MODEL_FROM_DATABASE=Sunrise Point-LP SATA Controller [AHCI mode] (Latitude 11 5175 2-in-1)
+
pci:v00008086d00009D03sv00001028sd000006F3*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP SATA Controller [AHCI mode] (Latitude 3570)
pci:v00008086d00009D18*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP PCI Express Root Port #9
+pci:v00008086d00009D18sv000017AAsd00002247*
+ ID_MODEL_FROM_DATABASE=Sunrise Point-LP PCI Express Root Port #9 (ThinkPad T570)
+
pci:v00008086d00009D18sv000017AAsd0000382A*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP PCI Express Root Port #9 (B51-80 Laptop)
pci:v00008086d00009D21sv00001028sd000006DC*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP PMC (Latitude E7470)
+pci:v00008086d00009D21sv00001028sd000006E6*
+ ID_MODEL_FROM_DATABASE=Sunrise Point-LP PMC (Latitude 11 5175 2-in-1)
+
pci:v00008086d00009D21sv00001028sd000006F3*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP PMC (Latitude 3570)
pci:v00008086d00009D21sv0000103Csd00008079*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP PMC (EliteBook 840 G3)
+pci:v00008086d00009D21sv000017AAsd00002247*
+ ID_MODEL_FROM_DATABASE=Sunrise Point-LP PMC (ThinkPad T570)
+
pci:v00008086d00009D21sv000017AAsd0000224F*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP PMC (ThinkPad X1 Carbon 5th Gen)
pci:v00008086d00009D23sv00001028sd000006DC*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP SMBus (Latitude E7470)
+pci:v00008086d00009D23sv00001028sd000006E6*
+ ID_MODEL_FROM_DATABASE=Sunrise Point-LP SMBus (Latitude 11 5175 2-in-1)
+
pci:v00008086d00009D23sv00001028sd000006F3*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP SMBus (Latitude 3570)
pci:v00008086d00009D2Fsv00001028sd000006DC*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP USB 3.0 xHCI Controller (Latitude E7470)
+pci:v00008086d00009D2Fsv00001028sd000006E6*
+ ID_MODEL_FROM_DATABASE=Sunrise Point-LP USB 3.0 xHCI Controller (Latitude 11 5175 2-in-1)
+
pci:v00008086d00009D2Fsv00001028sd000006F3*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP USB 3.0 xHCI Controller (Latitude 3570)
pci:v00008086d00009D31sv00001028sd000006DC*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP Thermal subsystem (Latitude E7470)
+pci:v00008086d00009D31sv00001028sd000006E6*
+ ID_MODEL_FROM_DATABASE=Sunrise Point-LP Thermal subsystem (Latitude 11 5175 2-in-1)
+
pci:v00008086d00009D31sv00001028sd000006F3*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP Thermal subsystem (Latitude 3570)
pci:v00008086d00009D32sv00001028sd000006D6*
ID_MODEL_FROM_DATABASE=CSI-2 Host Controller (Latitude 7275 tablet)
+pci:v00008086d00009D32sv00001028sd000006E6*
+ ID_MODEL_FROM_DATABASE=CSI-2 Host Controller (Latitude 11 5175 2-in-1)
+
pci:v00008086d00009D35*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP Integrated Sensor Hub
pci:v00008086d00009D35sv00001028sd000006D6*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP Integrated Sensor Hub (Latitude 7275 tablet)
+pci:v00008086d00009D35sv00001028sd000006E6*
+ ID_MODEL_FROM_DATABASE=Sunrise Point-LP Integrated Sensor Hub (Latitude 11 5175 2-in-1)
+
pci:v00008086d00009D3A*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP CSME HECI #1
pci:v00008086d00009D3Asv00001028sd000006DC*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP CSME HECI #1 (Latitude E7470)
+pci:v00008086d00009D3Asv00001028sd000006E6*
+ ID_MODEL_FROM_DATABASE=Sunrise Point-LP CSME HECI #1 (Latitude 11 5175 2-in-1)
+
pci:v00008086d00009D3Asv00001028sd000006F3*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP CSME HECI #1 (Latitude 3570)
pci:v00008086d00009D3Dsv0000103Csd00008079*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP Active Management Technology - SOL (EliteBook 840 G3)
+pci:v00008086d00009D3Dsv000017AAsd00002247*
+ ID_MODEL_FROM_DATABASE=Sunrise Point-LP Active Management Technology - SOL (ThinkPad T570)
+
pci:v00008086d00009D43*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP LPC Controller
pci:v00008086d00009D46sv00001028sd000006D6*
ID_MODEL_FROM_DATABASE=LPC/eSPI Controller (Latitude 7275 tablet)
+pci:v00008086d00009D46sv00001028sd000006E6*
+ ID_MODEL_FROM_DATABASE=LPC/eSPI Controller (Latitude 11 5175 2-in-1)
+
pci:v00008086d00009D48*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP LPC Controller
pci:v00008086d00009D48sv0000103Csd00008079*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP LPC Controller (EliteBook 840 G3)
+pci:v00008086d00009D48sv000017AAsd00002247*
+ ID_MODEL_FROM_DATABASE=Sunrise Point-LP LPC Controller (ThinkPad T570)
+
pci:v00008086d00009D4E*
ID_MODEL_FROM_DATABASE=Sunrise Point LPC Controller/eSPI Controller
pci:v00008086d00009D60sv00001028sd000006D6*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP Serial IO I2C Controller #0 (Latitude 7275 tablet)
+pci:v00008086d00009D60sv00001028sd000006E6*
+ ID_MODEL_FROM_DATABASE=Sunrise Point-LP Serial IO I2C Controller #0 (Latitude 11 5175 2-in-1)
+
pci:v00008086d00009D60sv00001028sd000006F3*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP Serial IO I2C Controller #0 (Latitude 3570)
pci:v00008086d00009D61sv00001028sd000006D6*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP Serial IO I2C Controller #1 (Latitude 7275 tablet)
+pci:v00008086d00009D61sv00001028sd000006E6*
+ ID_MODEL_FROM_DATABASE=Sunrise Point-LP Serial IO I2C Controller #1 (Latitude 11 5175 2-in-1)
+
pci:v00008086d00009D62*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP Serial IO I2C Controller #2
pci:v00008086d00009D62sv00001028sd000006D6*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP Serial IO I2C Controller #2 (Latitude 7275 tablet)
+pci:v00008086d00009D62sv00001028sd000006E6*
+ ID_MODEL_FROM_DATABASE=Sunrise Point-LP Serial IO I2C Controller #2 (Latitude 11 5175 2-in-1)
+
pci:v00008086d00009D63*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP Serial IO I2C Controller #3
pci:v00008086d00009D70sv00001028sd000006DC*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP HD Audio (Latitude E7470)
+pci:v00008086d00009D70sv00001028sd000006E6*
+ ID_MODEL_FROM_DATABASE=Sunrise Point-LP HD Audio (Latitude 11 5175 2-in-1)
+
pci:v00008086d00009D70sv00001028sd000006F3*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP HD Audio (Latitude 3570)
pci:v00008086d00009D70sv0000103Csd00008079*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP HD Audio (EliteBook 840 G3)
+pci:v00008086d00009D70sv000017AAsd00002247*
+ ID_MODEL_FROM_DATABASE=Sunrise Point-LP HD Audio (ThinkPad T570)
+
pci:v00008086d00009D70sv000017AAsd0000382A*
ID_MODEL_FROM_DATABASE=Sunrise Point-LP HD Audio (B51-80 Laptop)
pci:v00008086d0000A0B0*
ID_MODEL_FROM_DATABASE=Tiger Lake-LP PCI Express Root Port #9
+pci:v00008086d0000A0BD*
+ ID_MODEL_FROM_DATABASE=Tigerlake PCH-LP PCI Express Root Port #6
+
pci:v00008086d0000A0BF*
ID_MODEL_FROM_DATABASE=Tiger Lake-LP PCI Express Root Port #8
pci:v00008086d0000A382*
ID_MODEL_FROM_DATABASE=400 Series Chipset Family SATA AHCI Controller
+pci:v00008086d0000A3A1*
+ ID_MODEL_FROM_DATABASE=Memory controller
+
pci:v00008086d0000A3A3*
ID_MODEL_FROM_DATABASE=Comet Lake PCH-V SMBus Host Controller
+pci:v00008086d0000A3AF*
+ ID_MODEL_FROM_DATABASE=Comet Lake PCH-V USB Controller
+
pci:v00008086d0000A3B1*
ID_MODEL_FROM_DATABASE=Comet Lake PCH-V Thermal Subsystem
pci:v00008088d00000101sv00008088sd00000201*
ID_MODEL_FROM_DATABASE=WX1860A2 Gigabit Ethernet Controller (Dual-Port Ethernet Network Adaptor SF200T)
+pci:v00008088d00000101sv00008088sd00004201*
+ ID_MODEL_FROM_DATABASE=WX1860A2 Gigabit Ethernet Controller (Dual-Port Ethernet Network Adaptor SF200T (WOL))
+
+pci:v00008088d00000101sv00008088sd00008201*
+ ID_MODEL_FROM_DATABASE=WX1860A2 Gigabit Ethernet Controller (Dual-Port Ethernet Network Adaptor SF200T (NCSI))
+
+pci:v00008088d00000101sv00008088sd0000C201*
+ ID_MODEL_FROM_DATABASE=WX1860A2 Gigabit Ethernet Controller (Dual-Port Ethernet Network Adaptor SF200T (WOL, NCSI))
+
pci:v00008088d00000102*
ID_MODEL_FROM_DATABASE=WX1860A2S Gigabit Ethernet Controller
pci:v00008088d00000103sv00008088sd00000440*
ID_MODEL_FROM_DATABASE=WX1860A4 Gigabit Ethernet Controller (Qual-Port Ethernet Network Adaptor SF400-OCP)
+pci:v00008088d00000103sv00008088sd00004103*
+ ID_MODEL_FROM_DATABASE=WX1860A4 Gigabit Ethernet Controller (Quad-Port Ethernet Network Adaptor SF400T (WOL))
+
+pci:v00008088d00000103sv00008088sd00008103*
+ ID_MODEL_FROM_DATABASE=WX1860A4 Gigabit Ethernet Controller (Quad-Port Ethernet Network Adaptor SF400T (NCSI))
+
+pci:v00008088d00000103sv00008088sd0000C103*
+ ID_MODEL_FROM_DATABASE=WX1860A4 Gigabit Ethernet Controller (Quad-Port Ethernet Network Adaptor SF400T (WOL, NCSI))
+
pci:v00008088d00000104*
ID_MODEL_FROM_DATABASE=WX1860A4S Gigabit Ethernet Controller
pci:v00008088d00000105sv00008088sd00000202*
ID_MODEL_FROM_DATABASE=WX1860AL2 Gigabit Ethernet Controller (Dual-Port Ethernet Network Adaptor SF200HT)
+pci:v00008088d00000105sv00008088sd00004202*
+ ID_MODEL_FROM_DATABASE=WX1860AL2 Gigabit Ethernet Controller (Dual-Port Ethernet Network Adaptor SF200HT (WOL))
+
+pci:v00008088d00000105sv00008088sd00008202*
+ ID_MODEL_FROM_DATABASE=WX1860AL2 Gigabit Ethernet Controller (Dual-Port Ethernet Network Adaptor SF200HT (NCSI))
+
+pci:v00008088d00000105sv00008088sd0000C202*
+ ID_MODEL_FROM_DATABASE=WX1860AL2 Gigabit Ethernet Controller (Dual-Port Ethernet Network Adaptor SF200HT (WOL, NCSI))
+
pci:v00008088d00000106*
ID_MODEL_FROM_DATABASE=WX1860AL2S Gigabit Ethernet Controller
pci:v00008088d00000107sv00008088sd00000402*
ID_MODEL_FROM_DATABASE=WX1860AL4 Gigabit Ethernet Controller (Qual-Port Ethernet Network Adaptor SF400HT)
+pci:v00008088d00000107sv00008088sd00004402*
+ ID_MODEL_FROM_DATABASE=WX1860AL4 Gigabit Ethernet Controller (Quad-Port Ethernet Network Adaptor SF400HT (WOL))
+
+pci:v00008088d00000107sv00008088sd00008402*
+ ID_MODEL_FROM_DATABASE=WX1860AL4 Gigabit Ethernet Controller (Quad-Port Ethernet Network Adaptor SF400HT (NCSI))
+
+pci:v00008088d00000107sv00008088sd0000C402*
+ ID_MODEL_FROM_DATABASE=WX1860AL4 Gigabit Ethernet Controller (Quad-Port Ethernet Network Adaptor SF400HT (WOL, NCSI))
+
pci:v00008088d00000108*
ID_MODEL_FROM_DATABASE=WX1860AL4S Gigabit Ethernet Controller
pci:v00008088d00000108sv00008088sd00000420*
ID_MODEL_FROM_DATABASE=WX1860AL4S Gigabit Ethernet Controller (Qual-Port Ethernet Network Adaptor SF400HT-S)
+pci:v00008088d00000109*
+ ID_MODEL_FROM_DATABASE=WX1860-LC Gigabit Ethernet Controller
+
+pci:v00008088d0000010A*
+ ID_MODEL_FROM_DATABASE=WX1860A1 Gigabit Ethernet Controller
+
+pci:v00008088d0000010B*
+ ID_MODEL_FROM_DATABASE=WX1860AL1 Gigabit Ethernet Controller
+
+pci:v00008088d0000010Bsv00008088sd00000102*
+ ID_MODEL_FROM_DATABASE=WX1860AL1 Gigabit Ethernet Controller (Single-Port Ethernet Network Adaptor SF100HT)
+
+pci:v00008088d0000010Bsv00008088sd00004102*
+ ID_MODEL_FROM_DATABASE=WX1860AL1 Gigabit Ethernet Controller (Single-Port Ethernet Network Adaptor SF100HT (WOL))
+
+pci:v00008088d0000010Bsv00008088sd00008102*
+ ID_MODEL_FROM_DATABASE=WX1860AL1 Gigabit Ethernet Controller (Single-Port Ethernet Network Adaptor SF100HT (NCSI))
+
+pci:v00008088d0000010Bsv00008088sd0000C102*
+ ID_MODEL_FROM_DATABASE=WX1860AL1 Gigabit Ethernet Controller (Single-Port Ethernet Network Adaptor SF100HT (WOL, NCSI))
+
+pci:v00008088d00000111*
+ ID_MODEL_FROM_DATABASE=WX1860A2 Ethernet Controller Virtual Function
+
+pci:v00008088d00000113*
+ ID_MODEL_FROM_DATABASE=WX1860A4 Ethernet Controller Virtual Function
+
+pci:v00008088d00000115*
+ ID_MODEL_FROM_DATABASE=WX1860AL2 Ethernet Controller Virtual Function
+
+pci:v00008088d00000117*
+ ID_MODEL_FROM_DATABASE=WX1860AL4 Ethernet Controller Virtual Function
+
+pci:v00008088d00000119*
+ ID_MODEL_FROM_DATABASE=WX1860-LC Gigabit Ethernet Controller Virtual Function
+
+pci:v00008088d0000011A*
+ ID_MODEL_FROM_DATABASE=WX1860A1 Gigabit Ethernet Controller Virtual Function
+
+pci:v00008088d0000011B*
+ ID_MODEL_FROM_DATABASE=WX1860AL1 Gigabit Ethernet Controller Virtual Function
+
+pci:v00008088d00001000*
+ ID_MODEL_FROM_DATABASE=Ethernet Controller RP1000 Virtual Function for 10GbE SFP+
+
pci:v00008088d00001001*
ID_MODEL_FROM_DATABASE=Ethernet Controller RP1000 for 10GbE SFP+
pci:v00008088d00001001sv00008088sd00000000*
ID_MODEL_FROM_DATABASE=Ethernet Controller RP1000 for 10GbE SFP+ (Ethernet Network Adaptor RP1000 for 10GbE SFP+)
+pci:v00008088d00002000*
+ ID_MODEL_FROM_DATABASE=Ethernet Controller RP2000 Virtual Function for 10GbE SFP+
+
pci:v00008088d00002001*
ID_MODEL_FROM_DATABASE=Ethernet Controller RP2000 for 10GbE SFP+
ID_MODEL_FROM_DATABASE=W89C940
pci:v0000E159*
- ID_VENDOR_FROM_DATABASE=Tiger Jet Network Inc.
+ ID_VENDOR_FROM_DATABASE=Tiger Jet Network Inc. / ICP DAS
pci:v0000E159d00000001*
ID_MODEL_FROM_DATABASE=Tiger3XX Modem/ISDN interface
pci:v0000EA01d00000800*
ID_MODEL_FROM_DATABASE=PCI-800 Digital I/O Card
+pci:v0000EA50*
+ ID_VENDOR_FROM_DATABASE=Emerson Automation Solutions
+
pci:v0000EA60*
ID_VENDOR_FROM_DATABASE=RME
usb:v0421p0157*
ID_MODEL_FROM_DATABASE=5800 XpressMusic (Imaging mode)
+usb:v0421p0189*
+ ID_MODEL_FROM_DATABASE=N810 Internet Tablet WiMAX
+
usb:v0421p0199*
ID_MODEL_FROM_DATABASE=6700 Classic (msc)
ID_MODEL_FROM_DATABASE=N900 (Storage Mode)
usb:v0421p01C8*
- ID_MODEL_FROM_DATABASE=N900 (PC-Suite Mode)
+ ID_MODEL_FROM_DATABASE=N900/N950 (PC-Suite Mode)
usb:v0421p0228*
ID_MODEL_FROM_DATABASE=5530 XpressMusic
ID_MODEL_FROM_DATABASE=C7-00 (Nokia Suite mode)
usb:v0421p03D1*
- ID_MODEL_FROM_DATABASE=N950
+ ID_MODEL_FROM_DATABASE=N950 (Storage Mode)
+
+usb:v0421p03D2*
+ ID_MODEL_FROM_DATABASE=N950 (PC Suite mode)
usb:v0421p0400*
ID_MODEL_FROM_DATABASE=7600 Phone Parent
ID_MODEL_FROM_DATABASE=6230i MultiMedia Card
usb:v0421p0431*
- ID_MODEL_FROM_DATABASE=770 Internet Tablet
+ ID_MODEL_FROM_DATABASE=770/N800 Internet Tablet
usb:v0421p0432*
ID_MODEL_FROM_DATABASE=N90 Phone Parent
ID_MODEL_FROM_DATABASE=E65 (Storage mode)
usb:v0421p0518*
- ID_MODEL_FROM_DATABASE=N9 Phone
+ ID_MODEL_FROM_DATABASE=N9 (Storage mode)
+
+usb:v0421p0519*
+ ID_MODEL_FROM_DATABASE=N9 (RNDIS/Ethernet mode)
+
+usb:v0421p051A*
+ ID_MODEL_FROM_DATABASE=N9 (PC Suite mode)
usb:v0421p054D*
ID_MODEL_FROM_DATABASE=C2-01
usb:v05FCp0010*
ID_MODEL_FROM_DATABASE=Soundcraft Si MADI combo card
+usb:v05FCp0021*
+ ID_MODEL_FROM_DATABASE=Soundcraft Signature 12 MTK
+
usb:v05FCp7849*
ID_MODEL_FROM_DATABASE=Harman/Kardon SoundSticks
usb:v32B3pD1A7*
ID_MODEL_FROM_DATABASE=TXT Multihub
+usb:v3310*
+ ID_VENDOR_FROM_DATABASE=MUDITA Sp. z o.o.
+
+usb:v3310p0100*
+ ID_MODEL_FROM_DATABASE=Pure
+
+usb:v3310p0101*
+ ID_MODEL_FROM_DATABASE=Pure tethering
+
usb:v3333*
ID_VENDOR_FROM_DATABASE=InLine
EVDEV_ABS_00=0:10000:400
EVDEV_ABS_01=0:6250:400
-#WALTOP International Corp. Graphics Tablet
+# WALTOP International Corp. Graphics Tablet
evdev:input:b0003v172Fp0047*
EVDEV_ABS_00=0:20000:80
EVDEV_ABS_01=0:12500:80
+
+# WALTOP International Corp. Batteryless Tablet
+evdev:input:b0003v172Fp0505*
+ EVDEV_ABS_00=::160
+ EVDEV_ABS_01=::160
# HP EliteBook Folio G1
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP:pnHPEliteBookFolioG1:*
KEYBOARD_KEY_64=calendar
- KEYBOARD_KEY_81=micmute
+ KEYBOARD_KEY_81=f20
# HP ProBook 650
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pnHP*ProBook*650*:*
sensor:modalias:acpi:SMO8500*:dmi:*:svnProwise:pnPT301:*
ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, 1
+#########################################
+# Reeder
+#########################################
+
+# A8iW-Rev.A
+sensor:modalias:acpi:SMO8500*:dmi:*:rvnReeder:rnA8iW-Rev.A:*
+ ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1
+
#########################################
# Schneider
#########################################
sensor:modalias:acpi:KIOX010A*:dmi:*:svnTREKSTOR:pnPrimebookC11B:*
sensor:modalias:acpi:KIOX010A*:dmi:*:svnTREKSTOR:pnPRIMEBOOKC11B:*
+sensor:modalias:acpi:KIOX010A*:dmi:*:svnTREKSTOR:pnYourbookC11B:*
+sensor:modalias:acpi:KIOX010A*:dmi:*:svnTREKSTOR:pnYOURBOOKC11B:*
ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, -1, 0; 0, 0, -1
ACCEL_LOCATION=display
sensor:modalias:acpi:KIOX020A*:dmi:*:svnTREKSTOR:pnPrimebookC11B:*
sensor:modalias:acpi:KIOX020A*:dmi:*:svnTREKSTOR:pnPRIMEBOOKC11B:*
+sensor:modalias:acpi:KIOX020A*:dmi:*:svnTREKSTOR:pnYourbookC11B:*
+sensor:modalias:acpi:KIOX020A*:dmi:*:svnTREKSTOR:pnYOURBOOKC11B:*
ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1
ACCEL_LOCATION=base
Hsinchu 30077\r
TW\r
\r
-C8-C6-4A (hex) Flextronics Tech.(Ind) Pvt Ltd\r
-C8C64A (base 16) Flextronics Tech.(Ind) Pvt Ltd\r
- SURVEYNO.381, PADUR ROAD, KUTHAMBAKKAM VILLAGE, 602107 POONAMALLEE TALUK, THIRUVALLUR DISTRIC\r
- Chennai 602107\r
- IN\r
-\r
30-EA-26 (hex) Sycada BV\r
30EA26 (base 16) Sycada BV\r
Burgemeester Stramanweg 105B\r
Hangzhou Zhejiang 310052\r
CN\r
\r
-8C-E7-48 (hex) Private\r
-8CE748 (base 16) Private\r
-\r
10-82-86 (hex) Luxshare Precision Industry Co.,Ltd\r
108286 (base 16) Luxshare Precision Industry Co.,Ltd\r
2nd floor, A building, Sanyo New Industrial Area, West of Maoyi, Shajing Baoan District\r
Seoul 153-801\r
KR\r
\r
-E8-9E-0C (hex) Private\r
-E89E0C (base 16) Private\r
-\r
48-E6-C0 (hex) SIMCom Wireless Solutions Co.,Ltd.\r
48E6C0 (base 16) SIMCom Wireless Solutions Co.,Ltd.\r
Building B,SIM Technology Building,No.633,Jinzhong Road\r
San Jose CA 94568\r
US\r
\r
-2C-B8-ED (hex) SonicWall\r
-2CB8ED (base 16) SonicWall\r
- 5455 Great America Parkway\r
- Santa Clara CA 95054\r
- US\r
-\r
68-D4-82 (hex) SHENZHEN GONGJIN ELECTRONICS CO.,LT\r
68D482 (base 16) SHENZHEN GONGJIN ELECTRONICS CO.,LT\r
SONGGANG\r
Tokyo 196-8666\r
JP\r
\r
-00-04-7D (hex) Pelco\r
-00047D (base 16) Pelco\r
- 3500 Pelco Way\r
- Clovis CA 93612\r
- US\r
-\r
00-07-BF (hex) Armillaire Technologies, Inc.\r
0007BF (base 16) Armillaire Technologies, Inc.\r
10411 Motor City Drive\r
Huntingdon TN 38344\r
US\r
\r
-0C-51-D0 (hex) Altice Labs S.A.\r
-0C51D0 (base 16) Altice Labs S.A.\r
- NIF 504705610, Rua Eng. José Ferreira Pinto Basto\r
- Aveiro 3810-106\r
- PT\r
-\r
A4-5E-5A (hex) ACTIVIO Inc.\r
A45E5A (base 16) ACTIVIO Inc.\r
Takeuchi Lorie Bldg. Room 503, 1-34-12, Takadanobaba\r
Vancouver WA 98682\r
US\r
\r
+4C-F2-02 (hex) Xiaomi Communications Co Ltd\r
+4CF202 (base 16) Xiaomi Communications Co Ltd\r
+ The Rainbow City of China Resources\r
+ NO.68, Qinghe Middle Street Haidian District, Beijing 100085\r
+ CN\r
+\r
+A8-77-E5 (hex) SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD\r
+A877E5 (base 16) SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD\r
+ Unit East Block22-24/F,Skyworth semiconductor design Bldg., Gaoxin Ave.4.S.,Nanshan District,Shenzhen,China\r
+ SHENZHEN GUANGDONG 518057\r
+ CN\r
+\r
+10-A4-DA (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+10A4DA (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+38-20-28 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+382028 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+E4-77-27 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+E47727 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+10-51-07 (hex) Intel Corporate\r
+105107 (base 16) Intel Corporate\r
+ Lot 8, Jalan Hi-Tech 2/3 \r
+ Kulim Kedah 09000\r
+ MY\r
+\r
+AC-74-C4 (hex) Maytronics Ltd.\r
+AC74C4 (base 16) Maytronics Ltd.\r
+ Kibbutz Yizrael\r
+ Kibbutz Yizrael 1935000\r
+ IL\r
+\r
+84-D6-08 (hex) Wingtech Mobile Communications Co., Ltd.\r
+84D608 (base 16) Wingtech Mobile Communications Co., Ltd.\r
+ No.777,Yazhong Road,Nanhu District,\r
+ Jiaxing Zhejiang 314006\r
+ CN\r
+\r
+34-68-93 (hex) Tecnovideo Srl\r
+346893 (base 16) Tecnovideo Srl\r
+ Via A. De Gasperi, 3\r
+ Villaverla Vicenza 36030\r
+ IT\r
+\r
+3C-7A-AA (hex) China Dragon Technology Limited\r
+3C7AAA (base 16) China Dragon Technology Limited\r
+ B4 Bldg.Haoshan 1st Industry Park,\r
+ Shenzhen Guangdong 518104\r
+ CN\r
+\r
+6C-47-60 (hex) Sunitec Enterprise Co.,Ltd\r
+6C4760 (base 16) Sunitec Enterprise Co.,Ltd\r
+ 3F.,No.98-1,Mincyuan Rd.Sindian City\r
+ Taipei County 231 231141\r
+ CN\r
+\r
+18-32-19 (hex) EM Microelectronic\r
+183219 (base 16) EM Microelectronic\r
+ Rue des Sors 3\r
+ Marin-Epagnier Neuchatel 2074\r
+ CH\r
+\r
+28-D3-EA (hex) Huawei Device Co., Ltd.\r
+28D3EA (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+A8-F2-66 (hex) Huawei Device Co., Ltd.\r
+A8F266 (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+84-26-7A (hex) GUANGDONG TAIDE ZHILIAN TECHNOLOGY CO.,LTD\r
+84267A (base 16) GUANGDONG TAIDE ZHILIAN TECHNOLOGY CO.,LTD\r
+ Taide Technology Park,Jinfenghuang Industrial District, Fenggang Town,\r
+ Dongguan GUANGDONG 523000 \r
+ CN\r
+\r
+D8-EC-5E (hex) Belkin International Inc.\r
+D8EC5E (base 16) Belkin International Inc.\r
+ 12045 East Waterfront Drive\r
+ Playa Vista 90094\r
+ US\r
+\r
+84-FD-27 (hex) Silicon Laboratories\r
+84FD27 (base 16) Silicon Laboratories\r
+ 400 West Cesar Chavez Street\r
+ Austin 78701\r
+ US\r
+\r
+CC-9C-3E (hex) Cisco Meraki\r
+CC9C3E (base 16) Cisco Meraki\r
+ 500 Terry A. Francois Blvd\r
+ San Francisco 94158\r
+ US\r
+\r
+48-29-E4 (hex) ZAO NPK Rotek\r
+4829E4 (base 16) ZAO NPK Rotek\r
+ Prospekt Mira\r
+ Moscow 129223\r
+ RU\r
+\r
+FC-A9-DC (hex) Renesas Electronics (Penang) Sdn. Bhd.\r
+FCA9DC (base 16) Renesas Electronics (Penang) Sdn. Bhd.\r
+ Phase 3, Bayan Lepas FIZ\r
+ Bayan Lepas Penang 11900\r
+ MY\r
+\r
+FC-58-4A (hex) xiamenshi c-chip technology co., ltd\r
+FC584A (base 16) xiamenshi c-chip technology co., ltd\r
+ Baoyuan Road\r
+ Shenzhen City Guangdong Province 518101\r
+ CN\r
+\r
+78-65-3B (hex) Shaoxing Ourten Electronics Co., Ltd.\r
+78653B (base 16) Shaoxing Ourten Electronics Co., Ltd.\r
+ 3rd Floor # 7, No. 1732 Yanhua industrial park West Renmin Road,Shangyu\r
+ Shaoxing Zhejiang 312000\r
+ CN\r
+\r
+E0-E6-56 (hex) Nethesis srl\r
+E0E656 (base 16) Nethesis srl\r
+ strada degli olmi 12\r
+ Pesaro Pesaro e Urbino 61122\r
+ IT\r
+\r
+90-23-B4 (hex) New H3C Technologies Co., Ltd\r
+9023B4 (base 16) New H3C Technologies Co., Ltd\r
+ 466 Changhe Road, Binjiang District\r
+ Hangzhou Zhejiang 310052\r
+ CN\r
+\r
+88-2A-5E (hex) New H3C Technologies Co., Ltd\r
+882A5E (base 16) New H3C Technologies Co., Ltd\r
+ 466 Changhe Road, Binjiang District\r
+ Hangzhou Zhejiang 310052\r
+ CN\r
+\r
+84-1E-A3 (hex) Sagemcom Broadband SAS\r
+841EA3 (base 16) Sagemcom Broadband SAS\r
+ 250, route de l'Empereur\r
+ Rueil Malmaison Cedex hauts de seine 92848\r
+ FR\r
+\r
+F4-02-23 (hex) PAX Computer Technology(Shenzhen) Ltd.\r
+F40223 (base 16) PAX Computer Technology(Shenzhen) Ltd.\r
+ 4/F, No.3 Building, Software Park, Second Central Science-Tech Road, High-Tech\r
+ Shenzhen GuangDong 518057\r
+ CN\r
+\r
+88-46-04 (hex) Xiaomi Communications Co Ltd\r
+884604 (base 16) Xiaomi Communications Co Ltd\r
+ The Rainbow City of China Resources\r
+ NO.68, Qinghe Middle Street Haidian District, Beijing 100085\r
+ CN\r
+\r
+64-6E-E0 (hex) Intel Corporate\r
+646EE0 (base 16) Intel Corporate\r
+ Lot 8, Jalan Hi-Tech 2/3 \r
+ Kulim Kedah 09000\r
+ MY\r
+\r
+04-56-E5 (hex) Intel Corporate\r
+0456E5 (base 16) Intel Corporate\r
+ Lot 8, Jalan Hi-Tech 2/3 \r
+ Kulim Kedah 09000\r
+ MY\r
+\r
+08-10-86 (hex) NEC Platforms, Ltd.\r
+081086 (base 16) NEC Platforms, Ltd.\r
+ 2-3 Kandatsukasamachi\r
+ Chiyodaku Tokyo 101-8532\r
+ JP\r
+\r
+64-79-F0 (hex) Intel Corporate\r
+6479F0 (base 16) Intel Corporate\r
+ Lot 8, Jalan Hi-Tech 2/3 \r
+ Kulim Kedah 09000\r
+ MY\r
+\r
+1C-D1-E0 (hex) Cisco Systems, Inc\r
+1CD1E0 (base 16) Cisco Systems, Inc\r
+ 80 West Tasman Drive\r
+ San Jose CA 94568\r
+ US\r
+\r
+24-45-6B (hex) Huawei Device Co., Ltd.\r
+24456B (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+48-38-71 (hex) Huawei Device Co., Ltd.\r
+483871 (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+44-BD-DE (hex) BHTC GmbH\r
+44BDDE (base 16) BHTC GmbH\r
+ Hansastrasse 40\r
+ Lippstadt 59557\r
+ DE\r
+\r
+8C-2A-8E (hex) DongGuan Ramaxel Memory Technology\r
+8C2A8E (base 16) DongGuan Ramaxel Memory Technology\r
+ No.32, Industrial East Road,Innovation Park, High-tech Industrial Development Zone, Songshan Lake, Dongguan City, Guangdong Province,China\r
+ DongGuan Guangdong 523808\r
+ CN\r
+\r
+40-44-FD (hex) Realme Chongqing Mobile Telecommunications Corp.,Ltd.\r
+4044FD (base 16) Realme Chongqing Mobile Telecommunications Corp.,Ltd.\r
+ No.178 Yulong Avenue, Yufengshan, Yubei District, Chongqing.\r
+ Chongqing China 401120\r
+ CN\r
+\r
+E8-FD-35 (hex) Huawei Device Co., Ltd.\r
+E8FD35 (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+EC-C5-D2 (hex) Huawei Device Co., Ltd.\r
+ECC5D2 (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+B4-60-8C (hex) Fiberhome Telecommunication Technologies Co.,LTD\r
+B4608C (base 16) Fiberhome Telecommunication Technologies Co.,LTD\r
+ No.5 DongXin Road\r
+ Wuhan Hubei 430074\r
+ CN\r
+\r
+B8-14-DB (hex) OHSUNG\r
+B814DB (base 16) OHSUNG\r
+ 335-4,SANHODAERO,GUMI,GYEONG BUK,KOREA\r
+ GUMI GYEONG BUK 730-030\r
+ KR\r
+\r
+80-07-1B (hex) VSOLUTION TELECOMMUNICATION TECHNOLOGY CO.,LTD.\r
+80071B (base 16) VSOLUTION TELECOMMUNICATION TECHNOLOGY CO.,LTD.\r
+ Room 601,Originality Building B2, NO.162 Science Avenue,Science Town\r
+ Guangzhou Guangdong 510663\r
+ CN\r
+\r
+FC-13-F0 (hex) Bouffalo Lab (Nanjing) Co., Ltd.\r
+FC13F0 (base 16) Bouffalo Lab (Nanjing) Co., Ltd.\r
+ 5F, Gongxiang Space, No.100 Tuanjie Road, Nanjing, China\r
+ Nanjing Jiangsu 211800\r
+ CN\r
+\r
+1C-6E-E6 (hex) NHNETWORKS\r
+1C6EE6 (base 16) NHNETWORKS\r
+ 54,Chemdanyeonsin-ro 30beon-gil,Buk-gu\r
+ Gwangju 61080\r
+ KR\r
+\r
+08-F6-06 (hex) zte corporation\r
+08F606 (base 16) zte corporation\r
+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China\r
+ shenzhen guangdong 518057\r
+ CN\r
+\r
+E8-9E-0C (hex) MAX8USA DISTRIBUTORS INC.\r
+E89E0C (base 16) MAX8USA DISTRIBUTORS INC.\r
+ 4757 NW 72ND AVENUE\r
+ MIAMI FL 33166\r
+ US\r
+\r
+FC-9C-98 (hex) Arlo Technology\r
+FC9C98 (base 16) Arlo Technology\r
+ 3030 Orchard Parkway\r
+ San Jose CA 95134\r
+ US\r
+\r
+A0-70-B7 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+A070B7 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+78-B5-54 (hex) Huawei Device Co., Ltd.\r
+78B554 (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+68-9E-6A (hex) Huawei Device Co., Ltd.\r
+689E6A (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+28-2B-96 (hex) Huawei Device Co., Ltd.\r
+282B96 (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+CC-68-B6 (hex) TP-Link Corporation Limited\r
+CC68B6 (base 16) TP-Link Corporation Limited\r
+ Room 901,9/F.New East Ocean Centre, 9 Science Museum Road\r
+ Tsim Sha Tsui Kowloon 999077\r
+ HK\r
+\r
+14-DD-9C (hex) vivo Mobile Communication Co., Ltd.\r
+14DD9C (base 16) vivo Mobile Communication Co., Ltd.\r
+ #283,BBK Road\r
+ Wusha,Chang'An DongGuan City,Guangdong, 523860\r
+ CN\r
+\r
+64-64-4A (hex) Beijing Xiaomi Mobile Software Co., Ltd\r
+64644A (base 16) Beijing Xiaomi Mobile Software Co., Ltd\r
+ The Rainbow City Office Building, 68 Qinghe Middle Street Haidian District\r
+ Beijing Beijing 100085\r
+ CN\r
+\r
+A4-39-B6 (hex) SHENZHEN PEIZHE MICROELECTRONICS CO .LTD\r
+A439B6 (base 16) SHENZHEN PEIZHE MICROELECTRONICS CO .LTD\r
+ 1110 Nanshan Street, Nanshan District, Shenzhen, China Petroleum Building 2012\r
+ Shenzhen 518000\r
+ CN\r
+\r
+F4-FB-B8 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+F4FBB8 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+CC-33-31 (hex) Texas Instruments\r
+CC3331 (base 16) Texas Instruments\r
+ 12500 TI Blvd\r
+ Dallas TX 75243\r
+ US\r
+\r
+2C-B8-ED (hex) SonicWall\r
+2CB8ED (base 16) SonicWall\r
+ 1033 McCarthy Blvd\r
+ Milpitas CA 95035\r
+ US\r
+\r
+C8-9B-AD (hex) Honor Device Co., Ltd.\r
+C89BAD (base 16) Honor Device Co., Ltd.\r
+ Suite 3401, Unit A, Building 6, Shum Yip Sky Park, No. 8089, Hongli West Road, Xiangmihu Street, Futian District,Shenzhen, Guangdong 518040, People's Republic of China\r
+ Shenzhen 518040\r
+ CN\r
+\r
+C4-5B-BE (hex) Espressif Inc.\r
+C45BBE (base 16) Espressif Inc.\r
+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area\r
+ Shanghai Shanghai 201203\r
+ CN\r
+\r
+88-90-09 (hex) Juniper Networks\r
+889009 (base 16) Juniper Networks\r
+ 1133 Innovation Way\r
+ Sunnyvale CA 94089\r
+ US\r
+\r
+90-B6-7A (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
+90B67A (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
+ 4F,Block A, Skyworth?Building,\r
+ Shenzhen Guangdong 518057\r
+ CN\r
+\r
+7C-D9-F4 (hex) UAB Teltonika Telematics\r
+7CD9F4 (base 16) UAB Teltonika Telematics\r
+ Saltoniskiu str. 9B-1\r
+ Vilnius LT-08105\r
+ LT\r
+\r
+C8-C6-4A (hex) Flextronics Tech.(Ind) Pvt Ltd\r
+C8C64A (base 16) Flextronics Tech.(Ind) Pvt Ltd\r
+ 365, Benjamin Road\r
+ Sricity Vardahiah Palem(M),Chilamathur Village, Chittoor Distict 517646\r
+ IN\r
+\r
+FC-4E-A4 (hex) Apple, Inc.\r
+FC4EA4 (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
+F4-BE-EC (hex) Apple, Inc.\r
+F4BEEC (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
+BC-FF-4D (hex) Espressif Inc.\r
+BCFF4D (base 16) Espressif Inc.\r
+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area\r
+ Shanghai Shanghai 201203\r
+ CN\r
+\r
+54-E6-1B (hex) Apple, Inc.\r
+54E61B (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
+D8-9A-C1 (hex) Nokia\r
+D89AC1 (base 16) Nokia\r
+ 600 March Road\r
+ Kanata Ontario K2K 2E6\r
+ CA\r
+\r
+F0-B1-1D (hex) Nokia\r
+F0B11D (base 16) Nokia\r
+ 600 March Road\r
+ Kanata Ontario K2K 2E6\r
+ CA\r
+\r
+00-04-7D (hex) Motorola Solutions Inc.\r
+00047D (base 16) Motorola Solutions Inc.\r
+ 500 W Monroe Street, Ste 4400 \r
+ Chicago IL 60661-3781\r
+ US\r
+\r
+A4-D7-95 (hex) Wingtech Mobile Communications Co.,Ltd\r
+A4D795 (base 16) Wingtech Mobile Communications Co.,Ltd\r
+ No.777,Yazhong Road,Nanhu District\r
+ Jiaxing Zhejiang 314001\r
+ CN\r
+\r
+84-AB-26 (hex) Tiinlab Corporation\r
+84AB26 (base 16) Tiinlab Corporation\r
+ 35F,Tower A,Tanglang City,3333 Liuxian Avenue,Nanshan District\r
+ Shenzhen Guangdong 518000\r
+ CN\r
+\r
+F8-97-53 (hex) Huawei Device Co., Ltd.\r
+F89753 (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+58-94-AE (hex) Huawei Device Co., Ltd.\r
+5894AE (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+B0-3A-CE (hex) Huawei Device Co., Ltd.\r
+B03ACE (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+34-AB-95 (hex) Espressif Inc.\r
+34AB95 (base 16) Espressif Inc.\r
+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area\r
+ Shanghai Shanghai 201203\r
+ CN\r
+\r
+C4-91-CF (hex) Luxul \r
+C491CF (base 16) Luxul \r
+ 12884 Frontrunner Blvd, Suite 201\r
+ Draper UT 84020\r
+ US\r
+\r
+58-35-6B (hex) TECNO MOBILE LIMITED\r
+58356B (base 16) TECNO MOBILE LIMITED\r
+ ROOMS 05-15, 13A/F., SOUTH TOWER, WORLD FINANCE CENTRE, HARBOUR CITY, 17 CANTON ROAD, TSIM SHA TSUI, KOWLOON, HONG KONG\r
+ Hong Kong Hong Kong 999077\r
+ HK\r
+\r
+F8-4C-DA (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+F84CDA (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+A8-93-4A (hex) CHONGQING FUGUI ELECTRONICS CO.,LTD.\r
+A8934A (base 16) CHONGQING FUGUI ELECTRONICS CO.,LTD.\r
+ Building D21,No.1, East Zone 1st Road,Xiyong Town,Shapingba District\r
+ Chongqing Chongqing 401332\r
+ CN\r
+\r
+A4-05-6E (hex) Tiinlab Corporation\r
+A4056E (base 16) Tiinlab Corporation\r
+ 35F,Tower A,Tanglang City,3333 Liuxian Avenue,Nanshan District\r
+ Shenzhen Guangdong 518000\r
+ CN\r
+\r
+8C-19-B5 (hex) Arcadyan Corporation\r
+8C19B5 (base 16) Arcadyan Corporation\r
+ No.8, Sec.2, Guangfu Rd.\r
+ Hsinchu City Hsinchu 30071\r
+ TW\r
+\r
+C8-7B-23 (hex) Bose Corporation\r
+C87B23 (base 16) Bose Corporation\r
+ The Mountain\r
+ Framingham MA 01701-9168\r
+ US\r
+\r
+78-D9-E9 (hex) MOMENTUM IOT\r
+78D9E9 (base 16) MOMENTUM IOT\r
+ 100 W. BROADWAY, STE. 500\r
+ LONG BEACH CA 90802\r
+ US\r
+\r
+2C-08-23 (hex) Sercomm France Sarl\r
+2C0823 (base 16) Sercomm France Sarl\r
+ 2/4 Rue Maurice Hartmann 92370 Issy Les Moulineaux France\r
+ Moulineaux 92370\r
+ FR\r
+\r
+30-8E-7A (hex) Shenzhen iComm Semiconductor CO.,LTD\r
+308E7A (base 16) Shenzhen iComm Semiconductor CO.,LTD\r
+ Room 504A,Block B,Digital Building,Gargen City,No.1079,Nanhai Road,Nanshan District,Shenzhen.\r
+ Shenzhen 518067\r
+ CN\r
+\r
+9C-1C-37 (hex) AltoBeam (China) Inc.\r
+9C1C37 (base 16) AltoBeam (China) Inc.\r
+ B808, Tsinghua Tongfang Hi-Tech Plaza, Haidian\r
+ Beijing Beijing 100083\r
+ CN\r
+\r
+8C-E7-48 (hex) Hangzhou Hikvision Digital Technology Co.,Ltd.\r
+8CE748 (base 16) Hangzhou Hikvision Digital Technology Co.,Ltd.\r
+ No.469,Jianghui Road\r
+ Hangzhou Zhejiang 310052\r
+ CN\r
+\r
+98-42-65 (hex) Sagemcom Broadband SAS\r
+984265 (base 16) Sagemcom Broadband SAS\r
+ 250, route de l'Empereur\r
+ Rueil Malmaison Cedex hauts de seine 92848\r
+ FR\r
+\r
+B8-A3-77 (hex) Cisco Systems, Inc\r
+B8A377 (base 16) Cisco Systems, Inc\r
+ 80 West Tasman Drive\r
+ San Jose CA 94568\r
+ US\r
+\r
+E4-4E-2D (hex) Cisco Systems, Inc\r
+E44E2D (base 16) Cisco Systems, Inc\r
+ 80 West Tasman Drive\r
+ San Jose CA 94568\r
+ US\r
+\r
+00-CC-34 (hex) Juniper Networks\r
+00CC34 (base 16) Juniper Networks\r
+ 1133 Innovation Way\r
+ Sunnyvale CA 94089\r
+ US\r
+\r
+1C-D1-07 (hex) Realme Chongqing Mobile Telecommunications Corp.,Ltd.\r
+1CD107 (base 16) Realme Chongqing Mobile Telecommunications Corp.,Ltd.\r
+ No.178 Yulong Avenue, Yufengshan, Yubei District, Chongqing.\r
+ Chongqing China 401120\r
+ CN\r
+\r
+10-3D-1C (hex) Intel Corporate\r
+103D1C (base 16) Intel Corporate\r
+ Lot 8, Jalan Hi-Tech 2/3 \r
+ Kulim Kedah 09000\r
+ MY\r
+\r
+38-87-D5 (hex) Intel Corporate\r
+3887D5 (base 16) Intel Corporate\r
+ Lot 8, Jalan Hi-Tech 2/3 \r
+ Kulim Kedah 09000\r
+ MY\r
+\r
9C-FF-C2 (hex) AVI Systems GmbH\r
9CFFC2 (base 16) AVI Systems GmbH\r
Dr. Franz Wilhelmstraße 2A\r
Beijing Beijing 100012\r
CN\r
\r
-84-C7-8F (hex) STORDIS GmbH\r
-84C78F (base 16) STORDIS GmbH\r
- Rosenwiesstr. 17\r
- Stuttgart 70567\r
- DE\r
-\r
50-41-B9 (hex) I-O DATA DEVICE,INC.\r
5041B9 (base 16) I-O DATA DEVICE,INC.\r
3-10,Sakurada-machi\r
Shenzhen Guangdong 518109\r
CN\r
\r
-00-1F-92 (hex) Avigilon Corporation\r
-001F92 (base 16) Avigilon Corporation\r
- Box 378, 101 - 1001 West Broadway\r
- Vancouver BC V6H 4E4\r
- CA\r
-\r
00-0C-03 (hex) HDMI Licensing, LLC\r
000C03 (base 16) HDMI Licensing, LLC\r
1060 East Arques Ave.\r
Calgary AB T2R 0L4\r
CA\r
\r
-00-80-8C (hex) NetAlly\r
-00808C (base 16) NetAlly\r
- 310 Littleton Road\r
- Westford MA 01886 \r
- US\r
-\r
-04-9F-81 (hex) NetAlly\r
-049F81 (base 16) NetAlly\r
- 310 Littleton Road\r
- Westford MA 01886 \r
- US\r
-\r
00-10-87 (hex) XSTREAMIS PLC\r
001087 (base 16) XSTREAMIS PLC\r
OXFORD SCIENCE PARK\r
San Luis Obispo CA 93401\r
US\r
\r
-00-23-BB (hex) Schmitt Industries\r
-0023BB (base 16) Schmitt Industries\r
- 2765 NW Nicolai St\r
- Portland Oregon 97210\r
- US\r
-\r
00-23-8D (hex) Techno Design Co., Ltd.\r
00238D (base 16) Techno Design Co., Ltd.\r
312-2\r
St. Ingbert Saarland 66386\r
DE\r
\r
-00-1A-86 (hex) AdvancedIO Systems Inc\r
-001A86 (base 16) AdvancedIO Systems Inc\r
- 595 Howe Street, Suite 502\r
- Vancouver BC V6C 2T5\r
- CA\r
-\r
00-1A-C7 (hex) UNIPOINT\r
001AC7 (base 16) UNIPOINT\r
7F Gwangsung Bld 831-47 YeokSam-Dong\r
San Jose CA 94568\r
US\r
\r
-D8-D5-B9 (hex) Rainforest Automation, Inc.\r
-D8D5B9 (base 16) Rainforest Automation, Inc.\r
- 827 Cambie St.\r
- Vancouver British Columbia V6B 2P4\r
- CA\r
-\r
00-1B-B0 (hex) Bharat Electronics Limited\r
001BB0 (base 16) Bharat Electronics Limited\r
JALAHALLI POST\r
Grand Rapids MI 49505\r
US\r
\r
+88-C3-E5 (hex) Betop Techonologies \r
+88C3E5 (base 16) Betop Techonologies \r
+ 6F., No. 669, Bannan Road, Zhonghe District\r
+ New Taipei City 235\r
+ TW\r
+\r
+E4-28-A4 (hex) Prama India Private Limited\r
+E428A4 (base 16) Prama India Private Limited\r
+ Off 103, 765 Fly Edge, TPS III Jn of S V Rd, Nr Kora Kendra\r
+ Borivali West, Mumbai Maharashtra 400092\r
+ IN\r
+\r
+94-3A-91 (hex) Amazon Technologies Inc.\r
+943A91 (base 16) Amazon Technologies Inc.\r
+ P.O Box 8102 \r
+ Reno NV 89507\r
+ US\r
+\r
+00-0F-A0 (hex) CANON KOREA BUSINESS SOLUTIONS INC.\r
+000FA0 (base 16) CANON KOREA BUSINESS SOLUTIONS INC.\r
+ Canon BS Tower, 607 Teheran-ro\r
+ Seoul Gangnam-gu 06173\r
+ KR\r
+\r
+40-8C-1F (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD\r
+408C1F (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD\r
+ NO.18 HAIBIN ROAD,\r
+ DONG GUAN GUANG DONG 523860\r
+ CN\r
+\r
+2C-3F-0B (hex) Cisco Meraki\r
+2C3F0B (base 16) Cisco Meraki\r
+ 500 Terry A. Francois Blvd\r
+ San Francisco 94158\r
+ US\r
+\r
+80-C5-01 (hex) OctoGate IT Security Systems GmbH\r
+80C501 (base 16) OctoGate IT Security Systems GmbH\r
+ Friedrich List Strasse 42\r
+ Paderborn NRW 33100\r
+ DE\r
+\r
+04-F0-3E (hex) Huawei Device Co., Ltd.\r
+04F03E (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+78-E2-2C (hex) Huawei Device Co., Ltd.\r
+78E22C (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+C0-D0-26 (hex) Huawei Device Co., Ltd.\r
+C0D026 (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
14-D1-9E (hex) Apple, Inc.\r
14D19E (base 16) Apple, Inc.\r
1 Infinite Loop\r
Cupertino CA 95014\r
US\r
\r
-00-0F-A0 (hex) CANON KOREA BUSINESS SOLUTIONS INC.\r
-000FA0 (base 16) CANON KOREA BUSINESS SOLUTIONS INC.\r
- Canon BS Tower, 607 Teheran-ro\r
- Seoul Gangnam-gu 06173\r
+00-2D-B3 (hex) AMPAK Technology,Inc.\r
+002DB3 (base 16) AMPAK Technology,Inc.\r
+ 3F, No.15-1 Zhonghua Road, Hsinchu Industrail Park, Hukou,\r
+ Hsinchu Hsinchu,Taiwan R.O.C. 30352\r
+ TW\r
+\r
+3C-C7-86 (hex) DONGGUAN HUARONG COMMUNICATION TECHNOLOGIES CO.,LTD.\r
+3CC786 (base 16) DONGGUAN HUARONG COMMUNICATION TECHNOLOGIES CO.,LTD.\r
+ No.130 Dongxing East Road, Dongkeng Town\r
+ DONGGUAN 523450\r
+ CN\r
+\r
+28-C8-7C (hex) zte corporation\r
+28C87C (base 16) zte corporation\r
+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China\r
+ shenzhen guangdong 518057\r
+ CN\r
+\r
+14-50-51 (hex) SHARP Corporation\r
+145051 (base 16) SHARP Corporation\r
+ 1 Takumi-cho, Sakai-ku\r
+ Sakai City Osaka 590-8522\r
+ JP\r
+\r
+C4-D0-E3 (hex) Intel Corporate\r
+C4D0E3 (base 16) Intel Corporate\r
+ Lot 8, Jalan Hi-Tech 2/3 \r
+ Kulim Kedah 09000\r
+ MY\r
+\r
+E4-FD-45 (hex) Intel Corporate\r
+E4FD45 (base 16) Intel Corporate\r
+ Lot 8, Jalan Hi-Tech 2/3 \r
+ Kulim Kedah 09000\r
+ MY\r
+\r
+18-4C-AE (hex) CONTINENTAL\r
+184CAE (base 16) CONTINENTAL\r
+ 1 AVENUE PAUL OURLIAC\r
+ TOULOUSE 31100\r
+ FR\r
+\r
+98-38-7D (hex) ITRONIC TECHNOLOGY CO . , LTD .\r
+98387D (base 16) ITRONIC TECHNOLOGY CO . , LTD .\r
+ 2F C Building Fu Xin Lin lndustrial Park Hangcheng\r
+ lndustrial Zone Xixiang Street Baoan District Shenzhen 518100\r
+ CN\r
+\r
+C8-D8-84 (hex) Universal Electronics, Inc.\r
+C8D884 (base 16) Universal Electronics, Inc.\r
+ 201 E. Sandpointe Ave\r
+ Santa Ana CA 92707\r
+ US\r
+\r
+B4-A2-5C (hex) Cambium Networks Limited\r
+B4A25C (base 16) Cambium Networks Limited\r
+ Unit B2, Linhay Business Park,\r
+ Ashburton Devon TQ13 7UP\r
+ GB\r
+\r
+2C-71-FF (hex) Amazon Technologies Inc.\r
+2C71FF (base 16) Amazon Technologies Inc.\r
+ P.O Box 8102 \r
+ Reno NV 89507\r
+ US\r
+\r
+AC-D6-18 (hex) OnePlus Technology (Shenzhen) Co., Ltd\r
+ACD618 (base 16) OnePlus Technology (Shenzhen) Co., Ltd\r
+ 18C02, 18C03, 18C04 ,18C05,TAIRAN BUILDING,\r
+ Shenzhen Guangdong 518000\r
+ CN\r
+\r
+6C-56-40 (hex) BLU Products Inc\r
+6C5640 (base 16) BLU Products Inc\r
+ 10814 NW 33rd Street\r
+ Miami FL 33172\r
+ US\r
+\r
+48-78-5E (hex) Amazon Technologies Inc.\r
+48785E (base 16) Amazon Technologies Inc.\r
+ P.O Box 8102 \r
+ Reno NV 89507\r
+ US\r
+\r
+20-C7-4F (hex) SensorPush\r
+20C74F (base 16) SensorPush\r
+ PO Box 211\r
+ Garrison NY 10524\r
+ US\r
+\r
+48-29-52 (hex) Sagemcom Broadband SAS\r
+482952 (base 16) Sagemcom Broadband SAS\r
+ 250, route de l'Empereur\r
+ Rueil Malmaison Cedex hauts de seine 92848\r
+ FR\r
+\r
+A4-7E-36 (hex) EM Microelectronic\r
+A47E36 (base 16) EM Microelectronic\r
+ Rue des Sors 3\r
+ Marin-Epagnier Neuchatel 2074\r
+ CH\r
+\r
+B0-5D-D4 (hex) ARRIS Group, Inc.\r
+B05DD4 (base 16) ARRIS Group, Inc.\r
+ 6450 Sequence Drive\r
+ San Diego CA 92121\r
+ US\r
+\r
+24-E8-53 (hex) LG Innotek\r
+24E853 (base 16) LG Innotek\r
+ 26, Hanamsandan 5beon-ro\r
+ Gwangju Gwangsan-gu 506-731\r
KR\r
\r
-40-8C-1F (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD\r
-408C1F (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD\r
+30-7C-4A (hex) Huawei Device Co., Ltd.\r
+307C4A (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+2C-CE-1E (hex) Cloudtronics Pty Ltd\r
+2CCE1E (base 16) Cloudtronics Pty Ltd\r
+ Unit 1 6 Powells Road Brookvale\r
+ Sydney NSW 2100\r
+ AU\r
+\r
+F0-21-E0 (hex) eero inc.\r
+F021E0 (base 16) eero inc.\r
+ 660 3rd Street\r
+ San Francisco 94107\r
+ US\r
+\r
+9C-DB-CB (hex) Wuhan Funshion Online Technologies Co.,Ltd\r
+9CDBCB (base 16) Wuhan Funshion Online Technologies Co.,Ltd\r
+ 5th Floor,Financial Port Building A9,No.77 Optical Valley Avenue, East Lake High-Tech Development Zone, Wuhan\r
+ Wuhan CN/Hubei 430000\r
+ CN\r
+\r
+64-17-59 (hex) Intellivision Holdings, LLC\r
+641759 (base 16) Intellivision Holdings, LLC\r
+ 1844 E Carnegie\r
+ Santa Ana CA 92705\r
+ US\r
+\r
+50-43-48 (hex) ThingsMatrix Inc.\r
+504348 (base 16) ThingsMatrix Inc.\r
+ 9442 North Capital of Texas Hwy Plaza One Suite 500 Austin\r
+ Austin TX 78759\r
+ US\r
+\r
+D8-59-82 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+D85982 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+48-B2-5D (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+48B25D (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+2C-FD-B3 (hex) TCL Technoly Electronics(Huizhou).,Ltd\r
+2CFDB3 (base 16) TCL Technoly Electronics(Huizhou).,Ltd\r
+ Section 37, Zhongkai Hi-Tech Development Zone\r
+ Huizhou Guangdong 516006\r
+ CN\r
+\r
+A4-1B-34 (hex) China Mobile Group Device Co.,Ltd.\r
+A41B34 (base 16) China Mobile Group Device Co.,Ltd.\r
+ 32 Xuanwumen West Street,Xicheng District\r
+ Beijing 100053\r
+ CN\r
+\r
+80-45-DD (hex) Intel Corporate\r
+8045DD (base 16) Intel Corporate\r
+ Lot 8, Jalan Hi-Tech 2/3 \r
+ Kulim Kedah 09000\r
+ MY\r
+\r
+C0-D4-6B (hex) Huawei Device Co., Ltd.\r
+C0D46B (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+9C-95-67 (hex) Huawei Device Co., Ltd.\r
+9C9567 (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+58-AE-F1 (hex) Fiberhome Telecommunication Technologies Co.,LTD\r
+58AEF1 (base 16) Fiberhome Telecommunication Technologies Co.,LTD\r
+ No.5 DongXin Road\r
+ Wuhan Hubei 430074\r
+ CN\r
+\r
+A4-7B-1A (hex) Huawei Device Co., Ltd.\r
+A47B1A (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+14-7D-05 (hex) SERCOMM PHILIPPINES INC\r
+147D05 (base 16) SERCOMM PHILIPPINES INC\r
+ Lot 1 & 5, Phase 1, Filinvest Technology Park 1, Brgy. Punta, Calamba City\r
+ Calamba Lot 1\r
+ PH\r
+\r
+78-7A-6F (hex) Juice Technology AG\r
+787A6F (base 16) Juice Technology AG\r
+ Gewerbestrasse 7\r
+ Cham Select State CH-6330\r
+ CH\r
+\r
+E8-6C-C7 (hex) IEEE Registration Authority\r
+E86CC7 (base 16) IEEE Registration Authority\r
+ 445 Hoes Lane\r
+ Piscataway NJ 08554\r
+ US\r
+\r
+40-24-B2 (hex) Sichuan AI-Link Technology Co., Ltd.\r
+4024B2 (base 16) Sichuan AI-Link Technology Co., Ltd.\r
+ Anzhou, Industrial Park\r
+ Mianyang Sichuan 622650\r
+ CN\r
+\r
+64-0D-22 (hex) LG Electronics (Mobile Communications)\r
+640D22 (base 16) LG Electronics (Mobile Communications)\r
+ 60-39, Gasan-dong, Geumcheon-gu\r
+ Seoul 153-801\r
+ KR\r
+\r
+20-A7-F9 (hex) SHENZHEN OLANBOA TECHNOLOGY CO., LTD\r
+20A7F9 (base 16) SHENZHEN OLANBOA TECHNOLOGY CO., LTD\r
+ 4/F, Building B, Block A, Longquan Science Park, Tongfuyu Phase II, Tongsheng Community, Dalang Street, Longhua District, Shenzhen\r
+ shenzhen Guangdong 518000\r
+ CN\r
+\r
+C0-06-C3 (hex) TP-Link Corporation Limited\r
+C006C3 (base 16) TP-Link Corporation Limited\r
+ Room 901,9/F.New East Ocean Centre, 9 Science Museum Road\r
+ Tsim Sha Tsui Kowloon 999077\r
+ HK\r
+\r
+3C-15-12 (hex) Shenzhen Huanhu Technology Co.,Ltd\r
+3C1512 (base 16) Shenzhen Huanhu Technology Co.,Ltd\r
+ 7 / F, building C4, Hengfeng Industrial City, 739 Zhoushi Road, Hezhou community, Hangcheng street, Bao'an District, Shenzhen\r
+ Shenzhen 518000\r
+ CN\r
+\r
+8C-31-E2 (hex) DAYOUPLUS\r
+8C31E2 (base 16) DAYOUPLUS\r
+ 3F 509, Dunchon-daero, Jungwon-gu, Seongnam-si, Gyeonggi-do, Republic of Korea\r
+ Seongnam-si Gyeonggi-do 13217\r
+ KR\r
+\r
+10-39-4E (hex) Hisense broadband multimedia technology Co.,Ltd\r
+10394E (base 16) Hisense broadband multimedia technology Co.,Ltd\r
+ Song ling Road 399\r
+ Qingdao 266000\r
+ CN\r
+\r
+D8-D5-B9 (hex) Rainforest Automation, Inc.\r
+D8D5B9 (base 16) Rainforest Automation, Inc.\r
+ 200 – 311 Pender St. W\r
+ Vancouver British Columbia V6B 1T3\r
+ CA\r
+\r
+04-BA-1C (hex) Huawei Device Co., Ltd.\r
+04BA1C (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+7C-3D-2B (hex) Huawei Device Co., Ltd.\r
+7C3D2B (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+18-C2-41 (hex) SonicWall\r
+18C241 (base 16) SonicWall\r
+ 1033 McCarthy Blvd\r
+ Milpitas CA 95035\r
+ US\r
+\r
+58-45-4C (hex) Ericsson AB\r
+58454C (base 16) Ericsson AB\r
+ Torshamnsgatan 36\r
+ Stockholm SE-164 80\r
+ SE\r
+\r
+FC-4D-A6 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+FC4DA6 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+B4-14-E6 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+B414E6 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+AC-99-29 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+AC9929 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+18-48-59 (hex) Castlenet Technology Inc.\r
+184859 (base 16) Castlenet Technology Inc.\r
+ 5th Fl., No.159-1, Sec.3, Beishen Rd., Shenkeng Dist., \r
+ New Taipei City 222004\r
+ TW\r
+\r
+14-51-7E (hex) New H3C Technologies Co., Ltd\r
+14517E (base 16) New H3C Technologies Co., Ltd\r
+ 466 Changhe Road, Binjiang District\r
+ Hangzhou Zhejiang 310052\r
+ CN\r
+\r
+08-3A-38 (hex) New H3C Technologies Co., Ltd\r
+083A38 (base 16) New H3C Technologies Co., Ltd\r
+ 466 Changhe Road, Binjiang District\r
+ Hangzhou Zhejiang 310052\r
+ CN\r
+\r
+70-F0-88 (hex) Nintendo Co.,Ltd\r
+70F088 (base 16) Nintendo Co.,Ltd\r
+ 11-1 HOKOTATE-CHO KAMITOBA,MINAMI-KU\r
+ KYOTO KYOTO 601-8501\r
+ JP\r
+\r
+84-23-88 (hex) Ruckus Wireless\r
+842388 (base 16) Ruckus Wireless\r
+ 350 West Java Drive\r
+ Sunnyvale CA 94089\r
+ US\r
+\r
+F4-C7-AA (hex) Marvell Semiconductors\r
+F4C7AA (base 16) Marvell Semiconductors\r
+ 15485 Sand Canyon Ave\r
+ IRVINE CA 92618\r
+ US\r
+\r
+F8-AB-E5 (hex) shenzhen worldelite electronics co., LTD\r
+F8ABE5 (base 16) shenzhen worldelite electronics co., LTD\r
+ Office 5 F, Xiang Yu Industrial Park, Longsheng Road, Longgang Dist\r
+ Shenzhen Guangdong 51800\r
+ CN\r
+\r
+E0-DB-D1 (hex) Technicolor CH USA Inc.\r
+E0DBD1 (base 16) Technicolor CH USA Inc.\r
+ 5030 Sugarloaf Parkway Bldg 6 \r
+ Lawrenceville GA 30044\r
+ US\r
+\r
+CC-ED-21 (hex) Nokia Shanghai Bell Co., Ltd.\r
+CCED21 (base 16) Nokia Shanghai Bell Co., Ltd.\r
+ No.388 Ning Qiao Road,Jin Qiao Pudong Shanghai\r
+ Shanghai 201206\r
+ CN\r
+\r
+10-D5-61 (hex) Tuya Smart Inc.\r
+10D561 (base 16) Tuya Smart Inc.\r
+ 160 Greentree Drive, Suite 101\r
+ Dover DE 19904\r
+ US\r
+\r
+00-1A-86 (hex) New Wave Design & Verification\r
+001A86 (base 16) New Wave Design & Verification\r
+ 4950 W 78th St.\r
+ Minneapolis MN 55435\r
+ US\r
+\r
+50-9A-46 (hex) Safetrust Inc\r
+509A46 (base 16) Safetrust Inc\r
+ 8112 Mill Creek Rd\r
+ Fremont CA 94539\r
+ US\r
+\r
+D0-CF-D8 (hex) Huizhou Boshijie Technology Co.,Ltd\r
+D0CFD8 (base 16) Huizhou Boshijie Technology Co.,Ltd\r
+ No.1 Xisan road, Huifeng west road, Zhongkai high-tech zone\r
+ Huizhou Guangdong 516006\r
+ CN\r
+\r
+84-C7-8F (hex) APS Networks GmbH\r
+84C78F (base 16) APS Networks GmbH\r
+ Rosenwiesstr. 17\r
+ Stuttgart 70567\r
+ DE\r
+\r
+F0-A3-B2 (hex) Hui Zhou Gaoshengda Technology Co.,LTD\r
+F0A3B2 (base 16) Hui Zhou Gaoshengda Technology Co.,LTD\r
+ No.75,Zhongkai High-Tech Development District,Huizhou\r
+ Hui Zhou Guangdong 516006\r
+ CN\r
+\r
+08-BB-3C (hex) Flextronics Tech.(Ind) Pvt Ltd\r
+08BB3C (base 16) Flextronics Tech.(Ind) Pvt Ltd\r
+ 365, Benjamin Road\r
+ Sricity Vardahiah Palem(M),Chilamathur Village, Chittoor Distict 517646\r
+ IN\r
+\r
+2C-BE-EB (hex) Nothing Technology Limited\r
+2CBEEB (base 16) Nothing Technology Limited\r
+ 11 Staple Inn\r
+ London London WC1V 7QH\r
+ GB\r
+\r
+F0-4A-02 (hex) Cisco Systems, Inc\r
+F04A02 (base 16) Cisco Systems, Inc\r
+ 80 West Tasman Drive\r
+ San Jose CA 94568\r
+ US\r
+\r
+74-09-AC (hex) Quext, LLC\r
+7409AC (base 16) Quext, LLC\r
+ 5214 68th St., Suite 201\r
+ Lubbock TX 79424\r
+ US\r
+\r
+F0-01-6E (hex) Tianyi Telecom Terminals Company Limited\r
+F0016E (base 16) Tianyi Telecom Terminals Company Limited\r
+ 6/F Changshang Building, No.29 North Xinhua Street, Xicheng District\r
+ Beijing 100031\r
+ CN\r
+\r
+EC-0B-AE (hex) Hangzhou BroadLink Technology Co.,Ltd\r
+EC0BAE (base 16) Hangzhou BroadLink Technology Co.,Ltd\r
+ Room 101,1/F,Unit C,Building 1,No.57 Jiang'er Road,Changhe Street,Binjiang District,Hangzhou,Zhejiang,P.R.China\r
+ Hangzhou Zhejiang 310052\r
+ CN\r
+\r
+80-25-11 (hex) ITEL MOBILE LIMITED\r
+802511 (base 16) ITEL MOBILE LIMITED\r
+ RM B3 & B4 BLOCK B, KO FAI INDUSTRIAL BUILDING NO.7 KO FAI ROAD, YAU TONG, KLN, H.K\r
+ Hong Kong KOWLOON 999077\r
+ HK\r
+\r
+E8-A6-60 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+E8A660 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+CC-24-2E (hex) Shenzhen SuperElectron Technology Co.,Ltd.\r
+CC242E (base 16) Shenzhen SuperElectron Technology Co.,Ltd.\r
+ 1213-1214, haosheng business center, dongbin road, nanshan street, nanshan district, shenzhen city\r
+ Shenzhen Guangdong 518000\r
+ CN\r
+\r
+08-2F-E9 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+082FE9 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+98-48-74 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+984874 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+1C-A6-81 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+1CA681 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+B8-81-FA (hex) Apple, Inc.\r
+B881FA (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
+9C-76-0E (hex) Apple, Inc.\r
+9C760E (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
+94-EA-32 (hex) Apple, Inc.\r
+94EA32 (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
+C8-BF-FE (hex) Huawei Device Co., Ltd.\r
+C8BFFE (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+08-2E-36 (hex) Huawei Device Co., Ltd.\r
+082E36 (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+50-F4-EB (hex) Apple, Inc.\r
+50F4EB (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
+28-C7-09 (hex) Apple, Inc.\r
+28C709 (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
+38-02-DE (hex) Sercomm Corporation.\r
+3802DE (base 16) Sercomm Corporation.\r
+ 3F,No.81,Yu-Yih Rd.,Chu-Nan Chen\r
+ Miao-Lih Hsuan 115\r
+ TW\r
+\r
+5C-62-5A (hex) CANON INC.\r
+5C625A (base 16) CANON INC.\r
+ 30-2 Shimomaruko 3-chome,\r
+ Ohta-ku Tokyo 146-8501\r
+ JP\r
+\r
+7C-0A-3F (hex) Samsung Electronics Co.,Ltd\r
+7C0A3F (base 16) Samsung Electronics Co.,Ltd\r
+ 129, Samsung-ro, Youngtongl-Gu\r
+ Suwon Gyeonggi-Do 16677\r
+ KR\r
+\r
+08-AA-89 (hex) zte corporation\r
+08AA89 (base 16) zte corporation\r
+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China\r
+ shenzhen guangdong 518057\r
+ CN\r
+\r
+A4-35-2D (hex) TRIZ Networks corp.\r
+A4352D (base 16) TRIZ Networks corp.\r
+ 815 Daewangpangyo-ro\r
+ Sujeong-gu, Seongnam-si Gyeonggi-do 13449\r
+ KR\r
+\r
+04-D6-0E (hex) FUNAI ELECTRIC CO., LTD.\r
+04D60E (base 16) FUNAI ELECTRIC CO., LTD.\r
+ 7-7-1, Nakagaito\r
+ Daito Osaka 574-0013\r
+ JP\r
+\r
+04-9F-81 (hex) NETSCOUT SYSTEMS INC\r
+049F81 (base 16) NETSCOUT SYSTEMS INC\r
+ 310 Littleton Road\r
+ Westford MA 01886 \r
+ US\r
+\r
+00-80-8C (hex) NETSCOUT SYSTEMS INC\r
+00808C (base 16) NETSCOUT SYSTEMS INC\r
+ 310 Littleton Road\r
+ Westford MA 01886 \r
+ US\r
+\r
+00-1F-92 (hex) Motorola Solutions Inc.\r
+001F92 (base 16) Motorola Solutions Inc.\r
+ 500 W Monroe Street, Ste 4400\r
+ Chicago IL 60661-3781\r
+ US\r
+\r
+00-23-BB (hex) Accretech SBS, Inc.\r
+0023BB (base 16) Accretech SBS, Inc.\r
+ 2451 NW 28th Ave.\r
+ Portland OR 97210\r
+ US\r
+\r
+B0-C9-52 (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD\r
+B0C952 (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD\r
NO.18 HAIBIN ROAD,\r
DONG GUAN GUANG DONG 523860\r
CN\r
\r
-04-F0-3E (hex) Huawei Device Co., Ltd.\r
-04F03E (base 16) Huawei Device Co., Ltd.\r
+F4-41-9E (hex) Huawei Device Co., Ltd.\r
+F4419E (base 16) Huawei Device Co., Ltd.\r
No.2 of Xincheng Road, Songshan Lake Zone\r
Dongguan Guangdong 523808\r
CN\r
\r
-78-E2-2C (hex) Huawei Device Co., Ltd.\r
-78E22C (base 16) Huawei Device Co., Ltd.\r
+90-F9-B7 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+90F9B7 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+F4-45-88 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+F44588 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+C8-BB-81 (hex) Huawei Device Co., Ltd.\r
+C8BB81 (base 16) Huawei Device Co., Ltd.\r
No.2 of Xincheng Road, Songshan Lake Zone\r
Dongguan Guangdong 523808\r
CN\r
\r
-C0-D0-26 (hex) Huawei Device Co., Ltd.\r
-C0D026 (base 16) Huawei Device Co., Ltd.\r
+1C-47-2F (hex) Huawei Device Co., Ltd.\r
+1C472F (base 16) Huawei Device Co., Ltd.\r
No.2 of Xincheng Road, Songshan Lake Zone\r
Dongguan Guangdong 523808\r
CN\r
\r
-2C-3F-0B (hex) Cisco Meraki\r
-2C3F0B (base 16) Cisco Meraki\r
- 500 Terry A. Francois Blvd\r
- San Francisco 94158\r
+20-5E-64 (hex) Huawei Device Co., Ltd.\r
+205E64 (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+60-57-7D (hex) eero inc.\r
+60577D (base 16) eero inc.\r
+ 660 3rd Street\r
+ San Francisco CA 94107\r
US\r
\r
-80-C5-01 (hex) OctoGate IT Security Systems GmbH\r
-80C501 (base 16) OctoGate IT Security Systems GmbH\r
- Friedrich List Strasse 42\r
- Paderborn NRW 33100\r
- DE\r
+C8-13-8B (hex) Shenzhen Skyworth Digital Technology CO., Ltd\r
+C8138B (base 16) Shenzhen Skyworth Digital Technology CO., Ltd\r
+ 4F,Block A, Skyworth?Building,\r
+ Shenzhen Guangdong 518057\r
+ CN\r
+\r
+78-F2-35 (hex) Sichuan AI-Link Technology Co., Ltd.\r
+78F235 (base 16) Sichuan AI-Link Technology Co., Ltd.\r
+ Anzhou, Industrial Park\r
+ Mianyang Sichuan 622650\r
+ CN\r
+\r
+F4-4E-E3 (hex) Intel Corporate\r
+F44EE3 (base 16) Intel Corporate\r
+ Lot 8, Jalan Hi-Tech 2/3 \r
+ Kulim Kedah 09000\r
+ MY\r
+\r
+D0-E0-42 (hex) Cisco Systems, Inc\r
+D0E042 (base 16) Cisco Systems, Inc\r
+ 80 West Tasman Drive\r
+ San Jose CA 94568\r
+ US\r
\r
84-80-94 (hex) Meter, Inc.\r
848094 (base 16) Meter, Inc.\r
San Jose CA 94568\r
US\r
\r
-28-EF-01 (hex) Private\r
-28EF01 (base 16) Private\r
-\r
C0-53-36 (hex) Beijing National Railway Research & Design Institute of Signal & Communication Group Co..Ltd.\r
C05336 (base 16) Beijing National Railway Research & Design Institute of Signal & Communication Group Co..Ltd.\r
7 floor, No.1 Automobile Museum South Road, Fengtai Science and Technology Park,\r
Beijing 100190\r
CN\r
\r
-58-FD-20 (hex) Bravida Sakerhet AB\r
-58FD20 (base 16) Bravida Sakerhet AB\r
- Mikrofonvagen 28\r
- STOCKHOLM 126 81\r
- SE\r
-\r
AC-A0-16 (hex) Cisco Systems, Inc\r
ACA016 (base 16) Cisco Systems, Inc\r
80 West Tasman Drive\r
Anyang-Si Gyeonggi-Do 431-061\r
KR\r
\r
-D8-E7-2B (hex) NetAlly\r
-D8E72B (base 16) NetAlly\r
- 310 Littleton Road\r
- Westford MA 01886 \r
- US\r
-\r
78-5C-72 (hex) Hioso Technology Co., Ltd.\r
785C72 (base 16) Hioso Technology Co., Ltd.\r
6th Floor, 12th Building, Wangtang Industrial Zone,\r
Paris 75001\r
FR\r
\r
-00-18-85 (hex) Avigilon Corporation\r
-001885 (base 16) Avigilon Corporation\r
- Box 378, 101 - 1001 West Broadway\r
- Vancouver BC V6H 4E4\r
- CA\r
-\r
00-18-88 (hex) GOTIVE a.s.\r
001888 (base 16) GOTIVE a.s.\r
Zámocká 34\r
Kyunggi-Do 435-040\r
KR\r
\r
-00-08-0C (hex) VDA Elettronica spa\r
-00080C (base 16) VDA Elettronica spa\r
- Viale Lino Zanussi, 3\r
- 33170 Pordenone \r
- IT\r
-\r
00-08-04 (hex) ICA Inc.\r
000804 (base 16) ICA Inc.\r
542-1 Noguki\r
Chatsworth CA 91311\r
US\r
\r
-E4-05-F8 (hex) Delta Innovation Technology Co., Ltd.\r
-E405F8 (base 16) Delta Innovation Technology Co., Ltd.\r
- China Digital Kingdom Building, Chaoyang District\r
- Beijing Beijing 100102\r
- CN\r
-\r
00-00-09 (hex) XEROX CORPORATION\r
000009 (base 16) XEROX CORPORATION\r
M/S 105-50C\r
Piscataway NJ 08554\r
US\r
\r
-34-56-FE (hex) Cisco Meraki\r
-3456FE (base 16) Cisco Meraki\r
+C8-94-02 (hex) CHONGQING FUGUI ELECTRONICS CO.,LTD.\r
+C89402 (base 16) CHONGQING FUGUI ELECTRONICS CO.,LTD.\r
+ Building D21,No.1, East Zone 1st Road,Xiyong Town,Shapingba District\r
+ Chongqing Chongqing 401332\r
+ CN\r
+\r
+7C-B9-4C (hex) Bouffalo Lab (Nanjing) Co., Ltd.\r
+7CB94C (base 16) Bouffalo Lab (Nanjing) Co., Ltd.\r
+ 5F, Gongxiang Space, No.100 Tuanjie Road, Nanjing, China\r
+ Nanjing Jiangsu 211800\r
+ CN\r
+\r
+DC-15-C8 (hex) AVM Audiovisuelles Marketing und Computersysteme GmbH\r
+DC15C8 (base 16) AVM Audiovisuelles Marketing und Computersysteme GmbH\r
+ Alt-Moabit 95\r
+ Berlin Berlin 10559\r
+ DE\r
+\r
+6C-D6-30 (hex) Rootous System Co.,Ltd\r
+6CD630 (base 16) Rootous System Co.,Ltd\r
+ KT B/D 4Floor, 100, Ahopgeori-gil\r
+ Yeonseo-myeon Sejong-si 30049\r
+ KR\r
+\r
+B8-07-56 (hex) Cisco Meraki\r
+B80756 (base 16) Cisco Meraki\r
500 Terry A. Francois Blvd\r
San Francisco 94158\r
US\r
\r
-B8-07-56 (hex) Cisco Meraki\r
-B80756 (base 16) Cisco Meraki\r
+C8-33-E5 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+C833E5 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+34-56-FE (hex) Cisco Meraki\r
+3456FE (base 16) Cisco Meraki\r
500 Terry A. Francois Blvd\r
San Francisco 94158\r
US\r
\r
+B8-44-AE (hex) TCT mobile ltd\r
+B844AE (base 16) TCT mobile ltd\r
+ No.86 hechang 7th road, zhongkai, Hi-Tech District\r
+ Hui Zhou Guang Dong 516006\r
+ CN\r
+\r
+E4-F7-5B (hex) ARRIS Group, Inc.\r
+E4F75B (base 16) ARRIS Group, Inc.\r
+ 6450 Sequence Drive\r
+ San Diego CA 92121\r
+ US\r
+\r
+F8-79-0A (hex) ARRIS Group, Inc.\r
+F8790A (base 16) ARRIS Group, Inc.\r
+ 6450 Sequence Drive\r
+ San Diego CA 92121\r
+ US\r
+\r
+0C-CF-89 (hex) SHENZHEN BILIAN ELECTRONIC CO.,LTD\r
+0CCF89 (base 16) SHENZHEN BILIAN ELECTRONIC CO.,LTD\r
+ NO.268? Fuqian Rd, Jutang community, Guanlan Town, Longhua New district\r
+ shenzhen guangdong 518000\r
+ CN\r
+\r
+0C-8C-69 (hex) Shenzhen elink smart Co., ltd\r
+0C8C69 (base 16) Shenzhen elink smart Co., ltd\r
+ Floor 2,Building A , Hongtian Xinfengze Industrial Park Huang Pu Community , Xin Qiao District ,Baoan Area\r
+ shenzhen Guangdong Province 518101\r
+ CN\r
+\r
+D8-BB-C1 (hex) Micro-Star INTL CO., LTD.\r
+D8BBC1 (base 16) Micro-Star INTL CO., LTD.\r
+ No.69, Lide St.,\r
+ New Taipei City Taiwan 235\r
+ TW\r
+\r
+AC-5A-FC (hex) Intel Corporate\r
+AC5AFC (base 16) Intel Corporate\r
+ Lot 8, Jalan Hi-Tech 2/3 \r
+ Kulim Kedah 09000\r
+ MY\r
+\r
+1C-93-7C (hex) ARRIS Group, Inc.\r
+1C937C (base 16) ARRIS Group, Inc.\r
+ 6450 Sequence Drive\r
+ San Diego CA 92121\r
+ US\r
+\r
+58-FC-20 (hex) Altice Labs S.A.\r
+58FC20 (base 16) Altice Labs S.A.\r
+ NIF 504705610, Rua Eng. José Ferreira Pinto Basto\r
+ Aveiro 3810-106\r
+ PT\r
+\r
+58-FD-20 (hex) Systemhouse Solutions AB\r
+58FD20 (base 16) Systemhouse Solutions AB\r
+ Mikrofonvagen 28\r
+ STOCKHOLM 126 81\r
+ SE\r
+\r
+04-D6-F4 (hex) GD Midea Air-Conditioning Equipment Co.,Ltd.\r
+04D6F4 (base 16) GD Midea Air-Conditioning Equipment Co.,Ltd.\r
+ Midea Global Innovation Center,Beijiao Town,Shunde\r
+ Foshan Guangdong 528311\r
+ CN\r
+\r
+04-90-81 (hex) Pensando Systems, Inc.\r
+049081 (base 16) Pensando Systems, Inc.\r
+ 570 Alder Drive\r
+ Milpitas CA 95035\r
+ US\r
+\r
+4C-79-6E (hex) Intel Corporate\r
+4C796E (base 16) Intel Corporate\r
+ Lot 8, Jalan Hi-Tech 2/3 \r
+ Kulim Kedah 09000\r
+ MY\r
+\r
+98-AD-1D (hex) Huawei Device Co., Ltd.\r
+98AD1D (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+F8-AA-3F (hex) DWnet Technologies(Suzhou) Corporation\r
+F8AA3F (base 16) DWnet Technologies(Suzhou) Corporation\r
+ No.8,Tangzhuang Road, Suzhou Industrial Park, Jiangsu, China\r
+ Suzhou 21500\r
+ CN\r
+\r
+00-68-2B (hex) Huawei Device Co., Ltd.\r
+00682B (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+F0-9E-4A (hex) Intel Corporate\r
+F09E4A (base 16) Intel Corporate\r
+ Lot 8, Jalan Hi-Tech 2/3 \r
+ Kulim Kedah 09000\r
+ MY\r
+\r
+F0-77-C3 (hex) Intel Corporate\r
+F077C3 (base 16) Intel Corporate\r
+ Lot 8, Jalan Hi-Tech 2/3 \r
+ Kulim Kedah 09000\r
+ MY\r
+\r
+24-9A-D8 (hex) YEALINK(XIAMEN) NETWORK TECHNOLOGY CO.,LTD.\r
+249AD8 (base 16) YEALINK(XIAMEN) NETWORK TECHNOLOGY CO.,LTD.\r
+ 309, 3th Floor, No.16, Yun Ding North Road, Huli District\r
+ xiamen Fujian 361015\r
+ CN\r
+\r
+D8-5E-D3 (hex) GIGA-BYTE TECHNOLOGY CO.,LTD.\r
+D85ED3 (base 16) GIGA-BYTE TECHNOLOGY CO.,LTD.\r
+ Pin-Jen City, Taoyuan, Taiwan, R.O.C.\r
+ Pin-Jen Taoyuan 324\r
+ TW\r
+\r
+00-E4-21 (hex) Sony Interactive Entertainment Inc.\r
+00E421 (base 16) Sony Interactive Entertainment Inc.\r
+ 1-7-1 Konan\r
+ Minato-ku Tokyo 108-0075\r
+ JP\r
+\r
+CC-DB-04 (hex) DataRemote Inc.\r
+CCDB04 (base 16) DataRemote Inc.\r
+ 18001 Old Cutler Rd. Suite 600\r
+ Palmetto Bay FL 33157\r
+ US\r
+\r
+E8-9F-39 (hex) Nokia\r
+E89F39 (base 16) Nokia\r
+ 600 March Road\r
+ Kanata Ontario K2K 2E6\r
+ CA\r
+\r
+34-73-5A (hex) Dell Inc.\r
+34735A (base 16) Dell Inc.\r
+ One Dell Way\r
+ Round Rock TX 78682\r
+ US\r
+\r
+8C-AA-CE (hex) Xiaomi Communications Co Ltd\r
+8CAACE (base 16) Xiaomi Communications Co Ltd\r
+ The Rainbow City of China Resources\r
+ NO.68, Qinghe Middle Street Haidian District, Beijing 100085\r
+ CN\r
+\r
+98-1A-35 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+981A35 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+80-34-28 (hex) Microchip Technology Inc.\r
+803428 (base 16) Microchip Technology Inc.\r
+ 2355 W. Chandler Blvd.\r
+ Chandler AZ 85224\r
+ US\r
+\r
+28-EF-01 (hex) Amazon Technologies Inc.\r
+28EF01 (base 16) Amazon Technologies Inc.\r
+ P.O Box 8102\r
+ Reno NV 89507\r
+ US\r
+\r
+B0-22-7A (hex) HP Inc.\r
+B0227A (base 16) HP Inc.\r
+ 10300 Energy Dr\r
+ Spring TX 77389\r
+ US\r
+\r
+60-A7-51 (hex) Huawei Device Co., Ltd.\r
+60A751 (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+10-2B-41 (hex) Samsung Electronics Co.,Ltd\r
+102B41 (base 16) Samsung Electronics Co.,Ltd\r
+ 129, Samsung-ro, Youngtongl-Gu\r
+ Suwon Gyeonggi-Do 16677\r
+ KR\r
+\r
+34-4A-C3 (hex) HuNan ZiKun Information Technology CO., Ltd\r
+344AC3 (base 16) HuNan ZiKun Information Technology CO., Ltd\r
+ 101-8, 1st Floor, Juxing Venture Base, No. 8 Lujing Road, GaoXin Development District\r
+ Changsha City Hunan Province 410000\r
+ CN\r
+\r
+68-2D-83 (hex) SHENZHEN DINGHE COMMUNICATION COMPANY\r
+682D83 (base 16) SHENZHEN DINGHE COMMUNICATION COMPANY\r
+ ROOM 1802, BAOYUNDA WULIU INFORMATION BUILDING\r
+ SHENZHEN GUANGDONG 518101\r
+ CN\r
+\r
+A8-43-97 (hex) Innogrit Corporation\r
+A84397 (base 16) Innogrit Corporation\r
+ 1735 Technology Dr, Suite 620\r
+ San Jose CA 95110\r
+ US\r
+\r
+D8-CD-2C (hex) WUXI NEIHUA NETWORK TECHNOLOGY CO., LTD\r
+D8CD2C (base 16) WUXI NEIHUA NETWORK TECHNOLOGY CO., LTD\r
+ 16 Lexing Road, Xinwu District\r
+ Wuxi Jiangsu 214000\r
+ CN\r
+\r
+58-D3-91 (hex) Quectel Wireless Solutions Co., Ltd.\r
+58D391 (base 16) Quectel Wireless Solutions Co., Ltd.\r
+ 7th Floor, Hongye Building, No.1801 Hongmei Road, Xuhui District\r
+ Shanghai 200233\r
+ CN\r
+\r
+08-47-4C (hex) Nokia\r
+08474C (base 16) Nokia\r
+ 600 March Road\r
+ Kanata Ontario K2K 2E6\r
+ CA\r
+\r
+90-C1-19 (hex) Nokia\r
+90C119 (base 16) Nokia\r
+ 600 March Road\r
+ Kanata Ontario K2K 2E6\r
+ CA\r
+\r
+7C-F8-80 (hex) Cisco Systems, Inc\r
+7CF880 (base 16) Cisco Systems, Inc\r
+ 80 West Tasman Drive\r
+ San Jose CA 94568\r
+ US\r
+\r
+E4-05-F8 (hex) Bytedance\r
+E405F8 (base 16) Bytedance\r
+ E World Center,11 Zhongguancun Street Haidian Dist\r
+ Beijing City Beijing 100102\r
+ CN\r
+\r
+F8-45-C4 (hex) Shenzhen Netforward Micro-Electronic Co., Ltd.\r
+F845C4 (base 16) Shenzhen Netforward Micro-Electronic Co., Ltd.\r
+ Room 611-2?6st Floor,Building 1, The Sunmax Technology Park, No 8 Keyuan Road, Nanshan District\r
+ Shenzhen Guangdong 518000\r
+ CN\r
+\r
+78-10-53 (hex) China Mobile Group Device Co.,Ltd.\r
+781053 (base 16) China Mobile Group Device Co.,Ltd.\r
+ 32 Xuanwumen West Street,Xicheng District\r
+ Beijing 100053\r
+ CN\r
+\r
+9C-4F-5F (hex) TAP Sound System\r
+9C4F5F (base 16) TAP Sound System\r
+ 15 rue Castel\r
+ Fontenay-sous-Bois 94120\r
+ FR\r
+\r
+00-08-0C (hex) VDA Group S.p.a.\r
+00080C (base 16) VDA Group S.p.a.\r
+ Viale Lino Zanussi 3\r
+ Pordenone Pordenone 33170\r
+ IT\r
+\r
+D0-97-FE (hex) Realme Chongqing Mobile Telecommunications Corp.,Ltd.\r
+D097FE (base 16) Realme Chongqing Mobile Telecommunications Corp.,Ltd.\r
+ No.178 Yulong Avenue, Yufengshan, Yubei District, Chongqing.\r
+ Chongqing China 401120\r
+ CN\r
+\r
+84-3A-5B (hex) Inventec(Chongqing) Corporation\r
+843A5B (base 16) Inventec(Chongqing) Corporation\r
+ No.66 West District 2nd Rd, Shapingba District\r
+ Chongqing Chongqing 401331\r
+ CN\r
+\r
+54-49-DF (hex) Peloton Interactive, Inc\r
+5449DF (base 16) Peloton Interactive, Inc\r
+ 158 W 27th St, 4th Fl\r
+ New York NY 10001\r
+ US\r
+\r
+18-2A-57 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+182A57 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+F8-3E-95 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+F83E95 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+48-12-58 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+481258 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+D8-EB-46 (hex) Google, Inc.\r
+D8EB46 (base 16) Google, Inc.\r
+ 1600 Amphitheatre Parkway\r
+ Mountain View CA 94043\r
+ US\r
+\r
+2C-17-E0 (hex) SYSTEMES ET TECHNOLOGIES IDENTIFICATION (STid)\r
+2C17E0 (base 16) SYSTEMES ET TECHNOLOGIES IDENTIFICATION (STid)\r
+ 20 Parc d’activités des Pradeaux\r
+ GREASQUE Select State F-13850\r
+ FR\r
+\r
+CC-32-96 (hex) Huawei Device Co., Ltd.\r
+CC3296 (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+98-CD-AC (hex) Espressif Inc.\r
+98CDAC (base 16) Espressif Inc.\r
+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area\r
+ Shanghai Shanghai 201203\r
+ CN\r
+\r
+80-8A-F7 (hex) Nanoleaf\r
+808AF7 (base 16) Nanoleaf\r
+ 100 Front Street East, 4th Floor\r
+ Toronto Ontario M5A 1E1\r
+ CA\r
+\r
+B0-3D-C2 (hex) Wasp artificial intelligence(Shenzhen) Co.,ltd\r
+B03DC2 (base 16) Wasp artificial intelligence(Shenzhen) Co.,ltd\r
+ A402,Block ABCD,Building 3,Phase 1,Tianan Yungu Industrial Park,Gangtou Comunity,Bantian Street,Longhua District,Shenzhen\r
+ Shenzhen Select State 518000\r
+ CN\r
+\r
+C8-4D-34 (hex) LIONS Taiwan Technology Inc.\r
+C84D34 (base 16) LIONS Taiwan Technology Inc.\r
+ 3F-2, 120, Sec. 2, Gongdao 5th Rd.\r
+ Hsinchu Taiwan 30072\r
+ TW\r
+\r
+44-6F-F8 (hex) Dyson Limited\r
+446FF8 (base 16) Dyson Limited\r
+ Tetbury Hill\r
+ Malmesbury Wiltshire SN16 0RP\r
+ GB\r
+\r
+6C-1B-3F (hex) MiraeSignal Co., Ltd\r
+6C1B3F (base 16) MiraeSignal Co., Ltd\r
+ #701,C-dong Bundang Techno Park Pangyoro 744\r
+ Bundang-gu Sungnam-si Kyungkido 13510\r
+ KR\r
+\r
+28-AF-FD (hex) Cisco Systems, Inc\r
+28AFFD (base 16) Cisco Systems, Inc\r
+ 80 West Tasman Drive\r
+ San Jose CA 94568\r
+ US\r
+\r
+9C-76-13 (hex) Ring LLC\r
+9C7613 (base 16) Ring LLC\r
+ 1523 26th St\r
+ Santa Monica CA 90404\r
+ US\r
+\r
+44-9B-C1 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+449BC1 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+20-25-D2 (hex) Fiberhome Telecommunication Technologies Co.,LTD\r
+2025D2 (base 16) Fiberhome Telecommunication Technologies Co.,LTD\r
+ No.5 DongXin Road\r
+ Wuhan Hubei 430074\r
+ CN\r
+\r
+28-F4-9B (hex) LEETEK\r
+28F49B (base 16) LEETEK\r
+ Ojeong-ro, 47\r
+ Bucheon-si Gyeonggi-do 14445\r
+ KR\r
+\r
+18-42-D4 (hex) Wuhan Hosan Telecommunication Technology Co.,Ltd\r
+1842D4 (base 16) Wuhan Hosan Telecommunication Technology Co.,Ltd\r
+ Fourth Floor,Building N,Quannengtong Shuangchuang Yuan,Gold-silver Lake Street,East West Lake District,\r
+ Wuhan Hubei 430043\r
+ CN\r
+\r
+A8-63-7D (hex) D-Link International\r
+A8637D (base 16) D-Link International\r
+ 1 Internal Business Park, #03-12,The Synergy\r
+ Singapore Singapore 609917\r
+ SG\r
+\r
+2C-43-BE (hex) Sunnovo International Limited\r
+2C43BE (base 16) Sunnovo International Limited\r
+ 1717 Haitai Building\r
+ Beijing Beijing 100083\r
+ CN\r
+\r
+58-10-B7 (hex) Infinix mobility limited\r
+5810B7 (base 16) Infinix mobility limited\r
+ RMS 05-15, 13A/F SOUTH TOWER WORLD FINANCE CTR HARBOUR CITY 17 CANTON RD TST KLN HONG KONG\r
+ HongKong HongKong 999077\r
+ HK\r
+\r
+B0-24-91 (hex) Huawei Device Co., Ltd.\r
+B02491 (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+98-75-1A (hex) Huawei Device Co., Ltd.\r
+98751A (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+1C-91-80 (hex) Apple, Inc.\r
+1C9180 (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
+4C-B9-10 (hex) Apple, Inc.\r
+4CB910 (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
+B4-89-01 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+B48901 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+E0-92-5C (hex) Apple, Inc.\r
+E0925C (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
+EC-15-3D (hex) Beijing Yaxunhongda Technology Co., Ltd.\r
+EC153D (base 16) Beijing Yaxunhongda Technology Co., Ltd.\r
+ East area,4th floor,No.5,Shangdi 5th Street Haidian District,Beijing \r
+ Beijing Beijing 100000\r
+ CN\r
+\r
+D8-A3-5C (hex) Samsung Electronics Co.,Ltd\r
+D8A35C (base 16) Samsung Electronics Co.,Ltd\r
+ 129, Samsung-ro, Youngtongl-Gu\r
+ Suwon Gyeonggi-Do 16677\r
+ KR\r
+\r
+C0-92-96 (hex) zte corporation\r
+C09296 (base 16) zte corporation\r
+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China\r
+ shenzhen guangdong 518057\r
+ CN\r
+\r
+50-E2-4E (hex) zte corporation\r
+50E24E (base 16) zte corporation\r
+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China\r
+ shenzhen guangdong 518057\r
+ CN\r
+\r
+4C-77-66 (hex) SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.\r
+4C7766 (base 16) SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.\r
+ 3/F, Building R1-B, High-Tech Industrial Park, Nanshan District\r
+ Shenzhen Guangdong 518057\r
+ CN\r
+\r
+78-E3-6D (hex) Espressif Inc.\r
+78E36D (base 16) Espressif Inc.\r
+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area\r
+ Shanghai Shanghai 201203\r
+ CN\r
+\r
+14-5A-FC (hex) Liteon Technology Corporation\r
+145AFC (base 16) Liteon Technology Corporation\r
+ 4F, 90, Chien 1 Road\r
+ New Taipei City Taiwan 23585\r
+ TW\r
+\r
+1C-A0-EF (hex) IEEE Registration Authority\r
+1CA0EF (base 16) IEEE Registration Authority\r
+ 445 Hoes Lane\r
+ Piscataway NJ 08554\r
+ US\r
+\r
+00-18-85 (hex) Motorola Solutions Inc.\r
+001885 (base 16) Motorola Solutions Inc.\r
+ 500 W Monroe Street, Ste 4400\r
+ Chicago IL 60661-3781\r
+ US\r
+\r
+D8-E7-2B (hex) NETSCOUT SYSTEMS INC\r
+D8E72B (base 16) NETSCOUT SYSTEMS INC\r
+ 310 Littleton Road\r
+ Westford MA 01886 \r
+ US\r
+\r
+18-BF-B3 (hex) Samsung Electronics Co., Ltd., Memory Division\r
+18BFB3 (base 16) Samsung Electronics Co., Ltd., Memory Division\r
+ 1, Samsungjeonja-ro\r
+ Hwaseong-si Gyeonggi-do 18448\r
+ KR\r
+\r
+2C-8D-B1 (hex) Intel Corporate\r
+2C8DB1 (base 16) Intel Corporate\r
+ Lot 8, Jalan Hi-Tech 2/3 \r
+ Kulim Kedah 09000\r
+ MY\r
+\r
+58-6C-25 (hex) Intel Corporate\r
+586C25 (base 16) Intel Corporate\r
+ Lot 8, Jalan Hi-Tech 2/3 \r
+ Kulim Kedah 09000\r
+ MY\r
+\r
+08-2C-ED (hex) Technity Solutions Inc.\r
+082CED (base 16) Technity Solutions Inc.\r
+ 100 West Beaver Creek Rd, Unit 13\r
+ Richmond Hill Ontario L4B 1H4\r
+ CA\r
+\r
+34-86-5D (hex) Espressif Inc.\r
+34865D (base 16) Espressif Inc.\r
+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area\r
+ Shanghai Shanghai 201203\r
+ CN\r
+\r
+B4-E3-F9 (hex) Silicon Laboratories\r
+B4E3F9 (base 16) Silicon Laboratories\r
+ 400 West Cesar Chavez Street\r
+ Austin TX 78701\r
+ US\r
+\r
+A4-9B-CD (hex) Cisco Systems, Inc\r
+A49BCD (base 16) Cisco Systems, Inc\r
+ 80 West Tasman Drive\r
+ San Jose CA 94568\r
+ US\r
+\r
+04-27-28 (hex) Microsoft Corporation\r
+042728 (base 16) Microsoft Corporation\r
+ One Microsoft Way\r
+ REDMOND WA 98052\r
+ US\r
+\r
+20-66-CF (hex) FREEBOX SAS\r
+2066CF (base 16) FREEBOX SAS\r
+ 16 rue de la Ville l'Eveque\r
+ PARIS IdF 75008\r
+ FR\r
+\r
+2C-C8-1B (hex) Routerboard.com\r
+2CC81B (base 16) Routerboard.com\r
+ Mikrotikls SIA\r
+ Riga Riga LV1009\r
+ LV\r
+\r
+54-0E-58 (hex) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD\r
+540E58 (base 16) GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD\r
+ NO.18 HAIBIN ROAD,\r
+ DONG GUAN GUANG DONG 523860\r
+ CN\r
+\r
+5C-64-8E (hex) Zyxel Communications Corporation\r
+5C648E (base 16) Zyxel Communications Corporation\r
+ No. 6 Innovation Road II, Science Park\r
+ Hsichu Taiwan 300\r
+ TW\r
+\r
+30-E3-96 (hex) Huawei Device Co., Ltd.\r
+30E396 (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+D0-7D-33 (hex) Huawei Device Co., Ltd.\r
+D07D33 (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+C0-E1-BE (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+C0E1BE (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+88-E0-56 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+88E056 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
F8-D0-27 (hex) Seiko Epson Corporation\r
F8D027 (base 16) Seiko Epson Corporation\r
2070 Kotobuki Koaka\r
Qingdao Shandong 266103\r
CN\r
\r
-F8-D4-78 (hex) Flextronics Tech.(Ind) Pvt Ltd\r
-F8D478 (base 16) Flextronics Tech.(Ind) Pvt Ltd\r
- SURVEYNO.381, PADUR ROAD, KUTHAMBAKKAM VILLAGE, 602107 POONAMALLEE TALUK, THIRUVALLUR DISTRIC\r
- Chennai 602107\r
- IN\r
-\r
48-C3-B0 (hex) Pharos Co.Ltd\r
48C3B0 (base 16) Pharos Co.Ltd\r
503 Ogong-ro 144 Deokjin-gu\r
Lörrach DE-79539\r
DE\r
\r
-44-B4-62 (hex) Flextronics Tech.(Ind) Pvt Ltd\r
-44B462 (base 16) Flextronics Tech.(Ind) Pvt Ltd\r
- SURVEYNO.381, PADUR ROAD, KUTHAMBAKKAM VILLAGE, 602107 POONAMALLEE TALUK, THIRUVALLUR DISTRIC\r
- Chennai 602107\r
- IN\r
-\r
94-B4-0F (hex) Aruba, a Hewlett Packard Enterprise Company\r
94B40F (base 16) Aruba, a Hewlett Packard Enterprise Company\r
3333 Scott Blvd\r
San Jose CA 94568\r
US\r
\r
-F4-C7-95 (hex) WEY Elektronik AG\r
-F4C795 (base 16) WEY Elektronik AG\r
- Dorfstrasse 57\r
- Unterengstringen Zurich 8103\r
- CH\r
-\r
78-11-85 (hex) NBS Payment Solutions Inc.\r
781185 (base 16) NBS Payment Solutions Inc.\r
703 Evans Ave\r
Pin-Jhen City, 324\r
TW\r
\r
-84-90-00 (hex) Arnold & Richter Cine Technik\r
-849000 (base 16) Arnold & Richter Cine Technik\r
- Tuerkenstrasse 89\r
- Munich Bavaria 80799\r
- DE\r
-\r
08-18-4C (hex) A. S. Thomas, Inc.\r
08184C (base 16) A. S. Thomas, Inc.\r
355 Providence Hwy\r
213 76 MALMOE \r
SE\r
\r
-00-E0-DF (hex) KEYMILE GmbH\r
-00E0DF (base 16) KEYMILE GmbH\r
- Wohlenbergstraße 3\r
- 30179 Hannover \r
- DE\r
-\r
00-E0-F2 (hex) ARLOTTO COMNET, INC.\r
00E0F2 (base 16) ARLOTTO COMNET, INC.\r
7F-4,55,TUNG-KUANG ROAD\r
BEDFORD TX 76021\r
US\r
\r
-00-C0-6A (hex) ZAHNER-ELEKTRIK GMBH & CO. KG\r
-00C06A (base 16) ZAHNER-ELEKTRIK GMBH & CO. KG\r
- P.O. BOX 1846\r
- \r
- DE\r
-\r
00-C0-E3 (hex) OSITECH COMMUNICATIONS, INC.\r
00C0E3 (base 16) OSITECH COMMUNICATIONS, INC.\r
679 SOUTHGATE DRIVE\r
Cupertino CA 95014\r
US\r
\r
+FC-40-09 (hex) zte corporation\r
+FC4009 (base 16) zte corporation\r
+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China\r
+ shenzhen guangdong 518057\r
+ CN\r
+\r
+24-A6-5E (hex) zte corporation\r
+24A65E (base 16) zte corporation\r
+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China\r
+ shenzhen guangdong 518057\r
+ CN\r
+\r
+50-98-39 (hex) Xiaomi Communications Co Ltd\r
+509839 (base 16) Xiaomi Communications Co Ltd\r
+ The Rainbow City of China Resources\r
+ NO.68, Qinghe Middle Street Haidian District, Beijing 100085\r
+ CN\r
+\r
+48-00-7D (hex) DTS ELEKTRONIK SAN. TIC. LTD. STI.\r
+48007D (base 16) DTS ELEKTRONIK SAN. TIC. LTD. STI.\r
+ MAHMUTBEY MAH. 2650.SOK. NO:21\r
+ ISTANBUL 34218\r
+ TR\r
+\r
+30-B1-B5 (hex) Arcadyan Corporation\r
+30B1B5 (base 16) Arcadyan Corporation\r
+ No.8, Sec.2, Guangfu Rd.\r
+ Hsinchu City Hsinchu 30071\r
+ TW\r
+\r
+64-07-F6 (hex) Samsung Electronics Co.,Ltd\r
+6407F6 (base 16) Samsung Electronics Co.,Ltd\r
+ 129, Samsung-ro, Youngtongl-Gu\r
+ Suwon Gyeonggi-Do 16677\r
+ KR\r
+\r
E0-CB-BC (hex) Cisco Meraki\r
E0CBBC (base 16) Cisco Meraki\r
500 Terry A. Francois Blvd\r
San Francisco 94158\r
US\r
\r
+D8-EC-E5 (hex) Zyxel Communications Corporation\r
+D8ECE5 (base 16) Zyxel Communications Corporation\r
+ No. 6 Innovation Road II, Science Park\r
+ Hsichu Taiwan 300\r
+ TW\r
+\r
+C4-70-AB (hex) Ruijie Networks Co.,LTD\r
+C470AB (base 16) Ruijie Networks Co.,LTD\r
+ No. 2, 7th floor, xingwangruijie, haixi hi-tech industrial park, high-tech zone, fuzhou city\r
+ Fuzhou Fujian 350002\r
+ CN\r
+\r
+CC-6B-1E (hex) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.\r
+CC6B1E (base 16) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.\r
+ B22 Building,NO.51 Tongle Road, Shajing Town, Jiangnan District, Nanning, Guangxi Province, China\r
+ Nanning Guangxi 530007\r
+ CN\r
+\r
+F0-D0-8C (hex) TCT mobile ltd\r
+F0D08C (base 16) TCT mobile ltd\r
+ No.86 hechang 7th road, zhongkai, Hi-Tech District\r
+ Hui Zhou Guang Dong 516006\r
+ CN\r
+\r
+84-90-00 (hex) Arnold&Richter Cine Technik GmbH & Co. Betriebs KG\r
+849000 (base 16) Arnold&Richter Cine Technik GmbH & Co. Betriebs KG\r
+ Herbert-Bayer-Str. 10\r
+ Munchen Bavaria 80807\r
+ DE\r
+\r
+30-F9-4B (hex) Universal Electronics, Inc.\r
+30F94B (base 16) Universal Electronics, Inc.\r
+ 201 E. Sandpointe Ave\r
+ Santa Ana CA 92707\r
+ US\r
+\r
+B4-8A-5F (hex) Juniper Networks\r
+B48A5F (base 16) Juniper Networks\r
+ 1133 Innovation Way\r
+ Sunnyvale CA 94089\r
+ US\r
+\r
+70-DF-F7 (hex) ARRIS Group, Inc.\r
+70DFF7 (base 16) ARRIS Group, Inc.\r
+ 6450 Sequence Drive\r
+ San Diego CA 92121\r
+ US\r
+\r
+00-E0-DF (hex) DZS GmbH\r
+00E0DF (base 16) DZS GmbH\r
+ Wohlenbergstrasse. 3\r
+ Hannover 30179\r
+ DE\r
+\r
+E0-E8-BB (hex) Unicom Vsens Telecommunications Co., Ltd.\r
+E0E8BB (base 16) Unicom Vsens Telecommunications Co., Ltd.\r
+ Room612,613,615,6Floors,Block3,Hengji center,N0.18 Jianguomen inner Street,Dondcheng Distict, Beijing,P.R.China\r
+ Beijing 100005\r
+ CN\r
+\r
+E4-C9-0B (hex) Radwin\r
+E4C90B (base 16) Radwin\r
+ Habarzel 27\r
+ Tel Aviv -- select -- 6971039\r
+ IL\r
+\r
+98-27-82 (hex) IEEE Registration Authority\r
+982782 (base 16) IEEE Registration Authority\r
+ 445 Hoes Lane\r
+ Piscataway NJ 08554\r
+ US\r
+\r
+38-A0-67 (hex) Nokia Solutions and Networks GmbH & Co. KG\r
+38A067 (base 16) Nokia Solutions and Networks GmbH & Co. KG\r
+ Werinherstrasse 91\r
+ München Bavaria D-81541\r
+ DE\r
+\r
+CC-81-2A (hex) vivo Mobile Communication Co., Ltd.\r
+CC812A (base 16) vivo Mobile Communication Co., Ltd.\r
+ #283,BBK Road\r
+ Wusha,Chang'An DongGuan City,Guangdong, 523860\r
+ CN\r
+\r
+7C-1B-93 (hex) Huawei Device Co., Ltd.\r
+7C1B93 (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+DC-2D-3C (hex) Huawei Device Co., Ltd.\r
+DC2D3C (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+04-11-19 (hex) IEEE Registration Authority\r
+041119 (base 16) IEEE Registration Authority\r
+ 445 Hoes Lane\r
+ Piscataway NJ 08554\r
+ US\r
+\r
+E4-55-A8 (hex) Cisco Meraki\r
+E455A8 (base 16) Cisco Meraki\r
+ 500 Terry A. Francois Blvd\r
+ San Francisco 94158\r
+ US\r
+\r
+08-81-B2 (hex) Logitech (China) Technology Co., Ltd\r
+0881B2 (base 16) Logitech (China) Technology Co., Ltd\r
+ 1111 Changshou Road\r
+ Shanghai 200001\r
+ CN\r
+\r
+C4-F1-74 (hex) eero inc.\r
+C4F174 (base 16) eero inc.\r
+ 660 3rd Street\r
+ San Francisco CA 94107\r
+ US\r
+\r
+28-D0-EA (hex) Intel Corporate\r
+28D0EA (base 16) Intel Corporate\r
+ Lot 8, Jalan Hi-Tech 2/3 \r
+ Kulim Kedah 09000\r
+ MY\r
+\r
+E0-0C-E5 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+E00CE5 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+28-41-EC (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+2841EC (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+7C-00-4D (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+7C004D (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+04-D3-20 (hex) ITEL MOBILE LIMITED\r
+04D320 (base 16) ITEL MOBILE LIMITED\r
+ RM B3 & B4 BLOCK B, KO FAI INDUSTRIAL BUILDING NO.7 KO FAI ROAD, YAU TONG, KLN, H.K\r
+ Hong Kong KOWLOON 999077\r
+ HK\r
+\r
+1C-99-57 (hex) Intel Corporate\r
+1C9957 (base 16) Intel Corporate\r
+ Lot 8, Jalan Hi-Tech 2/3 \r
+ Kulim Kedah 09000\r
+ MY\r
+\r
+F4-6B-8C (hex) Hon Hai Precision Ind. Co., Ltd.\r
+F46B8C (base 16) Hon Hai Precision Ind. Co., Ltd.\r
+ GuangDongShenZhen\r
+ ShenZhen GuangDong 518109\r
+ CN\r
+\r
+FC-34-97 (hex) ASUSTek COMPUTER INC.\r
+FC3497 (base 16) ASUSTek COMPUTER INC.\r
+ 15,Li-Te Rd., Peitou, Taipei 112, Taiwan\r
+ Taipei Taiwan 112\r
+ TW\r
+\r
+84-7A-B6 (hex) AltoBeam (China) Inc.\r
+847AB6 (base 16) AltoBeam (China) Inc.\r
+ B808, Tsinghua Tongfang Hi-Tech Plaza, Haidian\r
+ Beijing Beijing 100083\r
+ CN\r
+\r
+78-A6-A0 (hex) Hangzhou Ezviz Software Co.,Ltd.\r
+78A6A0 (base 16) Hangzhou Ezviz Software Co.,Ltd.\r
+ Room 302, Unit B, Building 2, 399 Danfeng Road,Binjiang District\r
+ Hangzhou Zhejiang 310051\r
+ CN\r
+\r
+48-51-CF (hex) Intelbras\r
+4851CF (base 16) Intelbras\r
+ BR 101, km 210, S/N°\r
+ São José Santa Catarina 88104800\r
+ BR\r
+\r
+4C-5D-3C (hex) Cisco Systems, Inc\r
+4C5D3C (base 16) Cisco Systems, Inc\r
+ 80 West Tasman Drive\r
+ San Jose CA 94568\r
+ US\r
+\r
+34-73-2D (hex) Cisco Systems, Inc\r
+34732D (base 16) Cisco Systems, Inc\r
+ 80 West Tasman Drive\r
+ San Jose CA 94568\r
+ US\r
+\r
+04-7B-CB (hex) Universal Global Scientific Industrial Co., Ltd.\r
+047BCB (base 16) Universal Global Scientific Industrial Co., Ltd.\r
+ 141, Lane 351, Taiping Road, Sec.1,Tsao Tuen\r
+ Nan-Tou Taiwan 54261\r
+ TW\r
+\r
+8C-34-46 (hex) Huawei Device Co., Ltd.\r
+8C3446 (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+80-47-86 (hex) Samsung Electronics Co.,Ltd\r
+804786 (base 16) Samsung Electronics Co.,Ltd\r
+ 129, Samsung-ro, Youngtongl-Gu\r
+ Suwon Gyeonggi-Do 16677\r
+ KR\r
+\r
+D4-47-5A (hex) ScreenBeam, Inc.\r
+D4475A (base 16) ScreenBeam, Inc.\r
+ 3301 Olcott St\r
+ Santa Clara CA 95054\r
+ US\r
+\r
+E4-41-64 (hex) Nokia\r
+E44164 (base 16) Nokia\r
+ 600 March Road\r
+ Kanata Ontario K2K 2E6\r
+ CA\r
+\r
+34-E9-FE (hex) Metis Co., Ltd.\r
+34E9FE (base 16) Metis Co., Ltd.\r
+ 25, Saenari-ro, Bundang-gu\r
+ Seongnam-si Gyeonggi-do 13509\r
+ KR\r
+\r
+AC-13-9C (hex) Adtran Inc\r
+AC139C (base 16) Adtran Inc\r
+ 901 Explorer Blvd.\r
+ Huntsville AL 35806-2807\r
+ US\r
+\r
+A4-CE-DA (hex) Arcadyan Corporation\r
+A4CEDA (base 16) Arcadyan Corporation\r
+ No.8, Sec.2, Guangfu Rd.\r
+ Hsinchu City Hsinchu 30071\r
+ TW\r
+\r
+00-C0-6A (hex) Zahner-Elektrik Ingeborg Zahner-Schiller GmbH & Co. KG.\r
+00C06A (base 16) Zahner-Elektrik Ingeborg Zahner-Schiller GmbH & Co. KG.\r
+ P.O. BOX 1846\r
+ \r
+ DE\r
+\r
+8C-43-61 (hex) Hailo Digital Hub GmbH & Co. KG\r
+8C4361 (base 16) Hailo Digital Hub GmbH & Co. KG\r
+ Lahnstrasse 3a\r
+ Giessen Hessen 35398\r
+ DE\r
+\r
+54-72-5E (hex) UNIONMAN TECHNOLOGY CO.,LTD\r
+54725E (base 16) UNIONMAN TECHNOLOGY CO.,LTD\r
+ No.5,Huitai Road,Huinan High-Tech Park,Huiao Highway\r
+ Huizhou Guangdong 516025\r
+ CN\r
+\r
+98-C3-D2 (hex) Ningbo Sanxing Medical Electric Co.,Ltd\r
+98C3D2 (base 16) Ningbo Sanxing Medical Electric Co.,Ltd\r
+ No.26 FengWan Road,Cicheng Town,Jiangbei District,Ningbo,China \r
+ Ningbo 315029\r
+ CN\r
+\r
+24-5D-FC (hex) IEEE Registration Authority\r
+245DFC (base 16) IEEE Registration Authority\r
+ 445 Hoes Lane\r
+ Piscataway NJ 08554\r
+ US\r
+\r
+9C-82-81 (hex) vivo Mobile Communication Co., Ltd.\r
+9C8281 (base 16) vivo Mobile Communication Co., Ltd.\r
+ #283,BBK Road\r
+ Wusha,Chang'An DongGuan City,Guangdong, 523860\r
+ CN\r
+\r
+48-7E-48 (hex) Earda Technologies co Ltd\r
+487E48 (base 16) Earda Technologies co Ltd\r
+ Block A,Lianfeng Creative Park, #2 Jisheng Rd., Nansha District\r
+ Guangzhou Guangdong 511455\r
+ CN\r
+\r
+E0-E3-7C (hex) Huawei Device Co., Ltd.\r
+E0E37C (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+24-18-C6 (hex) HUNAN FN-LINK TECHNOLOGY LIMITED\r
+2418C6 (base 16) HUNAN FN-LINK TECHNOLOGY LIMITED\r
+ No.8, Litong Road, Liuyan Economic & Tec\r
+ Changsha HUNAN 410329\r
+ CN\r
+\r
+30-78-D3 (hex) Virgilant Technologies Ltd.\r
+3078D3 (base 16) Virgilant Technologies Ltd.\r
+ 2F., No.3, Aly. 19, Lane 8, Tianmu E. Rd.,Shilin Dist., \r
+ Taipei City Taiwan 11153\r
+ TW\r
+\r
+60-18-95 (hex) Dell Inc.\r
+601895 (base 16) Dell Inc.\r
+ One Dell Way\r
+ Round Rock TX 78682\r
+ US\r
+\r
+E8-EA-4D (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+E8EA4D (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+3C-FF-D8 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+3CFFD8 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+4C-61-7E (hex) Huawei Device Co., Ltd.\r
+4C617E (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+B4-10-7B (hex) Texas Instruments\r
+B4107B (base 16) Texas Instruments\r
+ 12500 TI Blvd\r
+ Dallas TX 75243\r
+ US\r
+\r
+64-97-14 (hex) eero inc.\r
+649714 (base 16) eero inc.\r
+ 660 3rd Street\r
+ San Francisco CA 94107\r
+ US\r
+\r
+CC-86-EC (hex) Silicon Laboratories\r
+CC86EC (base 16) Silicon Laboratories\r
+ 400 West Cesar Chavez Street\r
+ Austin 78701\r
+ US\r
+\r
+40-41-01 (hex) Rockwell Automation\r
+404101 (base 16) Rockwell Automation\r
+ 1 Allen-Bradley Dr.\r
+ Mayfield Heights OH 44124-6118\r
+ US\r
+\r
+7C-55-A7 (hex) Kastle Systems\r
+7C55A7 (base 16) Kastle Systems\r
+ 6402 Arlington Blvd\r
+ Falls Church VA 22042\r
+ US\r
+\r
+40-BE-EE (hex) Shenzhen Yunding Information Technology Co.,Ltd\r
+40BEEE (base 16) Shenzhen Yunding Information Technology Co.,Ltd\r
+ 32G, Tower E, CR Land Building, Tong Gu Road 5#, Nanshan District,,Guangdong,CN\r
+ Shenzhen Guangdong 518000\r
+ CN\r
+\r
+A4-4C-62 (hex) Hangzhou Microimage Software Co., Ltd\r
+A44C62 (base 16) Hangzhou Microimage Software Co., Ltd\r
+ Room 313, Unit B, Building 2, 399 Danfeng Road, Binjiang District\r
+ Hangzhou Zhejiang 310051\r
+ CN\r
+\r
+FC-E8-06 (hex) Edifier International\r
+FCE806 (base 16) Edifier International\r
+ Suit 2207, 22nd floor, Tower II, Lippo centre, 89 Queensway\r
+ Hong Kong 070\r
+ CN\r
+\r
+F4-C7-95 (hex) WEY Technology AG\r
+F4C795 (base 16) WEY Technology AG\r
+ Dorfstrasse 57\r
+ Unterengstringen Zurich 8103\r
+ CH\r
+\r
+44-B4-62 (hex) Flextronics Tech.(Ind) Pvt Ltd\r
+44B462 (base 16) Flextronics Tech.(Ind) Pvt Ltd\r
+ 365, Benjamin Road\r
+ Sricity Vardahiah Palem(M),Chilamathur Village, Chittoor Distict 517646\r
+ IN\r
+\r
+F8-D4-78 (hex) Flextronics Tech.(Ind) Pvt Ltd\r
+F8D478 (base 16) Flextronics Tech.(Ind) Pvt Ltd\r
+ 365, Benjamin Road\r
+ Sricity Vardahiah Palem(M),Chilamathur Village, Chittoor Distict 517646\r
+ IN\r
+\r
+50-C2-ED (hex) GN Audio A/S\r
+50C2ED (base 16) GN Audio A/S\r
+ Lautrupbjerg 7\r
+ Ballerup DK-2750\r
+ DK\r
+\r
+90-A8-22 (hex) Amazon Technologies Inc.\r
+90A822 (base 16) Amazon Technologies Inc.\r
+ P.O Box 8102 \r
+ Reno NV 89507\r
+ US\r
+\r
+74-AD-98 (hex) Cisco Systems, Inc\r
+74AD98 (base 16) Cisco Systems, Inc\r
+ 80 West Tasman Drive\r
+ San Jose CA 94568\r
+ US\r
+\r
+84-8C-8D (hex) Apple, Inc.\r
+848C8D (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
+0C-5C-B5 (hex) IEEE Registration Authority\r
+0C5CB5 (base 16) IEEE Registration Authority\r
+ 445 Hoes Lane\r
+ Piscataway NJ 08554\r
+ US\r
+\r
+E8-4F-25 (hex) Murata Manufacturing Co., Ltd.\r
+E84F25 (base 16) Murata Manufacturing Co., Ltd.\r
+ 1-10-1, Higashikotari\r
+ Nagaokakyo-shi Kyoto 617-8555\r
+ JP\r
+\r
+04-25-E0 (hex) Taicang T&W Electronics\r
+0425E0 (base 16) Taicang T&W Electronics\r
+ 89# Jiang Nan RD\r
+ Suzhou Jiangsu 215412\r
+ CN\r
+\r
+30-85-EB (hex) Fiberhome Telecommunication Technologies Co.,LTD\r
+3085EB (base 16) Fiberhome Telecommunication Technologies Co.,LTD\r
+ No.5 DongXin Road\r
+ Wuhan Hubei 430074\r
+ CN\r
+\r
+84-06-FA (hex) Fiberhome Telecommunication Technologies Co.,LTD\r
+8406FA (base 16) Fiberhome Telecommunication Technologies Co.,LTD\r
+ No.5 DongXin Road\r
+ Wuhan Hubei 430074\r
+ CN\r
+\r
+B8-D4-3E (hex) vivo Mobile Communication Co., Ltd.\r
+B8D43E (base 16) vivo Mobile Communication Co., Ltd.\r
+ #283,BBK Road\r
+ Wusha,Chang'An DongGuan City,Guangdong, 523860\r
+ CN\r
+\r
+C0-DC-D7 (hex) Huawei Device Co., Ltd.\r
+C0DCD7 (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+30-37-B3 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+3037B3 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+14-CB-19 (hex) HP Inc.\r
+14CB19 (base 16) HP Inc.\r
+ 10300 Energy Dr\r
+ Spring TX 77389\r
+ US\r
+\r
+0C-E4-41 (hex) Apple, Inc.\r
+0CE441 (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
+B8-2A-A9 (hex) Apple, Inc.\r
+B82AA9 (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
+78-64-C0 (hex) Apple, Inc.\r
+7864C0 (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
+74-15-75 (hex) Xiaomi Communications Co Ltd\r
+741575 (base 16) Xiaomi Communications Co Ltd\r
+ The Rainbow City of China Resources\r
+ NO.68, Qinghe Middle Street Haidian District, Beijing 100085\r
+ CN\r
+\r
+38-52-47 (hex) Huawei Device Co., Ltd.\r
+385247 (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+E8-1C-D8 (hex) Apple, Inc.\r
+E81CD8 (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
+3C-06-30 (hex) Apple, Inc.\r
+3C0630 (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
+F4-02-28 (hex) SAMSUNG ELECTRO-MECHANICS(THAILAND)\r
+F40228 (base 16) SAMSUNG ELECTRO-MECHANICS(THAILAND)\r
+ 93Moo5T. Bangsamak SEMTHAI, WELLGROW INDUSTRIAL ESTATE\r
+ Bangpakong Chachoengsao 24180\r
+ TH\r
+\r
+0C-83-CC (hex) Alpha Networks Inc.\r
+0C83CC (base 16) Alpha Networks Inc.\r
+ No.8 Li-shing 7th Rd., Science-based Industrial Park, Hsinchu, Taiwan, R.O.C\r
+ Hsinchu Taiwan 300\r
+ TW\r
+\r
+EC-B9-70 (hex) Ruijie Networks Co.,LTD\r
+ECB970 (base 16) Ruijie Networks Co.,LTD\r
+ No. 2, 7th floor, xingwangruijie, haixi hi-tech industrial park, high-tech zone, fuzhou city\r
+ Fuzhou Fujian 350002\r
+ CN\r
+\r
+30-83-98 (hex) Espressif Inc.\r
+308398 (base 16) Espressif Inc.\r
+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area\r
+ Shanghai Shanghai 201203\r
+ CN\r
+\r
+F8-89-D2 (hex) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.\r
+F889D2 (base 16) CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.\r
+ B22 Building,NO.51 Tongle Road, Shajing Town, Jiangnan District, Nanning, Guangxi Province, China\r
+ Nanning Guangxi 530007\r
+ CN\r
+\r
+10-27-F5 (hex) TP-Link Corporation Limited\r
+1027F5 (base 16) TP-Link Corporation Limited\r
+ Room 901,9/F.New East Ocean Centre, 9 Science Museum Road\r
+ Tsim Sha Tsui Kowloon 999077\r
+ HK\r
+\r
+B0-4F-13 (hex) Dell Inc.\r
+B04F13 (base 16) Dell Inc.\r
+ One Dell Way\r
+ Round Rock TX 78682\r
+ US\r
+\r
+C0-4B-13 (hex) WonderSound Technology Co., Ltd\r
+C04B13 (base 16) WonderSound Technology Co., Ltd\r
+ 10A, Center of Shenmao, News Road 59, Meiling community, Lianhua Street, Futian district\r
+ Shenzhen 518034\r
+ CN\r
+\r
+9C-7F-81 (hex) SHENZHEN FAST TECHNOLOGIES CO.,LTD\r
+9C7F81 (base 16) SHENZHEN FAST TECHNOLOGIES CO.,LTD\r
+ Room 202,Building No.5,Section 30,No.2 of Kefa Road,Nanshan District,Shenzhen,P.R.China\r
+ Shenzhen Guangdong 518057\r
+ CN\r
+\r
+C4-BC-D7 (hex) New Ryatek\r
+C4BCD7 (base 16) New Ryatek\r
+ Room 103, 1st floor, building 19, yard 1, Baosheng South Road, Haidian District, Beijing\r
+ Beijing Beijing 100192\r
+ CN\r
+\r
+C0-AE-FD (hex) Shenzhen HC-WLAN Technology Co.,Ltd\r
+C0AEFD (base 16) Shenzhen HC-WLAN Technology Co.,Ltd\r
+ Room 201E, Block D, Donghai Wang Industrial Zone, No. 369, Bulong Road, Bantian Street, Longgang District\r
+ Shenzhen Guangdong 518129\r
+ CN\r
+\r
+20-6A-94 (hex) Hitron Technologies. Inc\r
+206A94 (base 16) Hitron Technologies. Inc\r
+ No. 1-8, Lising 1st Rd. Hsinchu Science Park, Hsinchu, 300, Taiwan, R.O.C\r
+ Hsin-chu Taiwan 300\r
+ TW\r
+\r
+30-95-87 (hex) HUNAN FN-LINK TECHNOLOGY LIMITED\r
+309587 (base 16) HUNAN FN-LINK TECHNOLOGY LIMITED\r
+ No.8, Litong Road, Liuyan Economic & Tec\r
+ Changsha HUNAN 410329\r
+ CN\r
+\r
+DC-87-CB (hex) Beijing Perfectek Technologies Co., Ltd.\r
+DC87CB (base 16) Beijing Perfectek Technologies Co., Ltd.\r
+ A-17, No. 101, 6F, Building 24, No. 68, Beiqing Road, Haidian District\r
+ Beijing Beijing 100094\r
+ CN\r
+\r
+10-2D-41 (hex) Sichuan AI-Link Technology Co., Ltd.\r
+102D41 (base 16) Sichuan AI-Link Technology Co., Ltd.\r
+ Anzhou, Industrial Park\r
+ Mianyang Sichuan 622650\r
+ CN\r
+\r
+64-27-53 (hex) Huawei Device Co., Ltd.\r
+642753 (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+7C-F6-66 (hex) Tuya Smart Inc.\r
+7CF666 (base 16) Tuya Smart Inc.\r
+ 160 Greentree Drive, Suite 101\r
+ Dover DE 19904\r
+ US\r
+\r
+28-53-4E (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+28534E (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+5C-B0-0A (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+5CB00A (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+20-CE-2A (hex) IEEE Registration Authority\r
+20CE2A (base 16) IEEE Registration Authority\r
+ 445 Hoes Lane\r
+ Piscataway NJ 08554\r
+ US\r
+\r
7C-8A-E1 (hex) COMPAL INFORMATION (KUNSHAN) CO., LTD. \r
7C8AE1 (base 16) COMPAL INFORMATION (KUNSHAN) CO., LTD. \r
NO. 25, THE 3RD Street KUNSHAN EXPORT PROCESSING ZONE \r
Wuhan Hubei 430074\r
CN\r
\r
-38-AF-D0 (hex) Private\r
-38AFD0 (base 16) Private\r
-\r
80-D3-36 (hex) CERN\r
80D336 (base 16) CERN\r
CH-1211 \r
Kulim Kedah 09000\r
MY\r
\r
-00-A0-0E (hex) NetAlly\r
-00A00E (base 16) NetAlly\r
- 310 Littleton Road\r
- Westford MA 01886 \r
- US\r
-\r
00-C0-17 (hex) NetAlly\r
00C017 (base 16) NetAlly\r
2075 Research Parkway\r
Bucheon-shi Kyunggi-do 421-809\r
KR\r
\r
-00-14-1D (hex) LTI-Motion GmbH\r
-00141D (base 16) LTI-Motion GmbH\r
- Gewerbestrasse 5-9\r
- Lahnau Hessen 35633\r
- DE\r
-\r
00-14-12 (hex) S-TEC electronics AG\r
001412 (base 16) S-TEC electronics AG\r
Industriestrasse 49\r
Dover DE 19904\r
US\r
\r
-14-98-77 (hex) Apple, Inc.\r
-149877 (base 16) Apple, Inc.\r
- 1 Infinite Loop\r
- Cupertino CA 95014\r
+08-A7-C0 (hex) Technicolor CH USA Inc.\r
+08A7C0 (base 16) Technicolor CH USA Inc.\r
+ 5030 Sugarloaf Parkway Bldg 6 \r
+ Lawrenceville GA 30044\r
US\r
\r
-88-66-5A (hex) Apple, Inc.\r
-88665A (base 16) Apple, Inc.\r
- 1 Infinite Loop\r
- Cupertino CA 95014\r
- US\r
+28-5B-0C (hex) Sichuan Jiuzhou Electronic Technology Co., Ltd.\r
+285B0C (base 16) Sichuan Jiuzhou Electronic Technology Co., Ltd.\r
+ No. 259, Jiuzhou Road\r
+ Mianyang City Sichuan Province 621000\r
+ CN\r
\r
-B0-E5-F9 (hex) Apple, Inc.\r
-B0E5F9 (base 16) Apple, Inc.\r
- 1 Infinite Loop\r
- Cupertino CA 95014\r
- US\r
+14-89-CB (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+1489CB (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+6C-26-36 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+6C2636 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+48-68-4A (hex) Intel Corporate\r
+48684A (base 16) Intel Corporate\r
+ Lot 8, Jalan Hi-Tech 2/3 \r
+ Kulim Kedah 09000\r
+ MY\r
+\r
+BC-F1-71 (hex) Intel Corporate\r
+BCF171 (base 16) Intel Corporate\r
+ Lot 8, Jalan Hi-Tech 2/3 \r
+ Kulim Kedah 09000\r
+ MY\r
\r
84-71-6A (hex) Huawei Device Co., Ltd.\r
84716A (base 16) Huawei Device Co., Ltd.\r
Dongguan Guangdong 523808\r
CN\r
\r
+58-56-C2 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+5856C2 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+A0-36-79 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+A03679 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+B8-D6-F6 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+B8D6F6 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+2C-52-AF (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+2C52AF (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+14-98-77 (hex) Apple, Inc.\r
+149877 (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
+88-66-5A (hex) Apple, Inc.\r
+88665A (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
+B0-E5-F9 (hex) Apple, Inc.\r
+B0E5F9 (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
AC-17-C8 (hex) Cisco Meraki\r
AC17C8 (base 16) Cisco Meraki\r
500 Terry A. Francois Blvd\r
500 Terry A. Francois Blvd\r
San Francisco 94158\r
US\r
+\r
+58-FB-96 (hex) Ruckus Wireless\r
+58FB96 (base 16) Ruckus Wireless\r
+ 350 West Java Drive\r
+ Sunnyvale CA 94089\r
+ US\r
+\r
+F0-62-5A (hex) Realme Chongqing Mobile Telecommunications Corp.,Ltd.\r
+F0625A (base 16) Realme Chongqing Mobile Telecommunications Corp.,Ltd.\r
+ No.178 Yulong Avenue, Yufengshan, Yubei District, Chongqing.\r
+ Chongqing China 401120\r
+ CN\r
+\r
+64-E0-AB (hex) UNIONMAN TECHNOLOGY CO.,LTD\r
+64E0AB (base 16) UNIONMAN TECHNOLOGY CO.,LTD\r
+ No.5,Huitai Road,Huinan High-Tech Park,Huiao Highway\r
+ Huizhou Guangdong 516025\r
+ CN\r
+\r
+AC-23-16 (hex) Mist Systems, Inc.\r
+AC2316 (base 16) Mist Systems, Inc.\r
+ 1601 South De Anza Blvd, Suite 248\r
+ Cupertino CA 95014\r
+ US\r
+\r
+2C-00-AB (hex) ARRIS Group, Inc.\r
+2C00AB (base 16) ARRIS Group, Inc.\r
+ 6450 Sequence Drive\r
+ San Diego CA 92121\r
+ US\r
+\r
+3C-E3-6B (hex) Zhejiang Dahua Technology Co., Ltd.\r
+3CE36B (base 16) Zhejiang Dahua Technology Co., Ltd.\r
+ No.1199,Waterfront Road \r
+ Hangzhou Zhejiang 310053\r
+ CN\r
+\r
+20-3B-69 (hex) vivo Mobile Communication Co., Ltd.\r
+203B69 (base 16) vivo Mobile Communication Co., Ltd.\r
+ #283,BBK Road\r
+ Wusha,Chang'An DongGuan City,Guangdong, 523860\r
+ CN\r
+\r
+5C-17-20 (hex) Huawei Device Co., Ltd.\r
+5C1720 (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+98-3F-66 (hex) Wuhan Funshion Online Technologies Co.,Ltd\r
+983F66 (base 16) Wuhan Funshion Online Technologies Co.,Ltd\r
+ 5th Floor,Financial Port Building A9,No.77 Optical Valley Avenue, East Lake High-Tech Development Zone, Wuhan\r
+ Wuhan CN/Hubei 430000\r
+ CN\r
+\r
+60-5E-4F (hex) Huawei Device Co., Ltd.\r
+605E4F (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+1C-E6-AD (hex) Huawei Device Co., Ltd.\r
+1CE6AD (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+50-97-07 (hex) Xiamen Paperang Technology Co.,Ltd.\r
+509707 (base 16) Xiamen Paperang Technology Co.,Ltd.\r
+ Unit 1702-1703, 17/F, No.55, North Chengyi Road,Xiamen Software Park Phase 3\r
+ Xiamen Fujian 361021\r
+ CN\r
+\r
+EC-63-D7 (hex) Intel Corporate\r
+EC63D7 (base 16) Intel Corporate\r
+ Lot 8, Jalan Hi-Tech 2/3 \r
+ Kulim Kedah 09000\r
+ MY\r
+\r
+14-85-7F (hex) Intel Corporate\r
+14857F (base 16) Intel Corporate\r
+ Lot 8, Jalan Hi-Tech 2/3 \r
+ Kulim Kedah 09000\r
+ MY\r
+\r
+7C-9F-07 (hex) CIG SHANGHAI CO LTD\r
+7C9F07 (base 16) CIG SHANGHAI CO LTD\r
+ 5th Floor, Building 8 No 2388 Chenhang Road\r
+ SHANGHAI 201114\r
+ CN\r
+\r
+1C-87-E3 (hex) TECNO MOBILE LIMITED\r
+1C87E3 (base 16) TECNO MOBILE LIMITED\r
+ ROOMS 05-15, 13A/F., SOUTH TOWER, WORLD FINANCE CENTRE, HARBOUR CITY, 17 CANTON ROAD, TSIM SHA TSUI, KOWLOON, HONG KONG\r
+ Hong Kong Hong Kong 999077\r
+ HK\r
+\r
+94-E2-3C (hex) Intel Corporate\r
+94E23C (base 16) Intel Corporate\r
+ Lot 8, Jalan Hi-Tech 2/3 \r
+ Kulim Kedah 09000\r
+ MY\r
+\r
+20-B7-30 (hex) TeconGroup, Inc\r
+20B730 (base 16) TeconGroup, Inc\r
+ 3rd Khoroshevskaya str., 20, floor 1, room 112\r
+ Moscow 123423\r
+ RU\r
+\r
+48-88-99 (hex) Shenzhen SuperElectron Technology Co.,Ltd.\r
+488899 (base 16) Shenzhen SuperElectron Technology Co.,Ltd.\r
+ 1213-1214, haosheng business center, dongbin road, nanshan street, nanshan district, shenzhen city\r
+ Shenzhen Guangdong 518000\r
+ CN\r
+\r
+DC-B1-31 (hex) SHENZHEN HUARUIAN TECHNOLOGY CO.,LTD\r
+DCB131 (base 16) SHENZHEN HUARUIAN TECHNOLOGY CO.,LTD\r
+ Floo2nd and 3rd floor, building A, Huixin Industrial Park, No.31 Yonghe Road, Heping community, Fuhai street, Bao'an District, Shenzhen, China\r
+ Shenzhen Guangdong 518101\r
+ CN\r
+\r
+84-3B-10 (hex) Lv switch Inc.\r
+843B10 (base 16) Lv switch Inc.\r
+ F1 building,New light source base Luocun town,Nanhai district\r
+ Foshan Guangdong 528000\r
+ CN\r
+\r
+94-A4-F9 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+94A4F9 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+6C-34-91 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+6C3491 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+E8-4D-74 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+E84D74 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+CC-89-5E (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+CC895E (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+80-44-FD (hex) China Mobile (Hangzhou) Information Technology Co., Ltd.\r
+8044FD (base 16) China Mobile (Hangzhou) Information Technology Co., Ltd.\r
+ No. 1600 Yuhangtang Road, Wuchang Street, Yuhang District, Hangzhou, Zhejiang\r
+ Hangzhou Zhejiang 310000\r
+ CN\r
+\r
+F4-6A-D7 (hex) Microsoft Corporation\r
+F46AD7 (base 16) Microsoft Corporation\r
+ One Microsoft Way\r
+ REDMOND WA 98052\r
+ US\r
+\r
+48-1F-2D (hex) Shenzhen Jie Shi Lian Industrial Co.,LTD\r
+481F2D (base 16) Shenzhen Jie Shi Lian Industrial Co.,LTD\r
+ 6F,C Building,Jinao Industrial Park,Juling Rd,Guanlan Town,Longhua\r
+ Shenzhen Guangdong 518000\r
+ CN\r
+\r
+8C-73-A0 (hex) Fiberhome Telecommunication Technologies Co.,LTD\r
+8C73A0 (base 16) Fiberhome Telecommunication Technologies Co.,LTD\r
+ No.5 DongXin Road\r
+ Wuhan Hubei 430074\r
+ CN\r
+\r
+14-09-B4 (hex) zte corporation\r
+1409B4 (base 16) zte corporation\r
+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China\r
+ shenzhen guangdong 518057\r
+ CN\r
+\r
+10-10-81 (hex) zte corporation\r
+101081 (base 16) zte corporation\r
+ 12/F.,zte R&D building ,kejinan Road,Shenzhen,P.R.China\r
+ shenzhen guangdong 518057\r
+ CN\r
+\r
+78-CF-F9 (hex) Huawei Device Co., Ltd.\r
+78CFF9 (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+A8-E8-1E (hex) ATW TECHNOLOGY, INC.\r
+A8E81E (base 16) ATW TECHNOLOGY, INC.\r
+ 1F, No.236 Ba’ai Street, Shulin District\r
+ New Taipei City 23845\r
+ TW\r
+\r
+F8-85-F9 (hex) Calix Inc.\r
+F885F9 (base 16) Calix Inc.\r
+ 2777 Orchard Pkwy\r
+ San Jose CA 95131\r
+ US\r
+\r
+CC-88-C7 (hex) Aruba, a Hewlett Packard Enterprise Company\r
+CC88C7 (base 16) Aruba, a Hewlett Packard Enterprise Company\r
+ 3333 Scott Blvd\r
+ Santa Clara CA 95054\r
+ US\r
+\r
+F8-1A-2B (hex) Google, Inc.\r
+F81A2B (base 16) Google, Inc.\r
+ 1600 Amphitheatre Parkway\r
+ Mountain View CA 94043\r
+ US\r
+\r
+F4-A8-0D (hex) Wistron InfoComm(Kunshan)Co.,Ltd.\r
+F4A80D (base 16) Wistron InfoComm(Kunshan)Co.,Ltd.\r
+ 168# First Avenue,Kunshan Integrated Free Trade Zone,Kunshan,Jiangsu,China\r
+ Kunshan Jiangsu 215300\r
+ CN\r
+\r
+08-A1-89 (hex) Hangzhou Hikvision Digital Technology Co.,Ltd.\r
+08A189 (base 16) Hangzhou Hikvision Digital Technology Co.,Ltd.\r
+ No.555 Qianmo Road\r
+ Hangzhou Zhejiang 310052\r
+ CN\r
+\r
+80-F3-EF (hex) Facebook Technologies, LLC\r
+80F3EF (base 16) Facebook Technologies, LLC\r
+ 1601 Willow Rd\r
+ Menlo Park CA 94025\r
+ US\r
+\r
+3C-A8-ED (hex) smart light technology\r
+3CA8ED (base 16) smart light technology\r
+ 172 LSro\r
+ Gunpo Gyeonggido 15807\r
+ KR\r
+\r
+04-C2-9B (hex) Aura Home, Inc.\r
+04C29B (base 16) Aura Home, Inc.\r
+ 50 Eldridge Street, Suite 5D\r
+ New York NY 10002\r
+ US\r
+\r
+14-3B-42 (hex) Realfit(Shenzhen) Intelligent Technology Co., Ltd\r
+143B42 (base 16) Realfit(Shenzhen) Intelligent Technology Co., Ltd\r
+ Room 201, building a, No.1 Qianwan 1st Road, Shenzhen Hong Kong cooperation zone, Qianhai\r
+ Shenzhen Guangdong 518000\r
+ CN\r
+\r
+EC-2E-98 (hex) AzureWave Technology Inc.\r
+EC2E98 (base 16) AzureWave Technology Inc.\r
+ 8F., No. 94, Baozhong Rd.\r
+ New Taipei City Taiwan 231\r
+ TW\r
+\r
+38-F3-AB (hex) LCFC(HeFei) Electronics Technology co., ltd\r
+38F3AB (base 16) LCFC(HeFei) Electronics Technology co., ltd\r
+ YunGu Road 3188-1\r
+ Hefei Anhui 230000\r
+ CN\r
+\r
+50-AE-86 (hex) Linkintec Co., Ltd\r
+50AE86 (base 16) Linkintec Co., Ltd\r
+ 3rd floor, building A3, phase I, Zhihui Industrial Park, intersection of Chongqing Road and Yan'an Road, Baohe Economic Development Zone\r
+ Hefei City Anhui 230041\r
+ CN\r
+\r
+38-B3-F7 (hex) Huawei Device Co., Ltd.\r
+38B3F7 (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+84-E9-86 (hex) Huawei Device Co., Ltd.\r
+84E986 (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+AC-1F-0F (hex) Texas Instruments\r
+AC1F0F (base 16) Texas Instruments\r
+ 12500 TI Blvd\r
+ Dallas TX 75243\r
+ US\r
+\r
+74-D2-85 (hex) Texas Instruments\r
+74D285 (base 16) Texas Instruments\r
+ 12500 TI Blvd\r
+ Dallas TX 75243\r
+ US\r
+\r
+60-15-92 (hex) IEEE Registration Authority\r
+601592 (base 16) IEEE Registration Authority\r
+ 445 Hoes Lane\r
+ Piscataway NJ 08554\r
+ US\r
+\r
+10-C9-CA (hex) Ace Technology Corp.\r
+10C9CA (base 16) Ace Technology Corp.\r
+ 237, Namdongseo-ro, Namdong-gu\r
+ Incheon 21634\r
+ KR\r
+\r
+BC-FA-B8 (hex) Guangzhou Shiyuan Electronic Technology Company Limited\r
+BCFAB8 (base 16) Guangzhou Shiyuan Electronic Technology Company Limited\r
+ No.6, 4th Yunpu Road, Yunpu industry District\r
+ Guangzhou Guangdong 510530\r
+ CN\r
+\r
+D4-77-98 (hex) Cisco Systems, Inc\r
+D47798 (base 16) Cisco Systems, Inc\r
+ 80 West Tasman Drive\r
+ San Jose CA 94568\r
+ US\r
+\r
+A0-4A-5E (hex) Microsoft Corporation\r
+A04A5E (base 16) Microsoft Corporation\r
+ One Microsoft Way\r
+ REDMOND WA 98052\r
+ US\r
+\r
+EC-02-73 (hex) Aruba, a Hewlett Packard Enterprise Company\r
+EC0273 (base 16) Aruba, a Hewlett Packard Enterprise Company\r
+ 3333 Scott Blvd\r
+ Santa Clara CA 95054\r
+ US\r
+\r
+F4-B1-C2 (hex) Zhejiang Dahua Technology Co., Ltd.\r
+F4B1C2 (base 16) Zhejiang Dahua Technology Co., Ltd.\r
+ No.1199,Waterfront Road \r
+ Hangzhou Zhejiang 310053\r
+ CN\r
+\r
+A4-DA-D4 (hex) Yamato Denki Co.,Ltd.\r
+A4DAD4 (base 16) Yamato Denki Co.,Ltd.\r
+ 3-2-14,Koyama\r
+ Shinagawa-ku,Tokyo 142-0062\r
+ JP\r
+\r
+10-94-97 (hex) Logitech Hong Kong\r
+109497 (base 16) Logitech Hong Kong\r
+ Room 1002-1003, 10/F, Tower 1, Cheung Sha Wan Plaza, 833 Cheung Sha Wan Road, Kowloon, Hong Kong\r
+ Hong Kong NA\r
+ HK\r
+\r
+00-14-1D (hex) KEBA Industrial Automation Germany GmbH\r
+00141D (base 16) KEBA Industrial Automation Germany GmbH\r
+ Gewerbestrasse 5-9\r
+ Lahnau Hessen 35633\r
+ DE\r
+\r
+E0-DA-90 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+E0DA90 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+A4-A4-6B (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+A4A46B (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+C0-47-54 (hex) vivo Mobile Communication Co., Ltd.\r
+C04754 (base 16) vivo Mobile Communication Co., Ltd.\r
+ #283,BBK Road\r
+ Wusha,Chang'An DongGuan City,Guangdong, 523860\r
+ CN\r
+\r
+A0-D7-A0 (hex) Huawei Device Co., Ltd.\r
+A0D7A0 (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+40-E6-4B (hex) Apple, Inc.\r
+40E64B (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
+B4-FA-48 (hex) Apple, Inc.\r
+B4FA48 (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
+94-3C-C6 (hex) Espressif Inc.\r
+943CC6 (base 16) Espressif Inc.\r
+ Room 204, Building 2, 690 Bibo Rd, Pudong New Area\r
+ Shanghai Shanghai 201203\r
+ CN\r
+\r
+8C-83-FC (hex) Axioma Metering UAB\r
+8C83FC (base 16) Axioma Metering UAB\r
+ Veterinaru str. 52\r
+ Biruliskes Kaunas district LT-54469\r
+ LT\r
+\r
+F0-2F-4B (hex) Apple, Inc.\r
+F02F4B (base 16) Apple, Inc.\r
+ 1 Infinite Loop\r
+ Cupertino CA 95014\r
+ US\r
+\r
+60-A4-B7 (hex) TP-Link Corporation Limited\r
+60A4B7 (base 16) TP-Link Corporation Limited\r
+ Room 901,9/F.New East Ocean Centre, 9 Science Museum Road\r
+ Tsim Sha Tsui Kowloon 999077\r
+ HK\r
+\r
+8C-D9-D6 (hex) Xiaomi Communications Co Ltd\r
+8CD9D6 (base 16) Xiaomi Communications Co Ltd\r
+ The Rainbow City of China Resources\r
+ NO.68, Qinghe Middle Street Haidian District, Beijing 100085\r
+ CN\r
+\r
+60-C5-E6 (hex) Skullcandy\r
+60C5E6 (base 16) Skullcandy\r
+ 6301 N. Landmark Dr.\r
+ Park City 84098\r
+ US\r
+\r
+38-F3-FB (hex) Asperiq\r
+38F3FB (base 16) Asperiq\r
+ Finngatan 8\r
+ Lund SE-22362\r
+ SE\r
+\r
+A4-58-02 (hex) SHIN-IL TECH\r
+A45802 (base 16) SHIN-IL TECH\r
+ 711 HO,DAEMYEONG BELLI ON,10, Gyeongin-ro 53ga-gil, Guro-gu\r
+ Seoul KS013\r
+ KR\r
+\r
+38-AF-D0 (hex) Nevro\r
+38AFD0 (base 16) Nevro\r
+ 1800 Bridge Pkwy\r
+ Redwood City CA 94065\r
+ US\r
+\r
+00-A0-0E (hex) NETSCOUT SYSTEMS INC\r
+00A00E (base 16) NETSCOUT SYSTEMS INC\r
+ 310 Littleton Road\r
+ Westford MA 01886 \r
+ US\r
+\r
+30-A6-12 (hex) ShenZhen Hugsun Technology Co.,Ltd.\r
+30A612 (base 16) ShenZhen Hugsun Technology Co.,Ltd.\r
+ 413~415 Room, 4/F, No.6 Bldg., TongFuYu Industrial Park, Dalang Street, 518109, Longhua New District,\r
+ ShengZhen GuangDong 518109\r
+ CN\r
+\r
+EC-B4-E8 (hex) Wistron Mexico SA de CV\r
+ECB4E8 (base 16) Wistron Mexico SA de CV\r
+ Baudelio Perez Mucharras #420 Col Paseos de Zaragoza \r
+ ciudad Juarez Chihuahua 32550\r
+ MX\r
+\r
+10-38-1F (hex) Sichuan AI-Link Technology Co., Ltd.\r
+10381F (base 16) Sichuan AI-Link Technology Co., Ltd.\r
+ Anzhou, Industrial Park\r
+ Mianyang Sichuan 622650\r
+ CN\r
+\r
+3C-7A-C4 (hex) Chemtronics\r
+3C7AC4 (base 16) Chemtronics\r
+ junho.hong@chemtronics.co.kr\r
+ Bundang-gu Gyeonggi-do 13493\r
+ KR\r
+\r
+54-14-F3 (hex) Intel Corporate\r
+5414F3 (base 16) Intel Corporate\r
+ Lot 8, Jalan Hi-Tech 2/3 \r
+ Kulim Kedah 09000\r
+ MY\r
+\r
+18-BB-41 (hex) Huawei Device Co., Ltd.\r
+18BB41 (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+78-18-A8 (hex) Huawei Device Co., Ltd.\r
+7818A8 (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+80-72-64 (hex) Huawei Device Co., Ltd.\r
+807264 (base 16) Huawei Device Co., Ltd.\r
+ No.2 of Xincheng Road, Songshan Lake Zone\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+E8-F6-54 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+E8F654 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+20-87-EC (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+2087EC (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+54-F6-E2 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+54F6E2 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+A8-50-81 (hex) HUAWEI TECHNOLOGIES CO.,LTD\r
+A85081 (base 16) HUAWEI TECHNOLOGIES CO.,LTD\r
+ No.2 Xin Cheng Road, Room R6,Songshan Lake Technology Park\r
+ Dongguan 523808\r
+ CN\r
+\r
+6C-FE-54 (hex) Intel Corporate\r
+6CFE54 (base 16) Intel Corporate\r
+ Lot 8, Jalan Hi-Tech 2/3 \r
+ Kulim Kedah 09000\r
+ MY\r
+\r
+8C-36-7A (hex) Palo Alto Networks\r
+8C367A (base 16) Palo Alto Networks\r
+ 3000 Tannery Way\r
+ Santa Clara CA 95054\r
+ US\r
Shenzhen 518000\r
CN\r
\r
-8C-19-2D (hex) DataRemote Inc.\r
-200000-2FFFFF (base 16) DataRemote Inc.\r
- 19301 SW 106th Ave Suite 6\r
- Miami FL 33157\r
- US\r
-\r
D0-D9-4F (hex) Perfant Technology Co., Ltd\r
000000-0FFFFF (base 16) Perfant Technology Co., Ltd\r
Guo Ren Tong Xin B317,Ke Ji Zhong San Lu,Nanshan,Shenzhen,Guangdong,China\r
NINGBO ZHEJIANG PROVINCE 315191\r
CN\r
\r
+44-6F-D8 (hex) Changzhou Haitu Electronic Technology Co.,Ltd\r
+C00000-CFFFFF (base 16) Changzhou Haitu Electronic Technology Co.,Ltd\r
+ Building 47, Hang Seng Science park, Tianning District\r
+ Changzhou Jiangsu 213000\r
+ CN\r
+\r
+98-27-82 (hex) KORTEK CORPORATION\r
+700000-7FFFFF (base 16) KORTEK CORPORATION\r
+ 26, Venture-ro24beon-gil, Yeonsu-gu\r
+ Incheon 22011\r
+ KR\r
+\r
+98-27-82 (hex) Dspread Technology (Beijing) Inc.\r
+400000-4FFFFF (base 16) Dspread Technology (Beijing) Inc.\r
+ Jingxin Building, 2045 Suite , Chaoyang District\r
+ Beijing 100027\r
+ CN\r
+\r
+8C-19-2D (hex) DataRemote Inc.\r
+200000-2FFFFF (base 16) DataRemote Inc.\r
+ 18001 Old Cutler Rd. Suite 600\r
+ Palmetto Bay FL 33157\r
+ US\r
+\r
+04-11-19 (hex) Herrick Tech Labs\r
+700000-7FFFFF (base 16) Herrick Tech Labs\r
+ 20201 Century Blvd.\r
+ Germantown MD 20874\r
+ US\r
+\r
+E8-6C-C7 (hex) Limited Liability Company M.S.Korp\r
+C00000-CFFFFF (base 16) Limited Liability Company M.S.Korp\r
+ Mironovskaya st., 33, bldg.26, floor 4, office 5\r
+ Moscow Russian Federation 105318\r
+ RU\r
+\r
+E8-6C-C7 (hex) Trapeze Switzerland GmbH\r
+000000-0FFFFF (base 16) Trapeze Switzerland GmbH\r
+ Industrieplatz 3.\r
+ Neuhausen am Rheinfall Schaffhausen 8212\r
+ CH\r
+\r
+E8-6C-C7 (hex) Lighthouse EIP\r
+800000-8FFFFF (base 16) Lighthouse EIP\r
+ 21370 Heywood Avenue\r
+ Lakeville MN 55044\r
+ US\r
+\r
+E8-6C-C7 (hex) Koal Software Co., Ltd\r
+400000-4FFFFF (base 16) Koal Software Co., Ltd\r
+ Floor 6, Building 4, Lane 299, Jiangchang West Road, Jing 'an District\r
+ Shanghai Shanghai 200436\r
+ CN\r
+\r
+E8-6C-C7 (hex) Xirgo Technologies LLC\r
+200000-2FFFFF (base 16) Xirgo Technologies LLC\r
+ 188 Camino Ruiz\r
+ Camarillo CA 93012\r
+ US\r
+\r
+24-5D-FC (hex) Cosmicnode\r
+800000-8FFFFF (base 16) Cosmicnode\r
+ Zandstrand\r
+ Eindhoven North Brabant 5658BJ\r
+ NL\r
+\r
+24-5D-FC (hex) Suzhou Jiangzhi electronic technology co., Ltd\r
+400000-4FFFFF (base 16) Suzhou Jiangzhi electronic technology co., Ltd\r
+ Room 303, Building 2, No.88 Baifu Road, Kunshan Development Zone\r
+ Kunshan Jiangsu 215300\r
+ CN\r
+\r
+60-15-92 (hex) S Labs sp. z o.o.\r
+000000-0FFFFF (base 16) S Labs sp. z o.o.\r
+ Dworska 1a/1u\r
+ Kraków Lesser Poland 30-314\r
+ PL\r
+\r
+60-15-92 (hex) Annapurna labs\r
+B00000-BFFFFF (base 16) Annapurna labs\r
+ Matam Scientific Industries Center, Building 8.2\r
+ Mail box 15123 Haifa 3508409\r
+ IL\r
+\r
+0C-5C-B5 (hex) The Raymond Corporation\r
+500000-5FFFFF (base 16) The Raymond Corporation\r
+ 22 South Canal St\r
+ Greene NY 13778\r
+ US\r
+\r
+60-15-92 (hex) Zaptec\r
+400000-4FFFFF (base 16) Zaptec\r
+ Richard Johnsensgate 4\r
+ Stavanger Rogaland N-4021\r
+ NO\r
+\r
+1C-A0-EF (hex) Shenzhen Liandian Communication Technology Co.LTD\r
+D00000-DFFFFF (base 16) Shenzhen Liandian Communication Technology Co.LTD\r
+ 1307, building A4, workshop 2, LiLang International Jewelry Industrial Park, 31 Bulan Road, xialilang community, Nanwan street, Longgang District\r
+ Shenzhen Guangdong 518112\r
+ CN\r
+\r
+0C-5C-B5 (hex) ADI\r
+B00000-BFFFFF (base 16) ADI\r
+ 2 Crest Hollow Lane\r
+ Manorville NY 11949\r
+ US\r
+\r
+1C-A0-EF (hex) Wisnu and Supak Co.,Ltd.\r
+100000-1FFFFF (base 16) Wisnu and Supak Co.,Ltd.\r
+ 102/111-112 Mooban Sinpattanatanee,, Tessabansongkroh Road., Ladyao, Jatujak,\r
+ Jatujak Bangkok Metropolis 10900\r
+ TH\r
+\r
4C-4B-F9 (hex) Shenzhen dingsheng technology co., LTD\r
400000-4FFFFF (base 16) Shenzhen dingsheng technology co., LTD\r
Floor 3, building 5, kaijeda industrial zone, no.97, huaxing road, langkou community, dalang street, longhua district\r
San Jose CA 95113\r
US\r
\r
-F0-23-B9 (hex) Private\r
-D00000-DFFFFF (base 16) Private\r
-\r
B0-FD-0B (hex) IDspire Corporation Ltd.\r
100000-1FFFFF (base 16) IDspire Corporation Ltd.\r
9F, No. 266, Sec. 1, Wenhua Rd., Banqiao Dist.\r
SAN DIEGO CA 92123\r
US\r
\r
-38-B8-EB (hex) Private\r
-700000-7FFFFF (base 16) Private\r
-\r
4C-BC-98 (hex) Dongguan SmartAction Technology Co.,Ltd\r
B00000-BFFFFF (base 16) Dongguan SmartAction Technology Co.,Ltd\r
Room1109,Building D,First Place,Nancheng District, Dongguan\r
Motilla del Palancar Cuenca 16200\r
ES\r
\r
-A4-53-EE (hex) Aura Home, Inc.\r
-600000-6FFFFF (base 16) Aura Home, Inc.\r
- 50 Eldridge Street, Suite 5D\r
- New York NY 10002\r
- US\r
-\r
A4-53-EE (hex) SSK CORPORATION\r
D00000-DFFFFF (base 16) SSK CORPORATION\r
3F, M-10, Centre of Hi-Tech Industrial Park, Nanshan\r
Beaverton OR 97008\r
US\r
\r
+44-6F-D8 (hex) ZHEJIANG HIKAILINK TECHNOLOGY Co., Ltd\r
+A00000-AFFFFF (base 16) ZHEJIANG HIKAILINK TECHNOLOGY Co., Ltd\r
+ Room 116, 1 / F, building 2, No. 87, Hexi, Changfeng street, Wuzhen Town, Tongxiang City\r
+ Jiaxing City Zhejiang China\r
+ CN\r
+\r
+44-6F-D8 (hex) Shenzhen Mestechs Technology CO., LTD\r
+300000-3FFFFF (base 16) Shenzhen Mestechs Technology CO., LTD\r
+ The 3rd Floor, E4A Bldg?TCL International E city, NO.1001 zhongshanyuan Rd, Nanshan District\r
+ shenzhen GuangDong 518052\r
+ CN\r
+\r
+98-27-82 (hex) Guangzhou Wuzhou Technology Co, Ltd.\r
+500000-5FFFFF (base 16) Guangzhou Wuzhou Technology Co, Ltd.\r
+ 4th Floor, Building C2, Hi-Tech Enterprise Accelerator, Kaiyuan Avenue #11, Huangpu District\r
+ Guangzhou Guangdong 510530\r
+ CN\r
+\r
+98-27-82 (hex) Nanjing BianYu Future Home Technology Co.Ltd\r
+A00000-AFFFFF (base 16) Nanjing BianYu Future Home Technology Co.Ltd\r
+ Longyu Middle Street\r
+ Beijing Beijing 100085\r
+ CN\r
+\r
+98-27-82 (hex) Wuxi GuoYiHaiJu Technology Co.,Ltd.\r
+900000-9FFFFF (base 16) Wuxi GuoYiHaiJu Technology Co.,Ltd.\r
+ Innovation Industrial Park E2-2F\r
+ hefei 230000\r
+ CN\r
+\r
+98-27-82 (hex) CATS Power design\r
+800000-8FFFFF (base 16) CATS Power design\r
+ 144 route des Vernes\r
+ PRINGY 74370\r
+ FR\r
+\r
+04-11-19 (hex) Alethea Communications Technologies Pvt. Ltd.\r
+200000-2FFFFF (base 16) Alethea Communications Technologies Pvt. Ltd.\r
+ 2346, 17th Cross, HSR Layout\r
+ Bangalore Karnataka 560102\r
+ IN\r
+\r
+04-11-19 (hex) Acentury\r
+100000-1FFFFF (base 16) Acentury\r
+ 120 West Beaver Creek Road, Unit 13\r
+ Richmond Hill ON L4B 1L2\r
+ CA\r
+\r
+E8-6C-C7 (hex) Huaqin Technology Co.,Ltd\r
+700000-7FFFFF (base 16) Huaqin Technology Co.,Ltd\r
+ No. 10 Keyuan Road, Songshan Lake\r
+ Dongguan Guangdong 523808\r
+ CN\r
+\r
+38-B8-EB (hex) Sirin Mobile Technologies\r
+700000-7FFFFF (base 16) Sirin Mobile Technologies\r
+ Muhlentalstrasse 2\r
+ Schaffhausen 8200\r
+ CH\r
+\r
+24-5D-FC (hex) CompanyDeep\r
+000000-0FFFFF (base 16) CompanyDeep\r
+ 122, Ross Street\r
+ Cambridge Cambridgeshire CB13BU\r
+ GB\r
+\r
+24-5D-FC (hex) TORGOVYY DOM TEHNOLOGIY LLC\r
+900000-9FFFFF (base 16) TORGOVYY DOM TEHNOLOGIY LLC\r
+ Gospytalnaya 10, ap. 109, village Selyatino, city Naro-Fominsk,\r
+ Moscow Moscow Region 143345\r
+ RU\r
+\r
+E8-6C-C7 (hex) CoxSpace\r
+A00000-AFFFFF (base 16) CoxSpace\r
+ 858ho, Business Support Hub, 815, Daewangpangyo-ro Sujeong-gu\r
+ Seongnam Kyeonggi-do 13449\r
+ KR\r
+\r
+24-5D-FC (hex) ContactProximity Inc\r
+500000-5FFFFF (base 16) ContactProximity Inc\r
+ 241 Arlington Street #966\r
+ Acton MA 01720\r
+ US\r
+\r
+F0-23-B9 (hex) Shenyang Ali Technology Company Limited\r
+D00000-DFFFFF (base 16) Shenyang Ali Technology Company Limited\r
+ No.17-5, Wensu Street\r
+ Dongling District Shenyang Liaoning Province 110168\r
+ CN\r
+\r
+24-5D-FC (hex) Guangzhou Lango Electronics Technology Co.,Ltd.\r
+600000-6FFFFF (base 16) Guangzhou Lango Electronics Technology Co.,Ltd.\r
+ Room 238, Room 406, No. 1, Yichuang Street, Huangpu District\r
+ Guangzhou Guangdong 510336\r
+ CN\r
+\r
+0C-5C-B5 (hex) Hunan Newman Car NetworKing Technology Co.,Ltd\r
+C00000-CFFFFF (base 16) Hunan Newman Car NetworKing Technology Co.,Ltd\r
+ 128 Lixiang East Road,ChangshaEconomic and Technological Development Zone\r
+ Changsha Hunan 410100\r
+ CN\r
+\r
+0C-5C-B5 (hex) S2C limited\r
+600000-6FFFFF (base 16) S2C limited\r
+ E1 No.2555 Xiupu Rd. Pudong New Area\r
+ Shanghai Shanghai 201135\r
+ CN\r
+\r
+1C-A0-EF (hex) LLC Gagar.In\r
+C00000-CFFFFF (base 16) LLC Gagar.In\r
+ Rybnikov Pereulok 1\r
+ Moscow 107045\r
+ RU\r
+\r
+1C-A0-EF (hex) Zillnk\r
+800000-8FFFFF (base 16) Zillnk\r
+ No. 505, 5 / F, Unit 2, building 1, No. 777, North Section of Yizhou Avenue, Chengdu High Tech Zone, China (Sichuan) Pilot Free Trade Zone\r
+ Chengdu 610000\r
+ CN\r
+\r
+1C-A0-EF (hex) Tangshan Liulin Automation Equipment Co., Ltd.\r
+000000-0FFFFF (base 16) Tangshan Liulin Automation Equipment Co., Ltd.\r
+ Building 110-3, No.410 Huoju Road, High-tech Zone\r
+ Tangshan City Hebei Province 063000\r
+ CN\r
+\r
+1C-A0-EF (hex) Leviathan Solutions Ltd.\r
+400000-4FFFFF (base 16) Leviathan Solutions Ltd.\r
+ Abel Jeno utca 23\r
+ Budapest 1113\r
+ HU\r
+\r
+20-CE-2A (hex) Shanghai Digicube Info&Tech Co.,Ltd.\r
+100000-1FFFFF (base 16) Shanghai Digicube Info&Tech Co.,Ltd.\r
+ Room B, 9th floor, building 1, Hongqiao headquarters, 100 Zixiu Road, \r
+ Shanghai Minhang District 201103\r
+ CN\r
+\r
20-85-93 (hex) UNILUMIN GROUP CO.,LTD\r
300000-3FFFFF (base 16) UNILUMIN GROUP CO.,LTD\r
No.112 Yongfu Rd.,BaoanDistrict,\r
Longmont CO 80501\r
US\r
\r
-DC-E5-33 (hex) Private\r
-A00000-AFFFFF (base 16) Private\r
-\r
24-15-10 (hex) SHANDONG KEHUI POWER AUTOMATION CO. LTD.\r
600000-6FFFFF (base 16) SHANDONG KEHUI POWER AUTOMATION CO. LTD.\r
No. 16,Sanying Road\r
JUVIGNY Select State 74100\r
FR\r
\r
+98-27-82 (hex) SHENZHEN HEROFUN BIO-TECH CO., LTD\r
+000000-0FFFFF (base 16) SHENZHEN HEROFUN BIO-TECH CO., LTD\r
+ 7001B, 7th Floor, LaoBing Building, East Block 2, No. 3012 XingYe Road, BaoAn District\r
+ Shenzhen 518100\r
+ CN\r
+\r
+44-6F-D8 (hex) Annapurna labs\r
+900000-9FFFFF (base 16) Annapurna labs\r
+ Matam Scientific Industries Center, Building 8.2\r
+ Mail box 15123 Haifa 3508409\r
+ IL\r
+\r
+44-6F-D8 (hex) Anhui GuDao Tech\r
+600000-6FFFFF (base 16) Anhui GuDao Tech\r
+ Dangtu Qingshanhe\r
+ MaAnShan AnHui 243000\r
+ CN\r
+\r
+98-27-82 (hex) RayTron, INC.\r
+B00000-BFFFFF (base 16) RayTron, INC.\r
+ 11F.ESLEAD Bldg.HONMACHI 1-4-8 HONMACHI CHUO-KU\r
+ Osaka Osaka 541-0053\r
+ JP\r
+\r
+98-27-82 (hex) Thorlabs GmbH\r
+D00000-DFFFFF (base 16) Thorlabs GmbH\r
+ Münchner Weg 1\r
+ Bergkirchen 85232\r
+ DE\r
+\r
+98-27-82 (hex) WESTERN SECURITY SOLUTIONS\r
+600000-6FFFFF (base 16) WESTERN SECURITY SOLUTIONS\r
+ WSS TOWER HARINAGAR\r
+ GURUGRAM HARYANA 122001\r
+ IN\r
+\r
+98-27-82 (hex) Danfoss Power Solutions\r
+300000-3FFFFF (base 16) Danfoss Power Solutions\r
+ 3500 Annapolis Lane N\r
+ Minneapolis MN 55447\r
+ US\r
+\r
+04-11-19 (hex) AC Power Distribution / ACT Entmt.\r
+900000-9FFFFF (base 16) AC Power Distribution / ACT Entmt.\r
+ 2313 N. Valley St.\r
+ Burbank CA 91505\r
+ US\r
+\r
+04-11-19 (hex) Nuance Hearing Ltd.\r
+D00000-DFFFFF (base 16) Nuance Hearing Ltd.\r
+ Raoul Wallenberg 24, Building A1, Floor 3\r
+ Tel Aviv 6971920\r
+ IL\r
+\r
+04-11-19 (hex) SUZHOU RIBAO TECHNOLOGY CO.,LTD.\r
+300000-3FFFFF (base 16) SUZHOU RIBAO TECHNOLOGY CO.,LTD.\r
+ SUZHOU RIBAO TECHNOLOGY CO.,LTD.\r
+ SUZHOU JIANGSU 215133\r
+ CN\r
+\r
+04-11-19 (hex) CyOne Security AG\r
+A00000-AFFFFF (base 16) CyOne Security AG\r
+ Hinterbergstrasse 18\r
+ Steinhausen Zug 6312\r
+ CH\r
+\r
+E8-6C-C7 (hex) Annapurna labs\r
+E00000-EFFFFF (base 16) Annapurna labs\r
+ Matam Scientific Industries Center, Building 8.2\r
+ Mail box 15123 Haifa 3508409\r
+ IL\r
+\r
+E8-6C-C7 (hex) Shenzhen Yibaifen Industrial Co.,Ltd.\r
+300000-3FFFFF (base 16) Shenzhen Yibaifen Industrial Co.,Ltd.\r
+ 501/501, Building 2, Hongxiang Industrial Park, 21 Huancheng South Road, Ma'antang Community, Bantian Street, Longgang District, Shenzhen\r
+ Shenzhen 518000\r
+ CN\r
+\r
+E8-6C-C7 (hex) z-max mediasolution\r
+D00000-DFFFFF (base 16) z-max mediasolution\r
+ Surugadai Bldg.8F kanda surugadai 1-7-10\r
+ Chiyodaku Tokyo 101-0062\r
+ JP\r
+\r
+DC-E5-33 (hex) Amazinglayer Network Co., Ltd.\r
+A00000-AFFFFF (base 16) Amazinglayer Network Co., Ltd.\r
+ Room118, Building B, JinTaiHuaYun Building, WuGenLin HuTong 11\r
+ Beijing Beijing 100035\r
+ CN\r
+\r
+24-5D-FC (hex) ARTICONA - Bechtle Logistik & Service GmbH\r
+100000-1FFFFF (base 16) ARTICONA - Bechtle Logistik & Service GmbH\r
+ Bechtle Platz 1\r
+ Neckarsulm Baden-Württemberg 74172\r
+ DE\r
+\r
+24-5D-FC (hex) Blue Iris Labs\r
+200000-2FFFFF (base 16) Blue Iris Labs\r
+ 18 Acacia Rd\r
+ Fairfax CA 94930\r
+ US\r
+\r
+24-5D-FC (hex) LTY LLC\r
+700000-7FFFFF (base 16) LTY LLC\r
+ 1321 UPLAND DR\r
+ HOUSTON TX 77043\r
+ US\r
+\r
+60-15-92 (hex) PSS Co., Ltd\r
+C00000-CFFFFF (base 16) PSS Co., Ltd\r
+ 4F., No. 10, Ln. 327, Sec. 2, Zhongshan Rd., Zhonghe Dist.\r
+ New Taipei City ??? 235\r
+ TW\r
+\r
+0C-5C-B5 (hex) Annapurna labs\r
+400000-4FFFFF (base 16) Annapurna labs\r
+ Matam Scientific Industries Center, Building 8.2\r
+ Mail box 15123 Haifa 3508409\r
+ IL\r
+\r
+60-15-92 (hex) RTDS Technologies Inc.\r
+100000-1FFFFF (base 16) RTDS Technologies Inc.\r
+ 100-150 Innovation Drive\r
+ Winnipeg Manitoba R3T 2E1\r
+ CA\r
+\r
+60-15-92 (hex) Annapurna labs\r
+E00000-EFFFFF (base 16) Annapurna labs\r
+ Matam Scientific Industries Center, Building 8.2\r
+ Mail box 15123 Haifa 3508409\r
+ IL\r
+\r
+60-15-92 (hex) JIANGSU SUNFY TECHNOLOGIES HOLDING CO.,LTD.\r
+900000-9FFFFF (base 16) JIANGSU SUNFY TECHNOLOGIES HOLDING CO.,LTD.\r
+ Building 6, No. 1088, Jiangcheng Road, Sutong Technology Industrial Park\r
+ Nantong Jiangsu 226017\r
+ CN\r
+\r
+60-15-92 (hex) OSI TECHNOLOGY CO.,LTD.\r
+300000-3FFFFF (base 16) OSI TECHNOLOGY CO.,LTD.\r
+ No.74, Fenyang Rd., Sanmin Dist.\r
+ Kaohsiung City Taiwan 807\r
+ TW\r
+\r
+0C-5C-B5 (hex) Shenzhen C & D Electronics Co., Ltd.\r
+800000-8FFFFF (base 16) Shenzhen C & D Electronics Co., Ltd.\r
+ 9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District\r
+ ShenZhen GuangDong 518000\r
+ CN\r
+\r
+0C-5C-B5 (hex) iH&S Technology Limited\r
+300000-3FFFFF (base 16) iH&S Technology Limited\r
+ iH&S Technology Limited\r
+ 7/F, Unify Commercial & Ind. Bldg., 31 Tai Yip Street, Kwun Tong Hong Kong 999077\r
+ HK\r
+\r
+0C-5C-B5 (hex) Colordeve International\r
+900000-9FFFFF (base 16) Colordeve International\r
+ 601, block B, Logistics Park, Yihong Road, Yantian village, Fenggang Town, DG, GD, China\r
+ Dongguan City 523702\r
+ CN\r
+\r
+0C-5C-B5 (hex) Energybox Limited\r
+700000-7FFFFF (base 16) Energybox Limited\r
+ 8/F., Green 18, HK Science Park\r
+ Sha Tin Hong Kong 0000\r
+ HK\r
+\r
+1C-A0-EF (hex) HANJEN.CHIN CO., LTD.\r
+600000-6FFFFF (base 16) HANJEN.CHIN CO., LTD.\r
+ Fl.2 No. 101 Jian 1st Rd., Zhonghe Dist., \r
+ NEW TAIPEI CITY TAIWAN 235\r
+ TW\r
+\r
+20-CE-2A (hex) Beijing Huadianzhongxin Tech.Co.,Ltd\r
+700000-7FFFFF (base 16) Beijing Huadianzhongxin Tech.Co.,Ltd\r
+ Room 318,the 3rd Floorl,Xingtianhaiyuan Building,Xianghuangqi East Rd,Nongda South Rd, Haidian District,Beijing,P.R.C\r
+ Bei Jing 100193\r
+ CN\r
+\r
4C-4B-F9 (hex) Shandong Linkotech Electronic Co., Ltd.\r
600000-6FFFFF (base 16) Shandong Linkotech Electronic Co., Ltd.\r
22nd Floor, Building 2, Aosheng Building, No.1166 Xinyi Street, High-tech Zone\r
San Jose California 95128\r
US\r
\r
-00-55-DA (hex) Nanoleaf\r
-500000-5FFFFF (base 16) Nanoleaf\r
- 162 John Street\r
- Toronto Ontario M5V2E5\r
- CA\r
-\r
00-55-DA (hex) Speechlab\r
A00000-AFFFFF (base 16) Speechlab\r
Gaasterlandstraat 3\r
Asbury Park NJ 07712\r
US\r
\r
-74-F8-DB (hex) Avantree Corporation\r
-900000-9FFFFF (base 16) Avantree Corporation\r
- 41871 Via San Miguel\r
- Fremont CA 94539\r
- US\r
-\r
88-5D-90 (hex) Creative Sensor Inc.\r
800000-8FFFFF (base 16) Creative Sensor Inc.\r
9F., No.501, Sec. 6, Nanjing E. Rd., Neihu Dist., Taipei City 114, Taiwan (R.O.C.)\r
Mail box 15123 Haifa 3508409\r
IL\r
\r
-40-11-75 (hex) disguise Technologies Limited\r
-C00000-CFFFFF (base 16) disguise Technologies Limited\r
- Units C&D 127 Great Suffolk Street\r
- London SE1 1PP\r
- GB\r
-\r
10-DC-B6 (hex) Shenzhen Sunwoda intelligent hardware Co.,Ltd\r
E00000-EFFFFF (base 16) Shenzhen Sunwoda intelligent hardware Co.,Ltd\r
No.6-6,Yan Shan Rd.,Baoan District,Shenzhen City,China\r
Beijing 100070\r
CN\r
\r
+40-11-75 (hex) disguise Technologies Limited\r
+C00000-CFFFFF (base 16) disguise Technologies Limited\r
+ 88-89 Blackfriars Rd\r
+ London South Bank SE1 8HA,\r
+ GB\r
+\r
44-6F-D8 (hex) Global Telecom Engineering, Inc\r
800000-8FFFFF (base 16) Global Telecom Engineering, Inc\r
17901 Von Karman Ave, Suite 600\r
Irvine CA 92614\r
US\r
\r
+74-F8-DB (hex) Avantree Corporation\r
+900000-9FFFFF (base 16) Avantree Corporation\r
+ 175 Bernal road Ste 106\r
+ SAN JOSE CA 95119-1343\r
+ US\r
+\r
+04-11-19 (hex) Shenzhen YIZHENG Technology Co.,Ltd\r
+800000-8FFFFF (base 16) Shenzhen YIZHENG Technology Co.,Ltd\r
+ 2305, block A7, Chuangzhi Yuncheng, Liuxian Avenue, Xili Town, Nanshan District\r
+ ShenZhen GuangDong 518000\r
+ CN\r
+\r
+04-11-19 (hex) Hubei Baobao Intelligent Technology Co.,LTD\r
+B00000-BFFFFF (base 16) Hubei Baobao Intelligent Technology Co.,LTD\r
+ Hubei Baobao Intelligent Technology Co.,LTD\r
+ Wuhan Hubei 430000\r
+ CN\r
+\r
+04-11-19 (hex) JULIDA LIMITED\r
+E00000-EFFFFF (base 16) JULIDA LIMITED\r
+ 1F., NO. 137, DATONG ST., BEITOU DIST.\r
+ TAIPEI CITY Taiwan 112\r
+ TW\r
+\r
+04-11-19 (hex) FORT Robotics Inc.\r
+000000-0FFFFF (base 16) FORT Robotics Inc.\r
+ 170 S. Independence Mall, Suite 275W\r
+ Philadelphia PA 19106\r
+ US\r
+\r
+E8-6C-C7 (hex) Shenzhen Rongda Computer Co.,Ltd\r
+500000-5FFFFF (base 16) Shenzhen Rongda Computer Co.,Ltd\r
+ 905, Block B, DuoCaiKeChuan Park, No.5 Guanle Road\r
+ Longhua District Shenzhen, Guangdong 518110\r
+ CN\r
+\r
+E8-6C-C7 (hex) Hangzhou Lanxum Security Technology Co., Ltd\r
+900000-9FFFFF (base 16) Hangzhou Lanxum Security Technology Co., Ltd\r
+ Room 402, Block A, 4th Floor, Building 3, No. 351 changhe Road, Changhe Street, Binjiang District\r
+ Hangzhou Zhejiang 310000\r
+ CN\r
+\r
+E8-6C-C7 (hex) KLAB\r
+600000-6FFFFF (base 16) KLAB\r
+ 94-23,Techno 2-ro\r
+ Yuseong-gu Daejeon 34014\r
+ KR\r
+\r
+24-5D-FC (hex) Senix Corporation\r
+C00000-CFFFFF (base 16) Senix Corporation\r
+ 10516 Route 116, Suite 300\r
+ Hinesburg VT 05461\r
+ US\r
+\r
+24-5D-FC (hex) Hunan Honestone lntelligence Technology Co.,Ltd\r
+D00000-DFFFFF (base 16) Hunan Honestone lntelligence Technology Co.,Ltd\r
+ 705, Building 1, Fortune Plaza, Wankuntu, Xiangzhang Road, Yuhua District, Changsha City,\r
+ Changsha 410007\r
+ CN\r
+\r
+24-5D-FC (hex) Dodge\r
+E00000-EFFFFF (base 16) Dodge\r
+ 6040 Ponders Court\r
+ Greenville SC 29615\r
+ US\r
+\r
+60-15-92 (hex) insensiv GmbH\r
+A00000-AFFFFF (base 16) insensiv GmbH\r
+ Auf dem Esch 28\r
+ Bielefeld Nordrhein-Westfalen 33619\r
+ DE\r
+\r
+00-55-DA (hex) Nanoleaf\r
+500000-5FFFFF (base 16) Nanoleaf\r
+ 100 Front Street East, 4th Floor\r
+ Toronto Ontario M5A 1E1\r
+ CA\r
+\r
+60-15-92 (hex) EDA Technology Co.,LTD\r
+200000-2FFFFF (base 16) EDA Technology Co.,LTD\r
+ Room 301, Building 24, Shengchuang Enterprise Park,No.1661 Jialuo Road, Jiading District\r
+ Shanghai Shanghai 201822\r
+ CN\r
+\r
+60-15-92 (hex) REMOWIRELESS COMMUNICATION INTERNATIONAL CO.,LIMITED\r
+D00000-DFFFFF (base 16) REMOWIRELESS COMMUNICATION INTERNATIONAL CO.,LIMITED\r
+ REMOWIRELESS RM1111,HONGYI BUILDING NO.2158 WANYUAN ROAD\r
+ SHANGHAI SHANGHAI 201103\r
+ CN\r
+\r
+0C-5C-B5 (hex) avxav Electronic Trading LLC\r
+100000-1FFFFF (base 16) avxav Electronic Trading LLC\r
+ Office 534 Building # 6WA Dubai Airport Free Zone\r
+ Dubai United Arab Emirates 33964\r
+ AE\r
+\r
+1C-A0-EF (hex) Sequent AG\r
+300000-3FFFFF (base 16) Sequent AG\r
+ Eptingerstrasse 3\r
+ Basel 4052\r
+ CH\r
+\r
+0C-5C-B5 (hex) Yamasei\r
+000000-0FFFFF (base 16) Yamasei\r
+ 2F., No. 37, Ln. 11, Sec. 6, Minquan E. Rd., Neihu Dist.\r
+ Taipei Taiwan (R.O.C.) 114\r
+ TW\r
+\r
+0C-5C-B5 (hex) HongKong Blossom Limited\r
+200000-2FFFFF (base 16) HongKong Blossom Limited\r
+ B1715,Jiansheng Building,No. 1 Pingji Road, NanWan Street Longgang\r
+ Shenzhen 518112\r
+ CN\r
+\r
+0C-5C-B5 (hex) Munters Europe AB\r
+E00000-EFFFFF (base 16) Munters Europe AB\r
+ Borgarfjordsgatan 16\r
+ Kista 16440\r
+ SE\r
+\r
+1C-A0-EF (hex) tec5AG\r
+700000-7FFFFF (base 16) tec5AG\r
+ Weisskirchener Strasse 2-6\r
+ Steinbach Hessen 61449\r
+ DE\r
+\r
20-85-93 (hex) Great Lite International\r
700000-7FFFFF (base 16) Great Lite International\r
11F., No.207-2, Sec. 3, Beixin Rd., Xindian Dist.,\r
Shenzhen 518100\r
CN\r
\r
-94-05-BB (hex) Neurik AG\r
-300000-3FFFFF (base 16) Neurik AG\r
- Im alten Riet 143\r
- Schaan SCHAAN 9494\r
- LI\r
-\r
DC-44-27 (hex) Tesla,Inc.\r
100000-1FFFFF (base 16) Tesla,Inc.\r
3500 Deer Creek Road\r
Nanjing Jiangsu 210012\r
CN\r
\r
+44-6F-D8 (hex) BAYKON Endüstriyel Kontrol Sistemleri San. ve Tic. A.Ş.\r
+200000-2FFFFF (base 16) BAYKON Endüstriyel Kontrol Sistemleri San. ve Tic. A.Ş.\r
+ Kimya Sanayicileri Org. San. Bolgesi Organik Cad. No:31\r
+ Istanbul Tuzla 34956\r
+ TR\r
+\r
44-6F-D8 (hex) ITC\r
700000-7FFFFF (base 16) ITC\r
3030 Corporate Grove Drive\r
Hudsonville MI 49426\r
US\r
+\r
+44-6F-D8 (hex) CTE\r
+E00000-EFFFFF (base 16) CTE\r
+ No. 1-7, Gongjian Rd., Cidu District, Keelung City 20647, Taiwan R.O.C\r
+ Keelung Taiwan 106\r
+ TW\r
+\r
+98-27-82 (hex) INFODAS GmbH\r
+100000-1FFFFF (base 16) INFODAS GmbH\r
+ Rhonestr. 2\r
+ Cologne 50765\r
+ DE\r
+\r
+98-27-82 (hex) Anhui Shengren Electronic Technology Co., Ltd\r
+200000-2FFFFF (base 16) Anhui Shengren Electronic Technology Co., Ltd\r
+ 520 Jiahe Road, Yuhui District\r
+ Bengbu Anhui 233000\r
+ CN\r
+\r
+98-27-82 (hex) SureFlap Ltd\r
+E00000-EFFFFF (base 16) SureFlap Ltd\r
+ 7 The Irwin Centre, Scotland Road, Dry Drayton\r
+ Cambridge Cambridgeshire CB23 8AR\r
+ GB\r
+\r
+98-27-82 (hex) KRISTECH Krzysztof Kajstura\r
+C00000-CFFFFF (base 16) KRISTECH Krzysztof Kajstura\r
+ Porzeczkowa 12\r
+ Ustro? Please select region, state or province 43-450\r
+ PL\r
+\r
+04-11-19 (hex) ZPD technology Co., Ltd\r
+600000-6FFFFF (base 16) ZPD technology Co., Ltd\r
+ 2# Floor, 1# Gate?12# Building?5# Jiangtai Road, Chaoyang District,Beijing\r
+ Beijing Beijing 100015\r
+ CN\r
+\r
+04-11-19 (hex) CEITA COMMUNICATION TECHNOLOGY CO.,LTD\r
+500000-5FFFFF (base 16) CEITA COMMUNICATION TECHNOLOGY CO.,LTD\r
+ 611, Renbao Building, 32 Baolong Road, Changlong Community, Buji Street, Longgang District\r
+ Shenzhen Guangdong 518000\r
+ CN\r
+\r
+24-5D-FC (hex) Shenzhen Hailuck Electronic Technology CO.,LTD\r
+300000-3FFFFF (base 16) Shenzhen Hailuck Electronic Technology CO.,LTD\r
+ 2/F, building 19, Baotian industrial zone, the Third Baotian Road, Bao'an district\r
+ Shenzhen GuangDong 518101\r
+ CN\r
+\r
+04-11-19 (hex) Bolicom Innovation Technology (BeiJing) Co.,LTD.\r
+400000-4FFFFF (base 16) Bolicom Innovation Technology (BeiJing) Co.,LTD.\r
+ Rm2327, Building23, No.18 Anningzhuang East Road, Haidian District\r
+ Bei Jing 100000\r
+ CN\r
+\r
+04-11-19 (hex) Haerbin Donglin Technology Co., Ltd.\r
+C00000-CFFFFF (base 16) Haerbin Donglin Technology Co., Ltd.\r
+ Room 2, Floor 1, Unit 6, Building 2,Yuanshi Street 35, Nangang District\r
+ Haerbin Heilongjiang 150000\r
+ CN\r
+\r
+E8-6C-C7 (hex) MORNSUN Guangzhou Science & Technology Co., Ltd.\r
+B00000-BFFFFF (base 16) MORNSUN Guangzhou Science & Technology Co., Ltd.\r
+ No.5,Kehui St. 1,kehui Development Center,Science Ave.,Guangzhou Science City, Huangpu District\r
+ GuangZhou GuangDong 510000\r
+ CN\r
+\r
+E8-6C-C7 (hex) ASSA ABLOY(GuangZhou) Smart Technology Co., Ltd\r
+100000-1FFFFF (base 16) ASSA ABLOY(GuangZhou) Smart Technology Co., Ltd\r
+ Plant Building 5, 106 Xieshi Highway, Shibi 1st Village\r
+ Guangzhou GuangDong 511495\r
+ CN\r
+\r
+24-5D-FC (hex) ONLY\r
+B00000-BFFFFF (base 16) ONLY\r
+ 1F., No. 16, Ln. 76, Zhongyang N. Rd., Sanchong Dist\r
+ New Taipei City Taiwan (R.O.C.) 24146\r
+ TW\r
+\r
+24-5D-FC (hex) Tata Sky Limited\r
+A00000-AFFFFF (base 16) Tata Sky Limited\r
+ Unit 301 to 305, 3rd Floor, Windsor, Off C.S.T. Road, Kalina, Santacruz (East), Mumbai – 400 098 \r
+ Mumbai Maharashtra 400098\r
+ IN\r
+\r
+94-05-BB (hex) Neutrik AG\r
+300000-3FFFFF (base 16) Neutrik AG\r
+ Im alten Riet 143\r
+ Schaan SCHAAN 9494\r
+ LI\r
+\r
+60-15-92 (hex) Yangzhou Wanfang Electronic Technology,CO .,Ltd.\r
+800000-8FFFFF (base 16) Yangzhou Wanfang Electronic Technology,CO .,Ltd.\r
+ No.96 Anlin Road,Guangling District\r
+ Yangzhou City Jiangsu Province 225000\r
+ CN\r
+\r
+A4-53-EE (hex) Shenzhen Xunqi Interconnet Technology Co., Ltd\r
+600000-6FFFFF (base 16) Shenzhen Xunqi Interconnet Technology Co., Ltd\r
+ 26G, block B, Haiwang building, Chuangye Road, Nanshan District,\r
+ Shenzhen Guangdong 518000\r
+ CN\r
+\r
+60-15-92 (hex) Faster CZ spol. s r.o.\r
+700000-7FFFFF (base 16) Faster CZ spol. s r.o.\r
+ Jarnà 44g\r
+ Brno 61400\r
+ CZ\r
+\r
+60-15-92 (hex) BEIJING KUANGSHI TECHNOLOGY CO., LTD\r
+600000-6FFFFF (base 16) BEIJING KUANGSHI TECHNOLOGY CO., LTD\r
+ Room 1018,10th Floor, No.1 Zhongguancun Street, Haidian District, \r
+ Beijing Beijing 100086\r
+ CN\r
+\r
+0C-5C-B5 (hex) BSU Inc\r
+D00000-DFFFFF (base 16) BSU Inc\r
+ 1611 Headway Circle, Building 1, Suite 200\r
+ Austin TX 78754\r
+ US\r
+\r
+0C-5C-B5 (hex) Zhengzhou coal machinery hydraulic electric control Co.,Ltd\r
+A00000-AFFFFF (base 16) Zhengzhou coal machinery hydraulic electric control Co.,Ltd\r
+ 167 Jingkai 9th Street, Zhengzhou Economic Development Zone\r
+ Zhengzhou 45000\r
+ CN\r
+\r
+1C-A0-EF (hex) Nanjing Bilin Intelligent Identification Technology Co.,Ltd\r
+500000-5FFFFF (base 16) Nanjing Bilin Intelligent Identification Technology Co.,Ltd\r
+ No.9 Bancang Street\r
+ Nanjing Jiangsu 210000\r
+ CN\r
+\r
+1C-A0-EF (hex) Schneider-Electric(China)Co.Ltd,Shenzhen Branch\r
+200000-2FFFFF (base 16) Schneider-Electric(China)Co.Ltd,Shenzhen Branch\r
+ Unit A to C 7/F and 8/F,CES Building ,No.3099,Keyuan South road, Nanshan Dist, Shenzhen, GD, China\r
+ SHENZHEN 518000\r
+ CN\r
+\r
+1C-A0-EF (hex) BMK professional electronics GmbH\r
+B00000-BFFFFF (base 16) BMK professional electronics GmbH\r
+ Werner-von-Siemens-Straße 6\r
+ Augsburg 86159\r
+ DE\r
+\r
+1C-A0-EF (hex) Atlas Aerospace\r
+900000-9FFFFF (base 16) Atlas Aerospace\r
+ Ulbrokas 19a\r
+ Riga Riga LV-1021\r
+ LV\r
+\r
+1C-A0-EF (hex) Henrich Electronics Corporation\r
+A00000-AFFFFF (base 16) Henrich Electronics Corporation\r
+ 225 Deming Place\r
+ Westmont 60559\r
+ US\r
+\r
+1C-A0-EF (hex) RDA Microelectronics Technologies (Shanghai) Co. , Ltd\r
+E00000-EFFFFF (base 16) RDA Microelectronics Technologies (Shanghai) Co. , Ltd\r
+ Room 336, No.3, Lane 2288, Zuchongzhi Road, Pudong Area\r
+ Shanghai Shanghai 200120\r
+ CN\r
Barcelona Barcelona 08028\r
ES\r
\r
-70-B3-D5 (hex) Private\r
-A9F000-A9FFFF (base 16) Private\r
-\r
70-B3-D5 (hex) Arevita\r
5E1000-5E1FFF (base 16) Arevita\r
Baltu ave 145\r
New Taipei City, Taiwan 22101\r
TW\r
\r
-70-B3-D5 (hex) Private\r
-9EE000-9EEFFF (base 16) Private\r
-\r
70-B3-D5 (hex) Wuhan Xingtuxinke ELectronic Co.,Ltd\r
70E000-70EFFF (base 16) Wuhan Xingtuxinke ELectronic Co.,Ltd\r
NO.C3-8F,Software Park,Optics Valley,East Lake Development Zone,Wuhan,Hubei,China\r
Poellau bei Hartberg Steiermark 8225\r
AT\r
\r
-70-B3-D5 (hex) TORGOVYY DOM TEHNOLOGIY LLC\r
-7C0000-7C0FFF (base 16) TORGOVYY DOM TEHNOLOGIY LLC\r
- The village of Rumyantsevo, Build.1\r
- Moscow Moscow 142784\r
- RU\r
-\r
70-B3-D5 (hex) Raft Technologies\r
8D0000-8D0FFF (base 16) Raft Technologies\r
Habarzel 25\r
Mississauga Ontario L4V 1W1\r
CA\r
\r
-70-B3-D5 (hex) TAIYO SEIKI CO.,LTD.\r
-69B000-69BFFF (base 16) TAIYO SEIKI CO.,LTD.\r
- 1600 Aza-Shironoshita Asahi\r
- Shin Asahi-cho Takashima, Shiga 520-1501\r
- JP\r
-\r
70-B3-D5 (hex) PLUTO Solution co.,ltd.\r
842000-842FFF (base 16) PLUTO Solution co.,ltd.\r
B-1018, Kumkang Penterium IT Tower, 282, Hagui-ro, Dongan-gu\r
Plzen 301 28\r
CZ\r
\r
-70-B3-D5 (hex) S Labs sp. z o.o.\r
-C53000-C53FFF (base 16) S Labs sp. z o.o.\r
- Jasnogórska, 44\r
- Kraków Lesser Poland 31-358\r
- PL\r
-\r
70-B3-D5 (hex) Dameca a/s\r
EEA000-EEAFFF (base 16) Dameca a/s\r
Islevdalvej 211\r
Saint-Petersburg Russia 197183\r
RU\r
\r
-70-B3-D5 (hex) Leviathan Solutions Ltd.\r
-A69000-A69FFF (base 16) Leviathan Solutions Ltd.\r
- Kazal utca 64-66\r
- Budapest 1031\r
- HU\r
-\r
70-B3-D5 (hex) BEDEROV GmbH\r
371000-371FFF (base 16) BEDEROV GmbH\r
Rankestr. 8\r
TAIPEI 11560\r
TW\r
\r
-70-B3-D5 (hex) nexgenwave\r
-5BD000-5BDFFF (base 16) nexgenwave\r
- 1209 sicox tower, 484 Dunchon-daero, jungwon-gu\r
- Sungnam-si gyeonggi-do 13229\r
- KR\r
-\r
70-B3-D5 (hex) EBZ SysTec GmbH\r
1FA000-1FAFFF (base 16) EBZ SysTec GmbH\r
Bleicherstraße 7\r
Ravensburg DE 88212\r
DE\r
\r
+70-B3-D5 (hex) nexgenwave\r
+5BD000-5BDFFF (base 16) nexgenwave\r
+ 1209 sicox tower, 484 Dunchon-daero, jungwon-gu\r
+ Sungnam-si gyeonggi-do 13229\r
+ KR\r
+\r
70-B3-D5 (hex) TRIOPTICS\r
A11000-A11FFF (base 16) TRIOPTICS\r
Strandbaddamm 6\r
Wedel Schleswig-Holstein 22880\r
DE\r
\r
+70-B3-D5 (hex) Lockheed Martin - THAAD\r
+9EE000-9EEFFF (base 16) Lockheed Martin - THAAD\r
+ 4800 Bradford Drive\r
+ Huntsville AL 35805\r
+ US\r
+\r
+70-B3-D5 (hex) TT Group SRL\r
+BD7000-BD7FFF (base 16) TT Group SRL\r
+ Via Pazzano 112\r
+ Roma RM 00118\r
+ IT\r
+\r
+70-B3-D5 (hex) SIAME\r
+66E000-66EFFF (base 16) SIAME\r
+ RUE DES MATHEMATIQUES\r
+ GROMBALIA 8030\r
+ TN\r
+\r
+70-B3-D5 (hex) Stecomp\r
+EE0000-EE0FFF (base 16) Stecomp\r
+ Bollaarsdijk 11\r
+ Brielle 3231LA\r
+ NL\r
+\r
+70-B3-D5 (hex) Plenty Unlimited Inc\r
+D04000-D04FFF (base 16) Plenty Unlimited Inc\r
+ 590 Eccles Ave\r
+ South San Francisco CA 94080\r
+ US\r
+\r
+70-B3-D5 (hex) Aliter Technologies\r
+586000-586FFF (base 16) Aliter Technologies\r
+ Turcianska 16\r
+ Bratislava 82109\r
+ SK\r
+\r
+70-B3-D5 (hex) TORGOVYY DOM TEHNOLOGIY LLC\r
+7C0000-7C0FFF (base 16) TORGOVYY DOM TEHNOLOGIY LLC\r
+ Gospytalnaya 10, ap. 109, village Selyatino, city Naro-Fominsk,\r
+ Moscow Moscow Region 143345\r
+ RU\r
+\r
+70-B3-D5 (hex) Automata GmbH & Co. KG\r
+19D000-19DFFF (base 16) Automata GmbH & Co. KG\r
+ Gewerbering 5\r
+ Ried Bavaria 86510\r
+ DE\r
+\r
+70-B3-D5 (hex) XJ ELECTRIC CO., LTD.\r
+F26000-F26FFF (base 16) XJ ELECTRIC CO., LTD.\r
+ #1298 XUJI AVENUE\r
+ XUCHANG HENAN 461000\r
+ CN\r
+\r
+70-B3-D5 (hex) Topic Embedded Products B.V.\r
+63D000-63DFFF (base 16) Topic Embedded Products B.V.\r
+ Materiaalweg 4\r
+ Best Noord-Brabant 5681 RJ\r
+ NL\r
+\r
+70-B3-D5 (hex) EcoG\r
+1AE000-1AEFFF (base 16) EcoG\r
+ Gaenslerweg 24\r
+ Furth Bavaria 82041\r
+ DE\r
+\r
+70-B3-D5 (hex) Jiangsu Etern Compamy Limited\r
+DA0000-DA0FFF (base 16) Jiangsu Etern Compamy Limited\r
+ No. 1788 fenhu Guo Dao Road, Foho New&High-tech Industrial Development Zone, Wujiang\r
+ Suzhou Jiangsu 215211\r
+ CN\r
+\r
+70-B3-D5 (hex) JSC Ural Factories\r
+0FD000-0FDFFF (base 16) JSC Ural Factories\r
+ Gorky street 92\r
+ Izhevsk Udmurtia 426000\r
+ RU\r
+\r
+70-B3-D5 (hex) Semiconsoft, inc\r
+212000-212FFF (base 16) Semiconsoft, inc\r
+ 83 PINE HILL RD\r
+ SOUTHBOROUGH MA 01772\r
+ US\r
+\r
+70-B3-D5 (hex) M.S. CONTROL\r
+CE0000-CE0FFF (base 16) M.S. CONTROL\r
+ 139-141 Fitzgerald Street\r
+ WEST PERTH WA 6005\r
+ AU\r
+\r
+70-B3-D5 (hex) Hubbell Power Systems\r
+DDA000-DDAFFF (base 16) Hubbell Power Systems\r
+ 353 Powerville Road\r
+ Boonton Township NJ 07005\r
+ US\r
+\r
+70-B3-D5 (hex) Potter Electric Signal Co. LLC\r
+6D5000-6D5FFF (base 16) Potter Electric Signal Co. LLC\r
+ 1609 Park 370 Place\r
+ Hazelwood MO 63042\r
+ US\r
+\r
+70-B3-D5 (hex) Master Meter Inc.\r
+A9F000-A9FFFF (base 16) Master Meter Inc.\r
+ 101 Regency Pkwy\r
+ Mansfield TX 76063\r
+ US\r
+\r
+70-B3-D5 (hex) TIAMA\r
+798000-798FFF (base 16) TIAMA\r
+ ZA des Plattes - 1 Chemin des Plattes\r
+ VOURLES 69390 \r
+ FR\r
+\r
+70-B3-D5 (hex) Rapiot\r
+265000-265FFF (base 16) Rapiot\r
+ Eteläesplanadi 2\r
+ Helsinki 00130\r
+ FI\r
+\r
+70-B3-D5 (hex) OMNISENSING PHOTONICS LLC\r
+70D000-70DFFF (base 16) OMNISENSING PHOTONICS LLC\r
+ 8015 Four Quarter Road\r
+ Ellicott City MD 21043\r
+ US\r
+\r
+70-B3-D5 (hex) Torion Plasma Corporation\r
+B70000-B70FFF (base 16) Torion Plasma Corporation\r
+ 99 Hooper Rd, Unit #6\r
+ Barrie Ontario L4N9S3\r
+ CA\r
+\r
+70-B3-D5 (hex) Horizon Co., Ltd\r
+69B000-69BFFF (base 16) Horizon Co., Ltd\r
+ 1600 Aza-Shironoshita Asahi\r
+ Shin Asahi-cho Takashima, Shiga 520-1501\r
+ JP\r
+\r
+70-B3-D5 (hex) S Labs sp. z o.o.\r
+C53000-C53FFF (base 16) S Labs sp. z o.o.\r
+ Dworska 1a/1u\r
+ Kraków Lesser Poland 30-314\r
+ PL\r
+\r
+70-B3-D5 (hex) Smart Systems LLC\r
+746000-746FFF (base 16) Smart Systems LLC\r
+ Flat 1, building 7, Izmalkova street\r
+ Mykolaiv 54028\r
+ UA\r
+\r
+70-B3-D5 (hex) Megger Germany GmbH\r
+59F000-59FFFF (base 16) Megger Germany GmbH\r
+ Röderaue 41\r
+ Radeburg 01471\r
+ DE\r
+\r
+70-B3-D5 (hex) BluB0X Security, Inc.\r
+16D000-16DFFF (base 16) BluB0X Security, Inc.\r
+ 9 Bartlet Street Suite 334\r
+ Andover MA 01810\r
+ US\r
+\r
+70-B3-D5 (hex) Leviathan Solutions Ltd.\r
+A69000-A69FFF (base 16) Leviathan Solutions Ltd.\r
+ Abel Jeno utca 23\r
+ Budapest 1113\r
+ HU\r
+\r
+70-B3-D5 (hex) ACD Elekronik GmbH\r
+D6D000-D6DFFF (base 16) ACD Elekronik GmbH\r
+ Engelberg 2\r
+ Achstetten 88480\r
+ DE\r
+\r
+70-B3-D5 (hex) biosilver .co.,ltd\r
+D21000-D21FFF (base 16) biosilver .co.,ltd\r
+ 2-14-4, shinyokohama\r
+ yokohama kanagawa 2220033\r
+ JP\r
+\r
+70-B3-D5 (hex) Vemco Sp. z o. o.\r
+D45000-D45FFF (base 16) Vemco Sp. z o. o.\r
+ ul. Biala 1\r
+ Gdansk 80-435\r
+ PL\r
+\r
+70-B3-D5 (hex) Network Integrity Systems\r
+9FF000-9FFFFF (base 16) Network Integrity Systems\r
+ 1937 Tate Blvd. SE\r
+ Hickory NC 28602\r
+ US\r
+\r
70-B3-D5 (hex) EVCO SPA\r
A80000-A80FFF (base 16) EVCO SPA\r
VIA FELTRE N. 81\r
Arcugnano 36057\r
IT\r
\r
-70-B3-D5 (hex) Private\r
-720000-720FFF (base 16) Private\r
-\r
70-B3-D5 (hex) OnYield Inc Ltd\r
B74000-B74FFF (base 16) OnYield Inc Ltd\r
814 Houston Centre, 63 Mody Road\r
Shenzhen Guangdong 518054\r
CN\r
\r
-70-B3-D5 (hex) MiraeSignal Co., Ltd\r
-38C000-38CFFF (base 16) MiraeSignal Co., Ltd\r
- #203 E-dong Bundang Techno Park Yatapdong\r
- Sungnam Kyungkido 463760\r
- KR\r
-\r
70-B3-D5 (hex) Stara S/A Indústria de Implementos AgrÃcolas\r
13E000-13EFFF (base 16) Stara S/A Indústria de Implementos AgrÃcolas\r
Avenida Stara 519\r
Endicott NY 13760\r
US\r
\r
-70-B3-D5 (hex) DAYOUPLUS\r
-474000-474FFF (base 16) DAYOUPLUS\r
- 3F 509, Dunchon-daero, Jungwon-gu, Seongnam-si, Gyeonggi-do, Republic of Korea\r
- Seongnam-si Gyeonggi-do 13217\r
- KR\r
-\r
70-B3-D5 (hex) Guangzhou Xianhe Technology Engineering Co., Ltd\r
C13000-C13FFF (base 16) Guangzhou Xianhe Technology Engineering Co., Ltd\r
No. 30-6, Jiantai Road, Dongyong Town, Nansha District\r
Warsaw 02-486\r
PL\r
\r
+70-B3-D5 (hex) WIZAPPLY CO.,LTD\r
+8D2000-8D2FFF (base 16) WIZAPPLY CO.,LTD\r
+ 1-3-13-5107, Benten\r
+ Osaka-shi, Minato-ku Osaka-fu 552-0007\r
+ JP\r
+\r
+70-B3-D5 (hex) AmericanPharma Technologies\r
+B4C000-B4CFFF (base 16) AmericanPharma Technologies\r
+ 222 N 13th Street Suite 200\r
+ Boise ID 83702\r
+ US\r
+\r
70-B3-D5 (hex) ALFI\r
B0D000-B0DFFF (base 16) ALFI\r
Via Castelletto 20\r
Borgo Ticino NO 28040\r
IT\r
\r
-70-B3-D5 (hex) WIZAPPLY CO.,LTD\r
-8D2000-8D2FFF (base 16) WIZAPPLY CO.,LTD\r
- 1-3-13-5107, Benten\r
- Osaka-shi, Minato-ku Osaka-fu 552-0007\r
+70-B3-D5 (hex) Medipense Inc.\r
+72B000-72BFFF (base 16) Medipense Inc.\r
+ 9145 rue Boivin\r
+ Montreal Quebec H8R 2E5\r
+ CA\r
+\r
+70-B3-D5 (hex) MITSUBISHI HEAVY INDUSTRIES THERMAL SYSTEMS, LTD.\r
+7CC000-7CCFFF (base 16) MITSUBISHI HEAVY INDUSTRIES THERMAL SYSTEMS, LTD.\r
+ 3-1, Asahi, Nishibiwajima-Cho\r
+ Kiyosu Aichi 452-8561\r
JP\r
\r
+70-B3-D5 (hex) The-Box Development\r
+F31000-F31FFF (base 16) The-Box Development\r
+ D.D. Eisenhowerstraat 74\r
+ Groningen Groningen 9728 RX\r
+ NL\r
+\r
+70-B3-D5 (hex) MAS Elettronica sas di Mascetti Sandro e C.\r
+4FB000-4FBFFF (base 16) MAS Elettronica sas di Mascetti Sandro e C.\r
+ Via Risorgimento 16/C\r
+ Selvazzano Dentro Padova 35030\r
+ IT\r
+\r
+70-B3-D5 (hex) DHK Storage, LLC\r
+915000-915FFF (base 16) DHK Storage, LLC\r
+ 13873 Park Center Rd, Ste 510N\r
+ Herndon VA 20171\r
+ US\r
+\r
+70-B3-D5 (hex) Shenzhen Zhiting Technology Co.,Ltd\r
+FE1000-FE1FFF (base 16) Shenzhen Zhiting Technology Co.,Ltd\r
+ Room 516, Building 4, Qidi Xiexin science and Technology Park, Longcheng Street\r
+ Shenzhen Guangdong 518109\r
+ CN\r
+\r
+70-B3-D5 (hex) MiraeSignal Co., Ltd\r
+38C000-38CFFF (base 16) MiraeSignal Co., Ltd\r
+ #701,C-dong Bundang Techno Park Pangyoro 744\r
+ Bundang-gu Sungnam-si Kyungkido 13510\r
+ KR\r
+\r
+70-B3-D5 (hex) on-systems limited\r
+5B7000-5B7FFF (base 16) on-systems limited\r
+ 615A Jubilee Road\r
+ Letchworth Garden City Hertfordshire SG6 1NE\r
+ GB\r
+\r
+70-B3-D5 (hex) Blueprint Lab\r
+FE0000-FE0FFF (base 16) Blueprint Lab\r
+ 3-5 Queen St\r
+ Glebe NSW 2037\r
+ AU\r
+\r
+70-B3-D5 (hex) LEIDOS\r
+004000-004FFF (base 16) LEIDOS\r
+ 1121 W Reeves\r
+ Ridgecrest CA 93555\r
+ US\r
+\r
+70-B3-D5 (hex) Avionica \r
+CC0000-CC0FFF (base 16) Avionica \r
+ 9941 West Jessamine St\r
+ Miami FL 33157 \r
+ US\r
+\r
+70-B3-D5 (hex) Swiss Timing LTD\r
+725000-725FFF (base 16) Swiss Timing LTD\r
+ Rue de l'Envers 1\r
+ Corgemont 2606\r
+ CH\r
+\r
+70-B3-D5 (hex) RoyalShield Technologies India Private Limited\r
+F1B000-F1BFFF (base 16) RoyalShield Technologies India Private Limited\r
+ B-116, DDA Sheds, Okhla Industrial Area, Okhla Phase -I\r
+ New Delhi New Delhi 110020\r
+ IN\r
+\r
+70-B3-D5 (hex) Nudron IoT Solutions LLP\r
+6B4000-6B4FFF (base 16) Nudron IoT Solutions LLP\r
+ 10, Gitaneel Arcade, Hill Road, Bandra-W\r
+ Mumbai Maharashtra 400050\r
+ IN\r
+\r
+70-B3-D5 (hex) DORLET SAU\r
+DEB000-DEBFFF (base 16) DORLET SAU\r
+ Albert Eistein 34\r
+ Alava SPAIN 01510\r
+ ES\r
+\r
+70-B3-D5 (hex) Dadacon GmbH\r
+B79000-B79FFF (base 16) Dadacon GmbH\r
+ Hammarskjoeldring 75F\r
+ Frankfurt am Main Hessen 60439\r
+ DE\r
+\r
+70-B3-D5 (hex) XIA LLC\r
+3DC000-3DCFFF (base 16) XIA LLC\r
+ 31057 Genstar Road\r
+ HAYWARD CA 94544\r
+ US\r
+\r
+70-B3-D5 (hex) BAB TECHNOLOGIE GmbH\r
+E19000-E19FFF (base 16) BAB TECHNOLOGIE GmbH\r
+ Hoerder Burgstr.18\r
+ Dortmund NRW 44263\r
+ DE\r
+\r
+70-B3-D5 (hex) Schneider Electric Motion USA\r
+2E4000-2E4FFF (base 16) Schneider Electric Motion USA\r
+ 370 N. Main St.\r
+ Marlborough CT 06447\r
+ US\r
+\r
+70-B3-D5 (hex) Nordson Corporation\r
+50B000-50BFFF (base 16) Nordson Corporation\r
+ 11475 Lakefield Dr\r
+ Duluth GA 30097\r
+ US\r
+\r
+70-B3-D5 (hex) Done Design Inc\r
+928000-928FFF (base 16) Done Design Inc\r
+ 930 Delray Drive\r
+ Forest Hill MD 21050\r
+ US\r
+\r
+70-B3-D5 (hex) Jeio Tech \r
+720000-720FFF (base 16) Jeio Tech \r
+ 19 Alexander Road, Suite 7\r
+ Billerica MA 01821\r
+ US\r
+\r
+70-B3-D5 (hex) TESCAN Brno, s.r.o.\r
+812000-812FFF (base 16) TESCAN Brno, s.r.o.\r
+ Libusina tr.1\r
+ Brno 62300\r
+ CZ\r
+\r
70-B3-D5 (hex) System West dba ICS Electronics\r
E06000-E06FFF (base 16) System West dba ICS Electronics\r
7034 Commerce Circle Suite A\r
Seven Hills NSW 1730\r
AU\r
\r
+70-B3-D5 (hex) AKASAKATEC INC.\r
+D83000-D83FFF (base 16) AKASAKATEC INC.\r
+ 3F Marina Plaza 4-2\r
+ Shiraho kanazawa-ku Yokohamashi 2360007\r
+ JP\r
+\r
+70-B3-D5 (hex) VTEQ\r
+B12000-B12FFF (base 16) VTEQ\r
+ Conca de Barbera\r
+ Castellar del Vallés Barcelona / Spain 08122\r
+ ES\r
+\r
+70-B3-D5 (hex) promedias AG\r
+520000-520FFF (base 16) promedias AG\r
+ Grabenackerstrasse 27\r
+ Oberhasli ZH CH-8156\r
+ CH\r
+\r
00-1B-C5 (hex) OctoGate IT Security Systems GmbH\r
030000-030FFF (base 16) OctoGate IT Security Systems GmbH\r
Klingender Strasse 5\r
Paderborn NRW 33100\r
DE\r
\r
+70-B3-D5 (hex) Array Technologies Inc.\r
+FB4000-FB4FFF (base 16) Array Technologies Inc.\r
+ 21 Sequin Drive\r
+ Glastonbury 06033\r
+ US\r
+\r
+70-B3-D5 (hex) REO AG\r
+AD0000-AD0FFF (base 16) REO AG\r
+ Brühlerstr. 100\r
+ Solingen 42657\r
+ DE\r
+\r
+70-B3-D5 (hex) ejoin, s.r.o.\r
+44C000-44CFFF (base 16) ejoin, s.r.o.\r
+ Sturova 1\r
+ Dubnica nad Vahom 01841\r
+ SK\r
+\r
+70-B3-D5 (hex) TEX COMPUTER SRL \r
+390000-390FFF (base 16) TEX COMPUTER SRL \r
+ VIA MERCADANTE 35\r
+ CATTOLICA RIMINI 47841\r
+ IT\r
+\r
+70-B3-D5 (hex) Grau Elektronik GmbH\r
+314000-314FFF (base 16) Grau Elektronik GmbH\r
+ Badhausweg 14\r
+ Karlsbad Ittersbach Baden-Württemberg 76307\r
+ DE\r
+\r
+70-B3-D5 (hex) microWerk GmbH\r
+D2C000-D2CFFF (base 16) microWerk GmbH\r
+ Kaffeegasse, 7\r
+ Halsenbach 56283\r
+ DE\r
+\r
+70-B3-D5 (hex) Guan Show Technologe Co., Ltd.\r
+46D000-46DFFF (base 16) Guan Show Technologe Co., Ltd.\r
+ No.127, Jianguo 1st Rd., Lingya Dist.\r
+ Kaohsiung City 802\r
+ TW\r
+\r
+70-B3-D5 (hex) Foxtrot Research Corp\r
+604000-604FFF (base 16) Foxtrot Research Corp\r
+ 6201 Johns Road, Suite 3\r
+ Tampa FL 33634\r
+ US\r
+\r
+70-B3-D5 (hex) Monnit Corporation\r
+A1E000-A1EFFF (base 16) Monnit Corporation\r
+ 450 South Simmons STE 670\r
+ Kaysville UT 84037\r
+ US\r
+\r
+70-B3-D5 (hex) DEUTA-WERKE GmbH\r
+681000-681FFF (base 16) DEUTA-WERKE GmbH\r
+ Paffrather Str. 140\r
+ Bergisch Gladbach North Rhine-Westphalia 51465\r
+ DE\r
+\r
+70-B3-D5 (hex) Movicom Electric LLC\r
+3B3000-3B3FFF (base 16) Movicom Electric LLC\r
+ Nauchny proezd, 20\r
+ Moscow Moscow 117246\r
+ RU\r
+\r
+70-B3-D5 (hex) SMITEC S.p.A.\r
+312000-312FFF (base 16) SMITEC S.p.A.\r
+ Via Carlo Ceresa, 10\r
+ San Giovanni Bianco Bergamo 24015\r
+ IT\r
+\r
+70-B3-D5 (hex) Sicon srl\r
+690000-690FFF (base 16) Sicon srl\r
+ Via Sila 1/3\r
+ Isola Vicentina Vicenza 36033\r
+ IT\r
+\r
+70-B3-D5 (hex) SCHEIBER\r
+CFA000-CFAFFF (base 16) SCHEIBER\r
+ 2 BELLEVUE\r
+ SAINT PIERRE DU CHEMIN 85120\r
+ FR\r
+\r
+70-B3-D5 (hex) Telerob Gesellschaft für Fernhantierungs\r
+6D4000-6D4FFF (base 16) Telerob Gesellschaft für Fernhantierungs\r
+ Vogelsangstr. 8\r
+ Ostfildern 73760\r
+ DE\r
+\r
70-B3-D5 (hex) YUYAMA MFG Co.,Ltd\r
BBB000-BBBFFF (base 16) YUYAMA MFG Co.,Ltd\r
3-3-1\r
Petah Tikva Israel 49000\r
IL\r
\r
-70-B3-D5 (hex) Private\r
-F7C000-F7CFFF (base 16) Private\r
-\r
70-B3-D5 (hex) boekel\r
AF8000-AF8FFF (base 16) boekel\r
855 pennsylvania blvd\r
HONGKONG 999077\r
HK\r
\r
-70-B3-D5 (hex) Shenzhen Rongda Computer Co.,Ltd\r
-289000-289FFF (base 16) Shenzhen Rongda Computer Co.,Ltd\r
- Room A616, Aoshida Building, Zhongkang Road, Futian District\r
- Shenzhen Guangdong 518049\r
- CN\r
-\r
70-B3-D5 (hex) FIBERNET LTD\r
041000-041FFF (base 16) FIBERNET LTD\r
9 Hakidma st. Hi-Tech City Park,\r
Dinkelsbuehl Bavaria 91550\r
DE\r
\r
+70-B3-D5 (hex) Akse srl\r
+128000-128FFF (base 16) Akse srl\r
+ Via Aldo Moro, 39\r
+ Reggio Emilia Italy 42124\r
+ IT\r
+\r
+70-B3-D5 (hex) AXING AG\r
+CA6000-CA6FFF (base 16) AXING AG\r
+ Gewerbehaus Moskau\r
+ Ramsen 8262\r
+ CH\r
+\r
+70-B3-D5 (hex) LLC NTZ Mekhanotronika\r
+6C0000-6C0FFF (base 16) LLC NTZ Mekhanotronika\r
+ Pionerstroya, build 23a\r
+ Saint-Petersburg 198206\r
+ RU\r
+\r
+70-B3-D5 (hex) NAL Research Corporation\r
+1B0000-1B0FFF (base 16) NAL Research Corporation\r
+ 11100 Endeavor Ct, Suite 300\r
+ Manassas VA 20109\r
+ US\r
+\r
+70-B3-D5 (hex) Arwin Technology Limited\r
+8C9000-8C9FFF (base 16) Arwin Technology Limited\r
+ Unit 215, 2/F, 19W, 19 Science Park West Avenue\r
+ Hong Kong 0\r
+ HK\r
+\r
+70-B3-D5 (hex) PNETWORKS\r
+EF0000-EF0FFF (base 16) PNETWORKS\r
+ TEKNOPARK Bul. 1/1A No: 201 Pendik ?stanbul\r
+ Istanbul 34906\r
+ TR\r
+\r
+70-B3-D5 (hex) Herholdt Controls srl\r
+C6B000-C6BFFF (base 16) Herholdt Controls srl\r
+ Via Mestre 13\r
+ Milan 20132\r
+ IT\r
+\r
+70-B3-D5 (hex) Atlas Lighting Products\r
+CB5000-CB5FFF (base 16) Atlas Lighting Products\r
+ 1406 S Mebane St\r
+ Burlington 27215\r
+ US\r
+\r
+70-B3-D5 (hex) Weble SÃ rl\r
+96C000-96CFFF (base 16) Weble SÃ rl\r
+ Rue du Jura 12\r
+ Bussigny Vaud 1030\r
+ CH\r
+\r
+70-B3-D5 (hex) Grossenbacher Systeme AG\r
+CE8000-CE8FFF (base 16) Grossenbacher Systeme AG\r
+ Spinnereistrasse 10\r
+ St. Gallen 9008\r
+ CH\r
+\r
+70-B3-D5 (hex) G.S.D GROUP INC.\r
+B01000-B01FFF (base 16) G.S.D GROUP INC.\r
+ 2010 RUE MICHELIN, SUITE 100\r
+ LAVAL Quebec H7L 5C2\r
+ CA\r
+\r
+70-B3-D5 (hex) DIC Corporation\r
+5C3000-5C3FFF (base 16) DIC Corporation\r
+ DIC Building,7-20,Nihonbashi 3-chome\r
+ Chuo-ku,Tokyo 103-8233\r
+ JP\r
+\r
+70-B3-D5 (hex) Medicomp, Inc\r
+F7C000-F7CFFF (base 16) Medicomp, Inc\r
+ 600 Atlantis Rd\r
+ Melbourne FL 32904\r
+ US\r
+\r
+70-B3-D5 (hex) YUYAMA MFG Co.,Ltd\r
+CAD000-CADFFF (base 16) YUYAMA MFG Co.,Ltd\r
+ 3-3-1\r
+ TOYONAKASHI OSAKA 561-0841\r
+ JP\r
+\r
+70-B3-D5 (hex) Shenzhen Rongda Computer Co.,Ltd\r
+289000-289FFF (base 16) Shenzhen Rongda Computer Co.,Ltd\r
+ 905, Block B, DuoCaiKeChuan Park, No.5 Guanle Road\r
+ Longhua District Shenzhen, Guangdong 518110\r
+ CN\r
+\r
+70-B3-D5 (hex) Sono-Tek Corporation\r
+5C2000-5C2FFF (base 16) Sono-Tek Corporation\r
+ 2012 Rte. 9W Bldg 3\r
+ Milton NY 12547\r
+ US\r
+\r
+70-B3-D5 (hex) Breas Medical AB\r
+CF9000-CF9FFF (base 16) Breas Medical AB\r
+ Företagsvägen 1\r
+ Mölnlycke SE-435 33\r
+ SE\r
+\r
+70-B3-D5 (hex) Davitor AB\r
+E60000-E60FFF (base 16) Davitor AB\r
+ Skordarevagen 5\r
+ Kalmar 39353\r
+ SE\r
+\r
+70-B3-D5 (hex) Coloet S.r.l.\r
+713000-713FFF (base 16) Coloet S.r.l.\r
+ Via Mascheroni, 20\r
+ MILANO Italy 20145\r
+ IT\r
+\r
+70-B3-D5 (hex) meoENERGY\r
+7FA000-7FAFFF (base 16) meoENERGY\r
+ Glacisstraße 9/1\r
+ Graz 8010\r
+ AT\r
+\r
+70-B3-D5 (hex) European Synchrotron Radiation Facility\r
+160000-160FFF (base 16) European Synchrotron Radiation Facility\r
+ 71, avenue des Martyrs\r
+ Grenoble Isère 38000\r
+ FR\r
+\r
+70-B3-D5 (hex) Radian Research, Inc.\r
+9BC000-9BCFFF (base 16) Radian Research, Inc.\r
+ 3852 Fortune Drive\r
+ Lafayette IN 47905\r
+ US\r
+\r
+70-B3-D5 (hex) VERTEL DIGITAL PRIVATE LIMITED\r
+912000-912FFF (base 16) VERTEL DIGITAL PRIVATE LIMITED\r
+ C-98, SECTOR-10 \r
+ NOIDA Uttar Pradesh 201301\r
+ IN\r
+\r
+70-B3-D5 (hex) ITALIANA PONTI RADIO SRL\r
+452000-452FFF (base 16) ITALIANA PONTI RADIO SRL\r
+ VIA CA' BASSA 67\r
+ VARESE VARESE 21100\r
+ IT\r
+\r
+70-B3-D5 (hex) Stuyts Engineering Haarlem BV\r
+D1D000-D1DFFF (base 16) Stuyts Engineering Haarlem BV\r
+ Hogeweg 40\r
+ Zandvoort Noord-Holland 2042GH\r
+ NL\r
+\r
+70-B3-D5 (hex) sonatest\r
+8FD000-8FDFFF (base 16) sonatest\r
+ 1175 Rue Lavigerie, Bur.90\r
+ Quebec Quebec G1V 4P1\r
+ CA\r
+\r
+70-B3-D5 (hex) IDZ Ltd\r
+7F6000-7F6FFF (base 16) IDZ Ltd\r
+ 160 CITY ROAD\r
+ LONDON Select One... EC1V 2NX\r
+ GB\r
+\r
70-B3-D5 (hex) DISMUNTEL SAL\r
92C000-92CFFF (base 16) DISMUNTEL SAL\r
Pol ind cotes\r
Taipei Taiwan 11070\r
TW\r
\r
-70-B3-D5 (hex) Private\r
-278000-278FFF (base 16) Private\r
-\r
70-B3-D5 (hex) Arrowvale Electronics\r
B07000-B07FFF (base 16) Arrowvale Electronics\r
Shawbank Road\r
East Pittsburgh PA 15112-1242\r
US\r
\r
-70-B3-D5 (hex) PoolDigital GmbH & Co. KG\r
-063000-063FFF (base 16) PoolDigital GmbH & Co. KG\r
- Kaffeegasse, 7\r
- Halsenbach 56283\r
- DE\r
-\r
70-B3-D5 (hex) HORIBA ABX SAS\r
AB8000-AB8FFF (base 16) HORIBA ABX SAS\r
rue du caducee\r
40-42 Rue Du Docteur Finlay\r
PARIS CEDEX 15 75732\r
FR\r
+\r
+70-B3-D5 (hex) Shanghai Armour Technology Co., Ltd.\r
+8E5000-8E5FFF (base 16) Shanghai Armour Technology Co., Ltd.\r
+ Room 411, building 10, 471 Guiping Road, Xuhui District\r
+ Shanghai Shanghai 200233\r
+ CN\r
+\r
+70-B3-D5 (hex) Hangzhou Weimu Technology Co.,Ltd.\r
+373000-373FFF (base 16) Hangzhou Weimu Technology Co.,Ltd.\r
+ 3 / f, building 1, yongle village, cangqian street, yuhang district\r
+ Hangzhou Zhejiang 310000\r
+ CN\r
+\r
+70-B3-D5 (hex) Coda Octopus Products Limited\r
+4D9000-4D9FFF (base 16) Coda Octopus Products Limited\r
+ 38 S. Gyle Crescent, South Gyle Business Park\r
+ Edinburgh Scotland EH12 9EB\r
+ GB\r
+\r
+70-B3-D5 (hex) Xirgo Technologies LLC\r
+CA0000-CA0FFF (base 16) Xirgo Technologies LLC\r
+ 188 Camino Ruiz\r
+ Camarillo CA 93012\r
+ US\r
+\r
+70-B3-D5 (hex) Xirgo Technologies LLC\r
+CEB000-CEBFFF (base 16) Xirgo Technologies LLC\r
+ 188 Camino Ruiz\r
+ Camarillo CA 93012\r
+ US\r
+\r
+70-B3-D5 (hex) GreenFlux\r
+A02000-A02FFF (base 16) GreenFlux\r
+ Mauritskade 63\r
+ Amsterdam 1092 AD\r
+ NL\r
+\r
+70-B3-D5 (hex) Iylus Inc.\r
+02C000-02CFFF (base 16) Iylus Inc.\r
+ 3100 Clarendon Blvd., Suite 200\r
+ Arlington VA 22201\r
+ US\r
+\r
+70-B3-D5 (hex) Walter Müller AG\r
+0E4000-0E4FFF (base 16) Walter Müller AG\r
+ Russikerstrasse 37\r
+ Fehraltorf Zürich 8320\r
+ CH\r
+\r
+70-B3-D5 (hex) COONTROL Tecnologia em Combustão LTDA EPP\r
+8E9000-8E9FFF (base 16) COONTROL Tecnologia em Combustão LTDA EPP\r
+ RUA ABRAHAN LINCOLS, 464, Jardim América\r
+ RIO DO SUL SANTA CATARINA 89160202\r
+ BR\r
+\r
+70-B3-D5 (hex) Private\r
+278000-278FFF (base 16) Private\r
+ 600 Atlantis Rd\r
+ Melbourne FL 32904\r
+ US\r
+\r
+70-B3-D5 (hex) Sensoronic Co.,Ltd\r
+D52000-D52FFF (base 16) Sensoronic Co.,Ltd\r
+ 1311ho, sambo techno tower, Jomaru-ro 385beongil,\r
+ Bucheon-si Gyeonggi-do 14556\r
+ KR\r
+\r
+70-B3-D5 (hex) Neusoft Reach Automotive Technology (Shenyang) Co.,Ltd\r
+E42000-E42FFF (base 16) Neusoft Reach Automotive Technology (Shenyang) Co.,Ltd\r
+ No.2 Xinxiu Street, Hunnan District, Shenyang\r
+ Shenyang Liaoning 110000\r
+ CN\r
+\r
+70-B3-D5 (hex) YUYAMA MFG Co.,Ltd\r
+196000-196FFF (base 16) YUYAMA MFG Co.,Ltd\r
+ 1-4-30\r
+ MEISHINGUCHI,TOYONAKA OSAKA 561-0841\r
+ JP\r
+\r
+70-B3-D5 (hex) Guan Show Technologe Co., Ltd.\r
+829000-829FFF (base 16) Guan Show Technologe Co., Ltd.\r
+ No.127, Jianguo 1st Rd., Lingya Dist.\r
+ Kaohsiung City 802\r
+ TW\r
+\r
+70-B3-D5 (hex) Thermokon Sensortechnik GmbH\r
+581000-581FFF (base 16) Thermokon Sensortechnik GmbH\r
+ Platanenweg 1\r
+ Mittenaar Hessen 35756\r
+ DE\r
+\r
+70-B3-D5 (hex) PoolDigital GmbH & Co. KG\r
+063000-063FFF (base 16) PoolDigital GmbH & Co. KG\r
+ Gablinger Weg 102\r
+ Augsburg 86156\r
+ DE\r
+\r
+70-B3-D5 (hex) MB connect line GmbH Fernwartungssysteme\r
+71A000-71AFFF (base 16) MB connect line GmbH Fernwartungssysteme\r
+ Winnettener Straße 6\r
+ Dinkelsbuehl Bavaria 91550\r
+ DE\r
+\r
+70-B3-D5 (hex) Loma Systems s.r.o.\r
+BC8000-BC8FFF (base 16) Loma Systems s.r.o.\r
+ Southwood\r
+ Farnborough Hampshire GU14 0NY\r
+ GB\r
+\r
+70-B3-D5 (hex) MECT SRL\r
+2C5000-2C5FFF (base 16) MECT SRL\r
+ VIA E. FERMI 57/59\r
+ ALPIGNANO string:TO 10091\r
+ IT\r
+\r
+70-B3-D5 (hex) CTROGERS LLC\r
+474000-474FFF (base 16) CTROGERS LLC\r
+ 815 1st Ave #174\r
+ Seattle WA 98104\r
+ US\r
+\r
+70-B3-D5 (hex) EIZO RUGGED SOLUTIONS\r
+5B9000-5B9FFF (base 16) EIZO RUGGED SOLUTIONS\r
+ 442 Northlake Blvd Suite 1008\r
+ Altamonte Springs FL 32701\r
+ US\r
+\r
+70-B3-D5 (hex) ISG Nordic AB\r
+DEF000-DEFFFF (base 16) ISG Nordic AB\r
+ Energigatan 9\r
+ KUNGSBACKA Select State SE-43437\r
+ SE\r
+\r
+70-B3-D5 (hex) PARAGON ID\r
+036000-036FFF (base 16) PARAGON ID\r
+ Les Aubépins\r
+ ARGENT SUR SAULDRE CHER 18410\r
+ FR\r
#
# List of PCI ID's
#
-# Version: 2020.11.14
-# Date: 2020-11-14 03:15:02
+# Version: 2021.02.12
+# Date: 2021-02-12 03:15:01
#
# Maintained by Albert Pool, Martin Mares, and other volunteers from
# the PCI ID Project at https://pci-ids.ucw.cz/.
1d49 0200 ThinkSystem 430-8i SAS/SATA 12Gb HBA
1d49 0202 ThinkSystem 430-8e SAS/SATA 12Gb HBA
1d49 0204 ThinkSystem 430-8i SAS/SATA 12Gb Dense HBA
-# PCIe switch SES management endpoint
- 00b2 PEX880xx PCIe Gen 4 Switch SES management endpoint
+ 00b2 PCIe Switch management endpoint
+ 1d49 0003 ThinkSystem 1611-8P PCIe Gen4 NVMe Switch Adapter
00be SAS3504 Fusion-MPT Tri-Mode RAID On Chip (ROC)
00bf SAS3404 Fusion-MPT Tri-Mode I/O Controller Chip (IOC)
00c0 SAS3324 PCI-Express Fusion-MPT SAS-3
8086 0523 MegaRAID RAID Controller SRCS16
3050 SAS2008 PCI-Express Fusion-MPT SAS-2
6001 DX1 Multiformat Broadcast HD/SD Encoder/Decoder
+ c012 PEX880xx PCIe Gen 4 Switch
+ 1d49 0003 ThinkSystem 1611-8P PCIe Gen4 NVMe Switch Adapter
1001 Kolter Electronic
0010 PCI 1616 Measurement card with 32 digital I/O lines
0011 OPTO-PCI Opto-Isolated digital I/O board
1478 Navi 10 XL Upstream Port of PCI Express Switch
1479 Navi 10 XL Downstream Port of PCI Express Switch
154c Kryptos [Radeon RX 350]
+ 1462 7c28 MS-7C28 Motherboard
154e Garfield
1551 Arlene
1552 Pooky
15d8 Picasso
103c 8615 Pavilion Laptop 15-cw1xxx
17aa 5124 ThinkPad E595
+ ea50 cc10 RXi2-BP
15dd Raven Ridge [Radeon Vega Series / Radeon Vega Mobile Series]
103c 83c6 Radeon Vega 8 Mobile
+ 1043 876b PRIME Motherboard
1458 d000 Radeon RX Vega 11
+ ea50 cc10 RXi2-BP
15de Raven/Raven2/Fenghuang HDMI/DP Audio Controller
103c 8615 Pavilion Laptop 15-cw1xxx
+ 1043 876b PRIME B450M-A Motherboard
17aa 5124 ThinkPad E595
+ ea50 cc10 RXi2-BP
15df Raven/Raven2/Fenghuang/Renoir Cryptographic Coprocessor
103c 8615 Pavilion Laptop 15-cw1xxx
+ ea50 ce19 mCOM10-L1900
15ff Fenghuang [Zhongshan Subor Z+]
1607 Arden
1636 Renoir
+ 1638 Cezanne
+ 163f VanGogh
+ 164c Lucienne
1714 BeaverCreek HDMI Audio [Radeon HD 6500D and 6400G-6600G series]
103c 168b ProBook 4535s
3150 RV380/M24 [Mobility Radeon X600]
1179 ff50 Satellite P305D-S8995E
1458 a022 GA-MA770-DS3rev2.0 Motherboard
1458 a102 GA-880GMA-USB3
+ 1462 7596 760GM-E51(MS-7596) Motherboard
17f2 5000 KI690-AM2 Motherboard
4384 SBx00 PCI to PCI Bridge
4385 SBx00 SMBus Controller
1179 ff50 Satellite P305D-S8995E
1458 4385 GA-MA770-DS3rev2.0 Motherboard
1462 7368 K9AG Neo2
+ 1462 7596 760GM-E51(MS-7596) Motherboard
15d9 a811 H8DGU
174b 1001 PURE Fusion Mini
17f2 5000 KI690-AM2 Motherboard
1043 8389 M4A785TD Motherboard
105b 0e13 N15235/A74MX mainboard / AMD SB700
1458 b002 GA-MA770-DS3rev2.0 Motherboard
+ 1462 7596 760GM-E51(MS-7596) Motherboard
1849 4390 Motherboard (one of many)
4391 SB7x0/SB8x0/SB9x0 SATA Controller [AHCI mode]
103c 1609 ProLiant MicroServer N36L
1043 8443 M5A88-V EVO
105b 0e13 N15235/A74MX mainboard / AMD SB700
1458 5004 GA-880GMA-USB3
+ 1462 7596 760GM-E51(MS-7596) Motherboard
15d9 a811 H8DGU
174b 1001 PURE Fusion Mini
4397 SB7x0/SB8x0/SB9x0 USB OHCI0 Controller
1043 8443 M5A88-V EVO
105b 0e13 N15235/A74MX mainboard / AMD SB700
1458 5004 GA-880GMA-USB3
+ 1462 7596 760GM-E51(MS-7596) Motherboard
15d9 a811 H8DGU
174b 1001 PURE Fusion Mini
4398 SB7x0 USB OHCI1 Controller
1019 2120 A785GM-M
1043 82ef M3A78-EH Motherboard
105b 0e13 N15235/A74MX mainboard / AMD SB700
+ 1462 7596 760GM-E51(MS-7596) Motherboard
15d9 a811 H8DGU
4399 SB7x0/SB8x0/SB9x0 USB OHCI2 Controller
1019 2120 A785GM-M
1043 8443 M5A88-V EVO
105b 0e13 N15235/A74MX mainboard / AMD SB700
1458 5004 GA-880GMA-USB3
+ 1462 7596 760GM-E51(MS-7596) Motherboard
174b 1001 PURE Fusion Mini
439c SB7x0/SB8x0/SB9x0 IDE Controller
1002 4392 MSI MS-7713 motherboard
103c 1609 ProLiant MicroServer N36L
1043 82ef M3A78-EH Motherboard
105b 0e13 N15235/A74MX mainboard / AMD SB700
+ 1462 7596 760GM-E51(MS-7596) Motherboard
439d SB7x0/SB8x0/SB9x0 LPC host controller
1019 2120 A785GM-M
103c 1609 ProLiant MicroServer N36L
1043 82ef M3A78-EH Motherboard
1043 8443 M5A88-V EVO
105b 0e13 N15235/A74MX mainboard / AMD SB700
+ 1462 7596 760GM-E51(MS-7596) Motherboard
174b 1001 PURE Fusion Mini
43a0 SB700/SB800/SB900 PCI to PCI bridge (PCIE port 0)
43a1 SB700/SB800/SB900 PCI to PCI bridge (PCIE port 1)
5964 RV280 [Radeon 9200 SE]
1002 5964 Radeon 9200 SE, 64-bit 128MB DDR, 200/166MHz
1043 c006 Radeon 9200 SE / TD / 128M
- 1458 4018 Radeon 9200 SE
+ 1458 4018 R92S128T (Radeon 9200 SE 128MB)
1458 4032 Radeon 9200 SE 128MB
147b 6191 R9200SE-DT
148c 2073 CN-AG92E
1002 5c63 Apple iBook G4 2004
144d c00c P30 notebook
5d44 RV280 [Radeon 9200 SE] (Secondary)
- 1458 4019 Radeon 9200 SE (Secondary)
+ 1458 4019 R92S128T (Radeon 9200 SE 128MB Secondary)
1458 4032 Radeon 9200 SE 128MB
147b 6190 R9200SE-DT (Secondary)
174b 7c12 Radeon 9200 SE (Secondary)
6607 Mars LE [Radeon HD 8530M / R5 M240]
6608 Oland GL [FirePro W2100]
13cc 3d28 MXRT-2600
+ 6609 Oland GL [FirePro W2100 / Barco MXRT 2600]
6610 Oland XT [Radeon HD 8670 / R7 250/350]
1019 0030 Radeon HD 8670
1028 2120 Radeon R7 250
6667 Jet ULT [Radeon R5 M230]
666f Sun LE [Radeon HD 8550M / R5 M230]
66a0 Vega 20 [Radeon Instinct]
- 66a1 Vega 20
+ 66a1 Vega 20 WKS GL-XE [Radeon Pro VII]
66a2 Vega 20
- 66a3 Vega 20
+ 66a3 Vega 20 [Radeon Pro Vega II/Radeon Pro Vega II Duo]
66a7 Vega 20 [Radeon Pro Vega 20]
66af Vega 20 [Radeon VII]
6704 Cayman PRO GL [FirePro V7900]
1043 04dd STRIX R9 390
148c 2358 Radeon R9 390
174b e324 Sapphire Nitro R9 390
+ 67b8 Hawaii XT [Radeon R9 290X Engineering Sample]
67b9 Vesuvius [Radeon R9 295X2]
67be Hawaii LE
67c0 Ellesmere [Radeon Pro WX 7100 Mobile]
1462 3418 Radeon RX 580 Armor 4G OC
1462 341b Radeon RX 570 Armor 8G OC
1462 341e Radeon RX 570 Armor 4G OC
+ 1462 809e Radeon RX 480 4GB
1462 8a92 Radeon RX 580
148c 2372 Radeon RX 480 [Red Dragon]
148c 2373 Radeon RX 470
148c 2379 Radeon RX 570 4G [Red Dragon]
1682 9470 Radeon RX 470
1682 9480 Radeon RX 480
+ 1682 9587 Radeon RX 590 FATBOY 8GB
1682 9588 Radeon RX 580 XTR
1682 c570 Radeon RX 570
1682 c580 Radeon RX 580
6864 Vega 10 [Radeon Pro V340]
6867 Vega 10 XL [Radeon Pro Vega 56]
6868 Vega 10 [Radeon PRO WX 8100/8200]
+ 6869 Vega 10 XGA [Radeon Pro Vega 48]
+ 686a Vega 10 LEA
+ 686b Vega 10 XTXA [Radeon Pro Vega 64X]
686c Vega 10 [Radeon Instinct MI25 MxGPU]
+ 686d Vega 10 GLXTA
+ 686e Vega 10 GLXLA
687f Vega 10 XL/XT [Radeon RX Vega 56/64]
1002 0b36 RX Vega64
1002 6b76 RX Vega64
1458 230c Radeon RX VEGA 56 GAMING OC 8G
+ 1da2 e376 Radeon RX VEGA 56 Pulse 8GB OC HBM2
6880 Lexington [Radeon HD 6550M]
103c 163c Pavilion dv6 Radeon HD 6550M
6888 Cypress XT [FirePro V8800]
17af 3000 Radeon HD 6510
17af 3010 Radeon HD 5630
68da Redwood LE [Radeon HD 5550/5570/5630/6390/6490/7570]
+ 1462 8071 VR5550-MD1G (Radeon HD 5550)
148c 3000 Radeon HD 6390
148c 3001 Radeon HD 6490
1545 7570 Radeon HD 7570
7312 Navi 10 [Radeon Pro W5700]
731f Navi 10 [Radeon RX 5600 OEM/5600 XT / 5700/5700 XT]
1458 2313 Radeon RX 5700 XT Gaming OC
+ 1682 5701 RX 5700 XT RAW II
1da2 e411 Radeon RX 5600 XT
7340 Navi 14 [Radeon RX 5500/5500M / Pro 5500M]
7341 Navi 14 [Radeon Pro W5500]
7347 Navi 14 [Radeon Pro W5500M]
734f Navi 14 [Radeon Pro W5300M]
7360 Navi 12 [Radeon Pro 5600M]
+ 7388 Arcturus GL-XL
+ 738c Arcturus GL-XL [AMD Instinct MI100]
+ 738e Arcturus GL-XL
73bf Navi 21 [Radeon RX 6800/6800 XT / 6900 XT]
+ 1eae 6701 XFX Speedster MERC 319 AMD Radeon RX 6800 XT Black
73c3 Navi 22
73df Navi 22
+ 73e0 Navi 23
73ff Navi 23
7833 RS350 Host Bridge
7834 RS350 [Radeon 9100 PRO/XT IGP]
95cd RV620 GL [FirePro 2450]
95cf RV620 GL [FirePro 2260]
960f RS780 HDMI Audio [Radeon 3000/3100 / HD 3200/3300]
+ 1462 7596 760GM-E51(MS-7596) Motherboard
9610 RS780 [Radeon HD 3200]
1458 d000 GA-MA78GM-S2H Motherboard
9611 RS780C [Radeon 3100]
9614 RS780D [Radeon HD 3300]
9615 RS780E [Radeon HD 3200]
9616 RS780L [Radeon 3000]
+# ID is probably a copy-paste error by a MSI developer from another mainboard, since all other ID numbers on this mainboard including the sub-device of this device has used subsystem ID 1462:7596
+ 1462 7501 760GM-E51(MS-7596) Motherboard
9640 Sumo [Radeon HD 6550D]
9641 Sumo [Radeon HD 6620G]
9642 SuperSumo [Radeon HD 6370D]
9809 Wrestler [Radeon HD 7310]
980a Wrestler [Radeon HD 7290]
9830 Kabini [Radeon HD 8400 / R3 Series]
+ 1043 8623 AM1I-A Motherboard
9831 Kabini [Radeon HD 8400E]
9832 Kabini [Radeon HD 8330]
1849 9832 QC5000-ITX/PH
9839 Kabini [Radeon HD 8180]
983d Temash [Radeon HD 8250/8280G]
9840 Kabini HDMI/DP Audio
+ 1043 8623 AM1I-A Motherboard
1849 9840 QC5000-ITX/PH
9850 Mullins [Radeon R3 Graphics]
9851 Mullins [Radeon R4/R5 Graphics]
1450 Family 17h (Models 00h-0fh) Root Complex
1451 Family 17h (Models 00h-0fh) I/O Memory Management Unit
1452 Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge
+ ea50 ce19 mCOM10-L1900
1453 Family 17h (Models 00h-0fh) PCIe GPP Bridge
1454 Family 17h (Models 00h-0fh) Internal PCIe GPP Bridge 0 to Bus B
1455 Zeppelin/Renoir PCIe Dummy Function
149b Starship Reserved SSP
149c Matisse USB 3.0 Host Controller
1462 7c37 X570-A PRO motherboard
+ 149d Vangogh CVIP
1510 Family 14h Processor Root Complex
174b 1001 PURE Fusion Mini
1512 Family 14h Processor Root Port
1534 Family 16h Processor Function 4
1535 Family 16h Processor Function 5
1536 Family 16h Processor Root Complex
+ 1043 8623 AM1I-A Motherboard
1849 1536 QC5000-ITX/PH
1537 Kabini/Mullins PSP-Platform Security Processor
1538 Family 16h Processor Function 0
15be Stoney Audio Processor
15d0 Raven/Raven2 Root Complex
103c 8615 Pavilion Laptop 15-cw1xxx
+ 1043 876b PRIME B450M-A Motherboard
15d1 Raven/Raven2 IOMMU
103c 8615 Pavilion Laptop 15-cw1xxx
+ 1043 876b PRIME B450M-A Motherboard
+ ea50 ce19 mCOM10-L1900
15d2 Raven/Raven2 PCIe Dummy Host Bridge
15d3 Raven/Raven2 PCIe GPP Bridge [6:0]
15d4 FireFlight USB 3.1
15d5 FireFlight USB 3.1
15da Raven/Raven2 PCIe Dummy Host Bridge
15db Raven/Raven2 Internal PCIe GPP Bridge 0 to Bus A
+ ea50 ce19 mCOM10-L1900
15dc Raven/Raven2 Internal PCIe GPP Bridge 0 to Bus B
+ ea50 ce19 mCOM10-L1900
15de Raven/Raven2/FireFlight HD Audio Controller
15df Family 17h (Models 10h-1fh) Platform Security Processor
+ 1043 876b PRIME Motherboard
17aa 5124 ThinkPad E595
+ ea50 ce19 mCOM10-L1900
15e0 Raven USB 3.1
103c 8615 Pavilion Laptop 15-cw1xxx
+ 1043 876b PRIME Motherboard
17aa 5124 ThinkPad E595
+ ea50 ce19 mCOM10-L1900
15e1 Raven USB 3.1
103c 8615 Pavilion Laptop 15-cw1xxx
+ 1043 876b PRIME Motherboard
17aa 5124 ThinkPad E595
+ ea50 ce19 mCOM10-L1900
15e2 Raven/Raven2/FireFlight/Renoir Audio Processor
17aa 5124 ThinkPad E595
15e3 Family 17h (Models 10h-1fh) HD Audio Controller
103c 8615 Pavilion Laptop 15-cw1xxx
+ 1043 86c7 PRIME B450M-A Motherboard
17aa 5124 ThinkPad E595
15e4 Raven/Raven2/Renoir Sensor Fusion Hub
15e5 Raven2 USB 3.1
1642 Renoir WLAN
1643 Renoir BT
1644 Renoir I2S
+ 1648 VanGogh Root Complex
+ 1649 VanGogh PSP/CCP
1700 Family 12h/14h Processor Function 0
1701 Family 12h/14h Processor Function 1
1702 Family 12h/14h Processor Function 2
7801 FCH SATA Controller [AHCI mode]
103c 168b ProBook 4535s Notebook
103c 194e ProBook 455 G1 Notebook
+ 1043 8623 AM1I-A Motherboard
17aa 3988 Z50-75
1849 7801 QC5000-ITX/PH
7802 FCH SATA Controller [RAID mode]
7807 FCH USB OHCI Controller
103c 194e ProBook 455 G1 Notebook
103c 1985 Pavilion 17-e163sg Notebook PC
+ 1043 8623 AM1I-A Motherboard
17aa 3988 Z50-75
1849 7807 QC5000-ITX/PH
7808 FCH USB EHCI Controller
103c 194e ProBook 455 G1 Notebook
103c 1985 Pavilion 17-e163sg Notebook PC
+ 1043 8623 AM1I-A Motherboard
17aa 3988 Z50-75
1849 7808 QC5000-ITX/PH
7809 FCH USB OHCI Controller
780b FCH SMBus Controller
103c 194e ProBook 455 G1 Notebook
103c 1985 Pavilion 17-e163sg Notebook PC
+ 1043 8623 AM1I-A Motherboard
17aa 3988 Z50-75
1849 780b QC5000-ITX/PH
780c FCH IDE Controller
103c 194e ProBook 455 G1 Notebook
103c 1985 Pavilion 17-e163sg Notebook PC
1043 8444 F2A85-M Series
+ 1043 8576 AM1I-A Motherboard
17aa 3988 Z50-75
1849 8892 QC5000-ITX/PH
780e FCH LPC Bridge
103c 194e ProBook 455 G1 Notebook
103c 1985 Pavilion 17-e163sg Notebook PC
+ 1043 8623 AM1I-A Motherboard
17aa 3988 Z50-75
1849 780e QC5000-ITX/PH
780f FCH PCI Bridge
7814 FCH USB XHCI Controller
103c 194e ProBook 455 G1 Notebook
103c 1985 Pavilion 17-e163sg Notebook PC
+ 1043 8623 AM1I-A Motherboard
17aa 3988 Z50-75
1849 7814 QC5000-ITX/PH
7900 FCH SATA Controller [IDE mode]
7901 FCH SATA Controller [AHCI mode]
103c 8615 Pavilion Laptop 15-cw1xxx
+ 1043 876b PRIME Motherboard
1462 7c37 X570-A PRO motherboard
+ ea50 ce19 mCOM10-L1900
7902 FCH SATA Controller [RAID mode]
7903 FCH SATA Controller [RAID mode]
7904 FCH SATA Controller [AHCI mode]
7908 FCH USB EHCI Controller
790b FCH SMBus Controller
103c 8615 Pavilion Laptop 15-cw1xxx
+ 1043 876b PRIME Motherboard
1462 7c37 X570-A PRO motherboard
17aa 5124 ThinkPad E595
+ ea50 ce19 mCOM10-L1900
790e FCH LPC Bridge
103c 8615 Pavilion Laptop 15-cw1xxx
+ 1043 876b PRIME B450M-A Motherboard
1462 7c37 X570-A PRO motherboard
17aa 5124 ThinkPad E595
+ ea50 ce19 mCOM10-L1900
790f FCH PCI Bridge
7914 FCH USB XHCI Controller
9600 RS780 Host Bridge
1931 000a GlobeTrotter Fusion Quad Lite (PPP data)
1931 000b GlobeTrotter Fusion Quad Lite (GSM data)
807d 0035 PCI-USB2 (OHCI subsystem)
+ 8086 4d44 D850EMV2 motherboard
003b PCI to C-bus Bridge
003e NAPCCARD Cardbus Controller
0046 PowerVR PCX2 [midas]
14c2 0205 PTI-205N USB 2.0 Host Controller
1799 0002 Root Hub
807d 1043 PCI-USB2 (EHCI subsystem)
+ 8086 4d44 D850EMV2 motherboard
00e7 uPD72873 [Firewarden] IEEE1394a OHCI 1.1 Link/2-port PHY Controller
00f2 uPD72874 [Firewarden] IEEE1394a OHCI 1.1 Link/3-port PHY Controller
00f3 uPD6113x Multimedia Decoder/Processor [EMMA2]
103c 17e8 SN1000Q 16Gb Dual Port Fibre Channel Adapter
103c 1939 QMH2672 16Gb Dual Port Fibre Channel Adapter
103c 8002 3830C 16G Fibre Channel Host Bus Adapter
+ 1077 0241 QLE2670 16Gb Single Port Fibre Channel Adapter
2071 ISP2714-based 16/32Gb Fibre Channel to PCIe Adapter
1077 0283 QLE2764 Quad Port 32Gb Fibre Channel to PCIe Adapter
1077 029e QLE2694 Quad Port 16Gb Fibre Channel to PCIe Adapter
2081 ISP2814-based 64/32G Fibre Channel to PCIe Controller
1077 02e1 QLE2874 Quad Port 64GFC PCIe Gen4 x16 Adapter
1077 02e3 QLE2774 Quad Port 32GFC PCIe Gen4 x16 Adapter
+ 2089 ISP2854-based 64/32G Fibre Channel to PCIe Controller with StorCryption
+ 1077 02e8 QLE2884 Quad Port 64GFC PCIe Gen4 x16 Adapter with StorCryption
+ 1077 02ea QLE2784 Quad Port 32GFC PCIe Gen4 x16 Adapter with StorCryption
2100 QLA2100 64-bit Fibre Channel Adapter
1077 0001 QLA2100 64-bit Fibre Channel Adapter
2200 QLA2200 64-bit Fibre Channel Adapter
1590 0203 StoreFabric SN1600Q 32Gb Single Port Fibre Channel Host Bus Adapter
1590 0204 StoreFabric SN1600Q 32Gb Dual Port Fibre Channel Host Bus Adapter
1590 022d 5830C 32Gb Dual Port Fibre Channel Adapter
+ 193d 100d NIC-FC680i-Mb-2x16G
2281 ISP2812-based 64/32G Fibre Channel to PCIe Controller
1077 02e2 QLE2872 Dual Port 64GFC PCIe Gen4 x8 Adapter
1077 02e4 QLE2772 Dual Port 32GFC PCIe Gen4 x8 Adapter
1077 02f3 QLogic 2x32Gb QLE2772 FC HBA
1590 02d3 SN1610Q - 1P Enhanced 32GFC Single Port Fibre Channel Host Bus Adapter
1590 02d4 SN1610Q – 2P Enhanced 32GFC Dual Port Fibre Channel Host Bus Adapter
+ 2289 ISP2852-based 64/32G Fibre Channel to PCIe Controller with StorCryption
+ 1077 02e9 QLE2882 Dual Port 64GFC PCIe Gen4 x8 Adapter with StorCryption
+ 1077 02eb QLE2782 Dual Port 32GFC PCIe Gen4 x8 Adapter with StorCryption
+ 1077 02ef QLE2880 Single Port 64GFC PCIe Gen4 x8 Adapter with StorCryption
+ 1077 02f1 QLE2780 Single Port 32GFC PCIe Gen4 x8 Adapter with StorCryption
2300 QLA2300 64-bit Fibre Channel Adapter
2312 ISP2312-based 2Gb Fibre Channel to PCI-X HBA
103c 0131 2Gb Fibre Channel - Single port [A7538A]
1590 021f 10/25GbE 2P QL41262HMCU-HP Adapter
1590 0220 10/25GbE 2P QL41122HLRJ-HP Adapter
1590 02bd 10Gb 2P 524SFP+ NIC
+ 193d 1030 NIC-ETH681i-Mb-2x25G
+ 193d 1032 NIC-ETH682i-Mb-2x25G
8080 FastLinQ QL41000 Series 10/25/40/50GbE Controller (FCoE)
1077 0001 10GE 2P QL41162HxRJ-DE Adapter
1077 0002 10GE 2P QL41112HxCU-DE Adapter
10b5 2905 Alpermann+Velte PCI TS: Time Synchronisation Board
10b5 3196 Goramo PLX200SYN sync serial card
10b5 9050 PCI-I04 PCI Passive PC/CAN Interface
+ 12fe 0001 CAN-PCI/331 CAN bus controller
1369 8901 PCX11+ PCI
1369 8f01 VX222
1369 9401 PCX924
0a21 GT216M [GeForce GT 330M]
0a22 GT216 [GeForce 315]
0a23 GT216 [GeForce 210]
+ 0a24 GT216 [GeForce 405]
0a26 GT216 [GeForce 405]
0a27 GT216 [GeForce 405]
0a28 GT216M [GeForce GT 230M]
1aeb TU116 High Definition Audio Controller
1aec TU116 USB 3.1 Host Controller
1aed TU116 USB Type-C UCSI Controller
+ 1aef GA102 High Definition Audio Controller
1b00 GP102 [TITAN X]
1b01 GP102 [GeForce GTX 1080 Ti 10GB]
1b02 GP102 [TITAN Xp]
1b07 GP102 [P102-100]
1b30 GP102GL [Quadro P6000]
1b38 GP102GL [Tesla P40]
+ 1b39 GP102GL [Tesla P10]
1b70 GP102GL
1b78 GP102GL
1b80 GP104 [GeForce GTX 1080]
1c2d GP106M
1c30 GP106GL [Quadro P2000]
1c31 GP106GL [Quadro P2200]
- 1c35 GP106
- 1c36 GP106
+ 1c35 GP106M [Quadro P2000 Mobile]
+ 1c36 GP106 [P106M]
1c60 GP106BM [GeForce GTX 1060 Mobile 6GB]
103c 8390 GeForce GTX 1060 Max-Q 6GB
1c61 GP106BM [GeForce GTX 1050 Ti Mobile]
1f98 TU117M [GeForce MX450]
1f99 TU117M
1f9c TU117M [GeForce MX450]
+ 1f9d TU117M [GeForce GTX 1650 Mobile / Max-Q]
1fae TU117GL
1fb8 TU117GLM [Quadro T2000 Mobile / Max-Q]
1fb9 TU117GLM [Quadro T1000 Mobile]
+ 1fbb TU117GLM [Quadro T500 Mobile]
1fbf TU117GL
1fd9 TU117BM [GeForce GTX 1650 Mobile Refresh]
1ff9 TU117GLM [Quadro T1000 Mobile]
20b0 GA100 [A100 SXM4 40GB]
20b1 GA100 [A100 PCIe 40GB]
+ 20b2 GA100 [A100 SXM4 80GB]
20be GA100 [GRID A100A]
20bf GA100 [GRID A100B]
20f1 GA100 [A100 PCIe 40GB]
2192 TU116M [GeForce GTX 1650 Ti Mobile]
21ae TU116GL
21bf TU116GL
+ 21c2 TU116
21c4 TU116 [GeForce GTX 1660 SUPER]
21d1 TU116BM [GeForce GTX 1660 Ti Mobile]
2204 GA102 [GeForce RTX 3090]
+ 2205 GA102 [GeForce RTX 3080 Ti]
2206 GA102 [GeForce RTX 3080]
+ 10de 1467 GA102 [GeForce RTX 3080]
10de 146d GA102 [GeForce RTX 3080 20GB]
1462 3892 RTX 3080 10GB GAMING X TRIO
222b GA102 [GeForce RTX 3090 Engineering Sample]
222f GA102 [GeForce RTX 3080 11GB / 12GB Engineering Sample]
2230 GA102GL [RTX A6000]
+ 2235 GA102GL [RTX A40]
+ 2236 GA102GL
223f GA102GL
+ 228b GA104 High Definition Audio Controller
+ 2321 GA103
2482 GA104 [GeForce RTX 3070 Ti]
2484 GA104 [GeForce RTX 3070]
10de 146b GA104 [GeForce RTX 3070]
10de 14ae GA104 [GeForce RTX 3070 16GB]
2486 GA104 [GeForce RTX 3060 Ti]
- 249c GA104M [GeForce RTX 3070 Mobile / Max-Q 8GB/16GB]
+ 249c GA104M [GeForce RTX 3080 Mobile / Max-Q 8GB/16GB]
249d GA104M [GeForce RTX 3070 Mobile / Max-Q]
+ 249f GA104M
24ac GA104 [GeForce RTX 30x0 Engineering Sample]
24ad GA104 [GeForce RTX 3060 Engineering Sample]
24af GA104 [GeForce RTX 3070 Engineering Sample]
+ 24b6 GA104
+ 24b8 GA104
24bf GA104 [GeForce RTX 3070 Engineering Sample]
- 24dc GA104M [GeForce RTX 3070 Mobile 16GB]
+ 24dc GA104M [GeForce RTX 3080 Mobile / Max-Q 8GB/16GB]
24dd GA104M [GeForce RTX 3070 Mobile / Max-Q]
+ 2501 GA106 [GeForce RTX 3060]
+ 2503 GA106 [GeForce RTX 3060]
+ 2505 GA106
+ 2520 GA106M [GeForce RTX 3060 Mobile / Max-Q]
252f GA106 [GeForce RTX 3060 Engineering Sample]
+ 2560 GA106M [GeForce RTX 3060 Mobile / Max-Q]
+ 2583 GA107 [GeForce RTX 3050]
+ 25a2 GA107
+ 25a4 GA107
25af GA107 [GeForce RTX 3050 Engineering Sample]
10df Emulex Corporation
0720 OneConnect NIC (Skyhawk)
1590 0213 StoreFabric SN1200E 1-Port 16Gb Fibre Channel Adapter
1590 0214 StoreFabric SN1200E 2-Port 16Gb Fibre Channel Adapter
1590 022e Synergy 5330C 2-Port 32Gb Fibre Channel Mezz Card
+ 193d 1060 NIC-FC730i-Mb-2P
f011 Saturn: LightPulse Fibre Channel Host Adapter
f015 Saturn: LightPulse Fibre Channel Host Adapter
f085 LP850 Fibre Channel Host Adapter
10df f419 LPe35002-M2-L 2-Port 32Gb PCIe Fibre Channel Adapter
1590 02d5 StoreFabric SN1610E 1-Port 32Gb Fibre Channel Adapter
1590 02d6 StoreFabric SN1610E 2-Port 32Gb Fibre Channel Adapter
+ f500 LPe37000/LPe38000 Series 32Gb/64Gb Fibre Channel Adapter
f700 LP7000 Fibre Channel Host Adapter
f701 LP7000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:1-2)
f800 LP8000 Fibre Channel Host Adapter
8111 Twist3 Frame Grabber
10ec Realtek Semiconductor Co., Ltd.
0139 RTL-8139/8139C/8139C+ Ethernet Controller
+ 3000 Killer E3000 2.5GbE Controller
5208 RTS5208 PCI Express Card Reader
5209 RTS5209 PCI Express Card Reader
5227 RTS5227 PCI Express Card Reader
1028 06d6 Latitude 7275 tablet
1028 06dc Latitude E7470
1028 06e4 XPS 15 9550
+ 1028 06e6 Latitude 11 5175 2-in-1
17aa 224f ThinkPad X1 Carbon 5th Gen
5260 RTS5260 PCI Express Card Reader
5286 RTS5286 PCI Express Card Reader
8e2e 7000 KF-230TX
8e2e 7100 KF-230TX/2
a0a0 0007 ALN-325C
+ 8161 RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
+ 10ec 8168 TP-Link TG-3468 v4.0 Gigabit PCI Express Network Adapter
8167 RTL-8110SC/8169SC Gigabit Ethernet
105b 0e10 RTL-8110SC-GR on a N15235/A74MX mainboard
1458 e000 GA-MA69G-S3H Motherboard
1043 83a3 M4A785/P7P55 Motherboard
1043 8432 P8P67 and other motherboards
1043 8505 P8 series motherboard
+ 1043 8554 H81M-C Motherboard
+ 1043 859e AM1I-A Motherboard
+ 1043 8677 PRIME B450M-A Motherboard
105b 0d7c D270S/D250S Motherboard
10ec 8168 RTL8111/8168 PCI Express Gigabit Ethernet controller
144d c652 RTL8168 on a NP300E5C series laptop
1462 7522 X58 Pro-E
1462 7c37 X570-A PRO motherboard
1775 11cc CC11/CL11
+ 17aa 3098 ThinkCentre E73
17aa 3814 Z50-75
17aa 3823 Lenovo V130-15IGM Laptop - Type 81HL
17aa 5124 ThinkPad E595
7470 3468 TG-3468 Gigabit PCI Express Network Adapter
8086 2055 NUC Kit DN2820FYKH
8086 d615 Desktop Board D510MO/D525MW
+ ea50 ce19 mCOM10-L1900
8169 RTL8169 PCI Gigabit Ethernet Controller
1025 0079 Aspire 5024WLMi
10bd 3202 EP-320G-TX1 32-bit PCI Gigabit Ethernet Adapter
16ec 011f USR997903
1734 1091 D2030-A1
a0a0 0449 AK86-L motherboard
+ 816a RTL8111xP UART #1
+ ea50 ce19 mCOM10-L1900
+ 816b RTL8111xP UART #2
+ ea50 ce19 mCOM10-L1900
+ 816c RTL8111xP IPMI interface
+ ea50 ce19 mCOM10-L1900
+ 816d RTL811x EHCI host controller
+ ea50 ce19 mCOM10-L1900
8171 RTL8191SEvA Wireless LAN Controller
8172 RTL8191SEvB Wireless LAN Controller
8173 RTL8192SE Wireless LAN Controller
5005 Alveo U250
7038 FPGA Card XC7VX690T
17aa 402f FPGA XC7VX690T-3FFG1157E
+ 8019 Memory controller
8380 Ellips ProfiXpress Profibus Master
8381 Ellips Santos Frame Grabber
d154 Copley Controls CAN card (PCI-CAN-02)
1172 Altera Corporation
00a7 Stratix V
0530 Stratix IV
+ 646c KT-500/KT-521 board
1173 Adobe Systems, Inc
1174 Bridgeport Machines
1175 Mitron Computer Inc.
1179 Toshiba Corporation
0102 Extended IDE Controller
0103 EX-IDE Type-B
+ 010e PXP04 NVMe SSD
010f NVMe Controller
0110 NVMe SSD Controller Cx5
1028 1ffb Express Flash NVMe 960G (RI) U.2 (CD5)
1d49 4039 Thinksystem U.2 CM5 NVMe SSD
1d49 403a Thinksystem AIC CM5 NVMe SSD
0113 BG3 NVMe SSD Controller
+ 1179 0001 Toshiba KBG30ZMS128G 128GB NVMe SSD
0115 XG4 NVMe SSD Controller
+ 011a XG6 NVMe SSD Controller
0404 DVD Decoder card
0406 Tecra Video Capture device
0407 DVD Decoder card (Version 2)
a000 2000 Parallel Port
a000 6000 SPI
a000 7000 Local Bus
+ ea50 1c10 RXi2-BP
125c Aurora Technologies, Inc.
0101 Saturn 4520P
0640 Aries 16000P
0820 SM820 Lynx3D
0910 SM910
2262 SM2262/SM2262EN SSD Controller
+ 2263 SM2263EN/SM2263XT SSD Controller
1270 Olympus Optical Co., Ltd.
1271 GW Instruments
1272 Telematics International
1281 Yokogawa Electric Corporation
1282 Davicom Semiconductor, Inc.
6585 DM562P V90 Modem
- 9009 Ethernet 100/10 MBit
+ 9009 DM9009 Ethernet Controller
9100 21x4x DEC-Tulip compatible 10/100 Ethernet
- 9102 21x4x DEC-Tulip compatible 10/100 Ethernet
+ 9102 DM9102 Fast Ethernet Controller
# Subsystem ID is main ID reveresed.
0291 8212 DM9102A (DM9102AE, SM9102AF) Ethernet 100/10 MBit
9132 Ethernet 100/10 MBit
8888 IT8888F/G PCI to ISA Bridge with SMB [Golden Gate]
8889 IT8889F PCI to ISA Bridge
8892 IT8892E PCIe to PCI Bridge
+ 8086 200d DH61CR motherboard
8893 IT8893E PCIe to PCI Bridge
e886 IT8330G
1284 Sahara Networks, Inc.
2304 PI7C9X2G304 EL/SL PCIe2 3-Port/4-Lane Packet Switch
2404 PI7C9X2G404 EL/SL PCIe2 4-Port/4-Lane Packet Switch
2608 PI7C9X2G608GP PCIe2 6-Port/8-Lane Packet Switch
+ ea50 cc10 RXi2-BP
400a PI7C9X442SL PCI Express Bridge Port
400e PI7C9X442SL USB OHCI Controller
400f PI7C9X442SL USB EHCI Controller
8150 PCI to PCI Bridge
8152 PI7C8152A/PI7C8152B/PI7C8152BI PCI-to-PCI Bridge
8154 PI7C8154A/PI7C8154B/PI7C8154BI PCI-to-PCI Bridge
+ 8619 PI7C9X2G1616PR PCIe2 16-Port/16-Lane Packet Switch
e110 PI7C9X110 PCI Express to PCI bridge
1775 11cc CC11/CL11 CompactPCI Bridge
e111 PI7C9X111SL PCIe-to-PCI Reversible Bridge
12ea Zuken
12eb Aureal Semiconductor
0001 Vortex 1
+ 0000 0300 Terasound A3D PCI
104d 8036 AU8820 Vortex Digital Audio Processor
1092 2000 Sonic Impact A3D
1092 2100 Sonic Impact A3D
1092 2110 Sonic Impact A3D
1092 2200 Sonic Impact A3D
- 122d 1002 AU8820 Vortex Digital Audio Processor
+ 122d 1002 SC 338-A3D
12eb 0001 AU8820 Vortex Digital Audio Processor
5053 3355 Montego
50b2 1111 XLerate
134f Algo System Co Ltd
1350 Systec Co. Ltd
1351 Sonix Inc
-# nee Thales Idatys
-1353 Vierling Communication SAS
+# nee Vierling Communication SAS, nee Thales Idatys
+1353 dbeeSet Technology
0002 Proserver
0003 PCI-FUT
0004 PCI-S0
0005 PCI-FUT-S0
+ 0006 OTDU-1U (FPGA Zynq-7000)
+ 0007 OTDU-EX
1354 Dwave System Inc
1355 Kratos Analytical Ltd
1356 The Logical Co
a544 Exynos 8890 PCIe Root Complex
a800 XP941 PCIe SSD
a802 NVMe SSD Controller SM951/PM951
- a804 NVMe SSD Controller SM961/PM961
+ 144d a801 PM963 2.5" NVMe PCIe SSD
+ a804 NVMe SSD Controller SM961/PM961/SM963
+ 144d a801 SM963 2.5" NVMe PCIe SSD
a808 NVMe SSD Controller SM981/PM981/PM983
1d49 403b Thinksystem U.2 PM983 NVMe SSD
+ a80a NVMe SSD Controller PM9A1/980PRO
a820 NVMe SSD Controller 171X
1028 1f95 Express Flash NVMe XS1715 SSD 400GB
1028 1f96 Express Flash NVMe XS1715 SSD 800GB
103c 339d Ethernet 10Gb 2-port 530SFP+ Adapter
193d 1003 530F-B
193d 1006 530F-L
+ 193d 100f NIC-ETH522i-Mb-2x10G
1690 NetXtreme BCM57760 Gigabit Ethernet PCIe
1691 NetLink BCM57788 Gigabit Ethernet PCIe
1028 04aa XPS 8300
16a0 NetLink BCM5785 Fast Ethernet
16a1 BCM57840 NetXtreme II 10 Gigabit Ethernet
1043 866e PEB-10G/57840-2T 10GBase-T Network Adapter
+ 193d 100b NIC-ETH521i-Mb-4x10G
16a2 BCM57840 NetXtreme II 10/20-Gigabit Ethernet
103c 1916 FlexFabric 20Gb 2-port 630FLB Adapter
103c 1917 FlexFabric 20Gb 2-port 630M Adapter
1805 BCM57508 NetXtreme-E RDMA Partition
1806 BCM5750X NetXtreme-E Ethernet Virtual Function
1807 BCM5750X NetXtreme-E RDMA Virtual Function
+ 2711 BCM2711 PCIe Bridge
3352 BCM3352
3360 BCM3360
4210 BCM4210 iLine10 HomePNA 2.0
15b3 0021 MCX4421A-ACQN ConnectX-4 Lx EN OCP,2x25G
15b3 0025 ConnectX-4 Lx 25 GbE Dual Port SFP28 rNDC
193d 100a 620F-B
+ 193d 1031 NIC-ETH640i-Mb-2x25G
1016 MT27710 Family [ConnectX-4 Lx Virtual Function]
1017 MT27800 Family [ConnectX-5]
15b3 0006 ConnectX®-5 EN network interface card, 100GbE single-port QSFP28, PCIe3.0 x16, tall bracket; MCX515A-CCAT
15b3 0007 Mellanox ConnectX®-5 MCX516A-CCAT
15b3 0020 ConnectX®-5 EN network interface card, 10/25GbE dual-port SFP28, PCIe3.0 x8, tall bracket ; MCX512A-ACAT
15b3 0068 ConnectX®-5 EN network interface card for OCP2.0, Type 1, with host management, 25GbE dual-port SFP28, PCIe3.0 x8, no bracket Halogen free ; MCX542B-ACAN
+ 193d 1051 NIC-IB1040i-Mb-2P
1018 MT27800 Family [ConnectX-5 Virtual Function]
1019 MT28800 Family [ConnectX-5 Ex]
15b3 0008 ConnectX-5 Ex EN network interface card, 100GbE dual-port QSFP28, PCIe4.0 x16, tall bracket; MCX516A-CDAT
15b7 Sandisk Corp
2001 Skyhawk Series NVME SSD
5001 WD Black NVMe SSD
- 5002 WD Black 2018 / PC SN720 NVMe SSD
- 5003 WD Black 2018 / PC SN520 NVMe SSD
+ 5002 WD Black 2018/SN750 / PC SN720 NVMe SSD
+ 5003 WD Blue SN500 / PC SN520 NVMe SSD
5004 PC SN520 NVMe SSD
5005 PC SN520 NVMe SSD
- 5006 WD Black 2019/PC SN750 NVMe SSD
+ 5006 WD Black SN750 / PC SN730 NVMe SSD
5009 WD Blue SN550 NVMe SSD
15b7 5009 WD Blue SN550 NVMe SSD
+ 500b PC SN530 NVMe SSD
+ 1414 500b Xbox Series X
500d WD Ultrastar DC SN340 NVMe SSD
+ 5011 WD Black SN850
15b8 ADDI-DATA GmbH
1001 APCI1516 SP controller (16 digi outputs)
1003 APCI1032 SP controller (32 digi inputs w/ opto coupler)
0245 PCA7428CE_F1 - Analog Inputs isolated
0303 PCD-7006C Digital Input & Output PCI Card
0800 PCD8006 - PCIe digital Inputs/Outputs
+ 0840 PCA-8428 General-purpose multifunctional PCIe card with 8 analog inputs and 2 analog outputs
+ 0841 PCA-8429 General-purpose multifunctional PCIe card with 8 analog inputs
+ 0842 PCA-8438 General-purpose multifunctional PCIe card with 16 analog inputs and 2 analog outputs
+ 0843 PCA-8439 General-purpose multifunctional PCIe card with 16 analog inputs
ff00 CTU CAN FD PCIe Card
1761 Pickering Interfaces Ltd
1771 InnoVISION Multimedia Ltd.
0400 Datacenter Technologies QDF2432 PCI Express Root Port
0401 Datacenter Technologies QDF2400 PCI Express Root Port
1000 QCS405 PCIe Root Complex
+ 1101 QCA6390 Wireless Network Adapter [AX500-DBS (2x2)]
17cc NetChip Technology, Inc
2280 USB 2.0
17cd Cadence Design Systems, Inc.
19e5 d136 Hi1822 SP580 (4*25GE)
19e5 d141 Hi1822 SP583 (4*25GE)
19e5 d146 Hi1822 SP585 (4*25GE)
+ 3714 ES3000 V5 NVMe PCIe SSD
+ 19e5 5312 NVMe SSD ES3500P V5 2000GB 2.5" U.2
371e Hi1822 Family Virtual Bridge
+ 3754 ES3000 V6 NVMe PCIe SSD
+ 19e5 6122 NVMe SSD ES3600P V6 1600GB 2.5" U.2
+ 19e5 6123 NVMe SSD ES3600P V6 3200GB 2.5" U.2
+ 19e5 6124 NVMe SSD ES3600P V6 6400GB 2.5" U.2
+ 19e5 6141 NVMe SSD ES3800P V6 800GB 2.5" U.2
+ 19e5 6142 NVMe SSD ES3800P V6 1600GB 2.5" U.2
+ 19e5 6212 NVMe SSD ES3500P V6 1920GB 2.5" U.2
+ 19e5 6213 NVMe SSD ES3500P V6 3840GB 2.5" U.2
+ 19e5 6214 NVMe SSD ES3500P V6 7680GB 2.5" U.2
+ 19e5 6215 NVMe SSD ES3500P V6 15360GB 2.5" U.2
375e Hi1822 Family Virtual Function
379e Hi1822 Family Virtual Function
a120 HiSilicon PCIe Root Port with Gen4
1a4a SLAC National Accelerator Lab TID-AIR
1000 MCOR Power Supply Controller
1010 AMC EVR - Stockholm Timing Board
+ 1020 PGPCard - Gen3 Cameralink Interface
1030 PGPCard - Gen3 GIGe Interface
2000 PGPCard - 4 Lane
2001 PGPCard - 8 Lane Plus EVR
000b QEMU PCIe Expander bridge
000c QEMU PCIe Root port
000d QEMU XHCI Host Controller
+ 0010 QEMU NVM Express Controller
0100 QXL paravirtual graphic card
1af4 1100 QEMU Virtual Machine
1b37 Signal Processing Devices Sweden AB
9172 88SE9172 SATA 6Gb/s Controller
9178 88SE9170 PCIe SATA 6Gb/s Controller
917a 88SE9172 SATA III 6Gb/s RAID Controller
+ 9182 88SE9182 PCIe 2.0 x2 2-port SATA 6 Gb/s Controller
9183 88SS9183 PCIe SSD Controller
9192 88SE9172 SATA III 6Gb/s RAID Controller
91a0 88SE912x SATA 6Gb/s Controller [IDE mode]
91a4 88SE912x IDE Controller
+ 9215 88SE9215 PCIe 2.0 x1 4-port SATA 6 Gb/s Controller
9220 88SE9220 PCIe 2.0 x2 2-port SATA 6 Gb/s RAID Controller
- 9230 88SE9230 PCIe SATA 6Gb/s Controller
+ 9230 88SE9230 PCIe 2.0 x2 4-port SATA 6 Gb/s RAID Controller
1028 1fd6 BOSS-S1 Adapter
1028 1fdf BOSS-S1 Modular
1028 1fe2 BOSS-S1 Adapter
2402 Ultrastar DC SN640 NVMe SSD
2404 Ultrastar DC SN640 NVMe SSD
2500 Ultrastar DC SN840 NVMe SSD
+ 2600 Ultrastar DC ZN540 ZNS NVMe SSD
3714 PC SN730 NVMe SSD
3734 PC SN730 NVMe SSD
1b9a XAVi Technologies Corp.
1285 PC300 NVMe Solid State Drive 1TB
1327 BC501 NVMe Solid State Drive 512GB
1504 SC300 512GB M.2 2280 SATA Solid State Drive
+ 1527 PC401 NVMe Solid State Drive 256GB
243b PE6110 NVMe Solid State Drive
1c5c 0100 PE6110 NVMe Solid State Drive
2839 PE8000 Series NVMe Solid State Drive
1c5c 0100 PE8000 Series NVMe Solid State Drive
1c5f Beijing Memblaze Technology Co. Ltd.
- 000d PBlaze5 520/526 AIC
- 003d PBlaze5 920/926 AIC
- 010d PBlaze5 520/526 U.2
- 013d PBlaze5 920/926 U.2
+ 000d PBlaze5 520/526
+ 003d PBlaze5 920/926
+ 003e PBlaze6 6920
+ 1c5f 0a31 NVMe SSD PBlaze6 6920 3840GB 2.5" U.2
+ 1c5f 0a41 NVMe SSD PBlaze6 6920 7680GB 2.5" U.2
+ 1c5f 4a31 NVMe SSD PBlaze6 6920 3200GB 2.5" U.2
+ 1c5f 4a41 NVMe SSD PBlaze6 6920 6400GB 2.5" U.2
0540 PBlaze4 NVMe SSD
0550 PBlaze5 700/900
0555 PBlaze5 510/516
1d00 Pure Storage
1d05 Tongfang Hongkong Limited
1d0f Amazon.com, Inc.
+ 8061 NVMe EBS Controller
cd01 NVMe SSD Controller
ec20 Elastic Network Adapter (ENA)
efa0 Elastic Fabric Adapter (EFA)
1014 AR-MAN-U280 [Manitou Class Accelerator for U280]
1015 AR-ARK-BBDEV-FX0 [Arkville 32B DPDK Baseband Device]
1016 AR-ARK-BBDEV-FX1 [Arkville 64B DPDK Baseband Device]
+ 1017 AR-ARK-FX1 [Arkville 64B Multi-Homed Primary Endpoint]
+ 1018 AR-ARK-FX1 [Arkville 64B Multi-Homed Secondary Endpoint]
+ 1019 AR-ARK-FX1 [Arkville 64B Multi-Homed Tertiary Endpoint]
4200 A5PL-E1-10GETI [10 GbE Ethernet Traffic Instrument]
1d72 Xiaomi
1d78 DERA Storage
0100 RK3399 PCI Express Root Port
1808 RK1808 Neural Network Processor Card
1d8f Enyx
-1d93 YADRO (KNS Group)
+1d93 YADRO
1d94 Chengdu Haiguang IC Design Co., Ltd.
1450 Root Complex
1451 I/O Memory Management Unit
1dd8 4000 Naples 100Gb 2-port QSFP28 x16 8GB
1dd8 4001 Naples 100Gb 2-port QSFP28 x16 4GB
1dd8 4002 Naples 25Gb 2-port SFP28 x8 4GB
- 1dd8 4007 DSP DSC-25 10/25G 2p OCP Card
- 1dd8 4008 DSC-25 10/25G 2-port SFP28 x8 4GB RAM 8GB eMMC
+ 1dd8 4007 DSP DSC-25 Ent 10/25G OCP3 Card
+ 1dd8 4008 DSP DSC-25 10/25G 2p SFP28 Card
1dd8 400a DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card
1dd8 400c DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card
- 1dd8 400d DSP DSC-100 100G 2p QSFP28 Card
+ 1dd8 400d DSP DSC-100 Ent 100Gb Card
+ 1dd8 400e DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card
1001 DSC Virtual Downstream Port
1dd8 4000 Naples 100Gb 2-port QSFP28 x16 8GB
1dd8 4001 Naples 100Gb 2-port QSFP28 x16 4GB
1dd8 4002 Naples 25Gb 2-port SFP28 x8 4GB
- 1dd8 4007 DSP DSC-25 10/25G 2p OCP Card
- 1dd8 4008 DSC-25 10/25G 2-port SFP28 x8 4GB RAM 8GB eMMC
+ 1dd8 4007 DSP DSC-25 Ent 10/25G OCP3 Card
+ 1dd8 4008 DSP DSC-25 10/25G 2p SFP28 Card
1dd8 400a DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card
1dd8 400c DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card
- 1dd8 400d DSP DSC-100 100G 2p QSFP28 Card
+ 1dd8 400d DSP DSC-100 Ent 100Gb Card
+ 1dd8 400e DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card
1002 DSC Ethernet Controller
1dd8 4000 Naples 100Gb 2-port QSFP28 x16 8GB
1dd8 4001 Naples 100Gb 2-port QSFP28 x16 4GB
1dd8 4002 Naples 25Gb 2-port SFP28 x8 4GB
- 1dd8 4007 DSP DSC-25 10/25G 2p OCP Card
- 1dd8 4008 DSC-25 10/25G 2-port SFP28 x8 4GB RAM 8GB eMMC
+ 1dd8 4007 DSP DSC-25 Ent 10/25G OCP3 Card
+ 1dd8 4008 DSP DSC-25 10/25G 2p SFP28 Card
1dd8 400a DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card
1dd8 400c DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card
- 1dd8 400d DSP DSC-100 100G 2p QSFP28 Card
+ 1dd8 400d DSP DSC-100 Ent 100Gb Card
+ 1dd8 400e DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card
1003 DSC Ethernet Controller VF
1dd8 4000 Naples 100Gb 2-port QSFP28 x16 8GB
1dd8 4001 Naples 100Gb 2-port QSFP28 x16 4GB
1dd8 4002 Naples 25Gb 2-port SFP28 x8 4GB
- 1dd8 4007 DSP DSC-25 10/25G 2p OCP Card
- 1dd8 4008 DSC-25 10/25G 2-port SFP28 x8 4GB RAM 8GB eMMC
+ 1dd8 4007 DSP DSC-25 Ent 10/25G OCP3 Card
+ 1dd8 4008 DSP DSC-25 10/25G 2p SFP28 Card
1dd8 400a DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card
1dd8 400c DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card
- 1dd8 400d DSP DSC-100 100G 2p QSFP28 Card
+ 1dd8 400d DSP DSC-100 Ent 100Gb Card
+ 1dd8 400e DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card
1004 DSC Management Controller
1dd8 4000 Naples 100Gb 2-port QSFP28 x16 8GB
1dd8 4001 Naples 100Gb 2-port QSFP28 x16 4GB
1dd8 4002 Naples 25Gb 2-port SFP28 x8 4GB
- 1dd8 4007 DSP DSC-25 10/25G 2p OCP Card
- 1dd8 4008 DSC-25 10/25G 2-port SFP28 x8 4GB RAM 8GB eMMC
+ 1dd8 4007 DSP DSC-25 Ent 10/25G OCP3 Card
+ 1dd8 4008 DSP DSC-25 10/25G 2p SFP28 Card
1dd8 400a DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card
1dd8 400c DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card
- 1dd8 400d DSP DSC-100 100G 2p QSFP28 Card
+ 1dd8 400d DSP DSC-100 Ent 100Gb Card
+ 1dd8 400e DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card
1007 DSC Storage Accelerator
1dd8 4000 Naples 100Gb 2-port QSFP28 x16 8GB
1dd8 4001 Naples 100Gb 2-port QSFP28 x16 4GB
1dd8 4002 Naples 25Gb 2-port SFP28 x8 4GB
- 1dd8 4007 DSP DSC-25 10/25G 2p OCP Card
- 1dd8 4008 DSC-25 10/25G 2-port SFP28 x8 4GB RAM 8GB eMMC
+ 1dd8 4007 DSP DSC-25 Ent 10/25G OCP3 Card
+ 1dd8 4008 DSP DSC-25 10/25G 2p SFP28 Card
1dd8 400a DSC-100 40/100G 2-port 8G RAM 16G eMMC G1 Services Card
1dd8 400c DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card
- 1dd8 400d DSP DSC-100 100G 2p QSFP28 Card
+ 1dd8 400d DSP DSC-100 Ent 100Gb Card
+ 1dd8 400e DSC-25 10/25G 2-port 4G RAM 8G eMMC G1 Services Card
1de0 Groq
- 0000 Q100 Tensor Streaming Processor
+# rename due to conflict with a term in use by another company for an entirely different product.
+ 0000 TSP100 Tensor Streaming Processor
1de1 Tekram Technology Co.,Ltd.
0391 TRM-S1040 [DC-315 / DC-395 series]
2020 DC-390
e00a eMAG PCI Express Root Port 5
e00b eMAG PCI Express Root Port 6
e00c eMAG PCI Express Root Port 7
+# Root Complex A (RCA)
+ e100 Altra PCI Express Root Complex A
+# RCA port 0
+ e101 Altra PCI Express Root Port a0
+# RCA port 1
+ e102 Altra PCI Express Root Port a1
+# RCA port 2
+ e103 Altra PCI Express Root Port a2
+# RAC port 3
+ e104 Altra PCI Express Root Port a3
+# RCA port 4
+ e105 Altra PCI Express Root Port a4
+# RCA port 5
+ e106 Altra PCI Express Root Port a5
+# RCA port 6
+ e107 Altra PCI Express Root Port a6
+# RCA port 7
+ e108 Altra PCI Express Root Port a7
+# Root Complex B (RCB)
+ e110 Altra PCI Express Root Complex B
+# RCB port 0
+ e111 Altra PCI Express Root Port b0
+# RCB port 1
+ e112 Altra PCI Express Root Port b1
+# RCB port 2
+ e113 Altra PCI Express Root Port b2
+# RCB port 3
+ e114 Altra PCI Express Root Port b3
+# RCB port 4
+ e115 Altra PCI Express Root Port b4
+# RCB port 5
+ e116 Altra PCI Express Root Port b5
+# RCB port 6
+ e117 Altra PCI Express Root Port b6
+# RCB port 7
+ e118 Altra PCI Express Root Port b7
1df3 Ethernity Networks
0201 ACE-NIC40 Programmable Network Accelerator
1df3 0001 ENA1040
0002 T11 [CloudBlazer]
0003 T10s [CloudBlazer]
8011 I10 [CloudBlazer]
+ 8012 I10L [CloudBlazer]
# nee Thinci, Inc
1e38 Blaize, Inc
0102 Xplorer X1600
1601 NVMe SSD Controller MAP1601
1e4c GSI Technology
# Associative Processing Unit (APU)
- 0010 APU [Leda-G]
+ 0010 APU [Leda]
1e4c 0120 SE120
1e57 Beijing Panyi Technology Co., Ltd
0100 The device has already been deleted.
0000 0100 PY8800 64GB Accelerator
+1e60 Hailo Technologies Ltd.
+ 2864 Hailo-8 AI Processor
1e6b Axiado Corp.
1e7b Dataland
1e7c Brainchip Inc
# aka SED Systems
1e94 Calian SED
1e95 Solid State Storage Technology Corporation
+1ea0 Tencent Technology (Shenzhen) Company Limited
+ 2a16 Cloud Intelligent Inference Controller
1eab Hefei DATANG Storage Technology Co.,LTD.
+ 300a NVMe SSD Controller 300A
+ 300b NVMe SSD Controller 300B
1eae XFX Limited
1eb1 VeriSilicon Inc
1001 Video Accelerator
+1ed8 Digiteq Automotive
+ 0101 FG4 PCIe Frame Grabber
+1ed9 Myrtle.ai
+1ee9 SUSE LLC
# nee Tumsan Oy
1fc0 Ascom (Finland) Oy
0300 E2200 Dual E1/Rawpipe Card
2348 Racore
2010 8142 100VG/AnyLAN
2646 Kingston Technology Company, Inc.
+ 0010 HyperX Predator PCIe AHCI SSD
2263 A2000 NVMe SSD
+ 5008 U-SNS8154P3 NVMe SSD
+ 500d OM3PDP3 NVMe SSD
270b Xantel Corporation
270f Chaintech Computer Co. Ltd
2711 AVID Technology Inc.
0100 2nd Generation Core Processor Family DRAM Controller
1028 04aa XPS 8300
1043 844d P8P67/P8H67 Series Motherboard
+ 8086 200d DH61CR motherboard
0101 Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port
1028 04b2 Vostro 3350
106b 00dc MacBookPro8,2 [Core i7, 15", 2011]
1043 844d P8B WS Motherboard
0172 Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller
0176 3rd Gen Core processor Graphics Controller
+ 0201 Arctic Sound
0284 Comet Lake PCH-LP LPC Premium Controller/eSPI Controller
02a3 Comet Lake PCH-LP SMBus Host Controller
02a4 Comet Lake SPI (flash) Controller
02a6 Comet Lake North Peak
+ 02b0 Comet Lake PCI Express Root Port #9
+ 02b1 Comet Lake PCI Express Root Port #10
+ 02b3 Comet Lake PCI Express Root Port #12
+ 02b4 Comet Lake PCI Express Root Port #13
+ 02b8 Comet Lake PCI Express Root Port #1
+ 02bc Comet Lake PCI Express Root Port #5
+ 02c5 Comet Lake Serial IO I2C Host Controller
02c8 Comet Lake PCH-LP cAVS
02d3 Comet Lake SATA AHCI Controller
02e0 Comet Lake Management Engine Interface
02e8 Serial IO I2C Host Controller
02e9 Comet Lake Serial IO I2C Host Controller
+ 02ea Comet Lake PCH-LP LPSS: I2C Controller #2
02ed Comet Lake PCH-LP USB 3.1 xHCI Host Controller
02ef Comet Lake PCH-LP Shared SRAM
02f0 Comet Lake PCH-LP CNVi WiFi
040a Xeon E3-1200 v3 Processor Integrated Graphics Controller
0412 Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller
103c 1998 EliteDesk 800 G1
+ 17aa 3098 ThinkCentre E73
17aa 309f ThinkCentre M83
0416 4th Gen Core Processor Integrated Graphics Controller
17aa 220e ThinkPad T440p
1028 1fe9 Express Flash NVMe 4.0TB HHHL AIC (P4600)
0b26 Thunderbolt 4 Bridge [Goshen Ridge 2020]
0b27 Thunderbolt 4 USB Controller [Goshen Ridge 2020]
- 0b60 NVMe DC SSD [3DNAND, Beta Rock Controller]
+ 0b60 NVMe DC SSD [3DNAND, Sentinel Rock Controller]
1028 2060 NVMe SED MU U.2 1.6TB (P5600)
1028 2061 NVMe SED MU U.2 3.2TB (P5600)
1028 2062 NVMe SED MU U.2 6.4TB (P5600)
1028 2102 NVMe RI U.2 1.92TB (P5500)
1028 2103 NVMe RI U.2 3.84TB (P5500)
1028 2104 NVMe RI U.2 7.68TB (P5500)
+ 8086 8008 NVMe Datacenter SSD [3DNAND] SE 2.5" U.2 (P5510)
0be0 Atom Processor D2xxx/N2xxx Integrated Graphics Controller
0be1 Atom Processor D2xxx/N2xxx Integrated Graphics Controller
105b 0d7c D270S/D250S Motherboard
0bf7 Atom Processor D2xxx/N2xxx DRAM Controller
0c00 4th Gen Core Processor DRAM Controller
103c 1998 EliteDesk 800 G1
+ 17aa 3098 ThinkCentre E73
17aa 309f ThinkCentre M83
0c01 Xeon E3-1200 v3/4th Gen Core Processor PCI Express x16 Controller
0c04 Xeon E3-1200 v3/4th Gen Core Processor DRAM Controller
8086 4532 Desktop Board D815EEA2/D815EFV
8086 4541 D815EEA Motherboard
8086 4557 D815EGEW Mainboard
+ 1136 Thunderbolt 4 Bridge [Maple Ridge 4C 2020]
+ 1137 Thunderbolt 4 NHI [Maple Ridge 4C 2020]
+ 1138 Thunderbolt 4 USB Controller [Maple Ridge 4C 2020]
1161 82806AA PCI64 Hub Advanced Programmable Interrupt Controller
8086 1161 82806AA PCI64 Hub APIC
1162 Xscale 80200 Big Endian Companion Chip
1503 82579V Gigabit Network Connection
1043 849c P8P67 Deluxe Motherboard
10cf 161c LIFEBOOK E752
+ 8086 200d DH61CR motherboard
1507 Ethernet Express Module X520-P2
1508 82598EB Gigabit BX Network Connection
1509 82580 Gigabit Network Connection
156f Ethernet Connection I219-LM
1028 06dc Latitude E7470
103c 8079 EliteBook 840 G3
+ 17aa 2247 ThinkPad T570
1570 Ethernet Connection I219-V
1571 Ethernet Virtual Function 700 Series
1572 Ethernet Controller X710 for 10GbE SFP+
17aa 0000 ThinkServer X710 AnyFabric for 10GbE SFP+
17aa 4001 ThinkServer X710-4 AnyFabric for 10GbE SFP+
17aa 4002 ThinkServer X710-2 AnyFabric for 10GbE SFP+
+ 193d 1020 NIC-ETH561F-sL-4x10G
+ 193d 1021 NIC-ETH561F-sL-2x10G
19e5 d11c Ethernet 2-port X710 10Gb SFP+ Adapter SP330
1bd4 0056 Ethernet Network Adapter X710-BM2 for OCP NIC 3.0
8086 0000 Ethernet Converged Network Adapter X710
1577 DSL6540 Thunderbolt 3 NHI [Alpine Ridge 4C 2015]
1578 DSL6540 Thunderbolt 3 Bridge [Alpine Ridge 4C 2015]
157b I210 Gigabit Network Connection
+ ea50 cc10 RXi2-BP
157c I210 Gigabit Backplane Connection
157d DSL5110 Thunderbolt 2 NHI (Low Power) [Win Ridge 2C 2014]
157e DSL5110 Thunderbolt 2 Bridge (Low Power) [Win Ridge 2C 2014]
1059 0170 RD-01213 10GbE interface
1590 0000 Ethernet 2-port 563i Adapter
1590 00f8 Ethernet 2-port 563i Adapter
+ 193d 100e NIC-ETH561i-Mb-4x10G
8086 0000 Ethernet Converged Network Adapter XL710-Q2
1583 Ethernet Controller XL710 for 40GbE QSFP+
1028 0000 Ethernet 40G 2P XL710 QSFP+ rNDC
1591 Ethernet Controller E810-C for backplane
1592 Ethernet Controller E810-C for QSFP
1137 02bf E810CQDA2 2x100 GbE QSFP28 PCIe NIC
+ 8086 0001 Ethernet Network Adapter E810-C-Q1
8086 0002 Ethernet Network Adapter E810-C-Q2
8086 0004 Ethernet Network Adapter E810-C-Q2
8086 0005 Ethernet Network Adapter E810-C-Q1 for OCP3.0
8086 000a Ethernet Network Adapter E810-C-Q1 for OCP
8086 000b Ethernet 100G 2P E810-C Adapter
8086 000c Ethernet 100G 2P E810-C OCP
+ 8086 000d Ethernet Network Adapter E810-L-Q2 for OCP 3.0
1593 Ethernet Controller E810-C for SFP
1137 02c3 E810XXVDA4 4x25/10 GbE SFP28 PCIe NIC
8086 0002 Ethernet Network Adapter E810-L-2
1137 0000 X710TLG GbE RJ45 PCIe NIC
1137 02c1 X710T2LG 2x10 GbE RJ45 PCIe NIC
1137 02c2 X710T4LG 4x10 GbE RJ45 PCIe NIC
+ 1137 02d9 Ethernet Network Adapter X710-T2L OCP 3.0
+ 1137 02da Ethernet Network Adapter X710-T4L OCP 3.0
8086 0000 Ethernet Network Adapter X710-TL
8086 0001 Ethernet Network Adapter X710-T4L
8086 0002 Ethernet Network Adapter X710-T4L
18a0 C4xxx Series QAT
18a1 C4XXX Series QAT Virtual Function
1900 Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers
- 1901 6th-9th Gen Core Processor PCIe Controller (x16)
+ 1901 6th-10th Gen Core Processor PCIe Controller (x16)
1902 HD Graphics 510
1903 Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Thermal Subsystem
1028 06d6 Latitude 7275 tablet
1028 06dc Latitude E7470
1028 06e4 XPS 15 9550
+ 1028 06e6 Latitude 11 5175 2-in-1
103c 825b OMEN-17-w001nv
17aa 225d ThinkPad T480
1904 Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers
1028 06dc Latitude E7470
1028 06f3 Latitude 3570
103c 8079 EliteBook 840 G3
+ 17aa 2247 ThinkPad T570
17aa 382a B51-80 Laptop
1905 Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor PCIe Controller (x8)
1906 HD Graphics 510
1909 Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor PCIe Controller (x4)
190c Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers
1028 06d6 Latitude 7275 tablet
+ 1028 06e6 Latitude 11 5175 2-in-1
190f Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers
1910 Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers
1028 06e4 XPS 15 9550
1028 06dc Latitude E7470
1028 06f3 Latitude 3570
103c 8079 EliteBook 840 G3
+ 17aa 2247 ThinkPad T570
1918 Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers
1919 Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Imaging Unit
1028 06d6 Latitude 7275 tablet
+ 1028 06e6 Latitude 11 5175 2-in-1
191b HD Graphics 530
1028 06e4 XPS 15 9550
103c 825b OMEN-17-w001nv
191d HD Graphics P530
191e HD Graphics 515
1028 06d6 Latitude 7275 tablet
+ 1028 06e6 Latitude 11 5175 2-in-1
191f Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers
1921 HD Graphics 520
1926 Iris Graphics 540
1c02 6 Series/C200 Series Chipset Family 6 port Desktop SATA AHCI Controller
1028 04aa XPS 8300
1043 844d P8 series motherboard
+ 8086 200d DH61CR motherboard
8086 7270 Server Board S1200BT Family
1c03 6 Series/C200 Series Chipset Family 6 port Mobile SATA AHCI Controller
1028 04a3 Precision M4600
17aa 21cf ThinkPad T520
# Realtek ALC888 audio codec
8086 2008 DQ67SW board
+ 8086 200d DH61CR motherboard
8086 7270 Apple MacBookPro8,2 [Core i7, 15", 2011]
1c22 6 Series/C200 Series Chipset Family SMBus Controller
1028 04a3 Precision M4600
1028 04da Vostro 3750
1043 844d P8 series motherboard
17aa 21cf ThinkPad T520
+ 8086 200d DH61CR motherboard
8086 7270 Server Board S1200BT Family / Apple MacBook Pro 8,1/8,2
1c24 6 Series/C200 Series Chipset Family Thermal Management Controller
1c25 6 Series/C200 Series Chipset Family DMI to PCI Bridge
1028 04da Vostro 3750
1043 844d P8 series motherboard
17aa 21cf ThinkPad T520
+ 8086 200d DH61CR motherboard
8086 7270 Server Board S1200BT Family / Apple MacBook Pro 8,1/8,2
1c27 6 Series/C200 Series Chipset Family USB Universal Host Controller #1
8086 7270 Apple MacBookPro8,2 [Core i7, 15", 2011]
1028 04da Vostro 3750
1043 844d P8 series motherboard
17aa 21cf ThinkPad T520
+ 8086 200d DH61CR motherboard
8086 7270 Server Board S1200BT Family / Apple MacBook Pro 8,1/8,2
1c33 6 Series/C200 Series Chipset Family LAN Controller
1c35 6 Series/C200 Series Chipset Family VECI Controller
1028 04da Vostro 3750
1043 844d P8 series motherboard
17aa 21cf ThinkPad T520
+ 8086 200d DH61CR motherboard
8086 7270 Apple MacBookPro8,2 [Core i7, 15", 2011]
1c3b 6 Series/C200 Series Chipset Family MEI Controller #2
1c3c 6 Series/C200 Series Chipset Family IDE-r Controller
1c5a Upgraded Q67 Express Chipset LPC Controller
1c5b 6 Series/C200 Series Chipset Family LPC Controller
1c5c H61 Express Chipset LPC Controller
+ 8086 200d DH61CR motherboard
1c5d 6 Series/C200 Series Chipset Family LPC Controller
1c5e 6 Series/C200 Series Chipset Family LPC Controller
1c5f 6 Series/C200 Series Chipset Family LPC Controller
147b 0507 TH7II-RAID
8086 4532 Desktop Board D815EEA2/D815EFV
8086 4557 D815EGEW Mainboard
+ 8086 4d44 D850EMV2 motherboard
8086 5744 S845WD1-E mainboard
2443 82801BA/BAM SMBus Controller
1014 01c6 Netvista A40/A40p
147b 0507 TH7II-RAID
8086 4557 D815EGEW Mainboard
8086 4656 Desktop Board D815EFV
+ 8086 4d44 D850EMV2 motherboard
2446 82801BA/BAM AC'97 Modem Controller
1025 1016 Travelmate 612 TX
104d 80df Vaio PCG-FX403
15d9 3280 Supermicro P4SBE Mainboard
8086 4532 Desktop Board D815EEA2/D815EFV
8086 4557 D815EGEW Mainboard
+ 8086 4d44 D850EMV2 motherboard
8086 5744 S845WD1-E mainboard
244c 82801BAM ISA Bridge (LPC)
244e 82801 PCI Bridge
103c 0934 Compaq nw8240/nx8220
103c 0944 Compaq nc6220 Notebook PC
103c 099c NX6110/NC6120
+ 1043 82d9 Asus Eee PC 900
104d 81b7 Vaio VGN-S3XP
a304 81b7 Vaio VGN-S3XP
e4bf 0ccd CCD-CALYPSO
1028 022f Inspiron 1525
103c 30c0 Compaq 6710b
103c 30c1 Compaq 6910p
+ 103c 30c5 Compaq 8510p
103c 30cc Pavilion dv6700
103c 30d9 Presario C700
1043 1017 X58LE
2a41 Mobile 4 Series Chipset PCI Express Graphics Port
e4bf cc4d CCM-BOOGIE
2a42 Mobile 4 Series Chipset Integrated Graphics Controller
+ 1028 02aa Dell Inspiron 1545
17aa 2112 ThinkPad T400
e4bf cc4d CCM-BOOGIE
2a43 Mobile 4 Series Chipset Integrated Graphics Controller
8086 4210 Dual Band Wireless AC 3165
3166 Dual Band Wireless-AC 3165 Plus Bluetooth
8086 4210 Dual Band Wireless-AC 3165
- 3184 UHD Graphics 605
- 3185 UHD Graphics 605
+ 3184 GeminiLake [UHD Graphics 605]
+ 3185 GeminiLake [UHD Graphics 600]
318c Celeron/Pentium Silver Processor Dynamic Platform and Thermal Framework Processor Participant
318e Celeron/Pentium Silver Processor NorthPeak
3190 Celeron/Pentium Silver Processor Gaussian Mixture Model
17aa 380b V130-15IGM Laptop (Lenovo) - Type 81HL
319a Celeron/Pentium Silver Processor Trusted Execution Engine Interface
31a2 Celeron/Pentium Silver Processor Integrated Sensor Solution
+ 31a8 Celeron/Pentium Silver Processor USB 3.0 xHCI Controller
+ 1849 31a8 Celeron/Pentium Silver Processor USB 3.0 xHCI Controller
31ac Celeron/Pentium Silver Processor Serial IO I2C Host Controller
31ae Celeron/Pentium Silver Processor Serial IO I2C Host Controller
31bc Celeron/Pentium Silver Processor Serial IO UART Host Controller
31da Gemini Lake PCI Express Root Port
31db Gemini Lake PCI Express Root Port
31dc AC 1550i Wireless
+ 31e3 Celeron/Pentium Silver Processor SATA Controller
+ 31e8 Celeron/Pentium Silver Processor LPC Controller
31ee Celeron/Pentium Silver Processor Serial IO UART Host Controller
31f0 Gemini Lake Host Bridge
3200 GD31244 PCI-X SATA HBA
34aa Ice Lake-LP Serial IO SPI Controller #0
34ab Ice Lake-LP Serial IO SPI Controller #1
34b0 Ice Lake-LP PCI Express Root Port #9
+ 34b7 Ice Lake-LP PCI Express Root Port #16
34bc Ice Lake-LP PCI Express Root Port #5
34c5 Ice Lake-LP Serial IO I2c Controller #4
34c6 Ice Lake-LP Serial IO I2c Controller #5
- 34c8 Smart Sound Technology Audio Controller
+ 34c8 Ice Lake-LP Smart Sound Technology Audio Controller
34d3 Ice Lake-LP SATA Controller [AHCI mode]
- 34e0 Management Engine Interface
+ 34e0 Ice Lake-LP Management Engine
34e8 Ice Lake-LP Serial IO I2C Controller #0
34e9 Ice Lake-LP Serial IO I2C Controller #1
34ea Ice Lake-LP Serial IO I2C Controller #2
34eb Ice Lake-LP Serial IO I2C Controller #3
34ed Ice Lake-LP USB 3.1 xHCI Host Controller
+ 34ef Ice Lake-LP DRAM Controller
34f0 Killer Wi-Fi 6 AX1650i 160MHz Wireless Network Adapter (201NGW)
34f8 Ice Lake-LP SD Controller
+ 34fc Ice Lake-LP Integrated Sensor Solution
3500 6311ESB/6321ESB PCI Express Upstream Port
103c 31fe ProLiant DL140 G3
15d9 9680 X7DBN Motherboard
3e81 8th Gen Core Processor PCIe Controller (x16)
3e85 8th Gen Core Processor PCIe Controller (x8)
3e89 8th Gen Core Processor PCIe Controller (x4)
- 3e91 8th Gen Core Processor Gaussian Mixture Model
- 3e92 UHD Graphics 630 (Desktop)
+ 3e90 CoffeeLake-S GT1 [UHD Graphics 610]
+ 3e91 CoffeeLake-S GT2 [UHD Graphics 630]
+ 3e92 CometLake-S GT2 [UHD Graphics 630]
1028 0869 Vostro 3470
- 3e93 UHD Graphics 610
- 3e96 HD Graphics P630
- 3e98 UHD Graphics 630 (Desktop 9 Series)
- 3e9b UHD Graphics 630 (Mobile)
- 3ea0 UHD Graphics 620 (Whiskey Lake)
+ 3e93 CoffeeLake-S GT1 [UHD Graphics 610]
+ 3e96 CoffeeLake-S GT2 [UHD Graphics P630]
+ 3e98 CoffeeLake-S GT2 [UHD Graphics 630]
+ 3e9b CoffeeLake-H GT2 [UHD Graphics 630]
+ 3ea0 WhiskeyLake-U GT2 [UHD Graphics 620]
1028 089e Inspiron 5482
- 3ea5 Iris Plus Graphics 655
+ 3ea5 CoffeeLake-U GT3e [Iris Plus Graphics 655]
3ec2 8th Gen Core Processor Host Bridge/DRAM Registers
1028 0869 Vostro 3470
1043 8694 PRIME H310M-D
4032 5400 Chipset IOxAPIC
4035 5400 Chipset FBD Registers
4036 5400 Chipset FBD Registers
+ 4041 NVMe Datacenter SSD [Optane]
4100 Moorestown Graphics and Video
4108 Atom Processor E6xx Integrated Graphics Controller
4109 Atom Processor E6xx Integrated Graphics Controller
4115 Atom Processor E6xx PCI Host Bridge #2
4116 Atom Processor E6xx PCI Host Bridge #3
4117 Atom Processor E6xx PCI Host Bridge #4
+ 4140 NVMe Datacenter SSD [Optane]
+ 1028 2134 NVMe Datacenter SSD [Optane] SED 400GB 2.5" U.2 (P5800X)
+ 1028 2135 NVMe Datacenter SSD [Optane] SED 800GB 2.5" U.2 (P5800X)
+ 1028 2136 NVMe Datacenter SSD [Optane] SED 1.6GB 2.5" U.2 (P5800X)
+ 1028 2137 NVMe Datacenter SSD [Optane] 400GB 2.5" U.2 (P5800X)
+ 1028 2138 NVMe Datacenter SSD [Optane] 800GB 2.5" U.2 (P5800X)
+ 1028 2139 NVMe Datacenter SSD [Optane] 1.6TB 2.5" U.2 (P5800X)
4220 PRO/Wireless 2200BG [Calexico2] Network Connection
103c 0934 Compaq nw8240/nx8220
103c 12f6 nc6120/nc6220/nw8240/nx8220
8086 1316 WiMAX/WiFi Link 5150 ABG
444e Turbo Memory Controller
467f Volume Management Device NVMe RAID Controller
+ 4680 AlderLake-S GT1
+ 46a0 AlderLake-P GT2
+ 4905 DG1 [Iris Xe MAX Graphics]
+ 4906 DG1 [Iris Xe Pod]
+ 4907 SG1 [Server GPU SG-18M]
+ 4908 DG1 [Iris Xe Graphics]
4c3d Volume Management Device NVMe RAID Controller
+ 4f80 DG2
+ 4f81 DG2
+ 4f82 DG2
5001 LE80578
5002 LE80578 Graphics Processor Unit
5009 LE80578 Video Display Controller
1993 0ded mGuard-PCI AV#2
1993 0dee mGuard-PCI AV#1
1993 0def mGuard-PCI AV#0
+ 8603 Ice Lake-LP Dynamic Tuning Processor Participant
87c0 UHD Graphics 617
8800 Platform Controller Hub EG20T PCI Express Port
8801 Platform Controller Hub EG20T Packet Hub
8818 Platform Controller Hub EG20T Controller Area Network (CAN) Controller
8819 Platform Controller Hub EG20T IEEE 1588 Hardware Assist
8a0d Ice Lake Thunderbolt 3 NHI #1
+ 8a12 Ice Lake-LP Processor Host Bridge/DRAM Registers
8a13 Ice Lake Thunderbolt 3 USB Controller
8a17 Ice Lake Thunderbolt 3 NHI #0
+ 8a19 Image Signal Processor
8a1d Ice Lake Thunderbolt 3 PCI Express Root Port #0
8a1f Ice Lake Thunderbolt 3 PCI Express Root Port #1
8a21 Ice Lake Thunderbolt 3 PCI Express Root Port #2
8c01 8 Series Chipset Family 4-port SATA Controller 1 [IDE mode] - Mobile
8c02 8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode]
103c 1998 EliteDesk 800 G1
+ 17aa 3098 ThinkCentre E73
17aa 309f ThinkCentre M83
8c03 8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode]
103c 1909 ZBook 15
103c 1998 EliteDesk 800 G1
1043 8534 ASUS H81I-PLUS
17aa 220e ThinkPad T440p
+ 17aa 3098 ThinkCentre E73
8c11 8 Series/C220 Series Chipset Family PCI Express Root Port #1
8c12 8 Series/C220 Series Chipset Family PCI Express Root Port #2
103c 1998 EliteDesk 800 G1
8c18 8 Series/C220 Series Chipset Family PCI Express Root Port #5
8c19 8 Series/C220 Series Chipset Family PCI Express Root Port #5
8c1a 8 Series/C220 Series Chipset Family PCI Express Root Port #6
+ 17aa 3098 ThinkCentre E73
8c1b 8 Series/C220 Series Chipset Family PCI Express Root Port #6
8c1c 8 Series/C220 Series Chipset Family PCI Express Root Port #7
8c1d 8 Series/C220 Series Chipset Family PCI Express Root Port #7
103c 1909 ZBook 15
103c 1998 EliteDesk 800 G1
17aa 220e ThinkPad T440p
+ 17aa 3098 ThinkCentre E73
17aa 309f ThinkCentre M83
8c23 8 Series Chipset Family CHAP Counters
8c24 8 Series Chipset Family Thermal Management Controller
103c 1998 EliteDesk 800 G1
17aa 220e ThinkPad T440p
17aa 2210 ThinkPad T540p
+ 17aa 3098 ThinkCentre E73
17aa 309f ThinkCentre M83
2210 17aa ThinkPad T540p
8c2d 8 Series/C220 Series Chipset Family USB EHCI #2
103c 1909 ZBook 15
103c 1998 EliteDesk 800 G1
17aa 220e ThinkPad T440p
+ 17aa 3098 ThinkCentre E73
17aa 309f ThinkCentre M83
8c31 8 Series/C220 Series Chipset Family USB xHCI
103c 1909 ZBook 15
103c 1998 EliteDesk 800 G1
17aa 220e ThinkPad T440p
+ 17aa 3098 ThinkCentre E73
17aa 309f ThinkCentre M83
8c33 8 Series/C220 Series Chipset Family LAN Controller
8c34 8 Series/C220 Series Chipset Family NAND Controller
103c 1909 ZBook 15
103c 1998 EliteDesk 800 G1
17aa 220e ThinkPad T440p
+ 17aa 3098 ThinkCentre E73
17aa 309f ThinkCentre M83
8c3b 8 Series/C220 Series Chipset Family MEI Controller #2
8c3c 8 Series/C220 Series Chipset Family IDE-r Controller
8c5a 8 Series/C220 Series Chipset Family LPC Controller
8c5b 8 Series/C220 Series Chipset Family LPC Controller
8c5c H81 Express LPC Controller
+ 17aa 3098 ThinkCentre E73
8c5d 8 Series/C220 Series Chipset Family LPC Controller
8c5e 8 Series/C220 Series Chipset Family LPC Controller
8c5f 8 Series/C220 Series Chipset Family LPC Controller
9622 Integrated RAID
9641 Integrated RAID
96a1 Integrated RAID
+ 9a03 TigerLake-LP Dynamic Tuning Processor Participant
9a09 11th Gen Core Processor PCIe Controller
9a0b Volume Management Device NVMe RAID Controller
- 9a13 Tiger Lake-LP Thunderbolt USB Controller
+ 9a0d Tiger Lake-LP Telemetry Aggregator
+ 9a13 Tiger Lake-LP Thunderbolt 4 USB Controller
9a14 11th Gen Core Processor Host Bridge/DRAM Registers
- 9a17 Tiger Lake-H Thunderbolt USB Controller
- 9a1b Tiger Lake-LP Thunderbolt NHI #0
- 9a1d Tiger Lake-LP Thunderbolt NHI #1
- 9a1f Tiger Lake-H Thunderbolt NHI #0
- 9a21 Tiger Lake-H Thunderbolt NHI #1
- 9a23 Tiger Lake-LP Thunderbolt PCI Express Root Port #0
- 9a25 Tiger Lake-LP Thunderbolt PCI Express Root Port #1
- 9a27 Tiger Lake-LP Thunderbolt PCI Express Root Port #2
- 9a29 Tiger Lake-LP Thunderbolt PCI Express Root Port #3
- 9a2b Tiger Lake-H Thunderbolt PCI Express Root Port #0
- 9a2d Tiger Lake-H Thunderbolt PCI Express Root Port #1
- 9a2f Tiger Lake-H Thunderbolt PCI Express Root Port #2
- 9a31 Tiger Lake-H Thunderbolt PCI Express Root Port #3
+ 9a17 Tiger Lake-H Thunderbolt 4 USB Controller
+ 9a1b Tiger Lake-LP Thunderbolt 4 NHI #0
+ 9a1d Tiger Lake-LP Thunderbolt 4 NHI #1
+ 9a1f Tiger Lake-H Thunderbolt 4 NHI #0
+ 9a21 Tiger Lake-H Thunderbolt 4 NHI #1
+ 9a23 Tiger Lake-LP Thunderbolt 4 PCI Express Root Port #0
+ 9a25 Tiger Lake-LP Thunderbolt 4 PCI Express Root Port #1
+ 9a27 Tiger Lake-LP Thunderbolt 4 PCI Express Root Port #2
+ 9a29 Tiger Lake-LP Thunderbolt 4 PCI Express Root Port #3
+ 9a2b Tiger Lake-H Thunderbolt 4 PCI Express Root Port #0
+ 9a2d Tiger Lake-H Thunderbolt 4 PCI Express Root Port #1
+ 9a2f Tiger Lake-H Thunderbolt 4 PCI Express Root Port #2
+ 9a31 Tiger Lake-H Thunderbolt 4 PCI Express Root Port #3
9a33 Tiger Lake Trace Hub
- 9a49 Iris Xe Graphics
- 9b41 UHD Graphics
+ 9a49 TigerLake GT2 [Iris Xe Graphics]
+ 9b41 CometLake-U GT2 [UHD Graphics]
9b44 10th Gen Core Processor Host Bridge/DRAM Registers
+ 9b53 Comet Lake-S 6c Host Bridge/DRAM Controller
9b54 10th Gen Core Processor Host Bridge/DRAM Registers
9b61 Comet Lake-U v1 4c Host Bridge/DRAM Controller
+ 9b63 10th Gen Core Processor Host Bridge/DRAM Registers
9b64 10th Gen Core Processor Host Bridge/DRAM Registers
- 9bc4 UHD Graphics
- 9bc8 UHD Graphics 630
+ 9bc4 CometLake-H GT2 [UHD Graphics]
+ 9bc5 CometLake-S GT2 [UHD Graphics 630]
+ 9bc8 CometLake-S GT2 [UHD Graphics 630]
9c00 8 Series SATA Controller 1 [IDE mode]
9c01 8 Series SATA Controller 1 [IDE mode]
9c02 8 Series SATA Controller 1 [AHCI mode]
9d03 Sunrise Point-LP SATA Controller [AHCI mode]
1025 115f Acer Aspire E5-575G
1028 06dc Latitude E7470
+ 1028 06e6 Latitude 11 5175 2-in-1
1028 06f3 Latitude 3570
103c 8079 EliteBook 840 G3
17aa 225d ThinkPad T480
9d16 Sunrise Point-LP PCI Express Root Port #7
9d17 Sunrise Point-LP PCI Express Root Port #8
9d18 Sunrise Point-LP PCI Express Root Port #9
+ 17aa 2247 ThinkPad T570
17aa 382a B51-80 Laptop
9d19 Sunrise Point-LP PCI Express Root Port #10
9d1a Sunrise Point-LP PCI Express Root Port #11
1025 115f Acer Aspire E5-575G
1028 06d6 Latitude 7275 tablet
1028 06dc Latitude E7470
+ 1028 06e6 Latitude 11 5175 2-in-1
1028 06f3 Latitude 3570
103c 8079 EliteBook 840 G3
+ 17aa 2247 ThinkPad T570
17aa 224f ThinkPad X1 Carbon 5th Gen
17aa 225d ThinkPad T480
17aa 382a B51-80 Laptop
1025 115f Acer Aspire E5-575G
1028 06d6 Latitude 7275 tablet
1028 06dc Latitude E7470
+ 1028 06e6 Latitude 11 5175 2-in-1
1028 06f3 Latitude 3570
103c 8079 EliteBook 840 G3
17aa 2247 ThinkPad T570
1025 115f Acer Aspire E5-575G
1028 06d6 Latitude 7275 tablet
1028 06dc Latitude E7470
+ 1028 06e6 Latitude 11 5175 2-in-1
1028 06f3 Latitude 3570
103c 8079 EliteBook 840 G3
17aa 2247 ThinkPad T570
1025 115f Acer Aspire E5-575G
1028 06d6 Latitude 7275 tablet
1028 06dc Latitude E7470
+ 1028 06e6 Latitude 11 5175 2-in-1
1028 06f3 Latitude 3570
103c 8079 EliteBook 840 G3
17aa 2247 ThinkPad T570
17aa 382a B51-80 Laptop
9d32 CSI-2 Host Controller
1028 06d6 Latitude 7275 tablet
+ 1028 06e6 Latitude 11 5175 2-in-1
9d35 Sunrise Point-LP Integrated Sensor Hub
1028 06d6 Latitude 7275 tablet
+ 1028 06e6 Latitude 11 5175 2-in-1
9d3a Sunrise Point-LP CSME HECI #1
1025 115f Acer Aspire E5-575G
1028 06d6 Latitude 7275 tablet
1028 06dc Latitude E7470
+ 1028 06e6 Latitude 11 5175 2-in-1
1028 06f3 Latitude 3570
103c 8079 EliteBook 840 G3
17aa 2247 ThinkPad T570
17aa 382a B51-80 Laptop
9d3d Sunrise Point-LP Active Management Technology - SOL
103c 8079 EliteBook 840 G3
+ 17aa 2247 ThinkPad T570
9d43 Sunrise Point-LP LPC Controller
17aa 382a B51-80 Laptop
9d46 LPC/eSPI Controller
1028 06d6 Latitude 7275 tablet
+ 1028 06e6 Latitude 11 5175 2-in-1
9d48 Sunrise Point-LP LPC Controller
1028 06dc Latitude E7470
1028 06f3 Latitude 3570
103c 8079 EliteBook 840 G3
+ 17aa 2247 ThinkPad T570
9d4e Sunrise Point LPC Controller/eSPI Controller
17aa 225d ThinkPad T480
9d50 Sunrise Point LPC Controller
9d60 Sunrise Point-LP Serial IO I2C Controller #0
1025 115f Acer Aspire E5-575G
1028 06d6 Latitude 7275 tablet
+ 1028 06e6 Latitude 11 5175 2-in-1
1028 06f3 Latitude 3570
103c 8079 EliteBook 840 G3
17aa 225d ThinkPad T480
8086 9d60 100 Series PCH/Sunrise Point PCH I2C0 [Skylake/Kaby Lake LPSS I2C]
9d61 Sunrise Point-LP Serial IO I2C Controller #1
1028 06d6 Latitude 7275 tablet
+ 1028 06e6 Latitude 11 5175 2-in-1
9d62 Sunrise Point-LP Serial IO I2C Controller #2
1028 06d6 Latitude 7275 tablet
+ 1028 06e6 Latitude 11 5175 2-in-1
9d63 Sunrise Point-LP Serial IO I2C Controller #3
9d64 Sunrise Point-LP Serial IO I2C Controller #4
9d65 Sunrise Point-LP Serial IO I2C Controller #5
9d70 Sunrise Point-LP HD Audio
1028 06d6 Latitude 7275 tablet
1028 06dc Latitude E7470
+ 1028 06e6 Latitude 11 5175 2-in-1
1028 06f3 Latitude 3570
103c 8079 EliteBook 840 G3
+ 17aa 2247 ThinkPad T570
17aa 382a B51-80 Laptop
9d71 Sunrise Point-LP HD Audio
1025 1094 Acer Aspire E5-575G
a0a9 Tiger Lake-LP Serial IO UART Controller #1
a0ab Tiger Lake-LP Serial IO SPI Controller #1
a0b0 Tiger Lake-LP PCI Express Root Port #9
+ a0bd Tigerlake PCH-LP PCI Express Root Port #6
a0bf Tiger Lake-LP PCI Express Root Port #8
a0c5 Tiger Lake-LP Serial IO I2C Controller #4
a0c6 Tiger Lake-LP Serial IO I2C Controller #5
a379 Cannon Lake PCH Thermal Controller
1028 0869 Vostro 3470
a382 400 Series Chipset Family SATA AHCI Controller
+ a3a1 Memory controller
a3a3 Comet Lake PCH-V SMBus Host Controller
+ a3af Comet Lake PCH-V USB Controller
a3b1 Comet Lake PCH-V Thermal Subsystem
a620 6400/6402 Advanced Memory Buffer (AMB)
abc0 Omni-Path Fabric Switch Silicon 100 Series
8088 Beijing Wangxun Technology Co., Ltd.
0101 WX1860A2 Gigabit Ethernet Controller
8088 0201 Dual-Port Ethernet Network Adaptor SF200T
+ 8088 4201 Dual-Port Ethernet Network Adaptor SF200T (WOL)
+ 8088 8201 Dual-Port Ethernet Network Adaptor SF200T (NCSI)
+ 8088 c201 Dual-Port Ethernet Network Adaptor SF200T (WOL, NCSI)
0102 WX1860A2S Gigabit Ethernet Controller
8088 0210 Dual-Port Ethernet Network Adaptor SF200T-S
0103 WX1860A4 Gigabit Ethernet Controller
8088 0401 Qual-Port Ethernet Network Adaptor SF400T
8088 0440 Qual-Port Ethernet Network Adaptor SF400-OCP
+ 8088 4103 Quad-Port Ethernet Network Adaptor SF400T (WOL)
+ 8088 8103 Quad-Port Ethernet Network Adaptor SF400T (NCSI)
+ 8088 c103 Quad-Port Ethernet Network Adaptor SF400T (WOL, NCSI)
0104 WX1860A4S Gigabit Ethernet Controller
8088 0410 Qual-Port Ethernet Network Adaptor SF400T-S
0105 WX1860AL2 Gigabit Ethernet Controller
8088 0202 Dual-Port Ethernet Network Adaptor SF200HT
+ 8088 4202 Dual-Port Ethernet Network Adaptor SF200HT (WOL)
+ 8088 8202 Dual-Port Ethernet Network Adaptor SF200HT (NCSI)
+ 8088 c202 Dual-Port Ethernet Network Adaptor SF200HT (WOL, NCSI)
0106 WX1860AL2S Gigabit Ethernet Controller
8088 0220 Dual-Port Ethernet Network Adaptor SF200HT-S
0107 WX1860AL4 Gigabit Ethernet Controller
8088 0402 Qual-Port Ethernet Network Adaptor SF400HT
+ 8088 4402 Quad-Port Ethernet Network Adaptor SF400HT (WOL)
+ 8088 8402 Quad-Port Ethernet Network Adaptor SF400HT (NCSI)
+ 8088 c402 Quad-Port Ethernet Network Adaptor SF400HT (WOL, NCSI)
0108 WX1860AL4S Gigabit Ethernet Controller
8088 0420 Qual-Port Ethernet Network Adaptor SF400HT-S
+ 0109 WX1860-LC Gigabit Ethernet Controller
+ 010a WX1860A1 Gigabit Ethernet Controller
+# add new device ID
+ 010b WX1860AL1 Gigabit Ethernet Controller
+ 8088 0102 Single-Port Ethernet Network Adaptor SF100HT
+ 8088 4102 Single-Port Ethernet Network Adaptor SF100HT (WOL)
+ 8088 8102 Single-Port Ethernet Network Adaptor SF100HT (NCSI)
+ 8088 c102 Single-Port Ethernet Network Adaptor SF100HT (WOL, NCSI)
+ 0111 WX1860A2 Ethernet Controller Virtual Function
+ 0113 WX1860A4 Ethernet Controller Virtual Function
+ 0115 WX1860AL2 Ethernet Controller Virtual Function
+ 0117 WX1860AL4 Ethernet Controller Virtual Function
+ 0119 WX1860-LC Gigabit Ethernet Controller Virtual Function
+ 011a WX1860A1 Gigabit Ethernet Controller Virtual Function
+ 011b WX1860AL1 Gigabit Ethernet Controller Virtual Function
+ 1000 Ethernet Controller RP1000 Virtual Function for 10GbE SFP+
1001 Ethernet Controller RP1000 for 10GbE SFP+
8088 0000 Ethernet Network Adaptor RP1000 for 10GbE SFP+
+ 2000 Ethernet Controller RP2000 Virtual Function for 10GbE SFP+
2001 Ethernet Controller RP2000 for 10GbE SFP+
8088 2000 Ethernet Network Adaptor RP2000 for 10GbE SFP+
80ee InnoTek Systemberatung GmbH
4021 MT camera
e000 Winbond
e000 W89C940
-e159 Tiger Jet Network Inc.
+e159 Tiger Jet Network Inc. / ICP DAS
0001 Tiger3XX Modem/ISDN interface
0059 0001 128k ISDN-S/T Adapter
0059 0003 128k ISDN-U Adapter
0046 PCI-766 Analog Output Card
0052 PCI-703 Analog I/O Card
0800 PCI-800 Digital I/O Card
+ea50 Emerson Automation Solutions
# The main chip of all these devices is by Xilinx -> It could also be a Xilinx ID.
ea60 RME
9896 Digi32
<tr class="odd"><td>MILCOTS</td><td>MLC</td><td>07/15/2020</td> </tr>
<tr class="even"><td>NZXT (PNP same EDID)_</td><td>NXT</td><td>07/15/2020</td> </tr>
<tr class="odd"><td>Unicompute Technology Co., Ltd.</td><td>UTC</td><td>10/19/2020</td> </tr>
+ <tr class="even"><td>TECHNOGYM S.p.A.</td><td>TGW</td><td>01/08/2021</td> </tr>
</tbody>
</table>
</body>
# The latest version can be obtained from
# http://www.linux-usb.org/usb.ids
#
-# Version: 2020.08.26
-# Date: 2020-08-26 20:34:09
+# Version: 2021.01.29
+# Date: 2021-01-29 20:34:11
#
# Vendors, devices and interfaces. Please keep sorted.
0155 5800 XpressMusic (Multimedia mode)
0156 5800 XpressMusic (Storage mode)
0157 5800 XpressMusic (Imaging mode)
+ 0189 N810 Internet Tablet WiMAX
0199 6700 Classic (msc)
019a 6700 Classic (PC Suite)
019b 6700 Classic (mtp)
01b1 6303 classic Phone (Mass storage mode)
01b2 6303 classic Phone (Printing and media mode)
01c7 N900 (Storage Mode)
- 01c8 N900 (PC-Suite Mode)
+ 01c8 N900/N950 (PC-Suite Mode)
0228 5530 XpressMusic
023a 6730 Classic
026a N97 (mass storage)
03c1 C7-00 (Media transfer mode)
03c2 Sim
03cd C7-00 (Nokia Suite mode)
- 03d1 N950
+ 03d1 N950 (Storage Mode)
+ 03d2 N950 (PC Suite mode)
0400 7600 Phone Parent
0401 6650 GSM Phone
0402 6255 Phone Parent
0423 6682 Phone Parent
0428 6230i Modem
0429 6230i MultiMedia Card
- 0431 770 Internet Tablet
+ 0431 770/N800 Internet Tablet
0432 N90 Phone Parent
0435 E70 (IP Passthrough/RNDIS mode)
0436 E60 (IP Passthrough/RNDIS mode)
04f9 6300 (PC Suite mode)
0508 E65 (PC Suite mode)
0509 E65 (Storage mode)
- 0518 N9 Phone
+ 0518 N9 (Storage mode)
+ 0519 N9 (RNDIS/Ethernet mode)
+ 051a N9 (PC Suite mode)
054d C2-01
0600 Digital Pen SU-1B
0610 CS-15 (Internet Stick 3G modem)
05fc Harman
0001 Soundcraft Si Multi Digital Card
0010 Soundcraft Si MADI combo card
+ 0021 Soundcraft Signature 12 MTK
7849 Harman/Kardon SoundSticks
05fd InterAct, Inc.
0239 SV-239 HammerHead Digital
32b3 TEXA
d1a6 TXT Multihub
d1a7 TXT Multihub
+3310 MUDITA Sp. z o.o.
+ 0100 Pure
+ 0101 Pure tethering
3333 InLine
3333 2 port KVM switch model 60652K
3334 AEI
<term><option>-s</option></term>
<term><option>--signal=</option></term>
- <listitem><para>When used with <command>kill-session</command>
- or <command>kill-user</command>, choose which signal to send
- to selected processes. Must be one of the well known signal
- specifiers, such as <constant>SIGTERM</constant>,
- <constant>SIGINT</constant> or <constant>SIGSTOP</constant>.
- If omitted, defaults to
- <constant>SIGTERM</constant>.</para></listitem>
+ <listitem><para>When used with <command>kill-session</command> or <command>kill-user</command>,
+ choose which signal to send to selected processes. Must be one of the well known signal specifiers,
+ such as <constant>SIGTERM</constant>, <constant>SIGINT</constant> or <constant>SIGSTOP</constant>.
+ If omitted, defaults to <constant>SIGTERM</constant>.</para>
+
+ <para>The special value <literal>help</literal> will list the known values and the program will exit
+ immediately, and the special value <literal>list</literal> will list known values along with the
+ numerical signal numbers and the program will exit immediately.</para></listitem>
</varlistentry>
<varlistentry>
<option>all</option>.</para></listitem>
</varlistentry>
- <varlistentry>
- <term><option>-s</option></term>
- <term><option>--signal=</option></term>
-
- <listitem><para>When used with <command>kill</command>, choose
- which signal to send to selected processes. Must be one of the
- well-known signal specifiers, such as
- <constant>SIGTERM</constant>, <constant>SIGINT</constant> or
- <constant>SIGSTOP</constant>. If omitted, defaults to
- <constant>SIGTERM</constant>.</para></listitem>
- </varlistentry>
+ <xi:include href="standard-options.xml" xpointer="signal" />
<varlistentry>
<term><option>--uid=</option></term>
readonly s ManagedOOMMemoryPressure = '...';
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly u ManagedOOMMemoryPressureLimitPermyriad = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly s ManagedOOMPreference = '...';
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
readonly as Environment = ['...', ...];
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
<!--property ManagedOOMMemoryPressureLimitPermyriad is not documented!-->
+ <!--property ManagedOOMPreference is not documented!-->
+
<!--property EnvironmentFiles is not documented!-->
<!--property PassEnvironment is not documented!-->
<variablelist class="dbus-property" generated="True" extra-ref="ManagedOOMMemoryPressureLimitPermyriad"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="ManagedOOMPreference"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="Environment"/>
<variablelist class="dbus-property" generated="True" extra-ref="EnvironmentFiles"/>
readonly s ManagedOOMMemoryPressure = '...';
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly u ManagedOOMMemoryPressureLimitPermyriad = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly s ManagedOOMPreference = '...';
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
readonly as Environment = ['...', ...];
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
<!--property ManagedOOMMemoryPressureLimitPermyriad is not documented!-->
+ <!--property ManagedOOMPreference is not documented!-->
+
<!--property EnvironmentFiles is not documented!-->
<!--property PassEnvironment is not documented!-->
<variablelist class="dbus-property" generated="True" extra-ref="ManagedOOMMemoryPressureLimitPermyriad"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="ManagedOOMPreference"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="Environment"/>
<variablelist class="dbus-property" generated="True" extra-ref="EnvironmentFiles"/>
readonly s ManagedOOMMemoryPressure = '...';
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly u ManagedOOMMemoryPressureLimitPermyriad = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly s ManagedOOMPreference = '...';
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
readonly as Environment = ['...', ...];
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
<!--property ManagedOOMMemoryPressureLimitPermyriad is not documented!-->
+ <!--property ManagedOOMPreference is not documented!-->
+
<!--property EnvironmentFiles is not documented!-->
<!--property PassEnvironment is not documented!-->
<variablelist class="dbus-property" generated="True" extra-ref="ManagedOOMMemoryPressureLimitPermyriad"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="ManagedOOMPreference"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="Environment"/>
<variablelist class="dbus-property" generated="True" extra-ref="EnvironmentFiles"/>
readonly s ManagedOOMMemoryPressure = '...';
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly u ManagedOOMMemoryPressureLimitPermyriad = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly s ManagedOOMPreference = '...';
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
readonly as Environment = ['...', ...];
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
<!--property ManagedOOMMemoryPressureLimitPermyriad is not documented!-->
+ <!--property ManagedOOMPreference is not documented!-->
+
<!--property EnvironmentFiles is not documented!-->
<!--property PassEnvironment is not documented!-->
<variablelist class="dbus-property" generated="True" extra-ref="ManagedOOMMemoryPressureLimitPermyriad"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="ManagedOOMPreference"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="Environment"/>
<variablelist class="dbus-property" generated="True" extra-ref="EnvironmentFiles"/>
readonly s ManagedOOMMemoryPressure = '...';
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly u ManagedOOMMemoryPressureLimitPermyriad = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly s ManagedOOMPreference = '...';
};
interface org.freedesktop.DBus.Peer { ... };
interface org.freedesktop.DBus.Introspectable { ... };
<!--property ManagedOOMMemoryPressureLimitPermyriad is not documented!-->
+ <!--property ManagedOOMPreference is not documented!-->
+
<!--Autogenerated cross-references for systemd.directives, do not edit-->
<variablelist class="dbus-interface" generated="True" extra-ref="org.freedesktop.systemd1.Unit"/>
<variablelist class="dbus-property" generated="True" extra-ref="ManagedOOMMemoryPressureLimitPermyriad"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="ManagedOOMPreference"/>
+
<!--End of Autogenerated section-->
<refsect2>
readonly s ManagedOOMMemoryPressure = '...';
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly u ManagedOOMMemoryPressureLimitPermyriad = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly s ManagedOOMPreference = '...';
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
readonly s KillMode = '...';
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
<!--property ManagedOOMMemoryPressureLimitPermyriad is not documented!-->
+ <!--property ManagedOOMPreference is not documented!-->
+
<!--property KillMode is not documented!-->
<!--property KillSignal is not documented!-->
<variablelist class="dbus-property" generated="True" extra-ref="ManagedOOMMemoryPressureLimitPermyriad"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="ManagedOOMPreference"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="KillMode"/>
<variablelist class="dbus-property" generated="True" extra-ref="KillSignal"/>
to be used in case the unit names do not match the image name as described in the <command>attach</command>.</para>
</varlistentry>
+ <varlistentry>
+ <term><command>reattach</command> <replaceable>IMAGE</replaceable> [<replaceable>PREFIX…</replaceable>]</term>
+
+ <listitem><para>Detaches an existing portable service image from the host, and immediately attaches it again.
+ This is useful in case the image was replaced. Running units are not stopped during the process. Partial matching,
+ to allow for different versions in the image name, is allowed: only the part before the first <literal>_</literal>
+ character has to match. If the new image doesn't exist, the existing one will not be detached. The parameters
+ follow the same syntax as the <command>attach</command> command.</para></listitem>
+
+ <para>If <option>--now</option> and/or <option>--enable</option> are passed, the portable service(s) are
+ immediately stopped if removed, started and/or enabled if added, or restarted if updated. Prefixes are also
+ accepted, in the same way as described in the <command>attach</command> case.</para>
+ </varlistentry>
+
<varlistentry>
<term><command>inspect</command> <replaceable>IMAGE</replaceable> [<replaceable>PREFIX…</replaceable>]</term>
<varlistentry>
<term><option>--now</option></term>
- <listitem><para>Immediately start/stop the portable service after attaching/before detaching.</para></listitem>
+ <listitem><para>Immediately start/stop/restart the portable service after attaching/before
+ detaching/after upgrading.</para></listitem>
</varlistentry>
<varlistentry>
returned.</para></listitem>
</varlistentry>
+ <varlistentry>
+ <term><option>--validate=</option><replaceable>BOOL</replaceable></term>
+
+ <listitem><para>Takes a boolean parameter; used in conjunction with <command>query</command>. If true
+ (the default), DNSSEC validation is applied as usual — under the condition that it is enabled for the
+ network and for <filename>systemd-resolved.service</filename> as a whole. If false, DNSSEC validation
+ is disabled for the specific query, regardless of whether it is enabled for the network or in the
+ service. Note that setting this option to true does not force DNSSEC validation on systems/networks
+ where DNSSEC is turned off. This option is only suitable to turn off such validation where otherwise
+ enabled, not enable validation where otherwise disabled.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>--synthesize=</option><replaceable>BOOL</replaceable></term>
+
+ <listitem><para>Takes a boolean parameter; used in conjunction with <command>query</command>. If true
+ (the default), select domains are resolved on the local system, among them
+ <literal>localhost</literal> and <literal>_gateway</literal> or entries from
+ <filename>/etc/hosts</filename>. If false these domains are not resolved locally, and either fail (in
+ case of <literal>localhost</literal> or <literal>_gateway</literal> and suchlike) or go to the
+ network via regular DNS/mDNS/LLMNR lookups (in case of <filename>/etc/hosts</filename>
+ entries).</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>--cache=</option><replaceable>BOOL</replaceable></term>
+
+ <listitem><para>Takes a boolean parameter; used in conjunction with <command>query</command>. If true
+ (the default), lookups use the local DNS resource record cache. If false, lookups are routed to the
+ network instead, regardless if already available in the local cache.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>--zone=</option><replaceable>BOOL</replaceable></term>
+
+ <listitem><para>Takes a boolean parameter; used in conjunction with <command>query</command>. If true
+ (the default), lookups are answered from locally registered LLMNR or mDNS resource records, if
+ defined. If false, locally registered LLMNR/mDNS records are not considered for the lookup
+ request.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>--trust-anchor=</option><replaceable>BOOL</replaceable></term>
+
+ <listitem><para>Takes a boolean parameter; used in conjunction with <command>query</command>. If true
+ (the default), lookups for DS and DNSKEY are answered from the local DNSSEC trust anchors if
+ possible. If false, the local trust store is not considered for the lookup request.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>--network=</option><replaceable>BOOL</replaceable></term>
+
+ <listitem><para>Takes a boolean parameter; used in conjunction with <command>query</command>. If true
+ (the default), lookups are answered via DNS, LLMNR or mDNS network requests if they cannot be
+ synthesized locally, or be answered from the local cache, zone or trust anchors (see above). If false,
+ the request is not answered from the network and will thus fail if none of the indicated sources can
+ answer them.</para></listitem>
+ </varlistentry>
+
<varlistentry>
<term><option>--search=</option><replaceable>BOOL</replaceable></term>
(for a pretty version of the same, with indentation and line breaks) or <literal>off</literal> (to turn
off JSON output, the default).</para></listitem>
</varlistentry>
+
+ <varlistentry id='signal'>
+ <term><option>-s</option></term>
+ <term><option>--signal=</option></term>
+
+ <listitem>
+ <para>When used with <command>kill</command>, choose which signal to send to selected processes. Must
+ be one of the well-known signal specifiers such as <constant>SIGTERM</constant>,
+ <constant>SIGINT</constant> or <constant>SIGSTOP</constant>. If omitted, defaults to
+ <option>SIGTERM</option>.</para>
+
+ <para>The special value <literal>help</literal> will list the known values and the program will exit
+ immediately, and the special value <literal>list</literal> will list known values along with the
+ numerical signal numbers and the program will exit immediately.</para>
+ </listitem>
+ </varlistentry>
</variablelist>
is defined. If omitted, defaults to
<option>all</option>.</para>
</listitem>
-
</varlistentry>
- <varlistentry>
- <term><option>-s</option></term>
- <term><option>--signal=</option></term>
-
- <listitem>
- <para>When used with <command>kill</command>, choose which
- signal to send to selected processes. Must be one of the
- well-known signal specifiers such as <constant>SIGTERM</constant>, <constant>SIGINT</constant> or
- <constant>SIGSTOP</constant>. If omitted, defaults to
- <option>SIGTERM</option>.</para>
- </listitem>
- </varlistentry>
+ <xi:include href="standard-options.xml" xpointer="signal" />
<varlistentry>
<term><option>--what=</option></term>
</listitem>
</varlistentry>
+ <varlistentry>
+ <term><varname>UseFQDN=</varname></term>
+ <listitem>
+ <para>Equivalent of <varname>UseHostname=</varname> in the [DHCPv4] section.</para>
+ </listitem>
+ </varlistentry>
+
<varlistentry>
<term><varname>RouteMetric=</varname></term>
<listitem>
</para>
</listitem>
</varlistentry>
+
+ <varlistentry>
+ <term><varname>ManagedOOMPreference=none|avoid|omit</varname></term>
+
+ <listitem>
+ <para>Allows deprioritizing or omitting this unit's cgroup as a candidate when <command>systemd-oomd</command>
+ needs to act. Requires support for extended attributes (see
+ <citerefentry project='man-pages'><refentrytitle>xattr</refentrytitle><manvolnum>7</manvolnum></citerefentry>)
+ in order to use <option>avoid</option> or <option>omit</option>. Additionally, <command>systemd-oomd</command>
+ will ignore these extended attributes if the unit's cgroup is not owned by the root user.</para>
+
+ <para>If this property is set to <option>avoid</option>, the service manager will set the
+ "user.oomd_avoid" extended attribute on the unit's cgroup to "1". If <command>systemd-oomd</command> sees
+ this extended attribute on a cgroup set to "1" when choosing between candidates, it will only select the
+ cgroup with "user.oomd_avoid" if there are no other viable candidates.</para>
+
+ <para>If this property is set to <option>omit</option>, the service manager will set the "user.oomd_omit"
+ extended attribute on the unit's cgroup to "1". If <command>systemd-oomd</command> sees the this extended
+ attribute on the cgroup set to "1", it will ignore the cgroup as a candidate and will not perform any actions
+ on the cgroup.</para>
+
+ <para>It is recommended to use <option>avoid</option> and <option>omit</option> sparingly as it can adversely
+ affect <command>systemd-oomd</command>'s kill behavior. Also note that these extended attributes are not
+ applied recursively to cgroups under this unit's cgroup.</para>
+
+ <para>Defaults to <option>none</option> which means no extended attributes will be set and systemd-oomd will
+ sort this unit's cgroup as defined in
+ <citerefentry><refentrytitle>systemd-oomd.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+ and <citerefentry><refentrytitle>oomd.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry> (if this
+ unit's cgroup becomes a candidate).</para>
+ </listitem>
+ </varlistentry>
</variablelist>
</refsect1>
IMPORT{builtin}="blkid --noraid"
# probe filesystem metadata of disks
-KERNEL!="sr*", IMPORT{builtin}="blkid"
+KERNEL!="sr*|mmcblk[0-9]boot[0-9]", IMPORT{builtin}="blkid"
# by-label/by-uuid links (filesystem metadata)
ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}"
local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]}
local OPTS='-h --help --version --no-pager --no-legend -o --output -F --field -1
-r --reverse -S --since -U --until -D --directory -q --quiet --debugger
- -A --debugger-arguments'
+ -A --debugger-arguments --json -n'
local -A VERBS=(
[LIST]='list info'
compopt -o filenames
elif __contains_word "$prev" '--field -F'; then
comps=$( compgen -W '${__journal_fields[*]}' -- "$cur" )
+ elif __contains_word "$prev" '--json'; then
+ comps=$( compgen -W 'pretty short off' -- "$cur" )
elif [[ $cur = -* ]]; then
comps=${OPTS}
elif __contains_word "$prev" ${VERBS[*]} &&
[STANDALONE]='--all -a --help -h --no-pager --version
--no-legend --no-ask-password -l --full --value'
[ARG]='--host -H --kill-who --property -p --signal -s -M --machine
- -n --lines -o --output'
+ -n --lines -o --output -P'
)
if __contains_word "$prev" ${OPTS[ARG]}; then
--machine|-M)
comps=$( __get_machines )
;;
- --property|-p)
+ --property|-p|-P)
comps=''
;;
--output|-o)
local -A VERBS=(
[STANDALONE]='list'
- [IMAGE]='attach detach inspect is-attached set-limit'
+ [IMAGE]='attach detach reattach inspect is-attached set-limit'
[IMAGES]='remove'
[IMAGE_WITH_BOOL]='read-only'
)
return r;
}
+int cg_get_xattr_bool(const char *controller, const char *path, const char *name) {
+ _cleanup_free_ char *val = NULL;
+ int r;
+
+ assert(path);
+ assert(name);
+
+ r = cg_get_xattr_malloc(controller, path, name, &val);
+ if (r < 0)
+ return r;
+
+ return parse_boolean(val);
+}
+
int cg_remove_xattr(const char *controller, const char *path, const char *name) {
_cleanup_free_ char *fs = NULL;
int r;
return 0;
}
+int cg_get_owner(const char *controller, const char *path, uid_t *ret_uid) {
+ _cleanup_free_ char *f = NULL;
+ struct stat stats;
+ int r;
+
+ assert(ret_uid);
+
+ r = cg_get_path(controller, path, NULL, &f);
+ if (r < 0)
+ return r;
+
+ r = stat(f, &stats);
+ if (r < 0)
+ return -errno;
+
+ *ret_uid = stats.st_uid;
+ return 0;
+}
+
int cg_get_keyed_attribute_full(
const char *controller,
const char *path,
};
DEFINE_STRING_TABLE_LOOKUP(managed_oom_mode, ManagedOOMMode);
+
+static const char* const managed_oom_preference_table[_MANAGED_OOM_PREFERENCE_MAX] = {
+ [MANAGED_OOM_PREFERENCE_NONE] = "none",
+ [MANAGED_OOM_PREFERENCE_AVOID] = "avoid",
+ [MANAGED_OOM_PREFERENCE_OMIT] = "omit",
+};
+
+DEFINE_STRING_TABLE_LOOKUP(managed_oom_preference, ManagedOOMPreference);
int cg_get_attribute_as_bool(const char *controller, const char *path, const char *attribute, bool *ret);
int cg_set_access(const char *controller, const char *path, uid_t uid, gid_t gid);
+int cg_get_owner(const char *controller, const char *path, uid_t *ret_uid);
int cg_set_xattr(const char *controller, const char *path, const char *name, const void *value, size_t size, int flags);
int cg_get_xattr(const char *controller, const char *path, const char *name, void *value, size_t size);
int cg_get_xattr_malloc(const char *controller, const char *path, const char *name, char **ret);
+/* Returns negative on error, and 0 or 1 on success for the bool value */
+int cg_get_xattr_bool(const char *controller, const char *path, const char *name);
int cg_remove_xattr(const char *controller, const char *path, const char *name);
int cg_install_release_agent(const char *controller, const char *agent);
const char* managed_oom_mode_to_string(ManagedOOMMode m) _const_;
ManagedOOMMode managed_oom_mode_from_string(const char *s) _pure_;
+
+typedef enum ManagedOOMPreference {
+ MANAGED_OOM_PREFERENCE_NONE = 0,
+ MANAGED_OOM_PREFERENCE_AVOID = 1,
+ MANAGED_OOM_PREFERENCE_OMIT = 2,
+ _MANAGED_OOM_PREFERENCE_MAX,
+ _MANAGED_OOM_PREFERENCE_INVALID = -1
+} ManagedOOMPreference;
+
+const char* managed_oom_preference_to_string(ManagedOOMPreference a) _const_;
+ManagedOOMPreference managed_oom_preference_from_string(const char *s) _pure_;
if (cache < 0) {
if (detect_container() > 0)
cache = false;
- else
+ else {
cache = access("/sys/firmware/efi/", F_OK) >= 0;
+ if (!cache && errno != ENOENT)
+ log_debug_errno(errno, "Unable to test whether /sys/firmware/efi/ exists, assuming EFI not available: %m");
+ }
}
return cache;
_cleanup_close_ int fd = -1;
size_t sz = 0;
struct stat st;
- size_t i;
int r;
fd = open("/usr/lib/locale/locale-archive", O_RDONLY|O_NOCTTY|O_CLOEXEC);
}
e = (const struct namehashent*) ((const uint8_t*) p + h->namehash_offset);
- for (i = 0; i < h->namehash_size; i++) {
+ for (size_t i = 0; i < h->namehash_size; i++) {
char *z;
if (e[i].locrec_offset == 0)
}
void locale_variables_free(char *l[_VARIABLE_LC_MAX]) {
- LocaleVariable i;
-
if (!l)
return;
- for (i = 0; i < _VARIABLE_LC_MAX; i++)
+ for (LocaleVariable i = 0; i < _VARIABLE_LC_MAX; i++)
l[i] = mfree(l[i]);
}
# warning "bpf() syscall number is unknown for your architecture"
# endif
-/* may be (invalid) negative number due to libseccomp, see PR 13319 */
+/* may be an (invalid) negative number due to libseccomp, see PR 13319 */
# if defined __NR_bpf && __NR_bpf >= 0
# if defined systemd_NR_bpf
assert_cc(__NR_bpf == systemd_NR_bpf);
# warning "close_range() syscall number is unknown for your architecture"
# endif
-/* may be (invalid) negative number due to libseccomp, see PR 13319 */
+/* may be an (invalid) negative number due to libseccomp, see PR 13319 */
# if defined __NR_close_range && __NR_close_range >= 0
# if defined systemd_NR_close_range
assert_cc(__NR_close_range == systemd_NR_close_range);
# warning "copy_file_range() syscall number is unknown for your architecture"
# endif
-/* may be (invalid) negative number due to libseccomp, see PR 13319 */
+/* may be an (invalid) negative number due to libseccomp, see PR 13319 */
# if defined __NR_copy_file_range && __NR_copy_file_range >= 0
# if defined systemd_NR_copy_file_range
assert_cc(__NR_copy_file_range == systemd_NR_copy_file_range);
# warning "getrandom() syscall number is unknown for your architecture"
# endif
-/* may be (invalid) negative number due to libseccomp, see PR 13319 */
+/* may be an (invalid) negative number due to libseccomp, see PR 13319 */
# if defined __NR_getrandom && __NR_getrandom >= 0
# if defined systemd_NR_getrandom
assert_cc(__NR_getrandom == systemd_NR_getrandom);
# warning "memfd_create() syscall number is unknown for your architecture"
# endif
-/* may be (invalid) negative number due to libseccomp, see PR 13319 */
+/* may be an (invalid) negative number due to libseccomp, see PR 13319 */
# if defined __NR_memfd_create && __NR_memfd_create >= 0
# if defined systemd_NR_memfd_create
assert_cc(__NR_memfd_create == systemd_NR_memfd_create);
# warning "name_to_handle_at() syscall number is unknown for your architecture"
# endif
-/* may be (invalid) negative number due to libseccomp, see PR 13319 */
+/* may be an (invalid) negative number due to libseccomp, see PR 13319 */
# if defined __NR_name_to_handle_at && __NR_name_to_handle_at >= 0
# if defined systemd_NR_name_to_handle_at
assert_cc(__NR_name_to_handle_at == systemd_NR_name_to_handle_at);
# warning "pidfd_open() syscall number is unknown for your architecture"
# endif
-/* may be (invalid) negative number due to libseccomp, see PR 13319 */
+/* may be an (invalid) negative number due to libseccomp, see PR 13319 */
# if defined __NR_pidfd_open && __NR_pidfd_open >= 0
# if defined systemd_NR_pidfd_open
assert_cc(__NR_pidfd_open == systemd_NR_pidfd_open);
# warning "pidfd_send_signal() syscall number is unknown for your architecture"
# endif
-/* may be (invalid) negative number due to libseccomp, see PR 13319 */
+/* may be an (invalid) negative number due to libseccomp, see PR 13319 */
# if defined __NR_pidfd_send_signal && __NR_pidfd_send_signal >= 0
# if defined systemd_NR_pidfd_send_signal
assert_cc(__NR_pidfd_send_signal == systemd_NR_pidfd_send_signal);
# warning "pkey_mprotect() syscall number is unknown for your architecture"
# endif
-/* may be (invalid) negative number due to libseccomp, see PR 13319 */
+/* may be an (invalid) negative number due to libseccomp, see PR 13319 */
# if defined __NR_pkey_mprotect && __NR_pkey_mprotect >= 0
# if defined systemd_NR_pkey_mprotect
assert_cc(__NR_pkey_mprotect == systemd_NR_pkey_mprotect);
# warning "renameat2() syscall number is unknown for your architecture"
# endif
-/* may be (invalid) negative number due to libseccomp, see PR 13319 */
+/* may be an (invalid) negative number due to libseccomp, see PR 13319 */
# if defined __NR_renameat2 && __NR_renameat2 >= 0
# if defined systemd_NR_renameat2
assert_cc(__NR_renameat2 == systemd_NR_renameat2);
# warning "setns() syscall number is unknown for your architecture"
# endif
-/* may be (invalid) negative number due to libseccomp, see PR 13319 */
+/* may be an (invalid) negative number due to libseccomp, see PR 13319 */
# if defined __NR_setns && __NR_setns >= 0
# if defined systemd_NR_setns
assert_cc(__NR_setns == systemd_NR_setns);
# warning "statx() syscall number is unknown for your architecture"
# endif
-/* may be (invalid) negative number due to libseccomp, see PR 13319 */
+/* may be an (invalid) negative number due to libseccomp, see PR 13319 */
# if defined __NR_statx && __NR_statx >= 0
# if defined systemd_NR_statx
assert_cc(__NR_statx == systemd_NR_statx);
yield items[0], int(items[1])
def parse_syscall_tables(filenames):
- return {filename.split('-')[-1]: parse_syscall_table(filename)
+ return {filename.split('-')[-1][:-4]: parse_syscall_table(filename)
for filename in filenames}
DEF_TEMPLATE = '''\
# warning "{syscall}() syscall number is unknown for your architecture"
# endif
-/* may be (invalid) negative number due to libseccomp, see PR 13319 */
+/* may be an (invalid) negative number due to libseccomp, see PR 13319 */
# if defined __NR_{syscall} && __NR_{syscall} >= 0
# if defined systemd_NR_{syscall}
assert_cc(__NR_{syscall} == systemd_NR_{syscall});
return executable_is_good(checker);
}
-int parse_path_argument_and_warn(const char *path, bool suppress_root, char **arg) {
- char *p;
- int r;
-
- /*
- * This function is intended to be used in command line
- * parsers, to handle paths that are passed in. It makes the
- * path absolute, and reduces it to NULL if omitted or
- * root (the latter optionally).
- *
- * NOTE THAT THIS WILL FREE THE PREVIOUS ARGUMENT POINTER ON
- * SUCCESS! Hence, do not pass in uninitialized pointers.
- */
-
- if (isempty(path)) {
- *arg = mfree(*arg);
- return 0;
- }
-
- r = path_make_absolute_cwd(path, &p);
- if (r < 0)
- return log_error_errno(r, "Failed to parse path \"%s\" and make it absolute: %m", path);
-
- path_simplify(p, false);
- if (suppress_root && empty_or_root(p))
- p = mfree(p);
-
- free_and_replace(*arg, p);
-
- return 0;
-}
-
char* dirname_malloc(const char *path) {
char *d, *dir, *dir2;
_ret; \
})
-int parse_path_argument_and_warn(const char *path, bool suppress_root, char **arg);
-
char* dirname_malloc(const char *path);
const char *last_path_component(const char *path);
int path_extract_filename(const char *p, char **ret);
return 1;
}
+
+int random_u64_range(uint64_t m) {
+ uint64_t x, remainder;
+
+ /* Generates a random number in the range 0…m-1, unbiased. (Java's algorithm) */
+
+ if (m == 0) /* Let's take m == 0 as special case to return an integer from the full range */
+ return random_u64();
+ if (m == 1)
+ return 0;
+
+ remainder = UINT64_MAX % m;
+
+ do {
+ x = random_u64();
+ } while (x >= UINT64_MAX - remainder);
+
+ return x % m;
+}
size_t random_pool_size(void);
int random_write_entropy(int fd, const void *seed, size_t size, bool credit);
+
+int random_u64_range(uint64_t max);
fixed.rlim_max == highest.rlim_max)
return 0;
+ log_debug("Failed at setting rlimit " RLIM_FMT " for resource RLIMIT_%s. Will attempt setting value " RLIM_FMT " instead.", rlim->rlim_max, rlimit_to_string(resource), fixed.rlim_max);
+
if (setrlimit(resource, &fixed) < 0)
return -errno;
DEFINE_PRIVATE_STRING_TABLE_LOOKUP(__signal, int);
const char *signal_to_string(int signo) {
- static thread_local char buf[STRLEN("RTMIN+") + DECIMAL_STR_MAX(int) + 1];
+ static thread_local char buf[STRLEN("RTMIN+") + DECIMAL_STR_MAX(int)];
const char *name;
name = __signal_to_string(signo);
#define DEFINE_STRING_TABLE_LOOKUP(name,type) _DEFINE_STRING_TABLE_LOOKUP(name,type,)
#define DEFINE_STRING_TABLE_LOOKUP_TO_STRING(name,type) _DEFINE_STRING_TABLE_LOOKUP_TO_STRING(name,type,)
+#define DEFINE_STRING_TABLE_LOOKUP_FROM_STRING(name,type) _DEFINE_STRING_TABLE_LOOKUP_FROM_STRING(name,type,)
#define DEFINE_PRIVATE_STRING_TABLE_LOOKUP(name,type) _DEFINE_STRING_TABLE_LOOKUP(name,type,static)
#define DEFINE_PRIVATE_STRING_TABLE_LOOKUP_TO_STRING(name,type) _DEFINE_STRING_TABLE_LOOKUP_TO_STRING(name,type,static)
#define DEFINE_PRIVATE_STRING_TABLE_LOOKUP_FROM_STRING(name,type) _DEFINE_STRING_TABLE_LOOKUP_FROM_STRING(name,type,static)
#define DEFINE_STRING_TABLE_LOOKUP_WITH_BOOLEAN(name,type,yes) _DEFINE_STRING_TABLE_LOOKUP_WITH_BOOLEAN(name,type,yes,)
#define DEFINE_PRIVATE_STRING_TABLE_LOOKUP_WITH_BOOLEAN(name,type,yes) _DEFINE_STRING_TABLE_LOOKUP_WITH_BOOLEAN(name,type,yes,static)
+#define DEFINE_PRIVATE_STRING_TABLE_LOOKUP_FROM_STRING_WITH_BOOLEAN(name,type,yes) \
+ _DEFINE_STRING_TABLE_LOOKUP_FROM_STRING_WITH_BOOLEAN(name,type,yes,static)
/* For string conversions where numbers are also acceptable */
#define DEFINE_STRING_TABLE_LOOKUP_WITH_FALLBACK(name,type,max) \
#define DUMP_STRING_TABLE(name,type,max) \
do { \
- type _k; \
flockfile(stdout); \
- for (_k = 0; _k < (max); _k++) { \
+ for (type _k = 0; _k < (max); _k++) { \
const char *_t; \
_t = name##_to_string(_k); \
if (!_t) \
/* Check if the symlink goes outside of our search path.
* If yes, it's a linked unit file or mask, and we don't care about the target name.
- * Let's just store the link destination directly.
+ * Let's just store the link source directly.
* If not, let's verify that it's a good symlink. */
char *tail = path_startswith_strv(simplified, lp->search_path);
- if (tail) {
+ if (!tail) {
+ log_debug("%s: linked unit file: %s → %s",
+ __func__, filename, simplified);
+
+ dst = filename;
+ } else {
+
bool self_alias;
dst = basename(simplified);
}
log_debug("%s: alias: %s/%s → %s", __func__, *dir, de->d_name, dst);
- } else {
- dst = simplified;
-
- log_debug("%s: linked unit file: %s/%s → %s", __func__, *dir, de->d_name, dst);
}
} else {
#include <unistd.h>
#include "alloc-util.h"
+#include "cgroup-util.h"
#include "dirent-util.h"
#include "env-util.h"
#include "fd-util.h"
DEFINE_PRIVATE_STRING_TABLE_LOOKUP_FROM_STRING(container, int);
+static int running_in_cgroupns(void) {
+ int r;
+
+ if (!cg_ns_supported())
+ return false;
+
+ r = cg_all_unified();
+ if (r < 0)
+ return r;
+
+ if (r) {
+ /* cgroup v2 */
+
+ r = access("/sys/fs/cgroup/cgroup.events", F_OK);
+ if (r < 0) {
+ if (errno != ENOENT)
+ return -errno;
+ /* All kernel versions have cgroup.events in nested cgroups. */
+ return false;
+ }
+
+ /* There's no cgroup.type in the root cgroup, and future kernel versions
+ * are unlikely to add it since cgroup.type is something that makes no sense
+ * whatsoever in the root cgroup. */
+ r = access("/sys/fs/cgroup/cgroup.type", F_OK);
+ if (r == 0)
+ return true;
+ if (r < 0 && errno != ENOENT)
+ return -errno;
+
+ /* On older kernel versions, there's no cgroup.type */
+ r = access("/sys/kernel/cgroup/features", F_OK);
+ if (r < 0) {
+ if (errno != ENOENT)
+ return -errno;
+ /* This is an old kernel that we know for sure has cgroup.events
+ * only in nested cgroups. */
+ return true;
+ }
+
+ /* This is a recent kernel, and cgroup.type doesn't exist, so we must be
+ * in the root cgroup. */
+ return false;
+ } else {
+ /* cgroup v1 */
+
+ /* If systemd controller is not mounted, do not even bother. */
+ r = access("/sys/fs/cgroup/systemd", F_OK);
+ if (r < 0) {
+ if (errno != ENOENT)
+ return -errno;
+ return false;
+ }
+
+ /* release_agent only exists in the root cgroup. */
+ r = access("/sys/fs/cgroup/systemd/release_agent", F_OK);
+ if (r < 0) {
+ if (errno != ENOENT)
+ return -errno;
+ return true;
+ }
+
+ return false;
+ }
+}
+
+static int detect_container_files(void) {
+ unsigned i;
+
+ static const struct {
+ const char *file_path;
+ int id;
+ } container_file_table[] = {
+ /* https://github.com/containers/podman/issues/6192 */
+ /* https://github.com/containers/podman/issues/3586#issuecomment-661918679 */
+ { "/run/.containerenv", VIRTUALIZATION_PODMAN },
+ /* https://github.com/moby/moby/issues/18355 */
+ /* Docker must be the last in this table, see below. */
+ { "/.dockerenv", VIRTUALIZATION_DOCKER },
+ };
+
+ for (i = 0; i < ELEMENTSOF(container_file_table); i++) {
+ if (access(container_file_table[i].file_path, F_OK) >= 0)
+ return container_file_table[i].id;
+
+ if (errno != ENOENT)
+ log_debug_errno(errno,
+ "Checking if %s exists failed, ignoring: %m",
+ container_file_table[i].file_path);
+ }
+
+ return VIRTUALIZATION_NONE;
+}
+
int detect_container(void) {
static thread_local int cached_found = _VIRTUALIZATION_INVALID;
_cleanup_free_ char *m = NULL, *o = NULL, *p = NULL;
*/
e = getenv("container");
if (!e)
- goto none;
+ goto check_files;
if (isempty(e)) {
r = VIRTUALIZATION_NONE;
goto finish;
if (r < 0) /* This only works if we have CAP_SYS_PTRACE, hence let's better ignore failures here */
log_debug_errno(r, "Failed to read $container of PID 1, ignoring: %m");
-none:
- /* If that didn't work, give up, assume no container manager. */
+check_files:
+ /* Check for existence of some well-known files. We only do this after checking
+ * for other specific container managers, otherwise we risk mistaking another
+ * container manager for Docker: the /.dockerenv file could inadvertently end up
+ * in a file system image. */
+ r = detect_container_files();
+ if (r)
+ goto finish;
+
+ r = running_in_cgroupns();
+ if (r > 0) {
+ r = VIRTUALIZATION_CONTAINER_OTHER;
+ goto finish;
+ }
+ if (r < 0)
+ log_debug_errno(r, "Failed to detect cgroup namespace: %m");
+
+ /* If none of that worked, give up, assume no container manager. */
r = VIRTUALIZATION_NONE;
goto finish;
translate_name:
+ if (streq(e, "oci")) {
+ /* Some images hardcode container=oci, but OCI is not a specific container manager.
+ * Try to detect one based on well-known files. */
+ r = detect_container_files();
+ if (!r)
+ r = VIRTUALIZATION_CONTAINER_OTHER;
+ goto finish;
+ }
r = container_from_string(e);
if (r < 0)
r = VIRTUALIZATION_CONTAINER_OTHER;
printf(" Firmware: %s%s (%s)%s\n", ansi_highlight(), strna(fw_type), strna(fw_info), ansi_normal());
printf(" Secure Boot: %sd\n", enable_disable(is_efi_secure_boot()));
printf(" Setup Mode: %s\n", is_efi_secure_boot_setup_mode() ? "setup" : "user");
+ printf(" TPM2 Support: %s\n", yes_no(efi_has_tpm2()));
k = efi_get_reboot_to_firmware();
if (k > 0)
#include "log.h"
#include "main-func.h"
#include "pager.h"
+#include "parse-argument.h"
#include "parse-util.h"
#include "path-util.h"
#include "pretty-print.h"
break;
case ARG_JSON:
- r = json_parse_cmdline_parameter_and_warn(optarg, &arg_json_format_flags);
+ r = parse_json_argument(optarg, &arg_json_format_flags);
if (r <= 0)
return r;
.moom_swap = MANAGED_OOM_AUTO,
.moom_mem_pressure = MANAGED_OOM_AUTO,
+ .moom_preference = MANAGED_OOM_PREFERENCE_NONE,
};
}
"%sDelegate: %s\n"
"%sManagedOOMSwap: %s\n"
"%sManagedOOMMemoryPressure: %s\n"
- "%sManagedOOMMemoryPressureLimit: %" PRIu32 ".%02" PRIu32 "%%\n",
+ "%sManagedOOMMemoryPressureLimit: %" PRIu32 ".%02" PRIu32 "%%\n"
+ "%sManagedOOMPreference: %s%%\n",
prefix, yes_no(c->cpu_accounting),
prefix, yes_no(c->io_accounting),
prefix, yes_no(c->blockio_accounting),
prefix, yes_no(c->delegate),
prefix, managed_oom_mode_to_string(c->moom_swap),
prefix, managed_oom_mode_to_string(c->moom_mem_pressure),
- prefix, c->moom_mem_pressure_limit_permyriad / 100, c->moom_mem_pressure_limit_permyriad % 100);
+ prefix, c->moom_mem_pressure_limit_permyriad / 100, c->moom_mem_pressure_limit_permyriad % 100,
+ prefix, managed_oom_preference_to_string(c->moom_preference));
if (c->delegate) {
_cleanup_free_ char *t = NULL;
UNIT_DEFINE_ANCESTOR_MEMORY_LOOKUP(memory_low);
UNIT_DEFINE_ANCESTOR_MEMORY_LOOKUP(memory_min);
+void cgroup_oomd_xattr_apply(Unit *u, const char *cgroup_path) {
+ CGroupContext *c;
+ int r;
+
+ assert(u);
+
+ c = unit_get_cgroup_context(u);
+ if (!c)
+ return;
+
+ if (c->moom_preference == MANAGED_OOM_PREFERENCE_OMIT) {
+ r = cg_set_xattr(SYSTEMD_CGROUP_CONTROLLER, cgroup_path, "user.oomd_omit", "1", 1, 0);
+ if (r < 0)
+ log_unit_debug_errno(u, r, "Failed to set oomd_omit flag on control group %s, ignoring: %m", cgroup_path);
+ }
+
+ if (c->moom_preference == MANAGED_OOM_PREFERENCE_AVOID) {
+ r = cg_set_xattr(SYSTEMD_CGROUP_CONTROLLER, cgroup_path, "user.oomd_avoid", "1", 1, 0);
+ if (r < 0)
+ log_unit_debug_errno(u, r, "Failed to set oomd_avoid flag on control group %s, ignoring: %m", cgroup_path);
+ }
+
+ if (c->moom_preference != MANAGED_OOM_PREFERENCE_AVOID) {
+ r = cg_remove_xattr(SYSTEMD_CGROUP_CONTROLLER, cgroup_path, "user.oomd_avoid");
+ if (r != -ENODATA)
+ log_unit_debug_errno(u, r, "Failed to remove oomd_avoid flag on control group %s, ignoring: %m", cgroup_path);
+ }
+
+ if (c->moom_preference != MANAGED_OOM_PREFERENCE_OMIT) {
+ r = cg_remove_xattr(SYSTEMD_CGROUP_CONTROLLER, cgroup_path, "user.oomd_omit");
+ if (r != -ENODATA)
+ log_unit_debug_errno(u, r, "Failed to remove oomd_omit flag on control group %s, ignoring: %m", cgroup_path);
+ }
+}
+
static void cgroup_xattr_apply(Unit *u) {
char ids[SD_ID128_STRING_MAX];
int r;
if (r != -ENODATA)
log_unit_debug_errno(u, r, "Failed to remove delegate flag on control group %s, ignoring: %m", u->cgroup_path);
}
+
+ cgroup_oomd_xattr_apply(u, u->cgroup_path);
}
static int lookup_block_device(const char *p, dev_t *ret) {
else if (r == 0)
return 0;
- r = cg_get_xattr_malloc(SYSTEMD_CGROUP_CONTROLLER, u->cgroup_path, "user.systemd_oomd_kill", &value);
+ r = cg_get_xattr_malloc(SYSTEMD_CGROUP_CONTROLLER, u->cgroup_path, "user.oomd_kill", &value);
if (r < 0 && r != -ENODATA)
return r;
return 1;
}
-static const char* const cgroup_device_policy_table[_CGROUP_DEVICE_POLICY_MAX] = {
- [CGROUP_DEVICE_POLICY_AUTO] = "auto",
- [CGROUP_DEVICE_POLICY_CLOSED] = "closed",
- [CGROUP_DEVICE_POLICY_STRICT] = "strict",
-};
-
int unit_get_cpuset(Unit *u, CPUSet *cpus, const char *name) {
_cleanup_free_ char *v = NULL;
int r;
return parse_cpu_set_full(v, cpus, false, NULL, NULL, 0, NULL);
}
+static const char* const cgroup_device_policy_table[_CGROUP_DEVICE_POLICY_MAX] = {
+ [CGROUP_DEVICE_POLICY_AUTO] = "auto",
+ [CGROUP_DEVICE_POLICY_CLOSED] = "closed",
+ [CGROUP_DEVICE_POLICY_STRICT] = "strict",
+};
+
DEFINE_STRING_TABLE_LOOKUP(cgroup_device_policy, CGroupDevicePolicy);
static const char* const freezer_action_table[_FREEZER_ACTION_MAX] = {
ManagedOOMMode moom_swap;
ManagedOOMMode moom_mem_pressure;
uint32_t moom_mem_pressure_limit_permyriad;
+ ManagedOOMPreference moom_preference;
};
/* Used when querying IP accounting data */
int cgroup_add_device_allow(CGroupContext *c, const char *dev, const char *mode);
+void cgroup_oomd_xattr_apply(Unit *u, const char *cgroup_path);
+
CGroupMask unit_get_own_mask(Unit *u);
CGroupMask unit_get_delegate_mask(Unit *u);
CGroupMask unit_get_members_mask(Unit *u);
static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_cgroup_device_policy, cgroup_device_policy, CGroupDevicePolicy);
static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_managed_oom_mode, managed_oom_mode, ManagedOOMMode);
+static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_managed_oom_preference, managed_oom_preference, ManagedOOMPreference);
static int property_get_cgroup_mask(
sd_bus *bus,
SD_BUS_PROPERTY("ManagedOOMSwap", "s", property_get_managed_oom_mode, offsetof(CGroupContext, moom_swap), 0),
SD_BUS_PROPERTY("ManagedOOMMemoryPressure", "s", property_get_managed_oom_mode, offsetof(CGroupContext, moom_mem_pressure), 0),
SD_BUS_PROPERTY("ManagedOOMMemoryPressureLimitPermyriad", "u", NULL, offsetof(CGroupContext, moom_mem_pressure_limit_permyriad), 0),
+ SD_BUS_PROPERTY("ManagedOOMPreference", "s", property_get_managed_oom_preference, offsetof(CGroupContext, moom_preference), 0),
SD_BUS_VTABLE_END
};
return 1;
}
+ if (streq(name, "ManagedOOMPreference")) {
+ ManagedOOMPreference p;
+ const char *pref;
+
+ r = sd_bus_message_read(message, "s", &pref);
+ if (r < 0)
+ return r;
+
+ p = managed_oom_preference_from_string(pref);
+ if (p < 0)
+ return -EINVAL;
+
+ if (!UNIT_WRITE_FLAGS_NOOP(flags)) {
+ c->moom_preference = p;
+ unit_write_settingf(u, flags, name, "ManagedOOMPreference=%s", pref);
+ }
+
+ return 1;
+ }
+
if (streq(name, "DisableControllers") || (u->transient && u->load_state == UNIT_STUB))
return bus_cgroup_set_transient_property(u, c, name, message, flags, error);
return sd_bus_error_setf(error, BUS_ERROR_BAD_UNIT_SETTING, "Unit %s has a bad unit file setting.", u->id);
case UNIT_ERROR: /* Only show .load_error in UNIT_ERROR state */
- return sd_bus_error_set_errnof(error, u->load_error, "Unit %s failed to load properly: %m.", u->id);
+ return sd_bus_error_set_errnof(error, u->load_error,
+ "Unit %s failed to load properly, please adjust/correct and reload service manager: %m", u->id);
case UNIT_MASKED:
return sd_bus_error_setf(error, BUS_ERROR_UNIT_MASKED, "Unit %s is masked.", u->id);
r = cg_create(SYSTEMD_CGROUP_CONTROLLER, subcgroup_path);
if (r < 0)
return log_unit_error_errno(unit, r, "Failed to create control group '%s': %m", subcgroup_path);
+
+ /* Normally we would not propagate the oomd xattrs to children but since we created this
+ * sub-cgroup internally we should do it. */
+ cgroup_oomd_xattr_apply(unit, subcgroup_path);
}
}
$1.ManagedOOMSwap, config_parse_managed_oom_mode, 0, offsetof($1, cgroup_context.moom_swap)
$1.ManagedOOMMemoryPressure, config_parse_managed_oom_mode, 0, offsetof($1, cgroup_context.moom_mem_pressure)
$1.ManagedOOMMemoryPressureLimit, config_parse_managed_oom_mem_pressure_limit, 0, offsetof($1, cgroup_context.moom_mem_pressure_limit_permyriad)
+$1.ManagedOOMPreference, config_parse_managed_oom_preference, 0, offsetof($1, cgroup_context.moom_preference)
$1.NetClass, config_parse_warn_compat, DISABLED_LEGACY, 0'
)m4_dnl
Unit.Description, config_parse_unit_string_printf, 0, offsetof(Unit, description)
DEFINE_CONFIG_PARSE_ENUM(config_parse_service_timeout_failure_mode, service_timeout_failure_mode, ServiceTimeoutFailureMode, "Failed to parse timeout failure mode");
DEFINE_CONFIG_PARSE_ENUM(config_parse_socket_bind, socket_address_bind_ipv6_only_or_bool, SocketAddressBindIPv6Only, "Failed to parse bind IPv6 only value");
DEFINE_CONFIG_PARSE_ENUM(config_parse_oom_policy, oom_policy, OOMPolicy, "Failed to parse OOM policy");
+DEFINE_CONFIG_PARSE_ENUM(config_parse_managed_oom_preference, managed_oom_preference, ManagedOOMPreference, "Failed to parse ManagedOOMPreference=");
DEFINE_CONFIG_PARSE_ENUM_WITH_DEFAULT(config_parse_ip_tos, ip_tos, int, -1, "Failed to parse IP TOS value");
DEFINE_CONFIG_PARSE_PTR(config_parse_blockio_weight, cg_blkio_weight_parse, uint64_t, "Invalid block IO weight");
DEFINE_CONFIG_PARSE_PTR(config_parse_cg_weight, cg_weight_parse, uint64_t, "Invalid weight");
m = kill_mode_from_string(rvalue);
if (m < 0) {
- log_syntax(unit, LOG_WARNING, filename, line, 0,
+ log_syntax(unit, LOG_WARNING, filename, line, m,
"Failed to parse kill mode specification, ignoring: %s", rvalue);
return 0;
}
return 0;
}
- if (free_and_strdup(&s->bind_to_device, rvalue) < 0)
- return log_oom();
-
- return 0;
+ return free_and_strdup_warn(&s->bind_to_device, rvalue);
}
int config_parse_exec_input(
} else {
ei = exec_input_from_string(rvalue);
if (ei < 0) {
- log_syntax(unit, LOG_WARNING, filename, line, 0, "Failed to parse input specifier, ignoring: %s", rvalue);
+ log_syntax(unit, LOG_WARNING, filename, line, ei, "Failed to parse input specifier, ignoring: %s", rvalue);
return 0;
}
}
} else {
eo = exec_output_from_string(rvalue);
if (eo < 0) {
- log_syntax(unit, LOG_WARNING, filename, line, 0, "Failed to parse output specifier, ignoring: %s", rvalue);
+ log_syntax(unit, LOG_WARNING, filename, line, eo, "Failed to parse output specifier, ignoring: %s", rvalue);
return 0;
}
}
x = ioprio_class_from_string(rvalue);
if (x < 0) {
- log_syntax(unit, LOG_WARNING, filename, line, 0, "Failed to parse IO scheduling class, ignoring: %s", rvalue);
+ log_syntax(unit, LOG_WARNING, filename, line, x, "Failed to parse IO scheduling class, ignoring: %s", rvalue);
return 0;
}
x = sched_policy_from_string(rvalue);
if (x < 0) {
- log_syntax(unit, LOG_WARNING, filename, line, 0, "Failed to parse CPU scheduling policy, ignoring: %s", rvalue);
+ log_syntax(unit, LOG_WARNING, filename, line, x, "Failed to parse CPU scheduling policy, ignoring: %s", rvalue);
return 0;
}
partition_designator = partition_designator_from_string(partition);
if (partition_designator < 0) {
- log_syntax(unit, LOG_WARNING, filename, line, 0, "Invalid partition name %s, ignoring", partition);
+ log_syntax(unit, LOG_WARNING, filename, line, partition_designator,
+ "Invalid partition name %s, ignoring", partition);
continue;
}
r = unit_full_printf(u, mount_options, &mount_options_resolved);
type = unit_name_to_type(p);
if (type < 0) {
- log_syntax(unit, LOG_WARNING, filename, line, 0, "Unit type not valid, ignoring: %s", rvalue);
+ log_syntax(unit, LOG_WARNING, filename, line, type, "Unit type not valid, ignoring: %s", rvalue);
return 0;
}
if (unit_has_name(u, p)) {
b = path_type_from_string(lvalue);
if (b < 0) {
- log_syntax(unit, LOG_WARNING, filename, line, 0, "Failed to parse path type, ignoring: %s", lvalue);
+ log_syntax(unit, LOG_WARNING, filename, line, b, "Failed to parse path type, ignoring: %s", lvalue);
return 0;
}
}
e = parse_errno(rvalue);
- if (e <= 0) {
- log_syntax(unit, LOG_WARNING, filename, line, 0, "Failed to parse error number, ignoring: %s", rvalue);
+ if (e < 0) {
+ log_syntax(unit, LOG_WARNING, filename, line, e, "Failed to parse error number, ignoring: %s", rvalue);
+ return 0;
+ }
+ if (e == 0) {
+ log_syntax(unit, LOG_WARNING, filename, line, 0, "Invalid error number, ignoring: %s", rvalue);
return 0;
}
m = managed_oom_mode_from_string(rvalue);
if (m < 0) {
- log_syntax(unit, LOG_WARNING, filename, line, 0, "Invalid syntax, ignoring: %s", rvalue);
+ log_syntax(unit, LOG_WARNING, filename, line, m, "Invalid syntax, ignoring: %s", rvalue);
return 0;
}
*mode = m;
} else {
r = signal_from_string(word);
if (r < 0) {
- log_syntax(unit, LOG_WARNING, filename, line, 0,
+ log_syntax(unit, LOG_WARNING, filename, line, r,
"Failed to parse value, ignoring: %s", word);
continue;
}
partition_designator = partition_designator_from_string(partition);
if (partition_designator < 0) {
- log_syntax(unit, LOG_WARNING, filename, line, 0, "Invalid partition name %s, ignoring", partition);
+ log_syntax(unit, LOG_WARNING, filename, line, partition_designator,
+ "Invalid partition name %s, ignoring", partition);
continue;
}
r = unit_full_printf(u, mount_options, &mount_options_resolved);
}
}
- /* We do the merge dance here because for some unit types, the unit might have aliases which are not
+ /* Call merge_by_names with the name derived from the fragment path as the preferred name.
+ *
+ * We do the merge dance here because for some unit types, the unit might have aliases which are not
* declared in the file system. In particular, this is true (and frequent) for device and swap units.
*/
- Unit *merged;
const char *id = u->id;
_cleanup_free_ char *free_id = NULL;
}
}
- merged = u;
+ Unit *merged = u;
r = merge_by_names(&merged, names, id);
if (r < 0)
return r;
} else {
t = exec_output_from_string(rvalue);
if (t < 0) {
- log_syntax(unit, LOG_WARNING, filename, line, 0, "Failed to parse output type, ignoring: %s", rvalue);
+ log_syntax(unit, LOG_WARNING, filename, line, t, "Failed to parse output type, ignoring: %s", rvalue);
return 0;
}
CONFIG_PARSER_PROTOTYPE(config_parse_delegate);
CONFIG_PARSER_PROTOTYPE(config_parse_managed_oom_mode);
CONFIG_PARSER_PROTOTYPE(config_parse_managed_oom_mem_pressure_limit);
+CONFIG_PARSER_PROTOTYPE(config_parse_managed_oom_preference);
CONFIG_PARSER_PROTOTYPE(config_parse_device_policy);
CONFIG_PARSER_PROTOTYPE(config_parse_device_allow);
CONFIG_PARSER_PROTOTYPE(config_parse_io_device_latency);
#include "mount-setup.h"
#include "os-util.h"
#include "pager.h"
+#include "parse-argument.h"
#include "parse-util.h"
#include "path-util.h"
#include "pretty-print.h"
return 0;
if (path_is_absolute(value))
- (void) parse_path_argument_and_warn(value, false, &arg_early_core_pattern);
+ (void) parse_path_argument(value, false, &arg_early_core_pattern);
else
log_warning("Specified core pattern '%s' is not an absolute path, ignoring.", value);
if (proc_cmdline_value_missing(key, value))
return 0;
- (void) parse_path_argument_and_warn(value, false, &arg_watchdog_device);
+ (void) parse_path_argument(value, false, &arg_watchdog_device);
} else if (proc_cmdline_key_streq(key, "systemd.clock_usec")) {
#define DESTROY_IPC_FLAG (UINT32_C(1) << 31)
static void manager_serialize_uid_refs_internal(
- Manager *m,
FILE *f,
- Hashmap **uid_refs,
+ Hashmap *uid_refs,
const char *field_name) {
void *p, *k;
- assert(m);
assert(f);
- assert(uid_refs);
assert(field_name);
/* Serialize the UID reference table. Or actually, just the IPC destruction flag of it, as
* the actual counter of it is better rebuild after a reload/reexec. */
- HASHMAP_FOREACH_KEY(p, k, *uid_refs) {
+ HASHMAP_FOREACH_KEY(p, k, uid_refs) {
uint32_t c;
uid_t uid;
}
static void manager_serialize_uid_refs(Manager *m, FILE *f) {
- manager_serialize_uid_refs_internal(m, f, &m->uid_refs, "destroy-ipc-uid");
+ manager_serialize_uid_refs_internal(f, m->uid_refs, "destroy-ipc-uid");
}
static void manager_serialize_gid_refs(Manager *m, FILE *f) {
- manager_serialize_uid_refs_internal(m, f, &m->gid_refs, "destroy-ipc-gid");
+ manager_serialize_uid_refs_internal(f, m->gid_refs, "destroy-ipc-gid");
}
int manager_serialize(
}
static void manager_deserialize_uid_refs_one_internal(
- Manager *m,
Hashmap** uid_refs,
const char *value) {
uint32_t c;
int r;
- assert(m);
assert(uid_refs);
assert(value);
r = parse_uid(value, &uid);
if (r < 0 || uid == 0) {
- log_debug("Unable to parse UID reference serialization: " UID_FMT, uid);
+ log_debug("Unable to parse UID/GID reference serialization: " UID_FMT, uid);
return;
}
- r = hashmap_ensure_allocated(uid_refs, &trivial_hash_ops);
- if (r < 0) {
+ if (hashmap_ensure_allocated(uid_refs, &trivial_hash_ops) < 0) {
log_oom();
return;
}
r = hashmap_replace(*uid_refs, UID_TO_PTR(uid), UINT32_TO_PTR(c));
if (r < 0) {
- log_debug_errno(r, "Failed to add UID reference entry: %m");
+ log_debug_errno(r, "Failed to add UID/GID reference entry: %m");
return;
}
}
static void manager_deserialize_uid_refs_one(Manager *m, const char *value) {
- manager_deserialize_uid_refs_one_internal(m, &m->uid_refs, value);
+ manager_deserialize_uid_refs_one_internal(&m->uid_refs, value);
}
static void manager_deserialize_gid_refs_one(Manager *m, const char *value) {
- manager_deserialize_uid_refs_one_internal(m, &m->gid_refs, value);
+ manager_deserialize_uid_refs_one_internal(&m->gid_refs, value);
}
int manager_deserialize(Manager *m, FILE *f, FDSet *fds) {
}
static void manager_unref_uid_internal(
- Manager *m,
- Hashmap **uid_refs,
+ Hashmap *uid_refs,
uid_t uid,
bool destroy_now,
int (*_clean_ipc)(uid_t uid)) {
uint32_t c, n;
- assert(m);
- assert(uid_refs);
assert(uid_is_valid(uid));
assert(_clean_ipc);
if (uid == 0) /* We don't keep track of root, and will never destroy it */
return;
- c = PTR_TO_UINT32(hashmap_get(*uid_refs, UID_TO_PTR(uid)));
+ c = PTR_TO_UINT32(hashmap_get(uid_refs, UID_TO_PTR(uid)));
n = c & ~DESTROY_IPC_FLAG;
assert(n > 0);
n--;
if (destroy_now && n == 0) {
- hashmap_remove(*uid_refs, UID_TO_PTR(uid));
+ hashmap_remove(uid_refs, UID_TO_PTR(uid));
if (c & DESTROY_IPC_FLAG) {
log_debug("%s " UID_FMT " is no longer referenced, cleaning up its IPC.",
}
} else {
c = n | (c & DESTROY_IPC_FLAG);
- assert_se(hashmap_update(*uid_refs, UID_TO_PTR(uid), UINT32_TO_PTR(c)) >= 0);
+ assert_se(hashmap_update(uid_refs, UID_TO_PTR(uid), UINT32_TO_PTR(c)) >= 0);
}
}
void manager_unref_uid(Manager *m, uid_t uid, bool destroy_now) {
- manager_unref_uid_internal(m, &m->uid_refs, uid, destroy_now, clean_ipc_by_uid);
+ manager_unref_uid_internal(m->uid_refs, uid, destroy_now, clean_ipc_by_uid);
}
void manager_unref_gid(Manager *m, gid_t gid, bool destroy_now) {
- manager_unref_uid_internal(m, &m->gid_refs, (uid_t) gid, destroy_now, clean_ipc_by_gid);
+ manager_unref_uid_internal(m->gid_refs, (uid_t) gid, destroy_now, clean_ipc_by_gid);
}
static int manager_ref_uid_internal(
- Manager *m,
Hashmap **uid_refs,
uid_t uid,
bool clean_ipc) {
uint32_t c, n;
int r;
- assert(m);
assert(uid_refs);
assert(uid_is_valid(uid));
}
int manager_ref_uid(Manager *m, uid_t uid, bool clean_ipc) {
- return manager_ref_uid_internal(m, &m->uid_refs, uid, clean_ipc);
+ return manager_ref_uid_internal(&m->uid_refs, uid, clean_ipc);
}
int manager_ref_gid(Manager *m, gid_t gid, bool clean_ipc) {
- return manager_ref_uid_internal(m, &m->gid_refs, (uid_t) gid, clean_ipc);
+ return manager_ref_uid_internal(&m->gid_refs, (uid_t) gid, clean_ipc);
}
static void manager_vacuum_uid_refs_internal(
- Manager *m,
- Hashmap **uid_refs,
+ Hashmap *uid_refs,
int (*_clean_ipc)(uid_t uid)) {
void *p, *k;
- assert(m);
- assert(uid_refs);
assert(_clean_ipc);
- HASHMAP_FOREACH_KEY(p, k, *uid_refs) {
+ HASHMAP_FOREACH_KEY(p, k, uid_refs) {
uint32_t c, n;
uid_t uid;
(void) _clean_ipc(uid);
}
- assert_se(hashmap_remove(*uid_refs, k) == p);
+ assert_se(hashmap_remove(uid_refs, k) == p);
}
}
static void manager_vacuum_uid_refs(Manager *m) {
- manager_vacuum_uid_refs_internal(m, &m->uid_refs, clean_ipc_by_uid);
+ manager_vacuum_uid_refs_internal(m->uid_refs, clean_ipc_by_uid);
}
static void manager_vacuum_gid_refs(Manager *m) {
- manager_vacuum_uid_refs_internal(m, &m->gid_refs, clean_ipc_by_gid);
+ manager_vacuum_uid_refs_internal(m->gid_refs, clean_ipc_by_gid);
}
static void manager_vacuum(Manager *m) {
int manager_ref_uid(Manager *m, uid_t uid, bool clean_ipc);
void manager_unref_gid(Manager *m, gid_t gid, bool destroy_now);
-int manager_ref_gid(Manager *m, gid_t gid, bool destroy_now);
+int manager_ref_gid(Manager *m, gid_t gid, bool clean_ipc);
char *manager_taint_string(Manager *m);
if (streq(key, "state")) {
MountState state;
- if ((state = mount_state_from_string(value)) < 0)
- log_unit_debug(u, "Failed to parse state value: %s", value);
+ state = mount_state_from_string(value);
+ if (state < 0)
+ log_unit_debug_errno(u, state, "Failed to parse state value: %s", value);
else
m->deserialized_state = state;
f = mount_result_from_string(value);
if (f < 0)
- log_unit_debug(u, "Failed to parse result value: %s", value);
+ log_unit_debug_errno(u, f, "Failed to parse result value: %s", value);
else if (f != MOUNT_SUCCESS)
m->result = f;
f = mount_result_from_string(value);
if (f < 0)
- log_unit_debug(u, "Failed to parse reload result value: %s", value);
+ log_unit_debug_errno(u, f, "Failed to parse reload result value: %s", value);
else if (f != MOUNT_SUCCESS)
m->reload_result = f;
r = safe_atou(value, &m->n_retry_umount);
if (r < 0)
- log_unit_debug(u, "Failed to parse n-retry-umount value: %s", value);
+ log_unit_debug_errno(u, r, "Failed to parse n-retry-umount value: %s", value);
} else if (streq(key, "control-pid")) {
- if (parse_pid(value, &m->control_pid) < 0)
- log_unit_debug(u, "Failed to parse control-pid value: %s", value);
+ r = parse_pid(value, &m->control_pid);
+ if (r < 0)
+ log_unit_debug_errno(u, r, "Failed to parse control-pid value: %s", value);
} else if (streq(key, "control-command")) {
MountExecCommand id;
id = mount_exec_command_from_string(value);
if (id < 0)
- log_unit_debug(u, "Failed to parse exec-command value: %s", value);
+ log_unit_debug_errno(u, id, "Failed to parse exec-command value: %s", value);
else {
m->control_command_id = id;
m->control_command = m->exec_command + id;
"MESSAGE_ID=" SD_MESSAGE_UNIT_SUCCESS_STR,
LOG_UNIT_ID(u),
LOG_UNIT_INVOCATION_ID(u),
- LOG_UNIT_MESSAGE(u, "Succeeded."));
+ LOG_UNIT_MESSAGE(u, "Deactivated successfully."));
}
void unit_log_failure(Unit *u, const char *result) {
#include "macro.h"
#include "main-func.h"
#include "pager.h"
+#include "parse-argument.h"
#include "parse-util.h"
#include "path-util.h"
#include "pretty-print.h"
break;
case ARG_JSON:
- r = json_parse_cmdline_parameter_and_warn(optarg, &arg_json_format_flags);
+ r = parse_json_argument(optarg, &arg_json_format_flags);
if (r <= 0)
return r;
#include "libfido2-util.h"
#include "main-func.h"
#include "memory-util.h"
+#include "parse-argument.h"
#include "parse-util.h"
#include "path-util.h"
#include "pkcs11-util.h"
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
"Too many arguments, refusing.");
- r = parse_path_argument_and_warn(argv[optind], false, &arg_node);
+ r = parse_path_argument(argv[optind], false, &arg_node);
if (r < 0)
return r;
r = sscanf(value, "%m[0-9a-fA-F-]=%ms", &uuid, &uuid_value);
if (r != 2)
- return free_and_strdup(&arg_default_options, value) < 0 ? log_oom() : 0;
+ return free_and_strdup_warn(&arg_default_options, value);
if (warn_uuid_invalid(uuid, key))
return 0;
return 0;
n = strspn(value, ALPHANUMERICAL "-");
- if (value[n] != '=') {
- if (free_and_strdup(&arg_default_keyfile, value) < 0)
- return log_oom();
- return 0;
- }
+ if (value[n] != '=')
+ return free_and_strdup_warn(&arg_default_keyfile, value);
uuid = strndup(value, n);
if (!uuid)
else if (r > 0)
t = skip_dev_prefix(DEBUGTTY);
- if (free_and_strdup(&arg_debug_shell, t) < 0)
- return log_oom();
+ return free_and_strdup_warn(&arg_debug_shell, t);
} else if (streq(key, "systemd.unit")) {
if (proc_cmdline_value_missing(key, value))
return 0;
- r = free_and_strdup(&arg_default_unit, value);
- if (r < 0)
- return log_error_errno(r, "Failed to set default unit %s: %m", value);
+ return free_and_strdup_warn(&arg_default_unit, value);
} else if (!value) {
const char *target;
target = runlevel_to_target(key);
- if (target) {
- r = free_and_strdup(&arg_default_unit, target);
- if (r < 0)
- return log_error_errno(r, "Failed to set default unit %s: %m", target);
- }
+ if (target)
+ return free_and_strdup_warn(&arg_default_unit, target);
}
return 0;
#include "mkdir.h"
#include "mount-util.h"
#include "namespace-util.h"
+#include "parse-argument.h"
#include "parse-util.h"
#include "path-util.h"
#include "pretty-print.h"
}
case ARG_VERITY_DATA:
- r = parse_path_argument_and_warn(optarg, false, &arg_verity_settings.data_path);
+ r = parse_path_argument(optarg, false, &arg_verity_settings.data_path);
if (r < 0)
return r;
break;
break;
case ARG_JSON:
- r = json_parse_cmdline_parameter_and_warn(optarg, &arg_json_format_flags);
+ r = parse_json_argument(optarg, &arg_json_format_flags);
if (r <= 0)
return r;
#include "mkdir.h"
#include "mount-util.h"
#include "os-util.h"
+#include "parse-argument.h"
#include "parse-util.h"
#include "path-util.h"
#include "pretty-print.h"
}
log_info("Selected '%s'.", l[u-1]);
- if (free_and_strdup(ret, l[u-1]) < 0)
- return log_oom();
-
- return 0;
+ return free_and_strdup_warn(ret, l[u-1]);
}
if (!is_valid(p)) {
return version();
case ARG_ROOT:
- r = parse_path_argument_and_warn(optarg, true, &arg_root);
+ r = parse_path_argument(optarg, true, &arg_root);
if (r < 0)
return r;
break;
case ARG_IMAGE:
- r = parse_path_argument_and_warn(optarg, false, &arg_image);
+ r = parse_path_argument(optarg, false, &arg_image);
if (r < 0)
return r;
break;
break;
case ARG_MACHINE_ID:
- if (sd_id128_from_string(optarg, &arg_machine_id) < 0)
- return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
- "Failed to parse machine id %s.", optarg);
+ r = sd_id128_from_string(optarg, &arg_machine_id);
+ if (r < 0)
+ return log_error_errno(r, "Failed to parse machine id %s.", optarg);
break;
}
for (;;) {
- int pass, m;
+ int pass;
unsigned long cur, max;
_cleanup_free_ char *device = NULL;
double p;
last = t;
p = percent(pass, cur, max);
- fprintf(console, "\r%s: fsck %3.1f%% complete...\r%n", device, p, &m);
- fflush(console);
+ r = fprintf(console, "\r%s: fsck %3.1f%% complete...\r", device, p);
+ if (r < 0)
+ return -EIO; /* No point in continuing if something happened to our output stream */
- if (m > clear)
- clear = m;
+ fflush(console);
+ clear = MAX(clear, r);
}
if (clear > 0) {
- unsigned j;
-
fputc('\r', console);
- for (j = 0; j < (unsigned) clear; j++)
+ for (int j = 0; j < clear; j++)
fputc(' ', console);
fputc('\r', console);
fflush(console);
if (proc_cmdline_value_missing(key, value))
return 0;
- if (free_and_strdup(&arg_root_what, value) < 0)
- return log_oom();
+ return free_and_strdup_warn(&arg_root_what, value);
} else if (streq(key, "rootfstype")) {
if (proc_cmdline_value_missing(key, value))
return 0;
- if (free_and_strdup(&arg_root_fstype, value) < 0)
- return log_oom();
+ return free_and_strdup_warn(&arg_root_fstype, value);
} else if (streq(key, "rootflags")) {
if (proc_cmdline_value_missing(key, value))
return 0;
- if (free_and_strdup(&arg_root_hash, value) < 0)
- return log_oom();
+ return free_and_strdup_warn(&arg_root_hash, value);
} else if (streq(key, "mount.usr")) {
if (proc_cmdline_value_missing(key, value))
return 0;
- if (free_and_strdup(&arg_usr_what, value) < 0)
- return log_oom();
+ return free_and_strdup_warn(&arg_usr_what, value);
} else if (streq(key, "mount.usrfstype")) {
if (proc_cmdline_value_missing(key, value))
return 0;
- if (free_and_strdup(&arg_usr_fstype, value) < 0)
- return log_oom();
+ return free_and_strdup_warn(&arg_usr_fstype, value);
} else if (streq(key, "mount.usrflags")) {
#include "main-func.h"
#include "memory-util.h"
#include "pager.h"
+#include "parse-argument.h"
#include "parse-util.h"
#include "path-util.h"
#include "pkcs11-util.h"
break;
}
- r = parse_path_argument_and_warn(optarg, false, &hd);
+ r = parse_path_argument(optarg, false, &hd);
if (r < 0)
return r;
break;
}
- r = parse_path_argument_and_warn(optarg, false, &v);
+ r = parse_path_argument(optarg, false, &v);
if (r < 0)
return r;
break;
case ARG_JSON:
- r = json_parse_cmdline_parameter_and_warn(optarg, &arg_json_format_flags);
+ r = parse_json_argument(optarg, &arg_json_format_flags);
if (r <= 0)
return r;
blkid_loff_t offset = 0, size = 0;
blkid_partlist pl;
bool found = false;
- int r, i, n;
+ int r, n;
assert(fd >= 0);
assert(label);
if (n < 0)
return errno > 0 ? -errno : -EIO;
- for (i = 0; i < n; i++) {
+ for (int i = 0; i < n; i++) {
blkid_partition pp;
- sd_id128_t id;
+ sd_id128_t id = SD_ID128_NULL;
const char *sid;
errno = 0;
PasswordCache *cache,
UserRecord **ret_luks_home_record) {
- int r, token;
+ int r;
assert(cd);
assert(h);
- for (token = 0;; token++) {
+ for (int token = 0;; token++) {
_cleanup_(json_variant_unrefp) JsonVariant *v = NULL, *rr = NULL;
_cleanup_(EVP_CIPHER_CTX_freep) EVP_CIPHER_CTX *context = NULL;
_cleanup_(user_record_unrefp) UserRecord *lhr = NULL;
_cleanup_(fdisk_unref_contextp) struct fdisk_context *c = NULL;
_cleanup_(fdisk_unref_tablep) struct fdisk_table *t = NULL;
_cleanup_free_ char *path = NULL, *disk_uuid_as_string = NULL;
- size_t n_partitions, i;
+ size_t n_partitions;
sd_id128_t disk_uuid;
bool found = false;
int r;
return log_error_errno(r, "Failed to acquire partition table: %m");
n_partitions = fdisk_table_get_nents(t);
- for (i = 0; i < n_partitions; i++) {
+ for (size_t i = 0; i < n_partitions; i++) {
struct fdisk_partition *p;
p = fdisk_table_get_partition(t, i);
PasswordCache *cache, /* the passwords acquired via PKCS#11/FIDO2 security tokens */
char **effective_passwords /* new passwords */) {
- size_t volume_key_size, i, max_key_slots, n_effective;
+ size_t volume_key_size, max_key_slots, n_effective;
_cleanup_(erase_and_freep) void *volume_key = NULL;
struct crypt_pbkdf_type good_pbkdf, minimal_pbkdf;
const char *type;
build_good_pbkdf(&good_pbkdf, h);
build_minimal_pbkdf(&minimal_pbkdf, h);
- for (i = 0; i < max_key_slots; i++) {
+ for (size_t i = 0; i < max_key_slots; i++) {
r = crypt_keyslot_destroy(setup->crypt_device, i);
if (r < 0 && !IN_SET(r, -ENOENT, -EINVAL)) /* Returns EINVAL or ENOENT if there's no key in this slot already */
return log_error_errno(r, "Failed to destroy LUKS password: %m");
#include "mountpoint-util.h"
#include "nulstr-util.h"
#include "pager.h"
+#include "parse-argument.h"
#include "parse-util.h"
#include "path-util.h"
#include "pcre2-dlopen.h"
break;
case ARG_ROOT:
- r = parse_path_argument_and_warn(optarg, /* suppress_root= */ true, &arg_root);
+ r = parse_path_argument(optarg, /* suppress_root= */ true, &arg_root);
if (r < 0)
return r;
break;
case ARG_IMAGE:
- r = parse_path_argument_and_warn(optarg, /* suppress_root= */ false, &arg_image);
+ r = parse_path_argument(optarg, /* suppress_root= */ false, &arg_image);
if (r < 0)
return r;
break;
SD_BUS_ERROR_MAP(BUS_ERROR_NO_SUCH_LINK, ENXIO),
SD_BUS_ERROR_MAP(BUS_ERROR_LINK_BUSY, EBUSY),
SD_BUS_ERROR_MAP(BUS_ERROR_NETWORK_DOWN, ENETDOWN),
+ SD_BUS_ERROR_MAP(BUS_ERROR_NO_SOURCE, ESRCH),
+ SD_BUS_ERROR_MAP(BUS_ERROR_STUB_LOOP, ELOOP),
SD_BUS_ERROR_MAP(BUS_ERROR_NO_SUCH_DNSSD_SERVICE, ENOENT),
SD_BUS_ERROR_MAP(BUS_ERROR_DNSSD_SERVICE_EXISTS, EEXIST),
#define BUS_ERROR_NO_SUCH_LINK "org.freedesktop.resolve1.NoSuchLink"
#define BUS_ERROR_LINK_BUSY "org.freedesktop.resolve1.LinkBusy"
#define BUS_ERROR_NETWORK_DOWN "org.freedesktop.resolve1.NetworkDown"
+#define BUS_ERROR_NO_SOURCE "org.freedesktop.resolve1.NoSource"
+#define BUS_ERROR_STUB_LOOP "org.freedesktop.resolve1.StubLoop"
#define BUS_ERROR_NO_SUCH_DNSSD_SERVICE "org.freedesktop.resolve1.NoSuchDnssdService"
#define BUS_ERROR_DNSSD_SERVICE_EXISTS "org.freedesktop.resolve1.DnssdServiceExists"
#define _BUS_ERROR_DNS "org.freedesktop.resolve1.DnsError."
offset += n;
total_out += n;
- if (max_bytes != (uint64_t) -1 && total_out > (size_t) max_bytes)
- return log_debug_errno(SYNTHETIC_ERRNO(EFBIG),
- "Compressed stream longer than %" PRIu64 " bytes",
- max_bytes);
+ if (max_bytes != (uint64_t) -1 && total_out > (size_t) max_bytes) {
+ r = log_debug_errno(SYNTHETIC_ERRNO(EFBIG),
+ "Compressed stream longer than %" PRIu64 " bytes", max_bytes);
+ goto cleanup;
+ }
if (size - offset < frame_size + 4) {
k = loop_write(fdt, buf, offset, false);
struct reply_callback {
sd_netlink_message_handler_t callback;
usec_t timeout;
- uint64_t serial;
+ uint32_t serial;
unsigned prioq_idx;
};
#include "string-util.h"
#include "util.h"
+/* Some really high limit, to catch programming errors */
+#define REPLY_CALLBACKS_MAX UINT16_MAX
+
static int sd_netlink_new(sd_netlink **ret) {
_cleanup_(sd_netlink_unrefp) sd_netlink *rtnl = NULL;
.original_pid = getpid_cached(),
.protocol = -1,
- /* Change notification responses have sequence 0, so we must
- * start our request sequence numbers at 1, or we may confuse our
- * responses with notifications from the kernel */
- .serial = 1,
-
+ /* Kernel change notification messages have sequence number 0. We want to avoid that with our
+ * own serials, in order not to get confused when matching up kernel replies to our earlier
+ * requests.
+ *
+ * Moreover, when using netlink socket activation (i.e. where PID 1 binds an AF_NETLINK
+ * socket for us and passes it to us across execve()) and we get restarted multiple times
+ * while the socket sticks around we might get confused by replies from earlier runs coming
+ * in late — which is pretty likely if we'd start our sequence numbers always from 1. Hence,
+ * let's start with a value based on the system clock. This should make collisions much less
+ * likely (though still theoretically possible). We use a 32 bit µs counter starting at boot
+ * for this (and explicitly exclude the zero, see above). This counter will wrap around after
+ * a bit more than 1h, but that's hopefully OK as the kernel shouldn't take that long to
+ * reply to our requests.
+ *
+ * We only pick the initial start value this way. For each message we simply increase the
+ * sequence number by 1. This means we could enqueue 1 netlink message per µs without risking
+ * collisions, which should be OK.
+ *
+ * Note this means the serials will be in the range 1…UINT32_MAX here.
+ *
+ * (In an ideal world we'd attach the current serial counter to the netlink socket itself
+ * somehow, to avoid all this, but I couldn't come up with a nice way to do this) */
+ .serial = (uint32_t) (now(CLOCK_MONOTONIC) % UINT32_MAX) + 1,
};
/* We guarantee that the read buffer has at least space for
int sd_netlink_open_fd(sd_netlink **ret, int fd) {
_cleanup_(sd_netlink_unrefp) sd_netlink *rtnl = NULL;
- int r;
- int protocol;
- socklen_t l;
+ int r, protocol;
assert_return(ret, -EINVAL);
assert_return(fd >= 0, -EBADF);
if (r < 0)
return r;
- l = sizeof(protocol);
- r = getsockopt(fd, SOL_SOCKET, SO_PROTOCOL, &protocol, &l);
+ r = getsockopt_int(fd, SOL_SOCKET, SO_PROTOCOL, &protocol);
if (r < 0)
return r;
DEFINE_TRIVIAL_REF_UNREF_FUNC(sd_netlink, sd_netlink, netlink_free);
static void rtnl_seal_message(sd_netlink *rtnl, sd_netlink_message *m) {
+ uint32_t picked;
+
assert(rtnl);
assert(!rtnl_pid_changed(rtnl));
assert(m);
assert(m->hdr);
- /* don't use seq == 0, as that is used for broadcasts, so we
- would get confused by replies to such messages */
- m->hdr->nlmsg_seq = rtnl->serial++ ? : rtnl->serial++;
+ /* Avoid collisions with outstanding requests */
+ do {
+ picked = rtnl->serial;
- rtnl_message_seal(m);
+ /* Don't use seq == 0, as that is used for broadcasts, so we would get confused by replies to
+ such messages */
+ rtnl->serial = rtnl->serial == UINT32_MAX ? 1 : rtnl->serial + 1;
- return;
+ } while (hashmap_contains(rtnl->reply_callbacks, UINT32_TO_PTR(picked)));
+
+ m->hdr->nlmsg_seq = picked;
+ rtnl_message_seal(m);
}
int sd_netlink_send(sd_netlink *nl,
assert_se(prioq_pop(rtnl->reply_callbacks_prioq) == c);
c->timeout = 0;
- hashmap_remove(rtnl->reply_callbacks, &c->serial);
+ hashmap_remove(rtnl->reply_callbacks, UINT32_TO_PTR(c->serial));
slot = container_of(c, sd_netlink_slot, reply_callback);
static int process_reply(sd_netlink *rtnl, sd_netlink_message *m) {
struct reply_callback *c;
sd_netlink_slot *slot;
- uint64_t serial;
+ uint32_t serial;
uint16_t type;
int r;
assert(m);
serial = rtnl_message_get_serial(m);
- c = hashmap_remove(rtnl->reply_callbacks, &serial);
+ c = hashmap_remove(rtnl->reply_callbacks, UINT32_TO_PTR(serial));
if (!c)
return 0;
return r;
LIST_FOREACH(match_callbacks, c, rtnl->match_callbacks) {
- if (type == c->type) {
- slot = container_of(c, sd_netlink_slot, match_callback);
+ if (type != c->type)
+ continue;
- r = c->callback(rtnl, m, slot->userdata);
- if (r != 0) {
- if (r < 0)
- log_debug_errno(r, "sd-netlink: match callback %s%s%sfailed: %m",
- slot->description ? "'" : "",
- strempty(slot->description),
- slot->description ? "' " : "");
+ slot = container_of(c, sd_netlink_slot, match_callback);
- break;
- }
- }
+ r = c->callback(rtnl, m, slot->userdata);
+ if (r < 0)
+ log_debug_errno(r, "sd-netlink: match callback %s%s%sfailed: %m",
+ slot->description ? "'" : "",
+ strempty(slot->description),
+ slot->description ? "' " : "");
+ if (r != 0)
+ break;
}
return 1;
uint64_t usec,
const char *description) {
_cleanup_free_ sd_netlink_slot *slot = NULL;
- uint32_t s;
int r, k;
assert_return(nl, -EINVAL);
assert_return(callback, -EINVAL);
assert_return(!rtnl_pid_changed(nl), -ECHILD);
- r = hashmap_ensure_allocated(&nl->reply_callbacks, &uint64_hash_ops);
+ if (hashmap_size(nl->reply_callbacks) >= REPLY_CALLBACKS_MAX)
+ return -ERANGE;
+
+ r = hashmap_ensure_allocated(&nl->reply_callbacks, &trivial_hash_ops);
if (r < 0)
return r;
slot->reply_callback.callback = callback;
slot->reply_callback.timeout = calc_elapse(usec);
- k = sd_netlink_send(nl, m, &s);
+ k = sd_netlink_send(nl, m, &slot->reply_callback.serial);
if (k < 0)
return k;
- slot->reply_callback.serial = s;
-
- r = hashmap_put(nl->reply_callbacks, &slot->reply_callback.serial, &slot->reply_callback);
+ r = hashmap_put(nl->reply_callbacks, UINT32_TO_PTR(slot->reply_callback.serial), &slot->reply_callback);
if (r < 0)
return r;
if (slot->reply_callback.timeout != 0) {
r = prioq_put(nl->reply_callbacks_prioq, &slot->reply_callback, &slot->reply_callback.prioq_idx);
if (r < 0) {
- (void) hashmap_remove(nl->reply_callbacks, &slot->reply_callback.serial);
+ (void) hashmap_remove(nl->reply_callbacks, UINT32_TO_PTR(slot->reply_callback.serial));
return r;
}
}
#include "main-func.h"
#include "memory-util.h"
#include "pager.h"
+#include "parse-argument.h"
#include "parse-util.h"
#include "pretty-print.h"
#include "process-util.h"
break;
case 's':
- if (streq(optarg, "help")) {
- DUMP_STRING_TABLE(signal, int, _NSIG);
- return 0;
- }
-
- arg_signal = signal_from_string(optarg);
- if (arg_signal < 0)
- return log_error_errno(arg_signal, "Failed to parse signal string %s.", optarg);
+ r = parse_signal_argument(optarg, &arg_signal);
+ if (r <= 0)
+ return r;
break;
case 'H':
#include "log.h"
#include "machine-id-setup.h"
#include "main-func.h"
+#include "parse-argument.h"
#include "path-util.h"
#include "pretty-print.h"
#include "util.h"
return version();
case ARG_ROOT:
- r = parse_path_argument_and_warn(optarg, true, &arg_root);
+ r = parse_path_argument(optarg, true, &arg_root);
if (r < 0)
return r;
break;
#include "mkdir.h"
#include "nulstr-util.h"
#include "pager.h"
+#include "parse-argument.h"
#include "parse-util.h"
#include "path-util.h"
#include "pretty-print.h"
break;
case 's':
- if (streq(optarg, "help")) {
- DUMP_STRING_TABLE(signal, int, _NSIG);
- return 0;
- }
-
- r = signal_from_string(optarg);
- if (r < 0)
- return log_error_errno(r, "Failed to parse signal string %s.", optarg);
- arg_signal = r;
+ r = parse_signal_argument(optarg, &arg_signal);
+ if (r <= 0)
+ return r;
break;
case ARG_NO_ASK_PASSWORD:
break;
case 't':
- if (free_and_strdup(&arg_mount_type, optarg) < 0)
- return log_oom();
+ r = free_and_strdup_warn(&arg_mount_type, optarg);
+ if (r < 0)
+ return r;
break;
case 'o':
- if (free_and_strdup(&arg_mount_options, optarg) < 0)
- return log_oom();
+ r = free_and_strdup_warn(&arg_mount_options, optarg);
+ if (r < 0)
+ return r;
break;
case ARG_OWNER: {
break;
case ARG_DESCRIPTION:
- if (free_and_strdup(&arg_description, optarg) < 0)
- return log_oom();
+ r = free_and_strdup_warn(&arg_description, optarg);
+ if (r < 0)
+ return r;
break;
case 'p':
spec = l2tp_l2spec_type_from_string(rvalue);
if (spec < 0) {
- log_syntax(unit, LOG_WARNING, filename, line, 0,
+ log_syntax(unit, LOG_WARNING, filename, line, spec,
"Failed to parse layer2 specific header type. Ignoring assignment: %s", rvalue);
return 0;
}
k = netdev_kind_from_string(rvalue);
if (k < 0) {
- log_syntax(unit, LOG_WARNING, filename, line, 0, "Failed to parse netdev kind, ignoring assignment: %s", rvalue);
+ log_syntax(unit, LOG_WARNING, filename, line, k, "Failed to parse netdev kind, ignoring assignment: %s", rvalue);
return 0;
}
if (r < 0) {
r = safe_atou32(rvalue, &k);
if (r < 0) {
- log_syntax(unit, LOG_WARNING, filename, line, 0, "Failed to parse tunnel key ignoring assignment: %s", rvalue);
+ log_syntax(unit, LOG_WARNING, filename, line, r,
+ "Failed to parse tunnel key ignoring assignment: %s", rvalue);
return 0;
}
} else
}
static int address_add(Link *link, const Address *in, Address **ret) {
+ bool is_new = false;
Address *address;
int r;
r = address_add_internal(link, &link->addresses, in, &address);
if (r < 0)
return r;
+ is_new = true;
} else if (r == 0) {
/* Take over a foreign address */
r = set_ensure_put(&link->addresses, &address_hash_ops, address);
if (ret)
*ret = address;
-
- return 0;
+ return is_new;
}
static int address_update(Address *address, const Address *src) {
if (DEBUG_LOGGING) {
_cleanup_free_ char *addr = NULL, *peer = NULL;
- char valid_buf[FORMAT_TIMESPAN_MAX];
- const char *valid_str = NULL;
+ char valid_buf[FORMAT_TIMESPAN_MAX], preferred_buf[FORMAT_TIMESPAN_MAX];
+ const char *valid_str = NULL, *preferred_str = NULL;
bool has_peer;
(void) in_addr_to_string(address->family, &address->in_addr, &addr);
address->cinfo.ifa_valid * USEC_PER_SEC,
USEC_PER_SEC);
- log_link_debug(link, "%s address: %s%s%s/%u (valid %s%s)",
+ if (address->cinfo.ifa_prefered != CACHE_INFO_INFINITY_LIFE_TIME)
+ preferred_str = format_timespan(preferred_buf, FORMAT_TIMESPAN_MAX,
+ address->cinfo.ifa_prefered * USEC_PER_SEC,
+ USEC_PER_SEC);
+
+ log_link_debug(link, "%s address: %s%s%s/%u (valid %s%s, preferred %s%s)",
str, strnull(addr), has_peer ? " peer " : "",
has_peer ? strnull(peer) : "", address->prefixlen,
- valid_str ? "for " : "forever", strempty(valid_str));
+ valid_str ? "for " : "forever", strempty(valid_str),
+ preferred_str ? "for " : "forever", strempty(preferred_str));
}
}
return 1;
}
+static int address_set_netlink_message(const Address *address, sd_netlink_message *req, Link *link) {
+ int r;
+
+ assert(address);
+ assert(req);
+ assert(link);
+
+ r = sd_rtnl_message_addr_set_prefixlen(req, address->prefixlen);
+ if (r < 0)
+ return log_link_error_errno(link, r, "Could not set prefixlen: %m");
+
+ /* On remove, only IFA_F_MANAGETEMPADDR flag for IPv6 addresses are used. But anyway, set all
+ * flags here unconditionally. Without setting the flag, the template addresses generated by
+ * kernel will not be removed automatically when the main address is removed. */
+ r = sd_rtnl_message_addr_set_flags(req, address->flags & 0xff);
+ if (r < 0)
+ return log_link_error_errno(link, r, "Could not set flags: %m");
+
+ if ((address->flags & ~0xff) != 0) {
+ r = sd_netlink_message_append_u32(req, IFA_FLAGS, address->flags);
+ if (r < 0)
+ return log_link_error_errno(link, r, "Could not set extended flags: %m");
+ }
+
+ r = netlink_message_append_in_addr_union(req, IFA_LOCAL, address->family, &address->in_addr);
+ if (r < 0)
+ return log_link_error_errno(link, r, "Could not append IFA_LOCAL attribute: %m");
+
+ return 0;
+}
+
int address_remove(
const Address *address,
Link *link,
if (r < 0)
return log_link_error_errno(link, r, "Could not allocate RTM_DELADDR message: %m");
- r = sd_rtnl_message_addr_set_prefixlen(req, address->prefixlen);
+ r = address_set_netlink_message(address, req, link);
if (r < 0)
- return log_link_error_errno(link, r, "Could not set prefixlen: %m");
-
- r = netlink_message_append_in_addr_union(req, IFA_LOCAL, address->family, &address->in_addr);
- if (r < 0)
- return log_link_error_errno(link, r, "Could not append IFA_LOCAL attribute: %m");
+ return r;
r = netlink_call_async(link->manager->rtnl, NULL, req,
callback ?: address_remove_handler,
const Address *address,
Link *link,
link_netlink_message_handler_t callback,
- bool update,
Address **ret) {
_cleanup_(sd_netlink_message_unrefp) sd_netlink_message *req = NULL;
Address *acquired_address, *a;
- uint32_t flags;
- int r;
+ bool update;
+ int r, k;
assert(address);
assert(IN_SET(address->family, AF_INET, AF_INET6));
if (acquired_address)
address = acquired_address;
+ update = address_get(link, address, NULL) >= 0;
+
log_address_debug(address, update ? "Updating" : "Configuring", link);
if (update)
if (r < 0)
return log_link_error_errno(link, r, "Could not allocate RTM_NEWADDR message: %m");
- r = sd_rtnl_message_addr_set_prefixlen(req, address->prefixlen);
- if (r < 0)
- return log_link_error_errno(link, r, "Could not set prefixlen: %m");
-
- flags = address->flags | IFA_F_PERMANENT;
- r = sd_rtnl_message_addr_set_flags(req, flags & 0xff);
+ r = address_set_netlink_message(address, req, link);
if (r < 0)
- return log_link_error_errno(link, r, "Could not set flags: %m");
-
- if (flags & ~0xff) {
- r = sd_netlink_message_append_u32(req, IFA_FLAGS, flags);
- if (r < 0)
- return log_link_error_errno(link, r, "Could not set extended flags: %m");
- }
+ return r;
r = sd_rtnl_message_addr_set_scope(req, address->scope);
if (r < 0)
return log_link_error_errno(link, r, "Could not set scope: %m");
- r = netlink_message_append_in_addr_union(req, IFA_LOCAL, address->family, &address->in_addr);
- if (r < 0)
- return log_link_error_errno(link, r, "Could not append IFA_LOCAL attribute: %m");
-
if (in_addr_is_null(address->family, &address->in_addr_peer) == 0) {
r = netlink_message_append_in_addr_union(req, IFA_ADDRESS, address->family, &address->in_addr_peer);
if (r < 0)
if (r < 0)
return log_link_error_errno(link, r, "Could not append IFA_CACHEINFO attribute: %m");
- r = address_add(link, address, &a);
- if (r < 0)
- return log_link_error_errno(link, r, "Could not add address: %m");
+ k = address_add(link, address, &a);
+ if (k < 0)
+ return log_link_error_errno(link, k, "Could not add address: %m");
r = address_set_masquerade(a, true);
if (r < 0)
if (ret)
*ret = a;
- return 1;
+ return k;
}
static int static_address_ready_callback(Address *address) {
return 1;
}
-static int static_address_configure(const Address *address, Link *link, bool update) {
+static int static_address_configure(const Address *address, Link *link) {
Address *ret;
int r;
assert(address);
assert(link);
- r = address_configure(address, link, address_handler, update, &ret);
+ r = address_configure(address, link, address_handler, &ret);
if (r < 0)
return log_link_warning_errno(link, r, "Could not configure static address: %m");
}
ORDERED_HASHMAP_FOREACH(ad, link->network->addresses_by_section) {
- bool update;
-
- update = address_get(link, ad, NULL) > 0;
- r = static_address_configure(ad, link, update);
+ r = static_address_configure(ad, link);
if (r < 0)
return r;
}
return log_link_warning_errno(link, r, "Could not generate EUI64 address: %m");
address->family = AF_INET6;
- r = static_address_configure(address, link, true);
+ r = static_address_configure(address, link);
if (r < 0)
return r;
}
int address_new(Address **ret);
Address *address_free(Address *address);
int address_get(Link *link, const Address *in, Address **ret);
-int address_configure(const Address *address, Link *link, link_netlink_message_handler_t callback, bool update, Address **ret);
+int address_configure(const Address *address, Link *link, link_netlink_message_handler_t callback, Address **ret);
int address_remove(const Address *address, Link *link, link_netlink_message_handler_t callback);
bool address_equal(const Address *a1, const Address *a2);
bool address_is_ready(const Address *a);
type = duid_type_from_string(type_string);
if (type < 0) {
- log_syntax(unit, LOG_WARNING, filename, line, 0,
+ log_syntax(unit, LOG_WARNING, filename, line, type,
"Failed to parse DUID type '%s', ignoring.", type_string);
return 0;
}
/* Previously, we had a slightly different enum here,
* support its values for compatibility. */
- if (streq(rvalue, "none"))
- s = ADDRESS_FAMILY_NO;
- else if (streq(rvalue, "v4"))
- s = ADDRESS_FAMILY_IPV4;
- else if (streq(rvalue, "v6"))
- s = ADDRESS_FAMILY_IPV6;
- else if (streq(rvalue, "both"))
- s = ADDRESS_FAMILY_YES;
- else {
- log_syntax(unit, LOG_WARNING, filename, line, 0,
+ s = dhcp_deprecated_address_family_from_string(rvalue);
+ if (s < 0) {
+ log_syntax(unit, LOG_WARNING, filename, line, s,
"Failed to parse DHCP option, ignoring: %s", rvalue);
return 0;
}
type = dhcp_option_data_type_from_string(word);
if (type < 0) {
- log_syntax(unit, LOG_WARNING, filename, line, 0,
+ log_syntax(unit, LOG_WARNING, filename, line, type,
"Invalid DHCP option data type, ignoring assignment: %s", p);
return 0;
}
/* allow reusing an existing address and simply update its lifetime
* in case it already exists */
- r = address_configure(addr, link, dhcp4_address_handler, true, &ret);
+ r = address_configure(addr, link, dhcp4_address_handler, &ret);
if (r < 0)
return log_link_error_errno(link, r, "Failed to set DHCPv4 address: %m");
#include "escape.h"
#include "hashmap.h"
+#include "hostname-setup.h"
#include "hostname-util.h"
#include "missing_network.h"
#include "networkd-address.h"
assert(link);
assert(link->manager);
- if (!force && (link->dhcp6_pd_address_messages != 0 || link->dhcp6_pd_route_configured != 0))
+ if (!force && (link->dhcp6_pd_address_messages != 0 || link->dhcp6_pd_route_messages != 0))
return 0;
if (set_isempty(link->dhcp6_pd_addresses_old) && set_isempty(link->dhcp6_pd_routes_old))
r = route_configure(route, link, dhcp6_pd_route_handler, &ret);
if (r < 0)
return log_link_error_errno(link, r, "Failed to set DHCPv6 prefix route: %m");
+ if (r > 0)
+ link->dhcp6_pd_route_configured = false;
link->dhcp6_pd_route_messages++;
address->cinfo.ifa_valid = lifetime_valid;
SET_FLAG(address->flags, IFA_F_MANAGETEMPADDR, link->network->dhcp6_pd_manage_temporary_address);
- r = address_configure(address, link, dhcp6_pd_address_handler, true, &ret);
+ r = address_configure(address, link, dhcp6_pd_address_handler, &ret);
if (r < 0)
return log_link_error_errno(link, r, "Failed to set DHCPv6 delegated prefix address: %m");
+ if (r > 0)
+ link->dhcp6_pd_address_configured = false;
link->dhcp6_pd_address_messages++;
if (!link_dhcp6_pd_is_enabled(link))
return 0;
- link->dhcp6_pd_address_configured = false;
- link->dhcp6_pd_route_configured = false;
link->dhcp6_pd_prefixes_assigned = true;
while ((address = set_steal_first(link->dhcp6_pd_addresses))) {
if (r < 0)
return log_link_error_errno(link, r, "Failed to set unreachable route for DHCPv6 delegated subnet %s/%u: %m",
strna(buf), prefixlen);
+ if (r > 0)
+ link->dhcp6_route_configured = false;
link->dhcp6_route_messages++;
log_dhcp6_address(link, addr, &buffer);
- r = address_configure(addr, link, dhcp6_address_handler, true, &ret);
+ r = address_configure(addr, link, dhcp6_address_handler, &ret);
if (r < 0)
return log_link_error_errno(link, r, "Failed to set DHCPv6 address %s/%u: %m",
strnull(buffer), addr->prefixlen);
+ if (r > 0)
+ link->dhcp6_address_configured = false;
link->dhcp6_address_messages++;
return r;
}
+ if (link->network->dhcp6_use_fqdn) {
+ const char *dhcpname = NULL;
+ _cleanup_free_ char *hostname = NULL;
+ (void) sd_dhcp6_lease_get_fqdn(link->dhcp6_lease, &dhcpname);
+
+ if (dhcpname) {
+ r = shorten_overlong(dhcpname, &hostname);
+ if (r < 0)
+ log_link_warning_errno(link, r, "Unable to shorten overlong DHCP hostname '%s', ignoring: %m", dhcpname);
+ if (r == 1)
+ log_link_notice(link, "Overlong DHCP hostname received, shortened from '%s' to '%s'", dhcpname, hostname);
+ }
+ if (hostname) {
+ r = manager_set_hostname(link->manager, hostname);
+ if (r < 0)
+ log_link_error_errno(link, r, "Failed to set transient hostname to '%s': %m", hostname);
+ }
+ }
+
return 0;
}
Route *rt;
int r;
- link->dhcp6_address_configured = false;
- link->dhcp6_route_configured = false;
-
while ((a = set_steal_first(link->dhcp6_addresses))) {
r = set_ensure_put(&link->dhcp6_addresses_old, &address_hash_ops, a);
if (r < 0)
ll_addr->broadcast.s_addr = ll_addr->in_addr.in.s_addr | htobe32(0xfffffffflu >> ll_addr->prefixlen);
ll_addr->scope = RT_SCOPE_LINK;
- r = address_configure(ll_addr, link, ipv4ll_address_handler, false, NULL);
+ r = address_configure(ll_addr, link, ipv4ll_address_handler, NULL);
if (r < 0)
return r;
SD_BUS_PROPERTY("AdministrativeState", "s", property_get_administrative_state, offsetof(Link, state), SD_BUS_VTABLE_PROPERTY_EMITS_CHANGE),
SD_BUS_PROPERTY("BitRates", "(tt)", property_get_bit_rates, 0, 0),
- SD_BUS_METHOD("SetNTP", "as", NULL, bus_link_method_set_ntp_servers, SD_BUS_VTABLE_UNPRIVILEGED),
- SD_BUS_METHOD("SetDNS", "a(iay)", NULL, bus_link_method_set_dns_servers, SD_BUS_VTABLE_UNPRIVILEGED),
- SD_BUS_METHOD("SetDNSEx", "a(iayqs)", NULL, bus_link_method_set_dns_servers_ex, SD_BUS_VTABLE_UNPRIVILEGED),
- SD_BUS_METHOD("SetDomains", "a(sb)", NULL, bus_link_method_set_domains, SD_BUS_VTABLE_UNPRIVILEGED),
- SD_BUS_METHOD("SetDefaultRoute", "b", NULL, bus_link_method_set_default_route, SD_BUS_VTABLE_UNPRIVILEGED),
- SD_BUS_METHOD("SetLLMNR", "s", NULL, bus_link_method_set_llmnr, SD_BUS_VTABLE_UNPRIVILEGED),
- SD_BUS_METHOD("SetMulticastDNS", "s", NULL, bus_link_method_set_mdns, SD_BUS_VTABLE_UNPRIVILEGED),
- SD_BUS_METHOD("SetDNSOverTLS", "s", NULL, bus_link_method_set_dns_over_tls, SD_BUS_VTABLE_UNPRIVILEGED),
- SD_BUS_METHOD("SetDNSSEC", "s", NULL, bus_link_method_set_dnssec, SD_BUS_VTABLE_UNPRIVILEGED),
- SD_BUS_METHOD("SetDNSSECNegativeTrustAnchors", "as", NULL, bus_link_method_set_dnssec_negative_trust_anchors, SD_BUS_VTABLE_UNPRIVILEGED),
- SD_BUS_METHOD("RevertNTP", NULL, NULL, bus_link_method_revert_ntp, SD_BUS_VTABLE_UNPRIVILEGED),
- SD_BUS_METHOD("RevertDNS", NULL, NULL, bus_link_method_revert_dns, SD_BUS_VTABLE_UNPRIVILEGED),
- SD_BUS_METHOD("Renew", NULL, NULL, bus_link_method_renew, SD_BUS_VTABLE_UNPRIVILEGED),
- SD_BUS_METHOD("ForceRenew", NULL, NULL, bus_link_method_force_renew, SD_BUS_VTABLE_UNPRIVILEGED),
- SD_BUS_METHOD("Reconfigure", NULL, NULL, bus_link_method_reconfigure, SD_BUS_VTABLE_UNPRIVILEGED),
+ SD_BUS_METHOD_WITH_ARGS("SetNTP",
+ SD_BUS_ARGS("as", servers),
+ SD_BUS_NO_RESULT,
+ bus_link_method_set_ntp_servers,
+ SD_BUS_VTABLE_UNPRIVILEGED),
+ SD_BUS_METHOD_WITH_ARGS("SetDNS",
+ SD_BUS_ARGS("a(iay)", addresses),
+ SD_BUS_NO_RESULT,
+ bus_link_method_set_dns_servers,
+ SD_BUS_VTABLE_UNPRIVILEGED),
+ SD_BUS_METHOD_WITH_ARGS("SetDNSEx",
+ SD_BUS_ARGS("a(iayqs)", addresses),
+ SD_BUS_NO_RESULT,
+ bus_link_method_set_dns_servers_ex,
+ SD_BUS_VTABLE_UNPRIVILEGED),
+ SD_BUS_METHOD_WITH_ARGS("SetDomains",
+ SD_BUS_ARGS("a(sb)", domains),
+ SD_BUS_NO_RESULT,
+ bus_link_method_set_domains,
+ SD_BUS_VTABLE_UNPRIVILEGED),
+ SD_BUS_METHOD_WITH_ARGS("SetDefaultRoute",
+ SD_BUS_ARGS("b", enable),
+ SD_BUS_NO_RESULT,
+ bus_link_method_set_default_route,
+ SD_BUS_VTABLE_UNPRIVILEGED),
+ SD_BUS_METHOD_WITH_ARGS("SetLLMNR",
+ SD_BUS_ARGS("s", mode),
+ SD_BUS_NO_RESULT,
+ bus_link_method_set_llmnr,
+ SD_BUS_VTABLE_UNPRIVILEGED),
+ SD_BUS_METHOD_WITH_ARGS("SetMulticastDNS",
+ SD_BUS_ARGS("s", mode),
+ SD_BUS_NO_RESULT,
+ bus_link_method_set_mdns,
+ SD_BUS_VTABLE_UNPRIVILEGED),
+ SD_BUS_METHOD_WITH_ARGS("SetDNSOverTLS",
+ SD_BUS_ARGS("s", mode),
+ SD_BUS_NO_RESULT,
+ bus_link_method_set_dns_over_tls,
+ SD_BUS_VTABLE_UNPRIVILEGED),
+ SD_BUS_METHOD_WITH_ARGS("SetDNSSEC",
+ SD_BUS_ARGS("s", mode),
+ SD_BUS_NO_RESULT,
+ bus_link_method_set_dnssec,
+ SD_BUS_VTABLE_UNPRIVILEGED),
+ SD_BUS_METHOD_WITH_ARGS("SetDNSSECNegativeTrustAnchors",
+ SD_BUS_ARGS("as", names),
+ SD_BUS_NO_RESULT,
+ bus_link_method_set_dnssec_negative_trust_anchors,
+ SD_BUS_VTABLE_UNPRIVILEGED),
+ SD_BUS_METHOD_WITH_ARGS("RevertNTP",
+ SD_BUS_NO_ARGS,
+ SD_BUS_NO_RESULT,
+ bus_link_method_revert_ntp,
+ SD_BUS_VTABLE_UNPRIVILEGED),
+ SD_BUS_METHOD_WITH_ARGS("RevertDNS",
+ SD_BUS_NO_ARGS,
+ SD_BUS_NO_RESULT,
+ bus_link_method_revert_dns,
+ SD_BUS_VTABLE_UNPRIVILEGED),
+ SD_BUS_METHOD_WITH_ARGS("Renew",
+ SD_BUS_NO_ARGS,
+ SD_BUS_NO_RESULT,
+ bus_link_method_renew,
+ SD_BUS_VTABLE_UNPRIVILEGED),
+ SD_BUS_METHOD_WITH_ARGS("ForceRenew",
+ SD_BUS_NO_ARGS,
+ SD_BUS_NO_RESULT,
+ bus_link_method_force_renew,
+ SD_BUS_VTABLE_UNPRIVILEGED),
+ SD_BUS_METHOD_WITH_ARGS("Reconfigure",
+ SD_BUS_NO_ARGS,
+ SD_BUS_NO_RESULT,
+ bus_link_method_reconfigure,
+ SD_BUS_VTABLE_UNPRIVILEGED),
SD_BUS_VTABLE_END
};
#include "parse-util.h"
#include "random-util.h"
#include "socket-util.h"
+#include "string-table.h"
#include "string-util.h"
#include "strv.h"
#include "unaligned.h"
link->lldp_emit_event_source = sd_event_source_unref(link->lldp_emit_event_source);
}
-int config_parse_lldp_emit(
- 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) {
-
- LLDPEmit *emit = data;
- int r;
-
- assert(filename);
- assert(lvalue);
- assert(rvalue);
-
- if (isempty(rvalue))
- *emit = LLDP_EMIT_NO;
- else if (streq(rvalue, "nearest-bridge"))
- *emit = LLDP_EMIT_NEAREST_BRIDGE;
- else if (streq(rvalue, "non-tpmr-bridge"))
- *emit = LLDP_EMIT_NON_TPMR_BRIDGE;
- else if (streq(rvalue, "customer-bridge"))
- *emit = LLDP_EMIT_CUSTOMER_BRIDGE;
- else {
- r = parse_boolean(rvalue);
- if (r < 0) {
- log_syntax(unit, LOG_WARNING, filename, line, 0, "Failed to parse LLDP emission setting, ignoring: %s", rvalue);
- return 0;
- }
-
- *emit = r ? LLDP_EMIT_NEAREST_BRIDGE : LLDP_EMIT_NO;
- }
-
- return 0;
-}
-
int config_parse_lldp_mud(
const char *unit,
const char *filename,
return free_and_replace(n->lldp_mud, unescaped);
}
+
+static const char * const lldp_emit_table[_LLDP_EMIT_MAX] = {
+ [LLDP_EMIT_NO] = "no",
+ [LLDP_EMIT_NEAREST_BRIDGE] = "nearest-bridge",
+ [LLDP_EMIT_NON_TPMR_BRIDGE] = "non-tpmr-bridge",
+ [LLDP_EMIT_CUSTOMER_BRIDGE] = "customer-bridge",
+};
+
+DEFINE_PRIVATE_STRING_TABLE_LOOKUP_FROM_STRING_WITH_BOOLEAN(lldp_emit, LLDPEmit, LLDP_EMIT_NEAREST_BRIDGE);
+DEFINE_CONFIG_PARSE_ENUM_WITH_DEFAULT(config_parse_lldp_emit, lldp_emit, LLDPEmit, LLDP_EMIT_NO, "Failed to parse LLDP emission setting");
LLDP_EMIT_NON_TPMR_BRIDGE,
LLDP_EMIT_CUSTOMER_BRIDGE,
_LLDP_EMIT_MAX,
+ _LLDP_EMIT_INVALID = -EINVAL,
} LLDPEmit;
bool link_lldp_emit_enabled(Link *link);
SD_BUS_PROPERTY("CarrierState", "s", property_get_carrier_state, offsetof(Manager, carrier_state), SD_BUS_VTABLE_PROPERTY_EMITS_CHANGE),
SD_BUS_PROPERTY("AddressState", "s", property_get_address_state, offsetof(Manager, address_state), SD_BUS_VTABLE_PROPERTY_EMITS_CHANGE),
- SD_BUS_METHOD("ListLinks", NULL, "a(iso)", method_list_links, SD_BUS_VTABLE_UNPRIVILEGED),
- SD_BUS_METHOD("GetLinkByName", "s", "io", method_get_link_by_name, SD_BUS_VTABLE_UNPRIVILEGED),
- SD_BUS_METHOD("GetLinkByIndex", "i", "so", method_get_link_by_index, SD_BUS_VTABLE_UNPRIVILEGED),
- SD_BUS_METHOD("SetLinkNTP", "ias", NULL, bus_method_set_link_ntp_servers, SD_BUS_VTABLE_UNPRIVILEGED),
- SD_BUS_METHOD("SetLinkDNS", "ia(iay)", NULL, bus_method_set_link_dns_servers, SD_BUS_VTABLE_UNPRIVILEGED),
- SD_BUS_METHOD("SetLinkDNSEx", "ia(iayqs)", NULL, bus_method_set_link_dns_servers_ex, SD_BUS_VTABLE_UNPRIVILEGED),
- SD_BUS_METHOD("SetLinkDomains", "ia(sb)", NULL, bus_method_set_link_domains, SD_BUS_VTABLE_UNPRIVILEGED),
- SD_BUS_METHOD("SetLinkDefaultRoute", "ib", NULL, bus_method_set_link_default_route, SD_BUS_VTABLE_UNPRIVILEGED),
- SD_BUS_METHOD("SetLinkLLMNR", "is", NULL, bus_method_set_link_llmnr, SD_BUS_VTABLE_UNPRIVILEGED),
- SD_BUS_METHOD("SetLinkMulticastDNS", "is", NULL, bus_method_set_link_mdns, SD_BUS_VTABLE_UNPRIVILEGED),
- SD_BUS_METHOD("SetLinkDNSOverTLS", "is", NULL, bus_method_set_link_dns_over_tls, SD_BUS_VTABLE_UNPRIVILEGED),
- SD_BUS_METHOD("SetLinkDNSSEC", "is", NULL, bus_method_set_link_dnssec, SD_BUS_VTABLE_UNPRIVILEGED),
- SD_BUS_METHOD("SetLinkDNSSECNegativeTrustAnchors", "ias", NULL, bus_method_set_link_dnssec_negative_trust_anchors, SD_BUS_VTABLE_UNPRIVILEGED),
- SD_BUS_METHOD("RevertLinkNTP", "i", NULL, bus_method_revert_link_ntp, SD_BUS_VTABLE_UNPRIVILEGED),
- SD_BUS_METHOD("RevertLinkDNS", "i", NULL, bus_method_revert_link_dns, SD_BUS_VTABLE_UNPRIVILEGED),
- SD_BUS_METHOD("RenewLink", "i", NULL, bus_method_renew_link, SD_BUS_VTABLE_UNPRIVILEGED),
- SD_BUS_METHOD("ForceRenewLink", "i", NULL, bus_method_force_renew_link, SD_BUS_VTABLE_UNPRIVILEGED),
- SD_BUS_METHOD("ReconfigureLink", "i", NULL, bus_method_reconfigure_link, SD_BUS_VTABLE_UNPRIVILEGED),
- SD_BUS_METHOD("Reload", NULL, NULL, bus_method_reload, SD_BUS_VTABLE_UNPRIVILEGED),
+ SD_BUS_METHOD_WITH_ARGS("ListLinks",
+ SD_BUS_NO_ARGS,
+ SD_BUS_RESULT("a(iso)", links),
+ method_list_links,
+ SD_BUS_VTABLE_UNPRIVILEGED),
+ SD_BUS_METHOD_WITH_ARGS("GetLinkByName",
+ SD_BUS_ARGS("s", name),
+ SD_BUS_RESULT("i", ifindex, "o", path),
+ method_get_link_by_name,
+ SD_BUS_VTABLE_UNPRIVILEGED),
+ SD_BUS_METHOD_WITH_ARGS("GetLinkByIndex",
+ SD_BUS_ARGS("i", ifindex),
+ SD_BUS_RESULT("s", name, "o", path),
+ method_get_link_by_index,
+ SD_BUS_VTABLE_UNPRIVILEGED),
+ SD_BUS_METHOD_WITH_ARGS("SetLinkNTP",
+ SD_BUS_ARGS("i", ifindex, "as", servers),
+ SD_BUS_NO_RESULT,
+ bus_method_set_link_ntp_servers,
+ SD_BUS_VTABLE_UNPRIVILEGED),
+ SD_BUS_METHOD_WITH_ARGS("SetLinkDNS",
+ SD_BUS_ARGS("i", ifindex, "a(iay)", addresses),
+ SD_BUS_NO_RESULT,
+ bus_method_set_link_dns_servers,
+ SD_BUS_VTABLE_UNPRIVILEGED),
+ SD_BUS_METHOD_WITH_ARGS("SetLinkDNSEx",
+ SD_BUS_ARGS("i", ifindex, "a(iayqs)", addresses),
+ SD_BUS_NO_RESULT,
+ bus_method_set_link_dns_servers_ex,
+ SD_BUS_VTABLE_UNPRIVILEGED),
+ SD_BUS_METHOD_WITH_ARGS("SetLinkDomains",
+ SD_BUS_ARGS("i", ifindex, "a(sb)", domains),
+ SD_BUS_NO_RESULT,
+ bus_method_set_link_domains,
+ SD_BUS_VTABLE_UNPRIVILEGED),
+ SD_BUS_METHOD_WITH_ARGS("SetLinkDefaultRoute",
+ SD_BUS_ARGS("i", ifindex, "b", enable),
+ SD_BUS_NO_RESULT,
+ bus_method_set_link_default_route,
+ SD_BUS_VTABLE_UNPRIVILEGED),
+ SD_BUS_METHOD_WITH_ARGS("SetLinkLLMNR",
+ SD_BUS_ARGS("i", ifindex, "s", mode),
+ SD_BUS_NO_RESULT,
+ bus_method_set_link_llmnr,
+ SD_BUS_VTABLE_UNPRIVILEGED),
+ SD_BUS_METHOD_WITH_ARGS("SetLinkMulticastDNS",
+ SD_BUS_ARGS("i", ifindex, "s", mode),
+ SD_BUS_NO_RESULT,
+ bus_method_set_link_mdns,
+ SD_BUS_VTABLE_UNPRIVILEGED),
+ SD_BUS_METHOD_WITH_ARGS("SetLinkDNSOverTLS",
+ SD_BUS_ARGS("i", ifindex, "s", mode),
+ SD_BUS_NO_RESULT,
+ bus_method_set_link_dns_over_tls,
+ SD_BUS_VTABLE_UNPRIVILEGED),
+ SD_BUS_METHOD_WITH_ARGS("SetLinkDNSSEC",
+ SD_BUS_ARGS("i", ifindex, "s", mode),
+ SD_BUS_NO_RESULT,
+ bus_method_set_link_dnssec,
+ SD_BUS_VTABLE_UNPRIVILEGED),
+ SD_BUS_METHOD_WITH_ARGS("SetLinkDNSSECNegativeTrustAnchors",
+ SD_BUS_ARGS("i", ifindex, "as", names),
+ SD_BUS_NO_RESULT,
+ bus_method_set_link_dnssec_negative_trust_anchors,
+ SD_BUS_VTABLE_UNPRIVILEGED),
+ SD_BUS_METHOD_WITH_ARGS("RevertLinkNTP",
+ SD_BUS_ARGS("i", ifindex),
+ SD_BUS_NO_RESULT,
+ bus_method_revert_link_ntp,
+ SD_BUS_VTABLE_UNPRIVILEGED),
+ SD_BUS_METHOD_WITH_ARGS("RevertLinkDNS",
+ SD_BUS_ARGS("i", ifindex),
+ SD_BUS_NO_RESULT,
+ bus_method_revert_link_dns,
+ SD_BUS_VTABLE_UNPRIVILEGED),
+ SD_BUS_METHOD_WITH_ARGS("RenewLink",
+ SD_BUS_ARGS("i", ifindex),
+ SD_BUS_NO_RESULT,
+ bus_method_renew_link,
+ SD_BUS_VTABLE_UNPRIVILEGED),
+ SD_BUS_METHOD_WITH_ARGS("ForceRenewLink",
+ SD_BUS_ARGS("i", ifindex),
+ SD_BUS_NO_RESULT,
+ bus_method_force_renew_link,
+ SD_BUS_VTABLE_UNPRIVILEGED),
+ SD_BUS_METHOD_WITH_ARGS("ReconfigureLink",
+ SD_BUS_ARGS("i", ifindex),
+ SD_BUS_NO_RESULT,
+ bus_method_reconfigure_link,
+ SD_BUS_VTABLE_UNPRIVILEGED),
+ SD_BUS_METHOD_WITH_ARGS("Reload",
+ SD_BUS_NO_ARGS,
+ SD_BUS_NO_RESULT,
+ bus_method_reload,
+ SD_BUS_VTABLE_UNPRIVILEGED),
SD_BUS_VTABLE_END
};
log_debug("Setting transient hostname: '%s'", strna(hostname));
- if (free_and_strdup(&m->dynamic_hostname, hostname) < 0)
- return log_oom();
+ r = free_and_strdup_warn(&m->dynamic_hostname, hostname);
+ if (r < 0)
+ return r;
if (!m->bus || sd_bus_is_ready(m->bus) <= 0) {
log_debug("Not connected to system bus, setting hostname later.");
assert(tz);
log_debug("Setting system timezone: '%s'", tz);
- if (free_and_strdup(&m->dynamic_timezone, tz) < 0)
- return log_oom();
+ r = free_and_strdup_warn(&m->dynamic_timezone, tz);
+ if (r < 0)
+ return r;
if (!m->bus || sd_bus_is_ready(m->bus) <= 0) {
log_debug("Not connected to system bus, setting timezone later.");
r = route_configure(route, link, ndisc_route_handler, &ret);
if (r < 0)
return log_link_error_errno(link, r, "Failed to set NDisc route: %m");
+ if (r > 0)
+ link->ndisc_routes_configured = false;
link->ndisc_routes_messages++;
assert(link);
assert(rt);
- r = address_configure(address, link, ndisc_address_handler, true, &ret);
+ r = address_configure(address, link, ndisc_address_handler, &ret);
if (r < 0)
return log_link_error_errno(link, r, "Failed to set NDisc SLAAC address: %m");
+ if (r > 0)
+ link->ndisc_addresses_configured = false;
link->ndisc_addresses_messages++;
return 0;
}
- link->ndisc_addresses_configured = false;
- link->ndisc_routes_configured = false;
-
SET_FOREACH(na, link->ndisc_addresses)
if (IN6_ARE_ADDR_EQUAL(&na->router, &router.in6))
na->marked = true;
}
static int neighbor_add(Link *link, const Neighbor *in, Neighbor **ret) {
+ bool is_new = false;
Neighbor *neighbor;
int r;
r = neighbor_add_internal(link, &link->neighbors, in, &neighbor);
if (r < 0)
return r;
+ is_new = true;
} else if (r == 0) {
/* Neighbor is foreign, claim it as recognized */
r = set_ensure_put(&link->neighbors, &neighbor_hash_ops, neighbor);
set_remove(link->neighbors_foreign, neighbor);
} else if (r == 1) {
/* Neighbor already exists */
+ ;
} else
return r;
if (ret)
*ret = neighbor;
- return 0;
+ return is_new;
}
static int neighbor_add_foreign(Link *link, const Neighbor *in, Neighbor **ret) {
if (r < 0)
return log_link_error_errno(link, r, "Could not add neighbor: %m");
- return 0;
+ return r;
}
int link_set_neighbors(Link *link) {
DHCPv4.FallbackLeaseLifetimeSec, config_parse_dhcp_fallback_lease_lifetime, 0, 0
DHCPv6.UseAddress, config_parse_bool, 0, offsetof(Network, dhcp6_use_address)
DHCPv6.UseDNS, config_parse_dhcp_use_dns, 0, 0
+DHCPv6.UseFQDN, config_parse_bool, 0, offsetof(Network, dhcp6_use_fqdn)
DHCPv6.UseNTP, config_parse_dhcp_use_ntp, 0, 0
DHCPv6.RapidCommit, config_parse_bool, 0, offsetof(Network, dhcp6_rapid_commit)
DHCPv6.MUDURL, config_parse_dhcp6_mud_url, 0, 0
.dhcp6_use_address = true,
.dhcp6_use_dns = true,
+ .dhcp6_use_fqdn = true,
.dhcp6_use_ntp = true,
.dhcp6_rapid_commit = true,
.dhcp6_route_metric = DHCP_ROUTE_METRIC,
bool dhcp6_use_address;
bool dhcp6_use_dns;
bool dhcp6_use_dns_set;
+ bool dhcp6_use_fqdn;
bool dhcp6_use_ntp;
bool dhcp6_use_ntp_set;
bool dhcp6_rapid_commit;
}
static int nexthop_add(Link *link, NextHop *in, NextHop **ret) {
+ bool is_new = false;
NextHop *nexthop;
int r;
r = nexthop_add_internal(link, &link->nexthops, in, &nexthop);
if (r < 0)
return r;
+ is_new = true;
} else if (r == 0) {
/* Take over a foreign nexthop */
r = set_ensure_put(&link->nexthops, &nexthop_hash_ops, nexthop);
if (ret)
*ret = nexthop;
-
- return 0;
+ return is_new;
}
static int nexthop_handler(sd_netlink *rtnl, sd_netlink_message *m, Link *link) {
if (r < 0)
return log_link_error_errno(link, r, "Could not add nexthop: %m");
- return 1;
+ return r;
}
int link_set_nexthop(Link *link) {
/* For backward compatibility */
val = radv_prefix_delegation_from_string(rvalue);
if (val < 0) {
- log_syntax(unit, LOG_WARNING, filename, line, 0,
+ log_syntax(unit, LOG_WARNING, filename, line, val,
"Invalid %s= setting, ignoring assignment: %s", lvalue, rvalue);
return 0;
}
[RT_SCOPE_NOWHERE] = "nowhere",
};
-DEFINE_PRIVATE_STRING_TABLE_LOOKUP(route_scope, int);
-
-#define ROUTE_SCOPE_STR_MAX CONST_MAX(DECIMAL_STR_MAX(int), STRLEN("nowhere") + 1)
-static const char *format_route_scope(int scope, char *buf, size_t size) {
- const char *s;
- char *p = buf;
-
- s = route_scope_to_string(scope);
- if (s)
- strpcpy(&p, size, s);
- else
- strpcpyf(&p, size, "%d", scope);
-
- return buf;
-}
+DEFINE_PRIVATE_STRING_TABLE_LOOKUP_FROM_STRING(route_scope, int);
+DEFINE_PRIVATE_STRING_TABLE_LOOKUP_TO_STRING_FALLBACK(route_scope, int, UINT8_MAX);
static const char * const route_table_table[] = {
[RT_TABLE_DEFAULT] = "default",
[RTPROT_STATIC] = "static",
};
-DEFINE_PRIVATE_STRING_TABLE_LOOKUP_FROM_STRING(route_protocol, int);
+DEFINE_PRIVATE_STRING_TABLE_LOOKUP_FROM_STRING_FALLBACK(route_protocol, int, UINT8_MAX);
static const char * const route_protocol_full_table[] = {
[RTPROT_REDIRECT] = "redirect",
[RTPROT_EIGRP] = "eigrp",
};
-DEFINE_PRIVATE_STRING_TABLE_LOOKUP_TO_STRING(route_protocol_full, int);
-
-#define ROUTE_PROTOCOL_STR_MAX CONST_MAX(DECIMAL_STR_MAX(int), STRLEN("redirect") + 1)
-static const char *format_route_protocol(int protocol, char *buf, size_t size) {
- const char *s;
- char *p = buf;
-
- s = route_protocol_full_to_string(protocol);
- if (s)
- strpcpy(&p, size, s);
- else
- strpcpyf(&p, size, "%d", protocol);
-
- return buf;
-}
+DEFINE_PRIVATE_STRING_TABLE_LOOKUP_TO_STRING_FALLBACK(route_protocol_full, int, UINT8_MAX);
static unsigned routes_max(void) {
static thread_local unsigned cached = 0;
static int route_add(Manager *manager, Link *link, const Route *in, const MultipathRoute *m, Route **ret) {
_cleanup_(route_freep) Route *tmp = NULL;
+ bool is_new = false;
Route *route;
int r;
r = route_add_internal(manager, link, link ? &link->routes : &manager->routes, in, &route);
if (r < 0)
return r;
+ is_new = true;
} else if (r == 0) {
/* Take over a foreign route */
if (link) {
if (ret)
*ret = route;
-
- return 0;
+ return is_new;
}
static bool route_type_is_reject(const Route *route) {
/* link may be NULL. */
if (DEBUG_LOGGING) {
- _cleanup_free_ char *dst = NULL, *dst_prefixlen = NULL, *src = NULL, *gw = NULL, *prefsrc = NULL, *table = NULL;
- char scope[ROUTE_SCOPE_STR_MAX], protocol[ROUTE_PROTOCOL_STR_MAX];
+ _cleanup_free_ char *dst = NULL, *dst_prefixlen = NULL, *src = NULL, *gw = NULL,
+ *prefsrc = NULL, *table = NULL, *scope = NULL, *proto = NULL;
if (!in_addr_is_null(route->family, &route->dst)) {
(void) in_addr_to_string(route->family, &route->dst, &dst);
(void) in_addr_to_string(route->gw_family, &route->gw, &gw);
if (!in_addr_is_null(route->family, &route->prefsrc))
(void) in_addr_to_string(route->family, &route->prefsrc, &prefsrc);
+ (void) route_scope_to_string_alloc(route->scope, &scope);
(void) manager_get_route_table_to_string(m, route->table, &table);
+ (void) route_protocol_full_to_string_alloc(route->protocol, &proto);
log_link_debug(link,
"%s route: dst: %s%s, src: %s, gw: %s, prefsrc: %s, scope: %s, table: %s, proto: %s, type: %s",
str, strna(dst), strempty(dst_prefixlen), strna(src), strna(gw), strna(prefsrc),
- format_route_scope(route->scope, scope, sizeof(scope)),
- strna(table),
- format_route_protocol(route->protocol, protocol, sizeof(protocol)),
+ strna(scope), strna(table), strna(proto),
strna(route_type_to_string(route->type)));
}
}
routes = foreign ? manager->routes_foreign : manager->routes;
SET_FOREACH(route, routes) {
- /* Do not touch routes managed by the kernel */
+ /* Do not touch routes managed by the kernel. */
if (route->protocol == RTPROT_KERNEL)
continue;
- /* The route will be configured later, or already configured by a link */
+ /* The route will be configured later, or already configured by a link. */
if (links_have_route(manager, route, except))
continue;
- /* The existing links do not have the route. Let's drop this now. It may by
+ /* The existing links do not have the route. Let's drop this now. It may be
* re-configured later. */
k = route_remove(route, manager, NULL, NULL);
if (k < 0 && r >= 0)
static int route_add_and_setup_timer(Link *link, const Route *route, const MultipathRoute *m, Route **ret) {
_cleanup_(sd_event_source_unrefp) sd_event_source *expire = NULL;
Route *nr;
- int r;
+ int r, k;
assert(link);
assert(route);
if (route_type_is_reject(route))
- r = route_add(link->manager, NULL, route, NULL, &nr);
+ k = route_add(link->manager, NULL, route, NULL, &nr);
else if (!m || m->ifindex == 0 || m->ifindex == link->ifindex)
- r = route_add(NULL, link, route, m, &nr);
+ k = route_add(NULL, link, route, m, &nr);
else {
Link *link_gw;
if (r < 0)
return log_link_error_errno(link, r, "Failed to get link with ifindex %d: %m", m->ifindex);
- r = route_add(NULL, link_gw, route, m, &nr);
+ k = route_add(NULL, link_gw, route, m, &nr);
}
- if (r < 0)
- return log_link_error_errno(link, r, "Could not add route: %m");
+ if (k < 0)
+ return log_link_error_errno(link, k, "Could not add route: %m");
/* TODO: drop expiration handling once it can be pushed into the kernel */
if (nr->lifetime != USEC_INFINITY && !kernel_route_expiration_supported()) {
if (ret)
*ret = nr;
- return 0;
+ return k;
}
static int append_nexthop_one(const Route *route, const MultipathRoute *m, struct rtattr **rta, size_t offset) {
Route **ret) {
_cleanup_(sd_netlink_message_unrefp) sd_netlink_message *req = NULL;
- int r;
+ int r, k = 0;
+ Route *nr;
assert(link);
assert(link->manager);
return log_link_error_errno(link, r, "Could not append RTA_MULTIPATH attribute: %m");
if (ordered_set_isempty(route->multipath_routes)) {
- Route *nr;
-
- r = route_add_and_setup_timer(link, route, NULL, &nr);
- if (r < 0)
- return r;
-
- if (ret)
- *ret = nr;
+ k = route_add_and_setup_timer(link, route, NULL, &nr);
+ if (k < 0)
+ return k;
} else {
MultipathRoute *m;
r = route_add_and_setup_timer(link, route, m, NULL);
if (r < 0)
return r;
+ if (r > 0)
+ k = 1;
}
}
link_ref(link);
- return 0;
+ if (ret)
+ *ret = nr;
+
+ return k;
}
static int route_handler(sd_netlink *rtnl, sd_netlink_message *m, Link *link) {
r = route_scope_from_string(rvalue);
if (r < 0) {
- log_syntax(unit, LOG_WARNING, filename, line, 0, "Unknown route scope: %s", rvalue);
+ log_syntax(unit, LOG_WARNING, filename, line, r, "Unknown route scope: %s", rvalue);
return 0;
}
}
r = route_protocol_from_string(rvalue);
- if (r >= 0)
- n->protocol = r;
- else {
- r = safe_atou8(rvalue , &n->protocol);
- if (r < 0) {
- log_syntax(unit, LOG_WARNING, filename, line, r,
- "Could not parse route protocol \"%s\", ignoring assignment: %m", rvalue);
- return 0;
- }
+ if (r < 0) {
+ log_syntax(unit, LOG_WARNING, filename, line, r,
+ "Failed to parse route protocol \"%s\", ignoring assignment: %m", rvalue);
+ return 0;
}
+ n->protocol = r;
+
TAKE_PTR(n);
return 0;
}
t = route_type_from_string(rvalue);
if (t < 0) {
- log_syntax(unit, LOG_WARNING, filename, line, 0,
+ log_syntax(unit, LOG_WARNING, filename, line, r,
"Could not parse route type \"%s\", ignoring assignment: %m", rvalue);
return 0;
}
static int routing_policy_rule_add(Manager *m, const RoutingPolicyRule *in, int family, RoutingPolicyRule **ret) {
_cleanup_(routing_policy_rule_freep) RoutingPolicyRule *rule = NULL;
RoutingPolicyRule *existing;
+ bool is_new = false;
int r;
assert(m);
rule->manager = m;
existing = TAKE_PTR(rule);
+ is_new = true;
} else if (r == 0) {
/* Take over a foreign rule. */
r = set_ensure_put(&m->rules, &routing_policy_rule_hash_ops, existing);
if (ret)
*ret = existing;
-
- return 0;
+ return is_new;
}
static int routing_policy_rule_consume_foreign(Manager *m, RoutingPolicyRule *rule) {
if (r < 0)
return log_link_error_errno(link, r, "Could not add rule: %m");
- return 1;
+ return r;
}
static int routing_policy_rule_configure(const RoutingPolicyRule *rule, Link *link) {
a = routing_policy_rule_address_family_from_string(rvalue);
if (a < 0) {
- log_syntax(unit, LOG_WARNING, filename, line, 0,
+ log_syntax(unit, LOG_WARNING, filename, line, a,
"Invalid address family '%s', ignoring.", rvalue);
return 0;
}
t = fr_act_type_from_string(rvalue);
if (t < 0) {
- log_syntax(unit, LOG_WARNING, filename, line, 0,
+ log_syntax(unit, LOG_WARNING, filename, line, t,
"Could not parse FIB rule type \"%s\", ignoring assignment: %m", rvalue);
return 0;
}
[ADDRESS_FAMILY_IPV6] = "ipv6",
};
+static const char* const dhcp_deprecated_address_family_table[_ADDRESS_FAMILY_MAX] = {
+ [ADDRESS_FAMILY_NO] = "none",
+ [ADDRESS_FAMILY_YES] = "both",
+ [ADDRESS_FAMILY_IPV4] = "v4",
+ [ADDRESS_FAMILY_IPV6] = "v6",
+};
+
static const char* const dhcp_lease_server_type_table[_SD_DHCP_LEASE_SERVER_TYPE_MAX] = {
[SD_DHCP_LEASE_DNS] = "DNS servers",
[SD_DHCP_LEASE_NTP] = "NTP servers",
DEFINE_STRING_TABLE_LOOKUP(duplicate_address_detection_address_family, AddressFamily);
DEFINE_CONFIG_PARSE_ENUM(config_parse_link_local_address_family, link_local_address_family,
AddressFamily, "Failed to parse option");
+DEFINE_STRING_TABLE_LOOKUP_FROM_STRING(dhcp_deprecated_address_family, AddressFamily);
DEFINE_STRING_TABLE_LOOKUP(dhcp_lease_server_type, sd_dhcp_lease_server_type);
int config_parse_address_family_with_kernel(
const char *duplicate_address_detection_address_family_to_string(AddressFamily b) _const_;
AddressFamily duplicate_address_detection_address_family_from_string(const char *s) _pure_;
+AddressFamily dhcp_deprecated_address_family_from_string(const char *s) _pure_;
+
const char *dhcp_lease_server_type_to_string(sd_dhcp_lease_server_type t) _const_;
sd_dhcp_lease_server_type dhcp_lease_server_type_from_string(const char *s) _pure_;
return 0;
}
- if (free_and_strdup(s, empty_to_null(rvalue)) < 0)
- return log_oom();
-
- return 0;
+ return free_and_strdup_warn(s, empty_to_null(rvalue));
}
int config_parse_oom_score_adjust(
#include "nulstr-util.h"
#include "os-util.h"
#include "pager.h"
+#include "parse-argument.h"
#include "parse-util.h"
#include "path-util.h"
#include "pretty-print.h"
return version();
case 'D':
- r = parse_path_argument_and_warn(optarg, false, &arg_directory);
+ r = parse_path_argument(optarg, false, &arg_directory);
if (r < 0)
return r;
break;
case ARG_TEMPLATE:
- r = parse_path_argument_and_warn(optarg, false, &arg_template);
+ r = parse_path_argument(optarg, false, &arg_template);
if (r < 0)
return r;
break;
case 'i':
- r = parse_path_argument_and_warn(optarg, false, &arg_image);
+ r = parse_path_argument(optarg, false, &arg_image);
if (r < 0)
return r;
break;
case ARG_OCI_BUNDLE:
- r = parse_path_argument_and_warn(optarg, false, &arg_oci_bundle);
+ r = parse_path_argument(optarg, false, &arg_oci_bundle);
if (r < 0)
return r;
break;
case ARG_NETWORK_NAMESPACE_PATH:
- r = parse_path_argument_and_warn(optarg, false, &arg_network_namespace_path);
+ r = parse_path_argument(optarg, false, &arg_network_namespace_path);
if (r < 0)
return r;
}
case ARG_VERITY_DATA:
- r = parse_path_argument_and_warn(optarg, false, &arg_verity_settings.data_path);
+ r = parse_path_argument(optarg, false, &arg_verity_settings.data_path);
if (r < 0)
return r;
break;
#include <sys/types.h>
#include <unistd.h>
+#include "env-util.h"
#include "errno-util.h"
#include "in-addr-util.h"
#include "macro.h"
{}
};
+static uint64_t query_flags(void) {
+ uint64_t f = 0;
+ int r;
+
+ /* Allow callers to turn off validation, when we resolve via nss-resolve */
+
+ r = getenv_bool_secure("SYSTEMD_NSS_RESOLVE_VALIDATE");
+ if (r < 0 && r != -ENXIO)
+ log_debug_errno(r, "Failed to parse $SYSTEMD_NSS_RESOLVE_VALIDATE value, ignoring.");
+ else if (r == 0)
+ f |= SD_RESOLVED_NO_VALIDATE;
+
+ return f;
+}
+
enum nss_status _nss_resolve_gethostbyname4_r(
const char *name,
struct gaih_addrtuple **pat,
goto fail;
r = json_build(&cparams, JSON_BUILD_OBJECT(
- JSON_BUILD_PAIR("name", JSON_BUILD_STRING(name))));
+ JSON_BUILD_PAIR("name", JSON_BUILD_STRING(name)),
+ JSON_BUILD_PAIR("flags", JSON_BUILD_UNSIGNED(query_flags()))));
if (r < 0)
goto fail;
goto fail;
r = json_build(&cparams, JSON_BUILD_OBJECT(JSON_BUILD_PAIR("name", JSON_BUILD_STRING(name)),
- JSON_BUILD_PAIR("family", JSON_BUILD_INTEGER(af))));
+ JSON_BUILD_PAIR("family", JSON_BUILD_INTEGER(af)),
+ JSON_BUILD_PAIR("flags", JSON_BUILD_UNSIGNED(query_flags()))));
if (r < 0)
goto fail;
goto fail;
r = json_build(&cparams, JSON_BUILD_OBJECT(JSON_BUILD_PAIR("address", JSON_BUILD_BYTE_ARRAY(addr, len)),
- JSON_BUILD_PAIR("family", JSON_BUILD_INTEGER(af))));
+ JSON_BUILD_PAIR("family", JSON_BUILD_INTEGER(af)),
+ JSON_BUILD_PAIR("flags", JSON_BUILD_UNSIGNED(query_flags()))));
if (r < 0)
goto fail;
m->monitored_swap_cgroup_contexts : m->monitored_mem_pressure_cgroup_contexts;
if (reply.mode == MANAGED_OOM_AUTO) {
- (void) oomd_cgroup_context_free(hashmap_remove(monitor_hm, reply.path));
+ (void) oomd_cgroup_context_free(hashmap_remove(monitor_hm, empty_to_root(reply.path)));
continue;
}
}
}
- ret = oomd_insert_cgroup_context(NULL, monitor_hm, reply.path);
+ ret = oomd_insert_cgroup_context(NULL, monitor_hm, empty_to_root(reply.path));
if (ret == -ENOMEM) {
r = ret;
goto finish;
/* Always update the limit in case it was changed. For non-memory pressure detection the value is
* ignored so always updating it here is not a problem. */
- ctx = hashmap_get(monitor_hm, reply.path);
+ ctx = hashmap_get(monitor_hm, empty_to_root(reply.path));
if (ctx)
ctx->mem_pressure_limit = limit;
}
#include <sys/xattr.h>
#include <unistd.h>
-#include "cgroup-util.h"
#include "fd-util.h"
#include "format-util.h"
#include "oomd-util.h"
return -ENOMEM;
HASHMAP_FOREACH(item, h) {
- if (item->path && prefix && !path_startswith(item->path, prefix))
+ /* Skip over cgroups that are not valid candidates or are explicitly marked for omission */
+ if ((item->path && prefix && !path_startswith(item->path, prefix)) || item->preference == MANAGED_OOM_PREFERENCE_OMIT)
continue;
sorted[k++] = item;
if (r < 0)
return r;
- r = increment_oomd_xattr(path, "user.systemd_oomd_kill", set_size(pids_killed));
+ r = increment_oomd_xattr(path, "user.oomd_kill", set_size(pids_killed));
if (r < 0)
- log_debug_errno(r, "Failed to set user.systemd_oomd_kill on kill: %m");
+ log_debug_errno(r, "Failed to set user.oomd_kill on kill: %m");
return set_size(pids_killed) != 0;
}
assert(h);
- r = oomd_sort_cgroup_contexts(h, compare_pgscan, prefix, &sorted);
+ r = oomd_sort_cgroup_contexts(h, compare_pgscan_and_memory_usage, prefix, &sorted);
if (r < 0)
return r;
for (int i = 0; i < r; i++) {
- if (sorted[i]->pgscan == 0)
- break;
+ /* Skip cgroups with no reclaim and memory usage; it won't alleviate pressure. */
+ /* Don't break since there might be "avoid" cgroups at the end. */
+ if (sorted[i]->pgscan == 0 && sorted[i]->current_memory_usage == 0)
+ continue;
r = oomd_cgroup_kill(sorted[i]->path, true, dry_run);
if (r > 0 || r == -ENOMEM)
/* Try to kill cgroups with non-zero swap usage until we either succeed in
* killing or we get to a cgroup with no swap usage. */
for (int i = 0; i < r; i++) {
+ /* Skip over cgroups with no resource usage. Don't break since there might be "avoid"
+ * cgroups at the end. */
if (sorted[i]->swap_usage == 0)
- break;
+ continue;
r = oomd_cgroup_kill(sorted[i]->path, true, dry_run);
if (r > 0 || r == -ENOMEM)
_cleanup_(oomd_cgroup_context_freep) OomdCGroupContext *ctx = NULL;
_cleanup_free_ char *p = NULL, *val = NULL;
bool is_root;
+ uid_t uid;
int r;
assert(path);
return -ENOMEM;
is_root = empty_or_root(path);
+ ctx->preference = MANAGED_OOM_PREFERENCE_NONE;
r = cg_get_path(SYSTEMD_CGROUP_CONTROLLER, path, "memory.pressure", &p);
if (r < 0)
if (r < 0)
return log_debug_errno(r, "Error parsing memory pressure from %s: %m", p);
+ r = cg_get_owner(SYSTEMD_CGROUP_CONTROLLER, path, &uid);
+ if (r < 0)
+ log_debug_errno(r, "Failed to get owner/group from %s: %m", path);
+ else if (uid == 0) {
+ /* Ignore most errors when reading the xattr since it is usually unset and cgroup xattrs are only used
+ * as an optional feature of systemd-oomd (and the system might not even support them). */
+ r = cg_get_xattr_bool(SYSTEMD_CGROUP_CONTROLLER, path, "user.oomd_avoid");
+ if (r == -ENOMEM)
+ return r;
+ ctx->preference = r == 1 ? MANAGED_OOM_PREFERENCE_AVOID : ctx->preference;
+
+ r = cg_get_xattr_bool(SYSTEMD_CGROUP_CONTROLLER, path, "user.oomd_omit");
+ if (r == -ENOMEM)
+ return r;
+ ctx->preference = r == 1 ? MANAGED_OOM_PREFERENCE_OMIT : ctx->preference;
+ }
+
if (is_root) {
r = procfs_memory_get_used(&ctx->current_memory_usage);
if (r < 0)
#include <stdbool.h>
+#include "cgroup-util.h"
#include "hashmap.h"
#include "psi-util.h"
uint64_t last_pgscan;
uint64_t pgscan;
+ ManagedOOMPreference preference;
+
/* These are only used by oomd_pressure_above for acting on high memory pressure. */
loadavg_t mem_pressure_limit;
usec_t mem_pressure_duration_usec;
/* Returns true if the amount of swap free is below the percentage of swap specified by `threshold_percent`. */
bool oomd_swap_free_below(const OomdSystemContext *ctx, uint64_t threshold_percent);
-static inline int compare_pgscan(OomdCGroupContext * const *c1, OomdCGroupContext * const *c2) {
+/* The compare functions will sort from largest to smallest, putting all the contexts with "avoid" at the end
+ * (after the smallest values). */
+static inline int compare_pgscan_and_memory_usage(OomdCGroupContext * const *c1, OomdCGroupContext * const *c2) {
+ int r;
+
assert(c1);
assert(c2);
- return CMP((*c2)->pgscan, (*c1)->pgscan);
+ r = CMP((*c1)->preference, (*c2)->preference);
+ if (r != 0)
+ return r;
+
+ r = CMP((*c2)->pgscan, (*c1)->pgscan);
+ if (r != 0)
+ return r;
+
+ return CMP((*c2)->current_memory_usage, (*c1)->current_memory_usage);
}
static inline int compare_swap_usage(OomdCGroupContext * const *c1, OomdCGroupContext * const *c2) {
+ int r;
+
assert(c1);
assert(c2);
+ r = CMP((*c1)->preference, (*c2)->preference);
+ if (r != 0)
+ return r;
+
return CMP((*c2)->swap_usage, (*c1)->swap_usage);
}
sleep(2);
assert_se(cg_is_empty(SYSTEMD_CGROUP_CONTROLLER, cgroup) == true);
- assert_se(cg_get_xattr_malloc(SYSTEMD_CGROUP_CONTROLLER, cgroup, "user.systemd_oomd_kill", &v) >= 0);
+ assert_se(cg_get_xattr_malloc(SYSTEMD_CGROUP_CONTROLLER, cgroup, "user.oomd_kill", &v) >= 0);
assert_se(memcmp(v, i == 0 ? "2" : "4", 2) == 0);
}
}
_cleanup_(oomd_cgroup_context_freep) OomdCGroupContext *ctx = NULL;
_cleanup_free_ char *cgroup = NULL;
OomdCGroupContext *c1, *c2;
+ bool test_xattrs;
+ int r;
if (geteuid() != 0)
return (void) log_tests_skipped("not root");
assert_se(cg_pid_get_path(NULL, 0, &cgroup) >= 0);
+ /* If we don't have permissions to set xattrs we're likely in a userns or missing capabilities
+ * so skip the xattr portions of the test. */
+ r = cg_set_xattr(SYSTEMD_CGROUP_CONTROLLER, cgroup, "user.oomd_test", "1", 1, 0);
+ test_xattrs = !ERRNO_IS_PRIVILEGE(r) && !ERRNO_IS_NOT_SUPPORTED(r);
+
+ if (test_xattrs) {
+ assert_se(cg_set_xattr(SYSTEMD_CGROUP_CONTROLLER, cgroup, "user.oomd_omit", "1", 1, 0) >= 0);
+ assert_se(cg_set_xattr(SYSTEMD_CGROUP_CONTROLLER, cgroup, "user.oomd_avoid", "1", 1, 0) >= 0);
+ }
+
assert_se(oomd_cgroup_context_acquire(cgroup, &ctx) == 0);
assert_se(streq(ctx->path, cgroup));
assert_se(ctx->swap_usage == 0);
assert_se(ctx->last_pgscan == 0);
assert_se(ctx->pgscan == 0);
+ /* omit takes precedence over avoid when both are set to true */
+ if (test_xattrs)
+ assert_se(ctx->preference == MANAGED_OOM_PREFERENCE_OMIT);
+ else
+ assert_se(ctx->preference == MANAGED_OOM_PREFERENCE_NONE);
+ ctx = oomd_cgroup_context_free(ctx);
+
+ /* also check when only avoid is set to true */
+ if (test_xattrs) {
+ assert_se(cg_set_xattr(SYSTEMD_CGROUP_CONTROLLER, cgroup, "user.oomd_omit", "0", 1, 0) >= 0);
+ assert_se(cg_set_xattr(SYSTEMD_CGROUP_CONTROLLER, cgroup, "user.oomd_avoid", "1", 1, 0) >= 0);
+ }
+ assert_se(oomd_cgroup_context_acquire(cgroup, &ctx) == 0);
+ if (test_xattrs)
+ assert_se(ctx->preference == MANAGED_OOM_PREFERENCE_AVOID);
ctx = oomd_cgroup_context_free(ctx);
/* Test the root cgroup */
assert_se(oomd_cgroup_context_acquire("", &ctx) == 0);
assert_se(streq(ctx->path, "/"));
assert_se(ctx->current_memory_usage > 0);
+ assert_se(ctx->preference == MANAGED_OOM_PREFERENCE_NONE);
/* Test hashmap inserts */
assert_se(h1 = hashmap_new(&oomd_cgroup_ctx_hash_ops));
assert_se(c2->last_pgscan == 5555);
assert_se(c2->mem_pressure_limit == 6789);
assert_se(c2->last_hit_mem_pressure_limit == 42);
+
+ /* Assert that avoid/omit are not set if the cgroup is not owned by root */
+ if (test_xattrs) {
+ ctx = oomd_cgroup_context_free(ctx);
+ assert_se(cg_set_access(SYSTEMD_CGROUP_CONTROLLER, cgroup, 65534, 0) >= 0);
+ assert_se(oomd_cgroup_context_acquire(cgroup, &ctx) == 0);
+ assert_se(ctx->preference == MANAGED_OOM_PREFERENCE_NONE);
+ }
}
static void test_oomd_system_context_acquire(void) {
char **paths = STRV_MAKE("/herp.slice",
"/herp.slice/derp.scope",
"/herp.slice/derp.scope/sheep.service",
- "/zupa.slice");
+ "/zupa.slice",
+ "/omitted.slice",
+ "/avoid.slice");
- OomdCGroupContext ctx[4] = {
+ OomdCGroupContext ctx[6] = {
{ .path = paths[0],
.swap_usage = 20,
- .pgscan = 60 },
+ .pgscan = 60,
+ .current_memory_usage = 10 },
{ .path = paths[1],
.swap_usage = 60,
- .pgscan = 40 },
+ .pgscan = 40,
+ .current_memory_usage = 20 },
{ .path = paths[2],
.swap_usage = 40,
- .pgscan = 20 },
+ .pgscan = 40,
+ .current_memory_usage = 40 },
{ .path = paths[3],
.swap_usage = 10,
- .pgscan = 80 },
+ .pgscan = 80,
+ .current_memory_usage = 10 },
+ { .path = paths[4],
+ .swap_usage = 90,
+ .pgscan = 100,
+ .preference = MANAGED_OOM_PREFERENCE_OMIT },
+ { .path = paths[5],
+ .swap_usage = 99,
+ .pgscan = 200,
+ .preference = MANAGED_OOM_PREFERENCE_AVOID },
};
assert_se(h = hashmap_new(&string_hash_ops));
assert_se(hashmap_put(h, "/herp.slice/derp.scope", &ctx[1]) >= 0);
assert_se(hashmap_put(h, "/herp.slice/derp.scope/sheep.service", &ctx[2]) >= 0);
assert_se(hashmap_put(h, "/zupa.slice", &ctx[3]) >= 0);
+ assert_se(hashmap_put(h, "/omitted.slice", &ctx[4]) >= 0);
+ assert_se(hashmap_put(h, "/avoid.slice", &ctx[5]) >= 0);
- assert_se(oomd_sort_cgroup_contexts(h, compare_swap_usage, NULL, &sorted_cgroups) == 4);
+ assert_se(oomd_sort_cgroup_contexts(h, compare_swap_usage, NULL, &sorted_cgroups) == 5);
assert_se(sorted_cgroups[0] == &ctx[1]);
assert_se(sorted_cgroups[1] == &ctx[2]);
assert_se(sorted_cgroups[2] == &ctx[0]);
assert_se(sorted_cgroups[3] == &ctx[3]);
+ assert_se(sorted_cgroups[4] == &ctx[5]);
sorted_cgroups = mfree(sorted_cgroups);
- assert_se(oomd_sort_cgroup_contexts(h, compare_pgscan, NULL, &sorted_cgroups) == 4);
+ assert_se(oomd_sort_cgroup_contexts(h, compare_pgscan_and_memory_usage, NULL, &sorted_cgroups) == 5);
assert_se(sorted_cgroups[0] == &ctx[3]);
assert_se(sorted_cgroups[1] == &ctx[0]);
- assert_se(sorted_cgroups[2] == &ctx[1]);
- assert_se(sorted_cgroups[3] == &ctx[2]);
+ assert_se(sorted_cgroups[2] == &ctx[2]);
+ assert_se(sorted_cgroups[3] == &ctx[1]);
+ assert_se(sorted_cgroups[4] == &ctx[5]);
sorted_cgroups = mfree(sorted_cgroups);
- assert_se(oomd_sort_cgroup_contexts(h, compare_pgscan, "/herp.slice/derp.scope", &sorted_cgroups) == 2);
- assert_se(sorted_cgroups[0] == &ctx[1]);
- assert_se(sorted_cgroups[1] == &ctx[2]);
+ assert_se(oomd_sort_cgroup_contexts(h, compare_pgscan_and_memory_usage, "/herp.slice/derp.scope", &sorted_cgroups) == 2);
+ assert_se(sorted_cgroups[0] == &ctx[2]);
+ assert_se(sorted_cgroups[1] == &ctx[1]);
assert_se(sorted_cgroups[2] == 0);
assert_se(sorted_cgroups[3] == 0);
+ assert_se(sorted_cgroups[4] == 0);
+ assert_se(sorted_cgroups[5] == 0);
sorted_cgroups = mfree(sorted_cgroups);
}
#include "mkfs-util.h"
#include "mount-util.h"
#include "parse-util.h"
+#include "parse-argument.h"
#include "path-util.h"
#include "pretty-print.h"
#include "proc-cmdline.h"
break;
case ARG_ROOT:
- r = parse_path_argument_and_warn(optarg, false, &arg_root);
+ r = parse_path_argument(optarg, false, &arg_root);
if (r < 0)
return r;
break;
break;
case ARG_DEFINITIONS:
- r = parse_path_argument_and_warn(optarg, false, &arg_definitions);
+ r = parse_path_argument(optarg, false, &arg_definitions);
if (r < 0)
return r;
break;
}
case ARG_JSON:
- r = json_parse_cmdline_parameter_and_warn(optarg, &arg_json_format_flags);
+ r = parse_json_argument(optarg, &arg_json_format_flags);
if (r <= 0)
return r;
send_interface="org.freedesktop.portable1.Manager"
send_member="DetachImage"/>
+ <allow send_destination="org.freedesktop.portable1"
+ send_interface="org.freedesktop.portable1.Manager"
+ send_member="ReattachImage"/>
+
<allow send_destination="org.freedesktop.portable1"
send_interface="org.freedesktop.portable1.Manager"
send_member="RemoveImage"/>
send_interface="org.freedesktop.portable1.Image"
send_member="Detach"/>
+ <allow send_destination="org.freedesktop.portable1"
+ send_interface="org.freedesktop.portable1.Image"
+ send_member="Reattach"/>
+
<allow send_destination="org.freedesktop.portable1"
send_interface="org.freedesktop.portable1.Image"
send_member="Remove"/>
r = unit_file_exists(UNIT_FILE_SYSTEM, &paths, item->name);
if (r < 0)
return sd_bus_error_set_errnof(error, r, "Failed to determine whether unit '%s' exists on the host: %m", item->name);
- if (r > 0)
+ if (!FLAGS_SET(flags, PORTABLE_REATTACH) && r > 0)
return sd_bus_error_setf(error, BUS_ERROR_UNIT_EXISTS, "Unit file '%s' exists on the host already, refusing.", item->name);
r = unit_file_is_active(bus, item->name, error);
if (r < 0)
return r;
- if (r > 0)
+ if (!FLAGS_SET(flags, PORTABLE_REATTACH) && r > 0)
return sd_bus_error_setf(error, BUS_ERROR_UNIT_EXISTS, "Unit file '%s' is active already, refusing.", item->name);
}
a = last_path_component(marker);
if (image_name_is_valid(name_or_path)) {
- const char *e;
+ const char *e, *underscore;
/* We shall match against an image name. In that case let's compare the last component, and optionally
- * allow either a suffix of ".raw" or a series of "/". */
+ * allow either a suffix of ".raw" or a series of "/".
+ * But allow matching on a different version of the same image, when a "_" is used as a separator. */
+ underscore = strchr(name_or_path, '_');
+ if (underscore)
+ return strneq(a, name_or_path, underscore - name_or_path);
e = startswith(a, name_or_path);
if (!e)
e[strspn(e, "/")] == 0 ||
streq(e, ".raw");
} else {
- const char *b;
+ const char *b, *underscore;
size_t l;
/* We shall match against a path. Let's ignore any prefix here though, as often there are many ways to
if (strcspn(b, "/") != l)
return false;
- return memcmp(a, b, l) == 0;
+ underscore = strchr(b, '_');
+ if (underscore)
+ l = underscore - b;
+
+ return strneq(a, b, l);
}
}
r = unit_file_is_active(bus, de->d_name, error);
if (r < 0)
return r;
- if (r > 0)
+ if (!FLAGS_SET(flags, PORTABLE_REATTACH) && r > 0)
return sd_bus_error_setf(error, BUS_ERROR_UNIT_EXISTS, "Unit file '%s' is active, can't detach.", de->d_name);
r = set_put_strdup(&unit_files, de->d_name);
PORTABLE_PREFER_COPY = 1 << 0,
PORTABLE_PREFER_SYMLINK = 1 << 1,
PORTABLE_RUNTIME = 1 << 2,
+ PORTABLE_REATTACH = 1 << 3,
} PortableFlags;
typedef enum PortableChangeType {
static bool arg_now = false;
static bool arg_no_block = false;
+static bool is_portable_managed(const char *unit) {
+ return ENDSWITH_SET(unit, ".service", ".target", ".socket", ".path", ".timer");
+}
+
static int determine_image(const char *image, bool permit_non_existing, char **ret) {
int r;
return 0;
}
-static int maybe_start_stop(sd_bus *bus, const char *path, bool start, BusWaitForJobs *wait) {
+static int maybe_start_stop_restart(sd_bus *bus, const char *path, const char *method, BusWaitForJobs *wait) {
_cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL;
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
char *name = (char *)basename(path), *job = NULL;
int r;
+ assert(STR_IN_SET(method, "StartUnit", "StopUnit", "RestartUnit"));
+
if (!arg_now)
return 0;
"org.freedesktop.systemd1",
"/org/freedesktop/systemd1",
"org.freedesktop.systemd1.Manager",
- start ? "StartUnit" : "StopUnit",
+ method,
&error,
&reply,
"ss", name, "replace");
if (r < 0)
- return log_error_errno(r, "Failed to %s the portable service %s: %s",
- start ? "start" : "stop",
+ return log_error_errno(r, "Failed to call %s on the portable service %s: %s",
+ method,
path,
bus_error_message(&error, r));
return bus_log_parse_error(r);
if (!arg_quiet)
- log_info("Queued %s to %s portable service %s.", job, start ? "start" : "stop", name);
+ log_info("Queued %s to call %s on portable service %s.", job, method, name);
if (wait) {
r = bus_wait_for_jobs_add(wait, job);
if (r < 0)
- return log_error_errno(r, "Failed to watch %s job for %s %s: %m",
- job, start ? "starting" : "stopping", name);
+ return log_error_errno(r, "Failed to watch %s job to call %s on %s: %m",
+ job, method, name);
}
return 0;
if (r == 0)
break;
- if (STR_IN_SET(type, "symlink", "copy") && ENDSWITH_SET(path, ".service", ".target", ".socket")) {
+ if (STR_IN_SET(type, "symlink", "copy") && is_portable_managed(path)) {
+ (void) maybe_enable_disable(bus, path, true);
+ (void) maybe_start_stop_restart(bus, path, "StartUnit", wait);
+ }
+ }
+
+ r = sd_bus_message_exit_container(reply);
+ if (r < 0)
+ return r;
+
+ if (!arg_no_block) {
+ r = bus_wait_for_jobs(wait, arg_quiet, NULL);
+ if (r < 0)
+ return r;
+ }
+
+ return 0;
+}
+
+static int maybe_stop_enable_restart(sd_bus *bus, sd_bus_message *reply) {
+ _cleanup_(bus_wait_for_jobs_freep) BusWaitForJobs *wait = NULL;
+ int r;
+
+ if (!arg_enable && !arg_now)
+ return 0;
+
+ if (!arg_no_block) {
+ r = bus_wait_for_jobs_new(bus, &wait);
+ if (r < 0)
+ return log_error_errno(r, "Could not watch jobs: %m");
+ }
+
+ r = sd_bus_message_rewind(reply, true);
+ if (r < 0)
+ return r;
+
+ /* First we get a list of units that were definitely removed, not just re-attached,
+ * so we can also stop them if the user asked us to. */
+ r = sd_bus_message_enter_container(reply, 'a', "(sss)");
+ if (r < 0)
+ return bus_log_parse_error(r);
+
+ for (;;) {
+ char *type, *path, *source;
+
+ r = sd_bus_message_read(reply, "(sss)", &type, &path, &source);
+ if (r < 0)
+ return bus_log_parse_error(r);
+ if (r == 0)
+ break;
+
+ if (streq(type, "unlink") && is_portable_managed(path))
+ (void) maybe_start_stop_restart(bus, path, "StopUnit", wait);
+ }
+
+ r = sd_bus_message_exit_container(reply);
+ if (r < 0)
+ return r;
+
+ /* Then we get a list of units that were either added or changed, so that we can
+ * enable them and/or restart them if the user asked us to. */
+ r = sd_bus_message_enter_container(reply, 'a', "(sss)");
+ if (r < 0)
+ return bus_log_parse_error(r);
+
+ for (;;) {
+ char *type, *path, *source;
+
+ r = sd_bus_message_read(reply, "(sss)", &type, &path, &source);
+ if (r < 0)
+ return bus_log_parse_error(r);
+ if (r == 0)
+ break;
+
+ if (STR_IN_SET(type, "symlink", "copy") && is_portable_managed(path)) {
(void) maybe_enable_disable(bus, path, true);
- (void) maybe_start_stop(bus, path, true, wait);
+ (void) maybe_start_stop_restart(bus, path, "RestartUnit", wait);
}
}
if (r < 0)
return bus_log_parse_error(r);
- (void) maybe_start_stop(bus, name, false, wait);
+ (void) maybe_start_stop_restart(bus, name, "StopUnit", wait);
(void) maybe_enable_disable(bus, name, false);
}
return 0;
}
-static int attach_image(int argc, char *argv[], void *userdata) {
+static int attach_reattach_image(int argc, char *argv[], const char *method) {
_cleanup_(sd_bus_message_unrefp) sd_bus_message *m = NULL, *reply = NULL;
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
_cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
_cleanup_free_ char *image = NULL;
int r;
+ assert(method);
+ assert(STR_IN_SET(method, "AttachImage", "ReattachImage"));
+
r = determine_image(argv[1], false, &image);
if (r < 0)
return r;
(void) polkit_agent_open_if_enabled(arg_transport, arg_ask_password);
- r = bus_message_new_method_call(bus, &m, bus_portable_mgr, "AttachImage");
+ r = bus_message_new_method_call(bus, &m, bus_portable_mgr, method);
if (r < 0)
return bus_log_create_error(r);
r = sd_bus_call(bus, m, 0, &error, &reply);
if (r < 0)
- return log_error_errno(r, "Failed to attach image: %s", bus_error_message(&error, r));
+ return log_error_errno(r, "%s failed: %s", method, bus_error_message(&error, r));
(void) maybe_reload(&bus);
print_changes(reply);
- (void) maybe_enable_start(bus, reply);
+ if (streq(method, "AttachImage"))
+ (void) maybe_enable_start(bus, reply);
+ else {
+ /* ReattachImage returns 2 lists - removed units first, and changed/added second */
+ print_changes(reply);
+ (void) maybe_stop_enable_restart(bus, reply);
+ }
return 0;
}
+static int attach_image(int argc, char *argv[], void *userdata) {
+ return attach_reattach_image(argc, argv, "AttachImage");
+}
+
+static int reattach_image(int argc, char *argv[], void *userdata) {
+ return attach_reattach_image(argc, argv, "ReattachImage");
+}
+
static int detach_image(int argc, char *argv[], void *userdata) {
_cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL;
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
" Attach the specified portable service image\n"
" detach NAME|PATH [PREFIX...]\n"
" Detach the specified portable service image\n"
+ " reattach NAME|PATH [PREFIX...]\n"
+ " Reattach the specified portable service image\n"
" inspect NAME|PATH [PREFIX...]\n"
" Show details of specified portable service image\n"
" is-attached NAME|PATH Query if portable service image is attached\n"
{ "read-only", 2, 3, 0, read_only_image },
{ "remove", 2, VERB_ANY, 0, remove_image },
{ "set-limit", 3, 3, 0, set_limit },
+ { "reattach", 2, VERB_ANY, 0, reattach_image },
{}
};
return r;
}
+static int method_reattach_image(sd_bus_message *message, void *userdata, sd_bus_error *error) {
+ return redirect_method_to_image(userdata, message, error, bus_image_common_reattach);
+}
+
static int method_remove_image(sd_bus_message *message, void *userdata, sd_bus_error *error) {
return redirect_method_to_image(userdata, message, error, bus_image_common_remove);
}
SD_BUS_METHOD("GetImageState", "s", "s", method_get_image_state, SD_BUS_VTABLE_UNPRIVILEGED),
SD_BUS_METHOD("AttachImage", "sassbs", "a(sss)", method_attach_image, SD_BUS_VTABLE_UNPRIVILEGED),
SD_BUS_METHOD("DetachImage", "sb", "a(sss)", method_detach_image, SD_BUS_VTABLE_UNPRIVILEGED),
+ SD_BUS_METHOD("ReattachImage", "sassbs", "a(sss)a(sss)", method_reattach_image, SD_BUS_VTABLE_UNPRIVILEGED),
SD_BUS_METHOD("RemoveImage", "s", NULL, method_remove_image, SD_BUS_VTABLE_UNPRIVILEGED),
SD_BUS_METHOD("MarkImageReadOnly", "sb", NULL, method_mark_image_read_only, SD_BUS_VTABLE_UNPRIVILEGED),
SD_BUS_METHOD("SetImageLimit", "st", NULL, method_set_image_limit, SD_BUS_VTABLE_UNPRIVILEGED),
SD_BUS_VTABLE_END
};
-int reply_portable_changes(sd_bus_message *m, const PortableChange *changes, size_t n_changes) {
- _cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL;
+static int reply_portable_compose_message(sd_bus_message *reply, const PortableChange *changes, size_t n_changes) {
size_t i;
int r;
- assert(m);
+ assert(reply);
assert(changes || n_changes == 0);
- r = sd_bus_message_new_method_return(m, &reply);
- if (r < 0)
- return r;
-
r = sd_bus_message_open_container(reply, 'a', "(sss)");
if (r < 0)
return r;
if (r < 0)
return r;
+ return 0;
+}
+
+int reply_portable_changes(sd_bus_message *m, const PortableChange *changes, size_t n_changes) {
+ _cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL;
+ int r;
+
+ assert(m);
+
+ r = sd_bus_message_new_method_return(m, &reply);
+ if (r < 0)
+ return r;
+
+ r = reply_portable_compose_message(reply, changes, n_changes);
+ if (r < 0)
+ return r;
+
+ return sd_bus_send(NULL, reply, NULL);
+}
+
+int reply_portable_changes_pair(
+ sd_bus_message *m,
+ const PortableChange *changes_first,
+ size_t n_changes_first,
+ const PortableChange *changes_second,
+ size_t n_changes_second) {
+
+ _cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL;
+ int r;
+
+ assert(m);
+
+ r = sd_bus_message_new_method_return(m, &reply);
+ if (r < 0)
+ return r;
+
+ r = reply_portable_compose_message(reply, changes_first, n_changes_first);
+ if (r < 0)
+ return r;
+
+ r = reply_portable_compose_message(reply, changes_second, n_changes_second);
+ if (r < 0)
+ return r;
+
return sd_bus_send(NULL, reply, NULL);
}
extern const sd_bus_vtable manager_vtable[];
int reply_portable_changes(sd_bus_message *m, const PortableChange *changes, size_t n_changes);
+int reply_portable_changes_pair(sd_bus_message *m, const PortableChange *changes_first, size_t n_changes_first, const PortableChange *changes_second, size_t n_changes_second);
return bus_image_common_remove(NULL, message, NULL, userdata, error);
}
+/* Given two PortableChange arrays, return a new array that has all elements of the first that are
+ * not also present in the second, comparing the basename of the path values. */
+static int normalize_portable_changes(
+ const PortableChange *changes_attached,
+ size_t n_changes_attached,
+ const PortableChange *changes_detached,
+ size_t n_changes_detached,
+ PortableChange **ret_changes,
+ size_t *ret_n_changes) {
+
+ PortableChange *changes = NULL;
+ size_t n_changes = 0;
+ int r = 0;
+
+ assert(ret_n_changes);
+ assert(ret_changes);
+
+ if (n_changes_detached == 0)
+ return 0; /* Nothing to do */
+
+ changes = new0(PortableChange, n_changes_attached + n_changes_detached);
+ if (!changes)
+ return -ENOMEM;
+
+ /* Corner case: only detached, nothing attached */
+ if (n_changes_attached == 0) {
+ memcpy(changes, changes_detached, sizeof(PortableChange) * n_changes_detached);
+ *ret_changes = TAKE_PTR(changes);
+ *ret_n_changes = n_changes_detached;
+
+ return 0;
+ }
+
+ for (size_t i = 0; i < n_changes_detached; ++i) {
+ bool found = false;
+
+ for (size_t j = 0; j < n_changes_attached; ++j)
+ if (streq(basename(changes_detached[i].path), basename(changes_attached[j].path))) {
+ found = true;
+ break;
+ }
+
+ if (!found) {
+ _cleanup_free_ char *path = NULL, *source = NULL;
+
+ path = strdup(changes_detached[i].path);
+ if (!path) {
+ r = -ENOMEM;
+ goto fail;
+ }
+
+ if (changes_detached[i].source) {
+ source = strdup(changes_detached[i].source);
+ if (!source) {
+ r = -ENOMEM;
+ goto fail;
+ }
+ }
+
+ changes[n_changes++] = (PortableChange) {
+ .type = changes_detached[i].type,
+ .path = TAKE_PTR(path),
+ .source = TAKE_PTR(source),
+ };
+ }
+ }
+
+ *ret_n_changes = n_changes;
+ *ret_changes = TAKE_PTR(changes);
+
+ return 0;
+
+fail:
+ portable_changes_free(changes, n_changes);
+ return r;
+}
+
+int bus_image_common_reattach(
+ Manager *m,
+ sd_bus_message *message,
+ const char *name_or_path,
+ Image *image,
+ sd_bus_error *error) {
+
+ PortableChange *changes_detached = NULL, *changes_attached = NULL, *changes_gone = NULL;
+ size_t n_changes_detached = 0, n_changes_attached = 0, n_changes_gone = 0;
+ _cleanup_strv_free_ char **matches = NULL;
+ PortableFlags flags = PORTABLE_REATTACH;
+ const char *profile, *copy_mode;
+ int runtime, r;
+
+ assert(message);
+ assert(name_or_path || image);
+
+ if (!m) {
+ assert(image);
+ m = image->userdata;
+ }
+
+ r = sd_bus_message_read_strv(message, &matches);
+ if (r < 0)
+ return r;
+
+ r = sd_bus_message_read(message, "sbs", &profile, &runtime, ©_mode);
+ if (r < 0)
+ return r;
+
+ if (streq(copy_mode, "symlink"))
+ flags |= PORTABLE_PREFER_SYMLINK;
+ else if (streq(copy_mode, "copy"))
+ flags |= PORTABLE_PREFER_COPY;
+ else if (!isempty(copy_mode))
+ return sd_bus_reply_method_errorf(message, SD_BUS_ERROR_INVALID_ARGS, "Unknown copy mode '%s'", copy_mode);
+
+ if (runtime)
+ flags |= PORTABLE_RUNTIME;
+
+ r = bus_image_acquire(m,
+ message,
+ name_or_path,
+ image,
+ BUS_IMAGE_AUTHENTICATE_ALL,
+ "org.freedesktop.portable1.attach-images",
+ &image,
+ error);
+ if (r < 0)
+ return r;
+ if (r == 0) /* Will call us back */
+ return 1;
+
+ r = portable_detach(
+ sd_bus_message_get_bus(message),
+ image->path,
+ flags,
+ &changes_detached,
+ &n_changes_detached,
+ error);
+ if (r < 0)
+ goto finish;
+
+ r = portable_attach(
+ sd_bus_message_get_bus(message),
+ image->path,
+ matches,
+ profile,
+ flags,
+ &changes_attached,
+ &n_changes_attached,
+ error);
+ if (r < 0)
+ goto finish;
+
+ /* We want to return the list of units really removed by the detach,
+ * and not added again by the attach */
+ r = normalize_portable_changes(changes_attached, n_changes_attached,
+ changes_detached, n_changes_detached,
+ &changes_gone, &n_changes_gone);
+ if (r < 0)
+ goto finish;
+
+ /* First, return the units that are gone (so that the caller can stop them)
+ * Then, return the units that are changed/added (so that the caller can
+ * start/restart/enable them) */
+ r = reply_portable_changes_pair(message,
+ changes_gone, n_changes_gone,
+ changes_attached, n_changes_attached);
+ if (r < 0)
+ goto finish;
+
+finish:
+ portable_changes_free(changes_detached, n_changes_detached);
+ portable_changes_free(changes_attached, n_changes_attached);
+ portable_changes_free(changes_gone, n_changes_gone);
+ return r;
+}
+
+static int bus_image_method_reattach(sd_bus_message *message, void *userdata, sd_bus_error *error) {
+ return bus_image_common_reattach(NULL, message, NULL, userdata, error);
+}
+
int bus_image_common_mark_read_only(
Manager *m,
sd_bus_message *message,
SD_BUS_METHOD("GetState", NULL, "s", bus_image_method_get_state, SD_BUS_VTABLE_UNPRIVILEGED),
SD_BUS_METHOD("Attach", "assbs", "a(sss)", bus_image_method_attach, SD_BUS_VTABLE_UNPRIVILEGED),
SD_BUS_METHOD("Detach", "b", "a(sss)", bus_image_method_detach, SD_BUS_VTABLE_UNPRIVILEGED),
+ SD_BUS_METHOD("Reattach", "assbs", "a(sss)a(sss)", bus_image_method_reattach, SD_BUS_VTABLE_UNPRIVILEGED),
SD_BUS_METHOD("Remove", NULL, NULL, bus_image_method_remove, SD_BUS_VTABLE_UNPRIVILEGED),
SD_BUS_METHOD("MarkReadOnly", "b", NULL, bus_image_method_mark_read_only, SD_BUS_VTABLE_UNPRIVILEGED),
SD_BUS_METHOD("SetLimit", "t", NULL, bus_image_method_set_limit, SD_BUS_VTABLE_UNPRIVILEGED),
int bus_image_common_get_metadata(Manager *m, sd_bus_message *message, const char *name_or_path, Image *image, sd_bus_error *error);
int bus_image_common_attach(Manager *m, sd_bus_message *message, const char *name_or_path, Image *image, sd_bus_error *error);
int bus_image_common_remove(Manager *m, sd_bus_message *message, const char *name_or_path, Image *image, sd_bus_error *error);
+int bus_image_common_reattach(Manager *m, sd_bus_message *message, const char *name_or_path, Image *image, sd_bus_error *error);
int bus_image_common_mark_read_only(Manager *m, sd_bus_message *message, const char *name_or_path, Image *image, sd_bus_error *error);
int bus_image_common_set_limit(Manager *m, sd_bus_message *message, const char *name_or_path, Image *image, sd_bus_error *error);
" --service-address=BOOL Resolve address for services (default: yes)\n"
" --service-txt=BOOL Resolve TXT records for services (default: yes)\n"
" --cname=BOOL Follow CNAME redirects (default: yes)\n"
- " --search=BOOL Use search domains for single-label names\n"
- " (default: yes)\n"
+ " --validate=BOOL Allow DNSSEC validation (default: yes)\n"
+ " --synthesize=BOOL Allow synthetic response (default: yes)\n"
+ " --cache=BOOL Allow response from cache (default: yes)\n"
+ " --zone=BOOL Allow response from locally registered mDNS/LLMNR\n"
+ " records (default: yes)\n"
+ " --trust-anchor=BOOL Allow response from local trust anchor (default: yes)\n"
+ " --network=BOOL Allow response from network (default: yes)\n"
+ " --search=BOOL Use search domains for single-label names (default: yes)\n"
" --raw[=payload|packet] Dump the answer as binary data\n"
" --legend=BOOL Print headers and additional info (default: yes)\n"
"\nSee the %s for details.\n",
ARG_VERSION = 0x100,
ARG_LEGEND,
ARG_CNAME,
+ ARG_VALIDATE,
+ ARG_SYNTHESIZE,
+ ARG_CACHE,
+ ARG_ZONE,
+ ARG_TRUST_ANCHOR,
+ ARG_NETWORK,
ARG_SERVICE_ADDRESS,
ARG_SERVICE_TXT,
ARG_RAW,
{ "interface", required_argument, NULL, 'i' },
{ "protocol", required_argument, NULL, 'p' },
{ "cname", required_argument, NULL, ARG_CNAME },
+ { "validate", required_argument, NULL, ARG_VALIDATE },
+ { "synthesize", required_argument, NULL, ARG_SYNTHESIZE },
+ { "cache", required_argument, NULL, ARG_CACHE },
+ { "zone", required_argument, NULL, ARG_ZONE },
+ { "trust-anchor", required_argument, NULL, ARG_TRUST_ANCHOR },
+ { "network", required_argument, NULL, ARG_NETWORK },
{ "service-address", required_argument, NULL, ARG_SERVICE_ADDRESS },
{ "service-txt", required_argument, NULL, ARG_SERVICE_TXT },
{ "raw", optional_argument, NULL, ARG_RAW },
SET_FLAG(arg_flags, SD_RESOLVED_NO_CNAME, r == 0);
break;
+ case ARG_VALIDATE:
+ r = parse_boolean(optarg);
+ if (r < 0)
+ return log_error_errno(r, "Failed to parse --validate= argument.");
+ SET_FLAG(arg_flags, SD_RESOLVED_NO_VALIDATE, r == 0);
+ break;
+
+ case ARG_SYNTHESIZE:
+ r = parse_boolean(optarg);
+ if (r < 0)
+ return log_error_errno(r, "Failed to parse --synthesize= argument.");
+ SET_FLAG(arg_flags, SD_RESOLVED_NO_SYNTHESIZE, r == 0);
+ break;
+
+ case ARG_CACHE:
+ r = parse_boolean(optarg);
+ if (r < 0)
+ return log_error_errno(r, "Failed to parse --cache= argument.");
+ SET_FLAG(arg_flags, SD_RESOLVED_NO_CACHE, r == 0);
+ break;
+
+ case ARG_ZONE:
+ r = parse_boolean(optarg);
+ if (r < 0)
+ return log_error_errno(r, "Failed to parse --zone= argument.");
+ SET_FLAG(arg_flags, SD_RESOLVED_NO_ZONE, r == 0);
+ break;
+
+ case ARG_TRUST_ANCHOR:
+ r = parse_boolean(optarg);
+ if (r < 0)
+ return log_error_errno(r, "Failed to parse --trust-anchor= argument.");
+ SET_FLAG(arg_flags, SD_RESOLVED_NO_TRUST_ANCHOR, r == 0);
+ break;
+
+ case ARG_NETWORK:
+ r = parse_boolean(optarg);
+ if (r < 0)
+ return log_error_errno(r, "Failed to parse --network= argument.");
+ SET_FLAG(arg_flags, SD_RESOLVED_NO_NETWORK, r == 0);
+ break;
+
case ARG_SERVICE_ADDRESS:
r = parse_boolean(optarg);
if (r < 0)
* thus quickly know that we cannot resolve an in-addr.arpa or ip6.arpa address. */
return sd_bus_reply_method_errorf(q->bus_request, _BUS_ERROR_DNS "NXDOMAIN", "'%s' not found", dns_query_string(q));
+ case DNS_TRANSACTION_NO_SOURCE:
+ return sd_bus_reply_method_errorf(q->bus_request, BUS_ERROR_NO_SOURCE, "All suitable resolution sources turned off");
+
+ case DNS_TRANSACTION_STUB_LOOP:
+ return sd_bus_reply_method_errorf(q->bus_request, BUS_ERROR_STUB_LOOP, "Configured DNS server loops back to us");
+
case DNS_TRANSACTION_RCODE_FAILURE: {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
*
* 1. Checks that the interface index is either 0 (meaning *all* interfaces) or positive
*
- * 2. Only the protocols flags and the NO_CNAME flag are set, at most. Plus additional flags specific
- * to our method, passed in the "ok" parameter.
+ * 2. Only the protocols flags and a bunch of NO_XYZ flags are set, at most. Plus additional flags
+ * specific to our method, passed in the "ok" parameter.
*
* 3. If zero protocol flags are specified it is automatically turned into *all* protocols. This way
* clients can simply pass 0 as flags and all will work as it should. They can also use this so
* to mean "all supported protocols".
*/
- if (*flags & ~(SD_RESOLVED_PROTOCOLS_ALL|SD_RESOLVED_NO_CNAME|ok))
+ if (*flags & ~(SD_RESOLVED_PROTOCOLS_ALL|
+ SD_RESOLVED_NO_CNAME|
+ SD_RESOLVED_NO_VALIDATE|
+ SD_RESOLVED_NO_SYNTHESIZE|
+ SD_RESOLVED_NO_CACHE|
+ SD_RESOLVED_NO_ZONE|
+ SD_RESOLVED_NO_TRUST_ANCHOR|
+ SD_RESOLVED_NO_NETWORK|
+ ok))
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid flags parameter");
if ((*flags & SD_RESOLVED_PROTOCOLS_ALL) == 0) /* If no protocol is enabled, enable all */
if (r < 0 && r != -EALREADY)
return r;
- r = dns_query_new(m, &q, question_utf8, question_idna ?: question_utf8, ifindex, flags);
+ r = dns_query_new(m, &q, question_utf8, question_idna ?: question_utf8, NULL, ifindex, flags);
if (r < 0)
return r;
if (r < 0)
return r;
- r = dns_query_new(m, &q, question, question, ifindex, flags|SD_RESOLVED_NO_SEARCH);
+ r = dns_query_new(m, &q, question, question, NULL, ifindex, flags|SD_RESOLVED_NO_SEARCH);
if (r < 0)
return r;
if (r < 0)
return r;
- r = dns_query_new(m, &q, question, question, ifindex, flags|SD_RESOLVED_NO_SEARCH);
+ /* Setting SD_RESOLVED_CLAMP_TTL: let's request that the TTL is fixed up for locally cached entries,
+ * after all we return it in the wire format blob. */
+ r = dns_query_new(m, &q, question, question, NULL, ifindex, flags|SD_RESOLVED_NO_SEARCH|SD_RESOLVED_CLAMP_TTL);
if (r < 0)
return r;
- /* Let's request that the TTL is fixed up for locally cached entries, after all we return it in the wire format
- * blob */
- q->clamp_ttl = true;
-
q->bus_request = sd_bus_message_ref(message);
q->complete = bus_method_resolve_record_complete;
if (r < 0)
return r;
- r = dns_query_new(q->manager, &aux, question, question, ifindex, q->flags|SD_RESOLVED_NO_SEARCH);
+ r = dns_query_new(q->manager, &aux, question, question, NULL, ifindex, q->flags|SD_RESOLVED_NO_SEARCH);
if (r < 0)
return r;
if (r < 0)
return r;
- r = dns_query_new(m, &q, question_utf8, question_idna, ifindex, flags|SD_RESOLVED_NO_SEARCH);
+ r = dns_query_new(m, &q, question_utf8, question_idna, NULL, ifindex, flags|SD_RESOLVED_NO_SEARCH);
if (r < 0)
return r;
/* Output: Result is authenticated */
#define SD_RESOLVED_AUTHENTICATED (UINT64_C(1) << 9)
+/* Input: Don't DNSSEC validate request */
+#define SD_RESOLVED_NO_VALIDATE (UINT64_C(1) << 10)
+
+/* Input: Don't answer request from locally synthesized records (which includes /etc/hosts) */
+#define SD_RESOLVED_NO_SYNTHESIZE (UINT64_C(1) << 11)
+
+/* Input: Don't answer request from cache */
+#define SD_RESOLVED_NO_CACHE (UINT64_C(1) << 12)
+
+/* Input: Don't answer request from locally registered public LLMNR/mDNS RRs */
+#define SD_RESOLVED_NO_ZONE (UINT64_C(1) << 13)
+
+/* Input: Don't answer request from locally registered public LLMNR/mDNS RRs */
+#define SD_RESOLVED_NO_TRUST_ANCHOR (UINT64_C(1) << 14)
+
+/* Input: Don't go to network for this request */
+#define SD_RESOLVED_NO_NETWORK (UINT64_C(1) << 15)
+
+/* Input: Require that request is answered from a "primary" answer, i.e. not from RRs acquired as
+ * side-effect of a previous transaction */
+#define SD_RESOLVED_REQUIRE_PRIMARY (UINT64_C(1) << 16)
+
+/* Input: If reply is answered from cache, the TTLs will be adjusted by age of cache entry */
+#define SD_RESOLVED_CLAMP_TTL (UINT64_C(1) << 17)
+
#define SD_RESOLVED_LLMNR (SD_RESOLVED_LLMNR_IPV4|SD_RESOLVED_LLMNR_IPV6)
#define SD_RESOLVED_MDNS (SD_RESOLVED_MDNS_IPV4|SD_RESOLVED_MDNS_IPV6)
#define SD_RESOLVED_PROTOCOLS_ALL (SD_RESOLVED_MDNS|SD_RESOLVED_LLMNR|SD_RESOLVED_DNS)
#include "alloc-util.h"
#include "dns-domain.h"
+#include "random-util.h"
#include "resolved-dns-answer.h"
#include "resolved-dns-dnssec.h"
#include "string-util.h"
a->n_ref = 1;
a->n_allocated = n;
a->set_items = TAKE_PTR(s);
-
return a;
}
static void dns_answer_flush(DnsAnswer *a) {
- DnsResourceRecord *rr;
+ DnsAnswerItem *item;
if (!a)
return;
a->set_items = set_free(a->set_items);
- DNS_ANSWER_FOREACH(rr, a)
- dns_resource_record_unref(rr);
+ DNS_ANSWER_FOREACH_ITEM(item, a) {
+ dns_resource_record_unref(item->rr);
+ dns_resource_record_unref(item->rrsig);
+ }
a->n_rrs = 0;
}
DEFINE_TRIVIAL_REF_UNREF_FUNC(DnsAnswer, dns_answer, dns_answer_free);
-static int dns_answer_add_raw(DnsAnswer *a, DnsResourceRecord *rr, int ifindex, DnsAnswerFlags flags) {
+static int dns_answer_add_raw(
+ DnsAnswer *a,
+ DnsResourceRecord *rr,
+ int ifindex,
+ DnsAnswerFlags flags,
+ DnsResourceRecord *rrsig) {
+
int r;
assert(rr);
.rr = rr,
.ifindex = ifindex,
.flags = flags,
+ .rrsig = dns_resource_record_ref(rrsig),
};
r = set_put(a->set_items, &a->items[a->n_rrs]);
}
static int dns_answer_add_raw_all(DnsAnswer *a, DnsAnswer *source) {
- DnsResourceRecord *rr;
- DnsAnswerFlags flags;
- int ifindex, r;
+ DnsAnswerItem *item;
+ int r;
- DNS_ANSWER_FOREACH_FULL(rr, ifindex, flags, source) {
- r = dns_answer_add_raw(a, rr, ifindex, flags);
+ DNS_ANSWER_FOREACH_ITEM(item, source) {
+ r = dns_answer_add_raw(
+ a,
+ item->rr,
+ item->ifindex,
+ item->flags,
+ item->rrsig);
if (r < 0)
return r;
}
return 0;
}
-int dns_answer_add(DnsAnswer *a, DnsResourceRecord *rr, int ifindex, DnsAnswerFlags flags) {
+int dns_answer_add(
+ DnsAnswer *a,
+ DnsResourceRecord *rr,
+ int ifindex,
+ DnsAnswerFlags flags,
+ DnsResourceRecord *rrsig) {
+
DnsAnswerItem tmp, *exist;
assert(rr);
if (rr->ttl > exist->rr->ttl) {
dns_resource_record_unref(exist->rr);
exist->rr = dns_resource_record_ref(rr);
+
+ /* Update RRSIG and RR at the same time */
+ if (rrsig) {
+ dns_resource_record_ref(rrsig);
+ dns_resource_record_unref(exist->rrsig);
+ exist->rrsig = rrsig;
+ }
}
exist->flags |= flags;
return 0;
}
- return dns_answer_add_raw(a, rr, ifindex, flags);
+ return dns_answer_add_raw(a, rr, ifindex, flags, rrsig);
}
static int dns_answer_add_all(DnsAnswer *a, DnsAnswer *b) {
- DnsResourceRecord *rr;
- DnsAnswerFlags flags;
- int ifindex, r;
+ DnsAnswerItem *item;
+ int r;
- DNS_ANSWER_FOREACH_FULL(rr, ifindex, flags, b) {
- r = dns_answer_add(a, rr, ifindex, flags);
+ DNS_ANSWER_FOREACH_ITEM(item, b) {
+ r = dns_answer_add(a, item->rr, item->ifindex, item->flags, item->rrsig);
if (r < 0)
return r;
}
return 0;
}
-int dns_answer_add_extend(DnsAnswer **a, DnsResourceRecord *rr, int ifindex, DnsAnswerFlags flags) {
+int dns_answer_add_extend(
+ DnsAnswer **a,
+ DnsResourceRecord *rr,
+ int ifindex,
+ DnsAnswerFlags flags,
+ DnsResourceRecord *rrsig) {
+
int r;
assert(a);
if (r < 0)
return r;
- return dns_answer_add(*a, rr, ifindex, flags);
+ return dns_answer_add(*a, rr, ifindex, flags, rrsig);
}
int dns_answer_add_soa(DnsAnswer *a, const char *name, uint32_t ttl, int ifindex) {
soa->soa.expire = 1;
soa->soa.minimum = ttl;
- return dns_answer_add(a, soa, ifindex, DNS_ANSWER_AUTHENTICATED);
+ return dns_answer_add(a, soa, ifindex, DNS_ANSWER_AUTHENTICATED, NULL);
}
int dns_answer_match_key(DnsAnswer *a, const DnsResourceKey *key, DnsAnswerFlags *ret_flags) {
int dns_answer_contains_nsec_or_nsec3(DnsAnswer *a) {
DnsResourceRecord *i;
- DNS_ANSWER_FOREACH(i, a) {
+ DNS_ANSWER_FOREACH(i, a)
if (IN_SET(i->key->type, DNS_TYPE_NSEC, DNS_TYPE_NSEC3))
return true;
- }
return false;
}
return false;
}
-int dns_answer_find_soa(DnsAnswer *a, const DnsResourceKey *key, DnsResourceRecord **ret, DnsAnswerFlags *flags) {
+int dns_answer_contains(DnsAnswer *answer, DnsResourceRecord *rr) {
+ DnsResourceRecord *i;
+
+ DNS_ANSWER_FOREACH(i, answer)
+ if (dns_resource_record_equal(i, rr))
+ return true;
+
+ return false;
+}
+
+int dns_answer_find_soa(
+ DnsAnswer *a,
+ const DnsResourceKey *key,
+ DnsResourceRecord **ret,
+ DnsAnswerFlags *ret_flags) {
+
DnsResourceRecord *rr, *soa = NULL;
DnsAnswerFlags rr_flags, soa_flags = 0;
int r;
/* For a SOA record we can never find a matching SOA record */
if (key->type == DNS_TYPE_SOA)
- return 0;
+ goto not_found;
DNS_ANSWER_FOREACH_FLAGS(rr, rr_flags, a) {
r = dns_resource_key_match_soa(key, rr->key);
}
if (!soa)
- return 0;
+ goto not_found;
if (ret)
*ret = soa;
- if (flags)
- *flags = soa_flags;
+ if (ret_flags)
+ *ret_flags = soa_flags;
return 1;
+
+not_found:
+ if (ret)
+ *ret = NULL;
+ if (ret_flags)
+ *ret_flags = 0;
+
+ return 0;
}
-int dns_answer_find_cname_or_dname(DnsAnswer *a, const DnsResourceKey *key, DnsResourceRecord **ret, DnsAnswerFlags *flags) {
+int dns_answer_find_cname_or_dname(
+ DnsAnswer *a,
+ const DnsResourceKey *key,
+ DnsResourceRecord **ret,
+ DnsAnswerFlags *ret_flags) {
+
DnsResourceRecord *rr;
DnsAnswerFlags rr_flags;
int r;
if (r > 0) {
if (ret)
*ret = rr;
- if (flags)
- *flags = rr_flags;
+ if (ret_flags)
+ *ret_flags = rr_flags;
return 1;
}
}
+ if (ret)
+ *ret = NULL;
+ if (ret_flags)
+ *ret_flags = 0;
+
return 0;
}
if ((*a)->n_ref > 1) {
_cleanup_(dns_answer_unrefp) DnsAnswer *copy = NULL;
- DnsAnswerFlags flags;
- int ifindex;
+ DnsAnswerItem *item;
copy = dns_answer_new((*a)->n_rrs);
if (!copy)
return -ENOMEM;
- DNS_ANSWER_FOREACH_FULL(rr, ifindex, flags, *a) {
- r = dns_resource_key_equal(rr->key, key);
+ DNS_ANSWER_FOREACH_ITEM(item, *a) {
+ r = dns_resource_key_equal(item->rr->key, key);
if (r < 0)
return r;
if (r > 0)
continue;
- r = dns_answer_add_raw(copy, rr, ifindex, flags);
+ r = dns_answer_add_raw(copy, item->rr, item->ifindex, item->flags, item->rrsig);
if (r < 0)
return r;
}
/* Kill this entry */
dns_resource_record_unref((*a)->items[i].rr);
+ dns_resource_record_unref((*a)->items[i].rrsig);
+
memmove((*a)->items + i, (*a)->items + i + 1, sizeof(DnsAnswerItem) * ((*a)->n_rrs - i - 1));
(*a)->n_rrs--;
continue;
if ((*a)->n_ref > 1) {
_cleanup_(dns_answer_unrefp) DnsAnswer *copy = NULL;
- DnsAnswerFlags flags;
- int ifindex;
+ DnsAnswerItem *item;
copy = dns_answer_new((*a)->n_rrs);
if (!copy)
return -ENOMEM;
- DNS_ANSWER_FOREACH_FULL(rr, ifindex, flags, *a) {
- r = dns_resource_record_equal(rr, rm);
+ DNS_ANSWER_FOREACH_ITEM(item, *a) {
+ r = dns_resource_record_equal(item->rr, rm);
if (r < 0)
return r;
if (r > 0)
continue;
- r = dns_answer_add_raw(copy, rr, ifindex, flags);
+ r = dns_answer_add_raw(copy, item->rr, item->ifindex, item->flags, item->rrsig);
if (r < 0)
return r;
}
/* Kill this entry */
dns_resource_record_unref((*a)->items[i].rr);
+ dns_resource_record_unref((*a)->items[i].rrsig);
memmove((*a)->items + i, (*a)->items + i + 1, sizeof(DnsAnswerItem) * ((*a)->n_rrs - i - 1));
(*a)->n_rrs--;
continue;
return 1;
}
-int dns_answer_copy_by_key(DnsAnswer **a, DnsAnswer *source, const DnsResourceKey *key, DnsAnswerFlags or_flags) {
- DnsResourceRecord *rr_source;
- int ifindex_source, r;
- DnsAnswerFlags flags_source;
+int dns_answer_copy_by_key(
+ DnsAnswer **a,
+ DnsAnswer *source,
+ const DnsResourceKey *key,
+ DnsAnswerFlags or_flags,
+ DnsResourceRecord *rrsig) {
+
+ DnsAnswerItem *item;
+ int r;
assert(a);
assert(key);
/* Copy all RRs matching the specified key from source into *a */
- DNS_ANSWER_FOREACH_FULL(rr_source, ifindex_source, flags_source, source) {
+ DNS_ANSWER_FOREACH_ITEM(item, source) {
- r = dns_resource_key_equal(rr_source->key, key);
+ r = dns_resource_key_equal(item->rr->key, key);
if (r < 0)
return r;
if (r == 0)
if (r < 0)
return r;
- r = dns_answer_add(*a, rr_source, ifindex_source, flags_source|or_flags);
+ r = dns_answer_add(*a, item->rr, item->ifindex, item->flags|or_flags, item->rrsig);
if (r < 0)
return r;
}
return 0;
}
-int dns_answer_move_by_key(DnsAnswer **to, DnsAnswer **from, const DnsResourceKey *key, DnsAnswerFlags or_flags) {
+int dns_answer_move_by_key(
+ DnsAnswer **to,
+ DnsAnswer **from,
+ const DnsResourceKey *key,
+ DnsAnswerFlags or_flags,
+ DnsResourceRecord *rrsig) {
int r;
assert(to);
assert(from);
assert(key);
- r = dns_answer_copy_by_key(to, *from, key, or_flags);
+ r = dns_answer_copy_by_key(to, *from, key, or_flags, rrsig);
if (r < 0)
return r;
items = newa(DnsAnswerItem, a->n_rrs);
for (i = 0; i < a->n_rrs; i++) {
-
- if (a->items[i].rr->key->class == DNS_CLASS_IN &&
- ((a->items[i].rr->key->type == DNS_TYPE_A && in_addr_is_link_local(AF_INET, (union in_addr_union*) &a->items[i].rr->a.in_addr) != prefer_link_local) ||
- (a->items[i].rr->key->type == DNS_TYPE_AAAA && in_addr_is_link_local(AF_INET6, (union in_addr_union*) &a->items[i].rr->aaaa.in6_addr) != prefer_link_local)))
+ if (dns_resource_record_is_link_local_address(a->items[i].rr) != prefer_link_local)
/* Order address records that are not preferred to the end of the array */
items[end--] = a->items[i];
else
if ((*a)->n_ref > 1)
return -EBUSY;
- ns = (*a)->n_rrs + n_free;
- if (ns > UINT16_MAX) /* Maximum number of RRs we can stick into a DNS packet section */
+ ns = (*a)->n_rrs;
+ assert(ns <= UINT16_MAX); /* Maximum number of RRs we can stick into a DNS packet section */
+
+ if (n_free > UINT16_MAX - ns) /* overflow check */
ns = UINT16_MAX;
+ else
+ ns += n_free;
if ((*a)->n_allocated >= ns)
return 0;
- /* Allocate more than we need */
- ns *= 2;
- if (ns > UINT16_MAX)
+ /* Allocate more than we need, but not more than UINT16_MAX */
+ if (ns <= UINT16_MAX/2)
+ ns *= 2;
+ else
ns = UINT16_MAX;
/* This must be done before realloc() below. Otherwise, the original DnsAnswer object
}
int dns_answer_reserve_or_clone(DnsAnswer **a, size_t n_free) {
- _cleanup_(dns_answer_unrefp) DnsAnswer *n = NULL;
int r;
assert(a);
- /* Tries to extend the DnsAnswer object. And if that's not
- * possible, since we are not the sole owner, then allocate a
- * new, appropriately sized one. Either way, after this call
- * the object will only have a single reference, and has room
- * for at least the specified number of RRs. */
+ /* Tries to extend the DnsAnswer object. And if that's not possible, since we are not the sole owner,
+ * then allocate a new, appropriately sized one. Either way, after this call the object will only
+ * have a single reference, and has room for at least the specified number of RRs. */
- r = dns_answer_reserve(a, n_free);
- if (r != -EBUSY)
- return r;
+ if (*a && (*a)->n_ref > 1) {
+ _cleanup_(dns_answer_unrefp) DnsAnswer *n = NULL;
+ size_t ns;
- assert(*a);
+ ns = (*a)->n_rrs;
+ assert(ns <= UINT16_MAX); /* Maximum number of RRs we can stick into a DNS packet section */
- n = dns_answer_new(((*a)->n_rrs + n_free) * 2);
- if (!n)
- return -ENOMEM;
+ if (n_free > UINT16_MAX - ns) /* overflow check */
+ ns = UINT16_MAX;
+ else if (n_free > 0) { /* Increase size and double the result, just in case — except if the
+ * increase is specified as 0, in which case we just allocate the
+ * exact amount as before, under the assumption this is just a request
+ * to copy the answer. */
+ ns += n_free;
+
+ if (ns <= UINT16_MAX/2) /* overflow check */
+ ns *= 2;
+ else
+ ns = UINT16_MAX;
+ }
- r = dns_answer_add_raw_all(n, *a);
- if (r < 0)
- return r;
+ n = dns_answer_new(ns);
+ if (!n)
+ return -ENOMEM;
- dns_answer_unref(*a);
- *a = TAKE_PTR(n);
+ r = dns_answer_add_raw_all(n, *a);
+ if (r < 0)
+ return r;
+
+ dns_answer_unref(*a);
+ assert_se(*a = TAKE_PTR(n));
+ } else if (n_free > 0) {
+ r = dns_answer_reserve(a, n_free);
+ if (r < 0)
+ return r;
+ }
return 0;
}
* This function is not used in the code base, but is useful when debugging. Do not delete.
*/
void dns_answer_dump(DnsAnswer *answer, FILE *f) {
- DnsResourceRecord *rr;
- DnsAnswerFlags flags;
- int ifindex;
+ DnsAnswerItem *item;
if (!f)
f = stdout;
- DNS_ANSWER_FOREACH_FULL(rr, ifindex, flags, answer) {
+ DNS_ANSWER_FOREACH_ITEM(item, answer) {
const char *t;
fputc('\t', f);
- t = dns_resource_record_to_string(rr);
+ t = dns_resource_record_to_string(item->rr);
if (!t) {
log_oom();
continue;
fputs(t, f);
- if (ifindex != 0 || flags != 0)
+ if (item->ifindex != 0 || item->rrsig || item->flags != 0)
fputs("\t;", f);
- if (ifindex != 0)
- fprintf(f, " ifindex=%i", ifindex);
- if (flags & DNS_ANSWER_AUTHENTICATED)
+ if (item->ifindex != 0)
+ fprintf(f, " ifindex=%i", item->ifindex);
+ if (item->rrsig)
+ fputs(" rrsig", f);
+ if (item->flags & DNS_ANSWER_AUTHENTICATED)
fputs(" authenticated", f);
- if (flags & DNS_ANSWER_CACHEABLE)
+ if (item->flags & DNS_ANSWER_CACHEABLE)
fputs(" cacheable", f);
- if (flags & DNS_ANSWER_SHARED_OWNER)
+ if (item->flags & DNS_ANSWER_SHARED_OWNER)
fputs(" shared-owner", f);
- if (flags & DNS_ANSWER_CACHE_FLUSH)
+ if (item->flags & DNS_ANSWER_CACHE_FLUSH)
fputs(" cache-flush", f);
- if (flags & DNS_ANSWER_GOODBYE)
+ if (item->flags & DNS_ANSWER_GOODBYE)
fputs(" goodbye", f);
+ if (item->flags & DNS_ANSWER_SECTION_ANSWER)
+ fputs(" section-answer", f);
+ if (item->flags & DNS_ANSWER_SECTION_AUTHORITY)
+ fputs(" section-authority", f);
+ if (item->flags & DNS_ANSWER_SECTION_ADDITIONAL)
+ fputs(" section-additional", f);
fputc('\n', f);
}
return 0;
}
+
+void dns_answer_randomize(DnsAnswer *a) {
+ size_t n;
+
+ /* Permutes the answer list randomly (Knuth shuffle) */
+
+ n = dns_answer_size(a);
+ if (n <= 1)
+ return;
+
+ for (size_t i = 0; i < n; i++) {
+ size_t k;
+
+ k = random_u64_range(n);
+ if (k == i)
+ continue;
+
+ SWAP_TWO(a->items[i], a->items[k]);
+ }
+}
#include "resolved-dns-rr.h"
#include "set.h"
-/* A simple array of resource records. We keep track of the
- * originating ifindex for each RR where that makes sense, so that we
- * can qualify A and AAAA RRs referring to a local link with the
- * right ifindex.
+/* A simple array of resource records. We keep track of the originating ifindex for each RR where that makes
+ * sense, so that we can qualify A and AAAA RRs referring to a local link with the right ifindex.
*
* Note that we usually encode the empty DnsAnswer object as a simple NULL. */
typedef enum DnsAnswerFlags {
- DNS_ANSWER_AUTHENTICATED = 1 << 0, /* Item has been authenticated */
- DNS_ANSWER_CACHEABLE = 1 << 1, /* Item is subject to caching */
- DNS_ANSWER_SHARED_OWNER = 1 << 2, /* For mDNS: RRset may be owner by multiple peers */
- DNS_ANSWER_CACHE_FLUSH = 1 << 3, /* For mDNS: sets cache-flush bit in the rrclass of response records */
- DNS_ANSWER_GOODBYE = 1 << 4, /* For mDNS: item is subject to disappear */
+ DNS_ANSWER_AUTHENTICATED = 1 << 0, /* Item has been authenticated */
+ DNS_ANSWER_CACHEABLE = 1 << 1, /* Item is subject to caching */
+ DNS_ANSWER_SHARED_OWNER = 1 << 2, /* For mDNS: RRset may be owner by multiple peers */
+ DNS_ANSWER_CACHE_FLUSH = 1 << 3, /* For mDNS: sets cache-flush bit in the rrclass of response records */
+ DNS_ANSWER_GOODBYE = 1 << 4, /* For mDNS: item is subject to disappear */
+ DNS_ANSWER_SECTION_ANSWER = 1 << 5, /* When parsing: RR originates from answer section */
+ DNS_ANSWER_SECTION_AUTHORITY = 1 << 6, /* When parsing: RR originates from authority section */
+ DNS_ANSWER_SECTION_ADDITIONAL = 1 << 7, /* When parsing: RR originates from additional section */
} DnsAnswerFlags;
struct DnsAnswerItem {
DnsResourceRecord *rr;
+ DnsResourceRecord *rrsig; /* Optionally, also store RRSIG RR that successfully validates this item */
int ifindex;
DnsAnswerFlags flags;
};
DnsAnswer *dns_answer_ref(DnsAnswer *a);
DnsAnswer *dns_answer_unref(DnsAnswer *a);
-int dns_answer_add(DnsAnswer *a, DnsResourceRecord *rr, int ifindex, DnsAnswerFlags flags);
-int dns_answer_add_extend(DnsAnswer **a, DnsResourceRecord *rr, int ifindex, DnsAnswerFlags flags);
+int dns_answer_add(DnsAnswer *a, DnsResourceRecord *rr, int ifindex, DnsAnswerFlags flags, DnsResourceRecord *rrsig);
+int dns_answer_add_extend(DnsAnswer **a, DnsResourceRecord *rr, int ifindex, DnsAnswerFlags flags, DnsResourceRecord *rrsig);
int dns_answer_add_soa(DnsAnswer *a, const char *name, uint32_t ttl, int ifindex);
int dns_answer_match_key(DnsAnswer *a, const DnsResourceKey *key, DnsAnswerFlags *combined_flags);
int dns_answer_contains_nsec_or_nsec3(DnsAnswer *a);
int dns_answer_contains_zone_nsec3(DnsAnswer *answer, const char *zone);
+int dns_answer_contains(DnsAnswer *answer, DnsResourceRecord *rr);
-int dns_answer_find_soa(DnsAnswer *a, const DnsResourceKey *key, DnsResourceRecord **ret, DnsAnswerFlags *flags);
-int dns_answer_find_cname_or_dname(DnsAnswer *a, const DnsResourceKey *key, DnsResourceRecord **ret, DnsAnswerFlags *flags);
+int dns_answer_find_soa(DnsAnswer *a, const DnsResourceKey *key, DnsResourceRecord **ret, DnsAnswerFlags *ret_flags);
+int dns_answer_find_cname_or_dname(DnsAnswer *a, const DnsResourceKey *key, DnsResourceRecord **ret, DnsAnswerFlags *ret_flags);
int dns_answer_merge(DnsAnswer *a, DnsAnswer *b, DnsAnswer **ret);
int dns_answer_extend(DnsAnswer **a, DnsAnswer *b);
int dns_answer_remove_by_key(DnsAnswer **a, const DnsResourceKey *key);
int dns_answer_remove_by_rr(DnsAnswer **a, DnsResourceRecord *rr);
-int dns_answer_copy_by_key(DnsAnswer **a, DnsAnswer *source, const DnsResourceKey *key, DnsAnswerFlags or_flags);
-int dns_answer_move_by_key(DnsAnswer **to, DnsAnswer **from, const DnsResourceKey *key, DnsAnswerFlags or_flags);
+int dns_answer_copy_by_key(DnsAnswer **a, DnsAnswer *source, const DnsResourceKey *key, DnsAnswerFlags or_flags, DnsResourceRecord *rrsig);
+int dns_answer_move_by_key(DnsAnswer **to, DnsAnswer **from, const DnsResourceKey *key, DnsAnswerFlags or_flags, DnsResourceRecord *rrsig);
int dns_answer_has_dname_for_cname(DnsAnswer *a, DnsResourceRecord *cname);
void dns_answer_dump(DnsAnswer *answer, FILE *f);
+void dns_answer_randomize(DnsAnswer *a);
+
DEFINE_TRIVIAL_CLEANUP_FUNC(DnsAnswer*, dns_answer_unref);
#define _DNS_ANSWER_FOREACH(q, kk, a) \
#define DNS_ANSWER_FOREACH_FLAGS(kk, flags, a) _DNS_ANSWER_FOREACH_FLAGS(UNIQ, kk, flags, a)
-#define _DNS_ANSWER_FOREACH_FULL(q, kk, ifi, fl, a) \
+#define _DNS_ANSWER_FOREACH_ITEM(q, item, a) \
for (size_t UNIQ_T(i, q) = ({ \
- (kk) = ((a) && (a)->n_rrs > 0) ? (a)->items[0].rr : NULL; \
- (ifi) = ((a) && (a)->n_rrs > 0) ? (a)->items[0].ifindex : 0; \
- (fl) = ((a) && (a)->n_rrs > 0) ? (a)->items[0].flags : 0; \
+ (item) = dns_answer_isempty(a) ? NULL : (a)->items; \
0; \
}); \
- (a) && (UNIQ_T(i, q) < (a)->n_rrs); \
+ UNIQ_T(i, q) < dns_answer_size(a); \
UNIQ_T(i, q)++, \
- (kk) = ((UNIQ_T(i, q) < (a)->n_rrs) ? (a)->items[UNIQ_T(i, q)].rr : NULL), \
- (ifi) = ((UNIQ_T(i, q) < (a)->n_rrs) ? (a)->items[UNIQ_T(i, q)].ifindex : 0), \
- (fl) = ((UNIQ_T(i, q) < (a)->n_rrs) ? (a)->items[UNIQ_T(i, q)].flags : 0))
+ (item) = ((UNIQ_T(i, q) < dns_answer_size(a)) ? (a)->items + UNIQ_T(i, q) : NULL))
-#define DNS_ANSWER_FOREACH_FULL(kk, ifindex, flags, a) _DNS_ANSWER_FOREACH_FULL(UNIQ, kk, ifindex, flags, a)
+#define DNS_ANSWER_FOREACH_ITEM(item, a) _DNS_ANSWER_FOREACH_ITEM(UNIQ, item, a)
struct DnsCacheItem {
DnsCacheItemType type;
- DnsResourceKey *key;
- DnsResourceRecord *rr;
+ DnsResourceKey *key; /* The key for this item, i.e. the lookup key */
+ DnsResourceRecord *rr; /* The RR for this item, i.e. the lookup value for positive queries */
+ DnsAnswer *answer; /* The full validated answer, if this is an RRset acquired via a "primary" lookup */
+ DnsPacket *full_packet; /* The full packet this information was acquired with */
int rcode;
usec_t until;
bool authenticated:1;
bool shared_owner:1;
+ DnssecResult dnssec_result;
int ifindex;
int owner_family;
LIST_FIELDS(DnsCacheItem, by_key);
};
+/* Returns true if this is a cache item created as result of an explicit lookup, or created as "side-effect"
+ * of another request. "Primary" entries will carry the full answer data (with NSEC, …) that can aso prove
+ * wildcard expansion, non-existance and such, while entries that were created as "side-effect" just contain
+ * immediate RR data for the specified RR key, but nothing else. */
+#define DNS_CACHE_ITEM_IS_PRIMARY(item) (!!(item)->answer)
+
static const char *dns_cache_item_type_to_string(DnsCacheItem *item) {
assert(item);
dns_resource_record_unref(i->rr);
dns_resource_key_unref(i->key);
+ dns_answer_unref(i->answer);
+ dns_packet_unref(i->full_packet);
free(i);
}
DnsCache *c,
DnsCacheItem *i,
DnsResourceRecord *rr,
+ DnsAnswer *answer,
+ DnsPacket *full_packet,
bool authenticated,
bool shared_owner,
+ DnssecResult dnssec_result,
usec_t timestamp,
int ifindex,
int owner_family,
dns_resource_key_unref(i->key);
i->key = dns_resource_key_ref(rr->key);
- i->until = calculate_until(rr, (uint32_t) -1, timestamp, false);
+ dns_answer_ref(answer);
+ dns_answer_unref(i->answer);
+ i->answer = answer;
+
+ dns_packet_ref(full_packet);
+ dns_packet_unref(i->full_packet);
+ i->full_packet = full_packet;
+
+ i->until = calculate_until(rr, UINT32_MAX, timestamp, false);
i->authenticated = authenticated;
i->shared_owner = shared_owner;
+ i->dnssec_result = dnssec_result;
i->ifindex = ifindex;
static int dns_cache_put_positive(
DnsCache *c,
DnsResourceRecord *rr,
+ DnsAnswer *answer,
+ DnsPacket *full_packet,
bool authenticated,
bool shared_owner,
+ DnssecResult dnssec_result,
usec_t timestamp,
int ifindex,
int owner_family,
c,
existing,
rr,
+ answer,
+ full_packet,
authenticated,
shared_owner,
+ dnssec_result,
timestamp,
ifindex,
owner_family,
.type = DNS_CACHE_POSITIVE,
.key = dns_resource_key_ref(rr->key),
.rr = dns_resource_record_ref(rr),
+ .answer = dns_answer_ref(answer),
+ .full_packet = dns_packet_ref(full_packet),
.until = calculate_until(rr, (uint32_t) -1, timestamp, false),
.authenticated = authenticated,
.shared_owner = shared_owner,
+ .dnssec_result = dnssec_result,
.ifindex = ifindex,
.owner_family = owner_family,
.owner_address = *owner_address,
DnsCache *c,
DnsResourceKey *key,
int rcode,
+ DnsAnswer *answer,
+ DnsPacket *full_packet,
bool authenticated,
+ DnssecResult dnssec_result,
uint32_t nsec_ttl,
usec_t timestamp,
DnsResourceRecord *soa,
rcode == DNS_RCODE_SUCCESS ? DNS_CACHE_NODATA :
rcode == DNS_RCODE_NXDOMAIN ? DNS_CACHE_NXDOMAIN : DNS_CACHE_RCODE,
.authenticated = authenticated,
+ .dnssec_result = dnssec_result,
.owner_family = owner_family,
.owner_address = *owner_address,
.prioq_idx = PRIOQ_IDX_NULL,
.rcode = rcode,
+ .answer = dns_answer_ref(answer),
+ .full_packet = dns_packet_ref(full_packet),
};
i->until =
DnsResourceKey *key,
int rcode,
DnsAnswer *answer,
+ DnsPacket *full_packet,
bool authenticated,
+ DnssecResult dnssec_result,
uint32_t nsec_ttl,
- usec_t timestamp,
int owner_family,
const union in_addr_union *owner_address) {
- DnsResourceRecord *soa = NULL, *rr;
+ DnsResourceRecord *soa = NULL;
bool weird_rcode = false;
+ DnsAnswerItem *item;
DnsAnswerFlags flags;
unsigned cache_keys;
- int r, ifindex;
+ usec_t timestamp;
+ int r;
assert(c);
assert(owner_address);
log_debug("Not caching negative entry without a SOA record: %s",
dns_resource_key_to_string(key, key_str, sizeof key_str));
}
+
return 0;
}
/* Make some space for our new entries */
dns_cache_make_space(c, cache_keys);
- if (timestamp <= 0)
- timestamp = now(clock_boottime_or_monotonic());
+ timestamp = now(clock_boottime_or_monotonic());
/* Second, add in positive entries for all contained RRs */
- DNS_ANSWER_FOREACH_FULL(rr, ifindex, flags, answer) {
- if ((flags & DNS_ANSWER_CACHEABLE) == 0 ||
- !rr_eligible(rr))
+ DNS_ANSWER_FOREACH_ITEM(item, answer) {
+ int primary = false;
+
+ if (!FLAGS_SET(item->flags, DNS_ANSWER_CACHEABLE) ||
+ !rr_eligible(item->rr))
continue;
+ if (key) {
+ /* We store the auxiliary RRs and packet data in the cache only if they were in
+ * direct response to the original query. If we cache an RR we also received, and
+ * that is just auxiliary information we can't use the data, hence don't. */
+
+ primary = dns_resource_key_match_rr(key, item->rr, NULL);
+ if (primary < 0)
+ return primary;
+ if (primary == 0) {
+ primary = dns_resource_key_match_cname_or_dname(key, item->rr->key, NULL);
+ if (primary < 0)
+ return primary;
+ }
+ }
+
+ if (!primary) {
+ DnsCacheItem *first;
+
+ /* Do not replace existing cache items for primary lookups with non-primary
+ * data. After all the primary lookup data is a lot more useful. */
+ first = hashmap_get(c->by_key, item->rr->key);
+ if (first && DNS_CACHE_ITEM_IS_PRIMARY(first))
+ return 0;
+ }
+
r = dns_cache_put_positive(
c,
- rr,
- flags & DNS_ANSWER_AUTHENTICATED,
- flags & DNS_ANSWER_SHARED_OWNER,
+ item->rr,
+ primary ? answer : NULL,
+ primary ? full_packet : NULL,
+ item->flags & DNS_ANSWER_AUTHENTICATED,
+ item->flags & DNS_ANSWER_SHARED_OWNER,
+ dnssec_result,
timestamp,
- ifindex,
- owner_family, owner_address);
+ item->ifindex,
+ owner_family,
+ owner_address);
if (r < 0)
goto fail;
}
c,
key,
rcode,
+ answer,
+ full_packet,
authenticated,
+ dnssec_result,
nsec_ttl,
timestamp,
soa,
if (key)
dns_cache_remove_by_key(c, key);
- DNS_ANSWER_FOREACH_FLAGS(rr, flags, answer) {
- if ((flags & DNS_ANSWER_CACHEABLE) == 0)
+ DNS_ANSWER_FOREACH_ITEM(item, answer) {
+ if ((item->flags & DNS_ANSWER_CACHEABLE) == 0)
continue;
- dns_cache_remove_by_key(c, rr->key);
+ dns_cache_remove_by_key(c, item->rr->key);
}
return r;
return NULL;
}
-int dns_cache_lookup(DnsCache *c, DnsResourceKey *key, bool clamp_ttl, int *rcode, DnsAnswer **ret, bool *authenticated) {
+static int answer_add_clamp_ttl(
+ DnsAnswer **answer,
+ DnsResourceRecord *rr,
+ int ifindex,
+ DnsAnswerFlags answer_flags,
+ DnsResourceRecord *rrsig,
+ uint64_t query_flags,
+ usec_t until,
+ usec_t current) {
+
+ _cleanup_(dns_resource_record_unrefp) DnsResourceRecord *patched = NULL, *patched_rrsig = NULL;
+ int r;
+
+ assert(answer);
+ assert(rr);
+
+ if (FLAGS_SET(query_flags, SD_RESOLVED_CLAMP_TTL)) {
+ patched = dns_resource_record_ref(rr);
+
+ r = dns_resource_record_clamp_ttl(&patched, LESS_BY(until, current) / USEC_PER_SEC);
+ if (r < 0)
+ return r;
+
+ rr = patched;
+
+ if (rrsig) {
+ patched_rrsig = dns_resource_record_ref(rrsig);
+ r = dns_resource_record_clamp_ttl(&patched_rrsig, LESS_BY(until, current) / USEC_PER_SEC);
+ if (r < 0)
+ return r;
+
+ rrsig = patched_rrsig;
+ }
+ }
+
+ r = dns_answer_add_extend(answer, rr, ifindex, answer_flags, rrsig);
+ if (r < 0)
+ return r;
+
+ return 0;
+}
+
+int dns_cache_lookup(
+ DnsCache *c,
+ DnsResourceKey *key,
+ uint64_t query_flags,
+ int *ret_rcode,
+ DnsAnswer **ret_answer,
+ DnsPacket **ret_full_packet,
+ bool *ret_authenticated,
+ DnssecResult *ret_dnssec_result) {
+
+ _cleanup_(dns_packet_unrefp) DnsPacket *full_packet = NULL;
_cleanup_(dns_answer_unrefp) DnsAnswer *answer = NULL;
char key_str[DNS_RESOURCE_KEY_STRING_MAX];
unsigned n = 0;
bool have_authenticated = false, have_non_authenticated = false;
usec_t current;
int found_rcode = -1;
+ DnssecResult dnssec_result = -1;
+ int have_dnssec_result = -1;
assert(c);
assert(key);
- assert(rcode);
- assert(ret);
- assert(authenticated);
if (key->type == DNS_TYPE_ANY || key->class == DNS_CLASS_ANY) {
- /* If we have ANY lookups we don't use the cache, so
- * that the caller refreshes via the network. */
+ /* If we have ANY lookups we don't use the cache, so that the caller refreshes via the
+ * network. */
log_debug("Ignoring cache for ANY lookup: %s",
dns_resource_key_to_string(key, key_str, sizeof key_str));
-
- c->n_miss++;
-
- *ret = NULL;
- *rcode = DNS_RCODE_SUCCESS;
- *authenticated = false;
-
- return 0;
+ goto miss;
}
first = dns_cache_get_by_key_follow_cname_dname_nsec(c, key);
log_debug("Cache miss for %s",
dns_resource_key_to_string(key, key_str, sizeof key_str));
+ goto miss;
+ }
- c->n_miss++;
+ if (FLAGS_SET(query_flags, SD_RESOLVED_CLAMP_TTL))
+ current = now(clock_boottime_or_monotonic());
- *ret = NULL;
- *rcode = DNS_RCODE_SUCCESS;
- *authenticated = false;
+ LIST_FOREACH(by_key, j, first) {
+ /* If the caller doesn't allow us to answer questions from cache data learned from
+ * "side-effect", skip this entry. */
+ if (FLAGS_SET(query_flags, SD_RESOLVED_REQUIRE_PRIMARY) &&
+ !DNS_CACHE_ITEM_IS_PRIMARY(j)) {
+ log_debug("Primary answer was requested for cache lookup for %s, which we don't have.",
+ dns_resource_key_to_string(key, key_str, sizeof key_str));
- return 0;
- }
+ goto miss;
+ }
- LIST_FOREACH(by_key, j, first) {
- if (j->rr) {
+ if (j->type == DNS_CACHE_NXDOMAIN)
+ nxdomain = true;
+ else if (j->type == DNS_CACHE_RCODE)
+ found_rcode = j->rcode;
+ else if (j->rr) {
if (j->rr->key->type == DNS_TYPE_NSEC)
nsec = j;
n++;
- } else if (j->type == DNS_CACHE_NXDOMAIN)
- nxdomain = true;
- else if (j->type == DNS_CACHE_RCODE)
- found_rcode = j->rcode;
+ }
if (j->authenticated)
have_authenticated = true;
else
have_non_authenticated = true;
+
+ if (j->dnssec_result < 0) {
+ have_dnssec_result = false; /* an entry without dnssec result? then invalidate things for good */
+ dnssec_result = _DNSSEC_RESULT_INVALID;
+ } else if (have_dnssec_result < 0) {
+ have_dnssec_result = true; /* So far no result seen, let's pick this one up */
+ dnssec_result = j->dnssec_result;
+ } else if (have_dnssec_result > 0 && j->dnssec_result != dnssec_result) {
+ have_dnssec_result = false; /* conflicting result seen? then invalidate for good */
+ dnssec_result = _DNSSEC_RESULT_INVALID;
+ }
+
+ /* Append the answer RRs to our answer. Ideally we have the answer object, which we
+ * preferably use. But if the cached entry was generated as "side-effect" of a reply,
+ * i.e. from validated auxiliary records rather than from the main reply, then we use the
+ * individual RRs only instead. */
+ if (j->answer) {
+
+ /* Minor optimization, if the full answer object of this and the previous RR is the
+ * same, don't bother adding it again. Typically we store a full RRset here, hence
+ * that should be the case. */
+ if (!j->by_key_prev || j->answer != j->by_key_prev->answer) {
+ DnsAnswerItem *item;
+
+ DNS_ANSWER_FOREACH_ITEM(item, j->answer) {
+ r = answer_add_clamp_ttl(&answer, item->rr, item->ifindex, item->flags, item->rrsig, query_flags, j->until, current);
+ if (r < 0)
+ return r;
+ }
+ }
+
+ } else if (j->rr) {
+ r = answer_add_clamp_ttl(&answer, j->rr, j->ifindex, j->authenticated ? DNS_ANSWER_AUTHENTICATED : 0, NULL, query_flags, j->until, current);
+ if (r < 0)
+ return r;
+ }
+
+ /* We'll return any packet we have for this. Typically all cache entries for the same key
+ * should come from the same packet anyway, hence it doesn't really matter which packet we
+ * return here, they should all resolve to the same anyway. */
+ if (!full_packet && j->full_packet)
+ full_packet = dns_packet_ref(j->full_packet);
}
if (found_rcode >= 0) {
dns_rcode_to_string(found_rcode),
dns_resource_key_to_string(key, key_str, sizeof(key_str)));
- *ret = NULL;
- *rcode = found_rcode;
- *authenticated = false;
+ if (ret_rcode)
+ *ret_rcode = found_rcode;
+ if (ret_answer)
+ *ret_answer = TAKE_PTR(answer);
+ if (ret_full_packet)
+ *ret_full_packet = TAKE_PTR(full_packet);
+ if (ret_authenticated)
+ *ret_authenticated = false;
+ if (ret_dnssec_result)
+ *ret_dnssec_result = dnssec_result;
c->n_hit++;
return 1;
}
if (nsec && !IN_SET(key->type, DNS_TYPE_NSEC, DNS_TYPE_DS)) {
- /* Note that we won't derive information for DS RRs from an NSEC, because we only cache NSEC RRs from
- * the lower-zone of a zone cut, but the DS RRs are on the upper zone. */
+ /* Note that we won't derive information for DS RRs from an NSEC, because we only cache NSEC
+ * RRs from the lower-zone of a zone cut, but the DS RRs are on the upper zone. */
log_debug("NSEC NODATA cache hit for %s",
dns_resource_key_to_string(key, key_str, sizeof key_str));
- /* We only found an NSEC record that matches our name.
- * If it says the type doesn't exist report
- * NODATA. Otherwise report a cache miss. */
+ /* We only found an NSEC record that matches our name. If it says the type doesn't exist
+ * report NODATA. Otherwise report a cache miss. */
- *ret = NULL;
- *rcode = DNS_RCODE_SUCCESS;
- *authenticated = nsec->authenticated;
+ if (ret_rcode)
+ *ret_rcode = DNS_RCODE_SUCCESS;
+ if (ret_answer)
+ *ret_answer = TAKE_PTR(answer);
+ if (ret_full_packet)
+ *ret_full_packet = TAKE_PTR(full_packet);
+ if (ret_authenticated)
+ *ret_authenticated = nsec->authenticated;
+ if (ret_dnssec_result)
+ *ret_dnssec_result = nsec->dnssec_result;
if (!bitmap_isset(nsec->rr->nsec.types, key->type) &&
!bitmap_isset(nsec->rr->nsec.types, DNS_TYPE_CNAME) &&
if (n <= 0) {
c->n_hit++;
- *ret = NULL;
- *rcode = nxdomain ? DNS_RCODE_NXDOMAIN : DNS_RCODE_SUCCESS;
- *authenticated = have_authenticated && !have_non_authenticated;
- return 1;
- }
-
- answer = dns_answer_new(n);
- if (!answer)
- return -ENOMEM;
-
- if (clamp_ttl)
- current = now(clock_boottime_or_monotonic());
-
- LIST_FOREACH(by_key, j, first) {
- _cleanup_(dns_resource_record_unrefp) DnsResourceRecord *rr = NULL;
+ if (ret_rcode)
+ *ret_rcode = nxdomain ? DNS_RCODE_NXDOMAIN : DNS_RCODE_SUCCESS;
+ if (ret_answer)
+ *ret_answer = TAKE_PTR(answer);
+ if (ret_full_packet)
+ *ret_full_packet = TAKE_PTR(full_packet);
+ if (ret_authenticated)
+ *ret_authenticated = have_authenticated && !have_non_authenticated;
+ if (ret_dnssec_result)
+ *ret_dnssec_result = dnssec_result;
- if (!j->rr)
- continue;
-
- if (clamp_ttl) {
- rr = dns_resource_record_ref(j->rr);
-
- r = dns_resource_record_clamp_ttl(&rr, LESS_BY(j->until, current) / USEC_PER_SEC);
- if (r < 0)
- return r;
- }
-
- r = dns_answer_add(answer, rr ?: j->rr, j->ifindex, j->authenticated ? DNS_ANSWER_AUTHENTICATED : 0);
- if (r < 0)
- return r;
+ return 1;
}
c->n_hit++;
- *ret = answer;
- *rcode = DNS_RCODE_SUCCESS;
- *authenticated = have_authenticated && !have_non_authenticated;
- answer = NULL;
+ if (ret_rcode)
+ *ret_rcode = DNS_RCODE_SUCCESS;
+ if (ret_answer)
+ *ret_answer = TAKE_PTR(answer);
+ if (ret_full_packet)
+ *ret_full_packet = TAKE_PTR(full_packet);
+ if (ret_authenticated)
+ *ret_authenticated = have_authenticated && !have_non_authenticated;
+ if (ret_dnssec_result)
+ *ret_dnssec_result = dnssec_result;
return n;
+
+miss:
+ if (ret_rcode)
+ *ret_rcode = DNS_RCODE_SUCCESS;
+ if (ret_answer)
+ *ret_answer = NULL;
+ if (ret_full_packet)
+ *ret_full_packet = NULL;
+ if (ret_authenticated)
+ *ret_authenticated = false;
+ if (ret_dnssec_result)
+ *ret_dnssec_result = _DNSSEC_RESULT_INVALID;
+
+ c->n_miss++;
+ return 0;
}
int dns_cache_check_conflicts(DnsCache *cache, DnsResourceRecord *rr, int owner_family, const union in_addr_union *owner_address) {
#include "list.h"
#include "prioq.h"
#include "resolve-util.h"
+#include "resolved-dns-dnssec.h"
#include "time-util.h"
typedef struct DnsCache {
void dns_cache_flush(DnsCache *c);
void dns_cache_prune(DnsCache *c);
-int dns_cache_put(DnsCache *c, DnsCacheMode cache_mode, DnsResourceKey *key, int rcode, DnsAnswer *answer, bool authenticated, uint32_t nsec_ttl, usec_t timestamp, int owner_family, const union in_addr_union *owner_address);
-int dns_cache_lookup(DnsCache *c, DnsResourceKey *key, bool clamp_ttl, int *rcode, DnsAnswer **answer, bool *authenticated);
+int dns_cache_put(
+ DnsCache *c,
+ DnsCacheMode cache_mode,
+ DnsResourceKey *key,
+ int rcode,
+ DnsAnswer *answer,
+ DnsPacket *full_packet,
+ bool authenticated,
+ DnssecResult dnssec_result,
+ uint32_t nsec_ttl,
+ int owner_family,
+ const union in_addr_union *owner_address);
+
+int dns_cache_lookup(
+ DnsCache *c,
+ DnsResourceKey *key,
+ uint64_t query_flags,
+ int *ret_rcode,
+ DnsAnswer **ret_answer,
+ DnsPacket **ret_full_packet,
+ bool *ret_authenticated,
+ DnssecResult *ret_dnssec_result);
int dns_cache_check_conflicts(DnsCache *cache, DnsResourceRecord *rr, int owner_family, const union in_addr_union *owner_address);
return 0;
}
+int dns_packet_dup(DnsPacket **ret, DnsPacket *p) {
+ DnsPacket *c;
+ int r;
+
+ assert(ret);
+ assert(p);
+
+ r = dns_packet_validate(p);
+ if (r < 0)
+ return r;
+
+ c = malloc(ALIGN(sizeof(DnsPacket)) + p->size);
+ if (!c)
+ return -ENOMEM;
+
+ *c = (DnsPacket) {
+ .n_ref = 1,
+ .protocol = p->protocol,
+ .size = p->size,
+ .rindex = DNS_PACKET_HEADER_SIZE,
+ .allocated = p->size,
+ .max_size = p->max_size,
+ .opt_start = (size_t) -1,
+ .opt_size = (size_t) -1,
+ };
+
+ memcpy(DNS_PACKET_DATA(c), DNS_PACKET_DATA(p), p->size);
+
+ *ret = c;
+ return 0;
+}
+
DnsPacket *dns_packet_ref(DnsPacket *p) {
if (!p)
return 0;
}
-int dns_packet_append_answer(DnsPacket *p, DnsAnswer *a) {
+int dns_packet_append_answer(DnsPacket *p, DnsAnswer *a, unsigned *completed) {
DnsResourceRecord *rr;
DnsAnswerFlags flags;
int r;
r = dns_packet_append_rr(p, rr, flags, NULL, NULL);
if (r < 0)
return r;
+
+ if (completed)
+ (*completed)++;
}
return 0;
if (r < 0)
return r;
- *ret = unaligned_read_be16(d);
+ if (ret)
+ *ret = unaligned_read_be16(d);
return 0;
}
int dns_packet_read_name(
DnsPacket *p,
- char **_ret,
+ char **ret,
bool allow_compression,
- size_t *start) {
+ size_t *ret_start) {
_cleanup_(rewind_dns_packet) DnsPacketRewinder rewinder;
size_t after_rindex = 0, jump_barrier;
- _cleanup_free_ char *ret = NULL;
+ _cleanup_free_ char *name = NULL;
size_t n = 0, allocated = 0;
bool first = true;
int r;
assert(p);
- assert(_ret);
+
INIT_REWINDER(rewinder, p);
jump_barrier = p->rindex;
if (r < 0)
return r;
- if (!GREEDY_REALLOC(ret, allocated, n + !first + DNS_LABEL_ESCAPED_MAX))
+ if (!GREEDY_REALLOC(name, allocated, n + !first + DNS_LABEL_ESCAPED_MAX))
return -ENOMEM;
if (first)
first = false;
else
- ret[n++] = '.';
+ name[n++] = '.';
- r = dns_label_escape(label, c, ret + n, DNS_LABEL_ESCAPED_MAX);
+ r = dns_label_escape(label, c, name + n, DNS_LABEL_ESCAPED_MAX);
if (r < 0)
return r;
return -EBADMSG;
}
- if (!GREEDY_REALLOC(ret, allocated, n + 1))
+ if (!GREEDY_REALLOC(name, allocated, n + 1))
return -ENOMEM;
- ret[n] = 0;
+ name[n] = 0;
if (after_rindex != 0)
p->rindex= after_rindex;
- *_ret = TAKE_PTR(ret);
+ if (ret)
+ *ret = TAKE_PTR(name);
+ if (ret_start)
+ *ret_start = rewinder.saved_rindex;
- if (start)
- *start = rewinder.saved_rindex;
CANCEL_REWINDER(rewinder);
return 0;
return 0;
}
-int dns_packet_read_key(DnsPacket *p, DnsResourceKey **ret, bool *ret_cache_flush, size_t *start) {
+int dns_packet_read_key(
+ DnsPacket *p,
+ DnsResourceKey **ret,
+ bool *ret_cache_flush,
+ size_t *ret_start) {
+
_cleanup_(rewind_dns_packet) DnsPacketRewinder rewinder;
_cleanup_free_ char *name = NULL;
bool cache_flush = false;
uint16_t class, type;
- DnsResourceKey *key;
int r;
assert(p);
- assert(ret);
INIT_REWINDER(rewinder, p);
r = dns_packet_read_name(p, &name, true, NULL);
}
}
- key = dns_resource_key_new_consume(class, type, name);
- if (!key)
- return -ENOMEM;
+ if (ret) {
+ DnsResourceKey *key;
- name = NULL;
- *ret = key;
+ key = dns_resource_key_new_consume(class, type, name);
+ if (!key)
+ return -ENOMEM;
+
+ TAKE_PTR(name);
+ *ret = key;
+ }
if (ret_cache_flush)
*ret_cache_flush = cache_flush;
- if (start)
- *start = rewinder.saved_rindex;
- CANCEL_REWINDER(rewinder);
+ if (ret_start)
+ *ret_start = rewinder.saved_rindex;
+ CANCEL_REWINDER(rewinder);
return 0;
}
return m <= 9 && e <= 9 && (m > 0 || e == 0);
}
-int dns_packet_read_rr(DnsPacket *p, DnsResourceRecord **ret, bool *ret_cache_flush, size_t *start) {
+int dns_packet_read_rr(
+ DnsPacket *p,
+ DnsResourceRecord **ret,
+ bool *ret_cache_flush,
+ size_t *ret_start) {
+
_cleanup_(dns_resource_record_unrefp) DnsResourceRecord *rr = NULL;
_cleanup_(dns_resource_key_unrefp) DnsResourceKey *key = NULL;
_cleanup_(rewind_dns_packet) DnsPacketRewinder rewinder;
int r;
assert(p);
- assert(ret);
INIT_REWINDER(rewinder, p);
if (p->rindex != offset + rdlength)
return -EBADMSG;
- *ret = TAKE_PTR(rr);
-
+ if (ret)
+ *ret = TAKE_PTR(rr);
if (ret_cache_flush)
*ret_cache_flush = cache_flush;
- if (start)
- *start = rewinder.saved_rindex;
- CANCEL_REWINDER(rewinder);
+ if (ret_start)
+ *ret_start = rewinder.saved_rindex;
+ CANCEL_REWINDER(rewinder);
return 0;
}
for (i = 0; i < n; i++) {
_cleanup_(dns_resource_record_unrefp) DnsResourceRecord *rr = NULL;
bool cache_flush = false;
+ size_t start;
+
+ if (p->rindex == p->size) {
+ /* If we reached the end of the packet already, but there are still more RRs
+ * declared, then that's a corrupt packet. Let's accept the packet anyway, since it's
+ * apparently a common bug in routers. Let's however suppress OPT support in this
+ * case, so that we force the rest of the logic into lowest DNS baseline support. Or
+ * to say this differently: if the DNS server doesn't even get the RR counts right,
+ * it's highly unlikely it gets EDNS right. */
+ log_debug("More resource records declared in packet than included, suppressing OPT.");
+ bad_opt = true;
+ break;
+ }
- r = dns_packet_read_rr(p, &rr, &cache_flush, NULL);
+ r = dns_packet_read_rr(p, &rr, &cache_flush, &start);
if (r < 0)
return r;
}
p->opt = dns_resource_record_ref(rr);
+ p->opt_start = start;
+ assert(p->rindex >= start);
+ p->opt_size = p->rindex - start;
} else {
- /* According to RFC 4795, section 2.9. only the RRs from the Answer section
- * shall be cached. Hence mark only those RRs as cacheable by default, but
- * not the ones from the Additional or Authority sections. */
- DnsAnswerFlags flags =
- (i < DNS_PACKET_ANCOUNT(p) ? DNS_ANSWER_CACHEABLE : 0) |
- (p->protocol == DNS_PROTOCOL_MDNS && !cache_flush ? DNS_ANSWER_SHARED_OWNER : 0);
-
- r = dns_answer_add(answer, rr, p->ifindex, flags);
+ DnsAnswerFlags flags = 0;
+
+ if (p->protocol == DNS_PROTOCOL_MDNS && !cache_flush)
+ flags |= DNS_ANSWER_SHARED_OWNER;
+
+ /* According to RFC 4795, section 2.9. only the RRs from the Answer section shall be
+ * cached. Hence mark only those RRs as cacheable by default, but not the ones from
+ * the Additional or Authority sections. */
+ if (i < DNS_PACKET_ANCOUNT(p))
+ flags |= DNS_ANSWER_CACHEABLE|DNS_ANSWER_SECTION_ANSWER;
+ else if (i < DNS_PACKET_ANCOUNT(p) + DNS_PACKET_NSCOUNT(p))
+ flags |= DNS_ANSWER_SECTION_AUTHORITY;
+ else
+ flags |= DNS_ANSWER_SECTION_ADDITIONAL;
+
+ r = dns_answer_add(answer, rr, p->ifindex, flags, NULL);
if (r < 0)
return r;
}
previous = dns_resource_record_ref(rr);
}
- if (bad_opt)
+ if (bad_opt) {
p->opt = dns_resource_record_unref(p->opt);
+ p->opt_start = p->opt_size = SIZE_MAX;
+ }
*ret_answer = TAKE_PTR(answer);
if (r < 0)
return r;
+ if (p->rindex < p->size) {
+ log_debug("Trailing garbage in packet, suppressing OPT.");
+ p->opt = dns_resource_record_unref(p->opt);
+ p->opt_start = p->opt_size = SIZE_MAX;
+ }
+
p->question = TAKE_PTR(question);
p->answer = TAKE_PTR(answer);
return dns_resource_key_equal(p->question->keys[0], key);
}
+int dns_packet_patch_max_udp_size(DnsPacket *p, uint16_t max_udp_size) {
+ assert(p);
+ assert(max_udp_size >= DNS_PACKET_UNICAST_SIZE_MAX);
+
+ if (p->opt_start == (size_t) -1) /* No OPT section, nothing to patch */
+ return 0;
+
+ assert(p->opt_size != (size_t) -1);
+ assert(p->opt_size >= 5);
+
+ unaligned_write_be16(DNS_PACKET_DATA(p) + p->opt_start + 3, max_udp_size);
+ return 1;
+}
+
+static int patch_rr(DnsPacket *p, usec_t age) {
+ _cleanup_(rewind_dns_packet) DnsPacketRewinder rewinder;
+ size_t ttl_index;
+ uint32_t ttl;
+ uint16_t type, rdlength;
+ int r;
+
+ INIT_REWINDER(rewinder, p);
+
+ /* Patches the RR at the current rindex, subtracts the specified time from the TTL */
+
+ r = dns_packet_read_name(p, NULL, true, NULL);
+ if (r < 0)
+ return r;
+
+ r = dns_packet_read_uint16(p, &type, NULL);
+ if (r < 0)
+ return r;
+
+ r = dns_packet_read_uint16(p, NULL, NULL);
+ if (r < 0)
+ return r;
+
+ r = dns_packet_read_uint32(p, &ttl, &ttl_index);
+ if (r < 0)
+ return r;
+
+ if (type != DNS_TYPE_OPT) { /* The TTL of the OPT field is not actually a TTL, skip it */
+ ttl = LESS_BY(ttl * USEC_PER_SEC, age) / USEC_PER_SEC;
+ unaligned_write_be32(DNS_PACKET_DATA(p) + ttl_index, ttl);
+ }
+
+ r = dns_packet_read_uint16(p, &rdlength, NULL);
+ if (r < 0)
+ return r;
+
+ r = dns_packet_read(p, rdlength, NULL, NULL);
+ if (r < 0)
+ return r;
+
+ CANCEL_REWINDER(rewinder);
+ return 0;
+}
+
+int dns_packet_patch_ttls(DnsPacket *p, usec_t timestamp) {
+ _cleanup_(rewind_dns_packet) DnsPacketRewinder rewinder = {};
+ unsigned i, n;
+ usec_t k;
+ int r;
+
+ assert(p);
+ assert(timestamp_is_set(timestamp));
+
+ /* Adjusts all TTLs in the packet by subtracting the time difference between now and the specified timestamp */
+
+ k = now(clock_boottime_or_monotonic());
+ assert(k >= timestamp);
+ k -= timestamp;
+
+ INIT_REWINDER(rewinder, p);
+
+ dns_packet_rewind(p, DNS_PACKET_HEADER_SIZE);
+
+ n = DNS_PACKET_QDCOUNT(p);
+ for (i = 0; i < n; i++) {
+ r = dns_packet_read_key(p, NULL, NULL, NULL);
+ if (r < 0)
+ return r;
+ }
+
+ n = DNS_PACKET_RRCOUNT(p);
+ for (i = 0; i < n; i++) {
+
+ /* DNS servers suck, hence the RR count is in many servers off. If we reached the end
+ * prematurely, accept that, exit early */
+ if (p->rindex == p->size)
+ break;
+
+ r = patch_rr(p, k);
+ if (r < 0)
+ return r;
+ }
+
+ return 0;
+}
+
static void dns_packet_hash_func(const DnsPacket *s, struct siphash *state) {
assert(s);
DEFINE_HASH_OPS(dns_packet_hash_ops, DnsPacket, dns_packet_hash_func, dns_packet_compare_func);
+bool dns_packet_equal(const DnsPacket *a, const DnsPacket *b) {
+ return dns_packet_compare_func(a, b) == 0;
+}
+
static const char* const dns_rcode_table[_DNS_RCODE_MAX_DEFINED] = {
[DNS_RCODE_SUCCESS] = "SUCCESS",
[DNS_RCODE_FORMERR] = "FORMERR",
bool canonical_form:1;
};
-static inline uint8_t* DNS_PACKET_DATA(DnsPacket *p) {
+static inline uint8_t* DNS_PACKET_DATA(const DnsPacket *p) {
if (_unlikely_(!p))
return NULL;
int dns_packet_new(DnsPacket **p, DnsProtocol protocol, size_t min_alloc_dsize, size_t max_size);
int dns_packet_new_query(DnsPacket **p, DnsProtocol protocol, size_t min_alloc_dsize, bool dnssec_checking_disabled);
+int dns_packet_dup(DnsPacket **ret, DnsPacket *p);
+
void dns_packet_set_flags(DnsPacket *p, bool dnssec_checking_disabled, bool truncated);
DnsPacket *dns_packet_ref(DnsPacket *p);
int dns_packet_append_rr(DnsPacket *p, const DnsResourceRecord *rr, const DnsAnswerFlags flags, size_t *start, size_t *rdata_start);
int dns_packet_append_opt(DnsPacket *p, uint16_t max_udp_size, bool edns0_do, bool include_rfc6975, int rcode, size_t *start);
int dns_packet_append_question(DnsPacket *p, DnsQuestion *q);
-int dns_packet_append_answer(DnsPacket *p, DnsAnswer *a);
+int dns_packet_append_answer(DnsPacket *p, DnsAnswer *a, unsigned *completed);
+
+int dns_packet_patch_max_udp_size(DnsPacket *p, uint16_t max_udp_size);
+int dns_packet_patch_ttls(DnsPacket *p, usec_t timestamp);
void dns_packet_truncate(DnsPacket *p, size_t sz);
int dns_packet_truncate_opt(DnsPacket *p);
int dns_packet_skip_question(DnsPacket *p);
int dns_packet_extract(DnsPacket *p);
+bool dns_packet_equal(const DnsPacket *a, const DnsPacket *b);
+
/* https://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml#dns-parameters-6 */
enum {
DNS_RCODE_SUCCESS = 0,
return 1;
}
-static int dns_query_candidate_add_transaction(DnsQueryCandidate *c, DnsResourceKey *key) {
+static int dns_query_candidate_add_transaction(
+ DnsQueryCandidate *c,
+ DnsResourceKey *key,
+ DnsPacket *bypass) {
+
_cleanup_(dns_transaction_gcp) DnsTransaction *t = NULL;
int r;
assert(c);
- assert(key);
- t = dns_scope_find_transaction(c->scope, key, true);
- if (!t) {
- r = dns_transaction_new(&t, c->scope, key);
+ if (key) {
+ /* Regular lookup with a resource key */
+ assert(!bypass);
+
+ t = dns_scope_find_transaction(c->scope, key, c->query->flags);
+ if (!t) {
+ r = dns_transaction_new(&t, c->scope, key, NULL, c->query->flags);
+ if (r < 0)
+ return r;
+ } else if (set_contains(c->transactions, t))
+ return 0;
+ } else {
+ /* "Bypass" lookup with a query packet */
+ assert(bypass);
+
+ r = dns_transaction_new(&t, c->scope, NULL, bypass, c->query->flags);
if (r < 0)
return r;
- } else if (set_contains(c->transactions, t))
- return 0;
+ }
r = set_ensure_allocated(&t->notify_query_candidates_done, NULL);
if (r < 0)
return r;
}
- t->clamp_ttl = c->query->clamp_ttl;
TAKE_PTR(t);
return 1;
}
dns_query_candidate_stop(c);
+ if (c->query->question_bypass) {
+ /* If this is a bypass query, then pass the original query packet along to the transaction */
+
+ assert(dns_question_size(c->query->question_bypass->question) == 1);
+
+ if (!dns_scope_good_key(c->scope, c->query->question_bypass->question->keys[0]))
+ return 0;
+
+ r = dns_query_candidate_add_transaction(c, NULL, c->query->question_bypass);
+ if (r < 0)
+ goto fail;
+
+ return 1;
+ }
+
question = dns_query_question_for_protocol(c->query, c->scope->protocol);
/* Create one transaction per question key */
if (!dns_scope_good_key(c->scope, qkey))
continue;
- r = dns_query_candidate_add_transaction(c, qkey);
+ r = dns_query_candidate_add_transaction(c, qkey, NULL);
if (r < 0)
goto fail;
q->answer_protocol = _DNS_PROTOCOL_INVALID;
q->answer_family = AF_UNSPEC;
q->answer_search_domain = dns_search_domain_unref(q->answer_search_domain);
+ q->answer_full_packet = dns_packet_unref(q->answer_full_packet);
}
DnsQuery *dns_query_free(DnsQuery *q) {
dns_question_unref(q->question_idna);
dns_question_unref(q->question_utf8);
+ dns_packet_unref(q->question_bypass);
dns_query_reset_answer(q);
varlink_unref(q->varlink_request);
}
- dns_packet_unref(q->request_dns_packet);
- dns_packet_unref(q->reply_dns_packet);
+ if (q->request_packet)
+ hashmap_remove_value(q->stub_listener_extra ?
+ q->stub_listener_extra->queries_by_packet :
+ q->manager->stub_queries_by_packet,
+ q->request_packet,
+ q);
+
+ dns_packet_unref(q->request_packet);
+ dns_answer_unref(q->reply_answer);
+ dns_answer_unref(q->reply_authoritative);
+ dns_answer_unref(q->reply_additional);
- if (q->request_dns_stream) {
+ if (q->request_stream) {
/* Detach the stream from our query, in case something else keeps a reference to it. */
- (void) set_remove(q->request_dns_stream->queries, q);
- q->request_dns_stream = dns_stream_unref(q->request_dns_stream);
+ (void) set_remove(q->request_stream->queries, q);
+ q->request_stream = dns_stream_unref(q->request_stream);
}
free(q->request_address_string);
DnsQuery **ret,
DnsQuestion *question_utf8,
DnsQuestion *question_idna,
+ DnsPacket *question_bypass,
int ifindex,
uint64_t flags) {
_cleanup_(dns_query_freep) DnsQuery *q = NULL;
+ char key_str[DNS_RESOURCE_KEY_STRING_MAX];
DnsResourceKey *key;
- bool good = false;
int r;
- char key_str[DNS_RESOURCE_KEY_STRING_MAX];
assert(m);
- if (dns_question_size(question_utf8) > 0) {
- r = dns_question_is_valid_for_query(question_utf8);
- if (r < 0)
- return r;
- if (r == 0)
+ if (question_bypass) {
+ /* It's either a "bypass" query, or a regular one, but can't be both. */
+ if (question_utf8 || question_idna)
return -EINVAL;
- good = true;
- }
+ } else {
+ bool good = false;
- /* If the IDNA and UTF8 questions are the same, merge their references */
- r = dns_question_is_equal(question_idna, question_utf8);
- if (r < 0)
- return r;
- if (r > 0)
- question_idna = question_utf8;
- else {
- if (dns_question_size(question_idna) > 0) {
- r = dns_question_is_valid_for_query(question_idna);
+ if (dns_question_size(question_utf8) > 0) {
+ r = dns_question_is_valid_for_query(question_utf8);
if (r < 0)
return r;
if (r == 0)
good = true;
}
- }
- if (!good) /* don't allow empty queries */
- return -EINVAL;
+ /* If the IDNA and UTF8 questions are the same, merge their references */
+ r = dns_question_is_equal(question_idna, question_utf8);
+ if (r < 0)
+ return r;
+ if (r > 0)
+ question_idna = question_utf8;
+ else {
+ if (dns_question_size(question_idna) > 0) {
+ r = dns_question_is_valid_for_query(question_idna);
+ if (r < 0)
+ return r;
+ if (r == 0)
+ return -EINVAL;
+
+ good = true;
+ }
+ }
+
+ if (!good) /* don't allow empty queries */
+ return -EINVAL;
+ }
if (m->n_dns_queries >= QUERIES_MAX)
return -EBUSY;
*q = (DnsQuery) {
.question_utf8 = dns_question_ref(question_utf8),
.question_idna = dns_question_ref(question_idna),
+ .question_bypass = dns_packet_ref(question_bypass),
.ifindex = ifindex,
.flags = flags,
.answer_dnssec_result = _DNSSEC_RESULT_INVALID,
.answer_family = AF_UNSPEC,
};
- /* First dump UTF8 question */
- DNS_QUESTION_FOREACH(key, question_utf8)
- log_debug("Looking up RR for %s.",
- dns_resource_key_to_string(key, key_str, sizeof key_str));
-
- /* And then dump the IDNA question, but only what hasn't been dumped already through the UTF8 question. */
- DNS_QUESTION_FOREACH(key, question_idna) {
- r = dns_question_contains(question_utf8, key);
- if (r < 0)
- return r;
- if (r > 0)
- continue;
+ if (question_bypass) {
+ DNS_QUESTION_FOREACH(key, question_bypass->question)
+ log_debug("Looking up bypass packet for %s.",
+ dns_resource_key_to_string(key, key_str, sizeof key_str));
+ } else {
+ /* First dump UTF8 question */
+ DNS_QUESTION_FOREACH(key, question_utf8)
+ log_debug("Looking up RR for %s.",
+ dns_resource_key_to_string(key, key_str, sizeof key_str));
+
+ /* And then dump the IDNA question, but only what hasn't been dumped already through the UTF8 question. */
+ DNS_QUESTION_FOREACH(key, question_idna) {
+ r = dns_question_contains(question_utf8, key);
+ if (r < 0)
+ return r;
+ if (r > 0)
+ continue;
- log_debug("Looking up IDNA RR for %s.",
- dns_resource_key_to_string(key, key_str, sizeof key_str));
+ log_debug("Looking up IDNA RR for %s.",
+ dns_resource_key_to_string(key, key_str, sizeof key_str));
+ }
}
LIST_PREPEND(queries, m->dns_queries, q);
if (ret)
*ret = q;
- q = NULL;
+ TAKE_PTR(q);
return 0;
}
DNS_TRANSACTION_NOT_FOUND))
return 0;
+ if (FLAGS_SET(q->flags, SD_RESOLVED_NO_SYNTHESIZE))
+ return 0;
+
r = dns_synthesize_answer(
q->manager,
- q->question_utf8,
+ q->question_bypass ? q->question_bypass->question : q->question_utf8,
q->ifindex,
&answer);
if (r == -ENXIO) {
/* Looks in /etc/hosts for matching entries. Note that this is done *before* the normal lookup is
* done. The data from /etc/hosts hence takes precedence over the network. */
+ if (FLAGS_SET(q->flags, SD_RESOLVED_NO_SYNTHESIZE))
+ return 0;
+
r = manager_etc_hosts_lookup(
q->manager,
- q->question_utf8,
+ q->question_bypass ? q->question_bypass->question : q->question_utf8,
&answer);
if (r <= 0)
return r;
q->answer_dnssec_result = _DNSSEC_RESULT_INVALID;
q->answer_authenticated = false;
q->answer_errno = c->error_code;
+ q->answer_full_packet = dns_packet_unref(q->answer_full_packet);
}
SET_FOREACH(t, c->transactions) {
switch (t->state) {
case DNS_TRANSACTION_SUCCESS: {
- /* We found a successfully reply, merge it into the answer */
- r = dns_answer_extend(&q->answer, t->answer);
- if (r < 0)
- goto fail;
+ /* We found a successful reply, merge it into the answer */
+
+ if (state == DNS_TRANSACTION_SUCCESS) {
+ r = dns_answer_extend(&q->answer, t->answer);
+ if (r < 0)
+ goto fail;
+ } else {
+ /* Override non-successful previous answers */
+ dns_answer_unref(q->answer);
+ q->answer = dns_answer_ref(t->answer);
+ }
q->answer_rcode = t->answer_rcode;
q->answer_errno = 0;
+ dns_packet_unref(q->answer_full_packet);
+ q->answer_full_packet = dns_packet_ref(t->received);
+
if (t->answer_authenticated) {
has_authenticated = true;
dnssec_result_authenticated = t->answer_dnssec_result;
if (q->answer_authenticated && !t->answer_authenticated)
continue;
- q->answer = dns_answer_unref(q->answer);
+ dns_answer_unref(q->answer);
+ q->answer = dns_answer_ref(t->answer);
q->answer_rcode = t->answer_rcode;
q->answer_dnssec_result = t->answer_dnssec_result;
q->answer_authenticated = t->answer_authenticated;
q->answer_errno = t->answer_errno;
+ dns_packet_unref(q->answer_full_packet);
+ q->answer_full_packet = dns_packet_ref(t->received);
state = t->state;
break;
DnsQuestion* dns_query_question_for_protocol(DnsQuery *q, DnsProtocol protocol) {
assert(q);
+ if (q->question_bypass)
+ return q->question_bypass->question;
+
switch (protocol) {
case DNS_PROTOCOL_DNS:
/* Returns a somewhat useful human-readable lookup key string for this query */
+ if (q->question_bypass)
+ return dns_question_first_name(q->question_bypass->question);
+
if (q->request_address_string)
return q->request_address_string;
DnsQuestion *question_idna;
DnsQuestion *question_utf8;
+ /* If this is not a question by ourselves, but a "bypass" request, we propagate the original packet
+ * here, and use that instead. */
+ DnsPacket *question_bypass;
+
uint64_t flags;
int ifindex;
- /* If true, the RR TTLs of the answer will be clamped by their current left validity in the cache */
- bool clamp_ttl;
-
DnsTransactionState state;
unsigned n_cname_redirects;
DnsSearchDomain *answer_search_domain;
int answer_errno; /* if state is DNS_TRANSACTION_ERRNO */
bool previous_redirect_unauthenticated;
+ DnsPacket *answer_full_packet;
/* Bus + Varlink client information */
sd_bus_message *bus_request;
char *request_address_string;
/* DNS stub information */
- DnsPacket *request_dns_packet;
- DnsStream *request_dns_stream;
- DnsPacket *reply_dns_packet;
+ DnsPacket *request_packet;
+ DnsStream *request_stream;
+ DnsAnswer *reply_answer;
+ DnsAnswer *reply_authoritative;
+ DnsAnswer *reply_additional;
DnsStubListenerExtra *stub_listener_extra;
/* Completion callback */
void dns_query_candidate_notify(DnsQueryCandidate *c);
-int dns_query_new(Manager *m, DnsQuery **q, DnsQuestion *question_utf8, DnsQuestion *question_idna, int family, uint64_t flags);
+int dns_query_new(Manager *m, DnsQuery **q, DnsQuestion *question_utf8, DnsQuestion *question_idna, DnsPacket *question_bypass, int family, uint64_t flags);
DnsQuery *dns_query_free(DnsQuery *q);
int dns_query_make_auxiliary(DnsQuery *q, DnsQuery *auxiliary_for);
return 1;
}
+bool dns_resource_record_is_link_local_address(DnsResourceRecord *rr) {
+
+ if (rr->key->class != DNS_CLASS_IN)
+ return false;
+
+ if (rr->key->type == DNS_TYPE_A)
+ return in4_addr_is_link_local(&rr->a.in_addr);
+
+ if (rr->key->type == DNS_TYPE_AAAA)
+ return IN6_IS_ADDR_LINKLOCAL(&rr->aaaa.in6_addr);
+
+ return false;
+}
+
DnsTxtItem *dns_txt_item_free_all(DnsTxtItem *i) {
DnsTxtItem *n;
int dns_resource_record_clamp_ttl(DnsResourceRecord **rr, uint32_t max_ttl);
+bool dns_resource_record_is_link_local_address(DnsResourceRecord *rr);
+
DnsTxtItem *dns_txt_item_free_all(DnsTxtItem *i);
bool dns_txt_item_equal(DnsTxtItem *a, DnsTxtItem *b);
DnsTxtItem *dns_txt_item_copy(DnsTxtItem *i);
return n;
}
-void dns_scope_next_dns_server(DnsScope *s) {
+void dns_scope_next_dns_server(DnsScope *s, DnsServer *if_current) {
assert(s);
if (s->protocol != DNS_PROTOCOL_DNS)
return;
+ /* Changes to the next DNS server in the list. If 'if_current' is passed will do so only if the
+ * current DNS server still matches it. */
+
if (s->link)
- link_next_dns_server(s->link);
+ link_next_dns_server(s->link, if_current);
else
- manager_next_dns_server(s->manager);
+ manager_next_dns_server(s->manager, if_current);
}
void dns_scope_packet_received(DnsScope *s, usec_t rtt) {
return dns_scope_socket(s, SOCK_STREAM, family, address, server, port, ret_socket_address);
}
-static DnsScopeMatch accept_link_local_reverse_lookups(const char *domain) {
+static DnsScopeMatch match_link_local_reverse_lookups(const char *domain) {
assert(domain);
if (dns_name_endswith(domain, "254.169.in-addr.arpa") > 0)
return DNS_SCOPE_YES_BASE + n_best;
}
- /* See if this scope is suitable as default route. */
- if (!dns_scope_is_default_route(s))
+ /* Exclude link-local IP ranges */
+ if (match_link_local_reverse_lookups(domain) >= DNS_SCOPE_YES_BASE ||
+ /* If networks use .local in their private setups, they are supposed to also add .local
+ * to their search domains, which we already checked above. Otherwise, we consider .local
+ * specific to mDNS and won't send such queries ordinary DNS servers. */
+ dns_name_endswith(domain, "local") > 0)
return DNS_SCOPE_NO;
- /* Exclude link-local IP ranges */
- if (dns_name_endswith(domain, "254.169.in-addr.arpa") == 0 &&
- dns_name_endswith(domain, "8.e.f.ip6.arpa") == 0 &&
- dns_name_endswith(domain, "9.e.f.ip6.arpa") == 0 &&
- dns_name_endswith(domain, "a.e.f.ip6.arpa") == 0 &&
- dns_name_endswith(domain, "b.e.f.ip6.arpa") == 0 &&
- /* If networks use .local in their private setups, they are supposed to also add .local to their search
- * domains, which we already checked above. Otherwise, we consider .local specific to mDNS and won't
- * send such queries ordinary DNS servers. */
- dns_name_endswith(domain, "local") == 0)
- return DNS_SCOPE_MAYBE;
+ /* If there was no match at all, then see if this scope is suitable as default route. */
+ if (!dns_scope_is_default_route(s))
+ return DNS_SCOPE_NO;
- return DNS_SCOPE_NO;
+ return DNS_SCOPE_MAYBE;
}
case DNS_PROTOCOL_MDNS: {
DnsScopeMatch m;
- m = accept_link_local_reverse_lookups(domain);
+ m = match_link_local_reverse_lookups(domain);
if (m >= 0)
return m;
case DNS_PROTOCOL_LLMNR: {
DnsScopeMatch m;
- m = accept_link_local_reverse_lookups(domain);
+ m = match_link_local_reverse_lookups(domain);
if (m >= 0)
return m;
assert(s);
assert(key);
- /* Check if it makes sense to resolve the specified key on
- * this scope. Note that this call assumes as fully qualified
- * name, i.e. the search suffixes already appended. */
+ /* Check if it makes sense to resolve the specified key on this scope. Note that this call assumes a
+ * fully qualified name, i.e. the search suffixes already appended. */
- if (key->class != DNS_CLASS_IN)
+ if (!IN_SET(key->class, DNS_CLASS_IN, DNS_CLASS_ANY))
return false;
if (s->protocol == DNS_PROTOCOL_DNS) {
return !dns_name_is_root(name);
}
- /* On mDNS and LLMNR, send A and AAAA queries only on the
- * respective scopes */
+ /* Never route DNSSEC RR queries to LLMNR/mDNS scopes */
+ if (dns_type_is_dnssec(key->type))
+ return false;
+
+ /* On mDNS and LLMNR, send A and AAAA queries only on the respective scopes */
key_family = dns_type_to_af(key->type);
if (key_family < 0)
DnsPacket **ret) {
_cleanup_(dns_packet_unrefp) DnsPacket *p = NULL;
+ unsigned n_answer = 0, n_soa = 0;
int r;
assert(s);
return r;
DNS_PACKET_HEADER(p)->qdcount = htobe16(dns_question_size(q));
- r = dns_packet_append_answer(p, answer);
+ r = dns_packet_append_answer(p, answer, &n_answer);
if (r < 0)
return r;
- DNS_PACKET_HEADER(p)->ancount = htobe16(dns_answer_size(answer));
+ DNS_PACKET_HEADER(p)->ancount = htobe16(n_answer);
- r = dns_packet_append_answer(p, soa);
+ r = dns_packet_append_answer(p, soa, &n_soa);
if (r < 0)
return r;
- DNS_PACKET_HEADER(p)->arcount = htobe16(dns_answer_size(soa));
+ DNS_PACKET_HEADER(p)->arcount = htobe16(n_soa);
*ret = TAKE_PTR(p);
}
}
-DnsTransaction *dns_scope_find_transaction(DnsScope *scope, DnsResourceKey *key, bool cache_ok) {
- DnsTransaction *t;
+DnsTransaction *dns_scope_find_transaction(
+ DnsScope *scope,
+ DnsResourceKey *key,
+ uint64_t query_flags) {
+
+ DnsTransaction *first, *t;
assert(scope);
assert(key);
- /* Try to find an ongoing transaction that is a equal to the
- * specified question */
- t = hashmap_get(scope->transactions_by_key, key);
- if (!t)
- return NULL;
+ /* Iterate through the list of transactions with a matching key */
+ first = hashmap_get(scope->transactions_by_key, key);
+ LIST_FOREACH(transactions_by_key, t, first) {
+
+ /* These four flags must match exactly: we cannot use a validated response for a
+ * non-validating client, and we cannot use a non-validated response for a validating
+ * client. Similar, if the sources don't match things aren't usable either. */
+ if (((query_flags ^ t->query_flags) &
+ (SD_RESOLVED_NO_VALIDATE|
+ SD_RESOLVED_NO_ZONE|
+ SD_RESOLVED_NO_TRUST_ANCHOR|
+ SD_RESOLVED_NO_NETWORK)) != 0)
+ continue;
- /* Refuse reusing transactions that completed based on cached
- * data instead of a real packet, if that's requested. */
- if (!cache_ok &&
- IN_SET(t->state, DNS_TRANSACTION_SUCCESS, DNS_TRANSACTION_RCODE_FAILURE) &&
- t->answer_source != DNS_TRANSACTION_NETWORK)
- return NULL;
+ /* We can reuse a primary query if a regular one is requested, but not vice versa */
+ if ((query_flags & SD_RESOLVED_REQUIRE_PRIMARY) &&
+ !(t->query_flags & SD_RESOLVED_REQUIRE_PRIMARY))
+ continue;
+
+ /* Don't reuse a transaction that allowed caching when we got told not to use it */
+ if ((query_flags & SD_RESOLVED_NO_CACHE) &&
+ !(t->query_flags & SD_RESOLVED_NO_CACHE))
+ continue;
+
+ /* If we are are asked to clamp ttls an the existing transaction doesn't do it, we can't
+ * reuse */
+ if ((query_flags & SD_RESOLVED_CLAMP_TTL) &&
+ !(t->query_flags & SD_RESOLVED_CLAMP_TTL))
+ continue;
+
+ return t;
+ }
- return t;
+ return NULL;
}
static int dns_scope_make_conflict_packet(
return;
}
- if (manager_our_packet(scope->manager, p))
+ if (manager_packet_from_local_address(scope->manager, p))
return;
r = dns_packet_extract(p);
else
flags = goodbye ? (DNS_ANSWER_GOODBYE|DNS_ANSWER_CACHE_FLUSH) : DNS_ANSWER_CACHE_FLUSH;
- r = dns_answer_add(answer, i->rr, 0 , flags);
+ r = dns_answer_add(answer, i->rr, 0, flags, NULL);
if (r < 0)
return log_debug_errno(r, "Failed to add RR to announce: %m");
}
if (r < 0)
log_warning_errno(r, "Failed to add DNS-SD PTR record to MDNS zone: %m");
- r = dns_answer_add(answer, rr, 0 , 0);
+ r = dns_answer_add(answer, rr, 0, 0, NULL);
if (r < 0)
return log_debug_errno(r, "Failed to add RR to announce: %m");
}
LIST_HEAD(DnsQueryCandidate, query_candidates);
- /* Note that we keep track of ongoing transactions in two
- * ways: once in a hashmap, indexed by the rr key, and once in
- * a linked list. We use the hashmap to quickly find
- * transactions we can reuse for a key. But note that there
- * might be multiple transactions for the same key (because
- * the zone probing can't reuse a transaction answered from
- * the zone or the cache), and the hashmap only tracks the
- * most recent entry. */
+ /* Note that we keep track of ongoing transactions in two ways: once in a hashmap, indexed by the rr
+ * key, and once in a linked list. We use the hashmap to quickly find transactions we can reuse for a
+ * key. But note that there might be multiple transactions for the same key (because the associated
+ * query flags might differ in incompatible ways: e.g. we may not reuse a non-validating transaction
+ * as validating. Hence we maintain a per-key list of transactions, which we iterate through to find
+ * one we can reuse with matching flags. */
Hashmap *transactions_by_key;
LIST_HEAD(DnsTransaction, transactions);
DnsServer *dns_scope_get_dns_server(DnsScope *s);
unsigned dns_scope_get_n_dns_servers(DnsScope *s);
-void dns_scope_next_dns_server(DnsScope *s);
+void dns_scope_next_dns_server(DnsScope *s, DnsServer *if_current);
int dns_scope_llmnr_membership(DnsScope *s, bool b);
int dns_scope_mdns_membership(DnsScope *s, bool b);
int dns_scope_make_reply_packet(DnsScope *s, uint16_t id, int rcode, DnsQuestion *q, DnsAnswer *answer, DnsAnswer *soa, bool tentative, DnsPacket **ret);
void dns_scope_process_query(DnsScope *s, DnsStream *stream, DnsPacket *p);
-DnsTransaction *dns_scope_find_transaction(DnsScope *scope, DnsResourceKey *key, bool cache_ok);
+DnsTransaction *dns_scope_find_transaction(DnsScope *scope, DnsResourceKey *key, uint64_t query_flags);
int dns_scope_notify_conflict(DnsScope *scope, DnsResourceRecord *rr);
void dns_scope_check_conflicts(DnsScope *scope, DnsPacket *p);
return m->current_dns_server;
}
-void manager_next_dns_server(Manager *m) {
+void manager_next_dns_server(Manager *m, DnsServer *if_current) {
assert(m);
- /* If there's currently no DNS server set, then the next
- * manager_get_dns_server() will find one */
+ /* If the DNS server is already a different one than the one specified in 'if_current' don't do anything */
+ if (if_current && m->current_dns_server != if_current)
+ return;
+
+ /* If there's currently no DNS server set, then the next manager_get_dns_server() will find one */
if (!m->current_dns_server)
return;
- /* Change to the next one, but make sure to follow the linked
- * list only if the server is still linked. */
+ /* Change to the next one, but make sure to follow the linked list only if the server is still
+ * linked. */
if (m->current_dns_server->linked && m->current_dns_server->servers_next) {
manager_set_dns_server(m, m->current_dns_server->servers_next);
return;
}
- /* If there was no next one, then start from the beginning of
- * the list */
+ /* If there was no next one, then start from the beginning of the list */
if (m->current_dns_server->type == DNS_SERVER_FALLBACK)
manager_set_dns_server(m, m->fallback_dns_servers);
else
DnsServer *manager_set_dns_server(Manager *m, DnsServer *s);
DnsServer *manager_get_dns_server(Manager *m);
-void manager_next_dns_server(Manager *m);
+void manager_next_dns_server(Manager *m, DnsServer *if_current);
DnssecMode dns_server_get_dnssec_mode(DnsServer *s);
DnsOverTlsMode dns_server_get_dns_over_tls_mode(DnsServer *s);
p->udp_event_source = sd_event_source_unref(p->udp_event_source);
p->tcp_event_source = sd_event_source_unref(p->tcp_event_source);
+ hashmap_free(p->queries_by_packet);
+
return mfree(p);
}
-static int dns_stub_make_reply_packet(
- DnsPacket **p,
- size_t max_size,
- DnsQuestion *q,
+uint16_t dns_stub_listener_extra_port(DnsStubListenerExtra *p) {
+ assert(p);
+
+ if (p->port > 0)
+ return p->port;
+
+ return 53;
+}
+
+static void stub_packet_hash_func(const DnsPacket *p, struct siphash *state) {
+ assert(p);
+
+ siphash24_compress(&p->protocol, sizeof(p->protocol), state);
+ siphash24_compress(&p->family, sizeof(p->family), state);
+ siphash24_compress(&p->sender, sizeof(p->sender), state);
+ siphash24_compress(&p->ipproto, sizeof(p->ipproto), state);
+ siphash24_compress(&p->sender_port, sizeof(p->sender_port), state);
+ siphash24_compress(DNS_PACKET_HEADER(p), sizeof(DnsPacketHeader), state);
+
+ /* We don't bother hashing the full packet here, just the header */
+}
+
+static int stub_packet_compare_func(const DnsPacket *x, const DnsPacket *y) {
+ int r;
+
+ r = CMP(x->protocol, y->protocol);
+ if (r != 0)
+ return r;
+
+ r = CMP(x->family, y->family);
+ if (r != 0)
+ return r;
+
+ r = memcmp(&x->sender, &y->sender, sizeof(x->sender));
+ if (r != 0)
+ return r;
+
+ r = CMP(x->ipproto, y->ipproto);
+ if (r != 0)
+ return r;
+
+ r = CMP(x->sender_port, y->sender_port);
+ if (r != 0)
+ return r;
+
+ return memcmp(DNS_PACKET_HEADER(x), DNS_PACKET_HEADER(y), sizeof(DnsPacketHeader));
+}
+
+DEFINE_HASH_OPS(stub_packet_hash_ops, DnsPacket, stub_packet_hash_func, stub_packet_compare_func);
+
+static int dns_stub_collect_answer_by_question(
+ DnsAnswer **reply,
DnsAnswer *answer,
- bool *ret_truncated) {
+ DnsQuestion *question,
+ bool with_rrsig) { /* Add RRSIG RR matching each RR */
- bool truncated = false;
- DnsResourceRecord *rr;
- unsigned c = 0;
+ DnsAnswerItem *item;
int r;
- assert(p);
+ assert(reply);
- /* Note that we don't bother with any additional RRs, as this is stub is for local lookups only, and hence
- * roundtrips aren't expensive. */
+ /* Copies all RRs from 'answer' into 'reply', if they match 'question'. */
- if (!*p) {
- r = dns_packet_new(p, DNS_PROTOCOL_DNS, 0, max_size);
- if (r < 0)
- return r;
+ DNS_ANSWER_FOREACH_ITEM(item, answer) {
+
+ if (question) {
+ bool match = false;
+
+ r = dns_question_matches_rr(question, item->rr, NULL);
+ if (r < 0)
+ return r;
+ else if (r > 0)
+ match = true;
+ else {
+ r = dns_question_matches_cname_or_dname(question, item->rr, NULL);
+ if (r < 0)
+ return r;
+ if (r > 0)
+ match = true;
+ }
+
+ if (!match)
+ continue;
+ }
- r = dns_packet_append_question(*p, q);
+ r = dns_answer_add_extend(reply, item->rr, item->ifindex, item->flags, item->rrsig);
if (r < 0)
return r;
- DNS_PACKET_HEADER(*p)->qdcount = htobe16(dns_question_size(q));
+ if (with_rrsig && item->rrsig) {
+ r = dns_answer_add_extend(reply, item->rrsig, item->ifindex, item->flags, NULL);
+ if (r < 0)
+ return r;
+ }
}
- DNS_ANSWER_FOREACH(rr, answer) {
+ return 0;
+}
- r = dns_question_matches_rr(q, rr, NULL);
- if (r < 0)
- return r;
- if (r > 0)
- goto add;
+static int dns_stub_collect_answer_by_section(
+ DnsAnswer **reply,
+ DnsAnswer *answer,
+ DnsAnswerFlags section,
+ DnsAnswer *exclude1,
+ DnsAnswer *exclude2,
+ bool with_dnssec) { /* Include DNSSEC RRs. RRSIG, NSEC, … */
- r = dns_question_matches_cname_or_dname(q, rr, NULL);
- if (r < 0)
- return r;
- if (r > 0)
- goto add;
+ DnsAnswerItem *item;
+ unsigned c = 0;
+ int r;
- continue;
- add:
- r = dns_packet_append_rr(*p, rr, 0, NULL, NULL);
- if (r == -EMSGSIZE) {
- truncated = true;
- break;
- }
+ assert(reply);
+
+ /* Copies all RRs from 'answer' into 'reply', if they originate from the specified section. Also,
+ * avoid any RRs listed in 'exclude'. */
+
+ DNS_ANSWER_FOREACH_ITEM(item, answer) {
+
+ if (dns_answer_contains(exclude1, item->rr) ||
+ dns_answer_contains(exclude2, item->rr))
+ continue;
+
+ if (!with_dnssec &&
+ dns_type_is_dnssec(item->rr->key->type))
+ continue;
+
+ if (((item->flags ^ section) & (DNS_ANSWER_SECTION_ANSWER|DNS_ANSWER_SECTION_AUTHORITY|DNS_ANSWER_SECTION_ADDITIONAL)) != 0)
+ continue;
+
+ r = dns_answer_add_extend(reply, item->rr, item->ifindex, item->flags, item->rrsig);
if (r < 0)
return r;
c++;
+
+ if (with_dnssec && item->rrsig) {
+ r = dns_answer_add_extend(reply, item->rrsig, item->ifindex, item->flags, NULL);
+ if (r < 0)
+ return r;
+
+ c++;
+ }
}
+ return (int) c;
+}
+
+static int dns_stub_assign_sections(
+ DnsQuery *q,
+ DnsQuestion *question,
+ bool edns0_do) {
+
+ int r;
+
+ assert(q);
+ assert(question);
+
+ /* Let's assign the 'answer' and 'answer_auxiliary' RRs we collected to their respective sections in
+ * the reply datagram. We try to reproduce a section assignment similar to what the upstream DNS
+ * server responded to us. We use the DNS_ANSWER_SECTION_xyz flags to match things up, which is where
+ * the original upstream's packet section assignment is stored in the DnsAnswer object. Not all RRs
+ * in the 'answer' and 'answer_auxiliary' objects come with section information though (for example,
+ * because they were synthesized locally, and not from a DNS packet). To deal with that we extend the
+ * assignment logic a bit: anything from the 'answer' object that directly matches the original
+ * question is always put in the ANSWER section, regardless if it carries section info, or what that
+ * section info says. Then, anything from the 'answer' and 'answer_auxiliary' objects that is from
+ * the ANSWER or AUTHORITY sections, and wasn't already added to the ANSWER section is placed in the
+ * AUTHORITY section. Everything else from either object is added to the ADDITIONAL section. */
+
+ /* Include all RRs that directly answer the question in the answer section */
+ r = dns_stub_collect_answer_by_question(
+ &q->reply_answer,
+ q->answer,
+ question,
+ edns0_do);
+ if (r < 0)
+ return r;
+
+ /* Include all RRs that originate from the answer or authority sections, and aren't listed in the
+ * answer section, in the authority section */
+ r = dns_stub_collect_answer_by_section(
+ &q->reply_authoritative,
+ q->answer,
+ DNS_ANSWER_SECTION_ANSWER,
+ q->reply_answer, NULL,
+ edns0_do);
+ if (r < 0)
+ return r;
+
+ /* Include all RRs that originate from the answer or authority sections, and aren't listed in the
+ * answer section, in the authority section */
+ r = dns_stub_collect_answer_by_section(
+ &q->reply_authoritative,
+ q->answer,
+ DNS_ANSWER_SECTION_AUTHORITY,
+ q->reply_answer, NULL,
+ edns0_do);
+ if (r < 0)
+ return r;
+
+ /* Include all RRs that originate from the additional sections in the additional section (except if
+ * already listed in the other two sections). Also add all RRs with no section marking. */
+ r = dns_stub_collect_answer_by_section(
+ &q->reply_additional,
+ q->answer,
+ DNS_ANSWER_SECTION_ADDITIONAL,
+ q->reply_answer, q->reply_authoritative,
+ edns0_do);
+ if (r < 0)
+ return r;
+ r = dns_stub_collect_answer_by_section(
+ &q->reply_additional,
+ q->answer,
+ 0,
+ q->reply_answer, q->reply_authoritative,
+ edns0_do);
+ if (r < 0)
+ return r;
+
+ return 0;
+}
+
+static int dns_stub_make_reply_packet(
+ DnsPacket **ret,
+ size_t max_size,
+ DnsQuestion *q,
+ bool *ret_truncated) {
+
+ _cleanup_(dns_packet_unrefp) DnsPacket *p = NULL;
+ bool tc = false;
+ int r;
+
+ assert(ret);
+
+ r = dns_packet_new(&p, DNS_PROTOCOL_DNS, 0, max_size);
+ if (r < 0)
+ return r;
+
+ r = dns_packet_append_question(p, q);
+ if (r == -EMSGSIZE)
+ tc = true;
+ else if (r < 0)
+ return r;
+
if (ret_truncated)
- *ret_truncated = truncated;
- else if (truncated)
+ *ret_truncated = tc;
+ else if (tc)
return -EMSGSIZE;
- DNS_PACKET_HEADER(*p)->ancount = htobe16(be16toh(DNS_PACKET_HEADER(*p)->ancount) + c);
+ DNS_PACKET_HEADER(p)->qdcount = htobe16(dns_question_size(q));
+ *ret = TAKE_PTR(p);
+ return 0;
+}
+
+static int dns_stub_add_reply_packet_body(
+ DnsPacket *p,
+ DnsAnswer *answer,
+ DnsAnswer *authoritative,
+ DnsAnswer *additional,
+ bool edns0_do, /* Client expects DNSSEC RRs? */
+ bool *truncated) {
+
+ unsigned n_answer = 0, n_authoritative = 0, n_additional = 0;
+ bool tc = false;
+ int r;
+
+ assert(p);
+
+ /* Add the three sections to the packet. If the answer section doesn't fit we'll signal that as
+ * truncation. If the authoritative section doesn't fit and we are in DNSSEC mode, also signal
+ * truncation. In all other cases where things don't fit don't signal truncation, as for those cases
+ * the dropped RRs should not be essential. */
+
+ r = dns_packet_append_answer(p, answer, &n_answer);
+ if (r == -EMSGSIZE)
+ tc = true;
+ else if (r < 0)
+ return r;
+ else {
+ r = dns_packet_append_answer(p, authoritative, &n_authoritative);
+ if (r == -EMSGSIZE) {
+ if (edns0_do)
+ tc = true;
+ } else if (r < 0)
+ return r;
+ else {
+ r = dns_packet_append_answer(p, additional, &n_additional);
+ if (r < 0 && r != -EMSGSIZE)
+ return r;
+ }
+ }
+
+ if (tc) {
+ if (!truncated)
+ return -EMSGSIZE;
+
+ *truncated = true;
+ }
+
+ DNS_PACKET_HEADER(p)->ancount = htobe16(n_answer);
+ DNS_PACKET_HEADER(p)->nscount = htobe16(n_authoritative);
+ DNS_PACKET_HEADER(p)->arcount = htobe16(n_additional);
return 0;
}
bool add_opt, /* add an OPT RR to this packet? */
bool edns0_do, /* set the EDNS0 DNSSEC OK bit? */
bool ad, /* set the DNSSEC authenticated data bit? */
+ bool cd, /* set the DNSSEC checking disabled bit? */
uint16_t max_udp_size) { /* The maximum UDP datagram size to advertise to clients */
int r;
tc = true;
else if (r < 0)
return r;
-
} else {
/* If the client can't to EDNS0, don't do DO either */
edns0_do = false;
- /* If the client didn't do EDNS, clamp the rcode to 4 bit */
+ /* If we don't do EDNS, clamp the rcode to 4 bit */
if (rcode > 0xF)
rcode = DNS_RCODE_SERVFAIL;
}
- /* Don't set the AD bit unless DO is on, too */
+ /* Don't set the CD bit unless DO is on, too */
if (!edns0_do)
- ad = false;
+ cd = false;
+
+ /* Note that we allow the AD bit to be set even if client didn't signal DO, as per RFC 6840, section
+ * 5.7 */
DNS_PACKET_HEADER(p)->id = id;
1 /* rd */,
1 /* ra */,
ad /* ad */,
- 0 /* cd */,
+ cd /* cd */,
rcode));
return 0;
return 0;
}
+static int dns_stub_send_reply(
+ DnsQuery *q,
+ int rcode) {
+
+ _cleanup_(dns_packet_unrefp) DnsPacket *reply = NULL;
+ bool truncated, edns0_do;
+ int r;
+
+ assert(q);
+
+ /* Reply with DNSSEC DO set? Only if client supports it; and we did any DNSSEC verification
+ * ourselves, or consider the data fully authenticated because we generated it locally, or
+ * the client set cd */
+ edns0_do =
+ DNS_PACKET_DO(q->request_packet) &&
+ (q->answer_dnssec_result >= 0 || /* we did proper DNSSEC validation … */
+ dns_query_fully_authenticated(q) || /* … or we considered it authentic otherwise … */
+ DNS_PACKET_CD(q->request_packet)); /* … or client set CD */
+
+ r = dns_stub_assign_sections(
+ q,
+ q->request_packet->question,
+ edns0_do);
+ if (r < 0)
+ return log_debug_errno(r, "Failed to assign sections: %m");
+
+ r = dns_stub_make_reply_packet(
+ &reply,
+ DNS_PACKET_PAYLOAD_SIZE_MAX(q->request_packet),
+ q->request_packet->question,
+ &truncated);
+ if (r < 0)
+ return log_debug_errno(r, "Failed to build reply packet: %m");
+
+ r = dns_stub_add_reply_packet_body(
+ reply,
+ q->reply_answer,
+ q->reply_authoritative,
+ q->reply_additional,
+ edns0_do,
+ &truncated);
+ if (r < 0)
+ return log_debug_errno(r, "Failed to append reply packet body: %m");
+
+ r = dns_stub_finish_reply_packet(
+ reply,
+ DNS_PACKET_ID(q->request_packet),
+ rcode,
+ truncated,
+ !!q->request_packet->opt,
+ edns0_do,
+ DNS_PACKET_AD(q->request_packet) && dns_query_fully_authenticated(q),
+ DNS_PACKET_CD(q->request_packet),
+ q->stub_listener_extra ? ADVERTISE_EXTRA_DATAGRAM_SIZE_MAX : ADVERTISE_DATAGRAM_SIZE_MAX);
+ if (r < 0)
+ return log_debug_errno(r, "Failed to build failure packet: %m");
+
+ return dns_stub_send(q->manager, q->stub_listener_extra, q->request_stream, q->request_packet, reply);
+}
+
static int dns_stub_send_failure(
Manager *m,
DnsStubListenerExtra *l,
bool authenticated) {
_cleanup_(dns_packet_unrefp) DnsPacket *reply = NULL;
+ bool truncated;
int r;
assert(m);
assert(p);
- r = dns_stub_make_reply_packet(&reply, DNS_PACKET_PAYLOAD_SIZE_MAX(p), p->question, NULL, NULL);
+ r = dns_stub_make_reply_packet(
+ &reply,
+ DNS_PACKET_PAYLOAD_SIZE_MAX(p),
+ p->question,
+ &truncated);
if (r < 0)
return log_debug_errno(r, "Failed to make failure packet: %m");
reply,
DNS_PACKET_ID(p),
rcode,
- /* truncated = */ false,
+ truncated,
!!p->opt,
DNS_PACKET_DO(p),
- authenticated,
+ DNS_PACKET_AD(p) && authenticated,
+ DNS_PACKET_CD(p),
l ? ADVERTISE_EXTRA_DATAGRAM_SIZE_MAX : ADVERTISE_DATAGRAM_SIZE_MAX);
if (r < 0)
return log_debug_errno(r, "Failed to build failure packet: %m");
return dns_stub_send(m, l, s, p, reply);
}
+static int dns_stub_patch_bypass_reply_packet(
+ DnsPacket **ret, /* Where to place the patched packet */
+ DnsPacket *original, /* The packet to patch */
+ DnsPacket *request) { /* The packet the patched packet shall look like a reply to */
+ _cleanup_(dns_packet_unrefp) DnsPacket *c = NULL;
+ int r;
+
+ assert(ret);
+ assert(original);
+ assert(request);
+
+ r = dns_packet_dup(&c, original);
+ if (r < 0)
+ return r;
+
+ /* Extract the packet, so that we know where the OPT field is */
+ r = dns_packet_extract(c);
+ if (r < 0)
+ return r;
+
+ /* Copy over the original client request ID, so that we can make the upstream query look like our own reply. */
+ DNS_PACKET_HEADER(c)->id = DNS_PACKET_HEADER(request)->id;
+
+ /* Patch in our own maximum datagram size, if EDNS0 was on */
+ r = dns_packet_patch_max_udp_size(c, ADVERTISE_DATAGRAM_SIZE_MAX);
+ if (r < 0)
+ return r;
+
+ /* Lower all TTLs by the time passed since we received the datagram. */
+ if (timestamp_is_set(original->timestamp)) {
+ r = dns_packet_patch_ttls(c, original->timestamp);
+ if (r < 0)
+ return r;
+ }
+
+ /* Our upstream connection might have supported larger DNS requests than our downstream one, hence
+ * set the TC bit if our reply is larger than what the client supports, and truncate. */
+ if (c->size > DNS_PACKET_PAYLOAD_SIZE_MAX(request)) {
+ log_debug("Artificially truncating stub response, as advertised size of client is smaller than upstream one.");
+ dns_packet_truncate(c, DNS_PACKET_PAYLOAD_SIZE_MAX(request));
+ DNS_PACKET_HEADER(c)->flags = htobe16(be16toh(DNS_PACKET_HEADER(c)->flags) | DNS_PACKET_FLAG_TC);
+ }
+
+ *ret = TAKE_PTR(c);
+ return 0;
+}
+
static void dns_stub_query_complete(DnsQuery *q) {
int r;
assert(q);
- assert(q->request_dns_packet);
+ assert(q->request_packet);
- switch (q->state) {
+ if (q->question_bypass) {
+ /* This is a bypass reply. If so, let's propagate the upstream packet, if we have it and it
+ * is regular DNS. (We can't do this if the upstream packet is LLMNR or mDNS, since the
+ * packets are not 100% compatible.) */
- case DNS_TRANSACTION_SUCCESS: {
- bool truncated;
+ if (q->answer_full_packet &&
+ q->answer_full_packet->protocol == DNS_PROTOCOL_DNS) {
+ _cleanup_(dns_packet_unrefp) DnsPacket *reply = NULL;
- r = dns_stub_make_reply_packet(&q->reply_dns_packet, DNS_PACKET_PAYLOAD_SIZE_MAX(q->request_dns_packet), q->question_idna, q->answer, &truncated);
- if (r < 0) {
- log_debug_errno(r, "Failed to build reply packet: %m");
- break;
+ r = dns_stub_patch_bypass_reply_packet(&reply, q->answer_full_packet, q->request_packet);
+ if (r < 0)
+ log_debug_errno(r, "Failed to patch bypass reply packet: %m");
+ else
+ (void) dns_stub_send(q->manager, q->stub_listener_extra, q->request_stream, q->request_packet, reply);
+
+ dns_query_free(q);
+ return;
}
+ }
- if (!truncated) {
+ switch (q->state) {
+
+ case DNS_TRANSACTION_SUCCESS:
+ /* Follow CNAMEs, and accumulate answers. Except if DNSSEC is requested, then let the client do that. */
+ if (!DNS_PACKET_DO(q->request_packet)) {
r = dns_query_process_cname(q);
- if (r == -ELOOP) {
- (void) dns_stub_send_failure(q->manager, q->stub_listener_extra, q->request_dns_stream, q->request_dns_packet, DNS_RCODE_SERVFAIL, false);
+ if (r == -ELOOP) { /* CNAME loop */
+ (void) dns_stub_send_reply(q, DNS_RCODE_SERVFAIL);
break;
}
if (r < 0) {
return;
}
- r = dns_stub_finish_reply_packet(
- q->reply_dns_packet,
- DNS_PACKET_ID(q->request_dns_packet),
- q->answer_rcode,
- truncated,
- !!q->request_dns_packet->opt,
- DNS_PACKET_DO(q->request_dns_packet),
- dns_query_fully_authenticated(q),
- q->stub_listener_extra ? ADVERTISE_EXTRA_DATAGRAM_SIZE_MAX : ADVERTISE_DATAGRAM_SIZE_MAX);
- if (r < 0) {
- log_debug_errno(r, "Failed to finish reply packet: %m");
- break;
- }
-
- (void) dns_stub_send(q->manager, q->stub_listener_extra, q->request_dns_stream, q->request_dns_packet, q->reply_dns_packet);
+ (void) dns_stub_send_reply(q, q->answer_rcode);
break;
- }
case DNS_TRANSACTION_RCODE_FAILURE:
- (void) dns_stub_send_failure(q->manager, q->stub_listener_extra, q->request_dns_stream, q->request_dns_packet, q->answer_rcode, dns_query_fully_authenticated(q));
+ (void) dns_stub_send_reply(q, q->answer_rcode);
break;
case DNS_TRANSACTION_NOT_FOUND:
- (void) dns_stub_send_failure(q->manager, q->stub_listener_extra, q->request_dns_stream, q->request_dns_packet, DNS_RCODE_NXDOMAIN, dns_query_fully_authenticated(q));
+ (void) dns_stub_send_reply(q, DNS_RCODE_NXDOMAIN);
break;
case DNS_TRANSACTION_TIMEOUT:
case DNS_TRANSACTION_NO_TRUST_ANCHOR:
case DNS_TRANSACTION_RR_TYPE_UNSUPPORTED:
case DNS_TRANSACTION_NETWORK_DOWN:
- (void) dns_stub_send_failure(q->manager, q->stub_listener_extra, q->request_dns_stream, q->request_dns_packet, DNS_RCODE_SERVFAIL, false);
+ case DNS_TRANSACTION_NO_SOURCE:
+ case DNS_TRANSACTION_STUB_LOOP:
+ (void) dns_stub_send_reply(q, DNS_RCODE_SERVFAIL);
break;
case DNS_TRANSACTION_NULL:
static void dns_stub_process_query(Manager *m, DnsStubListenerExtra *l, DnsStream *s, DnsPacket *p) {
_cleanup_(dns_query_freep) DnsQuery *q = NULL;
+ Hashmap **queries_by_packet;
+ DnsQuery *existing;
int r;
assert(m);
return;
}
+ if (manager_packet_from_our_transaction(m, p)) {
+ log_debug("Got our own packet looped back, ignoring.");
+ return;
+ }
+
+ queries_by_packet = l ? &l->queries_by_packet : &m->stub_queries_by_packet;
+ existing = hashmap_get(*queries_by_packet, p);
+ if (existing && dns_packet_equal(existing->request_packet, p)) {
+ log_debug("Got repeat packet from client, ignoring.");
+ return;
+ }
+
r = dns_packet_extract(p);
if (r < 0) {
log_debug_errno(r, "Failed to extract resources from incoming packet, ignoring packet: %m");
if (dns_type_is_obsolete(p->question->keys[0]->type)) {
log_debug("Got message with obsolete key type, refusing.");
- dns_stub_send_failure(m, l, s, p, DNS_RCODE_NOTIMP, false);
+ dns_stub_send_failure(m, l, s, p, DNS_RCODE_REFUSED, false);
return;
}
if (dns_type_is_zone_transer(p->question->keys[0]->type)) {
log_debug("Got request for zone transfer, refusing.");
- dns_stub_send_failure(m, l, s, p, DNS_RCODE_NOTIMP, false);
+ dns_stub_send_failure(m, l, s, p, DNS_RCODE_REFUSED, false);
return;
}
return;
}
- if (DNS_PACKET_DO(p) && DNS_PACKET_CD(p)) {
- log_debug("Got request with DNSSEC CD bit set, refusing.");
- dns_stub_send_failure(m, l, s, p, DNS_RCODE_NOTIMP, false);
+ r = hashmap_ensure_allocated(queries_by_packet, &stub_packet_hash_ops);
+ if (r < 0) {
+ log_oom();
return;
}
- r = dns_query_new(m, &q, p->question, p->question, 0, SD_RESOLVED_PROTOCOLS_ALL|SD_RESOLVED_NO_SEARCH);
+ if (DNS_PACKET_DO(p) && DNS_PACKET_CD(p)) {
+ log_debug("Got request with DNSSEC checking disabled, enabling bypass logic.");
+
+ r = dns_query_new(m, &q, NULL, NULL, p, 0,
+ SD_RESOLVED_PROTOCOLS_ALL|
+ SD_RESOLVED_NO_CNAME|
+ SD_RESOLVED_NO_SEARCH|
+ SD_RESOLVED_NO_VALIDATE|
+ SD_RESOLVED_REQUIRE_PRIMARY|
+ SD_RESOLVED_CLAMP_TTL);
+ } else
+ r = dns_query_new(m, &q, p->question, p->question, NULL, 0,
+ SD_RESOLVED_PROTOCOLS_ALL|
+ SD_RESOLVED_NO_SEARCH|
+ (DNS_PACKET_DO(p) ? SD_RESOLVED_NO_CNAME|SD_RESOLVED_REQUIRE_PRIMARY : 0)|
+ SD_RESOLVED_CLAMP_TTL);
if (r < 0) {
log_error_errno(r, "Failed to generate query object: %m");
dns_stub_send_failure(m, l, s, p, DNS_RCODE_SERVFAIL, false);
return;
}
- /* Request that the TTL is corrected by the cached time for this lookup, so that we return vaguely useful TTLs */
- q->clamp_ttl = true;
-
- q->request_dns_packet = dns_packet_ref(p);
- q->request_dns_stream = dns_stream_ref(s); /* make sure the stream stays around until we can send a reply through it */
+ q->request_packet = dns_packet_ref(p);
+ q->request_stream = dns_stream_ref(s); /* make sure the stream stays around until we can send a reply through it */
q->stub_listener_extra = l;
q->complete = dns_stub_query_complete;
assert(r > 0);
}
+ /* Add the query to the hash table we use to determine repeat packets now. We don't care about
+ * failures here, since in the worst case we'll not recognize duplicate incoming requests, which
+ * isn't particularly bad. */
+ (void) hashmap_put(*queries_by_packet, q->request_packet, q);
+
r = dns_query_go(q);
if (r < 0) {
log_error_errno(r, "Failed to start query: %m");
if (l->family == AF_INET)
sa = (union sockaddr_union) {
.in.sin_family = l->family,
- .in.sin_port = htobe16(l->port != 0 ? l->port : 53U),
+ .in.sin_port = htobe16(dns_stub_listener_extra_port(l)),
.in.sin_addr = l->address.in,
};
else
sa = (union sockaddr_union) {
.in6.sin6_family = l->family,
- .in6.sin6_port = htobe16(l->port != 0 ? l->port : 53U),
+ .in6.sin6_port = htobe16(dns_stub_listener_extra_port(l)),
.in6.sin6_addr = l->address.in6,
};
sd_event_source *udp_event_source;
sd_event_source *tcp_event_source;
+
+ Hashmap *queries_by_packet;
};
extern const struct hash_ops dns_stub_listener_extra_hash_ops;
int dns_stub_listener_extra_new(Manager *m, DnsStubListenerExtra **ret);
DnsStubListenerExtra *dns_stub_listener_extra_free(DnsStubListenerExtra *p);
+uint16_t dns_stub_listener_extra_port(DnsStubListenerExtra *p);
void manager_dns_stub_stop(Manager *m);
int manager_dns_stub_start(Manager *m);
rr->a.in_addr.s_addr = htobe32(INADDR_LOOPBACK);
- r = dns_answer_add(*answer, rr, dns_synthesize_ifindex(ifindex), DNS_ANSWER_AUTHENTICATED);
+ r = dns_answer_add(*answer, rr, dns_synthesize_ifindex(ifindex), DNS_ANSWER_AUTHENTICATED, NULL);
if (r < 0)
return r;
}
rr->aaaa.in6_addr = in6addr_loopback;
- r = dns_answer_add(*answer, rr, dns_synthesize_ifindex(ifindex), DNS_ANSWER_AUTHENTICATED);
+ r = dns_answer_add(*answer, rr, dns_synthesize_ifindex(ifindex), DNS_ANSWER_AUTHENTICATED, NULL);
if (r < 0)
return r;
}
if (!rr->ptr.name)
return -ENOMEM;
- return dns_answer_add(*answer, rr, ifindex, flags);
+ return dns_answer_add(*answer, rr, ifindex, flags, NULL);
}
static int synthesize_localhost_ptr(Manager *m, const DnsResourceKey *key, int ifindex, DnsAnswer **answer) {
if (r < 0)
return r;
- r = dns_answer_add(*answer, rr, addresses[j].ifindex, DNS_ANSWER_AUTHENTICATED);
+ r = dns_answer_add(*answer, rr, addresses[j].ifindex, DNS_ANSWER_AUTHENTICATED, NULL);
if (r < 0)
return r;
}
if (r < 0)
return r;
- r = dns_answer_add(*answer, rr, addresses[j].ifindex, DNS_ANSWER_AUTHENTICATED);
+ r = dns_answer_add(*answer, rr, addresses[j].ifindex, DNS_ANSWER_AUTHENTICATED, NULL);
if (r < 0)
return r;
dns_server_unref(t->server);
if (t->scope) {
- hashmap_remove_value(t->scope->transactions_by_key, t->key, t);
- LIST_REMOVE(transactions_by_scope, t->scope->transactions, t);
+ if (t->key) {
+ DnsTransaction *first;
+
+ first = hashmap_get(t->scope->transactions_by_key, t->key);
+ LIST_REMOVE(transactions_by_key, first, t);
+ if (first)
+ hashmap_replace(t->scope->transactions_by_key, first->key, first);
+ else
+ hashmap_remove(t->scope->transactions_by_key, t->key);
+ }
- if (t->id != 0)
- hashmap_remove(t->scope->manager->dns_transactions, UINT_TO_PTR(t->id));
+ LIST_REMOVE(transactions_by_scope, t->scope->transactions, t);
}
+ if (t->id != 0)
+ hashmap_remove(t->scope->manager->dns_transactions, UINT_TO_PTR(t->id));
+
while ((c = set_steal_first(t->notify_query_candidates)))
set_remove(c->transactions, t);
set_free(t->notify_query_candidates);
dns_answer_unref(t->validated_keys);
dns_resource_key_unref(t->key);
+ dns_packet_unref(t->bypass);
return mfree(t);
}
return new_id;
}
-int dns_transaction_new(DnsTransaction **ret, DnsScope *s, DnsResourceKey *key) {
- _cleanup_(dns_transaction_freep) DnsTransaction *t = NULL;
- int r;
-
- assert(ret);
- assert(s);
- assert(key);
+static int key_ok(
+ DnsScope *scope,
+ DnsResourceKey *key) {
/* Don't allow looking up invalid or pseudo RRs */
if (!dns_type_is_valid_query(key->type))
if (!IN_SET(key->class, DNS_CLASS_IN, DNS_CLASS_ANY))
return -EOPNOTSUPP;
+ /* Don't allows DNSSEC RRs to be looked up via LLMNR/mDNS. They don't really make sense
+ * there, and it speeds up our queries if we refuse this early */
+ if (scope->protocol != DNS_PROTOCOL_DNS &&
+ dns_type_is_dnssec(key->type))
+ return -EOPNOTSUPP;
+
+ return 0;
+}
+
+int dns_transaction_new(
+ DnsTransaction **ret,
+ DnsScope *s,
+ DnsResourceKey *key,
+ DnsPacket *bypass,
+ uint64_t query_flags) {
+
+ _cleanup_(dns_transaction_freep) DnsTransaction *t = NULL;
+ int r;
+
+ assert(ret);
+ assert(s);
+
+ if (key) {
+ assert(!bypass);
+
+ r = key_ok(s, key);
+ if (r < 0)
+ return r;
+ } else {
+ DnsResourceKey *qk;
+ assert(bypass);
+
+ r = dns_packet_validate_query(bypass);
+ if (r < 0)
+ return r;
+
+ DNS_QUESTION_FOREACH(qk, bypass->question) {
+ r = key_ok(s, qk);
+ if (r < 0)
+ return r;
+ }
+ }
+
if (hashmap_size(s->manager->dns_transactions) >= TRANSACTIONS_MAX)
return -EBUSY;
if (r < 0)
return r;
- r = hashmap_ensure_allocated(&s->transactions_by_key, &dns_resource_key_hash_ops);
- if (r < 0)
- return r;
+ if (key) {
+ r = hashmap_ensure_allocated(&s->transactions_by_key, &dns_resource_key_hash_ops);
+ if (r < 0)
+ return r;
+ }
t = new(DnsTransaction, 1);
if (!t)
.answer_dnssec_result = _DNSSEC_RESULT_INVALID,
.answer_nsec_ttl = (uint32_t) -1,
.key = dns_resource_key_ref(key),
+ .query_flags = query_flags,
+ .bypass = dns_packet_ref(bypass),
.current_feature_level = _DNS_SERVER_FEATURE_LEVEL_INVALID,
.clamp_feature_level = _DNS_SERVER_FEATURE_LEVEL_INVALID,
.id = pick_new_id(s->manager),
return r;
}
- r = hashmap_replace(s->transactions_by_key, t->key, t);
- if (r < 0) {
- hashmap_remove(s->manager->dns_transactions, UINT_TO_PTR(t->id));
- return r;
+ if (t->key) {
+ DnsTransaction *first;
+
+ first = hashmap_get(s->transactions_by_key, t->key);
+ LIST_PREPEND(transactions_by_key, first, t);
+
+ r = hashmap_replace(s->transactions_by_key, first->key, first);
+ if (r < 0) {
+ LIST_REMOVE(transactions_by_key, first, t);
+ return r;
+ }
}
LIST_PREPEND(transactions_by_scope, s->transactions, t);
if (ret)
*ret = t;
- t = NULL;
-
+ TAKE_PTR(t);
return 0;
}
assert(t);
assert(p);
+ assert(t->scope->protocol == DNS_PROTOCOL_LLMNR);
- if (manager_our_packet(t->scope->manager, p) != 0)
+ if (manager_packet_from_local_address(t->scope->manager, p) != 0)
return;
(void) in_addr_to_string(p->family, &p->sender, &pretty);
log_debug("Transaction %" PRIu16 " for <%s> on scope %s on %s/%s got tentative packet from %s.",
t->id,
- dns_resource_key_to_string(t->key, key_str, sizeof key_str),
+ dns_resource_key_to_string(dns_transaction_key(t), key_str, sizeof key_str),
dns_protocol_to_string(t->scope->protocol),
t->scope->link ? t->scope->link->ifname : "*",
af_to_name_short(t->scope->family),
assert(!DNS_TRANSACTION_IS_LIVE(state));
if (state == DNS_TRANSACTION_DNSSEC_FAILED) {
- dns_resource_key_to_string(t->key, key_str, sizeof key_str);
+ dns_resource_key_to_string(dns_transaction_key(t), key_str, sizeof key_str);
log_struct(LOG_NOTICE,
"MESSAGE_ID=" SD_MESSAGE_DNSSEC_FAILURE_STR,
else
st = dns_transaction_state_to_string(state);
- log_debug("Transaction %" PRIu16 " for <%s> on scope %s on %s/%s now complete with <%s> from %s (%s).",
+ log_debug("%s transaction %" PRIu16 " for <%s> on scope %s on %s/%s now complete with <%s> from %s (%s).",
+ t->bypass ? "Bypass" : "Regular",
t->id,
- dns_resource_key_to_string(t->key, key_str, sizeof key_str),
+ dns_resource_key_to_string(dns_transaction_key(t), key_str, sizeof key_str),
dns_protocol_to_string(t->scope->protocol),
t->scope->link ? t->scope->link->ifname : "*",
af_to_name_short(t->scope->family),
st,
t->answer_source < 0 ? "none" : dns_transaction_source_to_string(t->answer_source),
- t->answer_authenticated ? "authenticated" : "unsigned");
+ FLAGS_SET(t->query_flags, SD_RESOLVED_NO_VALIDATE) ? "not validated" :
+ (t->answer_authenticated ? "authenticated" : "unsigned"));
t->state = state;
/* Before we try again, switch to a new server. */
if (next_server)
- dns_scope_next_dns_server(t->scope);
+ dns_scope_next_dns_server(t->scope, t->server);
r = dns_transaction_go(t);
if (r < 0)
}
static uint16_t dns_transaction_port(DnsTransaction *t) {
+ assert(t);
+
if (t->server->port > 0)
return t->server->port;
+
return DNS_SERVER_FEATURE_LEVEL_IS_TLS(t->current_feature_level) ? 853 : 53;
}
int r;
assert(t);
+ assert(t->sent);
dns_transaction_close_connection(t);
if (r < 0)
return r;
- if (!dns_server_dnssec_supported(t->server) && dns_type_is_dnssec(t->key->type))
- return -EOPNOTSUPP;
+ if (manager_server_is_stub(t->scope->manager, t->server))
+ return -ELOOP;
- r = dns_server_adjust_opt(t->server, t->sent, t->current_feature_level);
- if (r < 0)
- return r;
+ if (!t->bypass) {
+ if (!dns_server_dnssec_supported(t->server) && dns_type_is_dnssec(dns_transaction_key(t)->type))
+ return -EOPNOTSUPP;
+
+ r = dns_server_adjust_opt(t->server, t->sent, t->current_feature_level);
+ if (r < 0)
+ return r;
+ }
if (t->server->stream && (DNS_SERVER_FEATURE_LEVEL_IS_TLS(t->current_feature_level) == t->server->stream->encrypted))
s = dns_stream_ref(t->server->stream);
* the IP address, in case this is a reverse
* PTR lookup */
- r = dns_name_address(dns_resource_key_name(t->key), &family, &address);
+ r = dns_name_address(dns_resource_key_name(dns_transaction_key(t)), &family, &address);
if (r < 0)
return r;
if (r == 0)
if (t->scope->manager->enable_cache == DNS_CACHE_MODE_NO)
return;
+ /* If validation is turned off for this transaction, but DNSSEC is on, then let's not cache this */
+ if (FLAGS_SET(t->query_flags, SD_RESOLVED_NO_VALIDATE) && t->scope->dnssec_mode != DNSSEC_NO)
+ return;
+
/* Packet from localhost? */
if (!t->scope->manager->cache_from_localhost &&
in_addr_is_localhost(t->received->family, &t->received->sender) != 0)
dns_cache_put(&t->scope->cache,
t->scope->manager->enable_cache,
- t->key,
+ dns_transaction_key(t),
t->answer_rcode,
t->answer,
+ DNS_PACKET_CD(t->received) ? t->received : NULL, /* only cache full packets with CD on,
+ * since our usecase for caching them
+ * is "bypass" mode which is only
+ * enabled for CD packets. */
t->answer_authenticated,
+ t->answer_dnssec_result,
t->answer_nsec_ttl,
- 0,
t->received->family,
&t->received->sender);
}
/* Checks whether the answer is positive, i.e. either a direct
* answer to the question, or a CNAME/DNAME for it */
- r = dns_answer_match_key(t->answer, t->key, flags);
+ r = dns_answer_match_key(t->answer, dns_transaction_key(t), flags);
if (r != 0)
return r;
- r = dns_answer_find_cname_or_dname(t->answer, t->key, NULL, flags);
+ r = dns_answer_find_cname_or_dname(t->answer, dns_transaction_key(t), NULL, flags);
if (r != 0)
return r;
case DNS_PROTOCOL_DNS:
assert(t->server);
- if (IN_SET(DNS_PACKET_RCODE(p), DNS_RCODE_FORMERR, DNS_RCODE_SERVFAIL, DNS_RCODE_NOTIMP)) {
+ if (!t->bypass &&
+ IN_SET(DNS_PACKET_RCODE(p), DNS_RCODE_FORMERR, DNS_RCODE_SERVFAIL, DNS_RCODE_NOTIMP)) {
/* Request failed, immediately try again with reduced features */
* to the request. For mDNS this check doesn't make sense, because the section 6 of RFC6762 states
* that "Multicast DNS responses MUST NOT contain any questions in the Question Section". */
if (t->scope->protocol != DNS_PROTOCOL_MDNS) {
- r = dns_packet_is_reply_for(p, t->key);
+ r = dns_packet_is_reply_for(p, dns_transaction_key(t));
if (r < 0)
goto fail;
if (r == 0) {
}
}
- /* Install the answer as answer to the transaction */
+ /* Install the answer as answer to the transaction. We ref the answer twice here: the main `answer`
+ * field is later replaced by the DNSSEC validated subset. The 'answer_auxiliary' field carries the
+ * original complete record set, including RRSIG and friends. We use this when passing data to
+ * clients that ask for DNSSEC metadata. */
dns_answer_unref(t->answer);
t->answer = dns_answer_ref(p->answer);
t->answer_rcode = DNS_PACKET_RCODE(p);
if (r < 0)
return r;
+ if (manager_server_is_stub(t->scope->manager, t->server))
+ return -ELOOP;
+
if (t->current_feature_level < DNS_SERVER_FEATURE_LEVEL_UDP || DNS_SERVER_FEATURE_LEVEL_IS_TLS(t->current_feature_level))
return -EAGAIN; /* Sorry, can't do UDP, try TCP! */
- if (!dns_server_dnssec_supported(t->server) && dns_type_is_dnssec(t->key->type))
+ if (!t->bypass && !dns_server_dnssec_supported(t->server) && dns_type_is_dnssec(dns_transaction_key(t)->type))
return -EOPNOTSUPP;
if (r > 0 || t->dns_udp_fd < 0) { /* Server changed, or no connection yet. */
t->dns_udp_fd = fd;
}
- r = dns_server_adjust_opt(t->server, t->sent, t->current_feature_level);
- if (r < 0)
- return r;
+ if (!t->bypass) {
+ r = dns_server_adjust_opt(t->server, t->sent, t->current_feature_level);
+ if (r < 0)
+ return r;
+ }
} else
dns_transaction_close_connection(t);
}
}
+static void dns_transaction_randomize_answer(DnsTransaction *t) {
+ int r;
+
+ assert(t);
+
+ /* Randomizes the order of the answer array. This is done for all cached responses, so that we return
+ * a different order each time. We do this only for DNS traffic, in order to do some minimal, crappy
+ * load balancing. We don't do this for LLMNR or mDNS, since the order (preferring link-local
+ * addresses, and such like) might have meaning there, and load balancing is pointless. */
+
+ if (t->scope->protocol != DNS_PROTOCOL_DNS)
+ return;
+
+ /* No point in randomizing, if there's just one RR */
+ if (dns_answer_size(t->answer) <= 1)
+ return;
+
+ r = dns_answer_reserve_or_clone(&t->answer, 0);
+ if (r < 0) /* If this fails, just don't randomize, this is non-essential stuff after all */
+ return (void) log_debug_errno(r, "Failed to clone answer record, not randomizing RR order of answer: %m");
+
+ dns_answer_randomize(t->answer);
+}
+
static int dns_transaction_prepare(DnsTransaction *t, usec_t ts) {
int r;
dns_transaction_flush_dnssec_transactions(t);
/* Check the trust anchor. Do so only on classic DNS, since DNSSEC does not apply otherwise. */
- if (t->scope->protocol == DNS_PROTOCOL_DNS) {
- r = dns_trust_anchor_lookup_positive(&t->scope->manager->trust_anchor, t->key, &t->answer);
+ if (t->scope->protocol == DNS_PROTOCOL_DNS &&
+ !FLAGS_SET(t->query_flags, SD_RESOLVED_NO_TRUST_ANCHOR)) {
+ r = dns_trust_anchor_lookup_positive(&t->scope->manager->trust_anchor, dns_transaction_key(t), &t->answer);
if (r < 0)
return r;
if (r > 0) {
return 0;
}
- if (dns_name_is_root(dns_resource_key_name(t->key)) &&
- t->key->type == DNS_TYPE_DS) {
+ if (dns_name_is_root(dns_resource_key_name(dns_transaction_key(t))) &&
+ dns_transaction_key(t)->type == DNS_TYPE_DS) {
- /* Hmm, this is a request for the root DS? A
- * DS RR doesn't exist in the root zone, and
- * if our trust anchor didn't know it either,
- * this means we cannot do any DNSSEC logic
- * anymore. */
+ /* Hmm, this is a request for the root DS? A DS RR doesn't exist in the root zone,
+ * and if our trust anchor didn't know it either, this means we cannot do any DNSSEC
+ * logic anymore. */
if (t->scope->dnssec_mode == DNSSEC_ALLOW_DOWNGRADE) {
- /* We are in downgrade mode. In this
- * case, synthesize an unsigned empty
- * response, so that the any lookup
- * depending on this one can continue
- * assuming there was no DS, and hence
- * the root zone was unsigned. */
+ /* We are in downgrade mode. In this case, synthesize an unsigned empty
+ * response, so that the any lookup depending on this one can continue
+ * assuming there was no DS, and hence the root zone was unsigned. */
t->answer_rcode = DNS_RCODE_SUCCESS;
t->answer_source = DNS_TRANSACTION_TRUST_ANCHOR;
t->answer_authenticated = false;
dns_transaction_complete(t, DNS_TRANSACTION_SUCCESS);
} else
- /* If we are not in downgrade mode,
- * then fail the lookup, because we
- * cannot reasonably answer it. There
- * might be DS RRs, but we don't know
- * them, and the DNS server won't tell
- * them to us (and even if it would,
- * we couldn't validate and trust them. */
+ /* If we are not in downgrade mode, then fail the lookup, because we cannot
+ * reasonably answer it. There might be DS RRs, but we don't know them, and
+ * the DNS server won't tell them to us (and even if it would, we couldn't
+ * validate and trust them. */
dns_transaction_complete(t, DNS_TRANSACTION_NO_TRUST_ANCHOR);
return 0;
}
}
- /* Check the zone, but only if this transaction is not used
- * for probing or verifying a zone item. */
- if (set_isempty(t->notify_zone_items)) {
-
- r = dns_zone_lookup(&t->scope->zone, t->key, dns_scope_ifindex(t->scope), &t->answer, NULL, NULL);
+ /* Check the zone. */
+ if (!FLAGS_SET(t->query_flags, SD_RESOLVED_NO_ZONE)) {
+ r = dns_zone_lookup(&t->scope->zone, dns_transaction_key(t), dns_scope_ifindex(t->scope), &t->answer, NULL, NULL);
if (r < 0)
return r;
if (r > 0) {
}
}
- /* Check the cache, but only if this transaction is not used
- * for probing or verifying a zone item. */
- if (set_isempty(t->notify_zone_items)) {
+ /* Check the cache. */
+ if (!FLAGS_SET(t->query_flags, SD_RESOLVED_NO_CACHE)) {
- /* Before trying the cache, let's make sure we figured out a
- * server to use. Should this cause a change of server this
- * might flush the cache. */
+ /* Before trying the cache, let's make sure we figured out a server to use. Should this cause
+ * a change of server this might flush the cache. */
(void) dns_scope_get_dns_server(t->scope);
/* Let's then prune all outdated entries */
dns_cache_prune(&t->scope->cache);
- r = dns_cache_lookup(&t->scope->cache, t->key, t->clamp_ttl, &t->answer_rcode, &t->answer, &t->answer_authenticated);
+ r = dns_cache_lookup(
+ &t->scope->cache,
+ dns_transaction_key(t),
+ t->query_flags,
+ &t->answer_rcode,
+ &t->answer,
+ &t->received,
+ &t->answer_authenticated,
+ &t->answer_dnssec_result);
if (r < 0)
return r;
if (r > 0) {
- t->answer_source = DNS_TRANSACTION_CACHE;
- if (t->answer_rcode == DNS_RCODE_SUCCESS)
- dns_transaction_complete(t, DNS_TRANSACTION_SUCCESS);
- else
- dns_transaction_complete(t, DNS_TRANSACTION_RCODE_FAILURE);
- return 0;
+ dns_transaction_randomize_answer(t);
+
+ if (t->bypass && t->scope->protocol == DNS_PROTOCOL_DNS && !t->received)
+ /* When bypass mode is on, do not use cached data unless it came with a full
+ * packet. */
+ dns_transaction_reset_answer(t);
+ else {
+ t->answer_source = DNS_TRANSACTION_CACHE;
+ if (t->answer_rcode == DNS_RCODE_SUCCESS)
+ dns_transaction_complete(t, DNS_TRANSACTION_SUCCESS);
+ else
+ dns_transaction_complete(t, DNS_TRANSACTION_RCODE_FAILURE);
+ return 0;
+ }
}
}
+ if (FLAGS_SET(t->query_flags, SD_RESOLVED_NO_NETWORK)) {
+ dns_transaction_complete(t, DNS_TRANSACTION_NO_SOURCE);
+ return 0;
+ }
+
return 1;
}
if (r < 0)
return r;
- r = dns_packet_append_key(p, t->key, 0, NULL);
+ r = dns_packet_append_key(p, dns_transaction_key(t), 0, NULL);
if (r < 0)
return r;
qdcount = 1;
- if (dns_key_is_shared(t->key))
+ if (dns_key_is_shared(dns_transaction_key(t)))
add_known_answers = true;
- if (t->key->type == DNS_TYPE_ANY) {
- r = set_ensure_put(&keys, &dns_resource_key_hash_ops, t->key);
+ if (dns_transaction_key(t)->type == DNS_TYPE_ANY) {
+ r = set_ensure_put(&keys, &dns_resource_key_hash_ops, dns_transaction_key(t));
if (r < 0)
return r;
}
if (qdcount >= UINT16_MAX)
break;
- r = dns_packet_append_key(p, other->key, 0, NULL);
+ r = dns_packet_append_key(p, dns_transaction_key(other), 0, NULL);
/*
* If we can't stuff more questions into the packet, just give up.
qdcount++;
- if (dns_key_is_shared(other->key))
+ if (dns_key_is_shared(dns_transaction_key(other)))
add_known_answers = true;
- if (other->key->type == DNS_TYPE_ANY) {
- r = set_ensure_put(&keys, &dns_resource_key_hash_ops, other->key);
+ if (dns_transaction_key(other)->type == DNS_TYPE_ANY) {
+ r = set_ensure_put(&keys, &dns_resource_key_hash_ops, dns_transaction_key(other));
if (r < 0)
return r;
}
if (r < 0)
return r;
- r = dns_packet_append_answer(p, answer);
+ r = dns_packet_append_answer(p, answer, &nscount);
if (r < 0)
return r;
-
- nscount += dns_answer_size(answer);
}
DNS_PACKET_HEADER(p)->nscount = htobe16(nscount);
if (t->sent)
return 0;
- r = dns_packet_new_query(&p, t->scope->protocol, 0, t->scope->dnssec_mode != DNSSEC_NO);
- if (r < 0)
- return r;
+ if (t->bypass && t->bypass->protocol == t->scope->protocol) {
+ /* If bypass logic is enabled and the protocol if the original packet and our scope match,
+ * take the original packet, copy it, and patch in our new ID */
+ r = dns_packet_dup(&p, t->bypass);
+ if (r < 0)
+ return r;
+ } else {
+ r = dns_packet_new_query(
+ &p, t->scope->protocol,
+ /* min_alloc_dsize = */ 0,
+ /* dnssec_cd = */ !FLAGS_SET(t->query_flags, SD_RESOLVED_NO_VALIDATE) &&
+ t->scope->dnssec_mode != DNSSEC_NO);
+ if (r < 0)
+ return r;
- r = dns_packet_append_key(p, t->key, 0, NULL);
- if (r < 0)
- return r;
+ r = dns_packet_append_key(p, dns_transaction_key(t), 0, NULL);
+ if (r < 0)
+ return r;
+
+ DNS_PACKET_HEADER(p)->qdcount = htobe16(1);
+ }
- DNS_PACKET_HEADER(p)->qdcount = htobe16(1);
DNS_PACKET_HEADER(p)->id = t->id;
t->sent = TAKE_PTR(p);
-
return 0;
}
if (r <= 0)
return r;
- log_debug("Transaction %" PRIu16 " for <%s> scope %s on %s/%s.",
+ log_debug("%s transaction %" PRIu16 " for <%s> scope %s on %s/%s (validate=%s).",
+ t->bypass ? "Bypass" : "Regular",
t->id,
- dns_resource_key_to_string(t->key, key_str, sizeof key_str),
+ dns_resource_key_to_string(dns_transaction_key(t), key_str, sizeof key_str),
dns_protocol_to_string(t->scope->protocol),
t->scope->link ? t->scope->link->ifname : "*",
- af_to_name_short(t->scope->family));
+ af_to_name_short(t->scope->family),
+ yes_no(!FLAGS_SET(t->query_flags, SD_RESOLVED_NO_VALIDATE)));
if (!t->initial_jitter_scheduled &&
IN_SET(t->scope->protocol, DNS_PROTOCOL_LLMNR, DNS_PROTOCOL_MDNS)) {
return r;
if (t->scope->protocol == DNS_PROTOCOL_LLMNR &&
- (dns_name_endswith(dns_resource_key_name(t->key), "in-addr.arpa") > 0 ||
- dns_name_endswith(dns_resource_key_name(t->key), "ip6.arpa") > 0)) {
+ (dns_name_endswith(dns_resource_key_name(dns_transaction_key(t)), "in-addr.arpa") > 0 ||
+ dns_name_endswith(dns_resource_key_name(dns_transaction_key(t)), "ip6.arpa") > 0)) {
/* RFC 4795, Section 2.4. says reverse lookups shall
* always be made via TCP on LLMNR */
if (IN_SET(r, -EMSGSIZE, -EAGAIN))
r = dns_transaction_emit_tcp(t);
}
+ if (r == -ELOOP) {
+ if (t->scope->protocol != DNS_PROTOCOL_DNS)
+ return r;
+
+ /* One of our own stub listeners */
+ log_debug_errno(r, "Detected that specified DNS server is our own extra listener, switching DNS servers.");
+
+ dns_scope_next_dns_server(t->scope, t->server);
+
+ if (dns_scope_get_dns_server(t->scope) == t->server) {
+ log_debug_errno(r, "Still pointing to extra listener after switching DNS servers, refusing operation.");
+ dns_transaction_complete(t, DNS_TRANSACTION_STUB_LOOP);
+ return 0;
+ }
+ return dns_transaction_go(t);
+ }
if (r == -ESRCH) {
/* No servers to send this to? */
dns_transaction_complete(t, DNS_TRANSACTION_NO_SERVERS);
return r;
/* Couldn't send? Try immediately again, with a new server */
- dns_scope_next_dns_server(t->scope);
+ dns_scope_next_dns_server(t->scope, t->server);
return dns_transaction_go(t);
}
assert(ret);
assert(key);
- aux = dns_scope_find_transaction(t->scope, key, true);
+ aux = dns_scope_find_transaction(t->scope, key, t->query_flags);
if (!aux) {
- r = dns_transaction_new(&aux, t->scope, key);
+ r = dns_transaction_new(&aux, t->scope, key, NULL, t->query_flags);
if (r < 0)
return r;
} else {
return log_debug_errno(SYNTHETIC_ERRNO(ELOOP),
"Potential cyclic dependency, refusing to add transaction %" PRIu16 " (%s) as dependency for %" PRIu16 " (%s).",
aux->id,
- dns_resource_key_to_string(t->key, s, sizeof s),
+ dns_resource_key_to_string(dns_transaction_key(t), s, sizeof s),
t->id,
- dns_resource_key_to_string(aux->key, saux, sizeof saux));
+ dns_resource_key_to_string(dns_transaction_key(aux), saux, sizeof saux));
}
}
/* Is this key explicitly listed as a negative trust anchor?
* If so, it's nothing we need to care about */
- r = dns_transaction_negative_trust_anchor_lookup(t, dns_resource_key_name(t->key));
+ r = dns_transaction_negative_trust_anchor_lookup(t, dns_resource_key_name(dns_transaction_key(t)));
if (r < 0)
return r;
if (r > 0)
* i.e. either matches the question precisely or is a
* CNAME/DNAME for it. */
- r = dns_resource_key_match_rr(t->key, rr, NULL);
+ r = dns_resource_key_match_rr(dns_transaction_key(t), rr, NULL);
if (r != 0)
return r;
- return dns_resource_key_match_cname_or_dname(t->key, rr->key, NULL);
+ return dns_resource_key_match_cname_or_dname(dns_transaction_key(t), rr->key, NULL);
}
static bool dns_transaction_dnssec_supported(DnsTransaction *t) {
* - For other queries with no matching response RRs, and no NSEC/NSEC3, the SOA RR
*/
- if (t->scope->dnssec_mode == DNSSEC_NO)
+ if (FLAGS_SET(t->query_flags, SD_RESOLVED_NO_VALIDATE) || t->scope->dnssec_mode == DNSSEC_NO)
return 0;
if (t->answer_source != DNS_TRANSACTION_NETWORK)
return 0; /* We only need to validate stuff from the network */
* in another transaction whose additional RRs
* point back to the original transaction, and
* we deadlock. */
- r = dns_name_endswith(dns_resource_key_name(t->key), rr->rrsig.signer);
+ r = dns_name_endswith(dns_resource_key_name(dns_transaction_key(t)), rr->rrsig.signer);
if (r < 0)
return r;
if (r == 0)
* up in request loops, and want to keep
* additional traffic down. */
- r = dns_name_endswith(dns_resource_key_name(t->key), dns_resource_key_name(rr->key));
+ r = dns_name_endswith(dns_resource_key_name(dns_transaction_key(t)), dns_resource_key_name(rr->key));
if (r < 0)
return r;
if (r == 0)
* this RR matches our original question,
* however. */
- r = dns_resource_key_match_rr(t->key, rr, NULL);
+ r = dns_resource_key_match_rr(dns_transaction_key(t), rr, NULL);
if (r < 0)
return r;
if (r == 0) {
* a negative reply, and we need the SOA RR's TTL in order to cache a negative entry?
* If so, we need to validate it, too. */
- r = dns_answer_match_key(t->answer, t->key, NULL);
+ r = dns_answer_match_key(t->answer, dns_transaction_key(t), NULL);
if (r < 0)
return r;
if (r > 0) /* positive reply, we won't need the SOA and hence don't need to validate
/* Only bother with this if the SOA/NS RR we are looking at is actually a parent of
* what we are looking for, otherwise there's no value in it for us. */
- r = dns_name_endswith(dns_resource_key_name(t->key), dns_resource_key_name(rr->key));
+ r = dns_name_endswith(dns_resource_key_name(dns_transaction_key(t)), dns_resource_key_name(rr->key));
if (r < 0)
return r;
if (r == 0)
const char *name;
uint16_t type = 0;
- name = dns_resource_key_name(t->key);
+ name = dns_resource_key_name(dns_transaction_key(t));
/* If this was a SOA or NS request, then check if there's a DS RR for the same domain. Note that this
* could also be used as indication that we are not at a zone apex, but in real world setups there are
* is signed, hence ask the parent SOA in that case. If this was any other RR then ask for the SOA RR,
* to see if that is signed. */
- if (t->key->type == DNS_TYPE_DS) {
+ if (dns_transaction_key(t)->type == DNS_TYPE_DS) {
r = dns_name_parent(&name);
if (r > 0) {
type = DNS_TYPE_SOA;
log_debug("Requesting parent SOA (→ %s) to validate transaction %" PRIu16 " (%s, unsigned empty DS response).",
- name, t->id, dns_resource_key_name(t->key));
+ name, t->id, dns_resource_key_name(dns_transaction_key(t)));
} else
name = NULL;
- } else if (IN_SET(t->key->type, DNS_TYPE_SOA, DNS_TYPE_NS)) {
+ } else if (IN_SET(dns_transaction_key(t)->type, DNS_TYPE_SOA, DNS_TYPE_NS)) {
type = DNS_TYPE_DS;
log_debug("Requesting DS (→ %s) to validate transaction %" PRIu16 " (%s, unsigned empty SOA/NS response).",
if (name) {
_cleanup_(dns_resource_key_unrefp) DnsResourceKey *soa = NULL;
- soa = dns_resource_key_new(t->key->class, type, name);
+ soa = dns_resource_key_new(dns_transaction_key(t)->class, type, name);
if (!soa)
return -ENOMEM;
}
static int dns_transaction_validate_dnskey_by_ds(DnsTransaction *t) {
- DnsResourceRecord *rr;
- int ifindex, r;
+ DnsAnswerItem *item;
+ int r;
assert(t);
* RRs from the list of validated keys to the list of
* validated keys. */
- DNS_ANSWER_FOREACH_IFINDEX(rr, ifindex, t->answer) {
+ DNS_ANSWER_FOREACH_ITEM(item, t->answer) {
- r = dnssec_verify_dnskey_by_ds_search(rr, t->validated_keys);
+ r = dnssec_verify_dnskey_by_ds_search(item->rr, t->validated_keys);
if (r < 0)
return r;
if (r == 0)
continue;
/* If so, the DNSKEY is validated too. */
- r = dns_answer_add_extend(&t->validated_keys, rr, ifindex, DNS_ANSWER_AUTHENTICATED);
+ r = dns_answer_add_extend(&t->validated_keys, item->rr, item->ifindex, item->flags|DNS_ANSWER_AUTHENTICATED, item->rrsig);
if (r < 0)
return r;
}
SET_FOREACH(dt, t->dnssec_transactions) {
- if (dt->key->class != rr->key->class)
+ if (dns_transaction_key(dt)->class != rr->key->class)
continue;
- if (dt->key->type != DNS_TYPE_DS)
+ if (dns_transaction_key(dt)->type != DNS_TYPE_DS)
continue;
- r = dns_name_equal(dns_resource_key_name(dt->key), dns_resource_key_name(rr->key));
+ r = dns_name_equal(dns_resource_key_name(dns_transaction_key(dt)), dns_resource_key_name(rr->key));
if (r < 0)
return r;
if (r == 0)
if (!dt->answer_authenticated)
return false;
- return dns_answer_match_key(dt->answer, dt->key, NULL);
+ return dns_answer_match_key(dt->answer, dns_transaction_key(dt), NULL);
}
/* We found nothing that proves this is safe to leave
SET_FOREACH(dt, t->dnssec_transactions) {
- if (dt->key->class != rr->key->class)
+ if (dns_transaction_key(dt)->class != rr->key->class)
continue;
- if (dt->key->type != DNS_TYPE_SOA)
+ if (dns_transaction_key(dt)->type != DNS_TYPE_SOA)
continue;
if (!parent) {
}
}
- r = dns_name_equal(dns_resource_key_name(dt->key), parent);
+ r = dns_name_equal(dns_resource_key_name(dns_transaction_key(dt)), parent);
if (r < 0)
return r;
if (r == 0)
SET_FOREACH(dt, t->dnssec_transactions) {
- if (dt->key->class != rr->key->class)
+ if (dns_transaction_key(dt)->class != rr->key->class)
continue;
- if (dt->key->type != DNS_TYPE_SOA)
+ if (dns_transaction_key(dt)->type != DNS_TYPE_SOA)
continue;
- r = dns_name_equal(dns_resource_key_name(dt->key), dns_resource_key_name(rr->key));
+ r = dns_name_equal(dns_resource_key_name(dns_transaction_key(dt)), dns_resource_key_name(rr->key));
if (r < 0)
return r;
if (r == 0)
SET_FOREACH(dt, t->dnssec_transactions) {
- if (dt->key->class != key->class)
+ if (dns_transaction_key(dt)->class != key->class)
continue;
- r = dns_name_equal(dns_resource_key_name(dt->key), tld);
+ r = dns_name_equal(dns_resource_key_name(dns_transaction_key(dt)), tld);
if (r < 0)
return r;
if (r == 0)
if (t->scope->dnssec_mode == DNSSEC_NO)
return false;
- if (dns_type_is_pseudo(t->key->type))
+ if (dns_type_is_pseudo(dns_transaction_key(t)->type))
return -EINVAL;
- r = dns_transaction_negative_trust_anchor_lookup(t, dns_resource_key_name(t->key));
+ r = dns_transaction_negative_trust_anchor_lookup(t, dns_resource_key_name(dns_transaction_key(t)));
if (r < 0)
return r;
if (r > 0)
return false;
- r = dns_transaction_in_private_tld(t, t->key);
+ r = dns_transaction_in_private_tld(t, dns_transaction_key(t));
if (r < 0)
return r;
if (r > 0) {
* that fact that we didn't get any NSEC RRs. */
log_info("Detected a negative query %s in a private DNS zone, permitting unsigned response.",
- dns_resource_key_to_string(t->key, key_str, sizeof key_str));
+ dns_resource_key_to_string(dns_transaction_key(t), key_str, sizeof key_str));
return false;
}
- name = dns_resource_key_name(t->key);
+ name = dns_resource_key_name(dns_transaction_key(t));
- if (t->key->type == DNS_TYPE_DS) {
+ if (dns_transaction_key(t)->type == DNS_TYPE_DS) {
/* We got a negative reply for this DS lookup? DS RRs are signed when their parent zone is signed,
* hence check the parent SOA in this case. */
type = DNS_TYPE_SOA;
- } else if (IN_SET(t->key->type, DNS_TYPE_SOA, DNS_TYPE_NS))
+ } else if (IN_SET(dns_transaction_key(t)->type, DNS_TYPE_SOA, DNS_TYPE_NS))
/* We got a negative reply for this SOA/NS lookup? If so, check if there's a DS RR for this */
type = DNS_TYPE_DS;
else
SET_FOREACH(dt, t->dnssec_transactions) {
- if (dt->key->class != t->key->class)
+ if (dns_transaction_key(dt)->class != dns_transaction_key(t)->class)
continue;
- if (dt->key->type != type)
+ if (dns_transaction_key(dt)->type != type)
continue;
- r = dns_name_equal(dns_resource_key_name(dt->key), name);
+ r = dns_name_equal(dns_resource_key_name(dns_transaction_key(dt)), name);
if (r < 0)
return r;
if (r == 0)
SET_FOREACH(dt, t->dnssec_transactions) {
- if (dt->key->class != rr->key->class)
+ if (dns_transaction_key(dt)->class != rr->key->class)
continue;
- if (dt->key->type == DNS_TYPE_DNSKEY) {
+ if (dns_transaction_key(dt)->type == DNS_TYPE_DNSKEY) {
- r = dns_name_equal(dns_resource_key_name(dt->key), rrsig->rrsig.signer);
+ r = dns_name_equal(dns_resource_key_name(dns_transaction_key(dt)), rrsig->rrsig.signer);
if (r < 0)
return r;
if (r == 0)
found = true;
- } else if (dt->key->type == DNS_TYPE_DS) {
+ } else if (dns_transaction_key(dt)->type == DNS_TYPE_DS) {
- r = dns_name_equal(dns_resource_key_name(dt->key), rrsig->rrsig.signer);
+ r = dns_name_equal(dns_resource_key_name(dns_transaction_key(dt)), rrsig->rrsig.signer);
if (r < 0)
return r;
if (r == 0)
if (!dt->answer_authenticated)
return false;
- return dns_answer_match_key(dt->answer, dt->key, NULL);
+ return dns_answer_match_key(dt->answer, dns_transaction_key(dt), NULL);
}
}
}
continue;
}
- r = dnssec_verify_rrset_search(t->answer, rr->key, t->validated_keys, USEC_INFINITY, &result, &rrsig);
+ r = dnssec_verify_rrset_search(
+ t->answer,
+ rr->key,
+ t->validated_keys,
+ USEC_INFINITY,
+ &result,
+ &rrsig);
if (r < 0)
return r;
log_debug("Looking at %s: %s", strna(dns_resource_record_to_string(rr)), dnssec_result_to_string(result));
if (result == DNSSEC_VALIDATED) {
+ assert(rrsig);
if (rr->key->type == DNS_TYPE_DNSKEY) {
/* If we just validated a DNSKEY RRset, then let's add these keys to
* the set of validated keys for this transaction. */
- r = dns_answer_copy_by_key(&t->validated_keys, t->answer, rr->key, DNS_ANSWER_AUTHENTICATED);
+ r = dns_answer_copy_by_key(&t->validated_keys, t->answer, rr->key, DNS_ANSWER_AUTHENTICATED, rrsig);
if (r < 0)
return r;
return r;
}
- /* Add the validated RRset to the new list of validated
- * RRsets, and remove it from the unvalidated RRsets.
- * We mark the RRset as authenticated and cacheable. */
- r = dns_answer_move_by_key(validated, &t->answer, rr->key, DNS_ANSWER_AUTHENTICATED|DNS_ANSWER_CACHEABLE);
+ /* Add the validated RRset to the new list of validated RRsets, and remove it from
+ * the unvalidated RRsets. We mark the RRset as authenticated and cacheable. */
+ r = dns_answer_move_by_key(validated, &t->answer, rr->key, DNS_ANSWER_AUTHENTICATED|DNS_ANSWER_CACHEABLE, rrsig);
if (r < 0)
return r;
bool authenticated = false;
const char *source;
+ assert(rrsig);
+
/* This RRset validated, but as a wildcard. This means we need
* to prove via NSEC/NSEC3 that no matching non-wildcard RR exists. */
if (r == 0)
result = DNSSEC_INVALID;
else {
- r = dns_answer_move_by_key(validated, &t->answer, rr->key,
- authenticated ? (DNS_ANSWER_AUTHENTICATED|DNS_ANSWER_CACHEABLE) : 0);
+ r = dns_answer_move_by_key(
+ validated,
+ &t->answer,
+ rr->key,
+ authenticated ? (DNS_ANSWER_AUTHENTICATED|DNS_ANSWER_CACHEABLE) : 0,
+ rrsig);
if (r < 0)
return r;
if (r == 0) {
/* Data does not require signing. In that case, just copy it over,
* but remember that this is by no means authenticated. */
- r = dns_answer_move_by_key(validated, &t->answer, rr->key, 0);
+ r = dns_answer_move_by_key(
+ validated,
+ &t->answer,
+ rr->key,
+ 0,
+ NULL);
if (r < 0)
return r;
/* Downgrading is OK? If so, just consider the information unsigned */
- r = dns_answer_move_by_key(validated, &t->answer, rr->key, 0);
+ r = dns_answer_move_by_key(validated, &t->answer, rr->key, 0, NULL);
if (r < 0)
return r;
log_info("Detected RRset %s is in a private DNS zone, permitting unsigned RRs.",
dns_resource_key_to_string(rr->key, s, sizeof s));
- r = dns_answer_move_by_key(validated, &t->answer, rr->key, 0);
+ r = dns_answer_move_by_key(validated, &t->answer, rr->key, 0, NULL);
if (r < 0)
return r;
/* The DNSKEY transaction was not authenticated, this means there's
* no DS for this, which means it's OK if no keys are found for this signature. */
- r = dns_answer_move_by_key(validated, &t->answer, rr->key, 0);
+ r = dns_answer_move_by_key(validated, &t->answer, rr->key, 0, NULL);
if (r < 0)
return r;
assert(t);
- /* We have now collected all DS and DNSKEY RRs in
- * t->validated_keys, let's see which RRs we can now
+ /* We have now collected all DS and DNSKEY RRs in t->validated_keys, let's see which RRs we can now
* authenticate with that. */
- if (t->scope->dnssec_mode == DNSSEC_NO)
+ if (FLAGS_SET(t->query_flags, SD_RESOLVED_NO_VALIDATE) || t->scope->dnssec_mode == DNSSEC_NO)
return 0;
/* Already validated */
log_debug("Validating response from transaction %" PRIu16 " (%s).",
t->id,
- dns_resource_key_to_string(t->key, key_str, sizeof key_str));
+ dns_resource_key_to_string(dns_transaction_key(t), key_str, sizeof key_str));
/* First, see if this response contains any revoked trust
* anchors we care about */
bool authenticated = false;
/* Bummer! Let's check NSEC/NSEC3 */
- r = dnssec_nsec_test(t->answer, t->key, &nr, &authenticated, &t->answer_nsec_ttl);
+ r = dnssec_nsec_test(t->answer, dns_transaction_key(t), &nr, &authenticated, &t->answer_nsec_ttl);
if (r < 0)
return r;
t->answer_rcode = DNS_RCODE_NXDOMAIN;
t->answer_authenticated = authenticated;
- manager_dnssec_verdict(t->scope->manager, authenticated ? DNSSEC_SECURE : DNSSEC_INSECURE, t->key);
+ manager_dnssec_verdict(t->scope->manager, authenticated ? DNSSEC_SECURE : DNSSEC_INSECURE, dns_transaction_key(t));
break;
case DNSSEC_NSEC_NODATA:
t->answer_rcode = DNS_RCODE_SUCCESS;
t->answer_authenticated = authenticated;
- manager_dnssec_verdict(t->scope->manager, authenticated ? DNSSEC_SECURE : DNSSEC_INSECURE, t->key);
+ manager_dnssec_verdict(t->scope->manager, authenticated ? DNSSEC_SECURE : DNSSEC_INSECURE, dns_transaction_key(t));
break;
case DNSSEC_NSEC_OPTOUT:
t->answer_dnssec_result = DNSSEC_UNSIGNED;
t->answer_authenticated = false;
- manager_dnssec_verdict(t->scope->manager, DNSSEC_INSECURE, t->key);
+ manager_dnssec_verdict(t->scope->manager, DNSSEC_INSECURE, dns_transaction_key(t));
break;
case DNSSEC_NSEC_NO_RR:
return r;
if (r > 0) {
t->answer_dnssec_result = DNSSEC_NO_SIGNATURE;
- manager_dnssec_verdict(t->scope->manager, DNSSEC_BOGUS, t->key);
+ manager_dnssec_verdict(t->scope->manager, DNSSEC_BOGUS, dns_transaction_key(t));
} else {
t->answer_dnssec_result = DNSSEC_UNSIGNED;
t->answer_authenticated = false;
- manager_dnssec_verdict(t->scope->manager, DNSSEC_INSECURE, t->key);
+ manager_dnssec_verdict(t->scope->manager, DNSSEC_INSECURE, dns_transaction_key(t));
}
break;
case DNSSEC_NSEC_UNSUPPORTED_ALGORITHM:
/* We don't know the NSEC3 algorithm used? */
t->answer_dnssec_result = DNSSEC_UNSUPPORTED_ALGORITHM;
- manager_dnssec_verdict(t->scope->manager, DNSSEC_INDETERMINATE, t->key);
+ manager_dnssec_verdict(t->scope->manager, DNSSEC_INDETERMINATE, dns_transaction_key(t));
break;
case DNSSEC_NSEC_FOUND:
case DNSSEC_NSEC_CNAME:
/* NSEC says it needs to be there, but we couldn't find it? Bummer! */
t->answer_dnssec_result = DNSSEC_NSEC_MISMATCH;
- manager_dnssec_verdict(t->scope->manager, DNSSEC_BOGUS, t->key);
+ manager_dnssec_verdict(t->scope->manager, DNSSEC_BOGUS, dns_transaction_key(t));
break;
default:
[DNS_TRANSACTION_RR_TYPE_UNSUPPORTED] = "rr-type-unsupported",
[DNS_TRANSACTION_NETWORK_DOWN] = "network-down",
[DNS_TRANSACTION_NOT_FOUND] = "not-found",
+ [DNS_TRANSACTION_NO_SOURCE] = "no-source",
+ [DNS_TRANSACTION_STUB_LOOP] = "stub-loop",
};
DEFINE_STRING_TABLE_LOOKUP(dns_transaction_state, DnsTransactionState);
#include "in-addr-util.h"
typedef struct DnsTransaction DnsTransaction;
+typedef struct DnsTransactionFinder DnsTransactionFinder;
typedef enum DnsTransactionState DnsTransactionState;
typedef enum DnsTransactionSource DnsTransactionSource;
DNS_TRANSACTION_RR_TYPE_UNSUPPORTED,
DNS_TRANSACTION_NETWORK_DOWN,
DNS_TRANSACTION_NOT_FOUND, /* like NXDOMAIN, but when LLMNR/TCP connections fail */
+ DNS_TRANSACTION_NO_SOURCE, /* All suitable DnsTransactionSource turned off */
+ DNS_TRANSACTION_STUB_LOOP,
_DNS_TRANSACTION_STATE_MAX,
_DNS_TRANSACTION_STATE_INVALID = -EINVAL,
};
struct DnsTransaction {
DnsScope *scope;
- DnsResourceKey *key;
+ DnsResourceKey *key; /* For regular lookups the RR key to look for */
+ DnsPacket *bypass; /* For bypass lookups the full original request packet */
+
+ uint64_t query_flags;
DnsTransactionState state;
bool initial_jitter_scheduled:1;
bool initial_jitter_elapsed:1;
- bool clamp_ttl:1;
-
bool probing:1;
DnsPacket *sent, *received;
LIST_FIELDS(DnsTransaction, transactions_by_scope);
LIST_FIELDS(DnsTransaction, transactions_by_stream);
+ LIST_FIELDS(DnsTransaction, transactions_by_key);
};
-int dns_transaction_new(DnsTransaction **ret, DnsScope *s, DnsResourceKey *key);
+int dns_transaction_new(DnsTransaction **ret, DnsScope *s, DnsResourceKey *key, DnsPacket *bypass, uint64_t flags);
DnsTransaction* dns_transaction_free(DnsTransaction *t);
bool dns_transaction_gc(DnsTransaction *t);
int dns_transaction_validate_dnssec(DnsTransaction *t);
int dns_transaction_request_dnssec_keys(DnsTransaction *t);
+static inline DnsResourceKey *dns_transaction_key(DnsTransaction *t) {
+ assert(t);
+
+ /* Return the lookup key of this transaction. Either takes the lookup key from the bypass packet if
+ * we are a bypass transaction. Or take the configured key for regular transactions. */
+
+ if (t->key)
+ return t->key;
+
+ assert(t->bypass);
+
+ if (dns_question_isempty(t->bypass->question))
+ return NULL;
+
+ return t->bypass->question->keys[0];
+}
+
const char* dns_transaction_state_to_string(DnsTransactionState p) _const_;
DnsTransactionState dns_transaction_state_from_string(const char *s) _pure_;
if (!rr->ds.digest)
return -ENOMEM;
- r = dns_answer_add(answer, rr, 0, DNS_ANSWER_AUTHENTICATED);
+ r = dns_answer_add(answer, rr, 0, DNS_ANSWER_AUTHENTICATED, NULL);
if (r < 0)
return r;
old_answer = hashmap_get(d->positive_by_key, rr->key);
answer = dns_answer_ref(old_answer);
- r = dns_answer_add_extend(&answer, rr, 0, DNS_ANSWER_AUTHENTICATED);
+ r = dns_answer_add_extend(&answer, rr, 0, DNS_ANSWER_AUTHENTICATED, NULL);
if (r < 0)
return log_error_errno(r, "Failed to add trust anchor RR: %m");
if (i->probe_transaction)
return 0;
- t = dns_scope_find_transaction(i->scope, &DNS_RESOURCE_KEY_CONST(i->rr->key->class, DNS_TYPE_ANY, dns_resource_key_name(i->rr->key)), false);
+ t = dns_scope_find_transaction(
+ i->scope,
+ &DNS_RESOURCE_KEY_CONST(i->rr->key->class, DNS_TYPE_ANY, dns_resource_key_name(i->rr->key)),
+ SD_RESOLVED_NO_CACHE|SD_RESOLVED_NO_ZONE);
if (!t) {
_cleanup_(dns_resource_key_unrefp) DnsResourceKey *key = NULL;
if (!key)
return -ENOMEM;
- r = dns_transaction_new(&t, i->scope, key);
+ r = dns_transaction_new(&t, i->scope, key, NULL, SD_RESOLVED_NO_CACHE|SD_RESOLVED_NO_ZONE);
if (r < 0)
return r;
}
else
flags = DNS_ANSWER_AUTHENTICATED;
- return dns_answer_add(a, i->rr, ifindex, flags);
+ return dns_answer_add(a, i->rr, ifindex, flags, NULL);
}
int dns_zone_lookup(DnsZone *z, DnsResourceKey *key, int ifindex, DnsAnswer **ret_answer, DnsAnswer **ret_soa, bool *ret_tentative) {
if (!rr->ptr.name)
return -ENOMEM;
- r = dns_answer_add(*answer, rr, 0, DNS_ANSWER_AUTHENTICATED);
+ r = dns_answer_add(*answer, rr, 0, DNS_ANSWER_AUTHENTICATED, NULL);
if (r < 0)
return r;
}
if (r < 0)
return r;
- r = dns_answer_add(*answer, rr, 0, DNS_ANSWER_AUTHENTICATED);
+ r = dns_answer_add(*answer, rr, 0, DNS_ANSWER_AUTHENTICATED, NULL);
if (r < 0)
return r;
}
return l->current_dns_server;
}
-void link_next_dns_server(Link *l) {
+void link_next_dns_server(Link *l, DnsServer *if_current) {
assert(l);
+ /* If the current server of the transaction is specified, and we already are at a different one,
+ * don't do anything */
+ if (if_current && l->current_dns_server != if_current)
+ return;
+
+ /* If currently have no DNS server, then don't do anything, we'll pick it lazily the next time a DNS
+ * server is needed. */
if (!l->current_dns_server)
return;
- /* Change to the next one, but make sure to follow the linked
- * list only if this server is actually still linked. */
+ /* Change to the next one, but make sure to follow the linked list only if this server is actually
+ * still linked. */
if (l->current_dns_server->linked && l->current_dns_server->servers_next) {
link_set_dns_server(l, l->current_dns_server->servers_next);
return;
}
+ /* Pick the first one again, after we reached the end */
link_set_dns_server(l, l->dns_servers);
}
DnsServer* link_set_dns_server(Link *l, DnsServer *s);
DnsServer* link_get_dns_server(Link *l);
-void link_next_dns_server(Link *l);
+void link_next_dns_server(Link *l, DnsServer *if_current);
DnssecMode link_get_dnssec_mode(Link *l);
bool link_dnssec_supported(Link *l);
if (r <= 0)
return r;
- if (manager_our_packet(m, p))
+ if (manager_packet_from_local_address(m, p))
return 0;
scope = manager_find_scope(m, p);
while (m->dns_queries)
dns_query_free(m->dns_queries);
+ m->stub_queries_by_packet = hashmap_free(m->stub_queries_by_packet);
+
dns_scope_free(m->unicast_scope);
/* At this point only orphaned streams should remain. All others should have been freed already by their
return NULL;
}
-bool manager_our_packet(Manager *m, DnsPacket *p) {
+bool manager_packet_from_local_address(Manager *m, DnsPacket *p) {
assert(m);
assert(p);
+ /* Let's see if this packet comes from an IP address we have on any local interface */
+
return !!manager_find_link_address(m, p->family, &p->sender);
}
+bool manager_packet_from_our_transaction(Manager *m, DnsPacket *p) {
+ DnsTransaction *t;
+
+ assert(m);
+ assert(p);
+
+ /* Let's see if we have a transaction with a query message with the exact same binary contents as the
+ * one we just got. If so, it's almost definitely a packet loop of some kind. */
+
+ t = hashmap_get(m->dns_transactions, UINT_TO_PTR(DNS_PACKET_ID(p)));
+ if (!t)
+ return false;
+
+ return t->sent && dns_packet_equal(t->sent, p);
+}
+
DnsScope* manager_find_scope(Manager *m, DnsPacket *p) {
Link *l;
return tried;
}
+
+bool manager_server_is_stub(Manager *m, DnsServer *s) {
+ DnsStubListenerExtra *l;
+
+ assert(m);
+ assert(s);
+
+ /* Safety check: we generally already skip the main stub when parsing configuration. But let's be
+ * extra careful, and check here again */
+ if (s->family == AF_INET &&
+ s->address.in.s_addr == htobe32(INADDR_DNS_STUB) &&
+ dns_server_port(s) == 53)
+ return true;
+
+ /* Main reason to call this is to check server data against the extra listeners, and filter things
+ * out. */
+ ORDERED_SET_FOREACH(l, m->dns_extra_stub_listeners)
+ if (s->family == l->family &&
+ in_addr_equal(s->family, &s->address, &l->address) &&
+ dns_server_port(s) == dns_stub_listener_extra_port(l))
+ return true;
+
+ return false;
+}
Hashmap *dns_transactions;
LIST_HEAD(DnsQuery, dns_queries);
unsigned n_dns_queries;
+ Hashmap *stub_queries_by_packet;
LIST_HEAD(DnsStream, dns_streams);
unsigned n_dns_streams[_DNS_STREAM_TYPE_MAX];
/* mDNS */
int mdns_ipv4_fd;
int mdns_ipv6_fd;
+ sd_event_source *mdns_ipv4_event_source;
+ sd_event_source *mdns_ipv6_event_source;
/* DNS-SD */
Hashmap *dnssd_services;
- sd_event_source *mdns_ipv4_event_source;
- sd_event_source *mdns_ipv6_event_source;
-
/* dbus */
sd_bus *bus;
void manager_refresh_rrs(Manager *m);
int manager_next_hostname(Manager *m);
-bool manager_our_packet(Manager *m, DnsPacket *p);
+bool manager_packet_from_local_address(Manager *m, DnsPacket *p);
+bool manager_packet_from_our_transaction(Manager *m, DnsPacket *p);
+
DnsScope* manager_find_scope(Manager *m, DnsPacket *p);
void manager_verify_all(Manager *m);
void manager_cleanup_saved_user(Manager *m);
bool manager_next_dnssd_names(Manager *m);
+
+bool manager_server_is_stub(Manager *m, DnsServer *s);
if (r <= 0)
return r;
- if (manager_our_packet(m, p))
+ if (manager_packet_from_local_address(m, p))
return 0;
scope = manager_find_scope(m, p);
rr->ttl = 1;
}
- t = dns_scope_find_transaction(scope, rr->key, false);
+ t = dns_scope_find_transaction(scope, rr->key, SD_RESOLVED_NO_CACHE|SD_RESOLVED_NO_ZONE);
if (t)
dns_transaction_process_reply(t, p);
/* Also look for the various types of ANY transactions */
- t = dns_scope_find_transaction(scope, &DNS_RESOURCE_KEY_CONST(rr->key->class, DNS_TYPE_ANY, dns_resource_key_name(rr->key)), false);
+ t = dns_scope_find_transaction(scope, &DNS_RESOURCE_KEY_CONST(rr->key->class, DNS_TYPE_ANY, dns_resource_key_name(rr->key)), SD_RESOLVED_NO_CACHE|SD_RESOLVED_NO_ZONE);
if (t)
dns_transaction_process_reply(t, p);
- t = dns_scope_find_transaction(scope, &DNS_RESOURCE_KEY_CONST(DNS_CLASS_ANY, rr->key->type, dns_resource_key_name(rr->key)), false);
+ t = dns_scope_find_transaction(scope, &DNS_RESOURCE_KEY_CONST(DNS_CLASS_ANY, rr->key->type, dns_resource_key_name(rr->key)), SD_RESOLVED_NO_CACHE|SD_RESOLVED_NO_ZONE);
if (t)
dns_transaction_process_reply(t, p);
- t = dns_scope_find_transaction(scope, &DNS_RESOURCE_KEY_CONST(DNS_CLASS_ANY, DNS_TYPE_ANY, dns_resource_key_name(rr->key)), false);
+ t = dns_scope_find_transaction(scope, &DNS_RESOURCE_KEY_CONST(DNS_CLASS_ANY, DNS_TYPE_ANY, dns_resource_key_name(rr->key)), SD_RESOLVED_NO_CACHE|SD_RESOLVED_NO_ZONE);
if (t)
dns_transaction_process_reply(t, p);
}
- dns_cache_put(&scope->cache, scope->manager->enable_cache, NULL, DNS_PACKET_RCODE(p), p->answer, false, (uint32_t) -1, 0, p->family, &p->sender);
+ dns_cache_put(&scope->cache, scope->manager->enable_cache, NULL, DNS_PACKET_RCODE(p), p->answer, NULL, false, _DNSSEC_RESULT_INVALID, (uint32_t) -1, p->family, &p->sender);
} else if (dns_packet_validate_query(p) > 0) {
log_debug("Got mDNS query packet for id %u", DNS_PACKET_ID(p));
case DNS_TRANSACTION_NETWORK_DOWN:
return varlink_error(q->varlink_request, "io.systemd.Resolve.NetworkDown", NULL);
+ case DNS_TRANSACTION_NO_SOURCE:
+ return varlink_error(q->varlink_request, "io.systemd.Resolve.NoSource", NULL);
+
+ case DNS_TRANSACTION_STUB_LOOP:
+ return varlink_error(q->varlink_request, "io.systemd.Resolve.StubLoop", NULL);
+
case DNS_TRANSACTION_NOT_FOUND:
/* We return this as NXDOMAIN. This is only generated when a host doesn't implement LLMNR/TCP, and we
* thus quickly know that we cannot resolve an in-addr.arpa or ip6.arpa address. */
/* This checks that the specified client-provided flags parameter actually makes sense, and mangles
* it slightly. Specifically:
*
- * 1. We check that only the protocol flags and the NO_CNAME flag are on at most, plus the
+ * 1. We check that only the protocol flags and a bunch of NO_XYZ flags are on at most, plus the
* method-specific flags specified in 'ok'.
*
* 2. If no protocols are enabled we automatically convert that to "all protocols are enabled".
* "everything".
*/
- if (*flags & ~(SD_RESOLVED_PROTOCOLS_ALL|SD_RESOLVED_NO_CNAME|ok))
+ if (*flags & ~(SD_RESOLVED_PROTOCOLS_ALL|
+ SD_RESOLVED_NO_CNAME|
+ SD_RESOLVED_NO_VALIDATE|
+ SD_RESOLVED_NO_SYNTHESIZE|
+ SD_RESOLVED_NO_CACHE|
+ SD_RESOLVED_NO_ZONE|
+ SD_RESOLVED_NO_TRUST_ANCHOR|
+ SD_RESOLVED_NO_NETWORK|
+ ok))
return false;
if ((*flags & SD_RESOLVED_PROTOCOLS_ALL) == 0) /* If no protocol is enabled, enable all */
if (r < 0 && r != -EALREADY)
return r;
- r = dns_query_new(m, &q, question_utf8, question_idna ?: question_utf8, p.ifindex, p.flags);
+ r = dns_query_new(m, &q, question_utf8, question_idna ?: question_utf8, NULL, p.ifindex, p.flags);
if (r < 0)
return r;
if (r < 0)
return r;
- r = dns_query_new(m, &q, question, question, p.ifindex, p.flags|SD_RESOLVED_NO_SEARCH);
+ r = dns_query_new(m, &q, question, question, NULL, p.ifindex, p.flags|SD_RESOLVED_NO_SEARCH);
if (r < 0)
return r;
answer = dns_answer_new(1);
assert_se(answer);
- assert_se(dns_answer_add(answer, mx, 0, DNS_ANSWER_AUTHENTICATED) >= 0);
+ assert_se(dns_answer_add(answer, mx, 0, DNS_ANSWER_AUTHENTICATED, NULL) >= 0);
assert_se(dnssec_verify_rrset(answer, mx->key, rrsig, dnskey,
rrsig->rrsig.inception * USEC_PER_SEC, &result) >= 0);
answer = dns_answer_new(1);
assert_se(answer);
- assert_se(dns_answer_add(answer, mx, 0, DNS_ANSWER_AUTHENTICATED) >= 0);
+ assert_se(dns_answer_add(answer, mx, 0, DNS_ANSWER_AUTHENTICATED, NULL) >= 0);
assert_se(dnssec_verify_rrset(answer, mx->key, rrsig, dnskey,
rrsig->rrsig.inception * USEC_PER_SEC, &result) >= 0);
answer = dns_answer_new(1);
assert_se(answer);
- assert_se(dns_answer_add(answer, a, 0, DNS_ANSWER_AUTHENTICATED) >= 0);
+ assert_se(dns_answer_add(answer, a, 0, DNS_ANSWER_AUTHENTICATED, NULL) >= 0);
/* Validate the RR as it if was 2015-12-2 today */
assert_se(dnssec_verify_rrset(answer, a->key, rrsig, dnskey, 1449092754*USEC_PER_SEC, &result) >= 0);
answer = dns_answer_new(1);
assert_se(answer);
- assert_se(dns_answer_add(answer, nsec, 0, DNS_ANSWER_AUTHENTICATED) >= 0);
+ assert_se(dns_answer_add(answer, nsec, 0, DNS_ANSWER_AUTHENTICATED, NULL) >= 0);
/* Validate the RR as it if was 2015-12-11 today */
assert_se(dnssec_verify_rrset(answer, nsec->key, rrsig, dnskey, 1449849318*USEC_PER_SEC, &result) >= 0);
answer = dns_answer_new(4);
assert_se(answer);
- assert_se(dns_answer_add(answer, mx1, 0, DNS_ANSWER_AUTHENTICATED) >= 0);
- assert_se(dns_answer_add(answer, mx2, 0, DNS_ANSWER_AUTHENTICATED) >= 0);
- assert_se(dns_answer_add(answer, mx3, 0, DNS_ANSWER_AUTHENTICATED) >= 0);
- assert_se(dns_answer_add(answer, mx4, 0, DNS_ANSWER_AUTHENTICATED) >= 0);
+ assert_se(dns_answer_add(answer, mx1, 0, DNS_ANSWER_AUTHENTICATED, NULL) >= 0);
+ assert_se(dns_answer_add(answer, mx2, 0, DNS_ANSWER_AUTHENTICATED, NULL) >= 0);
+ assert_se(dns_answer_add(answer, mx3, 0, DNS_ANSWER_AUTHENTICATED, NULL) >= 0);
+ assert_se(dns_answer_add(answer, mx4, 0, DNS_ANSWER_AUTHENTICATED, NULL) >= 0);
/* Validate the RR as it if was 2020-02-24 today */
assert_se(dnssec_verify_rrset(answer, mx1->key, rrsig, dnskey, 1582534685*USEC_PER_SEC, &result) >= 0);
if (proc_cmdline_value_missing(key, value))
return 0;
- if (free_and_strdup(&arg_success_action, value) < 0)
- return log_oom();
+ return free_and_strdup_warn(&arg_success_action, value);
} else if (proc_cmdline_key_streq(key, "systemd.run_failure_action")) {
if (proc_cmdline_value_missing(key, value))
return 0;
- if (free_and_strdup(&arg_failure_action, value) < 0)
- return log_oom();
+ return free_and_strdup_warn(&arg_failure_action, value);
}
return 0;
#include "fd-util.h"
#include "format-util.h"
#include "main-func.h"
+#include "parse-argument.h"
#include "parse-util.h"
#include "path-util.h"
#include "pretty-print.h"
break;
case ARG_WORKING_DIRECTORY:
- r = parse_path_argument_and_warn(optarg, true, &arg_working_directory);
+ r = parse_path_argument(optarg, true, &arg_working_directory);
if (r < 0)
return r;
if (STR_IN_SET(field, "DevicePolicy",
"Slice",
"ManagedOOMSwap",
- "ManagedOOMMemoryPressure"))
+ "ManagedOOMMemoryPressure",
+ "ManagedOOMPreference"))
return bus_append_string(m, field, eq);
if (STR_IN_SET(field, "ManagedOOMMemoryPressureLimit")) {
* class device */
r = dir_is_empty("/sys/class/tpmrm");
+ if (r == 0)
+ return true; /* nice! we have a device */
+
+ /* Hmm, so Linux doesn't know of the TPM2 device (or we couldn't check for it), most likely because
+ * the driver wasn't loaded yet. Let's see if the firmware knows about a TPM2 device, in this
+ * case. This way we can answer the TPM2 question already during early boot (where we most likely
+ * need it) */
+ if (efi_has_tpm2())
+ return true;
+
+ /* OK, this didn't work either, in this case propagate the original errors */
if (r == -ENOENT)
return false;
if (r < 0)
assert(rvalue);
assert(data);
- if (free_and_strdup(s, empty_to_null(rvalue)) < 0)
- return log_oom();
-
- return 0;
+ return free_and_strdup_warn(s, empty_to_null(rvalue));
}
int config_parse_path(
x = log_facility_unshifted_from_string(rvalue);
if (x < 0) {
- log_syntax(unit, LOG_WARNING, filename, line, 0, "Failed to parse log facility, ignoring: %s", rvalue);
+ log_syntax(unit, LOG_WARNING, filename, line, x, "Failed to parse log facility, ignoring: %s", rvalue);
return 0;
}
x = log_level_from_string(rvalue);
if (x < 0) {
- log_syntax(unit, LOG_WARNING, filename, line, 0, "Failed to parse log level, ignoring: %s", rvalue);
+ log_syntax(unit, LOG_WARNING, filename, line, x, "Failed to parse log level, ignoring: %s", rvalue);
return 0;
}
r = signal_from_string(rvalue);
if (r <= 0) {
- log_syntax(unit, LOG_WARNING, filename, line, 0, "Failed to parse signal name, ignoring: %s", rvalue);
+ log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to parse signal name, ignoring: %s", rvalue);
return 0;
}
\
x = from_string(rvalue); \
if (x < 0) { \
- log_syntax(unit, LOG_WARNING, filename, line, 0, \
+ log_syntax(unit, LOG_WARNING, filename, line, x, \
msg ", ignoring: %s", rvalue); \
return 0; \
} \
\
x = name##_from_string(rvalue); \
if (x < 0) { \
- log_syntax(unit, LOG_WARNING, filename, line, 0, \
+ log_syntax(unit, LOG_WARNING, filename, line, x, \
msg ", ignoring: %s", rvalue); \
return 0; \
} \
r = extract_first_word(&p, &en, NULL, 0); \
if (r == -ENOMEM) \
return log_oom(); \
- if (r < 0) \
- return log_syntax(unit, LOG_ERR, filename, line, 0, \
- msg ": %s", en); \
+ if (r < 0) { \
+ log_syntax(unit, LOG_WARNING, filename, line, r, \
+ msg ", ignoring: %s", en); \
+ return 0; \
+ } \
if (r == 0) \
break; \
\
- if ((x = name##_from_string(en)) < 0) { \
- log_syntax(unit, LOG_WARNING, filename, line, 0, \
+ x = name##_from_string(en); \
+ if (x < 0) { \
+ log_syntax(unit, LOG_WARNING, filename, line, x, \
msg ", ignoring: %s", en); \
continue; \
} \
return 0;
}
+bool efi_has_tpm2(void) {
+ static int cache = -1;
+
+ /* Returns whether the system has a TPM2 chip which is known to the EFI firmware. */
+
+ if (cache < 0) {
+
+ /* First, check if we are on an EFI boot at all. */
+ if (!is_efi_boot())
+ cache = false;
+ else {
+ /* Then, check if the ACPI table "TPM2" exists, which is the TPM2 event log table, see:
+ * https://trustedcomputinggroup.org/wp-content/uploads/TCG_ACPIGeneralSpecification_v1.20_r8.pdf
+ * This table exists whenever the firmware is hooked up to TPM2. */
+ cache = access("/sys/firmware/acpi/tables/TPM2", F_OK) >= 0;
+ if (!cache && errno != ENOENT)
+ log_debug_errno(errno, "Unable to test whether /sys/firmware/acpi/tables/TPM2 exists, assuming it doesn't: %m");
+ }
+ }
+
+ return cache;
+}
+
#endif
bool efi_loader_entry_name_valid(const char *s) {
int efi_loader_get_config_timeout_one_shot(usec_t *ret);
int efi_loader_update_entry_one_shot_cache(char **cache, struct stat *cache_stat);
+bool efi_has_tpm2(void);
+
#else
static inline int efi_reboot_to_firmware_supported(void) {
return -EOPNOTSUPP;
}
+static inline bool efi_has_tpm2(void) {
+ return false;
+}
+
#endif
bool efi_loader_entry_name_valid(const char *s);
/* We reuse the kernel provided enum which does not contain negative value. So, the cast
* below is mandatory. Otherwise, the check below always passes and access an invalid address. */
if ((int) mode < 0) {
- log_syntax(unit, LOG_WARNING, filename, line, 0,
+ log_syntax(unit, LOG_WARNING, filename, line, mode,
"Failed to parse advertise mode, ignoring: %s", w);
continue;
}
const char *roothash,
const char *options) {
- _cleanup_free_ char *name_escaped = NULL, *data_what_escaped = NULL, *hash_what_escaped,
+ _cleanup_free_ char *name_escaped = NULL, *data_what_escaped = NULL, *hash_what_escaped = NULL,
*roothash_escaped = NULL, *options_escaped = NULL;
assert(f);
return unhexmem(json_variant_string(v), (size_t) -1, ret, ret_size);
}
-int json_parse_cmdline_parameter_and_warn(const char *s, JsonFormatFlags *ret) {
- assert(s);
- assert(ret);
-
- if (streq(s, "pretty"))
- *ret = JSON_FORMAT_PRETTY|JSON_FORMAT_COLOR_AUTO;
- else if (streq(s, "short"))
- *ret = JSON_FORMAT_NEWLINE;
- else if (streq(s, "off"))
- *ret = JSON_FORMAT_OFF;
- else if (streq(s, "help")) {
- puts("pretty\n"
- "short\n"
- "off");
- return 0; /* 0 means → we showed a brief help, exit now */
- } else
- return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Unknown argument to --json= switch: %s", s);
-
- return 1; /* 1 means → properly parsed */
-}
-
static const char* const json_variant_type_table[_JSON_VARIANT_TYPE_MAX] = {
[JSON_VARIANT_STRING] = "string",
[JSON_VARIANT_INTEGER] = "integer",
int json_variant_unbase64(JsonVariant *v, void **ret, size_t *ret_size);
int json_variant_unhex(JsonVariant *v, void **ret, size_t *ret_size);
-int json_parse_cmdline_parameter_and_warn(const char *s, JsonFormatFlags *ret);
-
const char *json_variant_type_to_string(JsonVariantType t);
JsonVariantType json_variant_type_from_string(const char *s);
if (line == 0 && noaccess)
fprintf(f, "Warning: some journal files were not opened due to insufficient permissions.");
else if (!noaccess)
- fprintf(f, "Warning: journal has been rotated since unit was started, output may be incomplete.\n");
+ fprintf(f, "Notice: journal has been rotated since unit was started, output may be incomplete.\n");
else
fprintf(f, "Warning: journal has been rotated since unit was started and some journal "
"files were not opened due to insufficient permissions, output may be incomplete.\n");
output-mode.h
pager.c
pager.h
+ parse-argument.c
+ parse-argument.h
pe-header.h
pkcs11-util.c
pkcs11-util.h
--- /dev/null
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+#include "format-table.h"
+#include "parse-argument.h"
+#include "path-util.h"
+#include "signal-util.h"
+#include "stdio-util.h"
+#include "string-table.h"
+#include "string-util.h"
+
+/* All functions in this file emit warnigs. */
+
+int parse_json_argument(const char *s, JsonFormatFlags *ret) {
+ assert(s);
+ assert(ret);
+
+ if (streq(s, "pretty"))
+ *ret = JSON_FORMAT_PRETTY|JSON_FORMAT_COLOR_AUTO;
+ else if (streq(s, "short"))
+ *ret = JSON_FORMAT_NEWLINE;
+ else if (streq(s, "off"))
+ *ret = JSON_FORMAT_OFF;
+ else if (streq(s, "help")) {
+ puts("pretty\n"
+ "short\n"
+ "off");
+ return 0; /* 0 means → we showed a brief help, exit now */
+ } else
+ return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Unknown argument to --json= switch: %s", s);
+
+ return 1; /* 1 means → properly parsed */
+}
+
+int parse_path_argument(const char *path, bool suppress_root, char **arg) {
+ char *p;
+ int r;
+
+ /*
+ * This function is intended to be used in command line parsers, to handle paths that are passed
+ * in. It makes the path absolute, and reduces it to NULL if omitted or root (the latter optionally).
+ *
+ * NOTE THAT THIS WILL FREE THE PREVIOUS ARGUMENT POINTER ON SUCCESS!
+ * Hence, do not pass in uninitialized pointers.
+ */
+
+ if (isempty(path)) {
+ *arg = mfree(*arg);
+ return 0;
+ }
+
+ r = path_make_absolute_cwd(path, &p);
+ if (r < 0)
+ return log_error_errno(r, "Failed to parse path \"%s\" and make it absolute: %m", path);
+
+ path_simplify(p, false);
+ if (suppress_root && empty_or_root(p))
+ p = mfree(p);
+
+ return free_and_replace(*arg, p);
+}
+
+int parse_signal_argument(const char *s, int *ret) {
+ int r;
+
+ assert(s);
+ assert(ret);
+
+ if (streq(s, "help")) {
+ DUMP_STRING_TABLE(signal, int, _NSIG);
+ return 0;
+ }
+
+ if (streq(s, "list")) {
+ _cleanup_(table_unrefp) Table *table = NULL;
+
+ table = table_new("signal", "name");
+ if (!table)
+ return log_oom();
+
+ for (int i = 1; i < _NSIG; i++) {
+ r = table_add_many(
+ table,
+ TABLE_INT, i,
+ TABLE_SIGNAL, i);
+ if (r < 0)
+ return table_log_add_error(r);
+ }
+
+ r = table_print(table, NULL);
+ if (r < 0)
+ return table_log_print_error(r);
+
+ return 0;
+ }
+
+ r = signal_from_string(s);
+ if (r < 0)
+ return log_error_errno(r, "Failed to parse signal string \"%s\".", s);
+
+ *ret = r;
+ return 1; /* work to do */
+}
--- /dev/null
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+#pragma once
+
+#include "json.h"
+
+int parse_json_argument(const char *s, JsonFormatFlags *ret);
+int parse_path_argument(const char *path, bool suppress_root, char **arg);
+int parse_signal_argument(const char *s, int *ret);
#include "mountpoint-util.h"
#include "os-util.h"
#include "pager.h"
+#include "parse-argument.h"
#include "parse-util.h"
#include "pretty-print.h"
#include "process-util.h"
break;
case ARG_ROOT:
- r = parse_path_argument_and_warn(optarg, false, &arg_root);
+ r = parse_path_argument(optarg, false, &arg_root);
if (r < 0)
return r;
break;
case ARG_JSON:
- r = json_parse_cmdline_parameter_and_warn(optarg, &arg_json_format_flags);
+ r = parse_json_argument(optarg, &arg_json_format_flags);
if (r <= 0)
return r;
#include "main-func.h"
#include "output-mode.h"
#include "pager.h"
+#include "parse-argument.h"
#include "path-util.h"
#include "pretty-print.h"
#include "rlimit-util.h"
case ARG_VERSION:
return version();
- case 't': {
- const char *p;
-
+ case 't':
if (isempty(optarg))
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
"--type= requires arguments.");
- for (p = optarg;;) {
+ for (const char *p = optarg;;) {
_cleanup_free_ char *type = NULL;
r = extract_first_word(&p, &type, ",", 0);
}
break;
- }
case 'P':
arg_value = true;
arg_properties = new0(char*, 1);
if (!arg_properties)
return log_oom();
- } else {
- const char *p;
-
- for (p = optarg;;) {
+ } else
+ for (const char *p = optarg;;) {
_cleanup_free_ char *prop = NULL;
r = extract_first_word(&p, &prop, ",", 0);
if (strv_consume(&arg_properties, TAKE_PTR(prop)) < 0)
return log_oom();
}
- }
/* If the user asked for a particular property, show it, even if it is empty. */
arg_all = true;
break;
case ARG_ROOT:
- r = parse_path_argument_and_warn(optarg, false, &arg_root);
+ r = parse_path_argument(optarg, false, &arg_root);
if (r < 0)
return r;
break;
break;
case 's':
- if (streq(optarg, "help")) {
- DUMP_STRING_TABLE(signal, int, _NSIG);
- return 0;
- }
-
- arg_signal = signal_from_string(optarg);
- if (arg_signal < 0)
- return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
- "Failed to parse signal string %s.",
- optarg);
+ r = parse_signal_argument(optarg, &arg_signal);
+ if (r <= 0)
+ return r;
break;
case ARG_NO_ASK_PASSWORD:
arg_boot_loader_entry = empty_to_null(optarg);
break;
- case ARG_STATE: {
- const char *p;
-
+ case ARG_STATE:
if (isempty(optarg))
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
"--state= requires arguments.");
- for (p = optarg;;) {
+ for (const char *p = optarg;;) {
_cleanup_free_ char *s = NULL;
r = extract_first_word(&p, &s, ",", 0);
return log_oom();
}
break;
- }
case 'r':
if (geteuid() != 0)
arg_with_dependencies = true;
break;
- case ARG_WHAT: {
- const char *p;
-
+ case ARG_WHAT:
if (isempty(optarg))
return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "--what= requires arguments.");
- for (p = optarg;;) {
+ for (const char *p = optarg;;) {
_cleanup_free_ char *k = NULL;
r = extract_first_word(&p, &k, ",", 0);
}
break;
- }
case ARG_REBOOT_ARG:
arg_reboot_argument = optarg;
assert(argc >= 0);
assert(argv);
- if (program_invocation_short_name) {
-
- if (strstr(program_invocation_short_name, "halt")) {
- arg_action = ACTION_HALT;
- return halt_parse_argv(argc, argv);
-
- } else if (strstr(program_invocation_short_name, "poweroff")) {
- arg_action = ACTION_POWEROFF;
- return halt_parse_argv(argc, argv);
-
- } else if (strstr(program_invocation_short_name, "reboot")) {
- if (kexec_loaded())
- arg_action = ACTION_KEXEC;
- else
- arg_action = ACTION_REBOOT;
- return halt_parse_argv(argc, argv);
-
- } else if (strstr(program_invocation_short_name, "shutdown")) {
- arg_action = ACTION_POWEROFF;
- return shutdown_parse_argv(argc, argv);
-
- } else if (strstr(program_invocation_short_name, "init")) {
-
- /* Matches invocations as "init" as well as "telinit", which are synonymous when run
- * as PID != 1 on SysV.
- *
- * On SysV "telinit" was the official command to communicate with PID 1, but "init" would
- * redirect itself to "telinit" if called with PID != 1. We follow the same logic here still,
- * though we add one level of indirection, as we implement "telinit" in "systemctl". Hence, for
- * us if you invoke "init" you get "systemd", but it will execve() "systemctl" immediately with
- * argv[] unmodified if PID is != 1. If you invoke "telinit" you directly get "systemctl". In
- * both cases we shall do the same thing, which is why we do strstr(p_i_s_n, "init") here, as a
- * quick way to match both.
- *
- * Also see redirect_telinit() in src/core/main.c. */
-
- if (sd_booted() > 0) {
- arg_action = _ACTION_INVALID;
- return telinit_parse_argv(argc, argv);
- } else {
- /* Hmm, so some other init system is running, we need to forward this request
- * to it. */
-
- arg_action = ACTION_TELINIT;
- return 1;
- }
-
- } else if (strstr(program_invocation_short_name, "runlevel")) {
- arg_action = ACTION_RUNLEVEL;
- return runlevel_parse_argv(argc, argv);
+ if (strstr_ptr(argv[0], "halt")) {
+ arg_action = ACTION_HALT;
+ return halt_parse_argv(argc, argv);
+
+ } else if (strstr_ptr(argv[0], "poweroff")) {
+ arg_action = ACTION_POWEROFF;
+ return halt_parse_argv(argc, argv);
+
+ } else if (strstr_ptr(argv[0], "reboot")) {
+ if (kexec_loaded())
+ arg_action = ACTION_KEXEC;
+ else
+ arg_action = ACTION_REBOOT;
+ return halt_parse_argv(argc, argv);
+
+ } else if (strstr_ptr(argv[0], "shutdown")) {
+ arg_action = ACTION_POWEROFF;
+ return shutdown_parse_argv(argc, argv);
+
+ } else if (strstr_ptr(argv[0], "init")) {
+
+ /* Matches invocations as "init" as well as "telinit", which are synonymous when run
+ * as PID != 1 on SysV.
+ *
+ * On SysV "telinit" was the official command to communicate with PID 1, but "init" would
+ * redirect itself to "telinit" if called with PID != 1. We follow the same logic here still,
+ * though we add one level of indirection, as we implement "telinit" in "systemctl". Hence,
+ * for us if you invoke "init" you get "systemd", but it will execve() "systemctl"
+ * immediately with argv[] unmodified if PID is != 1. If you invoke "telinit" you directly
+ * get "systemctl". In both cases we shall do the same thing, which is why we do
+ * strstr_ptr(argv[0], "init") here, as a quick way to match both.
+ *
+ * Also see redirect_telinit() in src/core/main.c. */
+
+ if (sd_booted() > 0) {
+ arg_action = _ACTION_INVALID;
+ return telinit_parse_argv(argc, argv);
+ } else {
+ /* Hmm, so some other init system is running, we need to forward this request to it.
+ */
+ arg_action = ACTION_TELINIT;
+ return 1;
}
+
+ } else if (strstr_ptr(argv[0], "runlevel")) {
+ arg_action = ACTION_RUNLEVEL;
+ return runlevel_parse_argv(argc, argv);
}
arg_action = ACTION_SYSTEMCTL;
#include "mount-util.h"
#include "nscd-flush.h"
#include "pager.h"
+#include "parse-argument.h"
#include "path-util.h"
#include "pretty-print.h"
#include "selinux-util.h"
break;
case ARG_ROOT:
- r = parse_path_argument_and_warn(optarg, /* suppress_root= */ false, &arg_root);
+ r = parse_path_argument(optarg, /* suppress_root= */ false, &arg_root);
if (r < 0)
return r;
break;
return log_error_errno(SYNTHETIC_ERRNO(EOPNOTSUPP),
"This systemd-sysusers version is compiled without support for --image=.");
#else
- r = parse_path_argument_and_warn(optarg, /* suppress_root= */ false, &arg_image);
+ r = parse_path_argument(optarg, /* suppress_root= */ false, &arg_image);
if (r < 0)
return r;
break;
[['src/test/test-extract-word.c']],
+ [['src/test/test-parse-argument.c']],
+
[['src/test/test-parse-util.c'],
[],
[libseccomp]],
--- /dev/null
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+#include "parse-argument.h"
+#include "stdio-util.h"
+#include "tests.h"
+
+static void test_parse_json_argument(void) {
+ log_info("/* %s */", __func__);
+
+ JsonFormatFlags flags = JSON_FORMAT_PRETTY;
+
+ assert_se(parse_json_argument("help", &flags) == 0);
+ assert_se(flags == JSON_FORMAT_PRETTY);
+
+ assert_se(parse_json_argument("off", &flags) == 1);
+ assert_se(flags == JSON_FORMAT_OFF);
+}
+
+static void test_parse_path_argument(void) {
+ log_info("/* %s */", __func__);
+
+ _cleanup_free_ char *path = NULL;
+
+ assert_se(parse_path_argument("help", false, &path) == 0);
+ assert_se(streq(basename(path), "help"));
+
+ assert_se(parse_path_argument("/", false, &path) == 0);
+ assert_se(streq(path, "/"));
+
+ assert_se(parse_path_argument("/", true, &path) == 0);
+ assert_se(path == NULL);
+}
+
+static void test_parse_signal_argument(void) {
+ log_info("/* %s */", __func__);
+
+ int signal = -1;
+
+ assert_se(parse_signal_argument("help", &signal) == 0);
+ assert_se(signal == -1);
+
+ assert_se(parse_signal_argument("list", &signal) == 0);
+ assert_se(signal == -1);
+
+ assert_se(parse_signal_argument("SIGABRT", &signal) == 1);
+ assert_se(signal == SIGABRT);
+
+ assert_se(parse_signal_argument("ABRT", &signal) == 1);
+ assert_se(signal == SIGABRT);
+
+ char buf[DECIMAL_STR_MAX(int)];
+ xsprintf(buf, "%d", SIGABRT);
+ assert_se(parse_signal_argument(buf, &signal) == 1);
+ assert_se(signal == SIGABRT);
+}
+
+int main(int argc, char *argv[]) {
+ test_setup_logging(LOG_INFO);
+
+ test_parse_json_argument();
+ test_parse_path_argument();
+ test_parse_signal_argument();
+}
test_table(log_target, LOG_TARGET);
test_table(mac_address_policy, MAC_ADDRESS_POLICY);
test_table(managed_oom_mode, MANAGED_OOM_MODE);
+ test_table(managed_oom_preference, MANAGED_OOM_PREFERENCE);
test_table(manager_state, MANAGER_STATE);
test_table(manager_timestamp, MANAGER_TIMESTAMP);
test_table(mount_exec_command, MOUNT_EXEC_COMMAND);
#include "def.h"
#include "dirent-util.h"
#include "dissect-image.h"
+#include "env-util.h"
#include "escape.h"
#include "fd-util.h"
#include "fileio.h"
#include "mountpoint-util.h"
#include "offline-passwd.h"
#include "pager.h"
+#include "parse-argument.h"
#include "parse-util.h"
#include "path-lookup.h"
#include "path-util.h"
return pfd;
if (subvol) {
- if (btrfs_is_subvol(empty_to_root(arg_root)) <= 0)
-
+ r = getenv_bool("SYSTEMD_TMPFILES_FORCE_SUBVOL");
+ if (r < 0) {
+ if (r != -ENXIO) /* env var is unset */
+ log_warning_errno(r, "Cannot parse value of $SYSTEMD_TMPFILES_FORCE_SUBVOL, ignoring.");
+ r = btrfs_is_subvol(empty_to_root(arg_root)) > 0;
+ }
+ if (!r)
/* Don't create a subvolume unless the root directory is
* one, too. We do this under the assumption that if the
* root directory is just a plain directory (i.e. very
break;
case ARG_ROOT:
- r = parse_path_argument_and_warn(optarg, /* suppress_root= */ false, &arg_root);
+ r = parse_path_argument(optarg, /* suppress_root= */ false, &arg_root);
if (r < 0)
return r;
break;
return log_error_errno(SYNTHETIC_ERRNO(EOPNOTSUPP),
"This systemd-tmpfiles version is compiled without support for --image=.");
#else
- r = parse_path_argument_and_warn(optarg, /* suppress_root= */ false, &arg_image);
+ r = parse_path_argument(optarg, /* suppress_root= */ false, &arg_image);
if (r < 0)
return r;
#endif
log_setup();
+ /* We require /proc/ for a lot of our operations, i.e. for adjusting access modes, for anything
+ * SELinux related, for recursive operation, for xattr, acl and chattr handling, for btrfs stuff and
+ * a lot more. It's probably the majority of invocations where /proc/ is required. Since people
+ * apparently invoke it without anyway and are surprised about the failures, let's catch this early
+ * and output a nice and friendly warning. */
+ if (proc_mounted() == 0)
+ return log_error_errno(SYNTHETIC_ERRNO(ENOSYS),
+ "/proc/ is not mounted, but required for successful operation of systemd-tmpfiles. "
+ "Please mount /proc/. Alternatively, consider using the --root= or --image= switches.");
+
/* Descending down file system trees might take a lot of fds */
(void) rlimit_nofile_bump(HIGH_RLIMIT_NOFILE);
return 0;
}
- if (free_and_strdup(s, rvalue) < 0)
- return log_oom();
-
- return 0;
+ return free_and_strdup_warn(s, rvalue);
}
int config_parse_rx_tx_queues(
/* SPDX-License-Identifier: LGPL-2.1-or-later */
-#include "device-util.h"
#include "alloc-util.h"
+#include "device-util.h"
+#include "errno-util.h"
#include "link-config.h"
#include "log.h"
#include "string-util.h"
r = link_get_driver(ctx, dev, &driver);
if (r < 0)
- log_device_full_errno(dev, r == -EOPNOTSUPP ? LOG_DEBUG : LOG_WARNING,
+ log_device_full_errno(dev, ERRNO_IS_NOT_SUPPORTED(r) || r == -ENODEV ? LOG_DEBUG : LOG_WARNING,
r, "Failed to query device driver: %m");
else
udev_builtin_add_property(dev, test, "ID_NET_DRIVER", driver);
if (r < 0) {
if (r == -ENOENT)
return log_device_debug_errno(dev, r, "No matching link configuration found.");
+ if (r == -ENODEV)
+ return log_device_debug_errno(dev, r, "Link vanished while searching for configuration for it.");
return log_device_error_errno(dev, r, "Failed to get link config: %m");
}
r = link_config_apply(ctx, link, dev, &name);
- if (r < 0)
- log_device_warning_errno(dev, r, "Could not apply link config, ignoring: %m");
+ if (r == -ENODEV)
+ log_device_debug_errno(dev, r, "Link vanished while applying configuration, ignoring.");
+ else if (r < 0)
+ log_device_warning_errno(dev, r, "Could not apply link configuration, ignoring: %m");
udev_builtin_add_property(dev, test, "ID_NET_LINK_FILE", link->filename);
}
case TK_M_IMPORT_BUILTIN: {
UdevBuiltinCommand cmd = PTR_TO_UDEV_BUILTIN_CMD(token->data);
+ assert(cmd >= 0 && cmd < _UDEV_BUILTIN_MAX);
unsigned mask = 1U << (int) cmd;
if (udev_builtin_run_once(cmd)) {
token->value);
break;
}
- if (free_and_strdup(&event->name, buf) < 0)
- return log_oom();
+ r = free_and_strdup_warn(&event->name, buf);
+ if (r < 0)
+ return r;
log_rule_debug(dev, rules, "NAME '%s'", event->name);
break;
else
return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Unknown type --type=%s", optarg);
break;
- case 'c':
+ case 'c': {
+ DeviceAction a;
+
if (streq(optarg, "help")) {
dump_device_action_table();
return 0;
}
- if (device_action_from_string(optarg) < 0)
- return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Unknown action '%s'", optarg);
+
+ a = device_action_from_string(optarg);
+ if (a < 0)
+ return log_error_errno(a, "Unknown action '%s'", optarg);
action = optarg;
break;
+ }
case 's':
r = sd_device_enumerator_add_match_subsystem(e, optarg, true);
if (r < 0)
TEST_DESCRIPTION="test systemd-dissect"
IMAGE_NAME="dissect"
TEST_NO_NSPAWN=1
+TEST_INSTALL_VERITY_MINIMAL=1
. $TEST_BASE_DIR/test-functions
-command -v mksquashfs >/dev/null 2>&1 || exit 0
-command -v veritysetup >/dev/null 2>&1 || exit 0
command -v sfdisk >/dev/null 2>&1 || exit 0
# Need loop devices for systemd-dissect
install_dmevent
generate_module_dependencies
inst_binary losetup
-
- BASICTOOLS=(
- bash
- cat
- mount
- )
- oldinitdir=$initdir
- export initdir=$TESTDIR/minimal
- mkdir -p $initdir/usr/lib $initdir/etc
- setup_basic_dirs
- install_basic_tools
- cp $os_release $initdir/usr/lib/os-release
- ln -s ../usr/lib/os-release $initdir/etc/os-release
- echo MARKER=1 >> $initdir/usr/lib/os-release
- mksquashfs $initdir $oldinitdir/usr/share/minimal.raw
- veritysetup format $oldinitdir/usr/share/minimal.raw $oldinitdir/usr/share/minimal.verity | grep '^Root hash:' | cut -f2 | tr -d '\n' > $oldinitdir/usr/share/minimal.roothash
- export initdir=$oldinitdir
+ install_verity_minimal
)
}
--- /dev/null
+../TEST-01-BASIC/Makefile
\ No newline at end of file
--- /dev/null
+#!/usr/bin/env bash
+# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
+# ex: ts=8 sw=4 sts=4 et filetype=sh
+set -e
+TEST_DESCRIPTION="test systemd-portabled"
+IMAGE_NAME="portabled"
+TEST_NO_NSPAWN=1
+TEST_INSTALL_VERITY_MINIMAL=1
+
+. $TEST_BASE_DIR/test-functions
+
+# Need loop devices for mounting images
+test_append_files() {
+ (
+ instmods loop =block
+ instmods squashfs =squashfs
+ instmods dm_verity =md
+ install_dmevent
+ generate_module_dependencies
+ inst_binary losetup
+ inst_binary mksquashfs
+ inst_binary unsquashfs
+ install_verity_minimal
+ )
+}
+
+do_test "$@" 58
UseAddress=
UseNTP=
UseDNS=
+UseFQDN=
RapidCommit=
ForceDHCPv6PDOtherInformation=
PrefixDelegationHint=
Mark=
MaxConnections=
MaxConnectionsPerSource=
+ManagedOOMSwap=
+ManagedOOMMemoryPressure=
+ManagedOOMMemoryPressureLimitPercent=
+ManagedOOMPreference=
MemoryAccounting=
MemoryHigh=
MemoryLimit=
rmdir
sed
seq
+ setfattr
setfont
setsid
sfdisk
return 0
}
+# Build two very minimal root images, with two units, one is the same and one is different across them
+install_verity_minimal() {
+ if [ -e $initdir/usr/share/minimal.raw ]; then
+ return
+ fi
+ if ! command -v mksquashfs >/dev/null 2>&1; then
+ dfatal "mksquashfs not found"
+ exit 1
+ fi
+ if ! command -v veritysetup >/dev/null 2>&1; then
+ dfatal "veritysetup not found"
+ exit 1
+ fi
+ (
+ BASICTOOLS=(
+ bash
+ cat
+ mount
+ sleep
+ )
+ oldinitdir=$initdir
+ rm -rfv $TESTDIR/minimal
+ export initdir=$TESTDIR/minimal
+ mkdir -p $initdir/usr/lib/systemd/system $initdir/etc
+ setup_basic_dirs
+ install_basic_tools
+ cp $os_release $initdir/usr/lib/os-release
+ ln -s ../usr/lib/os-release $initdir/etc/os-release
+ touch $initdir/etc/machine-id $initdir/etc/resolv.conf
+ echo MARKER=1 >> $initdir/usr/lib/os-release
+ echo -e "[Service]\nExecStartPre=cat /usr/lib/os-release\nExecStart=sleep 120" > $initdir/usr/lib/systemd/system/app0.service
+ cp $initdir/usr/lib/systemd/system/app0.service $initdir/usr/lib/systemd/system/app0-foo.service
+
+ mksquashfs $initdir $oldinitdir/usr/share/minimal_0.raw
+ veritysetup format $oldinitdir/usr/share/minimal_0.raw $oldinitdir/usr/share/minimal_0.verity | \
+ grep '^Root hash:' | cut -f2 | tr -d '\n' > $oldinitdir/usr/share/minimal_0.roothash
+
+ sed -i "s/MARKER=1/MARKER=2/g" $initdir/usr/lib/os-release
+ rm $initdir/usr/lib/systemd/system/app0-foo.service
+ cp $initdir/usr/lib/systemd/system/app0.service $initdir/usr/lib/systemd/system/app0-bar.service
+
+ mksquashfs $initdir $oldinitdir/usr/share/minimal_1.raw
+ veritysetup format $oldinitdir/usr/share/minimal_1.raw $oldinitdir/usr/share/minimal_1.verity | \
+ grep '^Root hash:' | cut -f2 | tr -d '\n' > $oldinitdir/usr/share/minimal_1.roothash
+ )
+}
+
setup_basic_environment() {
# create the basic filesystem layout
setup_basic_dirs
if [[ "$IS_BUILT_WITH_ASAN" = "yes" ]]; then
create_asan_wrapper
fi
+ if [ -n "$TEST_INSTALL_VERITY_MINIMAL" ]; then
+ install_verity_minimal
+ fi
}
setup_selinux() {
install_debian_systemd() {
ddebug "Install debian systemd"
- local _systemd_pkgs=$(apt-cache showsrc systemd | grep -m 1 -E '^Binary:' | cut -d ':' -f 2 | tr -d ,)
+ local _systemd_pkgs=$(grep -E '^Package:' ${SOURCE_DIR}/debian/control | cut -d ':' -f 2)
local _files=""
for deb in $_systemd_pkgs; do
_files=$(dpkg-query -L $deb 2>/dev/null) || continue
# we want an empty environment
> $initdir/etc/environment
> $initdir/etc/machine-id
+ > $initdir/etc/resolv.conf
# set the hostname
echo systemd-testsuite > $initdir/etc/hostname
mkdir -p $initdir/etc/systemd/system
mkdir -p $initdir/var/log/journal
- for d in usr/bin usr/sbin bin etc lib "$libdir" sbin tmp usr var var/log dev proc sys sysroot root run run/lock run/initramfs; do
+ for d in usr/bin usr/sbin bin etc lib "$libdir" sbin tmp usr var var/log var/tmp dev proc sys sysroot root run run/lock run/initramfs; do
if [ -L "/$d" ]; then
inst_symlink "/$d"
else
+++ /dev/null
-[Match]
-Name=dummy98
-
-[Network]
-IPv6AcceptRA=no
-
-# these lines are ignored
-Address=hogehoge
-Address=foofoo
-
-[Route]
-Gateway=20.20.20.1
-
-[Address]
-Address=10.2.3.4/16
-PreferredLifetime=0
-Scope=link
-
-[Address]
-Address=2001:0db8:0:f101::1/64
-
-[Address]
-Address=20.20.20.100/24
-
-[Address]
-# this section must be ignored
-Peer=hoge
-Address=10.10.0.1/16
-Label=30
-
-[Address]
-# this section must be ignored
-Label=30
-Peer=hoge
-Address=10.10.0.2/16
[Address]
Address=::/64
+[Address]
+Address=10.7.8.9/16
+PreferredLifetime=0
+Scope=link
+
+[Address]
+Address=2001:0db8:1:f101::1/64
+PreferredLifetime=0
+
# test for ENOBUFS issue #17012
[Network]
Address=10.3.3.1/16
'25-address-dad-veth99.network',
'25-address-link-section.network',
'25-address-peer-ipv4.network',
- '25-address-preferred-lifetime-zero.network',
'25-address-static.network',
'25-activation-policy.network',
'25-bind-carrier.network',
output = check_output('ip -4 address show dev dummy98')
print(output)
- self.assertRegex(output, 'inet 10.1.2.3/16 brd 10.1.255.255 scope global dummy98')
- self.assertRegex(output, 'inet 10.1.2.4/16 brd 10.1.255.255 scope global secondary dummy98')
- self.assertRegex(output, 'inet 10.2.2.4/16 brd 10.2.255.255 scope global dummy98')
+ self.assertIn('inet 10.1.2.3/16 brd 10.1.255.255 scope global dummy98', output)
+ self.assertIn('inet 10.1.2.4/16 brd 10.1.255.255 scope global secondary dummy98', output)
+ self.assertIn('inet 10.2.2.4/16 brd 10.2.255.255 scope global dummy98', output)
+ self.assertIn('inet 10.7.8.9/16 brd 10.7.255.255 scope link deprecated dummy98', output)
# test for ENOBUFS issue #17012
for i in range(1,254):
- self.assertRegex(output, f'inet 10.3.3.{i}/16 brd 10.3.255.255')
+ self.assertIn(f'inet 10.3.3.{i}/16 brd 10.3.255.255', output)
# invalid sections
- self.assertNotRegex(output, '10.10.0.1/16')
- self.assertNotRegex(output, '10.10.0.2/16')
+ self.assertNotIn('10.10.0.1/16', output)
+ self.assertNotIn('10.10.0.2/16', output)
output = check_output('ip -4 address show dev dummy98 label 32')
- self.assertRegex(output, 'inet 10.3.2.3/16 brd 10.3.255.255 scope global 32')
+ self.assertIn('inet 10.3.2.3/16 brd 10.3.255.255 scope global 32', output)
output = check_output('ip -4 address show dev dummy98 label 33')
- self.assertRegex(output, 'inet 10.4.2.3 peer 10.4.2.4/16 scope global 33')
+ self.assertIn('inet 10.4.2.3 peer 10.4.2.4/16 scope global 33', output)
output = check_output('ip -4 address show dev dummy98 label 34')
- self.assertRegex(output, 'inet 192.168.[0-9]*.1/24 brd 192.168.[0-9]*.255 scope global 34')
+ self.assertRegex(output, r'inet 192.168.[0-9]*.1/24 brd 192.168.[0-9]*.255 scope global 34')
output = check_output('ip -4 address show dev dummy98 label 35')
- self.assertRegex(output, 'inet 172.[0-9]*.0.1/16 brd 172.[0-9]*.255.255 scope global 35')
+ self.assertRegex(output, r'inet 172.[0-9]*.0.1/16 brd 172.[0-9]*.255.255 scope global 35')
output = check_output('ip -6 address show dev dummy98')
print(output)
- self.assertRegex(output, 'inet6 2001:db8:0:f101::15/64 scope global')
- self.assertRegex(output, 'inet6 2001:db8:0:f101::16/64 scope global')
- self.assertRegex(output, 'inet6 2001:db8:0:f102::15/64 scope global')
- self.assertRegex(output, 'inet6 2001:db8:0:f102::16/64 scope global')
- self.assertRegex(output, 'inet6 2001:db8:0:f103::20 peer 2001:db8:0:f103::10/128 scope global')
- self.assertRegex(output, 'inet6 fd[0-9a-f:]*1/64 scope global')
+ self.assertIn('inet6 2001:db8:0:f101::15/64 scope global', output)
+ self.assertIn('inet6 2001:db8:0:f101::16/64 scope global', output)
+ self.assertIn('inet6 2001:db8:0:f102::15/64 scope global', output)
+ self.assertIn('inet6 2001:db8:0:f102::16/64 scope global', output)
+ self.assertIn('inet6 2001:db8:0:f103::20 peer 2001:db8:0:f103::10/128 scope global', output)
+ self.assertIn('inet6 2001:db8:1:f101::1/64 scope global deprecated', output)
+ self.assertRegex(output, r'inet6 fd[0-9a-f:]*1/64 scope global')
restart_networkd()
self.wait_online(['dummy98:routable'])
# test for ENOBUFS issue #17012
output = check_output('ip -4 address show dev dummy98')
for i in range(1,254):
- self.assertRegex(output, f'inet 10.3.3.{i}/16 brd 10.3.255.255')
-
- def test_address_preferred_lifetime_zero_ipv6(self):
- copy_unit_to_networkd_unit_path('25-address-preferred-lifetime-zero.network', '12-dummy.netdev')
- start_networkd(5)
-
- self.wait_online(['dummy98:routable'])
-
- output = check_output('ip address show dummy98')
- print(output)
- self.assertRegex(output, 'inet 10.2.3.4/16 brd 10.2.255.255 scope link deprecated dummy98')
- self.assertRegex(output, 'inet6 2001:db8:0:f101::1/64 scope global')
-
- output = check_output('ip route show dev dummy98')
- print(output)
- self.assertRegex(output, 'default via 20.20.20.1 proto static')
+ self.assertIn(f'inet 10.3.3.{i}/16 brd 10.3.255.255', output)
def test_address_dad(self):
copy_unit_to_networkd_unit_path('25-address-dad-veth99.network', '25-address-dad-veth-peer.network',
clear_services test15-a test15-b test15-c
}
+test_linked_units () {
+ echo "Testing linked units..."
+ echo "*** test linked unit (same basename)"
+
+ create_service test15-a
+ mv /etc/systemd/system/test15-a.service /
+ ln -s /test15-a.service /etc/systemd/system/
+ ln -s test15-a.service /etc/systemd/system/test15-b.service
+
+ check_ok test15-a Names test15-a.service
+ check_ok test15-a Names test15-b.service
+
+ echo "*** test linked unit (cross basename)"
+
+ mv /test15-a.service /test15-a@.scope
+ ln -fs /test15-a@.scope /etc/systemd/system/test15-a.service
+ systemctl daemon-reload
+
+ check_ok test15-a Names test15-a.service
+ check_ok test15-a Names test15-b.service
+ check_ko test15-a Names test15-b@
+
+ rm /test15-a@.scope
+ clear_services test15-a test15-b
+}
+
test_hierarchical_dropins () {
echo "Testing hierarchical dropins..."
echo "*** test service.d/ top level drop-in"
}
test_basic_dropins
+test_linked_units
test_hierarchical_dropins
test_template_dropins
test_alias_dropins
trap cleanup EXIT
-cp /usr/share/minimal.* "${image_dir}/"
-image="${image_dir}/minimal"
+cp /usr/share/minimal* "${image_dir}/"
+image="${image_dir}/minimal_0"
roothash="$(cat ${image}.roothash)"
os_release=$(test -e /etc/os-release && echo /etc/os-release || echo /usr/lib/os-release)
--- /dev/null
+[Unit]
+Description=Create some memory pressure
+
+[Service]
+MemoryHigh=2M
+Slice=testsuite-56-workload.slice
+ExecStart=/usr/lib/systemd/tests/testdata/units/testsuite-56-slowgrowth.sh
fi
[[ -e /skipped ]] && exit 0 || true
+rm -rf /etc/systemd/system/testsuite-56-testbloat.service.d
+
echo "DefaultMemoryPressureDurationSec=5s" >> /etc/systemd/oomd.conf
systemctl start testsuite-56-testchill.service
oomctl | grep "1.00%"
oomctl | grep "Default Memory Pressure Duration: 5s"
-# systemd-oomd watches for elevated pressure for 30 seconds before acting.
-# It can take time to build up pressure so either wait 5 minutes or for the service to fail.
-timeout=$(date -ud "5 minutes" +%s)
+# systemd-oomd watches for elevated pressure for 5 seconds before acting.
+# It can take time to build up pressure so either wait 2 minutes or for the service to fail.
+timeout=$(date -ud "2 minutes" +%s)
while [[ $(date -u +%s) -le $timeout ]]; do
if ! systemctl status testsuite-56-testbloat.service; then
break
fi
- sleep 15
+ sleep 5
done
# testbloat should be killed and testchill should be fine
if systemctl status testsuite-56-testbloat.service; then exit 42; fi
if ! systemctl status testsuite-56-testchill.service; then exit 24; fi
+# only run this portion of the test if we can set xattrs
+if setfattr -n user.xattr_test -v 1 /sys/fs/cgroup/; then
+ sleep 120 # wait for systemd-oomd kill cool down and elevated memory pressure to come down
+
+ mkdir -p /etc/systemd/system/testsuite-56-testbloat.service.d/
+ echo "[Service]" > /etc/systemd/system/testsuite-56-testbloat.service.d/override.conf
+ echo "ManagedOOMPreference=avoid" >> /etc/systemd/system/testsuite-56-testbloat.service.d/override.conf
+
+ systemctl daemon-reload
+ systemctl start testsuite-56-testchill.service
+ systemctl start testsuite-56-testmunch.service
+ systemctl start testsuite-56-testbloat.service
+
+ timeout=$(date -ud "2 minutes" +%s)
+ while [[ $(date -u +%s) -le $timeout ]]; do
+ if ! systemctl status testsuite-56-testmunch.service; then
+ break
+ fi
+ sleep 5
+ done
+
+ # testmunch should be killed since testbloat had the avoid xattr on it
+ if ! systemctl status testsuite-56-testbloat.service; then exit 25; fi
+ if systemctl status testsuite-56-testmunch.service; then exit 43; fi
+ if ! systemctl status testsuite-56-testchill.service; then exit 24; fi
+fi
+
systemd-analyze log-level info
echo OK > /testok
--- /dev/null
+[Unit]
+Description=TEST-58-PORTABLE
+
+[Service]
+ExecStartPre=rm -f /failed /testok
+ExecStart=/usr/lib/systemd/tests/testdata/units/%N.sh
+Type=oneshot
--- /dev/null
+#!/usr/bin/env bash
+# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
+# ex: ts=8 sw=4 sts=4 et filetype=sh
+set -ex
+set -o pipefail
+
+export SYSTEMD_LOG_LEVEL=debug
+
+portablectl attach --now --runtime /usr/share/minimal_0.raw app0
+
+systemctl is-active app0.service
+systemctl is-active app0-foo.service
+set +o pipefail
+set +e
+systemctl is-active app0-bar.service && exit 1
+set -e
+set -o pipefail
+
+portablectl reattach --now --runtime /usr/share/minimal_1.raw app0
+
+systemctl is-active app0.service
+systemctl is-active app0-bar.service
+set +o pipefail
+set +e
+systemctl is-active app0-foo.service && exit 1
+set -e
+set -o pipefail
+
+portablectl list | grep -q -F "minimal_1"
+
+portablectl detach --now --runtime /usr/share/minimal_1.raw app0
+
+portablectl list | grep -q -F "No images."
+
+# portablectl also works with directory paths rather than images
+
+unsquashfs -dest /tmp/minimal_0 /usr/share/minimal_0.raw
+unsquashfs -dest /tmp/minimal_1 /usr/share/minimal_1.raw
+
+portablectl attach --copy=symlink --now --runtime /tmp/minimal_0 app0
+
+systemctl is-active app0.service
+systemctl is-active app0-foo.service
+set +o pipefail
+set +e
+systemctl is-active app0-bar.service && exit 1
+set -e
+set -o pipefail
+
+portablectl reattach --now --enable --runtime /tmp/minimal_1 app0
+
+systemctl is-active app0.service
+systemctl is-active app0-bar.service
+set +o pipefail
+set +e
+systemctl is-active app0-foo.service && exit 1
+set -e
+set -o pipefail
+
+portablectl list | grep -q -F "minimal_1"
+
+portablectl detach --now --enable --runtime /tmp/minimal_1 app0
+
+portablectl list | grep -q -F "No images."
+
+echo OK > /testok
+
+exit 0
AmbientCapabilities=CAP_SYS_TIME
BusName=org.freedesktop.timesync1
CapabilityBoundingSet=CAP_SYS_TIME
+# Turn off DNSSEC validation for hostname look-ups, since those need the
+# correct time to work, but we likely won't acquire that without NTP. Let's
+# break this chicken-and-egg cycle here.
+Environment=SYSTEMD_NSS_RESOLVE_VALIDATE=0
ExecStart=!!@rootlibexecdir@/systemd-timesyncd
LockPersonality=yes
MemoryDenyWriteExecute=yes